From: Arnd Bergmann Date: Tue, 4 Sep 2012 13:01:37 +0000 (+0200) Subject: Merge commit 'a849088aa1' from rmk/fixes into cleanup/io-pci X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=863e99a8c1ea2b0391491904297f57a0f6a1fdd6;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git Merge commit 'a849088aa1' from rmk/fixes into cleanup/io-pci As Stephen Rothwell reports, a849088aa155 ("ARM: Fix ioremap() of address zero") from the arm-current tree and commit c2794437091a ("ARM: Add fixed PCI i/o mapping") from the arm-soc tree conflict in a nontrivial way in arch/arm/mm/mmu.c. Rob Herring explains: The PCI i/o reserved area has a dummy physical address of 0 and needs to be skipped by ioremap searches. So we don't set VM_ARM_STATIC_MAPPING to prevent matches by ioremap. The vm_struct settings don't really matter when we do the real mapping of the i/o space. Since commit a849088aa155 is at the start of the fixes branch in the arm tree, we can merge it into the branch that contains the other ioremap changes. Signed-off-by: Arnd Bergmann Cc: Rob Herring Cc: Russell King --- 863e99a8c1ea2b0391491904297f57a0f6a1fdd6 diff --cc arch/arm/Kconfig index 58bb75efa63c,6d6e18fee9fe..01790958e69b --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@@ -292,7 -312,9 +311,8 @@@ config ARCH_VERSATIL select ICST select GENERIC_CLOCKEVENTS select ARCH_WANT_OPTIONAL_GPIOLIB - select NEED_MACH_IO_H if PCI select PLAT_VERSATILE + select PLAT_VERSATILE_CLOCK select PLAT_VERSATILE_CLCD select PLAT_VERSATILE_FPGA_IRQ select ARM_TIMER_SP804 @@@ -636,7 -683,9 +674,8 @@@ config ARCH_TEGR select HAVE_CLK select HAVE_SMP select MIGHT_HAVE_CACHE_L2X0 - select NEED_MACH_IO_H if PCI select ARCH_HAS_CPUFREQ + select USE_OF help This enables support for NVIDIA Tegra based systems (Tegra APX, Tegra 6xx and Tegra 2 series). diff --cc arch/arm/mm/mmu.c index 714a7fd99ca3,eab94bc6f805..a7a9e41fa2c2 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@@ -792,19 -785,6 +786,19 @@@ void __init iotable_init(struct map_des } } +void __init vm_reserve_area_early(unsigned long addr, unsigned long size, + void *caller) +{ + struct vm_struct *vm; + + vm = early_alloc_aligned(sizeof(*vm), __alignof__(*vm)); + vm->addr = (void *)addr; + vm->size = size; - vm->flags = VM_IOREMAP | VM_ARM_STATIC_MAPPING; ++ vm->flags = VM_IOREMAP | VM_ARM_EMPTY_MAPPING; + vm->caller = caller; + vm_area_add_early(vm); +} + #ifndef CONFIG_ARM_LPAE /*