Re: [PATCH] scsi: ufs: core: Fix link error when CONFIG_RPMB=m

From: Bart Van Assche
Date: Mon Dec 01 2025 - 19:54:01 EST


On 12/1/25 2:42 PM, Bean Huo wrote:
On Mon, 2025-12-01 at 12:25 -0500, Martin K. Petersen wrote:
When CONFIG_SCSI_UFSHCD=y and CONFIG_RPMB=m, the kernel fails to link
with undefined references to ufs_rpmb_probe() and ufs_rpmb_remove():

  ld: drivers/ufs/core/ufshcd.c:8950: undefined reference to
`ufs_rpmb_probe'
  ld: drivers/ufs/core/ufshcd.c:10505: undefined reference to
`ufs_rpmb_remove'

The issue occurs because IS_ENABLED(CONFIG_RPMB) evaluates to true
when CONFIG_RPMB=m, causing the header to declare the real function
prototypes.

This now breaks the modular build for me.

I tested both IS_BUILTIN and IS_REACHABLE for the RPMB dependencies both work
correctly in my configuration.

IS_REACHABLE would provide more flexibility for module configurations, but in
practice, I don't have experience with UFS being used as a module.

Would you prefer IS_REACHABLE for theoretical flexibility, or is IS_BUILTIN
acceptable given the typical UFS built-in configuration?

Hi Martin and Bean,

Unless someone comes up with a better solution, I propose to apply this
patch before sending a pull request to Linus and look into making RPMB
tristate again at a later time:

diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 9d1de68dee27..e0b7f8fb6ecb 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -105,7 +105,7 @@ config PHANTOM
say N here.

config RPMB
- tristate "RPMB partition interface"
+ bool "RPMB partition interface"
depends on MMC || SCSI_UFSHCD
help
Unified RPMB unit interface for RPMB capable devices such as eMMC and

Thanks,

Bart.