Merge commit 'a849088aa1' from rmk/fixes into cleanup/io-pci
authorArnd Bergmann <arnd@arndb.de>
Tue, 4 Sep 2012 13:01:37 +0000 (15:01 +0200)
committerArnd Bergmann <arnd@arndb.de>
Tue, 4 Sep 2012 13:01:37 +0000 (15:01 +0200)
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 <arnd@arndb.de>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
1  2 
arch/arm/Kconfig
arch/arm/kernel/bios32.c
arch/arm/mach-dove/common.c
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-kirkwood/common.c
arch/arm/mach-tegra/pcie.c
arch/arm/mm/ioremap.c
arch/arm/mm/mmu.c

@@@ -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).
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -792,19 -785,6 +786,19 @@@ void __init iotable_init(struct map_des
        }
  }
  
-       vm->flags = VM_IOREMAP | VM_ARM_STATIC_MAPPING;
 +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_EMPTY_MAPPING;
 +      vm->caller = caller;
 +      vm_area_add_early(vm);
 +}
 +
  #ifndef CONFIG_ARM_LPAE
  
  /*