Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
Linus Torvalds [Wed, 11 Jan 2012 02:04:27 +0000 (18:04 -0800)]
lib: use generic pci_iomap on all architectures

Many architectures don't want to pull in iomap.c,
so they ended up duplicating pci_iomap from that file.
That function isn't trivial, and we are going to modify it
https://lkml.org/lkml/2011/11/14/183
so the duplication hurts.

This reduces the scope of the problem significantly,
by moving pci_iomap to a separate file and
referencing that from all architectures.

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
  alpha: drop pci_iomap/pci_iounmap from pci-noop.c
  mn10300: switch to GENERIC_PCI_IOMAP
  mn10300: add missing __iomap markers
  frv: switch to GENERIC_PCI_IOMAP
  tile: switch to GENERIC_PCI_IOMAP
  tile: don't panic on iomap
  sparc: switch to GENERIC_PCI_IOMAP
  sh: switch to GENERIC_PCI_IOMAP
  powerpc: switch to GENERIC_PCI_IOMAP
  parisc: switch to GENERIC_PCI_IOMAP
  mips: switch to GENERIC_PCI_IOMAP
  microblaze: switch to GENERIC_PCI_IOMAP
  arm: switch to GENERIC_PCI_IOMAP
  alpha: switch to GENERIC_PCI_IOMAP
  lib: add GENERIC_PCI_IOMAP
  lib: move GENERIC_IOMAP to lib/Kconfig

Fix up trivial conflicts due to changes nearby in arch/{m68k,score}/Kconfig

15 files changed:
1  2 
arch/arm/Kconfig
arch/frv/Kconfig
arch/ia64/Kconfig
arch/m68k/Kconfig
arch/mips/Kconfig
arch/powerpc/Kconfig
arch/powerpc/platforms/Kconfig
arch/score/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/tile/kernel/pci.c
arch/x86/Kconfig
include/asm-generic/io.h
lib/Kconfig
lib/Makefile

diff --combined arch/arm/Kconfig
@@@ -16,7 -16,6 +16,7 @@@ config AR
        select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
        select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL)
        select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
 +      select ARCH_BINFMT_ELF_RANDOMIZE_PIE
        select HAVE_GENERIC_DMA_COHERENT
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_LZO
@@@ -31,6 -30,7 +31,7 @@@
        select HAVE_SPARSE_IRQ
        select GENERIC_IRQ_SHOW
        select CPU_PM if (SUSPEND || CPU_IDLE)
+       select GENERIC_PCI_IOMAP
        help
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
@@@ -221,9 -221,8 +222,9 @@@ config NEED_MACH_MEMORY_
          be avoided when possible.
  
  config PHYS_OFFSET
 -      hex "Physical address of main memory"
 +      hex "Physical address of main memory" if MMU
        depends on !ARM_PATCH_PHYS_VIRT && !NEED_MACH_MEMORY_H
 +      default DRAM_BASE if !MMU
        help
          Please provide the physical address corresponding to the
          location of main memory in your system.
@@@ -259,7 -258,6 +260,7 @@@ config ARCH_INTEGRATO
        select ARCH_HAS_CPUFREQ
        select CLKDEV_LOOKUP
        select HAVE_MACH_CLKDEV
 +      select HAVE_TCM
        select ICST
        select GENERIC_CLOCKEVENTS
        select PLAT_VERSATILE
@@@ -343,12 -341,10 +344,12 @@@ config ARCH_HIGHBAN
        select ARM_AMBA
        select ARM_GIC
        select ARM_TIMER_SP804
 +      select CACHE_L2X0
        select CLKDEV_LOOKUP
        select CPU_V7
        select GENERIC_CLOCKEVENTS
        select HAVE_ARM_SCU
 +      select HAVE_SMP
        select USE_OF
        help
          Support for the Calxeda Highbank SoC based boards.
@@@ -366,7 -362,6 +367,7 @@@ config ARCH_CNS3XX
        select CPU_V6K
        select GENERIC_CLOCKEVENTS
        select ARM_GIC
 +      select MIGHT_HAVE_CACHE_L2X0
        select MIGHT_HAVE_PCI
        select PCI_DOMAINS if PCI
        help
@@@ -387,7 -382,6 +388,7 @@@ config ARCH_PRIMA
        select GENERIC_CLOCKEVENTS
        select CLKDEV_LOOKUP
        select GENERIC_IRQ_CHIP
 +      select MIGHT_HAVE_CACHE_L2X0
        select USE_OF
        select ZONE_DMA
        help
@@@ -448,7 -442,6 +449,7 @@@ config ARCH_MX
        select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
 +      select HAVE_CLK_PREPARE
        help
          Support for Freescale MXS-based family of processors
  
@@@ -599,7 -592,6 +600,7 @@@ config ARCH_MM
        select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
 +      select GPIO_PXA
        select HAVE_SCHED_CLOCK
        select TICK_ONESHOT
        select PLAT_PXA
@@@ -642,8 -634,6 +643,8 @@@ config ARCH_TEGR
        select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_SCHED_CLOCK
 +      select HAVE_SMP
 +      select MIGHT_HAVE_CACHE_L2X0
        select ARCH_HAS_CPUFREQ
        help
          This enables support for NVIDIA Tegra based systems (Tegra APX,
@@@ -661,7 -651,6 +662,7 @@@ config ARCH_PICOXCEL
        select HAVE_SCHED_CLOCK
        select HAVE_TCM
        select NO_IOPORT
 +      select SPARSE_IRQ
        select USE_OF
        help
          This enables support for systems based on the Picochip picoXcell
@@@ -685,7 -674,6 +686,7 @@@ config ARCH_PX
        select CLKSRC_MMIO
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
 +      select GPIO_PXA
        select HAVE_SCHED_CLOCK
        select TICK_ONESHOT
        select PLAT_PXA
@@@ -715,9 -703,7 +716,9 @@@ config ARCH_SHMOBIL
        select HAVE_CLK
        select CLKDEV_LOOKUP
        select HAVE_MACH_CLKDEV
 +      select HAVE_SMP
        select GENERIC_CLOCKEVENTS
 +      select MIGHT_HAVE_CACHE_L2X0
        select NO_IOPORT
        select SPARSE_IRQ
        select MULTI_IRQ_HANDLER
@@@ -753,7 -739,7 +754,7 @@@ config ARCH_SA110
        select ARCH_HAS_CPUFREQ
        select CPU_FREQ
        select GENERIC_CLOCKEVENTS
 -      select HAVE_CLK
 +      select CLKDEV_LOOKUP
        select HAVE_SCHED_CLOCK
        select TICK_ONESHOT
        select ARCH_REQUIRE_GPIOLIB
@@@ -882,6 -868,16 +883,6 @@@ config ARCH_SHAR
          Support for the StrongARM based Digital DNARD machine, also known
          as "Shark" (<http://www.shark-linux.de/shark.html>).
  
 -config ARCH_TCC_926
 -      bool "Telechips TCC ARM926-based systems"
 -      select CLKSRC_MMIO
 -      select CPU_ARM926T
 -      select HAVE_CLK
 -      select CLKDEV_LOOKUP
 -      select GENERIC_CLOCKEVENTS
 -      help
 -        Support for Telechips TCC ARM926-based systems.
 -
  config ARCH_U300
        bool "ST-Ericsson U300 Series"
        depends on MMU
        select HAVE_MACH_CLKDEV
        select GENERIC_GPIO
        select ARCH_REQUIRE_GPIOLIB
 -      select NEED_MACH_MEMORY_H
        help
          Support for ST-Ericsson U300 series mobile platforms.
  
@@@ -908,8 -905,6 +909,8 @@@ config ARCH_U850
        select CLKDEV_LOOKUP
        select ARCH_REQUIRE_GPIOLIB
        select ARCH_HAS_CPUFREQ
 +      select HAVE_SMP
 +      select MIGHT_HAVE_CACHE_L2X0
        help
          Support for ST-Ericsson's Ux500 architecture
  
@@@ -920,7 -915,6 +921,7 @@@ config ARCH_NOMADI
        select CPU_ARM926T
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
 +      select MIGHT_HAVE_CACHE_L2X0
        select ARCH_REQUIRE_GPIOLIB
        help
          Support for the Nomadik platform by ST-Ericsson
@@@ -980,7 -974,6 +981,7 @@@ config ARCH_ZYN
        select ARM_GIC
        select ARM_AMBA
        select ICST
 +      select MIGHT_HAVE_CACHE_L2X0
        select USE_OF
        help
          Support for Xilinx Zynq ARM Cortex A9 Platform
@@@ -1067,6 -1060,8 +1068,6 @@@ source "arch/arm/plat-s5p/Kconfig
  
  source "arch/arm/plat-spear/Kconfig"
  
 -source "arch/arm/plat-tcc/Kconfig"
 -
  if ARCH_S3C2410
  source "arch/arm/mach-s3c2410/Kconfig"
  source "arch/arm/mach-s3c2412/Kconfig"
@@@ -1131,11 -1126,6 +1132,11 @@@ config ARM_TIMER_SP80
  
  source arch/arm/mm/Kconfig
  
 +config ARM_NR_BANKS
 +      int
 +      default 16 if ARCH_EP93XX
 +      default 8
 +
  config IWMMXT
        bool "Enable iWMMXt support"
        depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
          Enable support for iWMMXt context switching at run time if
          running on a CPU that supports it.
  
 -#  bool 'Use XScale PMU as timer source' CONFIG_XSCALE_PMU_TIMER
  config XSCALE_PMU
        bool
 -      depends on CPU_XSCALE && !XSCALE_PMU_TIMER
 +      depends on CPU_XSCALE
        default y
  
  config CPU_HAS_PMU
@@@ -1241,7 -1232,7 +1242,7 @@@ config ARM_ERRATA_74223
          capabilities of the processor.
  
  config PL310_ERRATA_588369
 -      bool "Clean & Invalidate maintenance operations do not invalidate clean lines"
 +      bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines"
        depends on CACHE_L2X0
        help
           The PL310 L2 cache controller implements three types of Clean &
  
  config ARM_ERRATA_720789
        bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
 -      depends on CPU_V7 && SMP
 +      depends on CPU_V7
        help
          This option enables the workaround for the 720789 Cortex-A9 (prior to
          r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
          entries regardless of the ASID.
  
  config PL310_ERRATA_727915
 -      bool "Background Clean & Invalidate by Way operation can cause data corruption"
 +      bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption"
        depends on CACHE_L2X0
        help
          PL310 implements the Clean & Invalidate by Way L2 cache maintenance
@@@ -1291,7 -1282,7 +1292,7 @@@ config ARM_ERRATA_74362
  
  config ARM_ERRATA_751472
        bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
 -      depends on CPU_V7 && SMP
 +      depends on CPU_V7
        help
          This option enables the workaround for the 751472 Cortex-A9 (prior
          to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
          operation is received by a CPU before the ICIALLUIS has completed,
          potentially leading to corrupted entries in the cache or TLB.
  
 -config ARM_ERRATA_753970
 -      bool "ARM errata: cache sync operation may be faulty"
 +config PL310_ERRATA_753970
 +      bool "PL310 errata: cache sync operation may be faulty"
        depends on CACHE_PL310
        help
          This option enables the workaround for the 753970 PL310 (r3p0) erratum.
@@@ -1362,18 -1353,6 +1363,18 @@@ config ARM_ERRATA_76436
          relevant cache maintenance functions and sets a specific bit
          in the diagnostic control register of the SCU.
  
 +config PL310_ERRATA_769419
 +      bool "PL310 errata: no automatic Store Buffer drain"
 +      depends on CACHE_L2X0
 +      help
 +        On revisions of the PL310 prior to r3p2, the Store Buffer does
 +        not automatically drain. This can cause normal, non-cacheable
 +        writes to be retained when the memory system is idle, leading
 +        to suboptimal I/O performance for drivers using coherent DMA.
 +        This option adds a write barrier to the cpu_idle loop so that,
 +        on systems with an outer cache, the store buffer is drained
 +        explicitly.
 +
  endmenu
  
  source "arch/arm/common/Kconfig"
@@@ -1444,20 -1423,14 +1445,20 @@@ menu "Kernel Features
  
  source "kernel/time/Kconfig"
  
 +config HAVE_SMP
 +      bool
 +      help
 +        This option should be selected by machines which have an SMP-
 +        capable CPU.
 +
 +        The only effect of this option is to make the SMP-related
 +        options available to the user for configuration.
 +
  config SMP
        bool "Symmetric Multi-Processing"
        depends on CPU_V6K || CPU_V7
        depends on GENERIC_CLOCKEVENTS
 -      depends on REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP || \
 -               MACH_REALVIEW_PB11MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \
 -               ARCH_EXYNOS4 || ARCH_TEGRA || ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || \
 -               ARCH_MSM_SCORPIONMP || ARCH_SHMOBILE || ARCH_HIGHBANK || SOC_IMX6Q
 +      depends on HAVE_SMP
        depends on MMU
        select USE_GENERIC_SMP_HELPERS
        select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
@@@ -1575,16 -1548,6 +1576,16 @@@ config LOCAL_TIMER
          accounting to be spread across the timer interval, preventing a
          "thundering herd" at every timer tick.
  
 +config ARCH_NR_GPIO
 +      int
 +      default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
 +      default 350 if ARCH_U8500
 +      default 0
 +      help
 +        Maximum number of GPIOs in the system.
 +
 +        If unsure, leave the default value.
 +
  source kernel/Kconfig.preempt
  
  config HZ
@@@ -1997,7 -1960,7 +1998,7 @@@ endchoic
  
  config XIP_KERNEL
        bool "Kernel Execute-In-Place from ROM"
 -      depends on !ZBOOT_ROM
 +      depends on !ZBOOT_ROM && !ARM_LPAE
        help
          Execute-In-Place allows the kernel to run from non-volatile storage
          directly addressable by the CPU, such as NOR flash. This saves RAM
@@@ -2027,7 -1990,7 +2028,7 @@@ config XIP_PHYS_ADD
  
  config KEXEC
        bool "Kexec system call (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
 +      depends on EXPERIMENTAL && (!SMP || HOTPLUG_CPU)
        help
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
diff --combined arch/frv/Kconfig
@@@ -317,6 -317,7 +317,7 @@@ config PC
        bool "Use PCI"
        depends on MB93090_MB00
        default y
+       select GENERIC_PCI_IOMAP
        help
          Some FR-V systems (such as the MB93090-MB00 VDK) have PCI
          onboard. If you have one of these boards and you wish to use the PCI
@@@ -341,6 -342,16 +342,6 @@@ source "drivers/pci/Kconfig
  
  source "drivers/pcmcia/Kconfig"
  
 -#config MATH_EMULATION
 -#     bool "Math emulation support (EXPERIMENTAL)"
 -#     depends on EXPERIMENTAL
 -#     help
 -#       At some point in the future, this will cause floating-point math
 -#       instructions to be emulated by the kernel on machines that lack a
 -#       floating-point math coprocessor.  Thrill-seekers and chronically
 -#       sleep-deprived psychotic hacker types can say Y now, everyone else
 -#       should probably wait a while.
 -
  menu "Power management options"
  
  config ARCH_SUSPEND_POSSIBLE
diff --combined arch/ia64/Kconfig
@@@ -23,15 -23,13 +23,16 @@@ config IA6
        select HAVE_ARCH_TRACEHOOK
        select HAVE_DMA_API_DEBUG
        select HAVE_GENERIC_HARDIRQS
 +      select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
 +      select ARCH_DISCARD_MEMBLOCK
        select GENERIC_IRQ_PROBE
        select GENERIC_PENDING_IRQ if SMP
        select IRQ_PER_CPU
        select GENERIC_IRQ_SHOW
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
+       select GENERIC_IOMAP
        default y
        help
          The Itanium Processor Family is Intel's 64-bit successor to
@@@ -105,10 -103,6 +106,6 @@@ config EF
        bool
        default y
  
- config GENERIC_IOMAP
-       bool
-       default y
  config ARCH_CLOCKSOURCE_DATA
        def_bool y
  
@@@ -477,6 -471,9 +474,6 @@@ config NODES_SHIF
          MAX_NUMNODES will be 2^(This value).
          If in doubt, use the default.
  
 -config ARCH_POPULATES_NODE_MAP
 -      def_bool y
 -
  # VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent.
  # VIRTUAL_MEM_MAP has been retained for historical reasons.
  config VIRTUAL_MEM_MAP
diff --combined arch/m68k/Kconfig
@@@ -3,6 -3,7 +3,6 @@@ config M68
        default y
        select HAVE_IDE
        select HAVE_AOUT if MMU
 -      select GENERIC_ATOMIC64 if MMU
        select HAVE_GENERIC_HARDIRQS
        select GENERIC_IRQ_SHOW
        select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS
@@@ -37,18 -38,12 +37,15 @@@ config GENERIC_CALIBRATE_DELA
        bool
        default y
  
- config GENERIC_IOMAP
-       def_bool MMU
 +config GENERIC_CSUM
 +      bool
 +
  config TIME_LOW_RES
        bool
        default y
  
  config ARCH_USES_GETTIMEOFFSET
 -      def_bool MMU
 +      def_bool MMU && !COLDFIRE
  
  config NO_IOPORT
        def_bool y
@@@ -63,12 -58,6 +60,12 @@@ config ZONE_DM
  config CPU_HAS_NO_BITFIELDS
        bool
  
 +config CPU_HAS_NO_MULDIV64
 +      bool
 +
 +config CPU_HAS_ADDRESS_SPACES
 +      bool
 +
  config HZ
        int
        default 1000 if CLEOPATRA
@@@ -81,6 -70,7 +78,7 @@@ source "kernel/Kconfig.freezer
  config MMU
        bool "MMU-based Paged Memory Management Support"
        default y
+       select GENERIC_IOMAP
        help
          Select if you want MMU-based virtualised addressing space
          support by paged memory management. If unsure, say 'Y'.
  config MMU_MOTOROLA
        bool
  
 +config MMU_COLDFIRE
 +      bool
 +
  config MMU_SUN3
        bool
 -      depends on MMU && !MMU_MOTOROLA
 +      depends on MMU && !MMU_MOTOROLA && !MMU_COLDFIRE
  
  menu "Platform setup"
  
diff --combined arch/mips/Kconfig
@@@ -16,7 -16,6 +16,7 @@@ config MIP
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_KPROBES
        select HAVE_KRETPROBES
 +      select ARCH_BINFMT_ELF_RANDOMIZE_PIE
        select RTC_LIB if !MACH_LOONGSON
        select GENERIC_ATOMIC64 if !64BIT
        select HAVE_DMA_ATTRS
@@@ -26,9 -25,6 +26,9 @@@
        select GENERIC_IRQ_SHOW
        select HAVE_ARCH_JUMP_LABEL
        select IRQ_FORCED_THREADING
 +      select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
 +      select ARCH_DISCARD_MEMBLOCK
  
  menu "Machine selection"
  
@@@ -69,6 -65,7 +69,6 @@@ config AR
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_ZBOOT_UART16550
        select ARCH_REQUIRE_GPIOLIB
 -      select GCD
        select VLYNQ
        help
          Support for the Texas Instruments AR7 System-on-a-Chip
@@@ -2067,6 -2064,9 +2067,6 @@@ config ARCH_DISCONTIGMEM_ENABL
          or have huge holes in the physical address space for other reasons.
          See <file:Documentation/vm/numa> for more.
  
 -config ARCH_POPULATES_NODE_MAP
 -      def_bool y
 -
  config ARCH_SPARSEMEM_ENABLE
        bool
        select SPARSEMEM_STATIC
@@@ -2317,6 -2317,7 +2317,7 @@@ config PC
        bool "Support for PCI controller"
        depends on HW_HAS_PCI
        select PCI_DOMAINS
+       select GENERIC_PCI_IOMAP
        help
          Find out whether you have a PCI motherboard. PCI is the name of a
          bus system, i.e. the way the CPU talks to the other stuff inside
@@@ -2369,6 -2370,10 +2370,6 @@@ config T
          Linux driver support status is documented at:
          <http://www.linux-mips.org/wiki/DECstation>
  
 -#config ACCESSBUS
 -#     bool "Access.Bus support"
 -#     depends on TC
 -
  config MMU
        bool
        default y
diff --combined arch/powerpc/Kconfig
@@@ -87,10 -87,6 +87,10 @@@ config ARCH_HAS_ILOG2_U6
        bool
        default y if 64BIT
  
 +config ARCH_HAS_CPU_IDLE_WAIT
 +      bool
 +      default y
 +
  config GENERIC_HWEIGHT
        bool
        default y
@@@ -121,7 -117,6 +121,7 @@@ config PP
        select HAVE_KRETPROBES
        select HAVE_ARCH_TRACEHOOK
        select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
        select HAVE_DMA_ATTRS
        select HAVE_DMA_API_DEBUG
        select USE_GENERIC_SMP_HELPERS if SMP
        select IRQ_PER_CPU
        select GENERIC_IRQ_SHOW
        select GENERIC_IRQ_SHOW_LEVEL
 +      select IRQ_FORCED_THREADING
        select HAVE_RCU_TABLE_FREE if SMP
        select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_BPF_JIT if (PPC64 && NET)
@@@ -368,9 -362,8 +368,9 @@@ config KEXE
  
  config CRASH_DUMP
        bool "Build a kdump crash kernel"
 -      depends on PPC64 || 6xx || FSL_BOOKE
 -      select RELOCATABLE if PPC64 || FSL_BOOKE
 +      depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP && !PPC_47x)
 +      select RELOCATABLE if PPC64 || 44x
 +      select DYNAMIC_MEMSTART if FSL_BOOKE
        help
          Build a kernel suitable for use as a kdump capture kernel.
          The same kernel binary can be used as production kernel and dump
@@@ -428,6 -421,9 +428,6 @@@ config ARCH_SPARSEMEM_DEFAUL
        def_bool y
        depends on (SMP && PPC_PSERIES) || PPC_PS3
  
 -config ARCH_POPULATES_NODE_MAP
 -      def_bool y
 -
  config SYS_SUPPORTS_HUGETLBFS
        bool
  
@@@ -691,10 -687,6 +691,10 @@@ config FSL_LB
          controller.  Also contains some common code used by
          drivers for specific local bus peripherals.
  
 +config FSL_IFC
 +      bool
 +        depends on FSL_SOC
 +
  config FSL_GTM
        bool
        depends on PPC_83xx || QUICC_ENGINE || CPM2
@@@ -718,6 -710,7 +718,7 @@@ config PC
        default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
        default PCI_QSPAN if !4xx && !CPM2 && 8xx
        select ARCH_SUPPORTS_MSI
+       select GENERIC_PCI_IOMAP
        help
          Find out whether your system includes a PCI bus. PCI is the name of
          a bus system, i.e. the way the CPU talks to the other stuff inside
@@@ -780,10 -773,6 +781,10 @@@ source "drivers/rapidio/Kconfig
  
  endmenu
  
 +config NONSTATIC_KERNEL
 +      bool
 +      default n
 +
  menu "Advanced setup"
        depends on PPC32
  
@@@ -833,32 -822,13 +834,32 @@@ config LOWMEM_CAM_NU
        int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL
        default 3
  
 +config DYNAMIC_MEMSTART
 +      bool "Enable page aligned dynamic load address for kernel (EXPERIMENTAL)"
 +      depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || 44x)
 +      select NONSTATIC_KERNEL
 +      help
 +        This option enables the kernel to be loaded at any page aligned
 +        physical address. The kernel creates a mapping from KERNELBASE to 
 +        the address where the kernel is loaded. The page size here implies
 +        the TLB page size of the mapping for kernel on the particular platform.
 +        Please refer to the init code for finding the TLB page size.
 +
 +        DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
 +        kernel image, where the only restriction is the page aligned kernel
 +        load address. When this option is enabled, the compile time physical 
 +        address CONFIG_PHYSICAL_START is ignored.
 +
 +        This option is overridden by CONFIG_RELOCATABLE
 +
  config RELOCATABLE
        bool "Build a relocatable kernel (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || PPC_47x)
 +      depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && 44x
 +      select NONSTATIC_KERNEL
        help
          This builds a kernel image that is capable of running at the
 -        location the kernel is loaded at (some alignment restrictions may
 -        exist).
 +        location the kernel is loaded at, without any alignment restrictions.
 +        This feature is a superset of DYNAMIC_MEMSTART and hence overrides it.
  
          One use is for the kexec on panic case where the recovery kernel
          must live at a different physical address than the primary
          it has been loaded at and the compile time physical addresses
          CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
          setting can still be useful to bootwrappers that need to know the
 -        load location of the kernel (eg. u-boot/mkimage).
 +        load address of the kernel (eg. u-boot/mkimage).
 +
 +config RELOCATABLE_PPC32
 +      def_bool y
 +      depends on PPC32 && RELOCATABLE
  
  config PAGE_OFFSET_BOOL
        bool "Set custom page offset address"
@@@ -902,7 -868,7 +903,7 @@@ config KERNEL_START_BOO
  config KERNEL_START
        hex "Virtual address of kernel base" if KERNEL_START_BOOL
        default PAGE_OFFSET if PAGE_OFFSET_BOOL
 -      default "0xc2000000" if CRASH_DUMP && !RELOCATABLE
 +      default "0xc2000000" if CRASH_DUMP && !NONSTATIC_KERNEL
        default "0xc0000000"
  
  config PHYSICAL_START_BOOL
  
  config PHYSICAL_START
        hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
 -      default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !RELOCATABLE
 +      default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
        default "0x00000000"
  
  config PHYSICAL_ALIGN
@@@ -961,7 -927,6 +962,7 @@@ endmen
  if PPC64
  config RELOCATABLE
        bool "Build a relocatable kernel"
 +      select NONSTATIC_KERNEL
        help
          This builds a kernel image that is capable of running anywhere
          in the RMA (real memory area) at any 16k-aligned base address.
@@@ -175,9 -175,6 +175,6 @@@ config PPC_INDIRECT_MMI
  config PPC_IO_WORKAROUNDS
        bool
  
- config GENERIC_IOMAP
-       bool
  source "drivers/cpufreq/Kconfig"
  
  menu "CPU Frequency drivers"
@@@ -211,12 -208,6 +208,12 @@@ config PPC_PASEMI_CPUFRE
  
  endmenu
  
 +menu "CPUIdle driver"
 +
 +source "drivers/cpuidle/Kconfig"
 +
 +endmenu
 +
  config PPC601_SYNC_FIX
        bool "Workarounds for PPC601 bugs"
        depends on 6xx && (PPC_PREP || PPC_PMAC)
diff --combined arch/score/Kconfig
@@@ -4,9 -4,7 +4,10 @@@ config SCOR
         def_bool y
         select HAVE_GENERIC_HARDIRQS
         select GENERIC_IRQ_SHOW
+        select GENERIC_IOMAP
 +       select HAVE_MEMBLOCK
 +       select HAVE_MEMBLOCK_NODE_MAP
 +       select ARCH_DISCARD_MEMBLOCK
  
  choice
        prompt "System type"
@@@ -36,9 -34,6 +37,6 @@@ endmen
  config CPU_SCORE7
        bool
  
- config GENERIC_IOMAP
-       def_bool y
  config NO_DMA
        bool
        default y
@@@ -63,6 -58,9 +61,6 @@@ config 32BI
  config ARCH_FLATMEM_ENABLE
        def_bool y
  
 -config ARCH_POPULATES_NODE_MAP
 -      def_bool y
 -
  source "mm/Kconfig"
  
  config MEMORY_START
diff --combined arch/sh/Kconfig
@@@ -4,7 -4,6 +4,7 @@@ config SUPER
        select CLKDEV_LOOKUP
        select HAVE_IDE if HAS_IOPORT
        select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
        select HAVE_OPROFILE
        select HAVE_GENERIC_DMA_COHERENT
        select HAVE_ARCH_TRACEHOOK
@@@ -85,9 -84,6 +85,6 @@@ config GENERIC_GPI
  config GENERIC_CALIBRATE_DELAY
        bool
  
- config GENERIC_IOMAP
-       bool
  config GENERIC_CLOCKEVENTS
        def_bool y
  
@@@ -861,6 -857,7 +858,7 @@@ config PC
        bool "PCI support"
        depends on SYS_SUPPORTS_PCI
        select PCI_DOMAINS
+       select GENERIC_PCI_IOMAP
        help
          Find out whether you have a PCI motherboard. PCI is the name of a
          bus system, i.e. the way the CPU talks to the other stuff inside
diff --combined arch/sparc/Kconfig
@@@ -28,10 -28,10 +28,11 @@@ config SPAR
        select HAVE_GENERIC_HARDIRQS
        select GENERIC_IRQ_SHOW
        select USE_GENERIC_SMP_HELPERS if SMP
+       select GENERIC_PCI_IOMAP
  
  config SPARC32
        def_bool !64BIT
 +      select GENERIC_ATOMIC64
  
  config SPARC64
        def_bool 64BIT
@@@ -44,7 -44,6 +45,7 @@@
        select HAVE_KPROBES
        select HAVE_RCU_TABLE_FREE if SMP
        select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
        select HAVE_SYSCALL_WRAPPERS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_FTRACE_MCOUNT_RECORD
@@@ -354,6 -353,9 +355,6 @@@ config NODES_SPAN_OTHER_NODE
        def_bool y
        depends on NEED_MULTIPLE_NODES
  
 -config ARCH_POPULATES_NODE_MAP
 -      def_bool y if SPARC64
 -
  config ARCH_SELECT_MEMORY_MODEL
        def_bool y if SPARC64
  
@@@ -384,7 -386,9 +385,7 @@@ config SCHED_M
          making when dealing with multi-core CPU chips at a cost of slightly
          increased overhead in some places. If unsure say N here.
  
 -if SPARC64
  source "kernel/Kconfig.preempt"
 -endif
  
  config CMDLINE_BOOL
        bool "Default bootloader kernel arguments"
diff --combined arch/tile/kernel/pci.c
@@@ -24,7 -24,6 +24,7 @@@
  #include <linux/irq.h>
  #include <linux/io.h>
  #include <linux/uaccess.h>
 +#include <linux/export.h>
  
  #include <asm/processor.h>
  #include <asm/sections.h>
@@@ -466,27 -465,6 +466,6 @@@ int pcibios_enable_device(struct pci_de
        return 0;
  }
  
- void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
- {
-       unsigned long start = pci_resource_start(dev, bar);
-       unsigned long len = pci_resource_len(dev, bar);
-       unsigned long flags = pci_resource_flags(dev, bar);
-       if (!len)
-               return NULL;
-       if (max && len > max)
-               len = max;
-       if (!(flags & IORESOURCE_MEM)) {
-               pr_info("PCI: Trying to map invalid resource %#lx\n", flags);
-               start = 0;
-       }
-       return (void __iomem *)start;
- }
- EXPORT_SYMBOL(pci_iomap);
  /****************************************************************
   *
   * Tile PCI config space read/write routines
diff --combined arch/x86/Kconfig
@@@ -26,8 -26,6 +26,8 @@@ config X8
        select HAVE_IOREMAP_PROT
        select HAVE_KPROBES
        select HAVE_MEMBLOCK
 +      select HAVE_MEMBLOCK_NODE_MAP
 +      select ARCH_DISCARD_MEMBLOCK
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select ARCH_WANT_FRAME_POINTERS
        select HAVE_DMA_ATTRS
@@@ -62,7 -60,6 +62,7 @@@
        select ANON_INODES
        select HAVE_ARCH_KMEMCHECK
        select HAVE_USER_RETURN_NOTIFIER
 +      select ARCH_BINFMT_ELF_RANDOMIZE_PIE
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_TEXT_POKE_SMP
        select HAVE_GENERIC_HARDIRQS
@@@ -78,6 -75,7 +78,7 @@@
        select HAVE_BPF_JIT if (X86_64 && NET)
        select CLKEVT_I8253
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
+       select GENERIC_IOMAP
  
  config INSTRUCTION_DECODER
        def_bool (KPROBES || PERF_EVENTS)
@@@ -143,9 -141,6 +144,6 @@@ config NEED_SG_DMA_LENGT
  config GENERIC_ISA_DMA
        def_bool ISA_DMA_API
  
- config GENERIC_IOMAP
-       def_bool y
  config GENERIC_BUG
        def_bool y
        depends on BUG
@@@ -207,6 -202,9 +205,6 @@@ config ZONE_DMA3
        bool
        default X86_64
  
 -config ARCH_POPULATES_NODE_MAP
 -      def_bool y
 -
  config AUDIT_ARCH
        bool
        default X86_64
@@@ -343,7 -341,6 +341,7 @@@ config X86_EXTENDED_PLATFOR
  
          If you enable this option then you'll be able to select support
          for the following (non-PC) 64 bit x86 platforms:
 +              Numascale NumaChip
                ScaleMP vSMP
                SGI Ultraviolet
  
  endif
  # This is an alphabetically sorted list of 64 bit extended platforms
  # Please maintain the alphabetic order if and when there are additions
 +config X86_NUMACHIP
 +      bool "Numascale NumaChip"
 +      depends on X86_64
 +      depends on X86_EXTENDED_PLATFORM
 +      depends on NUMA
 +      depends on SMP
 +      depends on X86_X2APIC
 +      depends on !EDAC_AMD64
 +      ---help---
 +        Adds support for Numascale NumaChip large-SMP systems. Needed to
 +        enable more than ~168 cores.
 +        If you don't have one of these, you should say N here.
  
  config X86_VSMP
        bool "ScaleMP vSMP"
@@@ -403,7 -388,7 +401,7 @@@ config X86_INTEL_C
          This option compiles in support for the CE4100 SOC for settop
          boxes and media devices.
  
 -config X86_INTEL_MID
 +config X86_WANT_INTEL_MID
        bool "Intel MID platform support"
        depends on X86_32
        depends on X86_EXTENDED_PLATFORM
          systems which do not have the PCI legacy interfaces (Moorestown,
          Medfield). If you are building for a PC class system say N here.
  
 -if X86_INTEL_MID
 +if X86_WANT_INTEL_MID
 +
 +config X86_INTEL_MID
 +      bool
  
  config X86_MRST
         bool "Moorestown MID platform"
        select SPI
        select INTEL_SCU_IPC
        select X86_PLATFORM_DEVICES
 +      select X86_INTEL_MID
        ---help---
          Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin
          Internet Device(MID) platform. Moorestown consists of two chips:
@@@ -1743,7 -1724,7 +1741,7 @@@ source "drivers/sfi/Kconfig
  
  config X86_APM_BOOT
        def_bool y
 -      depends on APM || APM_MODULE
 +      depends on APM
  
  menuconfig APM
        tristate "APM (Advanced Power Management) BIOS support"
diff --combined include/asm-generic/io.h
@@@ -19,6 -19,8 +19,8 @@@
  #include <asm-generic/iomap.h>
  #endif
  
+ #include <asm-generic/pci_iomap.h>
  #ifndef mmiowb
  #define mmiowb() do {} while (0)
  #endif
@@@ -283,9 -285,7 +285,7 @@@ static inline void writesb(const void _
  #define __io_virt(x) ((void __force *) (x))
  
  #ifndef CONFIG_GENERIC_IOMAP
- /* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
  struct pci_dev;
- extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
  static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
  {
  }
@@@ -327,7 -327,7 +327,7 @@@ static inline void __iomem *ioremap(phy
  #define ioremap_wc ioremap_nocache
  #endif
  
 -static inline void iounmap(void *addr)
 +static inline void iounmap(void __iomem *addr)
  {
  }
  #endif /* CONFIG_MMU */
diff --combined lib/Kconfig
@@@ -19,6 -19,13 +19,13 @@@ config RATIONA
  config GENERIC_FIND_FIRST_BIT
        bool
  
+ config GENERIC_PCI_IOMAP
+       bool
+ config GENERIC_IOMAP
+       bool
+       select GENERIC_PCI_IOMAP
  config CRC_CCITT
        tristate "CRC-CCITT functions"
        help
@@@ -244,9 -251,6 +251,9 @@@ config CPU_RMA
        bool
        depends on SMP
  
 +config DQL
 +      bool
 +
  #
  # Netlink attribute parsing support is select'ed if needed
  #
@@@ -273,9 -277,10 +280,9 @@@ config AVERAG
          If unsure, say N.
  
  config CORDIC
 -      tristate "Cordic function"
 +      tristate "CORDIC algorithm"
        help
 -        The option provides arithmetic function using cordic algorithm
 -        so its calculations are in fixed point. Modules can select this
 -        when they require this function. Module will be called cordic.
 +        This option provides an implementation of the CORDIC algorithm;
 +        calculations are in fixed point. Module will be called cordic.
  
  endmenu
diff --combined lib/Makefile
@@@ -17,7 -17,7 +17,7 @@@ lib-y := ctype.o string.o vsprintf.o cm
  lib-$(CONFIG_MMU) += ioremap.o
  lib-$(CONFIG_SMP) += cpumask.o
  
 -lib-y += kobject.o kref.o klist.o
 +lib-y += kobject.o klist.o
  
  obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
         bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
@@@ -33,6 -33,7 +33,7 @@@ endi
  
  lib-$(CONFIG_HOTPLUG) += kobject_uevent.o
  obj-$(CONFIG_GENERIC_IOMAP) += iomap.o
+ obj-$(CONFIG_GENERIC_PCI_IOMAP) += pci_iomap.o
  obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o
  obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o
  obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o
@@@ -115,8 -116,6 +116,8 @@@ obj-$(CONFIG_CPU_RMAP) += cpu_rmap.
  
  obj-$(CONFIG_CORDIC) += cordic.o
  
 +obj-$(CONFIG_DQL) += dynamic_queue_limits.o
 +
  hostprogs-y   := gen_crc32table
  clean-files   := crc32table.h