diff options
author | Cédric Le Goater <clg@kaod.org> | 2020-11-04 23:20:54 +0100 |
---|---|---|
committer | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2020-11-27 15:37:15 +0530 |
commit | 183861801d5529dd03108f30f2677bcf5b57525c (patch) | |
tree | 107f73bdb4abe997e5ccc37b41f6e3c88b69fc85 | |
parent | 8256da311027176dd22885205f16869f55b79f3b (diff) | |
download | skiboot-183861801d5529dd03108f30f2677bcf5b57525c.zip skiboot-183861801d5529dd03108f30f2677bcf5b57525c.tar.gz skiboot-183861801d5529dd03108f30f2677bcf5b57525c.tar.bz2 |
xive/p9: Use local_alloc() to allocate the XIVE bitmaps
These bitmaps are big (128K). On systems with multiple sockets, we
will run out of heap.
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
-rw-r--r-- | hw/xive.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -2636,15 +2636,19 @@ static struct xive *init_one_xive(struct dt_node *np) x->int_ipi_top = XIVE_INT_FIRST; /* Allocate a few bitmaps */ - x->eq_map = zalloc(BITMAP_BYTES(XIVE_EQ_COUNT >> 3)); + x->eq_map = local_alloc(x->chip_id, BITMAP_BYTES(XIVE_EQ_COUNT >> 3), PAGE_SIZE); assert(x->eq_map); + memset(x->eq_map, 0, BITMAP_BYTES(XIVE_EQ_COUNT >> 3)); + /* Make sure we don't hand out 0 */ bitmap_set_bit(*x->eq_map, 0); - x->int_enabled_map = zalloc(BITMAP_BYTES(XIVE_INT_COUNT)); + x->int_enabled_map = local_alloc(x->chip_id, BITMAP_BYTES(XIVE_INT_COUNT), PAGE_SIZE); assert(x->int_enabled_map); - x->ipi_alloc_map = zalloc(BITMAP_BYTES(XIVE_INT_COUNT)); + memset(x->int_enabled_map, 0, BITMAP_BYTES(XIVE_INT_COUNT)); + x->ipi_alloc_map = local_alloc(x->chip_id, BITMAP_BYTES(XIVE_INT_COUNT), PAGE_SIZE); assert(x->ipi_alloc_map); + memset(x->ipi_alloc_map, 0, BITMAP_BYTES(XIVE_INT_COUNT)); xive_dbg(x, "Handling interrupts [%08x..%08x]\n", x->int_base, x->int_max - 1); |