1. 03 Apr, 2008 2 commits
    • Benjamin Herrenschmidt's avatar
      [POWERPC] Fix iSeries hard irq enabling regression · ff3da2e0
      Benjamin Herrenschmidt authored
      A subtle bug sneaked into iSeries recently.  On this platform, we must
      not normally clear MSR:EE (the hardware external interrupt enable)
      except for short periods of time.  Taking an interrupt while
      soft-disabled doesn't cause us to clear it for example.
      
      The iSeries kernel expects to mostly run with MSR:EE enabled at all
      times except in a few exception entry/exit code paths.  Thus
      local_irq_enable() doesn't check if it needs to hard-enable as it
      expects this to be unnecessary on iSeries.
      
      However, hard_irq_disable() _does_ cause MSR:EE to be cleared,
      including on iSeries.  A call to it was recently added to the
      context switch code, thus causing interrupts to become disabled
      for a long periods of time, causing the iSeries watchdog to kick
      in under some circumstances and other nasty things.
      
      This patch fixes it by making local_irq_enable() properly re-enable
      MSR:EE on iSeries.  It basically removes a return statement here
      to make iSeries use the same code path as everybody else.  That does
      mean that we might occasionally get spurious decrementer interrupts
      but I don't think that matters.
      
      Another option would have been to make hard_irq_disable() a nop
      on iSeries but I didn't like it much, in case we have good reasons
      to hard-disable.
      
      Part of the patch is fixes to make sure the hard_enabled PACA field
      is properly set on iSeries as it used not to be before, since it
      was mostly unused.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      ff3da2e0
    • Laurent Pinchart's avatar
      [POWERPC] Fix CPM2 SCC1 clock initialization. · 025306f3
      Laurent Pinchart authored
      A missing break statement in a switch caused cpm2_clk_setup() to initialize
      SCC2 instead of SCC1.
      Signed-off-by: default avatarLaurent Pinchart <laurentp@cse-semaphore.com>
      Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
      025306f3
  2. 31 Mar, 2008 5 commits
  3. 30 Mar, 2008 30 commits
  4. 29 Mar, 2008 3 commits