diff for duplicates of <1561474998.19713.13.camel@intel.com> diff --git a/a/1.txt b/N1/1.txt index 1a6a94e..9cbdce0 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,4 +1,4 @@ -On ?, 2019-06-14@00:20 +0900, Akinobu Mita wrote: +On 五, 2019-06-14 at 00:20 +0900, Akinobu Mita wrote: > The NVMe controller reports up to nine temperature values in the > SMART / > Health log page (the composite temperature and temperature sensor 1 @@ -13,9 +13,9 @@ On ?, 2019-06-14@00:20 +0900, Akinobu Mita wrote: > temperature. > > /sys/class/thermal/thermal_zone[0-*]: -> ????|---type: 'nvme<instance>-temp<sensor>' -> ????|---temp: Temperature -> ????|---trip_point_0_temp: Over temperature threshold +> |---type: 'nvme<instance>-temp<sensor>' +> |---temp: Temperature +> |---trip_point_0_temp: Over temperature threshold > > The thermal_zone[0-*] contains a 'device' symlink to the > corresponding nvme @@ -43,17 +43,17 @@ Eduardo, any comments? thanks, rui -> Cc: Zhang Rui <rui.zhang at intel.com> -> Cc: Eduardo Valentin <edubezval at gmail.com> -> Cc: Daniel Lezcano <daniel.lezcano at linaro.org> -> Cc: Keith Busch <kbusch at kernel.org> -> Cc: Jens Axboe <axboe at fb.com> -> Cc: Christoph Hellwig <hch at lst.de> -> Cc: Sagi Grimberg <sagi at grimberg.me> -> Cc: Minwoo Im <minwoo.im.dev at gmail.com> -> Cc: Kenneth Heitke <kenneth.heitke at intel.com> -> Cc: Chaitanya Kulkarni <Chaitanya.Kulkarni at wdc.com> -> Signed-off-by: Akinobu Mita <akinobu.mita at gmail.com> +> Cc: Zhang Rui <rui.zhang@intel.com> +> Cc: Eduardo Valentin <edubezval@gmail.com> +> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> +> Cc: Keith Busch <kbusch@kernel.org> +> Cc: Jens Axboe <axboe@fb.com> +> Cc: Christoph Hellwig <hch@lst.de> +> Cc: Sagi Grimberg <sagi@grimberg.me> +> Cc: Minwoo Im <minwoo.im.dev@gmail.com> +> Cc: Kenneth Heitke <kenneth.heitke@intel.com> +> Cc: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com> +> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> > --- > * v4 > - add thermal.c to hold thermal zone related code @@ -63,81 +63,81 @@ rui > - support DT thermal zone device. > - use bitmap to iterate over implemented sensors > -> ?drivers/nvme/host/Kconfig???|???1 + -> ?drivers/nvme/host/Makefile??|???1 + -> ?drivers/nvme/host/core.c????|???5 + -> ?drivers/nvme/host/nvme.h????|??35 +++++ -> ?drivers/nvme/host/thermal.c | 311 +> drivers/nvme/host/Kconfig | 1 + +> drivers/nvme/host/Makefile | 1 + +> drivers/nvme/host/core.c | 5 + +> drivers/nvme/host/nvme.h | 35 +++++ +> drivers/nvme/host/thermal.c | 311 > ++++++++++++++++++++++++++++++++++++++++++++ -> ?include/linux/nvme.h????????|???5 + -> ?6 files changed, 358 insertions(+) -> ?create mode 100644 drivers/nvme/host/thermal.c +> include/linux/nvme.h | 5 + +> 6 files changed, 358 insertions(+) +> create mode 100644 drivers/nvme/host/thermal.c > > diff --git a/drivers/nvme/host/Kconfig b/drivers/nvme/host/Kconfig > index ec43ac9..90429f8 100644 > --- a/drivers/nvme/host/Kconfig > +++ b/drivers/nvme/host/Kconfig > @@ -1,6 +1,7 @@ -> ?# SPDX-License-Identifier: GPL-2.0-only -> ?config NVME_CORE -> ? tristate +> # SPDX-License-Identifier: GPL-2.0-only +> config NVME_CORE +> tristate > + select THERMAL_WRITABLE_TRIPS if THERMAL -> ? -> ?config BLK_DEV_NVME -> ? tristate "NVM Express block device" +> +> config BLK_DEV_NVME +> tristate "NVM Express block device" > diff --git a/drivers/nvme/host/Makefile b/drivers/nvme/host/Makefile > index 8a4b671..6018668 100644 > --- a/drivers/nvme/host/Makefile > +++ b/drivers/nvme/host/Makefile > @@ -14,6 +14,7 @@ nvme-core-$(CONFIG_TRACING) += > trace.o -> ?nvme-core-$(CONFIG_NVME_MULTIPATH) += multipath.o -> ?nvme-core-$(CONFIG_NVM) += lightnvm.o -> ?nvme-core-$(CONFIG_FAULT_INJECTION_DEBUG_FS) += +> nvme-core-$(CONFIG_NVME_MULTIPATH) += multipath.o +> nvme-core-$(CONFIG_NVM) += lightnvm.o +> nvme-core-$(CONFIG_FAULT_INJECTION_DEBUG_FS) += > fault_inject.o > +nvme-core-$(CONFIG_THERMAL) += thermal.o -> ? -> ?nvme-y += pci.o -> ? +> +> nvme-y += pci.o +> > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c > index 7e3c786..4be339b 100644 > --- a/drivers/nvme/host/core.c > +++ b/drivers/nvme/host/core.c > @@ -2696,6 +2696,10 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) -> ? if (ret < 0) -> ? return ret; -> ? +> if (ret < 0) +> return ret; +> > + ret = nvme_thermal_zones_register(ctrl); > + if (ret) > + return ret; > + -> ? ctrl->identified = true; -> ? -> ? return 0; +> ctrl->identified = true; +> +> return 0; > @@ -3699,6 +3703,7 @@ void nvme_stop_ctrl(struct nvme_ctrl *ctrl) -> ?{ -> ? nvme_mpath_stop(ctrl); -> ? nvme_stop_keep_alive(ctrl); +> { +> nvme_mpath_stop(ctrl); +> nvme_stop_keep_alive(ctrl); > + nvme_thermal_zones_unregister(ctrl); -> ? flush_work(&ctrl->async_event_work); -> ? cancel_work_sync(&ctrl->fw_act_work); -> ?} +> flush_work(&ctrl->async_event_work); +> cancel_work_sync(&ctrl->fw_act_work); +> } > diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h > index 038b893..a9c63ea 100644 > --- a/drivers/nvme/host/nvme.h > +++ b/drivers/nvme/host/nvme.h > @@ -15,6 +15,7 @@ -> ?#include <linux/sed-opal.h> -> ?#include <linux/fault-inject.h> -> ?#include <linux/rcupdate.h> +> #include <linux/sed-opal.h> +> #include <linux/fault-inject.h> +> #include <linux/rcupdate.h> > +#include <linux/thermal.h> -> ? -> ?extern unsigned int nvme_io_timeout; -> ?#define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) +> +> extern unsigned int nvme_io_timeout; +> #define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) > @@ -146,6 +147,13 @@ enum nvme_ctrl_state { -> ? NVME_CTRL_DEAD, -> ?}; -> ? +> NVME_CTRL_DEAD, +> }; +> > +struct nvme_tz { > + struct thermal_zone_params params; > + struct thermal_zone_device *dev; @@ -145,30 +145,30 @@ rui > + unsigned int sensor; > +}; > + -> ?struct nvme_ctrl { -> ? bool comp_seen; -> ? enum nvme_ctrl_state state; +> struct nvme_ctrl { +> bool comp_seen; +> enum nvme_ctrl_state state; > @@ -247,6 +255,15 @@ struct nvme_ctrl { -> ? -> ? struct page *discard_page; -> ? unsigned long discard_page_busy; +> +> struct page *discard_page; +> unsigned long discard_page_busy; > + > +#ifdef CONFIG_THERMAL > + /* -> + ?* tz[0]: composite temperature -> + ?* tz[1-8]: temperature sensor 1 through 8 -> + ?*/ +> + * tz[0]: composite temperature +> + * tz[1-8]: temperature sensor 1 through 8 +> + */ > + struct nvme_tz tz[9]; > + DECLARE_BITMAP(tz_enabled, 9); > +#endif -> ?}; -> ? -> ?enum nvme_iopolicy { +> }; +> +> enum nvme_iopolicy { > @@ -584,4 +601,22 @@ static inline struct nvme_ns > *nvme_get_ns_from_dev(struct device *dev) -> ? return dev_to_disk(dev)->private_data; -> ?} -> ? +> return dev_to_disk(dev)->private_data; +> } +> > +#ifdef CONFIG_THERMAL > + > +int nvme_thermal_zones_register(struct nvme_ctrl *ctrl); @@ -189,7 +189,7 @@ rui > + > +#endif /* CONFIG_THERMAL */ > + -> ?#endif /* _NVME_H */ +> #endif /* _NVME_H */ > diff --git a/drivers/nvme/host/thermal.c > b/drivers/nvme/host/thermal.c > new file mode 100644 @@ -227,7 +227,7 @@ rui > + > + ret = nvme_get_log(ctrl, NVME_NSID_ALL, NVME_LOG_SMART, 0, > log, -> + ???sizeof(*log), 0); +> + sizeof(*log), 0); > + if (ret) { > + ret = ret > 0 ? -EINVAL : ret; > + goto free_log; @@ -271,7 +271,7 @@ rui > +} > + > +static int nvme_tz_get_trip_type(struct thermal_zone_device *tzdev, -> + ?int trip, enum thermal_trip_type +> + int trip, enum thermal_trip_type > *type) > +{ > + *type = THERMAL_TRIP_ACTIVE; @@ -280,7 +280,7 @@ rui > +} > + > +static int nvme_get_over_temp_thresh(struct nvme_ctrl *ctrl, -> + ?????unsigned int sensor, int *temp) +> + unsigned int sensor, int *temp) > +{ > + unsigned int threshold = sensor << > NVME_TEMP_THRESH_SELECT_SHIFT; @@ -300,7 +300,7 @@ rui > +} > + > +static int nvme_set_over_temp_thresh(struct nvme_ctrl *ctrl, -> + ?????unsigned int sensor, int temp) +> + unsigned int sensor, int temp) > +{ > + unsigned int threshold = sensor << > NVME_TEMP_THRESH_SELECT_SHIFT; @@ -322,7 +322,7 @@ rui > +} > + > +static int nvme_tz_get_trip_temp(struct thermal_zone_device *tzdev, -> + ?int trip, int *temp) +> + int trip, int *temp) > +{ > + struct nvme_tz *tz = tzdev->devdata; > + unsigned int sensor = tz->sensor; @@ -350,7 +350,7 @@ rui > +} > + > +static int nvme_tz_set_trip_temp(struct thermal_zone_device *tzdev, -> + ?int trip, int temp) +> + int trip, int temp) > +{ > + return nvme_tz_of_set_trip_temp(tzdev->devdata, trip, temp); > +} @@ -373,7 +373,7 @@ rui > +}; > + > +static int nvme_thermal_zone_register(struct nvme_ctrl *ctrl, -> + ??????unsigned int sensor) +> + unsigned int sensor) > +{ > + struct thermal_zone_device *tzdev; > + struct nvme_tz *tz = &ctrl->tz[sensor]; @@ -387,7 +387,7 @@ rui > + > + tzdev = thermal_zone_device_register(name, 1, 1, tz, > &nvme_tz_ops, -> + ?????&tz->params, 0, 0); +> + &tz->params, 0, 0); > + if (IS_ERR(tzdev)) { > + dev_err(ctrl->device, > + "Failed to register thermal zone device: @@ -467,7 +467,7 @@ rui > + > + err = nvme_get_log(ctrl, NVME_NSID_ALL, NVME_LOG_SMART, 0, > log, -> + ???sizeof(*log), 0); +> + sizeof(*log), 0); > + if (err) { > + dev_err(ctrl->device, "Failed to get SMART log: > %d\n", err); @@ -487,11 +487,11 @@ rui > + temp = get_unaligned_le16(log->temperature); > + > + /* -> + ?* All implemented temperature sensors report a non- +> + * All implemented temperature sensors report a non- > zero value -> + ?* in temperature sensor fields in the smart log +> + * in temperature sensor fields in the smart log > page. -> + ?*/ +> + */ > + if (!temp) > + continue; > + @@ -547,14 +547,14 @@ rui > --- a/include/linux/nvme.h > +++ b/include/linux/nvme.h > @@ -749,6 +749,11 @@ struct nvme_write_zeroes_cmd { -> ? -> ?/* Features */ -> ? +> +> /* Features */ +> > +enum { > + NVME_TEMP_THRESH_MASK = 0xffff, > + NVME_TEMP_THRESH_SELECT_SHIFT = 16, > +}; > + -> ?struct nvme_feat_auto_pst { -> ? __le64 entries[32]; -> ?}; +> struct nvme_feat_auto_pst { +> __le64 entries[32]; +> }; diff --git a/a/content_digest b/N1/content_digest index d9833a0..aca0bb8 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,11 +1,23 @@ "ref\01560439238-4054-1-git-send-email-akinobu.mita@gmail.com\0" "ref\01560439238-4054-3-git-send-email-akinobu.mita@gmail.com\0" - "From\0rui.zhang@intel.com (Zhang Rui)\0" - "Subject\0[PATCH v4 2/3] nvme: add thermal zone devices\0" + "From\0Zhang Rui <rui.zhang@intel.com>\0" + "Subject\0Re: [PATCH v4 2/3] nvme: add thermal zone devices\0" "Date\0Tue, 25 Jun 2019 23:03:18 +0800\0" + "To\0Akinobu Mita <akinobu.mita@gmail.com>" + linux-nvme@lists.infradead.org + " linux-pm@vger.kernel.org\0" + "Cc\0Eduardo Valentin <edubezval@gmail.com>" + Daniel Lezcano <daniel.lezcano@linaro.org> + Keith Busch <kbusch@kernel.org> + Jens Axboe <axboe@fb.com> + Christoph Hellwig <hch@lst.de> + Sagi Grimberg <sagi@grimberg.me> + Minwoo Im <minwoo.im.dev@gmail.com> + Kenneth Heitke <kenneth.heitke@intel.com> + " Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>\0" "\00:1\0" "b\0" - "On ?, 2019-06-14@00:20 +0900, Akinobu Mita wrote:\n" + "On \344\272\224, 2019-06-14 at 00:20 +0900, Akinobu Mita wrote:\n" "> The NVMe controller reports up to nine temperature values in the\n" "> SMART /\n" "> Health log page (the composite temperature and temperature sensor 1\n" @@ -20,9 +32,9 @@ "> temperature.\n" "> \n" "> /sys/class/thermal/thermal_zone[0-*]:\n" - "> ????|---type: 'nvme<instance>-temp<sensor>'\n" - "> ????|---temp: Temperature\n" - "> ????|---trip_point_0_temp: Over temperature threshold\n" + "> \302\240\302\240\302\240\302\240|---type: 'nvme<instance>-temp<sensor>'\n" + "> \302\240\302\240\302\240\302\240|---temp: Temperature\n" + "> \302\240\302\240\302\240\302\240|---trip_point_0_temp: Over temperature threshold\n" "> \n" "> The thermal_zone[0-*] contains a 'device' symlink to the\n" "> corresponding nvme\n" @@ -50,17 +62,17 @@ "thanks,\n" "rui\n" "\n" - "> Cc: Zhang Rui <rui.zhang at intel.com>\n" - "> Cc: Eduardo Valentin <edubezval at gmail.com>\n" - "> Cc: Daniel Lezcano <daniel.lezcano at linaro.org>\n" - "> Cc: Keith Busch <kbusch at kernel.org>\n" - "> Cc: Jens Axboe <axboe at fb.com>\n" - "> Cc: Christoph Hellwig <hch at lst.de>\n" - "> Cc: Sagi Grimberg <sagi at grimberg.me>\n" - "> Cc: Minwoo Im <minwoo.im.dev at gmail.com>\n" - "> Cc: Kenneth Heitke <kenneth.heitke at intel.com>\n" - "> Cc: Chaitanya Kulkarni <Chaitanya.Kulkarni at wdc.com>\n" - "> Signed-off-by: Akinobu Mita <akinobu.mita at gmail.com>\n" + "> Cc: Zhang Rui <rui.zhang@intel.com>\n" + "> Cc: Eduardo Valentin <edubezval@gmail.com>\n" + "> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>\n" + "> Cc: Keith Busch <kbusch@kernel.org>\n" + "> Cc: Jens Axboe <axboe@fb.com>\n" + "> Cc: Christoph Hellwig <hch@lst.de>\n" + "> Cc: Sagi Grimberg <sagi@grimberg.me>\n" + "> Cc: Minwoo Im <minwoo.im.dev@gmail.com>\n" + "> Cc: Kenneth Heitke <kenneth.heitke@intel.com>\n" + "> Cc: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>\n" + "> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>\n" "> ---\n" "> * v4\n" "> - add thermal.c to hold thermal zone related code\n" @@ -70,81 +82,81 @@ "> - support DT thermal zone device.\n" "> - use bitmap to iterate over implemented sensors\n" "> \n" - "> ?drivers/nvme/host/Kconfig???|???1 +\n" - "> ?drivers/nvme/host/Makefile??|???1 +\n" - "> ?drivers/nvme/host/core.c????|???5 +\n" - "> ?drivers/nvme/host/nvme.h????|??35 +++++\n" - "> ?drivers/nvme/host/thermal.c | 311\n" + "> \302\240drivers/nvme/host/Kconfig\302\240\302\240\302\240|\302\240\302\240\302\2401 +\n" + "> \302\240drivers/nvme/host/Makefile\302\240\302\240|\302\240\302\240\302\2401 +\n" + "> \302\240drivers/nvme/host/core.c\302\240\302\240\302\240\302\240|\302\240\302\240\302\2405 +\n" + "> \302\240drivers/nvme/host/nvme.h\302\240\302\240\302\240\302\240|\302\240\302\24035 +++++\n" + "> \302\240drivers/nvme/host/thermal.c | 311\n" "> ++++++++++++++++++++++++++++++++++++++++++++\n" - "> ?include/linux/nvme.h????????|???5 +\n" - "> ?6 files changed, 358 insertions(+)\n" - "> ?create mode 100644 drivers/nvme/host/thermal.c\n" + "> \302\240include/linux/nvme.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\240\302\2405 +\n" + "> \302\2406 files changed, 358 insertions(+)\n" + "> \302\240create mode 100644 drivers/nvme/host/thermal.c\n" "> \n" "> diff --git a/drivers/nvme/host/Kconfig b/drivers/nvme/host/Kconfig\n" "> index ec43ac9..90429f8 100644\n" "> --- a/drivers/nvme/host/Kconfig\n" "> +++ b/drivers/nvme/host/Kconfig\n" "> @@ -1,6 +1,7 @@\n" - "> ?# SPDX-License-Identifier: GPL-2.0-only\n" - "> ?config NVME_CORE\n" - "> ?\ttristate\n" + "> \302\240# SPDX-License-Identifier: GPL-2.0-only\n" + "> \302\240config NVME_CORE\n" + "> \302\240\ttristate\n" "> +\tselect THERMAL_WRITABLE_TRIPS if THERMAL\n" - "> ?\n" - "> ?config BLK_DEV_NVME\n" - "> ?\ttristate \"NVM Express block device\"\n" + "> \302\240\n" + "> \302\240config BLK_DEV_NVME\n" + "> \302\240\ttristate \"NVM Express block device\"\n" "> diff --git a/drivers/nvme/host/Makefile b/drivers/nvme/host/Makefile\n" "> index 8a4b671..6018668 100644\n" "> --- a/drivers/nvme/host/Makefile\n" "> +++ b/drivers/nvme/host/Makefile\n" "> @@ -14,6 +14,7 @@ nvme-core-$(CONFIG_TRACING)\t\t+=\n" "> trace.o\n" - "> ?nvme-core-$(CONFIG_NVME_MULTIPATH)\t+= multipath.o\n" - "> ?nvme-core-$(CONFIG_NVM)\t\t\t+= lightnvm.o\n" - "> ?nvme-core-$(CONFIG_FAULT_INJECTION_DEBUG_FS)\t+=\n" + "> \302\240nvme-core-$(CONFIG_NVME_MULTIPATH)\t+= multipath.o\n" + "> \302\240nvme-core-$(CONFIG_NVM)\t\t\t+= lightnvm.o\n" + "> \302\240nvme-core-$(CONFIG_FAULT_INJECTION_DEBUG_FS)\t+=\n" "> fault_inject.o\n" "> +nvme-core-$(CONFIG_THERMAL)\t\t+= thermal.o\n" - "> ?\n" - "> ?nvme-y\t\t\t\t\t+= pci.o\n" - "> ?\n" + "> \302\240\n" + "> \302\240nvme-y\t\t\t\t\t+= pci.o\n" + "> \302\240\n" "> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c\n" "> index 7e3c786..4be339b 100644\n" "> --- a/drivers/nvme/host/core.c\n" "> +++ b/drivers/nvme/host/core.c\n" "> @@ -2696,6 +2696,10 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)\n" - "> ?\tif (ret < 0)\n" - "> ?\t\treturn ret;\n" - "> ?\n" + "> \302\240\tif (ret < 0)\n" + "> \302\240\t\treturn ret;\n" + "> \302\240\n" "> +\tret = nvme_thermal_zones_register(ctrl);\n" "> +\tif (ret)\n" "> +\t\treturn ret;\n" "> +\n" - "> ?\tctrl->identified = true;\n" - "> ?\n" - "> ?\treturn 0;\n" + "> \302\240\tctrl->identified = true;\n" + "> \302\240\n" + "> \302\240\treturn 0;\n" "> @@ -3699,6 +3703,7 @@ void nvme_stop_ctrl(struct nvme_ctrl *ctrl)\n" - "> ?{\n" - "> ?\tnvme_mpath_stop(ctrl);\n" - "> ?\tnvme_stop_keep_alive(ctrl);\n" + "> \302\240{\n" + "> \302\240\tnvme_mpath_stop(ctrl);\n" + "> \302\240\tnvme_stop_keep_alive(ctrl);\n" "> +\tnvme_thermal_zones_unregister(ctrl);\n" - "> ?\tflush_work(&ctrl->async_event_work);\n" - "> ?\tcancel_work_sync(&ctrl->fw_act_work);\n" - "> ?}\n" + "> \302\240\tflush_work(&ctrl->async_event_work);\n" + "> \302\240\tcancel_work_sync(&ctrl->fw_act_work);\n" + "> \302\240}\n" "> diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h\n" "> index 038b893..a9c63ea 100644\n" "> --- a/drivers/nvme/host/nvme.h\n" "> +++ b/drivers/nvme/host/nvme.h\n" "> @@ -15,6 +15,7 @@\n" - "> ?#include <linux/sed-opal.h>\n" - "> ?#include <linux/fault-inject.h>\n" - "> ?#include <linux/rcupdate.h>\n" + "> \302\240#include <linux/sed-opal.h>\n" + "> \302\240#include <linux/fault-inject.h>\n" + "> \302\240#include <linux/rcupdate.h>\n" "> +#include <linux/thermal.h>\n" - "> ?\n" - "> ?extern unsigned int nvme_io_timeout;\n" - "> ?#define NVME_IO_TIMEOUT\t(nvme_io_timeout * HZ)\n" + "> \302\240\n" + "> \302\240extern unsigned int nvme_io_timeout;\n" + "> \302\240#define NVME_IO_TIMEOUT\t(nvme_io_timeout * HZ)\n" "> @@ -146,6 +147,13 @@ enum nvme_ctrl_state {\n" - "> ?\tNVME_CTRL_DEAD,\n" - "> ?};\n" - "> ?\n" + "> \302\240\tNVME_CTRL_DEAD,\n" + "> \302\240};\n" + "> \302\240\n" "> +struct nvme_tz {\n" "> +\tstruct thermal_zone_params params;\n" "> +\tstruct thermal_zone_device *dev;\n" @@ -152,30 +164,30 @@ "> +\tunsigned int sensor;\n" "> +};\n" "> +\n" - "> ?struct nvme_ctrl {\n" - "> ?\tbool comp_seen;\n" - "> ?\tenum nvme_ctrl_state state;\n" + "> \302\240struct nvme_ctrl {\n" + "> \302\240\tbool comp_seen;\n" + "> \302\240\tenum nvme_ctrl_state state;\n" "> @@ -247,6 +255,15 @@ struct nvme_ctrl {\n" - "> ?\n" - "> ?\tstruct page *discard_page;\n" - "> ?\tunsigned long discard_page_busy;\n" + "> \302\240\n" + "> \302\240\tstruct page *discard_page;\n" + "> \302\240\tunsigned long discard_page_busy;\n" "> +\n" "> +#ifdef CONFIG_THERMAL\n" "> +\t/*\n" - "> +\t?* tz[0]: composite temperature\n" - "> +\t?* tz[1-8]: temperature sensor 1 through 8\n" - "> +\t?*/\n" + "> +\t\302\240* tz[0]: composite temperature\n" + "> +\t\302\240* tz[1-8]: temperature sensor 1 through 8\n" + "> +\t\302\240*/\n" "> +\tstruct nvme_tz tz[9];\n" "> +\tDECLARE_BITMAP(tz_enabled, 9);\n" "> +#endif\n" - "> ?};\n" - "> ?\n" - "> ?enum nvme_iopolicy {\n" + "> \302\240};\n" + "> \302\240\n" + "> \302\240enum nvme_iopolicy {\n" "> @@ -584,4 +601,22 @@ static inline struct nvme_ns\n" "> *nvme_get_ns_from_dev(struct device *dev)\n" - "> ?\treturn dev_to_disk(dev)->private_data;\n" - "> ?}\n" - "> ?\n" + "> \302\240\treturn dev_to_disk(dev)->private_data;\n" + "> \302\240}\n" + "> \302\240\n" "> +#ifdef CONFIG_THERMAL\n" "> +\n" "> +int nvme_thermal_zones_register(struct nvme_ctrl *ctrl);\n" @@ -196,7 +208,7 @@ "> +\n" "> +#endif /* CONFIG_THERMAL */\n" "> +\n" - "> ?#endif /* _NVME_H */\n" + "> \302\240#endif /* _NVME_H */\n" "> diff --git a/drivers/nvme/host/thermal.c\n" "> b/drivers/nvme/host/thermal.c\n" "> new file mode 100644\n" @@ -234,7 +246,7 @@ "> +\n" "> +\tret = nvme_get_log(ctrl, NVME_NSID_ALL, NVME_LOG_SMART, 0,\n" "> log,\n" - "> +\t\t\t???sizeof(*log), 0);\n" + "> +\t\t\t\302\240\302\240\302\240sizeof(*log), 0);\n" "> +\tif (ret) {\n" "> +\t\tret = ret > 0 ? -EINVAL : ret;\n" "> +\t\tgoto free_log;\n" @@ -278,7 +290,7 @@ "> +}\n" "> +\n" "> +static int nvme_tz_get_trip_type(struct thermal_zone_device *tzdev,\n" - "> +\t\t\t\t?int trip, enum thermal_trip_type\n" + "> +\t\t\t\t\302\240int trip, enum thermal_trip_type\n" "> *type)\n" "> +{\n" "> +\t*type = THERMAL_TRIP_ACTIVE;\n" @@ -287,7 +299,7 @@ "> +}\n" "> +\n" "> +static int nvme_get_over_temp_thresh(struct nvme_ctrl *ctrl,\n" - "> +\t\t\t\t?????unsigned int sensor, int *temp)\n" + "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240unsigned int sensor, int *temp)\n" "> +{\n" "> +\tunsigned int threshold = sensor <<\n" "> NVME_TEMP_THRESH_SELECT_SHIFT;\n" @@ -307,7 +319,7 @@ "> +}\n" "> +\n" "> +static int nvme_set_over_temp_thresh(struct nvme_ctrl *ctrl,\n" - "> +\t\t\t\t?????unsigned int sensor, int temp)\n" + "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240unsigned int sensor, int temp)\n" "> +{\n" "> +\tunsigned int threshold = sensor <<\n" "> NVME_TEMP_THRESH_SELECT_SHIFT;\n" @@ -329,7 +341,7 @@ "> +}\n" "> +\n" "> +static int nvme_tz_get_trip_temp(struct thermal_zone_device *tzdev,\n" - "> +\t\t\t\t?int trip, int *temp)\n" + "> +\t\t\t\t\302\240int trip, int *temp)\n" "> +{\n" "> +\tstruct nvme_tz *tz = tzdev->devdata;\n" "> +\tunsigned int sensor = tz->sensor;\n" @@ -357,7 +369,7 @@ "> +}\n" "> +\n" "> +static int nvme_tz_set_trip_temp(struct thermal_zone_device *tzdev,\n" - "> +\t\t\t\t?int trip, int temp)\n" + "> +\t\t\t\t\302\240int trip, int temp)\n" "> +{\n" "> +\treturn nvme_tz_of_set_trip_temp(tzdev->devdata, trip, temp);\n" "> +}\n" @@ -380,7 +392,7 @@ "> +};\n" "> +\n" "> +static int nvme_thermal_zone_register(struct nvme_ctrl *ctrl,\n" - "> +\t\t\t\t??????unsigned int sensor)\n" + "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240unsigned int sensor)\n" "> +{\n" "> +\tstruct thermal_zone_device *tzdev;\n" "> +\tstruct nvme_tz *tz = &ctrl->tz[sensor];\n" @@ -394,7 +406,7 @@ "> +\n" "> +\ttzdev = thermal_zone_device_register(name, 1, 1, tz,\n" "> &nvme_tz_ops,\n" - "> +\t\t\t\t\t?????&tz->params, 0, 0);\n" + "> +\t\t\t\t\t\302\240\302\240\302\240\302\240\302\240&tz->params, 0, 0);\n" "> +\tif (IS_ERR(tzdev)) {\n" "> +\t\tdev_err(ctrl->device,\n" "> +\t\t\t\"Failed to register thermal zone device:\n" @@ -474,7 +486,7 @@ "> +\n" "> +\terr = nvme_get_log(ctrl, NVME_NSID_ALL, NVME_LOG_SMART, 0,\n" "> log,\n" - "> +\t\t\t???sizeof(*log), 0);\n" + "> +\t\t\t\302\240\302\240\302\240sizeof(*log), 0);\n" "> +\tif (err) {\n" "> +\t\tdev_err(ctrl->device, \"Failed to get SMART log:\n" "> %d\\n\", err);\n" @@ -494,11 +506,11 @@ "> +\t\t\ttemp = get_unaligned_le16(log->temperature);\n" "> +\n" "> +\t\t/*\n" - "> +\t\t?* All implemented temperature sensors report a non-\n" + "> +\t\t\302\240* All implemented temperature sensors report a non-\n" "> zero value\n" - "> +\t\t?* in temperature sensor fields in the smart log\n" + "> +\t\t\302\240* in temperature sensor fields in the smart log\n" "> page.\n" - "> +\t\t?*/\n" + "> +\t\t\302\240*/\n" "> +\t\tif (!temp)\n" "> +\t\t\tcontinue;\n" "> +\n" @@ -554,16 +566,16 @@ "> --- a/include/linux/nvme.h\n" "> +++ b/include/linux/nvme.h\n" "> @@ -749,6 +749,11 @@ struct nvme_write_zeroes_cmd {\n" - "> ?\n" - "> ?/* Features */\n" - "> ?\n" + "> \302\240\n" + "> \302\240/* Features */\n" + "> \302\240\n" "> +enum {\n" "> +\tNVME_TEMP_THRESH_MASK\t\t= 0xffff,\n" "> +\tNVME_TEMP_THRESH_SELECT_SHIFT\t= 16,\n" "> +};\n" "> +\n" - "> ?struct nvme_feat_auto_pst {\n" - "> ?\t__le64 entries[32];\n" - > ?}; + "> \302\240struct nvme_feat_auto_pst {\n" + "> \302\240\t__le64 entries[32];\n" + "> \302\240};" -540f477696f198af12aa41f501e3ab23f332fbbe7ea26828843592f9236a6713 +82297eb7dd5df4c53c4ff3a62abc94c44ecbe68f59321ba4f45a024b5fafceb7
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.