1. 24 12月, 2013 4 次提交
  2. 14 12月, 2013 2 次提交
  3. 12 12月, 2013 1 次提交
  4. 25 10月, 2013 1 次提交
  5. 02 8月, 2013 1 次提交
  6. 01 8月, 2013 1 次提交
  7. 26 6月, 2013 1 次提交
  8. 17 6月, 2013 1 次提交
  9. 16 1月, 2013 3 次提交
  10. 22 11月, 2012 1 次提交
  11. 16 11月, 2012 10 次提交
  12. 15 10月, 2012 1 次提交
  13. 01 8月, 2012 1 次提交
  14. 13 7月, 2012 1 次提交
  15. 13 6月, 2012 4 次提交
  16. 18 5月, 2012 1 次提交
    • P
      serial: sh-sci: Fix for port types without BRI interrupts. · 0e8963de
      Paul Mundt 提交于
      In doing the evt2irq() + muxed vector conversion for various port types
      it became apparent that some of the legacy port types will presently
      error out due to the irq requesting logic attempting to acquire the
      non-existent BRI IRQ. This adds some sanity checks to the request/free
      path to ensure that non-existence of a source in itself is not an error.
      
      This should restore functionality for legacy PORT_SCI ports.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      0e8963de
  17. 12 4月, 2012 1 次提交
  18. 09 4月, 2012 1 次提交
  19. 30 3月, 2012 1 次提交
  20. 28 3月, 2012 1 次提交
    • Y
      serial: sh-sci: fix a race of DMA submit_tx on transfer · 49d4bcad
      Yoshii Takashi 提交于
      When DMA is enabled, sh-sci transfer begins with
       uart_start()
        sci_start_tx()
          if (cookie_tx < 0) schedule_work()
      Then, starts DMA when wq scheduled, -- (A)
       process_one_work()
        work_fn_rx()
         cookie_tx = desc->submit_tx()
      And finishes when DMA transfer ends, -- (B)
       sci_dma_tx_complete()
        async_tx_ack()
        cookie_tx = -EINVAL
        (possible another schedule_work())
      
      This A to B sequence is not reentrant, since controlling variables
      (for example, cookie_tx above) are not queues nor lists. So, they
      must be invoked as A B A B..., otherwise results in kernel crash.
      
      To ensure the sequence, sci_start_tx() seems to test if cookie_tx < 0
      (represents "not used") to call schedule_work().
      But cookie_tx will not be set (to a cookie, also means "used") until
      in the middle of work queue scheduled function work_fn_tx().
      
      This gap between the test and set allows the breakage of the sequence
      under the very frequently call of uart_start().
      Another gap between async_tx_ack() and another schedule_work() results
      in the same issue, too.
      
      This patch introduces a new condition "cookie_tx == 0" just to mark
      it is "busy" and assign it within spin-locked region to fill the gaps.
      Signed-off-by: NTakashi Yoshii <takashi.yoshii.zj@renesas.com>
      Reviewed-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      49d4bcad
  21. 21 3月, 2012 1 次提交
  22. 09 3月, 2012 1 次提交
    • R
      sh-sci / PM: Avoid deadlocking runtime PM · 048be431
      Rafael J. Wysocki 提交于
      The runtime PM of sh-sci devices is enabled when sci_probe() returns,
      so the pm_runtime_put_sync() executed by driver_probe_device()
      attempts to suspend the device.  Then, in some situations, a
      diagnostic message is printed to the console by one of the runtime
      suspend routines handling the sh-sci device, which causes synchronous
      runtime resume to be started from the device's own runtime suspend
      callback.  This causes rpm_resume() to be run eventually, which sees
      the RPM_SUSPENDING status set by rpm_suspend() and waits for it to
      change.  However, the device's runtime PM status cannot change at
      that point, because the routine that has set it waits for the
      rpm_suspend() to return.  A deadlock occurs as a result.
      
      To avoid that make sci_init_single() increment the device's
      runtime PM usage counter, so that it cannot be suspended by
      driver_probe_device().  That counter has to be decremented
      eventually, so make sci_startup() do that before starting to
      actually use the device and make sci_shutdown() increment it
      again before returning to balance the incrementation carried out by
      sci_startup().
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Tested-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      048be431