arch/powerpc/kexec/core.c:217:20: sparse: sparse: incorrect type in assignment (different base types)
Sourabh Jain
sourabhjain at linux.ibm.com
Tue Dec 23 23:57:19 AEDT 2025
+Cc: PowerPC mailing list.
and added some comments below.
On 22/12/25 12:14, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 9448598b22c50c8a5bb77a9103e2d49f134c9578
> commit: 38c64dfe0af12778953846df5f259e913275cfe5 kexec: Include kernel-end even without crashkernel
> date: 6 weeks ago
> config: powerpc-randconfig-r111-20251222 (https://download.01.org/0day-ci/archive/20251222/202512221405.VHPKPjnp-lkp@intel.com/config)
> compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 42b3483ac4987cae1bdb632398e8a3ce2dea6633)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221405.VHPKPjnp-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 at intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202512221405.VHPKPjnp-lkp@intel.com/
>
> sparse warnings: (new ones prefixed by >>)
>>> arch/powerpc/kexec/core.c:217:20: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int static [addressable] [toplevel] [usertype] kernel_end @@ got restricted __be32 [usertype] @@
> arch/powerpc/kexec/core.c:217:20: sparse: expected unsigned int static [addressable] [toplevel] [usertype] kernel_end
> arch/powerpc/kexec/core.c:217:20: sparse: got restricted __be32 [usertype]
If CONFIG_CRASH_DUMP is enabled (which is not done in config shared by
kernel test robot) sparse warn
about other assignments in the same file. And these warnings are not
limited to 32-bit.
../arch/powerpc/kexec/core.c:181:29: sparse: warning: incorrect type in
assignment (different base types)
../arch/powerpc/kexec/core.c:181:29: sparse: expected unsigned int
static [addressable] [toplevel] [usertype] crashk_base
../arch/powerpc/kexec/core.c:181:29: sparse: got restricted __be32
[usertype]
../arch/powerpc/kexec/core.c:183:29: sparse: warning: incorrect type in
assignment (different base types)
../arch/powerpc/kexec/core.c:183:29: sparse: expected unsigned int
static [addressable] [toplevel] [usertype] crashk_size
../arch/powerpc/kexec/core.c:183:29: sparse: got restricted __be32
[usertype]
../arch/powerpc/kexec/core.c:191:19: sparse: warning: incorrect type in
assignment (different base types)
../arch/powerpc/kexec/core.c:191:19: sparse: expected unsigned long
long static [addressable] [toplevel] mem_limit
../arch/powerpc/kexec/core.c:191:19: sparse: got restricted __be32
[usertype]
../arch/powerpc/kexec/core.c:217:20: sparse: warning: incorrect type in
assignment (different base types)
../arch/powerpc/kexec/core.c:217:20: sparse: expected unsigned int
static [addressable] [toplevel] [usertype] kernel_end
../arch/powerpc/kexec/core.c:217:20: sparse: got restricted __be32
[usertype]
CHECK ../arch/powerpc/kexec/core_32.c
To resolve these warnings:
Should we use __force tpyecast and silence the warnings?
for example:
kernel_end = (__force phys_addr_t) cpu_to_be_ulong(__pa(_end));
Or
Use proper data types __be<32|64> and duplicated the definition and
assignment? seems like bit too much.
Or
Do we have better way to handle these warnings? If yes, please share.
- Sourabh Jain
>
> vim +217 arch/powerpc/kexec/core.c
>
> 6f29c3298b1821 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 203
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 204 static int __init kexec_setup(void)
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 205 {
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 206 struct device_node *node;
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 207
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 208 node = of_find_node_by_path("/chosen");
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 209 if (!node)
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 210 return -ENOENT;
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 211
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 212 /* remove any stale properties so ours can be found */
> 38c64dfe0af127 arch/powerpc/kexec/core.c Ben Collins 2025-04-21 213 of_remove_property(node, of_find_property(node, kernel_end_prop.name,
> 38c64dfe0af127 arch/powerpc/kexec/core.c Ben Collins 2025-04-21 214 NULL));
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 215
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 216 /* information needed by userspace when using default_machine_kexec */
> ea961a828fe725 arch/powerpc/kernel/machine_kexec.c Anton Blanchard 2014-01-22 @217 kernel_end = cpu_to_be_ulong(__pa(_end));
> 79d1c712958f94 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot 2012-10-02 218 of_add_property(node, &kernel_end_prop);
> 2e8e4f5b80e101 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 219
>
> :::::: The code at line 217 was first introduced by commit
> :::::: ea961a828fe7250e954f086d74d9323c3d44c3e4 powerpc: Fix endian issues in kexec and crash dump code
>
> :::::: TO: Anton Blanchard <anton at samba.org>
> :::::: CC: Benjamin Herrenschmidt <benh at kernel.crashing.org>
>
More information about the Linuxppc-dev
mailing list