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

ARM: make virt_to_idmap() return unsigned long

Make virt_to_idmap() return an unsigned long rather than phys_addr_t.

Returning phys_addr_t here makes no sense, because the definition of
virt_to_idmap() is that it shall return a physical address which maps
identically with the virtual address. Since virtual addresses are
limited to 32-bit, identity mapped physical addresses are as well.

Almost all users already had an implicit narrowing cast to unsigned long
so let's make this official and part of this interface.

Tested-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

+6 -6
+3 -3
arch/arm/include/asm/memory.h
··· 273 273 #define __va(x) ((void *)__phys_to_virt((phys_addr_t)(x))) 274 274 #define pfn_to_kaddr(pfn) __va((phys_addr_t)(pfn) << PAGE_SHIFT) 275 275 276 - extern phys_addr_t (*arch_virt_to_idmap)(unsigned long x); 276 + extern unsigned long (*arch_virt_to_idmap)(unsigned long x); 277 277 278 278 /* 279 279 * These are for systems that have a hardware interconnect supported alias of 280 280 * physical memory for idmap purposes. Most cases should leave these 281 - * untouched. 281 + * untouched. Note: this can only return addresses less than 4GiB. 282 282 */ 283 - static inline phys_addr_t __virt_to_idmap(unsigned long x) 283 + static inline unsigned long __virt_to_idmap(unsigned long x) 284 284 { 285 285 if (IS_ENABLED(CONFIG_MMU) && arch_virt_to_idmap) 286 286 return arch_virt_to_idmap(x);
+1 -1
arch/arm/kernel/reboot.c
··· 50 50 flush_cache_all(); 51 51 52 52 /* Switch to the identity mapping. */ 53 - phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset); 53 + phys_reset = (phys_reset_t)virt_to_idmap(cpu_reset); 54 54 phys_reset((unsigned long)addr); 55 55 56 56 /* Should never get here. */
+1 -1
arch/arm/mach-keystone/keystone.c
··· 63 63 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 64 64 } 65 65 66 - static phys_addr_t keystone_virt_to_idmap(unsigned long x) 66 + static unsigned long keystone_virt_to_idmap(unsigned long x) 67 67 { 68 68 return (phys_addr_t)(x) - CONFIG_PAGE_OFFSET + KEYSTONE_LOW_PHYS_START; 69 69 }
+1 -1
arch/arm/mm/idmap.c
··· 15 15 * page tables. 16 16 */ 17 17 pgd_t *idmap_pgd; 18 - phys_addr_t (*arch_virt_to_idmap) (unsigned long x); 18 + unsigned long (*arch_virt_to_idmap)(unsigned long x); 19 19 20 20 #ifdef CONFIG_ARM_LPAE 21 21 static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end,