On 8/16/22 05:22, Jonathan Gray wrote:
On Sun, Aug 14, 2022 at 04:03:59PM +0200, Andreas Bartelt wrote:
Hi,

Intel Optane 905p NVMe devices were not yet recognized in CURRENT (e.g., 
https://ark.intel.com/content/www/us/en/ark/products/148607/intel-optane-ssd-905p-series-380gb-m-2-110mm-pcie-x4-20nm-3d-xpoint.html
).

I've managed to get it working with the following diff:

Index: pcidevs
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs,v
retrieving revision 1.2000
diff -u -p -u -p -r1.2000 pcidevs
--- pcidevs     2 Aug 2022 05:35:01 -0000       1.2000
+++ pcidevs     14 Aug 2022 13:46:32 -0000
@@ -4623,6 +4623,7 @@ product INTEL 6321ESB_ACM 0x2699  6321ESB
  product INTEL 6321ESB_HDA     0x269a  6321ESB HD Audio
  product INTEL 6321ESB_SMB     0x269b  6321ESB SMBus
  product INTEL 6321ESB_IDE     0x269e  6321ESB IDE
+product INTEL NVME_6           0x2700  Optane 900P/905P NVMe
  product INTEL WL_22500_1      0x2723  Wi-Fi 6 AX200
  product INTEL WL_22500_9      0x2725  Wi-Fi 6 AX210
  product INTEL WL_22500_10     0x2726  Wi-Fi 6 AX211

Index: pcidevs.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs.h,v
retrieving revision 1.1994
diff -u -p -u -p -r1.1994 pcidevs.h
--- pcidevs.h   2 Aug 2022 05:35:34 -0000       1.1994
+++ pcidevs.h   14 Aug 2022 13:48:44 -0000
@@ -4628,6 +4628,7 @@
  #define       PCI_PRODUCT_INTEL_6321ESB_HDA   0x269a          /* 6321ESB HD 
Audio */
  #define       PCI_PRODUCT_INTEL_6321ESB_SMB   0x269b          /* 6321ESB 
SMBus */
  #define       PCI_PRODUCT_INTEL_6321ESB_IDE   0x269e          /* 6321ESB IDE 
*/
+#define PCI_PRODUCT_INTEL_NVME_6       0x2700          /* Optane 900P/905P 
NVMe */
  #define       PCI_PRODUCT_INTEL_WL_22500_1    0x2723          /* Wi-Fi 6 
AX200 */
  #define       PCI_PRODUCT_INTEL_WL_22500_9    0x2725          /* Wi-Fi 6 
AX210 */
  #define       PCI_PRODUCT_INTEL_WL_22500_10   0x2726          /* Wi-Fi 6 
AX211 */

Index: pcidevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs_data.h,v
retrieving revision 1.1989
diff -u -p -u -p -r1.1989 pcidevs_data.h
--- pcidevs_data.h      2 Aug 2022 05:35:34 -0000       1.1989
+++ pcidevs_data.h      14 Aug 2022 13:49:55 -0000
@@ -15888,6 +15888,10 @@ static const struct pci_known_product pc
            "6321ESB IDE",
        },
        {
+           PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_NVME_6,
+           "Optane 900P/905P NVMe",
+       },
+       {
            PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_1,
            "Wi-Fi 6 AX200",
        },

I've also noticed the following in nvme_pci.c which seems to be related to
some kind of Intel Optane device:
81 static const struct pci_matchid nvme_msi_blacklist[] = {
  82         { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_OPTANE },
  83 };

It is unclear to me if this is also relevant for the Optane 900P/905P
series, i.e., should the line "{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_NVME_6
}," also be added there? [didn't notice any problems yet without having the
device included there...]

The affected parts of dmesg after applying the patch:
nvme1 at pci4 dev 0 function 0 "Intel Optane 900P/905P NVMe" rev 0x00: msix,
NVMe 1.0
nvme1: INTEL SSDPEL1D380GA, firmware E2010603, serial PHMC93620015380A
scsibus3 at nvme1: 2 targets, initiator 0
sd1 at scsibus3 targ 1 lun 0: <NVMe, INTEL SSDPEL1D38, E201>
sd1: 362476MB, 512 bytes/sector, 742352688 sectors

Intel's windows driver uses

PCI\VEN_8086&DEV_F1A6.DeviceDesc = "Intel(R) SSD Pro 7600p/760p/E 6100p Series"
PCI\VEN_8086&DEV_F1A8.DeviceDesc = "Intel(R) SSD 660p Series"
PCI\VEN_8086&DEV_FAF0.DeviceDesc = "Intel(R) SSD 665p Series"
PCI\VEN_8086&DEV_0953.DeviceDesc = "Intel(R) Solid-State Drive 
P3700/P3600/P3500/P3520/750 Series"
PCI\VEN_8086&DEV_0A53.DeviceDesc = "Intel(R) Solid-State Drive DC P3520 Series"
PCI\VEN_8086&DEV_0A54.DeviceDesc = "Intel(R) SSD DC 
P4500/4600/4501/4601/4608/4510/4610/4511 Series"
PCI\VEN_8086&DEV_0A55.DeviceDesc = "Intel(R) SSD DC P4600 Series"
PCI\VEN_8086&DEV_2700.DeviceDesc = "Intel(R) Optane(tm) SSD 900P/905P Series"
PCI\VEN_8086&DEV_2701.DeviceDesc = "Intel(R) Optane(tm) SSD DC P4800X Series"
PCI\VEN_8086&DEV_0B60.DeviceDesc = "Intel(R) SSD D7-P5500/P5600 Series"
PCI\VEN_8086&DEV_4140.DeviceDesc = "Intel(R) Optane(tm) SSD DC P5800X Series"
PCI\VEN_8086&DEV_2525.DeviceDesc = "Intel(R) SSD P1600X Series"

900P/905P are referred to as "Intel Optane SSD 9 Series" on
https://ark.intel.com/content/www/us/en/ark/products/series/213701/intel-optane-ssd-9-series.html

Index: sys/dev/pci/pcidevs
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs,v
retrieving revision 1.2000
diff -u -p -r1.2000 pcidevs
--- sys/dev/pci/pcidevs 2 Aug 2022 05:35:01 -0000       1.2000
+++ sys/dev/pci/pcidevs 16 Aug 2022 03:09:20 -0000
@@ -4473,7 +4473,7 @@ product INTEL WL_3168_1           0x24fb  Dual Ban
  product INTEL WL_8265_1               0x24fd  Dual Band Wireless-AC 8265
  product INTEL 82820_HB                0x2501  82820 Host
  product INTEL 82820_AGP               0x250f  82820 AGP
-product INTEL OPTANE           0x2522  Optane
+product INTEL OPTANE_P1600X    0x2522  Optane P1600X
  product INTEL WL_9260_1               0x2526  Dual Band Wireless-AC 9260
  product INTEL 82850_HB                0x2530  82850 Host
  product INTEL 82860_HB                0x2531  82860 Host
@@ -4623,6 +4623,7 @@ product INTEL 6321ESB_ACM 0x2699  6321ESB
  product INTEL 6321ESB_HDA     0x269a  6321ESB HD Audio
  product INTEL 6321ESB_SMB     0x269b  6321ESB SMBus
  product INTEL 6321ESB_IDE     0x269e  6321ESB IDE
+product INTEL OPTANE_9         0x2700  Optane 9
  product INTEL WL_22500_1      0x2723  Wi-Fi 6 AX200
  product INTEL WL_22500_9      0x2725  Wi-Fi 6 AX210
  product INTEL WL_22500_10     0x2726  Wi-Fi 6 AX211
Index: sys/dev/pci/nvme_pci.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/nvme_pci.c,v
retrieving revision 1.10
diff -u -p -r1.10 nvme_pci.c
--- sys/dev/pci/nvme_pci.c      11 Mar 2022 18:00:51 -0000      1.10
+++ sys/dev/pci/nvme_pci.c      16 Aug 2022 03:10:11 -0000
@@ -79,7 +79,7 @@ nvme_pci_match(struct device *parent, vo
  }
static const struct pci_matchid nvme_msi_blacklist[] = {
-       { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_OPTANE },
+       { PCI_VENDOR_INTEL,     PCI_PRODUCT_INTEL_OPTANE_P1600X },
  };
void

Renaming Intel product with ID 0x2700 to Optane 9 looks good to me and works as expected.

However, it looks to me like there's an ID mismatch w.r.t. 0x2522 / P1600X in the diff since, according to the Windows driver info from above, P1600X should be 0x2525 instead. The timelines also don't match since the P1600X product seems to be quite recent from 02/2021 while the rev. 1.6 commit in nvme_pci.c is from 07/2017. I have no idea what 0x2522 refers to.

Could you please commit the Optane 9 part?

Best regards
Andreas

Reply via email to