| Message ID | 20260903074329.6705-1-venkat88@linux.ibm.com (mailing list archive) |
|---|---|
| State | Handled Elsewhere |
| Headers | show |
| Series | scsi: ibmvfc: Add Kconfig dependency to fix link failure when NVME_FC=m | expand |
| Context | Check | Description |
|---|---|---|
| snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
| snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 5 jobs. |
| snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 22 jobs. |
On 2026-09-03 13:13, Venkat Rao Bagalkote wrote: > Building with CONFIG_SCSI_IBMVFC=y and CONFIG_NVME_FC=m results in a > link failure: > > ibmvfc-nvme.o: undefined reference to `nvme_fc_register_localport' > ibmvfc-nvme.o: undefined reference to `nvme_fc_register_remoteport' > ibmvfc-nvme.o: undefined reference to `nvme_fc_unregister_localport' > ibmvfc-nvme.o: undefined reference to `nvme_fc_unregister_remoteport' > ibmvfc-core.o: undefined reference to `nvme_fc_rescan_remoteport' > > IS_ENABLED() evaluates to 1 for both =y and =m, so the nvme_fc_* > call sites are kept in the object file. When SCSI_IBMVFC=y (built-in) > but NVME_FC=m (loadable module), the linker cannot resolve these > symbols at vmlinux link time. > > Add the same "depends on NVME_FC || NVME_FC=n" constraint already > used by SCSI_LPFC to prevent this configuration. > > Reported-by: Pavithra <pavrampu@linux.ibm.com> > Closes: > https://lore.kernel.org/all/327877a29337aa526cc50ac88fbddb86@linux.ibm.com/ > Signed-off-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com> > --- Hi Venkat, Tested the patch, compilation issue is not observed with patch. Logs: ----- without patch: :/home/linux-next # make -j 80 UPD include/generated/utsversion.h CC init/version-timestamp.o KSYMS .tmp_vmlinux0.kallsyms.S AS .tmp_vmlinux0.kallsyms.o LD .tmp_vmlinux1 /usr/bin/ld.bfd: warning: discarding dynamic section .glink /usr/bin/ld.bfd: warning: discarding dynamic section .plt /usr/bin/ld.bfd: linkage table error against `nvme_fc_unregister_remoteport' /usr/bin/ld.bfd: stubs don't match calculated size /usr/bin/ld.bfd: can not build stubs: bad value /usr/bin/ld.bfd: drivers/scsi/ibmvscsi/ibmvfc-core.o: in function `ibmvfc_rport_add_thread': ibmvfc-core.c:(.text+0x70dc): undefined reference to `nvme_fc_rescan_remoteport' /usr/bin/ld.bfd: drivers/scsi/ibmvscsi/ibmvfc-nvme.o: in function `ibmvfc_nvme_register_remoteport': ibmvfc-nvme.c:(.text+0x1420): undefined reference to `nvme_fc_register_remoteport' /usr/bin/ld.bfd: drivers/scsi/ibmvscsi/ibmvfc-nvme.o: in function `ibmvfc_nvme_unregister_remoteport': ibmvfc-nvme.c:(.text+0x153c): undefined reference to `nvme_fc_unregister_remoteport' /usr/bin/ld.bfd: drivers/scsi/ibmvscsi/ibmvfc-nvme.o: in function `ibmvfc_nvme_register': ibmvfc-nvme.c:(.text+0x164c): undefined reference to `nvme_fc_register_localport' /usr/bin/ld.bfd: drivers/scsi/ibmvscsi/ibmvfc-nvme.o: in function `ibmvfc_nvme_unregister': ibmvfc-nvme.c:(.text+0x1778): undefined reference to `nvme_fc_unregister_localport' make[2]: *** [scripts/Makefile.vmlinux:72: vmlinux.unstripped] Error 1 make[1]: *** [/home/linux-next/Makefile:1390: vmlinux] Error 2 make: *** [Makefile:248: __sub-make] Error 2 with patch: :/home/linux-next # patch -p1 < patch patching file drivers/scsi/Kconfig :/home/linux-next # make -j 80 SYNC include/config/auto.conf UPD include/config/kernel.release UPD include/generated/utsrelease.h . . COPY arch/powerpc/boot/fdt_rw.c COPY arch/powerpc/boot/fdt_sw.c COPY arch/powerpc/boot/fdt_wip.c BOOTCC arch/powerpc/boot/libfdt-wrapper.o BOOTCC arch/powerpc/boot/inffast.o COPY arch/powerpc/boot/decompress_inflate.c BOOTCC arch/powerpc/boot/empty.o BOOTCC arch/powerpc/boot/fdt.o BOOTCC arch/powerpc/boot/fdt_ro.o BOOTCC arch/powerpc/boot/fdt_rw.o BOOTCC arch/powerpc/boot/fdt_strerror.o BOOTCC arch/powerpc/boot/fdt_sw.o BOOTCC arch/powerpc/boot/fdt_wip.o BOOTCC arch/powerpc/boot/inflate.o BOOTCC arch/powerpc/boot/inftrees.o BOOTCC arch/powerpc/boot/decompress.o BOOTAR arch/powerpc/boot/wrapper.a WRAP arch/powerpc/boot/zImage.pseries WRAP arch/powerpc/boot/zImage.epapr Please add below tag: Tested-by: Pavithra <pavrampu@linux.ibm.com> Thanks, Pavithra > drivers/scsi/Kconfig | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig > index 4a2af0f702e1..1eec66195cf4 100644 > --- a/drivers/scsi/Kconfig > +++ b/drivers/scsi/Kconfig > @@ -753,6 +753,7 @@ config SCSI_IBMVFC > tristate "IBM Virtual FC support" > depends on PPC_PSERIES && SCSI > depends on SCSI_FC_ATTRS > + depends on NVME_FC || NVME_FC=n > help > This is the IBM POWER Virtual FC Client
On 9/3/26 12:43 AM, Venkat Rao Bagalkote wrote: > Building with CONFIG_SCSI_IBMVFC=y and CONFIG_NVME_FC=m results in a > link failure: > > ibmvfc-nvme.o: undefined reference to `nvme_fc_register_localport' > ibmvfc-nvme.o: undefined reference to `nvme_fc_register_remoteport' > ibmvfc-nvme.o: undefined reference to `nvme_fc_unregister_localport' > ibmvfc-nvme.o: undefined reference to `nvme_fc_unregister_remoteport' > ibmvfc-core.o: undefined reference to `nvme_fc_rescan_remoteport' > > IS_ENABLED() evaluates to 1 for both =y and =m, so the nvme_fc_* > call sites are kept in the object file. When SCSI_IBMVFC=y (built-in) > but NVME_FC=m (loadable module), the linker cannot resolve these > symbols at vmlinux link time. > > Add the same "depends on NVME_FC || NVME_FC=n" constraint already > used by SCSI_LPFC to prevent this configuration. > > Reported-by: Pavithra <pavrampu@linux.ibm.com> > Closes: https://lore.kernel.org/all/327877a29337aa526cc50ac88fbddb86@linux.ibm.com/ > Signed-off-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com> > --- Acked-by: Tyrel Datwyler <tyreld@linux.ibm.com>
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 4a2af0f702e1..1eec66195cf4 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -753,6 +753,7 @@ config SCSI_IBMVFC tristate "IBM Virtual FC support" depends on PPC_PSERIES && SCSI depends on SCSI_FC_ATTRS + depends on NVME_FC || NVME_FC=n help This is the IBM POWER Virtual FC Client
Building with CONFIG_SCSI_IBMVFC=y and CONFIG_NVME_FC=m results in a link failure: ibmvfc-nvme.o: undefined reference to `nvme_fc_register_localport' ibmvfc-nvme.o: undefined reference to `nvme_fc_register_remoteport' ibmvfc-nvme.o: undefined reference to `nvme_fc_unregister_localport' ibmvfc-nvme.o: undefined reference to `nvme_fc_unregister_remoteport' ibmvfc-core.o: undefined reference to `nvme_fc_rescan_remoteport' IS_ENABLED() evaluates to 1 for both =y and =m, so the nvme_fc_* call sites are kept in the object file. When SCSI_IBMVFC=y (built-in) but NVME_FC=m (loadable module), the linker cannot resolve these symbols at vmlinux link time. Add the same "depends on NVME_FC || NVME_FC=n" constraint already used by SCSI_LPFC to prevent this configuration. Reported-by: Pavithra <pavrampu@linux.ibm.com> Closes: https://lore.kernel.org/all/327877a29337aa526cc50ac88fbddb86@linux.ibm.com/ Signed-off-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com> --- drivers/scsi/Kconfig | 1 + 1 file changed, 1 insertion(+)