Some regression was introduced into NVME-related kernel configuration by 32c662c58a9b9 into 4.15-rc2, which was pulled later into ubuntu-bionic.git
In result, "nvme" and "nvme_core" drivers are built into the kernel, we can't build them as modules. It caused incompatibility of NMVe-OF target and initiator modules (nvmet, nvme-rdma) installed by Mellanox OFED with the inbox "nvme" driver.
Root cause analysis.
In the drivers/lightnvm/Kconfig file - kernel configuration for the OpenChannel SSDs (lightnvm) we have:
menuconfig NVM
bool "Open-Channel SSD target support"
depends on BLOCK && HAS_DMA && PCI
select BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
...
It means that BLK_DEV_NVME is selected to "y" when NVM (CONFIG_NVM) is selected.
NVM parameter is 2 state (on / off, i.e. "y" or "no"), it couldn't be built as a module.
So that it triggers the change of BLK_DEV_NAME=y and NVME_CORE=y
lightnvm: include NVM Express driver if OCSSD is selected for build
Because NVM needs BLK_DEV_NVME, select it automatically if we mark NVM
in config file before building kernel. Also append PCI to depends as
select doesn't automatically add dependencies.
menuconfig NVM
bool "Open-Channel SSD target support"
- depends on BLOCK && HAS_DMA
+ depends on BLOCK && HAS_DMA && PCI
+ select BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
menuconfig NVM
bool "Open-Channel SSD target support"
- depends on BLOCK && HAS_DMA && PCI
- select BLK_DEV_NVME
+ depends on BLOCK && HAS_DMA && PCI && BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
Some regression was introduced into NVME-related kernel configuration by 32c662c58a9b9 into 4.15-rc2, which was pulled later into ubuntu-bionic.git
In result, "nvme" and "nvme_core" drivers are built into the kernel, we can't build them as modules. It caused incompatibility of NMVe-OF target and initiator modules (nvmet, nvme-rdma) installed by Mellanox OFED with the inbox "nvme" driver.
Root cause analysis.
In the drivers/ lightnvm/ Kconfig file - kernel configuration for the OpenChannel SSDs (lightnvm) we have:
menuconfig NVM
bool "Open-Channel SSD target support"
depends on BLOCK && HAS_DMA && PCI
select BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
...
It means that BLK_DEV_NVME is selected to "y" when NVM (CONFIG_NVM) is selected.
NVM parameter is 2 state (on / off, i.e. "y" or "no"), it couldn't be built as a module.
So that it triggers the change of BLK_DEV_NAME=y and NVME_CORE=y
$ git blame drivers/ lightnvm/ Kconfig
32c662c58a9b9 (Rakesh Pandit 2017-10-13 14:45:55 +0200 7) depends on BLOCK && HAS_DMA && PCI
32c662c58a9b9 (Rakesh Pandit 2017-10-13 14:45:55 +0200 8) select BLK_DEV_NVME
commit 32c662c58a9b9d0 c99e713a14ca323 a9a91c73a0
Author: Rakesh Pandit <email address hidden>
Date: Fri Oct 13 14:45:55 2017 +0200
lightnvm: include NVM Express driver if OCSSD is selected for build
Because NVM needs BLK_DEV_NVME, select it automatically if we mark NVM
in config file before building kernel. Also append PCI to depends as
select doesn't automatically add dependencies.
Signed-off-by: Rakesh Pandit <email address hidden>
Signed-off-by: Matias Bjørling <email address hidden>
Signed-off-by: Jens Axboe <email address hidden>
drivers/ lightnvm/ Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
$ git diff 32c662c58a9b9^ 1..32c662c58a9b 9 lightnvm/ Kconfig b/drivers/ lightnvm/ Kconfig .2a953efec4e1 100644 lightnvm/ Kconfig lightnvm/ Kconfig
diff --git a/drivers/
index ead61a93cb4e.
--- a/drivers/
+++ b/drivers/
@@ -4,7 +4,8 @@
menuconfig NVM
bool "Open-Channel SSD target support"
- depends on BLOCK && HAS_DMA
+ depends on BLOCK && HAS_DMA && PCI
+ select BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
Proposed fix is following:
diff --git a/drivers/ lightnvm/ Kconfig b/drivers/ lightnvm/ Kconfig .9969236314d7 100644 lightnvm/ Kconfig lightnvm/ Kconfig
index 2a953efec4e1.
--- a/drivers/
+++ b/drivers/
@@ -4,8 +4,7 @@
menuconfig NVM
bool "Open-Channel SSD target support"
- depends on BLOCK && HAS_DMA && PCI
- select BLK_DEV_NVME
+ depends on BLOCK && HAS_DMA && PCI && BLK_DEV_NVME
help
Say Y here to get to enable Open-channel SSDs.
Regards, Yurii Shestakov