]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 3 Mar 2013 19:54:39 +0000 (11:54 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 3 Mar 2013 19:54:39 +0000 (11:54 -0800)
Pull late ARM updates from Russell King:
 "Here is the late set of ARM updates for this merge window; in here is:

   - The ARM parts of the broadcast timer support, core parts merged
     through tglx's tree.  This was left over from the previous merge to
     allow the dependency on tglx's tree to be resolved.

   - A fix to the VFP code which shows up on Raspberry Pi's, as well as
     fixing the fallout from a previous commit in this area.

   - A number of smaller fixes scattered throughout the ARM tree"

* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm:
  ARM: Fix broken commit 0cc41e4a21d43 corrupting kernel messages
  ARM: fix scheduling while atomic warning in alignment handling code
  ARM: VFP: fix emulation of second VFP instruction
  ARM: 7656/1: uImage: Error out on build of multiplatform without LOADADDR
  ARM: 7640/1: memory: tegra_ahb_enable_smmu() depends on TEGRA_IOMMU_SMMU
  ARM: 7654/1: Preserve L_PTE_VALID in pte_modify()
  ARM: 7653/2: do not scale loops_per_jiffy when using a constant delay clock
  ARM: 7651/1: remove unused smp_timer_broadcast #define

1  2 
arch/arm/kernel/smp.c
drivers/amba/tegra-ahb.c

diff --combined arch/arm/kernel/smp.c
index 5f73f7018f502a6f5833781bdaed1aa6ce9a3453,87d30e704feca4edddf821d2268569b41ef35c53..1bdfd87c8e41d026bcaf9fe1893c2645e6dce6dd
@@@ -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);
        }
  }
  
@@@ -401,8 -416,7 +401,8 @@@ static void (*smp_cross_call)(const str
  
  void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int))
  {
 -      smp_cross_call = fn;
 +      if (!smp_cross_call)
 +              smp_cross_call = fn;
  }
  
  void arch_send_call_function_ipi_mask(const struct cpumask *mask)
@@@ -466,8 -480,6 +466,6 @@@ void tick_broadcast(const struct cpumas
  {
        smp_cross_call(mask, IPI_TIMER);
  }
- #else
- #define smp_timer_broadcast   NULL
  #endif
  
  static void broadcast_timer_set_mode(enum clock_event_mode mode,
@@@ -674,6 -686,9 +672,9 @@@ static int cpufreq_callback(struct noti
        if (freq->flags & CPUFREQ_CONST_LOOPS)
                return NOTIFY_OK;
  
+       if (arm_delay_ops.const_clock)
+               return NOTIFY_OK;
        if (!per_cpu(l_p_j_ref, cpu)) {
                per_cpu(l_p_j_ref, cpu) =
                        per_cpu(cpu_data, cpu).loops_per_jiffy;
diff --combined drivers/amba/tegra-ahb.c
index ab92785f54dccaed562b8f9310f46c5f2b30cc80,1247052b9db6abd54f254d69507095d34341c4ca..093c435549631db21748b17827a433d8428ad862
@@@ -20,7 -20,6 +20,7 @@@
   *
   */
  
 +#include <linux/err.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
  #include <linux/platform_device.h>
@@@ -130,7 -129,7 +130,7 @@@ static inline void gizmo_writel(struct 
        writel(value, ahb->regs + offset);
  }
  
- #ifdef CONFIG_ARCH_TEGRA_3x_SOC
+ #ifdef CONFIG_TEGRA_IOMMU_SMMU
  static int tegra_ahb_match_by_smmu(struct device *dev, void *data)
  {
        struct tegra_ahb *ahb = dev_get_drvdata(dev);
@@@ -258,9 -257,9 +258,9 @@@ static int tegra_ahb_probe(struct platf
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res)
                return -ENODEV;
 -      ahb->regs = devm_request_and_ioremap(&pdev->dev, res);
 -      if (!ahb->regs)
 -              return -EBUSY;
 +      ahb->regs = devm_ioremap_resource(&pdev->dev, res);
 +      if (IS_ERR(ahb->regs))
 +              return PTR_ERR(ahb->regs);
  
        ahb->dev = &pdev->dev;
        platform_set_drvdata(pdev, ahb);