1. 25 3月, 2009 29 次提交
  2. 23 3月, 2009 4 次提交
    • A
      ucc_geth: Fix oops when using fixed-link support · 61fa9dcf
      Anton Vorontsov 提交于
      commit b1c4a9dd ("ucc_geth: Change
      uec phy id to the same format as gianfar's") introduced a regression
      in the ucc_geth driver that causes this oops when fixed-link is used:
      
      Unable to handle kernel paging request for data at address 0x00000000
      Faulting instruction address: 0xc0151270
      Oops: Kernel access of bad area, sig: 11 [#1]
      TMCUTU
      NIP: c0151270 LR: c0151270 CTR: c0017760
      REGS: cf81fa60 TRAP: 0300   Not tainted  (2.6.29-rc8)
      MSR: 00009032 <EE,ME,IR,DR>  CR: 24024042  XER: 20000000
      DAR: 00000000, DSISR: 20000000
      TASK = cf81cba0[1] 'swapper' THREAD: cf81e000
      GPR00: c0151270 cf81fb10 cf81cba0 00000000 c0272e20 c025f354 00001e80
      cf86b08c
      GPR08: d1068200 cffffb74 06000000 d106c200 42024042 10085148 0fffd000
      0ffc81a0
      GPR16: 00000001 00000001 00000000 007ffeb0 00000000 0000c000 cf83f36c
      cf83f000
      GPR24: 00000030 cf83f360 cf81fb20 00000000 d106c200 20000000 00001e80
      cf83f360
      NIP [c0151270] ucc_geth_open+0x330/0x1efc
      LR [c0151270] ucc_geth_open+0x330/0x1efc
      Call Trace:
      [cf81fb10] [c0151270] ucc_geth_open+0x330/0x1efc (unreliable)
      [cf81fba0] [c0187638] dev_open+0xbc/0x12c
      [cf81fbc0] [c0187e38] dev_change_flags+0x8c/0x1b0
      
      This patch fixes the issue by removing offending (and somewhat
      duplicate) code from init_phy() routine, and changes _probe()
      function to use uec_mdio_bus_name().
      
      Also, since we fully construct phy_bus_id in the _probe() routine,
      we no longer need ->phy_address and ->mdio_bus fields in
      ucc_geth_info structure.
      
      I wish the patch would be a bit shorter, but it seems like the only
      way to fix the issue in a sane way. Luckily, the patch has been
      tested with real PHYs and fixed-link, so no further regressions
      expected.
      Reported-by: NJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Tested-by: NJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      61fa9dcf
    • D
      dm9000: locking bugfix · e3162d38
      David Brownell 提交于
      This fixes a locking bug in the dm9000 driver.  It calls
      request_irq() without setting IRQF_DISABLED ... which is
      correct for handlers that support IRQ sharing, since that
      behavior is not guaranteed for shared IRQs.  However, its
      IRQ handler then wrongly assumes that IRQs are blocked.
      So the fix just uses the right spinlock primitives in the
      IRQ handler.
      
      NOTE:  this is a classic example of the type of bug which
      lockdep currently masks by forcibly setting IRQF_DISABLED
      on IRQ handlers that did not request that flag.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e3162d38
    • S
      6580f57d
    • B
      radeonfb: Whack the PCI PM register until it sticks · 18a0d89e
      Benjamin Herrenschmidt 提交于
      This fixes a regression introduced when we switched to using the core
      pci_set_power_state().  The chip seems to need the state to be written
      over and over again until it sticks, so we do that.
      
      Note that the code is a bit blunt, without timeout, etc...  but that's
      pretty much because I put back in there the code exactly as it used to
      be before the regression.  I still add a call to pci_set_power_state()
      at the end so that ACPI gets called appropriately on x86.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Tested-by: NRaymond Wooninck <tittiatcoke@gmail.com>
      Acked-by: NRafael J. Wysocki <rjw@sisk.pl>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      18a0d89e
  3. 22 3月, 2009 2 次提交
  4. 20 3月, 2009 3 次提交
  5. 19 3月, 2009 2 次提交
    • T
      bas_gigaset: correctly allocate USB interrupt transfer buffer · 170ebf85
      Tilman Schmidt 提交于
      Every USB transfer buffer has to be allocated individually by kmalloc.
      
      Impact: bugfix, no functional change
      Signed-off-by: NTilman Schmidt <tilman@imap.cc>
      Tested-by: NKolja Waschk <kawk@users.sourceforge.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      170ebf85
    • S
      smsc911x: reset last known duplex and carrier on open · 44c1d6f9
      Steve Glendinning 提交于
      smsc911x_phy_adjust_link is called periodically by the phy layer (as
      it's run in polling mode), and it only updates the hardware when it sees
      a change in duplex or carrier.  This patch clears the last known values
      every time the interface is brought up, instead of only when the module
      is loaded.
      
      Without this patch the adjust_link function never updates the hardware
      after an ifconfig down; ifconfig up.  On a full duplex link this causes
      the tx error counter to increment, even though packets are correctly
      transmitted, as the default MAC_CR register setting is for half duplex.
      
      The tx errors are "no carrier" errors, which should be ignored in
      full-duplex mode.  When MAC_CR is set to "full duplex" mode they are
      correctly ignored by the hardware.
      
      Note that even with this patch the tx error counter can increment if
      packets are transmitted between "ifconfig up" and the first phy poll
      interval.  An improved solution would use the phy interrupt with phylib,
      but I haven't managed to make this work 100% robustly yet.
      Signed-off-by: NSteve Glendinning <steve.glendinning@smsc.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      44c1d6f9