1. 20 5月, 2014 6 次提交
  2. 12 5月, 2014 2 次提交
    • A
      powerpc: irq work racing with timer interrupt can result in timer interrupt hang · 8050936c
      Anton Blanchard 提交于
      I am seeing an issue where a CPU running perf eventually hangs.
      Traces show timer interrupts happening every 4 seconds even
      when a userspace task is running on the CPU. /proc/timer_list
      also shows pending hrtimers have not run in over an hour,
      including the scheduler.
      
      Looking closer, decrementers_next_tb is getting set to
      0xffffffffffffffff, and at that point we will never take
      a timer interrupt again.
      
      In __timer_interrupt() we set decrementers_next_tb to
      0xffffffffffffffff and rely on ->event_handler to update it:
      
              *next_tb = ~(u64)0;
              if (evt->event_handler)
                      evt->event_handler(evt);
      
      In this case ->event_handler is hrtimer_interrupt. This will eventually
      call back through the clockevents code with the next event to be
      programmed:
      
      static int decrementer_set_next_event(unsigned long evt,
                                            struct clock_event_device *dev)
      {
              /* Don't adjust the decrementer if some irq work is pending */
              if (test_irq_work_pending())
                      return 0;
              __get_cpu_var(decrementers_next_tb) = get_tb_or_rtc() + evt;
      
      If irq work came in between these two points, we will return
      before updating decrementers_next_tb and we never process a timer
      interrupt again.
      
      This looks to have been introduced by 0215f7d8 (powerpc: Fix races
      with irq_work). Fix it by removing the early exit and relying on
      code later on in the function to force an early decrementer:
      
             /* We may have raced with new irq work */
             if (test_irq_work_pending())
                     set_dec(1);
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Cc: stable@vger.kernel.org # 3.14+
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8050936c
    • G
      powerpc/powernv: Reset root port in firmware · 372cf124
      Gavin Shan 提交于
      Resetting root port has more stuff to do than that for PCIe switch
      ports and we should have resetting root port done in firmware instead
      of the kernel itself. The problem was introduced by commit 5b2e198e
      ("powerpc/powernv: Rework EEH reset").
      
      Cc: linux-stable <stable@vger.kernel.org>
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      372cf124
  3. 05 5月, 2014 1 次提交
  4. 01 5月, 2014 7 次提交
  5. 30 4月, 2014 2 次提交
    • P
      powerpc: memcpy optimization for 64bit LE · 00f554fa
      Philippe Bergheaud 提交于
      Unaligned stores take alignment exceptions on POWER7 running in little-endian.
      This is a dumb little-endian base memcpy that prevents unaligned stores.
      Once booted the feature fixup code switches over to the VMX copy loops
      (which are already endian safe).
      
      The question is what we do before that switch over. The base 64bit
      memcpy takes alignment exceptions on POWER7 so we can't use it as is.
      Fixing the causes of alignment exception would slow it down, because
      we'd need to ensure all loads and stores are aligned either through
      rotate tricks or bytewise loads and stores. Either would be bad for
      all other 64bit platforms.
      
      [ I simplified the loop a bit - Anton ]
      Signed-off-by: NPhilippe Bergheaud <felix@linux.vnet.ibm.com>
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      00f554fa
    • B
      Merge commit 'f3cae355' into next · 48ce3b7c
      Benjamin Herrenschmidt 提交于
      Merge Linus tree to get "cpufreq, powernv: Fix build failure on UP"
      to avoid build breakages in some of my test configs.
      48ce3b7c
  6. 28 4月, 2014 22 次提交