1. 05 Nov, 2007 1 commit
    • Heiko Carstens's avatar
      [S390] cio: use INIT_WORK to initialize struct work. · 33583c36
      Heiko Carstens authored
      Use INIT_WORK to initialize struct work and don't initialize a
      struct work partial by explicitly initializing its private structures.
      Fixes the following lockdep bug because no key was assigned:
      
      INFO: trying to register non-static key.
      the code is fine but needs lockdep annotation.
      turning off the locking correctness validator.
      0000000001f07bb8 0000000001f07bf8 0000000000000002 0000000000000000
             0000000001f07c98 0000000001f07c10 0000000001f07c10 0000000000015406
             0000000000000000 0000000000000002 0000000000000000 0000000000000000
             0000000001f07bf8 000000000000000c 0000000001f07bf8 0000000001f07c68
             000000000039ae60 0000000000015406 0000000001f07bf8 0000000001f07c48
      Call Trace:
      ([<0000000000015376>] show_trace+0xda/0x104)
       [<0000000000015460>] show_stack+0xc0/0xf8
       [<00000000000154c6>] dump_stack+0x2e/0x3c
       [<000000000006a71e>] __lock_acquire+0x47e/0x11a0
       [<000000000006b4f0>] lock_acquire+0xb0/0xd8
       [<00000000000555a6>] run_workqueue+0x1aa/0x24c
       [<00000000000556de>] worker_thread+0x96/0xf4
       [<000000000005c210>] kthread+0x90/0xb4
       [<000000000001947a>] kernel_thread_starter+0x6/0xc
       [<0000000000019474>] kernel_thread_starter+0x0/0xc
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      33583c36
  2. 03 Nov, 2007 4 commits
  3. 02 Nov, 2007 32 commits
  4. 01 Nov, 2007 3 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 434a25d4
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        HID: Don't access input_dev->private directly
        HID: fix hidinput_connect ignoring retval from input_register_device
        HID: hiddev - fix compiler warning
        HID: Add GoTop tablets to blacklist
      434a25d4
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 · 3ce4af1d
      Linus Torvalds authored
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
        Fix myri10ge NAPI oops & warnings
        Fix region size check in mpc5200 FEC driver
        mpc5200: Fix Kconfig dependancies on MPC5200 FEC device driver
      3ce4af1d
    • Andrew Gallatin's avatar
      Fix myri10ge NAPI oops & warnings · c956a240
      Andrew Gallatin authored
      When testing the myri10ge driver with 2.6.24-rc1, I found
      that the machine crashed under heavy load:
      
      Unable to handle kernel paging request at 0000000000100108 RIP:
        [<ffffffff803cc8dd>] net_rx_action+0x11b/0x184
      
      The address corresponds to the list_move_tail() in
      netif_rx_complete():
                           if (unlikely(work == weight))
                                   list_move_tail(&n->poll_list, list);
      
      Eventually, I traced the crashes to calling netif_rx_complete() with
      work_done == budget.  From looking at other drivers, it appears that
      one should only call netif_rx_complete() when work_done < budget.
      
      To fix it, I changed the test in myri10ge_poll() so that it refers
      to to work_done rather than looking at the rx ring status.  If
      work_done is < budget, then that implies we have no more packets to
      process. Any races will be resolved by the NIC when the write to
      irq_claim is made.
      
      In myri10ge_clean_rx_done(), if we ever exceeded our budget, it would
      report a work_done one larger than was acutally done.  This is because
      the increment was done in the conditional, so work_done would be
      incremented regardless of whether or not the test passed or failed.
      This would lead to the WARN_ON_ONCE(work > weight); warning in
      net_rx_action triggering.  I've moved the increment of work_done
      inside the loop.  Note that this would only be a problem when we had
      exceeded our budget.
      
      Signed off by: Andrew Gallatin <gallatin@myri.com>
      
      Andrew Gallatin Myricom Inc
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      c956a240