Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

+10 -10
+10 -10
drivers/nvme/host/pci.c
··· 2509 2509 { 2510 2510 int result = -ENOMEM; 2511 2511 struct pci_dev *pdev = to_pci_dev(dev->dev); 2512 - int dma_address_bits = 64; 2513 2512 2514 2513 if (pci_enable_device_mem(pdev)) 2515 2514 return result; 2516 2515 2517 2516 pci_set_master(pdev); 2518 - 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 2517 2524 2518 if (readl(dev->bar + NVME_REG_CSTS) == -1) { 2525 2519 result = -ENODEV; ··· 2964 2970 2965 2971 dev = kzalloc_node(sizeof(*dev), GFP_KERNEL, node); 2966 2972 if (!dev) 2967 - return NULL; 2973 + return ERR_PTR(-ENOMEM); 2968 2974 INIT_WORK(&dev->ctrl.reset_work, nvme_reset_work); 2969 2975 mutex_init(&dev->shutdown_lock); 2970 2976 ··· 2992 2998 quirks); 2993 2999 if (ret) 2994 3000 goto out_put_device; 2995 - 3001 + 3002 + if (dev->ctrl.quirks & NVME_QUIRK_DMA_ADDRESS_BITS_48) 3003 + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(48)); 3004 + else 3005 + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); 2996 3006 dma_set_min_align_mask(&pdev->dev, NVME_CTRL_PAGE_SIZE - 1); 2997 3007 dma_set_max_seg_size(&pdev->dev, 0xffffffff); 2998 3008 ··· 3029 3031 int result = -ENOMEM; 3030 3032 3031 3033 dev = nvme_pci_alloc_dev(pdev, id); 3032 - if (!dev) 3033 - return -ENOMEM; 3034 + if (IS_ERR(dev)) 3035 + return PTR_ERR(dev); 3034 3036 3035 3037 result = nvme_dev_map(dev); 3036 3038 if (result) ··· 3421 3423 { PCI_DEVICE(0x10ec, 0x5762), /* ADATA SX6000LNP */ 3422 3424 .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN | 3423 3425 NVME_QUIRK_BOGUS_NID, }, 3426 + { PCI_DEVICE(0x10ec, 0x5763), /* ADATA SX6000PNP */ 3427 + .driver_data = NVME_QUIRK_BOGUS_NID, }, 3424 3428 { PCI_DEVICE(0x1cc1, 0x8201), /* ADATA SX8200PNP 512GB */ 3425 3429 .driver_data = NVME_QUIRK_NO_DEEPEST_PS | 3426 3430 NVME_QUIRK_IGNORE_DEV_SUBNQN, },