[PATCH 3/3] nvme-pci: disable namespace identifiers for Qemu controllers

Niklas Cassel Niklas.Cassel at wdc.com
Wed Apr 13 00:34:19 PDT 2022


On Wed, Apr 13, 2022 at 06:49:05AM +0200, Christoph Hellwig wrote:
> Qemu unconditionally reports a UUID, which depending on the qemu version

Since it appears that both older and current QEMU versions are not
implementing this properly, perhaps you should also consider adding
the pci vendor and device id used by older QEMU versions?

QEMU nvme pci vendor and device id was changed in commit:
https://github.com/qemu/qemu/commit/6eb7a071292a2f11065127ac152fa24248806021

Which was first included in QEMU v5.2.0.


Kind regards,
Niklas

> is either all-null (which is incorrect but harmless) or contains a single
> bit set for all controllers.  In addition it can also optionally report
> a eui64 which needs to be manually set.  Disable namespace identifiers
> for Qemu controlles entirely even if in some cases they could be set
> correctly through manual intervention.
> 
> Reported-by: Luis Chamberlain <mcgrof at kernel.org>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
> Reviewed-by: Sagi Grimberg <sagi at grimberg.me>
> ---
>  drivers/nvme/host/pci.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index c45dbe8a7dcd7..9b75abdd4478a 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -3410,6 +3410,8 @@ static const struct pci_device_id nvme_id_table[] = {
>  	{ PCI_VDEVICE(INTEL, 0x5845),	/* Qemu emulated controller */
>  		.driver_data = NVME_QUIRK_IDENTIFY_CNS |
>  				NVME_QUIRK_DISABLE_WRITE_ZEROES, },
> +	{ PCI_VDEVICE(REDHAT, 0x0010),	/* Qemu emulated controller */
> +		.driver_data = NVME_QUIRK_BOGUS_NID, },
>  	{ PCI_DEVICE(0x126f, 0x2263),	/* Silicon Motion unidentified */
>  		.driver_data = NVME_QUIRK_NO_NS_DESC_LIST, },
>  	{ PCI_DEVICE(0x1bb1, 0x0100),   /* Seagate Nytro Flash Storage */
> -- 
> 2.30.2
> 
> 


More information about the Linux-nvme mailing list