Print this page
9446 some NVMe controllers get upset about NS ID of 0 when checking "Error Recovery" feature

*** 1864,1881 **** */ switch (feature) { case NVME_FEAT_ARBITRATION: case NVME_FEAT_POWER_MGMT: case NVME_FEAT_TEMPERATURE: - case NVME_FEAT_ERROR: case NVME_FEAT_NQUEUES: case NVME_FEAT_INTR_COAL: case NVME_FEAT_INTR_VECT: case NVME_FEAT_WRITE_ATOM: case NVME_FEAT_ASYNC_EVENT: break; case NVME_FEAT_WRITE_CACHE: if (!nvme->n_write_cache_present) goto fail; break; --- 1864,1890 ---- */ switch (feature) { case NVME_FEAT_ARBITRATION: case NVME_FEAT_POWER_MGMT: case NVME_FEAT_TEMPERATURE: case NVME_FEAT_NQUEUES: case NVME_FEAT_INTR_COAL: case NVME_FEAT_INTR_VECT: case NVME_FEAT_WRITE_ATOM: case NVME_FEAT_ASYNC_EVENT: break; + case NVME_FEAT_ERROR: + /* + * Some controllers (e.g. INTEL SSDPE2KX010T7) get upset if + * namespace ID of 0 is specified. As we don't currently report + * the "Deallocated or Unwritten Logical Block Error Enable", + * simply set the NS ID to 1. + */ + cmd->nc_sqe.sqe_nsid = 1; + break; + case NVME_FEAT_WRITE_CACHE: if (!nvme->n_write_cache_present) goto fail; break;