mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
irqchip/gic-v3-its: add GFP_DMA32 flag for memory allocated for ITS in rk3567
Change-Id: I4c7ef759cff823c311615e3aa067fcb900c03353 Signed-off-by: Liang Chen <cl@rock-chips.com>
This commit is contained in:
@@ -2168,7 +2168,9 @@ static struct page *its_allocate_prop_table(gfp_t gfp_flags)
|
||||
{
|
||||
struct page *prop_page;
|
||||
|
||||
if (of_machine_is_compatible("rockchip,rk3568") || of_machine_is_compatible("rockchip,rk3566"))
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
gfp_flags |= GFP_DMA32;
|
||||
prop_page = alloc_pages(gfp_flags, get_order(LPI_PROPBASE_SZ));
|
||||
if (!prop_page)
|
||||
@@ -2306,7 +2308,9 @@ static int its_setup_baser(struct its_node *its, struct its_baser *baser,
|
||||
}
|
||||
|
||||
gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
||||
if (of_machine_is_compatible("rockchip,rk3568") || of_machine_is_compatible("rockchip,rk3566"))
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
gfp_flags |= GFP_DMA32;
|
||||
page = alloc_pages_node(its->numa_node, gfp_flags, order);
|
||||
if (!page)
|
||||
@@ -2357,6 +2361,7 @@ retry_baser:
|
||||
|
||||
if (IS_ENABLED(CONFIG_NO_GKI) &&
|
||||
(of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566") ||
|
||||
of_machine_is_compatible("rockchip,rk3588"))) {
|
||||
if (tmp & GITS_BASER_SHAREABILITY_MASK)
|
||||
@@ -2947,7 +2952,9 @@ static struct page *its_allocate_pending_table(gfp_t gfp_flags)
|
||||
{
|
||||
struct page *pend_page;
|
||||
|
||||
if (of_machine_is_compatible("rockchip,rk3568") || of_machine_is_compatible("rockchip,rk3566"))
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
gfp_flags |= GFP_DMA32;
|
||||
pend_page = alloc_pages(gfp_flags | __GFP_ZERO,
|
||||
get_order(LPI_PENDBASE_SZ));
|
||||
@@ -3108,6 +3115,7 @@ static void its_cpu_init_lpis(void)
|
||||
|
||||
if (IS_ENABLED(CONFIG_NO_GKI) &&
|
||||
(of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566") ||
|
||||
of_machine_is_compatible("rockchip,rk3588")))
|
||||
tmp &= ~GICR_PROPBASER_SHAREABILITY_MASK;
|
||||
@@ -3138,6 +3146,7 @@ static void its_cpu_init_lpis(void)
|
||||
|
||||
if (IS_ENABLED(CONFIG_NO_GKI) &&
|
||||
(of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566") ||
|
||||
of_machine_is_compatible("rockchip,rk3588")))
|
||||
tmp &= ~GICR_PENDBASER_SHAREABILITY_MASK;
|
||||
@@ -3306,7 +3315,9 @@ static bool its_alloc_table_entry(struct its_node *its,
|
||||
if (!table[idx]) {
|
||||
gfp_t gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
||||
|
||||
if (of_machine_is_compatible("rockchip,rk3568") || of_machine_is_compatible("rockchip,rk3566"))
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
gfp_flags |= GFP_DMA32;
|
||||
page = alloc_pages_node(its->numa_node, gfp_flags,
|
||||
get_order(baser->psz));
|
||||
@@ -3414,7 +3425,9 @@ static struct its_device *its_create_device(struct its_node *its, u32 dev_id,
|
||||
sz = nr_ites * (FIELD_GET(GITS_TYPER_ITT_ENTRY_SIZE, its->typer) + 1);
|
||||
sz = max(sz, ITS_ITT_ALIGN) + ITS_ITT_ALIGN - 1;
|
||||
gfp_flags = GFP_KERNEL;
|
||||
if (of_machine_is_compatible("rockchip,rk3568") || of_machine_is_compatible("rockchip,rk3566")) {
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566")) {
|
||||
gfp_flags |= GFP_DMA32;
|
||||
itt = (void *)__get_free_pages(gfp_flags, get_order(sz));
|
||||
} else {
|
||||
@@ -3436,6 +3449,7 @@ static struct its_device *its_create_device(struct its_node *its, u32 dev_id,
|
||||
kfree(dev);
|
||||
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
free_pages((unsigned long)itt, get_order(sz));
|
||||
else
|
||||
@@ -3480,6 +3494,7 @@ static void its_free_device(struct its_device *its_dev)
|
||||
kfree(its_dev->event_map.col_map);
|
||||
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
free_pages((unsigned long)its_dev->itt, get_order(its_dev->itt_sz));
|
||||
else
|
||||
@@ -5085,7 +5100,9 @@ static int __init its_probe_one(struct resource *res,
|
||||
its->numa_node = numa_node;
|
||||
|
||||
gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
||||
if (of_machine_is_compatible("rockchip,rk3568") || of_machine_is_compatible("rockchip,rk3566"))
|
||||
if (of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566"))
|
||||
gfp_flags |= GFP_DMA32;
|
||||
page = alloc_pages_node(its->numa_node, gfp_flags,
|
||||
get_order(ITS_CMD_QUEUE_SZ));
|
||||
@@ -5120,6 +5137,7 @@ static int __init its_probe_one(struct resource *res,
|
||||
|
||||
if (IS_ENABLED(CONFIG_NO_GKI) &&
|
||||
(of_machine_is_compatible("rockchip,rk3568") ||
|
||||
of_machine_is_compatible("rockchip,rk3567") ||
|
||||
of_machine_is_compatible("rockchip,rk3566") ||
|
||||
of_machine_is_compatible("rockchip,rk3588")))
|
||||
tmp &= ~GITS_CBASER_SHAREABILITY_MASK;
|
||||
|
||||
Reference in New Issue
Block a user