On 2019/11/27 15:59, Bobby Johnson wrote:
> Hello,
> 
> Attempting to install OpenBSD on the Lenovo C930, Kaby Lake laptop.
> When booting I only see the entry point at line and then it restarts.
> It does this with a very recent snapshot on bsd.rd and bsd, booting
> from a usb drive.

As well as Stefan's suggestion of legacy PXE, maybe try 6.6 or 6.5 as well
instead of the very recent snapshot?

> I found the NVME wasn't in the pcidevs.  The vendor also wasn't
> listed, HYNIX, 0x151c.  I added the vendor and and device id for the
> card, regenerated the pcidevs.h and pcidevs_data.h and recompiled.
> Is that all that's necessary to get a new nvme to attach?  Anything
> else I could look into to get it booting?

Kernel drivers attach much later than the "entry point", even if the
NVME isn't being picked up, that wouldn't make it restart here.

> Below is what I added to pcidevs
> 
> vendor  HYNIX           0x1c5c  Hynix
> product HYNIX NVME1             0x1527  NVMe
> 
> Bobby
> 

NVME normally attaches by device subclass/interface, this code in
nvme_pci_match() in sys/dev/pci/nvme_pci.c:

        if (PCI_CLASS(pa->pa_class) == PCI_CLASS_MASS_STORAGE &&
            PCI_SUBCLASS(pa->pa_class) == PCI_SUBCLASS_MASS_STORAGE_NVM &&
            PCI_INTERFACE(pa->pa_class) == NVME_PCI_INTERFACE)
                return (1);

If the class/subclass/interface match then there's no need to look at
vendor/device id. Currently the driver has a special attachment for some
Apple device ids. It's very unlikely that your device needs any change,
but if it did then you'd add it alongside the Apple ones (as well as
updating pcidevs).

FWIW here's a pcidump -v example of a device which already matches:

 5:0:0: Samsung SM961/PM961 NVMe
        0x0000: Vendor ID: 144d, Product ID: a804
        0x0004: Command: 0006, Status: 0010
        0x0008: Class: 01 Mass Storage, Subclass: 08 NVM,
                Interface: 02, Revision: 00

or this in lspci -v

05:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD 
Controller SM961/PM961 (prog-if 02 [NVM Express])

There's no dev/vendor match for this but still:

nvme0 at pci5 dev 0 function 0 "Samsung SM961/PM961 NVMe" rev 0x00: msix, NVMe 
1.2
nvme0: SAMSUNG MZVLW256HEHP-000L7, firmware 4L7QCXB7, serial S35ENX0J765205
scsibus1 at nvme0: 2 targets, initiator 0

Reply via email to