CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: Alison Schofield <alison.schofi...@intel.com>
CC: Vishal Verma <vishal.l.ve...@intel.com>
CC: Ira Weiny <ira.we...@intel.com>
CC: Ben Widawsky <ben.widaw...@intel.com>
CC: Dan Williams <dan.j.willi...@intel.com>
TO: Dan Williams <dan.j.willi...@intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git preview
head:   1985cf58850562e4b960e19d46f0d8f19d6c7cbd
commit: 6736e0edd378fb84365af650a50859e95ea1a29a [46/51] cxl/region: Program 
target lists
:::::: branch date: 10 days ago
:::::: commit date: 10 days ago
config: i386-randconfig-m021-20220704 
(https://download.01.org/0day-ci/archive/20220705/202207050524.7pnw87fk-...@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/cxl/core/region.c:807 cxl_port_setup_targets() error: uninitialized 
symbol 'peig'.
drivers/cxl/core/region.c:807 cxl_port_setup_targets() error: uninitialized 
symbol 'peiw'.
drivers/cxl/core/region.c:807 cxl_port_setup_targets() error: uninitialized 
symbol 'eiw'.

Old smatch warnings:
drivers/cxl/core/region.c:281 alloc_hpa() error: uninitialized symbol 'res'.
drivers/cxl/core/region.c:811 cxl_port_setup_targets() error: uninitialized 
symbol 'peiw'.
drivers/cxl/core/region.c:812 cxl_port_setup_targets() error: uninitialized 
symbol 'peig'.
drivers/cxl/core/region.c:1388 create_pmem_region_store() warn: unsigned 'rc' 
is never less than zero.

vim +/peig +807 drivers/cxl/core/region.c

6736e0edd378fb8 Dan Williams 2022-06-06  738  
6736e0edd378fb8 Dan Williams 2022-06-06  739  static int 
cxl_port_setup_targets(struct cxl_port *port,
6736e0edd378fb8 Dan Williams 2022-06-06  740                              
struct cxl_region *cxlr,
6736e0edd378fb8 Dan Williams 2022-06-06  741                              
struct cxl_endpoint_decoder *cxled)
6736e0edd378fb8 Dan Williams 2022-06-06  742  {
6736e0edd378fb8 Dan Williams 2022-06-06  743    struct cxl_root_decoder *cxlrd 
= to_cxl_root_decoder(cxlr->dev.parent);
6736e0edd378fb8 Dan Williams 2022-06-06  744    int parent_iw, parent_ig, ig, 
iw, rc, inc = 0, pos = cxled->pos;
6736e0edd378fb8 Dan Williams 2022-06-06  745    struct cxl_port *parent_port = 
to_cxl_port(port->dev.parent);
6736e0edd378fb8 Dan Williams 2022-06-06  746    struct cxl_region_ref *cxl_rr = 
cxl_rr_load(port, cxlr);
6736e0edd378fb8 Dan Williams 2022-06-06  747    struct cxl_memdev *cxlmd = 
cxled_to_memdev(cxled);
6736e0edd378fb8 Dan Williams 2022-06-06  748    struct cxl_ep *ep = 
cxl_ep_load(port, cxlmd);
6736e0edd378fb8 Dan Williams 2022-06-06  749    struct cxl_region_params *p = 
&cxlr->params;
6736e0edd378fb8 Dan Williams 2022-06-06  750    struct cxl_decoder *cxld = 
cxl_rr->decoder;
6736e0edd378fb8 Dan Williams 2022-06-06  751    struct cxl_switch_decoder 
*cxlsd;
6736e0edd378fb8 Dan Williams 2022-06-06  752    u16 eig, peig;
6736e0edd378fb8 Dan Williams 2022-06-06  753    u8 eiw, peiw;
6736e0edd378fb8 Dan Williams 2022-06-06  754  
6736e0edd378fb8 Dan Williams 2022-06-06  755    /*
6736e0edd378fb8 Dan Williams 2022-06-06  756     * While root level decoders 
support x3, x6, x12, switch level
6736e0edd378fb8 Dan Williams 2022-06-06  757     * decoders only support powers 
of 2 up to x16.
6736e0edd378fb8 Dan Williams 2022-06-06  758     */
6736e0edd378fb8 Dan Williams 2022-06-06  759    if 
(!is_power_of_2(cxl_rr->nr_targets)) {
6736e0edd378fb8 Dan Williams 2022-06-06  760            dev_dbg(&cxlr->dev, 
"%s:%s: invalid target count %d\n",
6736e0edd378fb8 Dan Williams 2022-06-06  761                    
dev_name(port->uport), dev_name(&port->dev),
6736e0edd378fb8 Dan Williams 2022-06-06  762                    
cxl_rr->nr_targets);
6736e0edd378fb8 Dan Williams 2022-06-06  763            return -EINVAL;
6736e0edd378fb8 Dan Williams 2022-06-06  764    }
6736e0edd378fb8 Dan Williams 2022-06-06  765  
6736e0edd378fb8 Dan Williams 2022-06-06  766    cxlsd = 
to_cxl_switch_decoder(&cxld->dev);
6736e0edd378fb8 Dan Williams 2022-06-06  767    if (cxl_rr->nr_targets_set) {
6736e0edd378fb8 Dan Williams 2022-06-06  768            int i, distance;
6736e0edd378fb8 Dan Williams 2022-06-06  769  
6736e0edd378fb8 Dan Williams 2022-06-06  770            distance = 
p->nr_targets / cxl_rr->nr_targets;
6736e0edd378fb8 Dan Williams 2022-06-06  771            for (i = 0; i < 
cxl_rr->nr_targets_set; i++)
6736e0edd378fb8 Dan Williams 2022-06-06  772                    if (ep->dport 
== cxlsd->target[i]) {
6736e0edd378fb8 Dan Williams 2022-06-06  773                            rc = 
check_last_peer(cxled, ep, cxl_rr,
6736e0edd378fb8 Dan Williams 2022-06-06  774                                    
             distance);
6736e0edd378fb8 Dan Williams 2022-06-06  775                            if (rc)
6736e0edd378fb8 Dan Williams 2022-06-06  776                                    
return rc;
6736e0edd378fb8 Dan Williams 2022-06-06  777                            goto 
out_target_set;
6736e0edd378fb8 Dan Williams 2022-06-06  778                    }
6736e0edd378fb8 Dan Williams 2022-06-06  779            goto add_target;
6736e0edd378fb8 Dan Williams 2022-06-06  780    }
6736e0edd378fb8 Dan Williams 2022-06-06  781  
6736e0edd378fb8 Dan Williams 2022-06-06  782    if (is_cxl_root(parent_port)) {
6736e0edd378fb8 Dan Williams 2022-06-06  783            parent_ig = 
cxlrd->cxlsd.cxld.interleave_granularity;
6736e0edd378fb8 Dan Williams 2022-06-06  784            parent_iw = 
cxlrd->cxlsd.cxld.interleave_ways;
6736e0edd378fb8 Dan Williams 2022-06-06  785            /*
6736e0edd378fb8 Dan Williams 2022-06-06  786             * For purposes of 
address bit routing, use power-of-2 math for
6736e0edd378fb8 Dan Williams 2022-06-06  787             * switch ports.
6736e0edd378fb8 Dan Williams 2022-06-06  788             */
6736e0edd378fb8 Dan Williams 2022-06-06  789            if 
(!is_power_of_2(parent_iw))
6736e0edd378fb8 Dan Williams 2022-06-06  790                    parent_iw /= 3;
6736e0edd378fb8 Dan Williams 2022-06-06  791    } else {
6736e0edd378fb8 Dan Williams 2022-06-06  792            struct cxl_region_ref 
*parent_rr;
6736e0edd378fb8 Dan Williams 2022-06-06  793            struct cxl_decoder 
*parent_cxld;
6736e0edd378fb8 Dan Williams 2022-06-06  794  
6736e0edd378fb8 Dan Williams 2022-06-06  795            parent_rr = 
cxl_rr_load(parent_port, cxlr);
6736e0edd378fb8 Dan Williams 2022-06-06  796            parent_cxld = 
parent_rr->decoder;
6736e0edd378fb8 Dan Williams 2022-06-06  797            parent_ig = 
parent_cxld->interleave_granularity;
6736e0edd378fb8 Dan Williams 2022-06-06  798            parent_iw = 
parent_cxld->interleave_ways;
6736e0edd378fb8 Dan Williams 2022-06-06  799    }
6736e0edd378fb8 Dan Williams 2022-06-06  800  
6736e0edd378fb8 Dan Williams 2022-06-06  801    granularity_to_cxl(parent_ig, 
&peig);
6736e0edd378fb8 Dan Williams 2022-06-06  802    ways_to_cxl(parent_iw, &peiw);
6736e0edd378fb8 Dan Williams 2022-06-06  803  
6736e0edd378fb8 Dan Williams 2022-06-06  804    iw = cxl_rr->nr_targets;
6736e0edd378fb8 Dan Williams 2022-06-06  805    ways_to_cxl(iw, &eiw);
6736e0edd378fb8 Dan Williams 2022-06-06  806    if (cxl_rr->nr_targets > 1) {
6736e0edd378fb8 Dan Williams 2022-06-06 @807            u32 address_bit = 
max(peig + peiw, eiw + peig);
6736e0edd378fb8 Dan Williams 2022-06-06  808  
6736e0edd378fb8 Dan Williams 2022-06-06  809            eig = address_bit - eiw 
+ 1;
6736e0edd378fb8 Dan Williams 2022-06-06  810    } else {
6736e0edd378fb8 Dan Williams 2022-06-06  811            eiw = peiw;
6736e0edd378fb8 Dan Williams 2022-06-06  812            eig = peig;
6736e0edd378fb8 Dan Williams 2022-06-06  813    }
6736e0edd378fb8 Dan Williams 2022-06-06  814  
6736e0edd378fb8 Dan Williams 2022-06-06  815    rc = cxl_to_granularity(eig, 
&ig);
6736e0edd378fb8 Dan Williams 2022-06-06  816    if (rc) {
6736e0edd378fb8 Dan Williams 2022-06-06  817            dev_dbg(&cxlr->dev, 
"%s:%s: invalid interleave: %d\n",
6736e0edd378fb8 Dan Williams 2022-06-06  818                    
dev_name(port->uport), dev_name(&port->dev),
6736e0edd378fb8 Dan Williams 2022-06-06  819                    256 << eig);
6736e0edd378fb8 Dan Williams 2022-06-06  820            return rc;
6736e0edd378fb8 Dan Williams 2022-06-06  821    }
6736e0edd378fb8 Dan Williams 2022-06-06  822  
6736e0edd378fb8 Dan Williams 2022-06-06  823    cxld->interleave_ways = iw;
6736e0edd378fb8 Dan Williams 2022-06-06  824    cxld->interleave_granularity = 
ig;
6736e0edd378fb8 Dan Williams 2022-06-06  825    dev_dbg(&cxlr->dev, "%s:%s iw: 
%d ig: %d\n", dev_name(port->uport),
6736e0edd378fb8 Dan Williams 2022-06-06  826            dev_name(&port->dev), 
iw, ig);
6736e0edd378fb8 Dan Williams 2022-06-06  827  add_target:
6736e0edd378fb8 Dan Williams 2022-06-06  828    if (cxl_rr->nr_targets_set == 
cxl_rr->nr_targets) {
6736e0edd378fb8 Dan Williams 2022-06-06  829            dev_dbg(&cxlr->dev,
6736e0edd378fb8 Dan Williams 2022-06-06  830                    "%s:%s: targets 
full trying to add %s:%s at %d\n",
6736e0edd378fb8 Dan Williams 2022-06-06  831                    
dev_name(port->uport), dev_name(&port->dev),
6736e0edd378fb8 Dan Williams 2022-06-06  832                    
dev_name(&cxlmd->dev), dev_name(&cxled->cxld.dev), pos);
6736e0edd378fb8 Dan Williams 2022-06-06  833            return -ENXIO;
6736e0edd378fb8 Dan Williams 2022-06-06  834    }
6736e0edd378fb8 Dan Williams 2022-06-06  835    
cxlsd->target[cxl_rr->nr_targets_set] = ep->dport;
6736e0edd378fb8 Dan Williams 2022-06-06  836    inc = 1;
6736e0edd378fb8 Dan Williams 2022-06-06  837  out_target_set:
6736e0edd378fb8 Dan Williams 2022-06-06  838    cxl_rr->nr_targets_set += inc;
6736e0edd378fb8 Dan Williams 2022-06-06  839    dev_dbg(&cxlr->dev, "%s:%s 
target[%d] = %s for %s:%s @ %d\n",
6736e0edd378fb8 Dan Williams 2022-06-06  840            dev_name(port->uport), 
dev_name(&port->dev),
6736e0edd378fb8 Dan Williams 2022-06-06  841            cxl_rr->nr_targets_set 
- 1, dev_name(ep->dport->dport),
6736e0edd378fb8 Dan Williams 2022-06-06  842            dev_name(&cxlmd->dev), 
dev_name(&cxled->cxld.dev), pos);
6736e0edd378fb8 Dan Williams 2022-06-06  843  
6736e0edd378fb8 Dan Williams 2022-06-06  844    return 0;
6736e0edd378fb8 Dan Williams 2022-06-06  845  }
6736e0edd378fb8 Dan Williams 2022-06-06  846  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to