Re: [PATCH] arm: xen: mm: use __GPF_DMA32 for arm64

From: Robin Murphy
Date: Tue Aug 27 2019 - 08:23:28 EST


On 09/07/2019 09:22, Peng Fan wrote:
arm64 shares some code under arch/arm/xen, including mm.c.
However ZONE_DMA is removed by commit
ad67f5a6545("arm64: replace ZONE_DMA with ZONE_DMA32").
So to ARM64, need use __GFP_DMA32.

Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
arch/arm/xen/mm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
index e1d44b903dfc..a95e76d18bf9 100644
--- a/arch/arm/xen/mm.c
+++ b/arch/arm/xen/mm.c
@@ -27,7 +27,7 @@ unsigned long xen_get_swiotlb_free_pages(unsigned int order)
for_each_memblock(memory, reg) {
if (reg->base < (phys_addr_t)0xffffffff) {
- flags |= __GFP_DMA;
+ flags |= __GFP_DMA | __GFP_DMA32;

Given the definition of GFP_ZONE_BAD, I'm not sure this combination of flags is strictly valid, but rather is implicitly reliant on only one of those zones ever actually existing. As such, it seems liable to blow up if the plans to add ZONE_DMA to arm64[1] go ahead.

Robin.

[1] https://lore.kernel.org/linux-arm-kernel/20190820145821.27214-1-nsaenzjulienne@xxxxxxx/

break;
}
}