• Sean Anderson's avatar
    nvme-pci: Add quirk for broken MSIs · d5887dc6
    Sean Anderson authored
    Sandisk SN530 NVMe drives have broken MSIs. On systems without MSI-X
    support, all commands time out resulting in the following message:
    
    nvme nvme0: I/O tag 12 (100c) QID 0 timeout, completion polled
    
    These timeouts cause the boot to take an excessively-long time (over 20
    minutes) while the initial command queue is flushed.
    
    Address this by adding a quirk for drives with buggy MSIs. The lspci
    output for this device (recorded on a system with MSI-X support) is:
    
    02:00.0 Non-Volatile memory controller: Sandisk Corp Device 5008 (rev 01) (prog-if 02 [NVM Express])
    	Subsystem: Sandisk Corp Device 5008
    	Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
    	Memory at f7e00000 (64-bit, non-prefetchable) [size=16K]
    	Memory at f7e04000 (64-bit, non-prefetchable) [size=256]
    	Capabilities: [80] Power Management version 3
    	Capabilities: [90] MSI: Enable- Count=1/32 Maskable- 64bit+
    	Capabilities: [b0] MSI-X: Enable+ Count=17 Masked-
    	Capabilities: [c0] Express Endpoint, MSI 00
    	Capabilities: [100] Advanced Error Reporting
    	Capabilities: [150] Device Serial Number 00-00-00-00-00-00-00-00
    	Capabilities: [1b8] Latency Tolerance Reporting
    	Capabilities: [300] Secondary PCI Express
    	Capabilities: [900] L1 PM Substates
    	Kernel driver in use: nvme
    	Kernel modules: nvme
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarSean Anderson <sean.anderson@linux.dev>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    d5887dc6
pci.c 95.8 KB