History

Merge tag 'block-6.2-2023-02-16' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe: "Just a few NVMe fixes that should go into the 6.2 release, adding a quirk and fixing two issues introduced in this release: - NVMe fixes via Christoph: - Always return an ERR_PTR from nvme_pci_alloc_dev (Irvin Cote) - Add bogus ID quirk for ADATA SX6000PNP (Daniel Wagner) - Set the DMA mask earlier (Christoph Hellwig)" * tag 'block-6.2-2023-02-16' of git://git.kernel.dk/linux: nvme-pci: always return an ERR_PTR from nvme_pci_alloc_dev nvme-pci: set the DMA mask earlier nvme-pci: add bogus ID quirk for ADATA SX6000PNP

Linus Torvalds committed 3 years ago

Commit d3d6f0e2 parents b5596f1 9a28b921 file · +10 −10Browse files

Unified · Split

drivers/nvme/host/pci.c+10−10
@@ -2509,18 +2509,12 @@ static int nvme_pci_enable(struct nvme_dev *dev) · 2508 unmodified lines
25092509 {
25102510 int result = -ENOMEM;
25112511 struct pci_dev *pdev = to_pci_dev(dev->dev);
2512− int dma_address_bits = 64;
25132512
25142513 if (pci_enable_device_mem(pdev))
25152514 return result;
25162515
25172516 pci_set_master(pdev);
25182517
2519− if (dev->ctrl.quirks & NVME_QUIRK_DMA_ADDRESS_BITS_48)
2520− dma_address_bits = 48;
2521− if (dma_set_mask_and_coherent(dev->dev, DMA_BIT_MASK(dma_address_bits)))
2522− goto disable;
2523−
25242518 if (readl(dev->bar + NVME_REG_CSTS) == -1) {
25252519 result = -ENODEV;
25262520 goto disable;
@@ -2970,7 +2964,7 @@ static struct nvme_dev *nvme_pci_alloc_dev(struct pci_dev *pdev, · 443 unmodified lines
29702964
29712965 dev = kzalloc_node(sizeof(*dev), GFP_KERNEL, node);
29722966 if (!dev)
2973− return NULL;
2967+ return ERR_PTR(-ENOMEM);
29742968 INIT_WORK(&dev->ctrl.reset_work, nvme_reset_work);
29752969 mutex_init(&dev->shutdown_lock);
29762970
@@ -2998,7 +2992,11 @@ static struct nvme_dev *nvme_pci_alloc_dev(struct pci_dev *pdev, · 21 unmodified lines
29982992 quirks);
29992993 if (ret)
30002994 goto out_put_device;
3001−
2995+
2996+ if (dev->ctrl.quirks & NVME_QUIRK_DMA_ADDRESS_BITS_48)
2997+ dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(48));
2998+ else
2999+ dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
30023000 dma_set_min_align_mask(&pdev->dev, NVME_CTRL_PAGE_SIZE - 1);
30033001 dma_set_max_seg_size(&pdev->dev, 0xffffffff);
30043002
@@ -3031,8 +3029,8 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id) · 26 unmodified lines
30313029 int result = -ENOMEM;
30323030
30333031 dev = nvme_pci_alloc_dev(pdev, id);
3034− if (!dev)
3035− return -ENOMEM;
3032+ if (IS_ERR(dev))
3033+ return PTR_ERR(dev);
30363034
30373035 result = nvme_dev_map(dev);
30383036 if (result)
@@ -3423,6 +3421,8 @@ static const struct pci_device_id nvme_id_table[] = { · 384 unmodified lines
34233421 { PCI_DEVICE(0x10ec, 0x5762), /* ADATA SX6000LNP */
34243422 .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN |
34253423 NVME_QUIRK_BOGUS_NID, },
3424+ { PCI_DEVICE(0x10ec, 0x5763), /* ADATA SX6000PNP */
3425+ .driver_data = NVME_QUIRK_BOGUS_NID, },
34263426 { PCI_DEVICE(0x1cc1, 0x8201), /* ADATA SX8200PNP 512GB */
34273427 .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
34283428 NVME_QUIRK_IGNORE_DEV_SUBNQN, },