Merge tag 'virt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Linus Torvalds [Thu, 21 Feb 2013 23:40:16 +0000 (15:40 -0800)]
Pull ARM virtualization changes:
 "This contains parts of the ARM KVM support that have dependencies on
  other patches merged through the arm-soc tree.  In combination with
  patches coming through Russell's tree, this will finally add full
  support for the kernel based virtual machine on ARM, which has been
  awaited for some time now.

  Further, we now have a separate platform for virtual machines and qemu
  booting that is used by both Xen and KVM, separating these from the
  Versatile Express reference implementation.  Obviously, this new
  platform is multiplatform capable so it can be combined with existing
  machines in the same kernel."

* tag 'virt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (38 commits)
  ARM: arch_timer: include linux/errno.h
  arm: arch_timer: add missing inline in stub function
  ARM: KVM: arch_timers: Wire the init code and config option
  ARM: KVM: arch_timers: Add timer world switch
  ARM: KVM: arch_timers: Add guest timer core support
  ARM: KVM: Add VGIC configuration option
  ARM: KVM: VGIC initialisation code
  ARM: KVM: VGIC control interface world switch
  ARM: KVM: VGIC interrupt injection
  ARM: KVM: vgic: retire queued, disabled interrupts
  ARM: KVM: VGIC virtual CPU interface management
  ARM: KVM: VGIC distributor handling
  ARM: KVM: VGIC accept vcpu and dist base addresses from user space
  ARM: KVM: Initial VGIC infrastructure code
  ARM: KVM: Keep track of currently running vcpus
  KVM: ARM: Introduce KVM_ARM_SET_DEVICE_ADDR ioctl
  ARM: gic: add __ASSEMBLY__ guard to C definitions
  ARM: gic: define GICH offsets for VGIC support
  ARM: gic: add missing distributor defintions
  ARM: mach-virt: fixup machine descriptor after removal of sys_timer
  ...

1  2 
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/kernel/smp.c
arch/arm/mach-omap2/Kconfig
arch/arm64/Kconfig
drivers/clocksource/Makefile

diff --combined arch/arm/Kconfig
@@@ -4,6 -4,7 +4,7 @@@ config AR
        select ARCH_BINFMT_ELF_RANDOMIZE_PIE
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select ARCH_HAVE_CUSTOM_GPIO_H
+       select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_WANT_IPC_PARSE_VERSION
        select BUILDTIME_EXTABLE_SORT if MMU
        select CPU_PM if (SUSPEND || CPU_IDLE)
@@@ -36,6 -37,7 +37,6 @@@
        select HAVE_GENERIC_HARDIRQS
        select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
        select HAVE_IDE if PCI || ISA || PCMCIA
 -      select HAVE_IRQ_WORK
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_LZMA
        select HAVE_KERNEL_LZO
@@@ -260,8 -262,7 +261,8 @@@ config MM
  #
  choice
        prompt "ARM system type"
 -      default ARCH_MULTIPLATFORM
 +      default ARCH_VERSATILE if !MMU
 +      default ARCH_MULTIPLATFORM if MMU
  
  config ARCH_MULTIPLATFORM
        bool "Allow multiple platforms to be selected"
@@@ -344,10 -345,10 +345,10 @@@ config ARCH_BCM283
        select ARM_ERRATA_411920
        select ARM_TIMER_SP804
        select CLKDEV_LOOKUP
 +      select CLKSRC_OF
        select COMMON_CLK
        select CPU_V6
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
        select MULTI_IRQ_HANDLER
        select PINCTRL
        select PINCTRL_BCM2835
@@@ -393,7 -394,6 +394,7 @@@ config ARCH_GEMIN
  config ARCH_SIRF
        bool "CSR SiRF"
        select ARCH_REQUIRE_GPIOLIB
 +      select AUTO_ZRELADDR
        select COMMON_CLK
        select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_CHIP
@@@ -641,12 -641,11 +642,12 @@@ config ARCH_LPC32X
  config ARCH_TEGRA
        bool "NVIDIA Tegra"
        select ARCH_HAS_CPUFREQ
 +      select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
 +      select CLKSRC_OF
        select COMMON_CLK
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
@@@ -700,7 -699,6 +701,7 @@@ config ARCH_SHMOBIL
        select MULTI_IRQ_HANDLER
        select NEED_MACH_MEMORY_H
        select NO_IOPORT
 +      select PINCTRL
        select PM_GENERIC_DOMAINS if PM
        select SPARSE_IRQ
        help
@@@ -747,6 -745,7 +748,6 @@@ config ARCH_S3C24X
        select ARCH_HAS_CPUFREQ
        select ARCH_USES_GETTIMEOFFSET
        select CLKDEV_LOOKUP
 -      select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -789,6 -788,7 +790,6 @@@ config ARCH_S5P64X
        select CLKSRC_MMIO
        select CPU_V6
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -803,6 -803,7 +804,6 @@@ config ARCH_S5PC10
        select ARCH_USES_GETTIMEOFFSET
        select CLKDEV_LOOKUP
        select CPU_V7
 -      select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -820,6 -821,7 +821,6 @@@ config ARCH_S5PV21
        select CLKSRC_MMIO
        select CPU_V7
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -837,6 -839,7 +838,6 @@@ config ARCH_EXYNO
        select CLKDEV_LOOKUP
        select CPU_V7
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -871,6 -874,7 +872,6 @@@ config ARCH_U30
        select COMMON_CLK
        select CPU_ARM926T
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
        select HAVE_TCM
        select SPARSE_IRQ
        help
@@@ -896,12 -900,10 +897,12 @@@ config ARCH_NOMADI
        select ARCH_REQUIRE_GPIOLIB
        select ARM_AMBA
        select ARM_VIC
 +      select CLKSRC_NOMADIK_MTU
        select COMMON_CLK
        select CPU_ARM926T
        select GENERIC_CLOCKEVENTS
        select MIGHT_HAVE_CACHE_L2X0
 +      select USE_OF
        select PINCTRL
        select PINCTRL_STN8815
        select SPARSE_IRQ
@@@ -936,24 -938,33 +937,24 @@@ config ARCH_DAVINC
        help
          Support for TI's DaVinci platform.
  
 -config ARCH_OMAP
 -      bool "TI OMAP"
 +config ARCH_OMAP1
 +      bool "TI OMAP1"
        depends on MMU
        select ARCH_HAS_CPUFREQ
        select ARCH_HAS_HOLES_MEMORYMODEL
 -      select ARCH_REQUIRE_GPIOLIB
 -      select CLKSRC_MMIO
 -      select GENERIC_CLOCKEVENTS
 -      select HAVE_CLK
 -      help
 -        Support for TI's OMAP platform (OMAP1/2/3/4).
 -
 -config ARCH_VT8500_SINGLE
 -      bool "VIA/WonderMedia 85xx"
 -      select ARCH_HAS_CPUFREQ
 +      select ARCH_OMAP
        select ARCH_REQUIRE_GPIOLIB
        select CLKDEV_LOOKUP
 -      select COMMON_CLK
 -      select CPU_ARM926T
 +      select CLKSRC_MMIO
        select GENERIC_CLOCKEVENTS
 -      select GENERIC_GPIO
 +      select GENERIC_IRQ_CHIP
        select HAVE_CLK
 -      select MULTI_IRQ_HANDLER
 -      select SPARSE_IRQ
 -      select USE_OF
 +      select HAVE_IDE
 +      select IRQ_DOMAIN
 +      select NEED_MACH_IO_H if PCCARD
 +      select NEED_MACH_MEMORY_H
        help
 -        Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
 +        Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
  
  endchoice
  
@@@ -1076,12 -1087,17 +1077,12 @@@ source "arch/arm/mach-realview/Kconfig
  source "arch/arm/mach-sa1100/Kconfig"
  
  source "arch/arm/plat-samsung/Kconfig"
 -source "arch/arm/plat-s3c24xx/Kconfig"
  
  source "arch/arm/mach-socfpga/Kconfig"
  
  source "arch/arm/plat-spear/Kconfig"
  
  source "arch/arm/mach-s3c24xx/Kconfig"
 -if ARCH_S3C24XX
 -source "arch/arm/mach-s3c2412/Kconfig"
 -source "arch/arm/mach-s3c2440/Kconfig"
 -endif
  
  if ARCH_S3C64XX
  source "arch/arm/mach-s3c64xx/Kconfig"
@@@ -1112,6 -1128,8 +1113,8 @@@ source "arch/arm/mach-versatile/Kconfig
  source "arch/arm/mach-vexpress/Kconfig"
  source "arch/arm/plat-versatile/Kconfig"
  
+ source "arch/arm/mach-virt/Kconfig"
  source "arch/arm/mach-vt8500/Kconfig"
  
  source "arch/arm/mach-w90x900/Kconfig"
@@@ -1435,10 -1453,6 +1438,10 @@@ config ISA_DM
        bool
        select ISA_DMA_API
  
 +config ARCH_NO_VIRT_TO_BUS
 +      def_bool y
 +      depends on !ARCH_RPC && !ARCH_NETWINDER && !ARCH_SHARK
 +
  # Select ISA DMA interface
  config ISA_DMA_API
        bool
@@@ -1520,6 -1534,7 +1523,6 @@@ config SM
  
  config SMP_ON_UP
        bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
        depends on SMP && !XIP_KERNEL
        default y
        help
@@@ -1560,9 -1575,10 +1563,10 @@@ config HAVE_ARM_SC
        help
          This option enables support for the ARM system coherency unit
  
- config ARM_ARCH_TIMER
+ config HAVE_ARM_ARCH_TIMER
        bool "Architected timer support"
        depends on CPU_V7
+       select ARM_ARCH_TIMER
        help
          This option enables support for the ARM architected timer
  
@@@ -1635,7 -1651,7 +1639,7 @@@ config ARCH_NR_GPI
        default 355 if ARCH_U8500
        default 264 if MACH_H4700
        default 512 if SOC_OMAP5
 -      default 288 if ARCH_VT8500
 +      default 288 if ARCH_VT8500 || ARCH_SUNXI
        default 0
        help
          Maximum number of GPIOs in the system.
@@@ -1653,9 -1669,6 +1657,9 @@@ config H
        default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
        default 100
  
 +config SCHED_HRTICK
 +      def_bool HIGH_RES_TIMERS
 +
  config THUMB2_KERNEL
        bool "Compile the kernel in Thumb-2 mode"
        depends on CPU_V7 && !CPU_V6 && !CPU_V6K
@@@ -1720,7 -1733,7 +1724,7 @@@ config AEAB
  
  config OABI_COMPAT
        bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)"
 -      depends on AEABI && EXPERIMENTAL && !THUMB2_KERNEL
 +      depends on AEABI && !THUMB2_KERNEL
        default y
        help
          This option preserves the old syscall interface along with the
@@@ -1844,6 -1857,7 +1848,6 @@@ config SECCOM
  
  config CC_STACKPROTECTOR
        bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
        help
          This option turns on the -fstack-protector GCC feature. This
          feature puts, at the beginning of functions, a canary value on
@@@ -1860,7 -1874,7 +1864,7 @@@ config XEN_DOM
  
  config XEN
        bool "Xen guest support on ARM (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL && ARM && OF
 +      depends on ARM && OF
        depends on CPU_V7 && !CPU_V6
        help
          Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
@@@ -1929,7 -1943,7 +1933,7 @@@ config ZBOOT_RO
  
  choice
        prompt "Include SD/MMC loader in zImage (EXPERIMENTAL)"
 -      depends on ZBOOT_ROM && ARCH_SH7372 && EXPERIMENTAL
 +      depends on ZBOOT_ROM && ARCH_SH7372
        default ZBOOT_ROM_NONE
        help
          Include experimental SD/MMC loading code in the ROM-able zImage.
@@@ -1958,7 -1972,7 +1962,7 @@@ endchoic
  
  config ARM_APPENDED_DTB
        bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
 -      depends on OF && !ZBOOT_ROM && EXPERIMENTAL
 +      depends on OF && !ZBOOT_ROM
        help
          With this option, the boot code will look for a device tree binary
          (DTB) appended to zImage
@@@ -2076,7 -2090,7 +2080,7 @@@ config XIP_PHYS_ADD
  
  config KEXEC
        bool "Kexec system call (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL && (!SMP || HOTPLUG_CPU)
 +      depends on (!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
@@@ -2098,6 -2112,7 +2102,6 @@@ config ATAGS_PRO
  
  config CRASH_DUMP
        bool "Build kdump crash kernel (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
        help
          Generate crash dump after being started by kexec. This should
          be normally only set in special crash dump kernels which are
@@@ -2164,7 -2179,7 +2168,7 @@@ config CPU_FREQ_S3
  
  config CPU_FREQ_S3C24XX
        bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)"
 -      depends on ARCH_S3C24XX && CPU_FREQ && EXPERIMENTAL
 +      depends on ARCH_S3C24XX && CPU_FREQ
        select CPU_FREQ_S3C
        help
          This enables the CPUfreq driver for the Samsung S3C24XX family
  
  config CPU_FREQ_S3C24XX_PLL
        bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)"
 -      depends on CPU_FREQ_S3C24XX && EXPERIMENTAL
 +      depends on CPU_FREQ_S3C24XX
        help
          Compile in support for changing the PLL frequency from the
          S3C24XX series CPUfreq driver. The PLL takes time to settle
@@@ -2239,7 -2254,7 +2243,7 @@@ config FPE_NWFPE_X
  
  config FPE_FASTFPE
        bool "FastFPE math emulation (EXPERIMENTAL)"
 -      depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 && EXPERIMENTAL
 +      depends on (!AEABI || OABI_COMPAT) && !CPU_32v3
        ---help---
          Say Y here to include the FAST floating point emulator in the kernel.
          This is an experimental much faster emulator which now also has full
diff --combined arch/arm/Makefile
@@@ -173,7 -173,7 +173,7 @@@ machine-$(CONFIG_ARCH_PRIMA2)              += prima
  machine-$(CONFIG_ARCH_PXA)            += pxa
  machine-$(CONFIG_ARCH_REALVIEW)               += realview
  machine-$(CONFIG_ARCH_RPC)            += rpc
 -machine-$(CONFIG_ARCH_S3C24XX)                += s3c24xx s3c2412 s3c2440
 +machine-$(CONFIG_ARCH_S3C24XX)                += s3c24xx
  machine-$(CONFIG_ARCH_S3C64XX)                += s3c64xx
  machine-$(CONFIG_ARCH_S5P64X0)                += s5p64x0
  machine-$(CONFIG_ARCH_S5PC100)                += s5pc100
@@@ -194,6 -194,7 +194,7 @@@ machine-$(CONFIG_ARCH_SOCFPGA)             += socf
  machine-$(CONFIG_ARCH_SPEAR13XX)      += spear13xx
  machine-$(CONFIG_ARCH_SPEAR3XX)               += spear3xx
  machine-$(CONFIG_MACH_SPEAR600)               += spear6xx
+ machine-$(CONFIG_ARCH_VIRT)           += virt
  machine-$(CONFIG_ARCH_ZYNQ)           += zynq
  machine-$(CONFIG_ARCH_SUNXI)          += sunxi
  
@@@ -204,7 -205,7 +205,7 @@@ plat-$(CONFIG_ARCH_S3C64XX)        += samsun
  plat-$(CONFIG_PLAT_IOP)               += iop
  plat-$(CONFIG_PLAT_ORION)     += orion
  plat-$(CONFIG_PLAT_PXA)               += pxa
 -plat-$(CONFIG_PLAT_S3C24XX)   += s3c24xx samsung
 +plat-$(CONFIG_PLAT_S3C24XX)   += samsung
  plat-$(CONFIG_PLAT_S5P)               += samsung
  plat-$(CONFIG_PLAT_SPEAR)     += spear
  plat-$(CONFIG_PLAT_VERSATILE) += versatile
diff --combined arch/arm/kernel/smp.c
@@@ -125,6 -125,18 +125,6 @@@ void __init smp_init_cpus(void
                smp_ops.smp_init_cpus();
  }
  
 -static void __init platform_smp_prepare_cpus(unsigned int max_cpus)
 -{
 -      if (smp_ops.smp_prepare_cpus)
 -              smp_ops.smp_prepare_cpus(max_cpus);
 -}
 -
 -static void __cpuinit platform_secondary_init(unsigned int cpu)
 -{
 -      if (smp_ops.smp_secondary_init)
 -              smp_ops.smp_secondary_init(cpu);
 -}
 -
  int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
  {
        if (smp_ops.smp_boot_secondary)
@@@ -142,6 -154,12 +142,6 @@@ static int platform_cpu_kill(unsigned i
        return 1;
  }
  
 -static void platform_cpu_die(unsigned int cpu)
 -{
 -      if (smp_ops.cpu_die)
 -              smp_ops.cpu_die(cpu);
 -}
 -
  static int platform_cpu_disable(unsigned int cpu)
  {
        if (smp_ops.cpu_disable)
@@@ -239,8 -257,7 +239,8 @@@ void __ref cpu_die(void
         * actual CPU shutdown procedure is at least platform (if not
         * CPU) specific.
         */
 -      platform_cpu_die(cpu);
 +      if (smp_ops.cpu_die)
 +              smp_ops.cpu_die(cpu);
  
        /*
         * Do not return to the idle loop - jump back to the secondary
@@@ -307,8 -324,7 +307,8 @@@ asmlinkage void __cpuinit secondary_sta
        /*
         * Give the platform a chance to do its own initialisation.
         */
 -      platform_secondary_init(cpu);
 +      if (smp_ops.smp_secondary_init)
 +              smp_ops.smp_secondary_init(cpu);
  
        notify_cpu_starting(cpu);
  
@@@ -383,8 -399,8 +383,8 @@@ void __init smp_prepare_cpus(unsigned i
                /*
                 * Initialise the present map, which describes the set of CPUs
                 * actually populated at the present time. A platform should
 -               * re-initialize the map in platform_smp_prepare_cpus() if
 -               * present != possible (e.g. physical hotplug).
 +               * re-initialize the map in the platforms smp_prepare_cpus()
 +               * if present != possible (e.g. physical hotplug).
                 */
                init_cpu_present(cpu_possible_mask);
  
                 * Initialise the SCU if there are more than one CPU
                 * and let them know where to start.
                 */
 -              platform_smp_prepare_cpus(max_cpus);
 +              if (smp_ops.smp_prepare_cpus)
 +                      smp_ops.smp_prepare_cpus(max_cpus);
        }
  }
  
@@@ -461,14 -476,8 +461,8 @@@ u64 smp_irq_stat_cpu(unsigned int cpu
   */
  static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent);
  
- static void ipi_timer(void)
- {
-       struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
-       evt->event_handler(evt);
- }
  #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
- static void smp_timer_broadcast(const struct cpumask *mask)
+ void tick_broadcast(const struct cpumask *mask)
  {
        smp_cross_call(mask, IPI_TIMER);
  }
@@@ -516,7 -525,6 +510,6 @@@ static void __cpuinit percpu_timer_setu
        struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
  
        evt->cpumask = cpumask_of(cpu);
-       evt->broadcast = smp_timer_broadcast;
  
        if (!lt_ops || lt_ops->setup(evt))
                broadcast_timer_setup(evt);
@@@ -582,11 -590,13 +575,13 @@@ void handle_IPI(int ipinr, struct pt_re
        case IPI_WAKEUP:
                break;
  
+ #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
        case IPI_TIMER:
                irq_enter();
-               ipi_timer();
+               tick_receive_broadcast();
                irq_exit();
                break;
+ #endif
  
        case IPI_RESCHEDULE:
                scheduler_ipi();
@@@ -1,26 -1,3 +1,26 @@@
 +config ARCH_OMAP
 +      bool
 +
 +config ARCH_OMAP2PLUS
 +      bool "TI OMAP2/3/4/5 SoCs with device tree support" if (ARCH_MULTI_V6 || ARCH_MULTI_V7)
 +      select ARCH_HAS_CPUFREQ
 +      select ARCH_HAS_HOLES_MEMORYMODEL
 +      select ARCH_OMAP
 +      select ARCH_REQUIRE_GPIOLIB
 +      select CLKDEV_LOOKUP
 +      select CLKSRC_MMIO
 +      select GENERIC_CLOCKEVENTS
 +      select GENERIC_IRQ_CHIP
 +      select HAVE_CLK
 +      select OMAP_DM_TIMER
 +      select PINCTRL
 +      select PROC_DEVICETREE if PROC_FS
 +      select SPARSE_IRQ
 +      select USE_OF
 +      help
 +        Systems based on OMAP2, OMAP3, OMAP4 or OMAP5
 +
 +
  if ARCH_OMAP2PLUS
  
  menu "TI OMAP2/3/4 Specific Features"
@@@ -99,12 -76,12 +99,12 @@@ config ARCH_OMAP
  
  config SOC_OMAP5
        bool "TI OMAP5"
-       select ARM_ARCH_TIMER
        select ARM_CPU_SUSPEND if PM
        select ARM_GIC
        select CPU_V7
        select HAVE_SMP
        select COMMON_CLK
+       select HAVE_ARM_ARCH_TIMER
  
  comment "OMAP Core Type"
        depends on ARCH_OMAP2
@@@ -188,6 -165,12 +188,6 @@@ config MACH_OMAP_H
        select OMAP_DEBUG_DEVICES
        select OMAP_PACKAGE_ZAF
  
 -config MACH_OMAP_APOLLON
 -      bool "OMAP 2420 Apollon board"
 -      depends on SOC_OMAP2420
 -      default y
 -      select OMAP_PACKAGE_ZAC
 -
  config MACH_OMAP_2430SDP
        bool "OMAP 2430 SDP board"
        depends on SOC_OMAP2430
@@@ -414,7 -397,7 +414,7 @@@ config OMAP3_SDRC_AC_TIMIN
  
  config OMAP4_ERRATA_I688
        bool "OMAP4 errata: Async Bridge Corruption"
 -      depends on ARCH_OMAP4
 +      depends on ARCH_OMAP4 && !ARCH_MULTIPLATFORM
        select ARCH_HAS_BARRIERS
        help
          If a data is stalled inside asynchronous bridge because of back
diff --combined arch/arm64/Kconfig
@@@ -2,8 -2,8 +2,9 @@@ config ARM6
        def_bool y
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
 +      select ARCH_WANT_FRAME_POINTERS
        select ARM_AMBA
+       select ARM_ARCH_TIMER
        select CLONE_BACKWARDS
        select COMMON_CLK
        select GENERIC_CLOCKEVENTS
@@@ -22,6 -22,7 +23,6 @@@
        select HAVE_GENERIC_DMA_COHERENT
        select HAVE_GENERIC_HARDIRQS
        select HAVE_HW_BREAKPOINT if PERF_EVENTS
 -      select HAVE_IRQ_WORK
        select HAVE_MEMBLOCK
        select HAVE_PERF_EVENTS
        select IRQ_DOMAIN
@@@ -17,7 -17,6 +17,7 @@@ obj-$(CONFIG_CLKSRC_DBX500_PRCMU)     += cl
  obj-$(CONFIG_ARMADA_370_XP_TIMER)     += time-armada-370-xp.o
  obj-$(CONFIG_ARCH_BCM2835)    += bcm2835_timer.o
  obj-$(CONFIG_SUNXI_TIMER)     += sunxi_timer.o
 +obj-$(CONFIG_ARCH_TEGRA)      += tegra20_timer.o
  obj-$(CONFIG_VT8500_TIMER)    += vt8500_timer.o
  
- obj-$(CONFIG_CLKSRC_ARM_GENERIC)      += arm_generic.o
+ obj-$(CONFIG_ARM_ARCH_TIMER)          += arm_arch_timer.o