1. 19 8月, 2011 1 次提交
    • I
      sparc: fix array bounds error setting up PCIC NMI trap · 4a0342ca
      Ian Campbell 提交于
        CC      arch/sparc/kernel/pcic.o
      arch/sparc/kernel/pcic.c: In function 'pcic_probe':
      arch/sparc/kernel/pcic.c:359:33: error: array subscript is above array bounds [-Werror=array-bounds]
      arch/sparc/kernel/pcic.c:359:8: error: array subscript is above array bounds [-Werror=array-bounds]
      arch/sparc/kernel/pcic.c:360:33: error: array subscript is above array bounds [-Werror=array-bounds]
      arch/sparc/kernel/pcic.c:360:8: error: array subscript is above array bounds [-Werror=array-bounds]
      arch/sparc/kernel/pcic.c:361:33: error: array subscript is above array bounds [-Werror=array-bounds]
      arch/sparc/kernel/pcic.c:361:8: error: array subscript is above array bounds [-Werror=array-bounds]
      cc1: all warnings being treated as errors
      
      I'm not particularly familiar with sparc but t_nmi (defined in head_32.S via
      the TRAP_ENTRY macro) and pcic_nmi_trap_patch (defined in entry.S) both appear
      to be 4 instructions long and I presume from the usage that instructions are
      int sized.
      Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: sparclinux@vger.kernel.org
      Reviewed-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4a0342ca
  2. 16 8月, 2011 3 次提交
    • D
      sparc64: Set HAVE_C_RECORDMCOUNT · 178a2960
      David S. Miller 提交于
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      178a2960
    • M
      sparc32: unbreak arch_write_unlock() · 3f6aa0b1
      Mikael Pettersson 提交于
      The sparc32 version of arch_write_unlock() is just a plain assignment.
      Unfortunately this allows the compiler to schedule side-effects in a
      protected region to occur after the HW-level unlock, which is broken.
      E.g., the following trivial test case gets miscompiled:
      
      	#include <linux/spinlock.h>
      	rwlock_t lock;
      	int counter;
      	void foo(void) { write_lock(&lock); ++counter; write_unlock(&lock); }
      
      Fixed by adding a compiler memory barrier to arch_write_unlock().  The
      sparc64 version combines the barrier and assignment into a single asm(),
      and implements the operation as a static inline, so that's what I did too.
      
      Compile-tested with sparc32_defconfig + CONFIG_SMP=y.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3f6aa0b1
    • M
      sparc64: remove unnecessary macros from spinlock_64.h · a0fba3eb
      Mikael Pettersson 提交于
      The sparc64 spinlock_64.h contains a number of operations defined
      first as static inline functions, and then as macros with the same
      names and parameters as the functions.  Maybe this was needed at
      some point in the past, but now nothing seems to depend on these
      macros (checked with a recursive grep looking for ifdefs on these
      names).  Other archs don't define these identity-macros.
      
      So this patch deletes these unnecessary macros.
      
      Compile-tested with sparc64_defconfig.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a0fba3eb
  3. 12 8月, 2011 1 次提交
  4. 11 8月, 2011 10 次提交
  5. 10 8月, 2011 10 次提交
  6. 09 8月, 2011 5 次提交
  7. 08 8月, 2011 5 次提交
  8. 06 8月, 2011 5 次提交
    • D
      sparc: Fix build with DEBUG_PAGEALLOC enabled. · 0785a8e8
      David S. Miller 提交于
      arch/sparc/mm/init_64.c:1622:22: error: unused variable '__swapper_4m_tsb_phys_patch_end' [-Werror=unused-variable]
      arch/sparc/mm/init_64.c:1621:22: error: unused variable '__swapper_4m_tsb_phys_patch' [-Werror=unused-variable]
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0785a8e8
    • C
      OMAP2+: PM: SmartReflex: use put_sync_suspend for IRQ-safe disabling · 98333b3d
      Colin Cross 提交于
      omap_sr_disable_reset_volt is called with irqs off in omapx_enter_sleep,
      as part of idle sequence, this eventually calls sr_disable and
      pm_runtime_put_sync. pm_runtime_put_sync calls rpm_idle, which will
      enable interrupts in order to call the callback. In this short interval
      when interrupts are enabled, scenarios such as the following can occur:
      while interrupts are enabled, the timer interrupt that is supposed to
      wake the device out of idle occurs and is acked, so when the CPU finally
      goes to off, the timer is already gone, missing a wakeup event.
      
      Further, as the documentation for runtime states:"
       However, subsystems can use the pm_runtime_irq_safe() helper function
       to tell the PM core that a device's ->runtime_suspend() and ->runtime_resume()
       callbacks should be invoked in atomic context with interrupts disabled
       (->runtime_idle() is still invoked the default way)."
      
      Hence, replace pm_runtime_put_sync with pm_runtime_put_sync_suspend
      to invoke the suspend handler and shut off the fclk for SmartReflex
      module instead of using the idle handler in interrupt disabled context.
      Signed-off-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NColin Cross <ccross@google.com>
      [khilman@ti.com: minor Subject edits]
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      98333b3d
    • K
      OMAP3: beagle: don't touch omap_device internals · 8c7f6594
      Kevin Hilman 提交于
      Board code should not touch omap_device internals.  To get the MPU/IVA devices,
      use existing APIs: omap2_get_mpu_device(), omap2_get_iva_device().
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      8c7f6594
    • K
      OMAP1: enable GENERIC_IRQ_CHIP · b66a4026
      Kevin Hilman 提交于
      OMAP1 needs this also since GPIO driver (common for all OMAPs) is
      being converted to use generic IRQ chip.
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      b66a4026
    • N
      OMAP3+: SR: ensure pm-runtime callbacks can be invoked with IRQs disabled · e13d8f38
      Nishanth Menon 提交于
      SmartReflex should be disabled while entering low power mode due to
      a) SmartReflex values are not defined for retention voltage, further
      b) with SmartReflex enabled, if CPU enters lower c-states, FSM will try
      to bump the voltage to current OPP's voltage for which it has entered c-state;
      hence SmartReflex needs to be disabled for MPU, CORE and IVA voltage
      domains in idle path before enabling auto retention voltage achievement
      on the device.
      
      However, since the current pm_runtime setup for SmartReflex devices are
      setup to allow callbacks to be invoked with interrupts enabled, calling
      SmartReflex enable/disable from other contexts such as idle paths
      where preemption is disabled causes warnings such as the following
      indicating of a potential race.
      [   82.023895] [<c04d079c>] (__irq_svc+0x3c/0x120) from [<c04d0484>] (_raw_spin_unlock_irq+0x28/0x2c)
      [   82.023895] [<c04d0484>] (_raw_spin_unlock_irq+0x28/0x2c) from [<c0323234>] (rpm_callback+0x4c/0x68)
      [   82.023956] [<c0323234>] (rpm_callback+0x4c/0x68) from [<c0323f7c>] (rpm_resume+0x338/0x53c)
      [   82.023956] [<c0323f7c>] (rpm_resume+0x338/0x53c) from [<c03243f4>] (__pm_runtime_resume+0x48/0x60)
      [   82.023986] [<c03243f4>] (__pm_runtime_resume+0x48/0x60) from [<c008aee0>] (sr_enable+0xa8/0x19c)
      [   82.023986] [<c008aee0>] (sr_enable+0xa8/0x19c) from [<c008b2fc>] (omap_sr_enable+0x50/0x90)
      [   82.024017] [<c008b2fc>] (omap_sr_enable+0x50/0x90) from [<c00888c0>] (omap4_enter_sleep+0x138/0x168)
      
      Instead, we use pm_runtime_irq_safe to tell the PM core that callbacks can be
      invoked in interrupt disabled contexts.
      Acked-by: NRajendra Nayak <rnayak@ti.com>
      Signed-off-by: NNishanth Menon <nm@ti.com>
      [khilman@ti.com: minor changelog edits]
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      e13d8f38