diff options
author | Jens Axboe <axboe@fb.com> | 2017-04-24 22:03:14 -0600 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-04-24 22:03:14 -0600 |
commit | d9fd363a6cbfae24ffaa00ac6fd3ce8e271acaf1 (patch) | |
tree | 9139831824ebe9cf77d1bf836b558ee2061c0483 /drivers/nvme/host/core.c | |
parent | a44f53faf4674d84cba79f7ee574584e18ab8744 (diff) | |
parent | 8f9cedc76fc7d9bc916127f8fe1287a249891d40 (diff) | |
download | linux-d9fd363a6cbfae24ffaa00ac6fd3ce8e271acaf1.tar.bz2 |
Merge branch 'master' into for-4.12/post-merge
Diffstat (limited to 'drivers/nvme/host/core.c')
-rw-r--r-- | drivers/nvme/host/core.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 263946b23628..bf6729b1d8bf 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1374,6 +1374,14 @@ static void nvme_configure_apst(struct nvme_ctrl *ctrl) table->entries[state] = target; /* + * Don't allow transitions to the deepest state + * if it's quirked off. + */ + if (state == ctrl->npss && + (ctrl->quirks & NVME_QUIRK_NO_DEEPEST_PS)) + continue; + + /* * Is this state a useful non-operational state for * higher-power states to autonomously transition to? */ @@ -1445,16 +1453,15 @@ struct nvme_core_quirk_entry { }; static const struct nvme_core_quirk_entry core_quirks[] = { - /* - * Seen on a Samsung "SM951 NVMe SAMSUNG 256GB": using APST causes - * the controller to go out to lunch. It dies when the watchdog - * timer reads CSTS and gets 0xffffffff. - */ { - .vid = 0x144d, - .fr = "BXW75D0Q", + /* + * This Toshiba device seems to die using any APST states. See: + * https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678184/comments/11 + */ + .vid = 0x1179, + .mn = "THNSF5256GPUK TOSHIBA", .quirks = NVME_QUIRK_NO_APST, - }, + } }; /* match is null-terminated but idstr is space-padded. */ |