drivers/interconnect/qcom/icc-rpmh.c:132:28: sparse: sparse: incorrect type in assignment (different base types)

From: kernel test robot
Date: Mon Jul 06 2020 - 08:43:25 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: dcb7fd82c75ee2d6e6f9d8cc71c52519ed52e258
commit: 976daac4a1c581e5d5fd64047519fd6fcde39738 interconnect: qcom: Consolidate interconnect RPMh support
date: 4 months ago
config: arm64-randconfig-s032-20200706 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-14-g8fce3d7a-dirty
git checkout 976daac4a1c581e5d5fd64047519fd6fcde39738
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

>> drivers/interconnect/qcom/icc-rpmh.c:132:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] unit @@ got unsigned int [usertype] @@
>> drivers/interconnect/qcom/icc-rpmh.c:132:28: sparse: expected restricted __le32 [usertype] unit
>> drivers/interconnect/qcom/icc-rpmh.c:132:28: sparse: got unsigned int [usertype]
>> drivers/interconnect/qcom/icc-rpmh.c:133:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] width @@ got unsigned short [usertype] @@
>> drivers/interconnect/qcom/icc-rpmh.c:133:29: sparse: expected restricted __le16 [usertype] width
>> drivers/interconnect/qcom/icc-rpmh.c:133:29: sparse: got unsigned short [usertype]
--
>> drivers/interconnect/qcom/bcm-voter.c:64:78: sparse: sparse: restricted __le16 degrades to integer
drivers/interconnect/qcom/bcm-voter.c:68:79: sparse: sparse: restricted __le16 degrades to integer
>> drivers/interconnect/qcom/bcm-voter.c:74:17: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int [usertype] __base @@ got restricted __le32 [usertype] unit @@
>> drivers/interconnect/qcom/bcm-voter.c:74:17: sparse: expected unsigned int [usertype] __base
>> drivers/interconnect/qcom/bcm-voter.c:74:17: sparse: got restricted __le32 [usertype] unit
drivers/interconnect/qcom/bcm-voter.c:78:17: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int [usertype] __base @@ got restricted __le32 [usertype] unit @@
drivers/interconnect/qcom/bcm-voter.c:78:17: sparse: expected unsigned int [usertype] __base
drivers/interconnect/qcom/bcm-voter.c:78:17: sparse: got restricted __le32 [usertype] unit
>> drivers/interconnect/qcom/bcm-voter.c:109:21: sparse: sparse: restricted __le32 degrades to integer
>> drivers/interconnect/qcom/bcm-voter.c:109:21: sparse: sparse: restricted __le32 degrades to integer

vim +132 drivers/interconnect/qcom/icc-rpmh.c

94
95 /**
96 * qcom_icc_bcm_init - populates bcm aux data and connect qnodes
97 * @bcm: bcm to be initialized
98 * @dev: associated provider device
99 *
100 * Return: 0 on success, or an error code otherwise
101 */
102 int qcom_icc_bcm_init(struct qcom_icc_bcm *bcm, struct device *dev)
103 {
104 struct qcom_icc_node *qn;
105 const struct bcm_db *data;
106 size_t data_count;
107 int i;
108
109 /* BCM is already initialised*/
110 if (bcm->addr)
111 return 0;
112
113 bcm->addr = cmd_db_read_addr(bcm->name);
114 if (!bcm->addr) {
115 dev_err(dev, "%s could not find RPMh address\n",
116 bcm->name);
117 return -EINVAL;
118 }
119
120 data = cmd_db_read_aux_data(bcm->name, &data_count);
121 if (IS_ERR(data)) {
122 dev_err(dev, "%s command db read error (%ld)\n",
123 bcm->name, PTR_ERR(data));
124 return PTR_ERR(data);
125 }
126 if (!data_count) {
127 dev_err(dev, "%s command db missing or partial aux data\n",
128 bcm->name);
129 return -EINVAL;
130 }
131
> 132 bcm->aux_data.unit = le32_to_cpu(data->unit);
> 133 bcm->aux_data.width = le16_to_cpu(data->width);
134 bcm->aux_data.vcd = data->vcd;
135 bcm->aux_data.reserved = data->reserved;
136 INIT_LIST_HEAD(&bcm->list);
137 INIT_LIST_HEAD(&bcm->ws_list);
138
139 /* Link Qnodes to their respective BCMs */
140 for (i = 0; i < bcm->num_nodes; i++) {
141 qn = bcm->nodes[i];
142 qn->bcms[qn->num_bcms] = bcm;
143 qn->num_bcms++;
144 }
145
146 return 0;
147 }
148 EXPORT_SYMBOL_GPL(qcom_icc_bcm_init);
149

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip