Skip to content

Commit d3d6f0e

Browse files
committed
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
2 parents b5596f1 + 9a28b92 commit d3d6f0e

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

drivers/nvme/host/pci.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,18 +2509,12 @@ static int nvme_pci_enable(struct nvme_dev *dev)
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,
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,
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)
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[] = {
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, },

0 commit comments

Comments
 (0)