Hi Michael, On Tue, Apr 14, 2020 at 05:33:45PM +1000, Michael Ellerman wrote: > Hi Nathan, > > Thanks for the report. > > Nathan Chancellor <natechancel...@gmail.com> writes: > > Hi all, > > > > 0day reported a build error in arch/powerpc/platforms/embedded6xx/mvme5100.c > > when building with clang [1]. This is not a clang specific issue since > > it also happens with gcc: > > > > $ curl -LSs > > https://lore.kernel.org/lkml/202004131704.6mh1jcq3%25...@intel.com/2-a.bin > > | gzip -d > .config > > $ make -j$(nproc) -s ARCH=powerpc CROSS_COMPILE=powerpc-linux- olddefconfig > > arch/powerpc/platforms/embedded6xx/mvme5100.o > > arch/powerpc/platforms/embedded6xx/mvme5100.c: In function > > 'mvme5100_add_bridge': > > arch/powerpc/platforms/embedded6xx/mvme5100.c:135:58: error: passing > > argument 5 of 'early_read_config_dword' from incompatible pointer type > > [-Werror=incompatible-pointer-types] > > 135 | early_read_config_dword(hose, 0, 0, PCI_BASE_ADDRESS_1, > > &pci_membase); > > | > > ^~~~~~~~~~~~ > > | | > > | > > phys_addr_t * {aka long long unsigned int *} > > > Yuck. > > > ... > > I am not sure how exactly this should be fixed. Should this driver just > > not be selectable when CONFIG_PHYS_ADDR_T_64BIT is selected or is there > > something else that I am missing? > > I'm not sure TBH. This is all ancient history as far as I can tell, none > of it's been touched for ~7 years. > > Your config has: > > CONFIG_EMBEDDED6xx=y > CONFIG_PPC_BOOK3S_32=y > CONFIG_PPC_BOOK3S_6xx=y > CONFIG_PPC_MPC52xx=y > CONFIG_PPC_86xx=y > > > Which I'm not sure really makes sense at all, ie. it's trying to build a > kernel for multiple platforms at once (EMBEDDED6xx, MPC52xx, 86xx), but > the Kconfig doesn't exclude that so I guess we have to live with it for > now.
c'est la randconfig :) > Then Kconfig has: > > config PHYS_64BIT > bool 'Large physical address support' if E500 || PPC_86xx > depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx > select PHYS_ADDR_T_64BIT > > > So it's PPC_86xx that allows 64-bit phys_addr_t. > > That was added in: > > 4ee7084eb11e ("POWERPC: Allow 32-bit hashed pgtable code to support 36-bit > physical") > > Which did: > > config PHYS_64BIT > - bool 'Large physical address support' if E500 > - depends on 44x || E500 > + bool 'Large physical address support' if E500 || PPC_86xx > + depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx > > > ie. it wanted to add support for PPC_86xx but had to deliberately > exclude some of the other BOOK3S_32 based platforms. > > So I'm going to guess it should have also excluded embedded6xx, and this > seems to fix it: This is what I was thinking as well; I agree with your analysis. Feel free to slap the following tags on: Reviewed-by: Nathan Chancellor <natechancel...@gmail.com> Tested-by: Nathan Chancellor <natechancel...@gmail.com> # build > diff --git a/arch/powerpc/platforms/Kconfig.cputype > b/arch/powerpc/platforms/Kconfig.cputype > index 0c3c1902135c..134fc383daf7 100644 > --- a/arch/powerpc/platforms/Kconfig.cputype > +++ b/arch/powerpc/platforms/Kconfig.cputype > @@ -278,7 +278,7 @@ config PTE_64BIT > > config PHYS_64BIT > bool 'Large physical address support' if E500 || PPC_86xx > - depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx > + depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx && > !EMBEDDED6xx > select PHYS_ADDR_T_64BIT > ---help--- > This option enables kernel support for larger than 32-bit physical > > > So unless anyone can tell me otherwise I'm inclined to commit that ^ > > cheers Cheers, Nathan