diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-06-28 11:55:26 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-06-28 11:55:26 +0000 |
commit | dbeef7f762c59b1461e27146a764182be5eab8cb (patch) | |
tree | 9f0ef909e6adb3797b4ab9455208ad2b9d0d380e /usr | |
parent | 710e454edbf75c28f50414fc34b6f6c5c75d10bd (diff) | |
parent | 621738e24ed094c80643e1cd8d545241ae1978b1 (diff) | |
download | illumos-joyent-dbeef7f762c59b1461e27146a764182be5eab8cb.tar.gz |
[illumos-gate merge]
commit 621738e24ed094c80643e1cd8d545241ae1978b1
8268 NVMe driver needs to ignore namespaces that specify an unused LBA Format
commit 0b466603bce1aab6133ee3b3c8fb941d5c83bf16
8427 update nvme theory statement for 7296
Diffstat (limited to 'usr')
-rw-r--r-- | usr/src/uts/common/io/nvme/nvme.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/usr/src/uts/common/io/nvme/nvme.c b/usr/src/uts/common/io/nvme/nvme.c index bc9dec3a5a..107a7abbe9 100644 --- a/usr/src/uts/common/io/nvme/nvme.c +++ b/usr/src/uts/common/io/nvme/nvme.c @@ -30,15 +30,16 @@ * * Interrupt Usage: * - * The driver will use a FIXED interrupt while configuring the device as the - * specification requires. Later in the attach process it will switch to MSI-X - * or MSI if supported. The driver wants to have one interrupt vector per CPU, - * but it will work correctly if less are available. Interrupts can be shared - * by queues, the interrupt handler will iterate through the I/O queue array by - * steps of n_intr_cnt. Usually only the admin queue will share an interrupt - * with one I/O queue. The interrupt handler will retrieve completed commands - * from all queues sharing an interrupt vector and will post them to a taskq - * for completion processing. + * The driver will use a single interrupt while configuring the device as the + * specification requires, but contrary to the specification it will try to use + * a single-message MSI(-X) or FIXED interrupt. Later in the attach process it + * will switch to multiple-message MSI(-X) if supported. The driver wants to + * have one interrupt vector per CPU, but it will work correctly if less are + * available. Interrupts can be shared by queues, the interrupt handler will + * iterate through the I/O queue array by steps of n_intr_cnt. Usually only + * the admin queue will share an interrupt with one I/O queue. The interrupt + * handler will retrieve completed commands from all queues sharing an interrupt + * vector and will post them to a taskq for completion processing. * * * Command Processing: @@ -2179,6 +2180,7 @@ nvme_init_ns(nvme_t *nvme, int nsid) * We currently don't support namespaces that use either: * - thin provisioning * - protection information + * - illegal block size (< 512) */ if (idns->id_nsfeat.f_thin || idns->id_dps.dp_pinfo) { @@ -2187,6 +2189,10 @@ nvme_init_ns(nvme_t *nvme, int nsid) "thin = %d, pinfo = %d", nsid, idns->id_nsfeat.f_thin, idns->id_dps.dp_pinfo); ns->ns_ignore = B_TRUE; + } else if (ns->ns_block_size < 512) { + dev_err(nvme->n_dip, CE_WARN, + "!ignoring namespace %d, unsupported block size %"PRIu64, + nsid, (uint64_t)ns->ns_block_size); } else { ns->ns_ignore = B_FALSE; } |