|
Hannes Reinecke |
2a3fe8 |
From: Akinobu Mita <akinobu.mita@gmail.com>
|
|
Hannes Reinecke |
2a3fe8 |
Date: Fri, 15 Nov 2019 00:40:01 +0900
|
|
Hannes Reinecke |
2a3fe8 |
Subject: [PATCH] nvme: hwmon: add quirk to avoid changing temperature
|
|
Hannes Reinecke |
2a3fe8 |
Git-commit: 6c6aa2f26c6813af38d88718881c0307bb9a54c0
|
|
Hannes Reinecke |
2a3fe8 |
Patch-mainline: v5.5-rc1
|
|
Hannes Reinecke |
2a3fe8 |
References: bsc#1169045
|
|
Hannes Reinecke |
2a3fe8 |
threshold
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
This adds a new quirk NVME_QUIRK_NO_TEMP_THRESH_CHANGE to avoid changing
|
|
Hannes Reinecke |
2a3fe8 |
the value of the temperature threshold feature for specific devices that
|
|
Hannes Reinecke |
2a3fe8 |
show undesirable behavior.
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
Guenter reported:
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
"On my Intel NVME drive (SSDPEKKW512G7), writing any minimum limit on the
|
|
Hannes Reinecke |
2a3fe8 |
Composite temperature sensor results in a temperature warning, and that
|
|
Hannes Reinecke |
2a3fe8 |
warning is sticky until I reset the controller.
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
It doesn't seem to matter which temperature I write; writing -273000 has
|
|
Hannes Reinecke |
2a3fe8 |
the same result."
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
The Intel NVMe has the latest firmware version installed, so this isn't
|
|
Hannes Reinecke |
2a3fe8 |
a problem that was ever fixed.
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
Reported-by: Guenter Roeck <linux@roeck-us.net>
|
|
Hannes Reinecke |
2a3fe8 |
Cc: Keith Busch <kbusch@kernel.org>
|
|
Hannes Reinecke |
2a3fe8 |
Cc: Jens Axboe <axboe@fb.com>
|
|
Hannes Reinecke |
2a3fe8 |
Cc: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
2a3fe8 |
Cc: Sagi Grimberg <sagi@grimberg.me>
|
|
Hannes Reinecke |
2a3fe8 |
Cc: Jean Delvare <jdelvare@suse.com>
|
|
Hannes Reinecke |
2a3fe8 |
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
|
|
Hannes Reinecke |
2a3fe8 |
Tested-by: Guenter Roeck <linux@roeck-us.net>
|
|
Hannes Reinecke |
2a3fe8 |
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
|
|
Hannes Reinecke |
2a3fe8 |
Signed-off-by: Keith Busch <kbusch@kernel.org>
|
|
Hannes Reinecke |
2a3fe8 |
Acked-by: Hannes Reinecke <hare@suse.com>
|
|
Hannes Reinecke |
2a3fe8 |
---
|
|
Hannes Reinecke |
2a3fe8 |
drivers/nvme/host/hwmon.c | 6 +++++-
|
|
Hannes Reinecke |
2a3fe8 |
drivers/nvme/host/nvme.h | 5 +++++
|
|
Hannes Reinecke |
2a3fe8 |
drivers/nvme/host/pci.c | 3 ++-
|
|
Hannes Reinecke |
2a3fe8 |
3 files changed, 12 insertions(+), 2 deletions(-)
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
diff --git a/drivers/nvme/host/hwmon.c b/drivers/nvme/host/hwmon.c
|
|
Hannes Reinecke |
2a3fe8 |
index 97a84b4b45db..a5af21f5d370 100644
|
|
Hannes Reinecke |
2a3fe8 |
--- a/drivers/nvme/host/hwmon.c
|
|
Hannes Reinecke |
2a3fe8 |
+++ b/drivers/nvme/host/hwmon.c
|
|
Hannes Reinecke |
2a3fe8 |
@@ -170,8 +170,12 @@ static umode_t nvme_hwmon_is_visible(const void *_data,
|
|
Hannes Reinecke |
2a3fe8 |
case hwmon_temp_max:
|
|
Hannes Reinecke |
2a3fe8 |
case hwmon_temp_min:
|
|
Hannes Reinecke |
2a3fe8 |
if ((!channel && data->ctrl->wctemp) ||
|
|
Hannes Reinecke |
2a3fe8 |
- (channel && data->log.temp_sensor[channel - 1]))
|
|
Hannes Reinecke |
2a3fe8 |
+ (channel && data->log.temp_sensor[channel - 1])) {
|
|
Hannes Reinecke |
2a3fe8 |
+ if (data->ctrl->quirks &
|
|
Hannes Reinecke |
2a3fe8 |
+ NVME_QUIRK_NO_TEMP_THRESH_CHANGE)
|
|
Hannes Reinecke |
2a3fe8 |
+ return 0444;
|
|
Hannes Reinecke |
2a3fe8 |
return 0644;
|
|
Hannes Reinecke |
2a3fe8 |
+ }
|
|
Hannes Reinecke |
2a3fe8 |
break;
|
|
Hannes Reinecke |
2a3fe8 |
case hwmon_temp_alarm:
|
|
Hannes Reinecke |
2a3fe8 |
if (!channel)
|
|
Hannes Reinecke |
2a3fe8 |
diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
|
|
Hannes Reinecke |
2a3fe8 |
index 258534a7bb6c..34ac79c5e309 100644
|
|
Hannes Reinecke |
2a3fe8 |
--- a/drivers/nvme/host/nvme.h
|
|
Hannes Reinecke |
2a3fe8 |
+++ b/drivers/nvme/host/nvme.h
|
|
Hannes Reinecke |
2a3fe8 |
@@ -114,6 +114,11 @@ enum nvme_quirks {
|
|
Hannes Reinecke |
2a3fe8 |
* Prevent tag overlap between queues
|
|
Hannes Reinecke |
2a3fe8 |
*/
|
|
Hannes Reinecke |
2a3fe8 |
NVME_QUIRK_SHARED_TAGS = (1 << 13),
|
|
Hannes Reinecke |
2a3fe8 |
+
|
|
Hannes Reinecke |
2a3fe8 |
+ /*
|
|
Hannes Reinecke |
2a3fe8 |
+ * Don't change the value of the temperature threshold feature
|
|
Hannes Reinecke |
2a3fe8 |
+ */
|
|
Hannes Reinecke |
2a3fe8 |
+ NVME_QUIRK_NO_TEMP_THRESH_CHANGE = (1 << 14),
|
|
Hannes Reinecke |
2a3fe8 |
};
|
|
Hannes Reinecke |
2a3fe8 |
|
|
Hannes Reinecke |
2a3fe8 |
/*
|
|
Hannes Reinecke |
2a3fe8 |
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
|
|
Hannes Reinecke |
2a3fe8 |
index 1b1b0db45567..c40a672e5047 100644
|
|
Hannes Reinecke |
2a3fe8 |
--- a/drivers/nvme/host/pci.c
|
|
Hannes Reinecke |
2a3fe8 |
+++ b/drivers/nvme/host/pci.c
|
|
Hannes Reinecke |
2a3fe8 |
@@ -3065,7 +3065,8 @@ static const struct pci_device_id nvme_id_table[] = {
|
|
Hannes Reinecke |
2a3fe8 |
NVME_QUIRK_DEALLOCATE_ZEROES, },
|
|
Hannes Reinecke |
2a3fe8 |
{ PCI_VDEVICE(INTEL, 0xf1a5), /* Intel 600P/P3100 */
|
|
Hannes Reinecke |
2a3fe8 |
.driver_data = NVME_QUIRK_NO_DEEPEST_PS |
|
|
Hannes Reinecke |
2a3fe8 |
- NVME_QUIRK_MEDIUM_PRIO_SQ },
|
|
Hannes Reinecke |
2a3fe8 |
+ NVME_QUIRK_MEDIUM_PRIO_SQ |
|
|
Hannes Reinecke |
2a3fe8 |
+ NVME_QUIRK_NO_TEMP_THRESH_CHANGE },
|
|
Hannes Reinecke |
2a3fe8 |
{ PCI_VDEVICE(INTEL, 0xf1a6), /* Intel 760p/Pro 7600p */
|
|
Hannes Reinecke |
2a3fe8 |
.driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, },
|
|
Hannes Reinecke |
2a3fe8 |
{ PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */
|
|
Hannes Reinecke |
2a3fe8 |
--
|
|
Hannes Reinecke |
2a3fe8 |
2.16.4
|
|
Hannes Reinecke |
2a3fe8 |
|