Hi Stuart, I love your patch! Perhaps something to improve: [auto build test WARNING on pci/next] [also build test WARNING on linus/master v5.10-rc3 next-20201109] [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/Stuart-Hayes/Expose-PCIe-SSD-Status-LED-Management-DSM-in-sysfs/20201109-100709 base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next config: arm64-randconfig-r024-20201109 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 09ec07827b1128504457a93dee80b2ceee1af600) 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 # install arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # https://github.com/0day-ci/linux/commit/71fa2ed2b9ac8be92eb60fb757e0333dd6788d2f git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Stuart-Hayes/Expose-PCIe-SSD-Status-LED-Management-DSM-in-sysfs/20201109-100709 git checkout 71fa2ed2b9ac8be92eb60fb757e0333dd6788d2f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> drivers/pci/pci-ssdleds.c:126:48: warning: use of logical '||' with constant operand [-Wconstant-logical-operand] 1 << SSDLEDS_GET_SUPPORTED_STATES_DSM || ^ drivers/pci/pci-ssdleds.c:126:48: note: use '|' for a bitwise operation 1 << SSDLEDS_GET_SUPPORTED_STATES_DSM || ^~ | drivers/pci/pci-ssdleds.c:127:37: warning: use of logical '||' with constant operand [-Wconstant-logical-operand] 1 << SSDLEDS_GET_STATE_DSM || ^ drivers/pci/pci-ssdleds.c:127:37: note: use '|' for a bitwise operation 1 << SSDLEDS_GET_STATE_DSM || ^~ | >> drivers/pci/pci-ssdleds.c:128:12: warning: converting the result of '<<' to a boolean always evaluates to true [-Wtautological-constant-compare] 1 << SSDLEDS_SET_STATE_DSM); ^ drivers/pci/pci-ssdleds.c:126:12: warning: converting the result of '<<' to a boolean always evaluates to true [-Wtautological-constant-compare] 1 << SSDLEDS_GET_SUPPORTED_STATES_DSM || ^ drivers/pci/pci-ssdleds.c:127:12: warning: converting the result of '<<' to a boolean always evaluates to true [-Wtautological-constant-compare] 1 << SSDLEDS_GET_STATE_DSM || ^ >> drivers/pci/pci-ssdleds.c:184:6: warning: no previous prototype for function 'pci_create_ssdleds_files' [-Wmissing-prototypes] void pci_create_ssdleds_files(struct pci_dev *pdev) ^ drivers/pci/pci-ssdleds.c:184:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void pci_create_ssdleds_files(struct pci_dev *pdev) ^ static >> drivers/pci/pci-ssdleds.c:191:6: warning: no previous prototype for function 'pci_remove_ssdleds_files' [-Wmissing-prototypes] void pci_remove_ssdleds_files(struct pci_dev *pdev) ^ drivers/pci/pci-ssdleds.c:191:1: note: declare 'static' if the function is not intended to be used outside of this translation unit void pci_remove_ssdleds_files(struct pci_dev *pdev) ^ static 7 warnings generated. vim +126 drivers/pci/pci-ssdleds.c 116 117 static bool device_has_dsm(struct device *dev) 118 { 119 acpi_handle handle; 120 121 handle = ACPI_HANDLE(dev); 122 if (!handle) 123 return false; 124 125 return !!acpi_check_dsm(handle, &pci_ssdleds_dsm_guid, 0x1, > 126 1 << SSDLEDS_GET_SUPPORTED_STATES_DSM || 127 1 << SSDLEDS_GET_STATE_DSM || > 128 1 << SSDLEDS_SET_STATE_DSM); 129 } 130 131 static ssize_t ssdleds_current_store(struct device *dev, 132 struct device_attribute *attr, 133 const char *buf, size_t count) 134 { 135 int ret; 136 137 ret = ssdleds_dsm_set(dev, buf, SSDLEDS_SET_STATE_DSM); 138 return (ret < 0) ? ret : count; 139 } 140 141 static ssize_t ssdleds_current_show(struct device *dev, 142 struct device_attribute *attr, char *buf) 143 { 144 return ssdleds_dsm_get(dev, buf, SSDLEDS_GET_STATE_DSM); 145 } 146 147 static ssize_t ssdleds_supported_show(struct device *dev, 148 struct device_attribute *attr, char *buf) 149 { 150 return ssdleds_dsm_get(dev, buf, SSDLEDS_GET_SUPPORTED_STATES_DSM); 151 } 152 153 static umode_t ssdleds_attr_visible(struct kobject *kobj, 154 struct attribute *attr, int n) 155 { 156 struct device *dev = kobj_to_dev(kobj); 157 umode_t mode = attr->mode; 158 159 return device_has_dsm(dev) ? mode : 0; 160 } 161 162 static struct device_attribute ssdleds_attr_current = { 163 .attr = {.name = "ssdleds_current_state", .mode = 0644}, 164 .show = ssdleds_current_show, 165 .store = ssdleds_current_store, 166 }; 167 168 static struct device_attribute ssdleds_attr_supported = { 169 .attr = {.name = "ssdleds_supported_states", .mode = 0444}, 170 .show = ssdleds_supported_show, 171 }; 172 173 static struct attribute *ssdleds_attributes[] = { 174 &ssdleds_attr_current.attr, 175 &ssdleds_attr_supported.attr, 176 NULL, 177 }; 178 179 static const struct attribute_group ssdleds_attr_group = { 180 .attrs = ssdleds_attributes, 181 .is_visible = ssdleds_attr_visible, 182 }; 183 > 184 void pci_create_ssdleds_files(struct pci_dev *pdev) 185 { 186 int ret; 187 188 ret = sysfs_create_group(&pdev->dev.kobj, &ssdleds_attr_group); 189 } 190 > 191 void pci_remove_ssdleds_files(struct pci_dev *pdev) --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip