Commit d4d7c03f authored by Jens Axboe's avatar Jens Axboe

Merge tag 'nvme-6.12-2024-09-13' of git://git.infradead.org/nvme into for-6.12/block

Pull NVMe fixes from Keith:

"nvme fixes for Linux 6.12

 - A syntax cleanup (Shen)
 - Fix a Kconfig linking error (Arnd)
 - New queue-depth quirk (Keith)"

* tag 'nvme-6.12-2024-09-13' of git://git.infradead.org/nvme:
  nvme-pci: qdepth 1 quirk
  nvme-tcp: fix link failure for TCP auth
  nvme: Convert comma to semicolon
parents 26e197b7 83bdfcbd
...@@ -41,6 +41,7 @@ config NVME_HWMON ...@@ -41,6 +41,7 @@ config NVME_HWMON
config NVME_FABRICS config NVME_FABRICS
select NVME_CORE select NVME_CORE
select NVME_KEYRING if NVME_TCP_TLS
tristate tristate
config NVME_RDMA config NVME_RDMA
...@@ -94,7 +95,6 @@ config NVME_TCP ...@@ -94,7 +95,6 @@ config NVME_TCP
config NVME_TCP_TLS config NVME_TCP_TLS
bool "NVMe over Fabrics TCP TLS encryption support" bool "NVMe over Fabrics TCP TLS encryption support"
depends on NVME_TCP depends on NVME_TCP
select NVME_KEYRING
select NET_HANDSHAKE select NET_HANDSHAKE
select KEYS select KEYS
help help
......
...@@ -4605,7 +4605,7 @@ int nvme_alloc_io_tag_set(struct nvme_ctrl *ctrl, struct blk_mq_tag_set *set, ...@@ -4605,7 +4605,7 @@ int nvme_alloc_io_tag_set(struct nvme_ctrl *ctrl, struct blk_mq_tag_set *set,
set->flags = BLK_MQ_F_SHOULD_MERGE; set->flags = BLK_MQ_F_SHOULD_MERGE;
if (ctrl->ops->flags & NVME_F_BLOCKING) if (ctrl->ops->flags & NVME_F_BLOCKING)
set->flags |= BLK_MQ_F_BLOCKING; set->flags |= BLK_MQ_F_BLOCKING;
set->cmd_size = cmd_size, set->cmd_size = cmd_size;
set->driver_data = ctrl; set->driver_data = ctrl;
set->nr_hw_queues = ctrl->queue_count - 1; set->nr_hw_queues = ctrl->queue_count - 1;
set->timeout = NVME_IO_TIMEOUT; set->timeout = NVME_IO_TIMEOUT;
......
...@@ -90,6 +90,11 @@ enum nvme_quirks { ...@@ -90,6 +90,11 @@ enum nvme_quirks {
*/ */
NVME_QUIRK_NO_DEEPEST_PS = (1 << 5), NVME_QUIRK_NO_DEEPEST_PS = (1 << 5),
/*
* Problems seen with concurrent commands
*/
NVME_QUIRK_QDEPTH_ONE = (1 << 6),
/* /*
* Set MEDIUM priority on SQ creation * Set MEDIUM priority on SQ creation
*/ */
......
...@@ -2557,15 +2557,8 @@ static int nvme_pci_enable(struct nvme_dev *dev) ...@@ -2557,15 +2557,8 @@ static int nvme_pci_enable(struct nvme_dev *dev)
else else
dev->io_sqes = NVME_NVM_IOSQES; dev->io_sqes = NVME_NVM_IOSQES;
/* if (dev->ctrl.quirks & NVME_QUIRK_QDEPTH_ONE) {
* Temporary fix for the Apple controller found in the MacBook8,1 and
* some MacBook7,1 to avoid controller resets and data loss.
*/
if (pdev->vendor == PCI_VENDOR_ID_APPLE && pdev->device == 0x2001) {
dev->q_depth = 2; dev->q_depth = 2;
dev_warn(dev->ctrl.device, "detected Apple NVMe controller, "
"set queue depth=%u to work around controller resets\n",
dev->q_depth);
} else if (pdev->vendor == PCI_VENDOR_ID_SAMSUNG && } else if (pdev->vendor == PCI_VENDOR_ID_SAMSUNG &&
(pdev->device == 0xa821 || pdev->device == 0xa822) && (pdev->device == 0xa821 || pdev->device == 0xa822) &&
NVME_CAP_MQES(dev->ctrl.cap) == 0) { NVME_CAP_MQES(dev->ctrl.cap) == 0) {
...@@ -3425,6 +3418,8 @@ static const struct pci_device_id nvme_id_table[] = { ...@@ -3425,6 +3418,8 @@ static const struct pci_device_id nvme_id_table[] = {
NVME_QUIRK_BOGUS_NID, }, NVME_QUIRK_BOGUS_NID, },
{ PCI_VDEVICE(REDHAT, 0x0010), /* Qemu emulated controller */ { PCI_VDEVICE(REDHAT, 0x0010), /* Qemu emulated controller */
.driver_data = NVME_QUIRK_BOGUS_NID, }, .driver_data = NVME_QUIRK_BOGUS_NID, },
{ PCI_DEVICE(0x1217, 0x8760), /* O2 Micro 64GB Steam Deck */
.driver_data = NVME_QUIRK_QDEPTH_ONE },
{ PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */ { PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */
.driver_data = NVME_QUIRK_NO_DEEPEST_PS | .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
NVME_QUIRK_BOGUS_NID, }, NVME_QUIRK_BOGUS_NID, },
...@@ -3559,7 +3554,12 @@ static const struct pci_device_id nvme_id_table[] = { ...@@ -3559,7 +3554,12 @@ static const struct pci_device_id nvme_id_table[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0xcd02), { PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0xcd02),
.driver_data = NVME_QUIRK_DMA_ADDRESS_BITS_48, }, .driver_data = NVME_QUIRK_DMA_ADDRESS_BITS_48, },
{ PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001), { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001),
.driver_data = NVME_QUIRK_SINGLE_VECTOR }, /*
* Fix for the Apple controller found in the MacBook8,1 and
* some MacBook7,1 to avoid controller resets and data loss.
*/
.driver_data = NVME_QUIRK_SINGLE_VECTOR |
NVME_QUIRK_QDEPTH_ONE },
{ PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2003) }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2003) },
{ PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2005), { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2005),
.driver_data = NVME_QUIRK_SINGLE_VECTOR | .driver_data = NVME_QUIRK_SINGLE_VECTOR |
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment