Message ID | 20210912131919.12962-3-avri.altman@wdc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add temperature notification support | expand |
Hi Avri, I love your patch! Yet something to improve: [auto build test ERROR on mkp-scsi/for-next] [also build test ERROR on scsi/for-next next-20210910] [cannot apply to target/for-next v5.14] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Avri-Altman/Add-temperature-notification-support/20210912-212110 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: riscv-randconfig-r042-20210912 (attached as .config) compiler: riscv64-linux-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/2aa54f753f44e119f4629ae015fedb3e12cebac6 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Avri-Altman/Add-temperature-notification-support/20210912-212110 git checkout 2aa54f753f44e119f4629ae015fedb3e12cebac6 # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=riscv SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): In file included from drivers/scsi/ufs/ufs-debugfs.c:7: >> drivers/scsi/ufs/ufshcd.h:1070:6: warning: no previous prototype for 'ufs_hwmon_notify_event' [-Wmissing-prototypes] 1070 | void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} | ^~~~~~~~~~~~~~~~~~~~~~ -- riscv64-linux-ld: drivers/scsi/ufs/ufs-sysfs.o: in function `ufs_hwmon_notify_event': >> ufs-sysfs.c:(.text+0xca00): multiple definition of `ufs_hwmon_notify_event'; drivers/scsi/ufs/ufshcd.o:ufshcd.c:(.text+0xb8c0): first defined here riscv64-linux-ld: drivers/scsi/ufs/ufs-debugfs.o: in function `ufs_hwmon_notify_event': ufs-debugfs.c:(.text+0x440): multiple definition of `ufs_hwmon_notify_event'; drivers/scsi/ufs/ufshcd.o:ufshcd.c:(.text+0xb8c0): first defined here riscv64-linux-ld: drivers/scsi/ufs/ufshcd-crypto.o: in function `ufs_hwmon_notify_event': ufshcd-crypto.c:(.text+0x580): multiple definition of `ufs_hwmon_notify_event'; drivers/scsi/ufs/ufshcd.o:ufshcd.c:(.text+0xb8c0): first defined here riscv64-linux-ld: drivers/scsi/ufs/ufshpb.o: in function `ufs_hwmon_notify_event': ufshpb.c:(.text+0x5240): multiple definition of `ufs_hwmon_notify_event'; drivers/scsi/ufs/ufshcd.o:ufshcd.c:(.text+0xb8c0): first defined here --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On 9/12/21 6:19 AM, Avri Altman wrote: > The device may notify the host of an extreme temperature by using the > exception event mechanism. The exception can be raised when the device’s > Tcase temperature is either too high or too low. > > It is essentially up to the platform to decide what further actions need > to be taken. leave a placeholder for a designated vop for that. > > Signed-off-by: Avri Altman <avri.altman@wdc.com> > --- > drivers/scsi/ufs/ufs-hwmon.c | 14 ++++++++++++++ > drivers/scsi/ufs/ufs.h | 2 ++ > drivers/scsi/ufs/ufshcd.c | 21 +++++++++++++++++++++ > drivers/scsi/ufs/ufshcd.h | 2 ++ > 4 files changed, 39 insertions(+) > > diff --git a/drivers/scsi/ufs/ufs-hwmon.c b/drivers/scsi/ufs/ufs-hwmon.c > index a50e83f645f4..b466b4649c21 100644 > --- a/drivers/scsi/ufs/ufs-hwmon.c > +++ b/drivers/scsi/ufs/ufs-hwmon.c > @@ -177,3 +177,17 @@ void ufs_hwmon_remove(struct ufs_hba *hba) > hba->hwmon_device = NULL; > kfree(data); > } > + > +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) > +{ > + if (!hba->hwmon_device) > + return; > + > + if (ee_mask & MASK_EE_TOO_HIGH_TEMP) > + hwmon_notify_event(hba->hwmon_device, hwmon_temp, > + hwmon_temp_max_alarm, 0); > + > + if (ee_mask & MASK_EE_TOO_LOW_TEMP) > + hwmon_notify_event(hba->hwmon_device, hwmon_temp, > + hwmon_temp_min_alarm, 0); > +} > diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h > index 171b27be7b1d..d9bc048c2a71 100644 > --- a/drivers/scsi/ufs/ufs.h > +++ b/drivers/scsi/ufs/ufs.h > @@ -377,6 +377,8 @@ enum { > MASK_EE_PERFORMANCE_THROTTLING = BIT(6), > }; > > +#define MASK_EE_URGENT_TEMP (MASK_EE_TOO_HIGH_TEMP | MASK_EE_TOO_LOW_TEMP) > + > /* Background operation status */ > enum bkops_status { > BKOPS_STATUS_NO_OP = 0x0, > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 90c2e9677435..3f4c7124b74b 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -5642,6 +5642,24 @@ static void ufshcd_bkops_exception_event_handler(struct ufs_hba *hba) > __func__, err); > } > > +static void ufshcd_temp_exception_event_handler(struct ufs_hba *hba, u16 status) > +{ > + u32 value; > + > + if (ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR, > + QUERY_ATTR_IDN_CASE_ROUGH_TEMP, 0, 0, &value)) > + return; > + > + dev_info(hba->dev, "exception Tcase %d\n", value - 80); > + > + ufs_hwmon_notify_event(hba, status & MASK_EE_URGENT_TEMP); > + > + /* > + * A placeholder for the platform vendors to add whatever additional > + * steps required > + */ > +} > + > static int __ufshcd_wb_toggle(struct ufs_hba *hba, bool set, enum flag_idn idn) > { > u8 index; > @@ -5821,6 +5839,9 @@ static void ufshcd_exception_event_handler(struct work_struct *work) > if (status & hba->ee_drv_mask & MASK_EE_URGENT_BKOPS) > ufshcd_bkops_exception_event_handler(hba); > > + if (status & hba->ee_drv_mask & MASK_EE_URGENT_TEMP) > + ufshcd_temp_exception_event_handler(hba, status); > + > ufs_debugfs_exception_event(hba, status); > out: > ufshcd_scsi_unblock_requests(hba); > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h > index 798a408d71e5..e6abce9a8b00 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/drivers/scsi/ufs/ufshcd.h > @@ -1063,9 +1063,11 @@ static inline u8 ufshcd_wb_get_query_index(struct ufs_hba *hba) > #ifdef CONFIG_SCSI_UFS_HWMON > void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask); > void ufs_hwmon_remove(struct ufs_hba *hba); > +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask); > #else > static inline void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask) {} > static inline void ufs_hwmon_remove(struct ufs_hba *hba) {} > +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} static > #endif > > #ifdef CONFIG_PM >
Hi Avri, I love your patch! Yet something to improve: [auto build test ERROR on mkp-scsi/for-next] [also build test ERROR on scsi/for-next next-20210910] [cannot apply to v5.14] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Avri-Altman/Add-temperature-notification-support/20210912-212110 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: x86_64-randconfig-a001-20210912 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 261cbe98c38f8c1ee1a482fe76511110e790f58a) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/2aa54f753f44e119f4629ae015fedb3e12cebac6 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Avri-Altman/Add-temperature-notification-support/20210912-212110 git checkout 2aa54f753f44e119f4629ae015fedb3e12cebac6 # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/scsi/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): In file included from drivers/scsi/ufs/ufshcd.c:22: >> drivers/scsi/ufs/ufshcd.h:1070:6: warning: no previous prototype for function 'ufs_hwmon_notify_event' [-Wmissing-prototypes] void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} ^ drivers/scsi/ufs/ufshcd.h:1070:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} ^ static 1 warning generated. -- >> ld.lld: error: duplicate symbol: ufs_hwmon_notify_event >>> defined at ufshcd.h:1070 (drivers/scsi/ufs/ufshcd.h:1070) >>> drivers/scsi/ufs/ufshcd.o:(ufs_hwmon_notify_event) >>> defined at ufshcd.h:1070 (drivers/scsi/ufs/ufshcd.h:1070) >>> drivers/scsi/ufs/ufs-sysfs.o:(.text+0x0) -- >> ld.lld: error: duplicate symbol: ufs_hwmon_notify_event >>> defined at ufshcd.h:1070 (drivers/scsi/ufs/ufshcd.h:1070) >>> drivers/scsi/ufs/ufshcd.o:(ufs_hwmon_notify_event) >>> defined at ufshcd.h:1070 (drivers/scsi/ufs/ufshcd.h:1070) >>> drivers/scsi/ufs/ufs-debugfs.o:(.text+0x0) --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Avri, I love your patch! Yet something to improve: [auto build test ERROR on mkp-scsi/for-next] [also build test ERROR on scsi/for-next next-20210910] [cannot apply to v5.14] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Avri-Altman/Add-temperature-notification-support/20210912-212110 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: x86_64-kexec (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/2aa54f753f44e119f4629ae015fedb3e12cebac6 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Avri-Altman/Add-temperature-notification-support/20210912-212110 git checkout 2aa54f753f44e119f4629ae015fedb3e12cebac6 # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): ld: drivers/scsi/ufs/ufs-sysfs.o: in function `ufs_hwmon_notify_event': >> drivers/scsi/ufs/ufshcd.h:1070: multiple definition of `ufs_hwmon_notify_event'; drivers/scsi/ufs/ufshcd.o:drivers/scsi/ufs/ufshcd.h:1070: first defined here ld: drivers/scsi/ufs/ufs-debugfs.o: in function `ufs_hwmon_notify_event': >> drivers/scsi/ufs/ufshcd.h:1070: multiple definition of `ufs_hwmon_notify_event'; drivers/scsi/ufs/ufshcd.o:drivers/scsi/ufs/ufshcd.h:1070: first defined here vim +1070 drivers/scsi/ufs/ufshcd.h 1062 1063 #ifdef CONFIG_SCSI_UFS_HWMON 1064 void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask); 1065 void ufs_hwmon_remove(struct ufs_hba *hba); 1066 void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask); 1067 #else 1068 static inline void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask) {} 1069 static inline void ufs_hwmon_remove(struct ufs_hba *hba) {} > 1070 void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} 1071 #endif 1072 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h > > index 798a408d71e5..e6abce9a8b00 100644 > > --- a/drivers/scsi/ufs/ufshcd.h > > +++ b/drivers/scsi/ufs/ufshcd.h > > @@ -1063,9 +1063,11 @@ static inline u8 > ufshcd_wb_get_query_index(struct ufs_hba *hba) > > #ifdef CONFIG_SCSI_UFS_HWMON > > void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask); > > void ufs_hwmon_remove(struct ufs_hba *hba); > > +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask); > > #else > > static inline void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask) {} > > static inline void ufs_hwmon_remove(struct ufs_hba *hba) {} > > +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} > > static Done. > > > #endif > > > > #ifdef CONFIG_PM > >
diff --git a/drivers/scsi/ufs/ufs-hwmon.c b/drivers/scsi/ufs/ufs-hwmon.c index a50e83f645f4..b466b4649c21 100644 --- a/drivers/scsi/ufs/ufs-hwmon.c +++ b/drivers/scsi/ufs/ufs-hwmon.c @@ -177,3 +177,17 @@ void ufs_hwmon_remove(struct ufs_hba *hba) hba->hwmon_device = NULL; kfree(data); } + +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) +{ + if (!hba->hwmon_device) + return; + + if (ee_mask & MASK_EE_TOO_HIGH_TEMP) + hwmon_notify_event(hba->hwmon_device, hwmon_temp, + hwmon_temp_max_alarm, 0); + + if (ee_mask & MASK_EE_TOO_LOW_TEMP) + hwmon_notify_event(hba->hwmon_device, hwmon_temp, + hwmon_temp_min_alarm, 0); +} diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index 171b27be7b1d..d9bc048c2a71 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -377,6 +377,8 @@ enum { MASK_EE_PERFORMANCE_THROTTLING = BIT(6), }; +#define MASK_EE_URGENT_TEMP (MASK_EE_TOO_HIGH_TEMP | MASK_EE_TOO_LOW_TEMP) + /* Background operation status */ enum bkops_status { BKOPS_STATUS_NO_OP = 0x0, diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 90c2e9677435..3f4c7124b74b 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -5642,6 +5642,24 @@ static void ufshcd_bkops_exception_event_handler(struct ufs_hba *hba) __func__, err); } +static void ufshcd_temp_exception_event_handler(struct ufs_hba *hba, u16 status) +{ + u32 value; + + if (ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR, + QUERY_ATTR_IDN_CASE_ROUGH_TEMP, 0, 0, &value)) + return; + + dev_info(hba->dev, "exception Tcase %d\n", value - 80); + + ufs_hwmon_notify_event(hba, status & MASK_EE_URGENT_TEMP); + + /* + * A placeholder for the platform vendors to add whatever additional + * steps required + */ +} + static int __ufshcd_wb_toggle(struct ufs_hba *hba, bool set, enum flag_idn idn) { u8 index; @@ -5821,6 +5839,9 @@ static void ufshcd_exception_event_handler(struct work_struct *work) if (status & hba->ee_drv_mask & MASK_EE_URGENT_BKOPS) ufshcd_bkops_exception_event_handler(hba); + if (status & hba->ee_drv_mask & MASK_EE_URGENT_TEMP) + ufshcd_temp_exception_event_handler(hba, status); + ufs_debugfs_exception_event(hba, status); out: ufshcd_scsi_unblock_requests(hba); diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 798a408d71e5..e6abce9a8b00 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -1063,9 +1063,11 @@ static inline u8 ufshcd_wb_get_query_index(struct ufs_hba *hba) #ifdef CONFIG_SCSI_UFS_HWMON void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask); void ufs_hwmon_remove(struct ufs_hba *hba); +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask); #else static inline void ufs_hwmon_probe(struct ufs_hba *hba, u8 mask) {} static inline void ufs_hwmon_remove(struct ufs_hba *hba) {} +void ufs_hwmon_notify_event(struct ufs_hba *hba, u8 ee_mask) {} #endif #ifdef CONFIG_PM
The device may notify the host of an extreme temperature by using the exception event mechanism. The exception can be raised when the device’s Tcase temperature is either too high or too low. It is essentially up to the platform to decide what further actions need to be taken. leave a placeholder for a designated vop for that. Signed-off-by: Avri Altman <avri.altman@wdc.com> --- drivers/scsi/ufs/ufs-hwmon.c | 14 ++++++++++++++ drivers/scsi/ufs/ufs.h | 2 ++ drivers/scsi/ufs/ufshcd.c | 21 +++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 2 ++ 4 files changed, 39 insertions(+)