1. 03 4月, 2008 3 次提交
    • B
      [POWERPC] Fix deadlock with mmu_hash_lock in hash_page_sync · b991f05f
      Benjamin Herrenschmidt 提交于
      hash_page_sync() takes and releases the low level mmu hash
      lock in order to sync with other processors disposing of page
      tables.  Because that lock can be needed to service hash misses
      triggered by interrupt handlers, taking it must be done with
      interrupts off.  However, hash_page_sync() appears to be called
      with interrupts enabled, thus causing occasional deadlocks.
      
      We fix it by making sure hash_page_sync() masks interrupts while
      holding the lock.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      b991f05f
    • B
      [POWERPC] Fix iSeries hard irq enabling regression · ff3da2e0
      Benjamin Herrenschmidt 提交于
      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: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      ff3da2e0
    • L
      [POWERPC] Fix CPM2 SCC1 clock initialization. · 025306f3
      Laurent Pinchart 提交于
      A missing break statement in a switch caused cpm2_clk_setup() to initialize
      SCC2 instead of SCC1.
      Signed-off-by: NLaurent Pinchart <laurentp@cse-semaphore.com>
      Signed-off-by: NKumar Gala <galak@kernel.crashing.org>
      025306f3
  2. 01 4月, 2008 2 次提交
  3. 31 3月, 2008 33 次提交
  4. 30 3月, 2008 2 次提交