Re: [PATCH] Expose PCIe SSD Status LED Management DSM in sysfs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux