On Wed, 2019-12-25 at 11:24 +0800, Yingjie Bai wrote: > Hi Scott, > > __pa() returns 64bit in my setup. > > in arch/powerpc/include/asm/page.h > > #if defined(CONFIG_PPC32) && defined(CONFIG_BOOKE) > #define __va(x) ((void *)(unsigned long)((phys_addr_t)(x) + > VIRT_PHYS_OFFSET)) > #define __pa(x) ((unsigned long)(x) - VIRT_PHYS_OFFSET) > #else > #ifdef CONFIG_PPC64 > ... > > > > /* See Description below for VIRT_PHYS_OFFSET */ > #if defined(CONFIG_PPC32) && defined(CONFIG_BOOKE) > #ifdef CONFIG_RELOCATABLE > #define VIRT_PHYS_OFFSET virt_phys_offset > #else > #define VIRT_PHYS_OFFSET (KERNELBASE - PHYSICAL_START) > #endif > #endif
OK, so it's the lack of CONFIG_RELOCATABLE causing the build to fail. Ideally we'd make __pa() consistently return phys_addr_t, even if the upper bits are known to always be zero in a particular config. -Scott