|
@@ -48,6 +48,19 @@
|
|
|
|
|
|
#define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0)
|
|
|
|
|
|
+static u32 lpi_id_bits;
|
|
|
+
|
|
|
+/*
|
|
|
+ * We allocate memory for PROPBASE to cover 2 ^ lpi_id_bits LPIs to
|
|
|
+ * deal with (one configuration byte per interrupt). PENDBASE has to
|
|
|
+ * be 64kB aligned (one bit per LPI, plus 8192 bits for SPI/PPI/SGI).
|
|
|
+ */
|
|
|
+#define LPI_NRBITS lpi_id_bits
|
|
|
+#define LPI_PROPBASE_SZ ALIGN(BIT(LPI_NRBITS), SZ_64K)
|
|
|
+#define LPI_PENDBASE_SZ ALIGN(BIT(LPI_NRBITS) / 8, SZ_64K)
|
|
|
+
|
|
|
+#define LPI_PROP_DEFAULT_PRIO 0xa0
|
|
|
+
|
|
|
/*
|
|
|
* Collection structure - just an ID, and a redistributor address to
|
|
|
* ping. We use one per CPU as a bag of interrupts assigned to this
|
|
@@ -701,7 +714,6 @@ static struct irq_chip its_irq_chip = {
|
|
|
|
|
|
static unsigned long *lpi_bitmap;
|
|
|
static u32 lpi_chunks;
|
|
|
-static u32 lpi_id_bits;
|
|
|
static DEFINE_SPINLOCK(lpi_lock);
|
|
|
|
|
|
static int its_lpi_to_chunk(int lpi)
|
|
@@ -796,17 +808,6 @@ static void its_lpi_free(struct event_lpi_map *map)
|
|
|
kfree(map->col_map);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * We allocate memory for PROPBASE to cover 2 ^ lpi_id_bits LPIs to
|
|
|
- * deal with (one configuration byte per interrupt). PENDBASE has to
|
|
|
- * be 64kB aligned (one bit per LPI, plus 8192 bits for SPI/PPI/SGI).
|
|
|
- */
|
|
|
-#define LPI_NRBITS lpi_id_bits
|
|
|
-#define LPI_PROPBASE_SZ ALIGN(BIT(LPI_NRBITS), SZ_64K)
|
|
|
-#define LPI_PENDBASE_SZ ALIGN(BIT(LPI_NRBITS) / 8, SZ_64K)
|
|
|
-
|
|
|
-#define LPI_PROP_DEFAULT_PRIO 0xa0
|
|
|
-
|
|
|
static int __init its_alloc_lpi_tables(void)
|
|
|
{
|
|
|
phys_addr_t paddr;
|