Re: [PATCH 19/23] cxl/pci: Store component register base in cxlds

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

 



Hi Ben,

I love your patch! Perhaps something to improve:

[auto build test WARNING on 53989fad1286e652ea3655ae3367ba698da8d2ff]

url:    https://github.com/0day-ci/linux/commits/Ben-Widawsky/Add-drivers-for-CXL-ports-and-mem-devices/20211120-080513
base:   53989fad1286e652ea3655ae3367ba698da8d2ff
config: riscv-buildonly-randconfig-r001-20211119 (attached as .config)
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 riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/3f74c99d751a24a4c12ba76c23b68c2832f805e1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Ben-Widawsky/Add-drivers-for-CXL-ports-and-mem-devices/20211120-080513
        git checkout 3f74c99d751a24a4c12ba76c23b68c2832f805e1
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=riscv 

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/cxl/pci.c:469:7: warning: variable 'size' set but not used [-Wunused-but-set-variable]
                   u64 size;
                       ^
   drivers/cxl/pci.c:516:7: warning: variable 'size' set but not used [-Wunused-but-set-variable]
                   u64 size;
                       ^
>> drivers/cxl/pci.c:673:13: warning: variable 'cxlmd' is uninitialized when used here [-Wuninitialized]
                   dev_warn(&cxlmd->dev, "No component registers (%d)\n", rc);
                             ^~~~~
   include/linux/dev_printk.h:146:49: note: expanded from macro 'dev_warn'
           dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
                                                          ^~~
   include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
                   _p_func(dev, fmt, ##__VA_ARGS__);                       \
                           ^~~
   drivers/cxl/pci.c:630:26: note: initialize the variable 'cxlmd' to silence this warning
           struct cxl_memdev *cxlmd;
                                   ^
                                    = NULL
   3 warnings generated.


vim +/cxlmd +673 drivers/cxl/pci.c

   625	
   626	static int cxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
   627	{
   628		struct cxl_endpoint_dvsec_info *info;
   629		struct cxl_register_map map;
   630		struct cxl_memdev *cxlmd;
   631		struct cxl_dev_state *cxlds;
   632		int rc;
   633	
   634		/*
   635		 * Double check the anonymous union trickery in struct cxl_regs
   636		 * FIXME switch to struct_group()
   637		 */
   638		BUILD_BUG_ON(offsetof(struct cxl_regs, memdev) !=
   639			     offsetof(struct cxl_regs, device_regs.memdev));
   640	
   641		rc = pcim_enable_device(pdev);
   642		if (rc)
   643			return rc;
   644	
   645		cxlds = cxl_dev_state_create(&pdev->dev);
   646		if (IS_ERR(cxlds))
   647			return PTR_ERR(cxlds);
   648	
   649		cxlds->device_dvsec = pci_find_dvsec_capability(pdev,
   650								PCI_DVSEC_VENDOR_ID_CXL,
   651								CXL_DVSEC_PCIE_DEVICE);
   652		if (!cxlds->device_dvsec)
   653			dev_warn(&pdev->dev,
   654				 "Device DVSEC not present. Expect limited functionality.\n");
   655		else
   656			cxlds->wait_media_ready = wait_for_media_ready;
   657	
   658		rc = cxl_setup_regs(pdev, CXL_REGLOC_RBI_MEMDEV, &map);
   659		if (rc)
   660			return rc;
   661	
   662		rc = cxl_map_regs(cxlds, &map);
   663		if (rc)
   664			return rc;
   665	
   666		/*
   667		 * If the component registers can't be found, the cxl_pci driver may
   668		 * still be useful for management functions so don't return an error.
   669		 */
   670		cxlds->component_reg_phys = CXL_RESOURCE_NONE;
   671		rc = cxl_setup_regs(pdev, CXL_REGLOC_RBI_COMPONENT, &map);
   672		if (rc)
 > 673			dev_warn(&cxlmd->dev, "No component registers (%d)\n", rc);
   674		else
   675			cxlds->component_reg_phys = cxl_reg_block(pdev, &map);
   676	
   677		rc = cxl_pci_setup_mailbox(cxlds);
   678		if (rc)
   679			return rc;
   680	
   681		rc = cxl_enumerate_cmds(cxlds);
   682		if (rc)
   683			return rc;
   684	
   685		rc = cxl_dev_state_identify(cxlds);
   686		if (rc)
   687			return rc;
   688	
   689		rc = cxl_mem_create_range_info(cxlds);
   690		if (rc)
   691			return rc;
   692	
   693		info = dvsec_ranges(cxlds);
   694		if (IS_ERR(info))
   695			dev_err(&pdev->dev,
   696				"Failed to get DVSEC range information (%ld)\n",
   697				PTR_ERR(info));
   698		else
   699			cxlds->info = info;
   700	
   701		cxlmd = devm_cxl_add_memdev(cxlds);
   702		if (IS_ERR(cxlmd))
   703			return PTR_ERR(cxlmd);
   704	
   705		if (range_len(&cxlds->pmem_range) && IS_ENABLED(CONFIG_CXL_PMEM))
   706			rc = devm_cxl_add_nvdimm(&pdev->dev, cxlmd);
   707	
   708		return rc;
   709	}
   710	

---
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