Bug 205771

Summary: UML: allyesconfig doesn't build/boot
Product: Tools Reporter: Brendan Higgins (brendanhiggins)
Component: KUnitAssignee: Tools/KUnit virtual default assignee (tools_kunit)
Status: NEW ---    
Severity: normal CC: brendanhiggins
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: kselftest/test (5.4) Tree: Mainline
Regression: No
Bug Depends on:    
Bug Blocks: 205223    

Description Brendan Higgins 2019-12-04 21:55:04 UTC
Forked from: https://bugzilla.kernel.org/show_bug.cgi?id=205223

Heidi Fahim discovered that allyesconfig is broken for UML.

I tracked down all the offending configs and it appears to be quite a few:

CONFIG_STATIC_LINK=y
CONFIG_UML_NET_VECTOR=y
CONFIG_UML_NET_VDE=y
CONFIG_UML_NET_PCAP=y
CONFIG_NET_PTP_CLASSIFY=y
CONFIG_IP_VS=y
CONFIG_BRIDGE_EBT_BROUTE=y
CONFIG_BRIDGE_EBT_T_FILTER=y
CONFIG_BRIDGE_EBT_T_NAT=y
CONFIG_MTD_NAND_CADENCE=y
CONFIG_MTD_NAND_NANDSIM=y
CONFIG_BLK_DEV_NULL_BLK=y
CONFIG_BLK_DEV_RAM=y
CONFIG_SCSI_DEBUG=y
CONFIG_NET_VENDOR_XILINX=y
CONFIG_NULL_TTY=y
CONFIG_PTP_1588_CLOCK=y
CONFIG_PINCTRL_EQUILIBRIUM=y
CONFIG_DMABUF_SELFTESTS=y
CONFIG_COMEDI=y
CONFIG_XIL_AXIS_FIFO=y
CONFIG_EXFAT_FS=y
CONFIG_STM_DUMMY=y
CONFIG_FSI_MASTER_ASPEED=y
CONFIG_JFS_FS=y
CONFIG_UBIFS_FS=y
CONFIG_CRAMFS=y
CONFIG_CRYPTO_DEV_SAFEXCEL=y
CONFIG_CRYPTO_DEV_AMLOGIC_GXL=y
CONFIG_KCOV=y
CONFIG_LKDTM=y
CONFIG_REED_SOLOMON_TEST=y
CONFIG_TEST_RHASHTABLE=y
CONFIG_TEST_MEMINIT=y
CONFIG_NETWORK_PHY_TIMESTAMPING=y

Some of these prevent UML from building, others cause UML to crash before reaching the end of init.

One important note: It is not clear that CONFIG_NULL_TTY=y is actually broken on UML; however, it does cause the null TTY it creates to become console, which prevents UML from printing output after it is initialized.
Comment 1 Brendan Higgins 2019-12-04 22:30:19 UTC
CONFIG_UML_NET_VECTOR=y
CONFIG_UML_NET_VDE=y
CONFIG_UML_NET_PCAP=y

all appear to be just very very broken. We should probably just delete them.

CONFIG_EXFAT_FS=y

appears to be broken on multiple architectures. It has a symbol name conflict with hostfs:

ld: drivers/staging/exfat/exfat_core.o: in function `rename_file':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/staging/exfat/exfat_core.c:2327: multiple definition of `rename_file'; fs/hostfs/hostfs_user.o:/usr/local/google/home/brendanhiggins/gbmc-linux/fs/hostfs/hostfs_user.c:350: first defined here
make: *** [Makefile:1077: vmlinux] Error 1

CONFIG_LKDTM=y

doesn't seem to work with UML due to undefined symbols:

drivers/misc/lkdtm/bugs.c: In function ‘lkdtm_UNSET_SMEP’:
drivers/misc/lkdtm/bugs.c:288:8: error: implicit declaration of function ‘native_read_cr4’ [-Werror=implicit-function-declaration]
  cr4 = native_read_cr4();
        ^~~~~~~~~~~~~~~
drivers/misc/lkdtm/bugs.c:290:13: error: ‘X86_CR4_SMEP’ undeclared (first use in this function); did you mean ‘X86_FEATURE_SMEP’?
  if ((cr4 & X86_CR4_SMEP) != X86_CR4_SMEP) {
             ^~~~~~~~~~~~
             X86_FEATURE_SMEP
drivers/misc/lkdtm/bugs.c:290:13: note: each undeclared identifier is reported only once for each function it appears in
drivers/misc/lkdtm/bugs.c:297:2: error: implicit declaration of function ‘native_write_cr4’; did you mean ‘direct_write_cr4’? [-Werror=implicit-function-declaration]
  native_write_cr4(cr4);
  ^~~~~~~~~~~~~~~~
  direct_write_cr4
Comment 2 Brendan Higgins 2019-12-04 22:42:01 UTC
CONFIG_PINCTRL_EQUILIBRIUM=y
CONFIG_MTD_NAND_CADENCE=y
CONFIG_FSI_MASTER_ASPEED=y
CONFIG_CRYPTO_DEV_SAFEXCEL=y
CONFIG_XIL_AXIS_FIFO=y
CONFIG_CRYPTO_DEV_AMLOGIC_GXL=y
CONFIG_XILINX_AXI_EMAC=y

all have the issue that they depend on devm_platform_ioremap_resource which is not defined when CONFIG_HAS_IOMEM is not set (like on UML):

/usr/bin/ld: drivers/pinctrl/pinctrl-equilibrium.o: in function `eqbr_pinctrl_probe':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/pinctrl/pinctrl-equilibrium.c:908: undefined reference to `devm_platform_ioremap_resource'
/usr/bin/ld: /usr/local/google/home/brendanhiggins/gbmc-linux/drivers/pinctrl/pinctrl-equilibrium.c:223: undefined reference to `devm_ioremap_resource'
/usr/bin/ld: drivers/mtd/nand/raw/cadence-nand-controller.o: in function `cadence_nand_dt_probe.cold.31':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/mtd/nand/raw/cadence-nand-controller.c:2969: undefined reference to `devm_platform_ioremap_resource'
/usr/bin/ld: /usr/local/google/home/brendanhiggins/gbmc-linux/drivers/mtd/nand/raw/cadence-nand-controller.c:2977: undefined reference to `devm_ioremap_resource'
/usr/bin/ld: drivers/net/ethernet/xilinx/xilinx_axienet_main.o: in function `axienet_probe':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1680: undefined reference to `devm_ioremap_resource'
/usr/bin/ld: /usr/local/google/home/brendanhiggins/gbmc-linux/drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1779: undefined reference to `devm_ioremap_resource'
/usr/bin/ld: /usr/local/google/home/brendanhiggins/gbmc-linux/drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1789: undefined reference to `devm_ioremap_resource'
/usr/bin/ld: drivers/crypto/inside-secure/safexcel.o: in function `safexcel_probe':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/crypto/inside-secure/safexcel.c:1692: undefined reference to `devm_platform_ioremap_resource'
/usr/bin/ld: drivers/crypto/amlogic/amlogic-gxl-core.o: in function `meson_crypto_probe':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/crypto/amlogic/amlogic-gxl-core.c:240: undefined reference to `devm_platform_ioremap_resource'
/usr/bin/ld: drivers/staging/axis-fifo/axis-fifo.o: in function `axis_fifo_probe':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/staging/axis-fifo/axis-fifo.c:809: undefined reference to `devm_ioremap_resource'
/usr/bin/ld: drivers/fsi/fsi-master-aspeed.o: in function `fsi_master_aspeed_probe':
/usr/local/google/home/brendanhiggins/gbmc-linux/drivers/fsi/fsi-master-aspeed.c:436: undefined reference to `devm_ioremap_resource'
Comment 3 Brendan Higgins 2019-12-04 22:52:59 UTC
(In reply to Brendan Higgins from comment #1)

> CONFIG_EXFAT_FS=y
> 
> appears to be broken on multiple architectures. It has a symbol name
> conflict with hostfs:
> 
> ld: drivers/staging/exfat/exfat_core.o: in function `rename_file':
> /usr/local/google/home/brendanhiggins/gbmc-linux/drivers/staging/exfat/
> exfat_core.c:2327: multiple definition of `rename_file';
> fs/hostfs/hostfs_user.o:/usr/local/google/home/brendanhiggins/gbmc-linux/fs/
> hostfs/hostfs_user.c:350: first defined here
> make: *** [Makefile:1077: vmlinux] Error 1

Actually, CONFIG_HOSTFS appears to only be available on UML. So EXFAT is only broken on UML.