Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: omap: fix address space warnings from sparse

Moving sram code from plat-omap got the attention of the kernel test robot.

I found a few more places with related warnings because the sram
references are a mix of kernel pointers and __iomem pointers:

mach-omap1/sram-init.c:56:17: warning: cast removes address space '__iomem' of expression
mach-omap1/board-ams-delta.c:667:9: warning: incorrect type in argument 1 (different base types)
mach-omap2/sram.c:78:17: warning: cast removes address space '__iomem' of expression
mach-omap2/omap4-common.c:142:27: warning: incorrect type in assignment (different address spaces)
mach-omap2/omap4-common.c:142:27: expected void [noderef] __iomem *static [toplevel] sram_sync
mach-omap2/omap4-common.c:142:27: got void *
mach-omap2/pm34xx.c:113:45: warning: incorrect type in argument 1 (different address spaces)
mach-omap2/pm34xx.c:113:45: expected void [noderef] __iomem *save_regs
mach-omap2/pm34xx.c:113:45: got void *extern [addressable] [toplevel] omap3_secure_ram_storage

There is no good solution here, as sram is a bit special in this
regard. Change the annotations to at least shut up the warnings.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+6 -6
+1 -1
arch/arm/mach-omap1/board-ams-delta.c
··· 664 664 { 665 665 u16 latch2 = 1 << LATCH2_PIN_MODEM_NRESET | 1 << LATCH2_PIN_MODEM_CODEC; 666 666 667 - __raw_writew(latch2, LATCH2_VIRT); 667 + __raw_writew(latch2, IOMEM(LATCH2_VIRT)); 668 668 } 669 669 670 670 static void __init ams_delta_init(void)
+1 -1
arch/arm/mach-omap1/sram-init.c
··· 53 53 new_ceil = ROUND_DOWN(new_ceil, FNCPY_ALIGN); 54 54 omap_sram_ceil = IOMEM(new_ceil); 55 55 56 - return (void *)omap_sram_ceil; 56 + return (void __force *)omap_sram_ceil; 57 57 } 58 58 59 59 void *omap_sram_push(void *funcp, unsigned long size)
+1 -1
arch/arm/mach-omap2/omap-secure.c
··· 124 124 } 125 125 126 126 #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM) 127 - u32 omap3_save_secure_ram(void __iomem *addr, int size) 127 + u32 omap3_save_secure_ram(void *addr, int size) 128 128 { 129 129 static u32 param[5]; 130 130 u32 ret;
+1 -1
arch/arm/mach-omap2/omap-secure.h
··· 73 73 extern phys_addr_t omap_secure_ram_mempool_base(void); 74 74 extern int omap_secure_ram_reserve_memblock(void); 75 75 extern u32 save_secure_ram_context(u32 args_pa); 76 - extern u32 omap3_save_secure_ram(void __iomem *save_regs, int size); 76 + extern u32 omap3_save_secure_ram(void *save_regs, int size); 77 77 78 78 extern u32 rx51_secure_dispatcher(u32 idx, u32 process, u32 flag, u32 nargs, 79 79 u32 arg1, u32 arg2, u32 arg3, u32 arg4);
+1 -1
arch/arm/mach-omap2/omap4-common.c
··· 139 139 pr_warn("%s:Unable to get sram pool needed to handle errata I688\n", 140 140 __func__); 141 141 else 142 - sram_sync = (void *)gen_pool_alloc(sram_pool, PAGE_SIZE); 142 + sram_sync = (void __iomem *)gen_pool_alloc(sram_pool, PAGE_SIZE); 143 143 144 144 return 0; 145 145 }
+1 -1
arch/arm/mach-omap2/sram.c
··· 75 75 new_ceil = ROUND_DOWN(new_ceil, FNCPY_ALIGN); 76 76 omap_sram_ceil = IOMEM(new_ceil); 77 77 78 - return (void *)omap_sram_ceil; 78 + return (void __force *)omap_sram_ceil; 79 79 } 80 80 81 81 void *omap_sram_push(void *funcp, unsigned long size)