On 03/02/2020 04:17 PM, Will Deacon wrote: > [+Anshuman and Catalin] > > On Mon, Mar 02, 2020 at 01:58:26PM +0530, Naresh Kamboju wrote: >> Linux-Next 20200302 arm64 build failed due to below errors, >> Suspecting patch causing this build break. >> >> 87d900aef3e2 arm/arm64: add support for folded p4d page tables >> >> Error log, >> ------------- >> arch/arm64/mm/mmu.c: In function 'unmap_hotplug_pud_range': >> include/linux/compiler.h:284:1: error: incompatible type for argument >> 1 of 'p4d_page_paddr' >> ({ \ >> ^ >> arch/arm64/include/asm/memory.h:270:45: note: in definition of macro >> '__phys_to_virt' >> #define __phys_to_virt(x) ((unsigned long)((x) - physvirt_offset)) >> ^ >> arch/arm64/include/asm/pgtable.h:629:42: note: in expansion of macro '__va' >> #define pud_offset(dir, addr) ((pud_t *)__va(pud_offset_phys((dir), (addr)))) >> ^~~~ >> include/linux/compiler.h:293:22: note: in expansion of macro '__READ_ONCE' >> #define READ_ONCE(x) __READ_ONCE(x, 1) >> ^~~~~~~~~~~ >> arch/arm64/include/asm/pgtable.h:628:52: note: in expansion of macro 'READ_ONCE' >> #define pud_offset_phys(dir, addr) (p4d_page_paddr(READ_ONCE(*(dir))) >> + pud_index(addr) * sizeof(pud_t)) >> ^~~~~~~~~ >> arch/arm64/include/asm/pgtable.h:629:47: note: in expansion of macro >> 'pud_offset_phys' >> #define pud_offset(dir, addr) ((pud_t *)__va(pud_offset_phys((dir), (addr)))) >> ^~~~~~~~~~~~~~~ >> arch/arm64/mm/mmu.c:827:10: note: in expansion of macro 'pud_offset' >> pudp = pud_offset(pgdp, addr); >> ^~~~~~~~~~ > > Looks like we need an implementation of unmap_hotplug_p4d_range() to > walk the dummy p4d level. Unfortunately, we don't have the folded p4d > patches in the arm64 tree so we'll either need a common branch or the > hotplug patches will need to be dropped for the moment. If we decide to get a common branch, will try to get this sorted with an unmap_hotplug_p4d_range() implementation as you have suggested. > > Will >