1. 09 10月, 2008 1 次提交
  2. 19 9月, 2008 1 次提交
  3. 07 5月, 2008 1 次提交
  4. 25 4月, 2008 1 次提交
  5. 18 4月, 2008 1 次提交
  6. 17 4月, 2008 2 次提交
  7. 03 2月, 2008 1 次提交
  8. 05 12月, 2007 1 次提交
    • A
      PHY: Add the phy_device_release device method. · 6f4a7f41
      Anton Vorontsov 提交于
      Lately I've got this nice badness on mdio bus removal:
      
      Device 'e0103120:06' does not have a release() function, it is broken and must be fixed.
      ------------[ cut here ]------------
      Badness at drivers/base/core.c:107
      NIP: c015c1a8 LR: c015c1a8 CTR: c0157488
      REGS: c34bdcf0 TRAP: 0700   Not tainted  (2.6.23-rc5-g9ebadfbb-dirty)
      MSR: 00029032 <EE,ME,IR,DR>  CR: 24088422  XER: 00000000
      ...
      [c34bdda0] [c015c1a8] device_release+0x78/0x80 (unreliable)
      [c34bddb0] [c01354cc] kobject_cleanup+0x80/0xbc
      [c34bddd0] [c01365f0] kref_put+0x54/0x6c
      [c34bdde0] [c013543c] kobject_put+0x24/0x34
      [c34bddf0] [c015c384] put_device+0x1c/0x2c
      [c34bde00] [c0180e84] mdiobus_unregister+0x2c/0x58
      ...
      
      Though actually there is nothing broken, it just device
      subsystem core expects another "pattern" of resource managment.
      
      This patch implement phy device's release function, thus
      we're getting rid of this badness.
      
      Also small hidden bug fixed, hope none other introduced. ;-)
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Acked-by: NAndy Fleming <afleming@freescale.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      6f4a7f41
  9. 02 12月, 2007 1 次提交
  10. 11 10月, 2007 1 次提交
    • M
      PHYLIB: IRQ event workqueue handling fixes · 0ac49527
      Maciej W. Rozycki 提交于
      Keep track of disable_irq_nosync() invocations and call enable_irq() the
      right number of times if work has been cancelled that would include them.
      
      Now that the call to flush_work_keventd() (problematic because of
      rtnl_mutex being held) has been replaced by cancel_work_sync() another
      issue has arisen and been left unresolved.  As the MDIO bus cannot be
      accessed from the interrupt context the PHY interrupt handler uses
      disable_irq_nosync() to prevent from looping and schedules some work to be
      done as a softirq, which, apart from handling the state change of the
      originating PHY, is responsible for reenabling the interrupt.  Now if the
      interrupt line is shared by another device and a call to the softirq
      handler has been cancelled, that call to enable_irq() never happens and the
      other device cannot use its interrupt anymore as its stuck disabled.
      
      I decided to use a counter rather than a flag because there may be more
      than one call to phy_change() cancelled in the queue -- a real one and a
      fake one triggered by free_irq() if DEBUG_SHIRQ is used, if nothing else.
      Therefore because of its nesting property enable_irq() has to be called the
      right number of times to match the number disable_irq_nosync() was called
      and restore the original state.  This DEBUG_SHIRQ feature is also the
      reason why free_irq() has to be called before cancel_work_sync().
      
      While at it I updated the comment about phy_stop_interrupts() being called
      from `keventd' -- this is no longer relevant as the use of
      cancel_work_sync() makes such an approach unnecessary.  OTOH a similar
      comment referring to flush_scheduled_work() in phy_stop() still applies as
      using cancel_work_sync() there would be dangerous.
      
      Checked with checkpatch.pl and at the run time (with and without
      DEBUG_SHIRQ).
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: Andy Fleming <afleming@freescale.com>
      Cc: Jeff Garzik <jgarzik@pobox.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      0ac49527
  11. 28 4月, 2007 1 次提交
  12. 02 12月, 2006 2 次提交
  13. 13 11月, 2006 1 次提交
  14. 20 8月, 2006 1 次提交
  15. 13 1月, 2006 1 次提交
  16. 06 11月, 2005 1 次提交
  17. 29 8月, 2005 1 次提交
  18. 11 8月, 2005 2 次提交
  19. 31 7月, 2005 1 次提交