diff options
Diffstat (limited to 'arch/arm/mm/ioremap.c')
| -rw-r--r-- | arch/arm/mm/ioremap.c | 5 | 
1 files changed, 3 insertions, 2 deletions
| diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 7eac87f05180..dba7dddfe57d 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c @@ -303,7 +303,6 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,  	int err;  	unsigned long addr;   	struct vm_struct * area; -	unsigned int cr = get_cr();  	/*  	 * High mappings must be supersection aligned @@ -317,7 +316,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,   	addr = (unsigned long)area->addr;  #ifndef CONFIG_SMP -	if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (cr & CR_XP)) || +	if ((((cpu_architecture() >= CPU_ARCH_ARMv6) && (get_cr() & CR_XP)) ||  	       cpu_is_xsc3()) &&  	       !((__pfn_to_phys(pfn) | size | addr) & ~SUPERSECTION_MASK)) {  		area->flags |= VM_ARM_SECTION_MAPPING; @@ -369,6 +368,7 @@ void __iounmap(void __iomem *addr)  	addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); +#ifndef CONFIG_SMP  	/*  	 * If this is a section based mapping we need to handle it  	 * specially as the VM subysystem does not know how to handle @@ -390,6 +390,7 @@ void __iounmap(void __iomem *addr)  		}  	}  	write_unlock(&vmlist_lock); +#endif  	if (!section_mapping)  		vunmap(addr); | 
