From: kernel test robot <lkp@intel.com>
To: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Subject: arch/mips/kernel/smp-cps.c:165:37: sparse: sparse: cast removes address space '__iomem' of expression
Date: Wed, 6 Dec 2023 03:11:33 +0800 [thread overview]
Message-ID: <202312060347.7gSJptjV-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bee0e7762ad2c6025b9f5245c040fcc36ef2bde8
commit: fea8826d5fdc4ff5c93e883a738597129614039c MIPS: smp-cps: Don't rely on CP0_CMGCRBASE
date: 9 months ago
config: mips-randconfig-r122-20231108 (https://download.01.org/0day-ci/archive/20231206/202312060347.7gSJptjV-lkp@intel.com/config)
compiler: mips-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231206/202312060347.7gSJptjV-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312060347.7gSJptjV-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> arch/mips/kernel/smp-cps.c:165:37: sparse: sparse: cast removes address space '__iomem' of expression
arch/mips/kernel/smp-cps.c: note: in included file (through arch/mips/include/asm/mips-cps.h, arch/mips/include/asm/smp-ops.h, arch/mips/include/asm/smp.h, ...):
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:292:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:292:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:292:1: sparse: got void [noderef] __iomem *
arch/mips/kernel/smp-cps.c: note: in included file (through arch/mips/include/asm/mips-cps.h, arch/mips/include/asm/smp-ops.h, arch/mips/include/asm/smp.h, ...):
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cpc.h:149:1: sparse: expected void *
arch/mips/include/asm/mips-cpc.h:149:1: sparse: got void [noderef] __iomem *
arch/mips/kernel/smp-cps.c: note: in included file (through arch/mips/include/asm/mips-cps.h, arch/mips/include/asm/smp-ops.h, arch/mips/include/asm/smp.h, ...):
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void const volatile [noderef] __iomem *mem
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:152:1: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
arch/mips/include/asm/mips-cm.h:152:1: sparse: expected void *
arch/mips/include/asm/mips-cm.h:152:1: sparse: got void [noderef] __iomem *
arch/mips/include/asm/mips-cm.h:131:1: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
vim +/__iomem +165 arch/mips/kernel/smp-cps.c
118
119 static void __init cps_prepare_cpus(unsigned int max_cpus)
120 {
121 unsigned ncores, core_vpes, c, cca;
122 bool cca_unsuitable, cores_limited;
123 u32 *entry_code;
124
125 mips_mt_set_cpuoptions();
126
127 /* Detect whether the CCA is unsuited to multi-core SMP */
128 cca = read_c0_config() & CONF_CM_CMASK;
129 switch (cca) {
130 case 0x4: /* CWBE */
131 case 0x5: /* CWB */
132 /* The CCA is coherent, multi-core is fine */
133 cca_unsuitable = false;
134 break;
135
136 default:
137 /* CCA is not coherent, multi-core is not usable */
138 cca_unsuitable = true;
139 }
140
141 /* Warn the user if the CCA prevents multi-core */
142 cores_limited = false;
143 if (cca_unsuitable || cpu_has_dc_aliases) {
144 for_each_present_cpu(c) {
145 if (cpus_are_siblings(smp_processor_id(), c))
146 continue;
147
148 set_cpu_present(c, false);
149 cores_limited = true;
150 }
151 }
152 if (cores_limited)
153 pr_warn("Using only one core due to %s%s%s\n",
154 cca_unsuitable ? "unsuitable CCA" : "",
155 (cca_unsuitable && cpu_has_dc_aliases) ? " & " : "",
156 cpu_has_dc_aliases ? "dcache aliasing" : "");
157
158 /*
159 * Patch the start of mips_cps_core_entry to provide:
160 *
161 * s0 = kseg0 CCA
162 */
163 entry_code = (u32 *)&mips_cps_core_entry;
164 uasm_i_addiu(&entry_code, 16, 0, cca);
> 165 UASM_i_LA(&entry_code, 17, (long)mips_gcr_base);
166 BUG_ON((void *)entry_code > (void *)&mips_cps_core_entry_patch_end);
167 blast_dcache_range((unsigned long)&mips_cps_core_entry,
168 (unsigned long)entry_code);
169 bc_wback_inv((unsigned long)&mips_cps_core_entry,
170 (void *)entry_code - (void *)&mips_cps_core_entry);
171 __sync();
172
173 /* Allocate core boot configuration structs */
174 ncores = mips_cps_numcores(0);
175 mips_cps_core_bootcfg = kcalloc(ncores, sizeof(*mips_cps_core_bootcfg),
176 GFP_KERNEL);
177 if (!mips_cps_core_bootcfg) {
178 pr_err("Failed to allocate boot config for %u cores\n", ncores);
179 goto err_out;
180 }
181
182 /* Allocate VPE boot configuration structs */
183 for (c = 0; c < ncores; c++) {
184 core_vpes = core_vpe_count(0, c);
185 mips_cps_core_bootcfg[c].vpe_config = kcalloc(core_vpes,
186 sizeof(*mips_cps_core_bootcfg[c].vpe_config),
187 GFP_KERNEL);
188 if (!mips_cps_core_bootcfg[c].vpe_config) {
189 pr_err("Failed to allocate %u VPE boot configs\n",
190 core_vpes);
191 goto err_out;
192 }
193 }
194
195 /* Mark this CPU as booted */
196 atomic_set(&mips_cps_core_bootcfg[cpu_core(¤t_cpu_data)].vpe_mask,
197 1 << cpu_vpe_id(¤t_cpu_data));
198
199 return;
200 err_out:
201 /* Clean up allocations */
202 if (mips_cps_core_bootcfg) {
203 for (c = 0; c < ncores; c++)
204 kfree(mips_cps_core_bootcfg[c].vpe_config);
205 kfree(mips_cps_core_bootcfg);
206 mips_cps_core_bootcfg = NULL;
207 }
208
209 /* Effectively disable SMP by declaring CPUs not present */
210 for_each_possible_cpu(c) {
211 if (c == 0)
212 continue;
213 set_cpu_present(c, false);
214 }
215 }
216
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2023-12-05 19:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-05 19:11 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-12-14 12:07 arch/mips/kernel/smp-cps.c:165:37: sparse: sparse: cast removes address space '__iomem' of expression kernel test robot
2023-12-07 17:49 kernel test robot
2023-12-01 10:09 kernel test robot
2023-11-07 23:08 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202312060347.7gSJptjV-lkp@intel.com \
--to=lkp@intel.com \
--cc=jiaxun.yang@flygoat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=tsbogend@alpha.franken.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.