Back

【归档】PVE环境下硬盘识别问题

Maxio1602(A)主控导致硬盘识别不全解决方法

问题复现

爱国者P7000Z(以及所有使用MAXIO 1602主控的PCIe4.0固态)有个坑,两块以上只认一块。 经分析发现,是联芸MAP1602主控的共性问题。 给官方Linux内核提出了patch,内核6.4版本开始会集成进来。

解决方法

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -3424,6 +3424,8 @@ static const struct pci_device_id nvme_id_table[] = {
                 .driver_data = NVME_QUIRK_BOGUS_NID, },
         { PCI_DEVICE(0x1e4B, 0x1202),   /* MAXIO MAP1202 */
                 .driver_data = NVME_QUIRK_BOGUS_NID, },
+        { PCI_DEVICE(0x1e4B, 0x1602),   /* MAXIO MAP1602 */
+                .driver_data = NVME_QUIRK_BOGUS_NID, },
         { PCI_DEVICE(0x1cc1, 0x5350),   /* ADATA XPG GAMMIX S50 */
                 .driver_data = NVME_QUIRK_BOGUS_NID, },
         { PCI_DEVICE(0x1dbe, 0x5236),   /* ADATA XPG GAMMIX S70 */

PVE 8.0 beta最新,内核是6.2.16-1-pve,所以目前不支持联芸MAP1602主控的多块NVMe同时使用。 现在需要使用的,修改不难, 下载源码,找到代码中drivers/nvme/host/pci.c添加这两行

        { PCI_DEVICE(0x1e4B, 0x1602),   /* MAXIO MAP1602 */
                .driver_data = NVME_QUIRK_BOGUS_NID, },

重新编译安装,就好了。

20230616 分享编译好的内核,直接用就好,基于PVE 8.0beta源码6.2.16-1修改: 链接: https://pan.baidu.com/s/1qdF8AVyjUOX_gL8Fxe9g6A?pwd=CHH1 提取码: CHH1

20230708 分享编译好的内核,直接用就好,基于PVE 8.0正式版源码6.2.16-3修改: 链接: https://pan.baidu.com/s/1juvlOR6uA7G53eiCJTAzGw?pwd=CHH2

20230712 分享编译好的内核,直接用就好,基于PVE 8.0正式版源码6.2.16-4修改: 链接: https://pan.baidu.com/s/1xHShA5LBaVl2uWH4cIUHGg?pwd=CHH3 提取码: CHH3

20230713 分享基于PVE 8.0正式版源码6.2.16-4修改的4TB未验证测试版,按114楼增加了延时属性。 链接: https://pan.baidu.com/s/1Wgbva1awvubtBFdxhx0vaA?pwd=CHH4 提取码: CHH4

20230908 分享基于PVE 8.0正式版源码6.2.16-12修改的4TB未验证测试版,增加延时属性及初始化延迟。 链接: https://pan.baidu.com/s/1D-0qjzBop9d_tOcRu7bs3Q?pwd=CHH5 提取码: CHH5

安装方法: 上传文件至PVE,登录PVE执行:

dpkg -i *.deb

重启即可。

参考资料

ChipHell

Licensed under CC BY-NC-SA 4.0
 ·  本文阅读量
TFL's Personal Website | LTP 2.7.5
Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0