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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'block-5.8-2020-07-30' of git://git.kernel.dk/linux-block

Pull block fixes from Jens Axboe:
"Three NVMe fixes"

* tag 'block-5.8-2020-07-30' of git://git.kernel.dk/linux-block:
nvme: add a Identify Namespace Identification Descriptor list quirk
nvme-pci: prevent SK hynix PC400 from using Write Zeroes command
nvme-tcp: fix possible hang waiting for icresp response

+17 -12
+3 -12
drivers/nvme/host/core.c
··· 1102 1102 int pos; 1103 1103 int len; 1104 1104 1105 + if (ctrl->quirks & NVME_QUIRK_NO_NS_DESC_LIST) 1106 + return 0; 1107 + 1105 1108 c.identify.opcode = nvme_admin_identify; 1106 1109 c.identify.nsid = cpu_to_le32(nsid); 1107 1110 c.identify.cns = NVME_ID_CNS_NS_DESC_LIST; ··· 1118 1115 if (status) { 1119 1116 dev_warn(ctrl->device, 1120 1117 "Identify Descriptors failed (%d)\n", status); 1121 - /* 1122 - * Don't treat non-retryable errors as fatal, as we potentially 1123 - * already have a NGUID or EUI-64. If we failed with DNR set, 1124 - * we want to silently ignore the error as we can still 1125 - * identify the device, but if the status has DNR set, we want 1126 - * to propagate the error back specifically for the disk 1127 - * revalidation flow to make sure we don't abandon the 1128 - * device just because of a temporal retry-able error (such 1129 - * as path of transport errors). 1130 - */ 1131 - if (status > 0 && (status & NVME_SC_DNR)) 1132 - status = 0; 1133 1118 goto free_data; 1134 1119 } 1135 1120
+7
drivers/nvme/host/nvme.h
··· 129 129 * Don't change the value of the temperature threshold feature 130 130 */ 131 131 NVME_QUIRK_NO_TEMP_THRESH_CHANGE = (1 << 14), 132 + 133 + /* 134 + * The controller doesn't handle the Identify Namespace 135 + * Identification Descriptor list subcommand despite claiming 136 + * NVMe 1.3 compliance. 137 + */ 138 + NVME_QUIRK_NO_NS_DESC_LIST = (1 << 15), 132 139 }; 133 140 134 141 /*
+4
drivers/nvme/host/pci.c
··· 3099 3099 { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */ 3100 3100 .driver_data = NVME_QUIRK_IDENTIFY_CNS | 3101 3101 NVME_QUIRK_DISABLE_WRITE_ZEROES, }, 3102 + { PCI_DEVICE(0x126f, 0x2263), /* Silicon Motion unidentified */ 3103 + .driver_data = NVME_QUIRK_NO_NS_DESC_LIST, }, 3102 3104 { PCI_DEVICE(0x1bb1, 0x0100), /* Seagate Nytro Flash Storage */ 3103 3105 .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, 3104 3106 { PCI_DEVICE(0x1c58, 0x0003), /* HGST adapter */ ··· 3124 3122 { PCI_DEVICE(0x1cc1, 0x8201), /* ADATA SX8200PNP 512GB */ 3125 3123 .driver_data = NVME_QUIRK_NO_DEEPEST_PS | 3126 3124 NVME_QUIRK_IGNORE_DEV_SUBNQN, }, 3125 + { PCI_DEVICE(0x1c5c, 0x1504), /* SK Hynix PC400 */ 3126 + .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, 3127 3127 { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) }, 3128 3128 { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001), 3129 3129 .driver_data = NVME_QUIRK_SINGLE_VECTOR },
+3
drivers/nvme/host/tcp.c
··· 1382 1382 if (nctrl->opts->tos >= 0) 1383 1383 ip_sock_set_tos(queue->sock->sk, nctrl->opts->tos); 1384 1384 1385 + /* Set 10 seconds timeout for icresp recvmsg */ 1386 + queue->sock->sk->sk_rcvtimeo = 10 * HZ; 1387 + 1385 1388 queue->sock->sk->sk_allocation = GFP_ATOMIC; 1386 1389 nvme_tcp_set_queue_io_cpu(queue); 1387 1390 queue->request = NULL;