Netdev List
 help / color / mirror / Atom feed
* net-2.6.24 failure with netconsole
From: Andrew Morton @ 2007-08-22  5:54 UTC (permalink / raw)
  To: David S. Miller, Stephen Hemminger; +Cc: netdev


Has anyone tested all this new napi stuff with netconsole?  It's pretty
disastrous.  It immediately goes BUG in napi_enable().

David, there's basically no reason ever why anyone should add BUG() or
BUG_ON() to net code.  Please consider rejecting any patches which add new
ones.  WARN_ON() is *much* better.  It at least gives the user a chance of
getting some disgnostic info out, of performing additional tests or even of
using their kernel if they want to test something else.  The only reason to
choose BUG over WARN is if we're actually concerned about scrogging
people's data, or serious things like that (ie: filesystems and mm).


I did this:

--- a/include/linux/netdevice.h~a
+++ a/include/linux/netdevice.h
@@ -328,7 +328,7 @@ static inline void napi_disable(struct n
 
 static inline void napi_enable(struct napi_struct *n)
 {
-	BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
+	WARN_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
 	smp_mb__before_clear_bit();
 	clear_bit(NAPI_STATE_SCHED, &n->state);
 }
_

Which enabled me to see this, via netconsole:

netconsole: local port 4444
netconsole: local IP 192.168.2.36
netconsole: interface eth0
netconsole: remote port 5140
netconsole: remote IP 192.168.2.33
netconsole: remote ethernet address 00:0d:56:c6:c6:cc
netconsole: device eth0 not up yet, forcing it
WARNING: at include/linux/netdevice.h:331 napi_enable()
 [<c0103bfa>] show_trace_log_lvl+0x1a/0x30
 [<c0104822>] show_trace+0x12/0x20
 [<c0104846>] dump_stack+0x16/0x20
 [<c02e3989>] e100_up+0x159/0x160
 [<c02e39ae>] e100_open+0x1e/0x60
 [<c0354bb8>] dev_open+0x38/0x80
 [<c03605eb>] netpoll_setup+0x15b/0x390
 [<c051d754>] init_netconsole+0xf4/0x1d0
 [<c05045f2>] kernel_init+0x142/0x320
 [<c0103807>] kernel_thread_helper+0x7/0x10

Which used to be a BUG.  It later oopsed via a null-pointer deref in
net_rx_action(), which is a much preferable result.


config is at http://userweb.kernel.org/~akpm/config-vmm.txt, full dmesg is
below.

This of course renders net-2.6.24 unusable so I'll drop it for now.  Please
let me know when it's safe to use again, thanks.



BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 0000000038000000 (usable)
 BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000fb4c0
Entering add_active_range(0, 0, 229376) 0 entries of 256 used
Zone PFN ranges:
  DMA             0 ->     4096
  Normal       4096 ->   229376
  HighMem    229376 ->   229376
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0:        0 ->   229376
On node 0 totalpages: 229376
  DMA zone: 52 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 4044 pages, LIFO batch:0
  Normal zone: 2860 pages used for memmap
  Normal zone: 222420 pages, LIFO batch:31
  HighMem zone: 0 pages used for memmap
  Movable zone: 0 pages used for memmap
DMI 2.1 present.
Intel MultiProcessor Specification v1.4
    Virtual Wire compatibility mode.
OEM ID: INTEL    Product ID: 440BX        APIC at: 0xFEE00000
Processor #0 6:8 APIC version 17
Processor #1 6:8 APIC version 17
I/O APIC #2 Version 17 at 0xFEC00000.
Enabling APIC mode:  Flat.  Using 1 I/O APICs
Processors: 2
Allocating PCI resources starting at 40000000 (gap: 38000000:c6c00000)
Built 1 zonelists in Zone order.  Total pages: 226464
Kernel command line: auto BOOT_IMAGE=d ro root=1602 BOOT_FILE=/boot/bzImage-2.6.23-rc3 profile=1 nmi_watchdog=1 netconsole=4444@192.168.2.36/eth0,5140@192.168.2.33/00:0D:56:C6:C6:CC resume=/dev/hdc3 initcall_debug ignore_loglevel
kernel profiling enabled (shift: 1)
debug: ignoring loglevel setting.
mapped APIC to ffffb000 (fee00000)
mapped IOAPIC to ffffa000 (fec00000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 16384 bytes)
Detected 851.936 MHz processor.
Console: colour VGA+ 80x50
console [tty0] enabled
Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
... MAX_LOCKDEP_SUBCLASSES:    8
... MAX_LOCK_DEPTH:          30
... MAX_LOCKDEP_KEYS:        2048
... CLASSHASH_SIZE:           1024
... MAX_LOCKDEP_ENTRIES:     8192
... MAX_LOCKDEP_CHAINS:      16384
... CHAINHASH_SIZE:          8192
 memory used by lock dependency info: 992 kB
 per task-struct memory footprint: 1200 bytes
------------------------
| Locking API testsuite:
----------------------------------------------------------------------------
                                 | spin |wlock |rlock |mutex | wsem | rsem |
  --------------------------------------------------------------------------
                     A-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                 A-B-B-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-B-C-C-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-C-A-B-C deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
         A-B-B-C-C-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
         A-B-C-D-B-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
         A-B-C-D-B-C-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                    double unlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                  initialize held:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                 bad unlock order:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
  --------------------------------------------------------------------------
              recursive read-lock:             |  ok  |             |  ok  |
           recursive read-lock #2:             |  ok  |             |  ok  |
            mixed read-write-lock:             |  ok  |             |  ok  |
            mixed write-read-lock:             |  ok  |             |  ok  |
  --------------------------------------------------------------------------
     hard-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
     soft-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
     hard-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
     soft-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
       sirq-safe-A => hirqs-on/12:  ok  |  ok  |  ok  |
       sirq-safe-A => hirqs-on/21:  ok  |  ok  |  ok  |
         hard-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
         soft-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
         hard-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
         soft-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
    hard-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
    soft-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/123:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/123:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/132:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/132:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/213:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/213:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/231:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/231:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/312:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/312:  ok  |  ok  |  ok  |
      hard-irq lock-inversion/321:  ok  |  ok  |  ok  |
      soft-irq lock-inversion/321:  ok  |  ok  |  ok  |
      hard-irq read-recursion/123:  ok  |
      soft-irq read-recursion/123:  ok  |
      hard-irq read-recursion/132:  ok  |
      soft-irq read-recursion/132:  ok  |
      hard-irq read-recursion/213:  ok  |
      soft-irq read-recursion/213:  ok  |
      hard-irq read-recursion/231:  ok  |
      soft-irq read-recursion/231:  ok  |
      hard-irq read-recursion/312:  ok  |
      soft-irq read-recursion/312:  ok  |
      hard-irq read-recursion/321:  ok  |
      soft-irq read-recursion/321:  ok  |
-------------------------------------------------------
Good, all 218 testcases passed! |
---------------------------------
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 891620k/917504k available (2891k kernel code, 25392k reserved, 1189k data, 296k init, 0k highmem)
virtual kernel memory layout:
    fixmap  : 0xffee2000 - 0xfffff000   (1140 kB)
    pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
    vmalloc : 0xf8800000 - 0xff7fe000   ( 111 MB)
    lowmem  : 0xc0000000 - 0xf8000000   ( 896 MB)
      .init : 0xc0504000 - 0xc054e000   ( 296 kB)
      .data : 0xc03d2e5f - 0xc04fc624   (1189 kB)
      .text : 0xc0100000 - 0xc03d2e5f   (2891 kB)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 1706.80 BogoMIPS (lpj=3413611)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0383fbff 00000000 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
CPU: After all inits, caps: 0383fbff 00000000 00000000 00000040 00000000 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Compat vDSO mapped to ffffe000.
Checking 'hlt' instruction... OK.
lockdep: not fixing up alternatives.
CPU0: Intel Pentium III (Coppermine) stepping 03
lockdep: not fixing up alternatives.
Booting processor 1/1 eip 2000
Initializing CPU#1
Calibrating delay using timer specific routine.. 1704.06 BogoMIPS (lpj=3408125)
CPU: After generic identify, caps: 0383fbff 00000000 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
CPU: After all inits, caps: 0383fbff 00000000 00000000 00000040 00000000 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel Pentium III (Coppermine) stepping 03
Total of 2 processors activated (3410.86 BogoMIPS).
ExtINT not setup in hardware but reported by MP table
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=0 pin2=0
APIC timer registered as dummy, due to nmi_watchdog=1!
checking TSC synchronization [CPU#0 -> CPU#1]: passed.
Brought up 2 CPUs
khelper used greatest stack depth: 7184 bytes left
Calling initcall 0xc051fba0: init_cpufreq_transition_notifier_list+0x0/0x20()
initcall 0xc051fba0: init_cpufreq_transition_notifier_list+0x0/0x20() returned 0.
initcall 0xc051fba0 ran for 0 msecs: init_cpufreq_transition_notifier_list+0x0/0x20()
Calling initcall 0xc050c480: cpufreq_tsc+0x0/0x20()
initcall 0xc050c480: cpufreq_tsc+0x0/0x20() returned 0.
initcall 0xc050c480 ran for 0 msecs: cpufreq_tsc+0x0/0x20()
Calling initcall 0xc050cc70: reboot_init+0x0/0x20()
initcall 0xc050cc70: reboot_init+0x0/0x20() returned 0.
initcall 0xc050cc70 ran for 0 msecs: reboot_init+0x0/0x20()
Calling initcall 0xc0512a90: sysctl_init+0x0/0x20()
initcall 0xc0512a90: sysctl_init+0x0/0x20() returned 0.
initcall 0xc0512a90 ran for 0 msecs: sysctl_init+0x0/0x20()
Calling initcall 0xc0513410: init_jiffies_clocksource+0x0/0x10()
initcall 0xc0513410: init_jiffies_clocksource+0x0/0x10() returned 0.
initcall 0xc0513410 ran for 0 msecs: init_jiffies_clocksource+0x0/0x10()
Calling initcall 0xc05136c0: pm_init+0x0/0x30()
initcall 0xc05136c0: pm_init+0x0/0x30() returned 0.
initcall 0xc05136c0 ran for 0 msecs: pm_init+0x0/0x30()
Calling initcall 0xc0513960: ksysfs_init+0x0/0x50()
initcall 0xc0513960: ksysfs_init+0x0/0x50() returned 0.
initcall 0xc0513960 ran for 0 msecs: ksysfs_init+0x0/0x50()
Calling initcall 0xc05163c0: filelock_init+0x0/0x30()
initcall 0xc05163c0: filelock_init+0x0/0x30() returned 0.
initcall 0xc05163c0 ran for 0 msecs: filelock_init+0x0/0x30()
Calling initcall 0xc0516ec0: init_aout_binfmt+0x0/0x10()
initcall 0xc0516ec0: init_aout_binfmt+0x0/0x10() returned 0.
initcall 0xc0516ec0 ran for 0 msecs: init_aout_binfmt+0x0/0x10()
Calling initcall 0xc0516ed0: init_misc_binfmt+0x0/0x40()
initcall 0xc0516ed0: init_misc_binfmt+0x0/0x40() returned 0.
initcall 0xc0516ed0 ran for 0 msecs: init_misc_binfmt+0x0/0x40()
Calling initcall 0xc0516f10: init_script_binfmt+0x0/0x10()
initcall 0xc0516f10: init_script_binfmt+0x0/0x10() returned 0.
initcall 0xc0516f10 ran for 0 msecs: init_script_binfmt+0x0/0x10()
Calling initcall 0xc0516f20: init_elf_binfmt+0x0/0x10()
initcall 0xc0516f20: init_elf_binfmt+0x0/0x10() returned 0.
initcall 0xc0516f20 ran for 0 msecs: init_elf_binfmt+0x0/0x10()
Calling initcall 0xc0517e70: debugfs_init+0x0/0x50()
initcall 0xc0517e70: debugfs_init+0x0/0x50() returned 0.
initcall 0xc0517e70 ran for 0 msecs: debugfs_init+0x0/0x50()
Calling initcall 0xc0518690: random32_init+0x0/0x60()
initcall 0xc0518690: random32_init+0x0/0x60() returned 0.
initcall 0xc0518690 ran for 0 msecs: random32_init+0x0/0x60()
Calling initcall 0xc051fb20: cpufreq_core_init+0x0/0x80()
initcall 0xc051fb20: cpufreq_core_init+0x0/0x80() returned 0.
initcall 0xc051fb20 ran for 0 msecs: cpufreq_core_init+0x0/0x80()
Calling initcall 0xc0521d50: sock_init+0x0/0x60()
initcall 0xc0521d50: sock_init+0x0/0x60() returned 0.
initcall 0xc0521d50 ran for 0 msecs: sock_init+0x0/0x60()
Calling initcall 0xc05224d0: netpoll_init+0x0/0x40()
initcall 0xc05224d0: netpoll_init+0x0/0x40() returned 0.
initcall 0xc05224d0 ran for 0 msecs: netpoll_init+0x0/0x40()
Calling initcall 0xc05225c0: netlink_proto_init+0x0/0x160()
NET: Registered protocol family 16
initcall 0xc05225c0: netlink_proto_init+0x0/0x160() returned 0.
initcall 0xc05225c0 ran for 0 msecs: netlink_proto_init+0x0/0x160()
Calling initcall 0xc0518520: kobject_uevent_init+0x0/0x50()
initcall 0xc0518520: kobject_uevent_init+0x0/0x50() returned 0.
initcall 0xc0518520 ran for 0 msecs: kobject_uevent_init+0x0/0x50()
Calling initcall 0xc05187c0: pcibus_class_init+0x0/0x10()
initcall 0xc05187c0: pcibus_class_init+0x0/0x10() returned 0.
initcall 0xc05187c0 ran for 0 msecs: pcibus_class_init+0x0/0x10()
Calling initcall 0xc0518e10: pci_driver_init+0x0/0x10()
initcall 0xc0518e10: pci_driver_init+0x0/0x10() returned 0.
initcall 0xc0518e10 ran for 3 msecs: pci_driver_init+0x0/0x10()
Calling initcall 0xc051ab60: tty_class_init+0x0/0x30()
initcall 0xc051ab60: tty_class_init+0x0/0x30() returned 0.
initcall 0xc051ab60 ran for 0 msecs: tty_class_init+0x0/0x30()
Calling initcall 0xc051b500: vtconsole_class_init+0x0/0xe0()
initcall 0xc051b500: vtconsole_class_init+0x0/0xe0() returned 0.
initcall 0xc051b500 ran for 0 msecs: vtconsole_class_init+0x0/0xe0()
Calling initcall 0xc051f2a0: eisa_init+0x0/0x30()
EISA bus registered
initcall 0xc051f2a0: eisa_init+0x0/0x30() returned 0.
initcall 0xc051f2a0 ran for 0 msecs: eisa_init+0x0/0x30()
Calling initcall 0xc050c340: init_pit_clocksource+0x0/0x90()
initcall 0xc050c340: init_pit_clocksource+0x0/0x90() returned 0.
initcall 0xc050c340 ran for 0 msecs: init_pit_clocksource+0x0/0x90()
Calling initcall 0xc0520660: dmi_id_init+0x0/0x290()
initcall 0xc0520660: dmi_id_init+0x0/0x290() returned 0.
initcall 0xc0520660 ran for 3 msecs: dmi_id_init+0x0/0x290()
Calling initcall 0xc0520c00: pci_access_init+0x0/0x50()
PCI: PCI BIOS revision 2.10 entry at 0xfdb81, last bus=1
PCI: Using configuration type 1
initcall 0xc0520c00: pci_access_init+0x0/0x50() returned 0.
initcall 0xc0520c00 ran for 53 msecs: pci_access_init+0x0/0x50()
Calling initcall 0xc050bd00: request_standard_resources+0x0/0x390()
Setting up standard PCI resources
initcall 0xc050bd00: request_standard_resources+0x0/0x390() returned 0.
initcall 0xc050bd00 ran for 7 msecs: request_standard_resources+0x0/0x390()
Calling initcall 0xc050c160: topology_init+0x0/0x40()
initcall 0xc050c160: topology_init+0x0/0x40() returned 0.
initcall 0xc050c160 ran for 3 msecs: topology_init+0x0/0x40()
Calling initcall 0xc0512e60: param_sysfs_init+0x0/0x180()
khelper used greatest stack depth: 7068 bytes left
initcall 0xc0512e60: param_sysfs_init+0x0/0x180() returned 0.
initcall 0xc0512e60 ran for 11 msecs: param_sysfs_init+0x0/0x180()
Calling initcall 0xc014a1b0: pm_sysrq_init+0x0/0x20()
initcall 0xc014a1b0: pm_sysrq_init+0x0/0x20() returned 0.
initcall 0xc014a1b0 ran for 0 msecs: pm_sysrq_init+0x0/0x20()
Calling initcall 0xc0516b20: init_bio+0x0/0xc0()
initcall 0xc0516b20: init_bio+0x0/0xc0() returned 0.
initcall 0xc0516b20 ran for 3 msecs: init_bio+0x0/0xc0()
Calling initcall 0xc0518230: genhd_device_init+0x0/0x60()
initcall 0xc0518230: genhd_device_init+0x0/0x60() returned 0.
initcall 0xc0518230 ran for 0 msecs: genhd_device_init+0x0/0x60()
Calling initcall 0xc0518fe0: pnp_init+0x0/0x20()
Linux Plug and Play Support v0.97 (c) Adam Belay
initcall 0xc0518fe0: pnp_init+0x0/0x20() returned 0.
initcall 0xc0518fe0 ran for 0 msecs: pnp_init+0x0/0x20()
Calling initcall 0xc0519170: pnpbios_init+0x0/0x3a0()
PnPBIOS: Scanning system for PnP BIOS support...
PnPBIOS: Found PnP BIOS installation structure at 0xc00f7150
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0x6aa4, dseg 0xf0000
PnPBIOS: 15 nodes reported by PnP BIOS; 15 recorded by driver
initcall 0xc0519170: pnpbios_init+0x0/0x3a0() returned 0.
initcall 0xc0519170 ran for 7 msecs: pnpbios_init+0x0/0x3a0()
Calling initcall 0xc051afb0: misc_init+0x0/0x80()
initcall 0xc051afb0: misc_init+0x0/0x80() returned 0.
initcall 0xc051afb0 ran for 3 msecs: misc_init+0x0/0x80()
Calling initcall 0xc02c9690: cn_init+0x0/0xd0()
initcall 0xc02c9690: cn_init+0x0/0xd0() returned 0.
initcall 0xc02c9690 ran for 0 msecs: cn_init+0x0/0xd0()
Calling initcall 0xc051e280: init_scsi+0x0/0xb0()
SCSI subsystem initialized
initcall 0xc051e280: init_scsi+0x0/0xb0() returned 0.
initcall 0xc051e280 ran for 3 msecs: init_scsi+0x0/0xb0()
Calling initcall 0xc051e7f0: serio_init+0x0/0xa0()
initcall 0xc051e7f0: serio_init+0x0/0xa0() returned 0.
initcall 0xc051e7f0 ran for 0 msecs: serio_init+0x0/0xa0()
Calling initcall 0xc051ecb0: gameport_init+0x0/0xa0()
initcall 0xc051ecb0: gameport_init+0x0/0xa0() returned 0.
initcall 0xc051ecb0 ran for 0 msecs: gameport_init+0x0/0xa0()
Calling initcall 0xc051ed50: input_init+0x0/0x110()
initcall 0xc051ed50: input_init+0x0/0x110() returned 0.
initcall 0xc051ed50 ran for 0 msecs: input_init+0x0/0x110()
Calling initcall 0xc05211c0: pci_legacy_init+0x0/0xf0()
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
PCI quirk: region 0400-043f claimed by PIIX4 ACPI
PCI quirk: region 0440-044f claimed by PIIX4 SMB
PIIX4 devres B PIO at 0290-0297
PCI: Firmware left 0000:00:10.0 e100 interrupts enabled, disabling
initcall 0xc05211c0: pci_legacy_init+0x0/0xf0() returned 0.
initcall 0xc05211c0 ran for 7 msecs: pci_legacy_init+0x0/0xf0()
Calling initcall 0xc05217b0: pcibios_irq_init+0x0/0x510()
initcall 0xc05217b0: pcibios_irq_init+0x0/0x510() returned 0.
initcall 0xc05217b0 ran for 3 msecs: pcibios_irq_init+0x0/0x510()
Calling initcall 0xc0521cc0: pcibios_init+0x0/0x90()
initcall 0xc0521cc0: pcibios_init+0x0/0x90() returned 0.
initcall 0xc0521cc0 ran for 0 msecs: pcibios_init+0x0/0x90()
Calling initcall 0xc0521e10: proto_init+0x0/0x30()
initcall 0xc0521e10: proto_init+0x0/0x30() returned 0.
initcall 0xc0521e10 ran for 0 msecs: proto_init+0x0/0x30()
Calling initcall 0xc0521f80: net_dev_init+0x0/0x1d0()
initcall 0xc0521f80: net_dev_init+0x0/0x1d0() returned 0.
initcall 0xc0521f80 ran for 3 msecs: net_dev_init+0x0/0x1d0()
Calling initcall 0xc0522190: neigh_init+0x0/0x80()
initcall 0xc0522190: neigh_init+0x0/0x80() returned 0.
initcall 0xc0522190 ran for 0 msecs: neigh_init+0x0/0x80()
Calling initcall 0xc0522720: genl_init+0x0/0xc0()
initcall 0xc0522720: genl_init+0x0/0xc0() returned 0.
initcall 0xc0522720 ran for 15 msecs: genl_init+0x0/0xc0()
Calling initcall 0xc0513300: clocksource_done_booting+0x0/0x20()
initcall 0xc0513300: clocksource_done_booting+0x0/0x20() returned 0.
initcall 0xc0513300 ran for 0 msecs: clocksource_done_booting+0x0/0x20()
Calling initcall 0xc0516330: init_pipe_fs+0x0/0x60()
initcall 0xc0516330: init_pipe_fs+0x0/0x60() returned 0.
initcall 0xc0516330 ran for 0 msecs: init_pipe_fs+0x0/0x60()
Calling initcall 0xc0516d30: eventpoll_init+0x0/0x90()
initcall 0xc0516d30: eventpoll_init+0x0/0x90() returned 0.
initcall 0xc0516d30 ran for 0 msecs: eventpoll_init+0x0/0x90()
Calling initcall 0xc0516dc0: anon_inode_init+0x0/0x100()
initcall 0xc0516dc0: anon_inode_init+0x0/0x100() returned 0.
Time: tsc clocksource has been installed.
initcall 0xc0516dc0 ran for 0 msecs: anon_inode_init+0x0/0x100()
Calling initcall 0xc0519140: pnp_system_init+0x0/0x10()
pnp: the driver 'system' has been registered
pnp: match found with the PnP device '00:00' and the driver 'system'
pnp: 00:00: iomem range 0x0-0x9fbff could not be reserved
pnp: 00:00: iomem range 0x9fc00-0x9ffff could not be reserved
pnp: 00:00: iomem range 0xe0000-0xfffff could not be reserved
pnp: 00:00: iomem range 0x100000-0x37ffffff could not be reserved
pnp: match found with the PnP device '00:08' and the driver 'system'
pnp: 00:08: ioport range 0x4d0-0x4d1 has been reserved
pnp: 00:08: ioport range 0xcf8-0xcff could not be reserved
pnp: 00:08: iomem range 0x0-0x0 could not be reserved
pnp: 00:08: iomem range 0x0-0x0 could not be reserved
pnp: 00:08: iomem range 0x0-0x0 could not be reserved
pnp: 00:08: iomem range 0x0-0x0 could not be reserved
pnp: match found with the PnP device '00:09' and the driver 'system'
pnp: 00:09: ioport range 0x290-0x297 has been reserved
pnp: 00:09: ioport range 0x398-0x399 has been reserved
initcall 0xc0519140: pnp_system_init+0x0/0x10() returned 0.
initcall 0xc0519140 ran for 1 msecs: pnp_system_init+0x0/0x10()
Calling initcall 0xc051a860: chr_dev_init+0x0/0xa0()
initcall 0xc051a860: chr_dev_init+0x0/0xa0() returned 0.
initcall 0xc051a860 ran for 3 msecs: chr_dev_init+0x0/0xa0()
Calling initcall 0xc051bd80: firmware_class_init+0x0/0x70()
initcall 0xc051bd80: firmware_class_init+0x0/0x70() returned 0.
initcall 0xc051bd80 ran for 0 msecs: firmware_class_init+0x0/0x70()
Calling initcall 0xc051fc70: cpufreq_gov_performance_init+0x0/0x10()
initcall 0xc051fc70: cpufreq_gov_performance_init+0x0/0x10() returned 0.
initcall 0xc051fc70 ran for 0 msecs: cpufreq_gov_performance_init+0x0/0x10()
Calling initcall 0xc0520900: pcibios_assign_resources+0x0/0x80()
PCI: Bridge: 0000:00:01.0
  IO window: d000-dfff
  MEM window: fc600000-fe6fffff
  PREFETCH window: e4400000-f44fffff
initcall 0xc0520900: pcibios_assign_resources+0x0/0x80() returned 0.
initcall 0xc0520900 ran for 0 msecs: pcibios_assign_resources+0x0/0x80()
Calling initcall 0xc0523220: inet_init+0x0/0x2f0()
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 65536 (order: 9, 2359296 bytes)
TCP bind hash table entries: 65536 (order: 9, 2097152 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
initcall 0xc0523220: inet_init+0x0/0x2f0() returned 0.
initcall 0xc0523220 ran for 106 msecs: inet_init+0x0/0x2f0()
Calling initcall 0xc050a1b0: populate_rootfs+0x0/0x100()
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 265k freed
initcall 0xc050a1b0: populate_rootfs+0x0/0x100() returned 0.
initcall 0xc050a1b0 ran for 136 msecs: populate_rootfs+0x0/0x100()
Calling initcall 0xc050b000: i8259A_init_sysfs+0x0/0x30()
initcall 0xc050b000: i8259A_init_sysfs+0x0/0x30() returned 0.
initcall 0xc050b000 ran for 0 msecs: i8259A_init_sysfs+0x0/0x30()
Calling initcall 0xc050b130: sbf_init+0x0/0xe0()
initcall 0xc050b130: sbf_init+0x0/0xe0() returned 0.
initcall 0xc050b130 ran for 0 msecs: sbf_init+0x0/0xe0()
Calling initcall 0xc050c130: i8237A_init_sysfs+0x0/0x30()
initcall 0xc050c130: i8237A_init_sysfs+0x0/0x30() returned 0.
initcall 0xc050c130 ran for 0 msecs: i8237A_init_sysfs+0x0/0x30()
Calling initcall 0xc010c700: cache_sysfs_init+0x0/0x60()
initcall 0xc010c700: cache_sysfs_init+0x0/0x60() returned 0.
initcall 0xc010c700 ran for 0 msecs: cache_sysfs_init+0x0/0x60()
Calling initcall 0xc050cb10: thermal_throttle_init_device+0x0/0xb0()
initcall 0xc050cb10: thermal_throttle_init_device+0x0/0xb0() returned 0.
initcall 0xc050cb10 ran for 0 msecs: thermal_throttle_init_device+0x0/0xb0()
Calling initcall 0xc050cd90: msr_init+0x0/0x110()
initcall 0xc050cd90: msr_init+0x0/0x110() returned 0.
initcall 0xc050cd90 ran for 1 msecs: msr_init+0x0/0x110()
Calling initcall 0xc050cea0: cpuid_init+0x0/0x110()
initcall 0xc050cea0: cpuid_init+0x0/0x110() returned 0.
initcall 0xc050cea0 ran for 1 msecs: cpuid_init+0x0/0x110()
Calling initcall 0xc050dee0: init_lapic_sysfs+0x0/0x40()
initcall 0xc050dee0: init_lapic_sysfs+0x0/0x40() returned 0.
initcall 0xc050dee0 ran for 0 msecs: init_lapic_sysfs+0x0/0x40()
Calling initcall 0xc050f400: ioapic_init_sysfs+0x0/0xe0()
initcall 0xc050f400: ioapic_init_sysfs+0x0/0xe0() returned 0.
initcall 0xc050f400 ran for 0 msecs: ioapic_init_sysfs+0x0/0xe0()
Calling initcall 0xc0510e20: add_pcspkr+0x0/0x50()
initcall 0xc0510e20: add_pcspkr+0x0/0x50() returned 0.
initcall 0xc0510e20 ran for 0 msecs: add_pcspkr+0x0/0x50()
Calling initcall 0xc05118f0: init_sched_debug_procfs+0x0/0x30()
initcall 0xc05118f0: init_sched_debug_procfs+0x0/0x30() returned 0.
initcall 0xc05118f0 ran for 0 msecs: init_sched_debug_procfs+0x0/0x30()
Calling initcall 0xc0512500: create_proc_profile+0x0/0x1c0()
initcall 0xc0512500: create_proc_profile+0x0/0x1c0() returned 0.
initcall 0xc0512500 ran for 0 msecs: create_proc_profile+0x0/0x1c0()
Calling initcall 0xc0512980: ioresources_init+0x0/0x40()
initcall 0xc0512980: ioresources_init+0x0/0x40() returned 0.
initcall 0xc0512980 ran for 0 msecs: ioresources_init+0x0/0x40()
Calling initcall 0xc0512b00: uid_cache_init+0x0/0x80()
initcall 0xc0512b00: uid_cache_init+0x0/0x80() returned 0.
initcall 0xc0512b00 ran for 0 msecs: uid_cache_init+0x0/0x80()
Calling initcall 0xc0512fe0: init_posix_timers+0x0/0x90()
initcall 0xc0512fe0: init_posix_timers+0x0/0x90() returned 0.
initcall 0xc0512fe0 ran for 0 msecs: init_posix_timers+0x0/0x90()
Calling initcall 0xc0513070: init_posix_cpu_timers+0x0/0xa0()
initcall 0xc0513070: init_posix_cpu_timers+0x0/0xa0() returned 0.
initcall 0xc0513070 ran for 0 msecs: init_posix_cpu_timers+0x0/0xa0()
Calling initcall 0xc0513140: latency_init+0x0/0x30()
initcall 0xc0513140: latency_init+0x0/0x30() returned 0.
initcall 0xc0513140 ran for 0 msecs: latency_init+0x0/0x30()
Calling initcall 0xc0513170: nsproxy_cache_init+0x0/0x30()
initcall 0xc0513170: nsproxy_cache_init+0x0/0x30() returned 0.
initcall 0xc0513170 ran for 0 msecs: nsproxy_cache_init+0x0/0x30()
Calling initcall 0xc05131a0: timekeeping_init_device+0x0/0x30()
initcall 0xc05131a0: timekeeping_init_device+0x0/0x30() returned 0.
initcall 0xc05131a0 ran for 0 msecs: timekeeping_init_device+0x0/0x30()
Calling initcall 0xc05133c0: init_clocksource_sysfs+0x0/0x50()
initcall 0xc05133c0: init_clocksource_sysfs+0x0/0x50() returned 0.
initcall 0xc05133c0 ran for 0 msecs: init_clocksource_sysfs+0x0/0x50()
Calling initcall 0xc0513420: init_timer_list_procfs+0x0/0x30()
initcall 0xc0513420: init_timer_list_procfs+0x0/0x30() returned 0.
initcall 0xc0513420 ran for 0 msecs: init_timer_list_procfs+0x0/0x30()
Calling initcall 0xc0513570: lockdep_proc_init+0x0/0x40()
initcall 0xc0513570: lockdep_proc_init+0x0/0x40() returned 0.
initcall 0xc0513570 ran for 0 msecs: lockdep_proc_init+0x0/0x40()
Calling initcall 0xc05135b0: init+0x0/0xc0()
initcall 0xc05135b0: init+0x0/0xc0() returned 0.
initcall 0xc05135b0 ran for 0 msecs: init+0x0/0xc0()
Calling initcall 0xc0513670: proc_dma_init+0x0/0x20()
initcall 0xc0513670: proc_dma_init+0x0/0x20() returned 0.
initcall 0xc0513670 ran for 0 msecs: proc_dma_init+0x0/0x20()
Calling initcall 0xc0145cd0: percpu_modinit+0x0/0x70()
initcall 0xc0145cd0: percpu_modinit+0x0/0x70() returned 0.
initcall 0xc0145cd0 ran for 0 msecs: percpu_modinit+0x0/0x70()
Calling initcall 0xc0513690: kallsyms_init+0x0/0x30()
initcall 0xc0513690: kallsyms_init+0x0/0x30() returned 0.
initcall 0xc0513690 ran for 0 msecs: kallsyms_init+0x0/0x30()
Calling initcall 0xc0513770: audit_init+0x0/0x120()
audit: initializing netlink socket (disabled)
audit(1187793065.784:1): initialized
initcall 0xc0513770: audit_init+0x0/0x120() returned 0.
initcall 0xc0513770 ran for 0 msecs: audit_init+0x0/0x120()
Calling initcall 0xc0513920: audit_tree_init+0x0/0x40()
initcall 0xc0513920: audit_tree_init+0x0/0x40() returned 0.
initcall 0xc0513920 ran for 0 msecs: audit_tree_init+0x0/0x40()
Calling initcall 0xc0513a70: utsname_sysctl_init+0x0/0x20()
initcall 0xc0513a70: utsname_sysctl_init+0x0/0x20() returned 0.
initcall 0xc0513a70 ran for 0 msecs: utsname_sysctl_init+0x0/0x20()
Calling initcall 0xc0514ce0: init_per_zone_pages_min+0x0/0x60()
initcall 0xc0514ce0: init_per_zone_pages_min+0x0/0x60() returned 0.
initcall 0xc0514ce0 ran for 0 msecs: init_per_zone_pages_min+0x0/0x60()
Calling initcall 0xc05159f0: pdflush_init+0x0/0x20()
initcall 0xc05159f0: pdflush_init+0x0/0x20() returned 0.
initcall 0xc05159f0 ran for 0 msecs: pdflush_init+0x0/0x20()
Calling initcall 0xc0515a40: kswapd_init+0x0/0x30()
initcall 0xc0515a40: kswapd_init+0x0/0x30() returned 0.
initcall 0xc0515a40 ran for 0 msecs: kswapd_init+0x0/0x30()
Calling initcall 0xc0515a70: setup_vmstat+0x0/0x50()
initcall 0xc0515a70: setup_vmstat+0x0/0x50() returned 0.
initcall 0xc0515a70 ran for 0 msecs: setup_vmstat+0x0/0x50()
Calling initcall 0xc0515bb0: init_emergency_pool+0x0/0x70()
initcall 0xc0515bb0: init_emergency_pool+0x0/0x70() returned 0.
initcall 0xc0515bb0 ran for 0 msecs: init_emergency_pool+0x0/0x70()
Calling initcall 0xc0515c20: procswaps_init+0x0/0x20()
initcall 0xc0515c20: procswaps_init+0x0/0x20() returned 0.
initcall 0xc0515c20 ran for 0 msecs: procswaps_init+0x0/0x20()
Calling initcall 0xc0515c80: hugetlb_init+0x0/0x70()
Total HugeTLB memory allocated, 0
initcall 0xc0515c80: hugetlb_init+0x0/0x70() returned 0.
initcall 0xc0515c80 ran for 0 msecs: hugetlb_init+0x0/0x70()
Calling initcall 0xc0515cf0: init_tmpfs+0x0/0xd0()
initcall 0xc0515cf0: init_tmpfs+0x0/0xd0() returned 0.
initcall 0xc0515cf0 ran for 0 msecs: init_tmpfs+0x0/0xd0()
Calling initcall 0xc0515e40: cpucache_init+0x0/0x40()
initcall 0xc0515e40: cpucache_init+0x0/0x40() returned 0.
initcall 0xc0515e40 ran for 0 msecs: cpucache_init+0x0/0x40()
Calling initcall 0xc0516390: fasync_init+0x0/0x30()
initcall 0xc0516390: fasync_init+0x0/0x30() returned 0.
initcall 0xc0516390 ran for 0 msecs: fasync_init+0x0/0x30()
Calling initcall 0xc0516a50: aio_setup+0x0/0x70()
initcall 0xc0516a50: aio_setup+0x0/0x70() returned 0.
initcall 0xc0516a50 ran for 0 msecs: aio_setup+0x0/0x70()
Calling initcall 0xc0516c60: inotify_setup+0x0/0x10()
initcall 0xc0516c60: inotify_setup+0x0/0x10() returned 0.
initcall 0xc0516c60 ran for 0 msecs: inotify_setup+0x0/0x10()
Calling initcall 0xc0516c70: inotify_user_setup+0x0/0xc0()
initcall 0xc0516c70: inotify_user_setup+0x0/0xc0() returned 0.
initcall 0xc0516c70 ran for 0 msecs: inotify_user_setup+0x0/0xc0()
Calling initcall 0xc0516f30: init_mbcache+0x0/0x20()
initcall 0xc0516f30: init_mbcache+0x0/0x20() returned 0.
initcall 0xc0516f30 ran for 0 msecs: init_mbcache+0x0/0x20()
Calling initcall 0xc0516f50: dnotify_init+0x0/0x30()
initcall 0xc0516f50: dnotify_init+0x0/0x30() returned 0.
initcall 0xc0516f50 ran for 0 msecs: dnotify_init+0x0/0x30()
Calling initcall 0xc0517360: init_devpts_fs+0x0/0x30()
initcall 0xc0517360: init_devpts_fs+0x0/0x30() returned 0.
initcall 0xc0517360 ran for 0 msecs: init_devpts_fs+0x0/0x30()
Calling initcall 0xc0517390: init_ext3_fs+0x0/0x60()
initcall 0xc0517390: init_ext3_fs+0x0/0x60() returned 0.
initcall 0xc0517390 ran for 0 msecs: init_ext3_fs+0x0/0x60()
Calling initcall 0xc05173f0: init_ext4_fs+0x0/0x80()
initcall 0xc05173f0: init_ext4_fs+0x0/0x80() returned 0.
initcall 0xc05173f0 ran for 0 msecs: init_ext4_fs+0x0/0x80()
Calling initcall 0xc0517530: journal_init+0x0/0x100()
initcall 0xc0517530: journal_init+0x0/0x100() returned 0.
initcall 0xc0517530 ran for 0 msecs: journal_init+0x0/0x100()
Calling initcall 0xc05176b0: journal_init+0x0/0xe0()
initcall 0xc05176b0: journal_init+0x0/0xe0() returned 0.
initcall 0xc05176b0 ran for 0 msecs: journal_init+0x0/0xe0()
Calling initcall 0xc0517790: init_ext2_fs+0x0/0x60()
initcall 0xc0517790: init_ext2_fs+0x0/0x60() returned 0.
initcall 0xc0517790 ran for 0 msecs: init_ext2_fs+0x0/0x60()
Calling initcall 0xc0517800: init_ramfs_fs+0x0/0x10()
initcall 0xc0517800: init_ramfs_fs+0x0/0x10() returned 0.
initcall 0xc0517800 ran for 0 msecs: init_ramfs_fs+0x0/0x10()
Calling initcall 0xc0517810: init_hugetlbfs_fs+0x0/0x80()
initcall 0xc0517810: init_hugetlbfs_fs+0x0/0x80() returned 0.
initcall 0xc0517810 ran for 0 msecs: init_hugetlbfs_fs+0x0/0x80()
Calling initcall 0xc05178d0: init_fat_fs+0x0/0x60()
initcall 0xc05178d0: init_fat_fs+0x0/0x60() returned 0.
initcall 0xc05178d0 ran for 0 msecs: init_fat_fs+0x0/0x60()
Calling initcall 0xc0517930: init_msdos_fs+0x0/0x10()
initcall 0xc0517930: init_msdos_fs+0x0/0x10() returned 0.
initcall 0xc0517930 ran for 0 msecs: init_msdos_fs+0x0/0x10()
Calling initcall 0xc0517940: init_vfat_fs+0x0/0x10()
initcall 0xc0517940: init_vfat_fs+0x0/0x10() returned 0.
initcall 0xc0517940 ran for 0 msecs: init_vfat_fs+0x0/0x10()
Calling initcall 0xc0517950: init_iso9660_fs+0x0/0x70()
initcall 0xc0517950: init_iso9660_fs+0x0/0x70() returned 0.
initcall 0xc0517950 ran for 0 msecs: init_iso9660_fs+0x0/0x70()
Calling initcall 0xc0517ad0: init_nfs_fs+0x0/0xc0()
initcall 0xc0517ad0: init_nfs_fs+0x0/0xc0() returned 0.
initcall 0xc0517ad0 ran for 0 msecs: init_nfs_fs+0x0/0xc0()
Calling initcall 0xc0517d40: init_nfsd+0x0/0xa0()
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
initcall 0xc0517d40: init_nfsd+0x0/0xa0() returned 0.
initcall 0xc0517d40 ran for 2 msecs: init_nfsd+0x0/0xa0()
Calling initcall 0xc0517de0: init_nlm+0x0/0x20()
initcall 0xc0517de0: init_nlm+0x0/0x20() returned 0.
initcall 0xc0517de0 ran for 0 msecs: init_nlm+0x0/0x20()
Calling initcall 0xc0517e00: init_autofs4_fs+0x0/0x10()
initcall 0xc0517e00: init_autofs4_fs+0x0/0x10() returned 0.
initcall 0xc0517e00 ran for 0 msecs: init_autofs4_fs+0x0/0x10()
Calling initcall 0xc0517e10: init_udf_fs+0x0/0x60()
initcall 0xc0517e10: init_udf_fs+0x0/0x60() returned 0.
initcall 0xc0517e10 ran for 0 msecs: init_udf_fs+0x0/0x60()
Calling initcall 0xc0517ec0: ipc_init+0x0/0x20()
initcall 0xc0517ec0: ipc_init+0x0/0x20() returned 0.
initcall 0xc0517ec0 ran for 0 msecs: ipc_init+0x0/0x20()
Calling initcall 0xc0518000: ipc_sysctl_init+0x0/0x20()
initcall 0xc0518000: ipc_sysctl_init+0x0/0x20() returned 0.
initcall 0xc0518000 ran for 0 msecs: ipc_sysctl_init+0x0/0x20()
Calling initcall 0xc0518020: crypto_algapi_init+0x0/0x10()
initcall 0xc0518020: crypto_algapi_init+0x0/0x10() returned 0.
initcall 0xc0518020 ran for 0 msecs: crypto_algapi_init+0x0/0x10()
Calling initcall 0xc0518050: cryptomgr_init+0x0/0x10()
initcall 0xc0518050: cryptomgr_init+0x0/0x10() returned 0.
initcall 0xc0518050 ran for 0 msecs: cryptomgr_init+0x0/0x10()
Calling initcall 0xc0518060: init+0x0/0x10()
initcall 0xc0518060: init+0x0/0x10() returned 0.
initcall 0xc0518060 ran for 0 msecs: init+0x0/0x10()
Calling initcall 0xc0518070: crypto_cbc_module_init+0x0/0x10()
initcall 0xc0518070: crypto_cbc_module_init+0x0/0x10() returned 0.
initcall 0xc0518070 ran for 0 msecs: crypto_cbc_module_init+0x0/0x10()
Calling initcall 0xc0518080: init+0x0/0x40()
initcall 0xc0518080: init+0x0/0x40() returned 0.
initcall 0xc0518080 ran for 0 msecs: init+0x0/0x40()
Calling initcall 0xc0518420: noop_init+0x0/0x10()
io scheduler noop registered
initcall 0xc0518420: noop_init+0x0/0x10() returned 0.
initcall 0xc0518420 ran for 0 msecs: noop_init+0x0/0x10()
Calling initcall 0xc0518430: as_init+0x0/0x10()
io scheduler anticipatory registered (default)
initcall 0xc0518430: as_init+0x0/0x10() returned 0.
initcall 0xc0518430 ran for 0 msecs: as_init+0x0/0x10()
Calling initcall 0xc0518440: deadline_init+0x0/0x10()
io scheduler deadline registered
initcall 0xc0518440: deadline_init+0x0/0x10() returned 0.
initcall 0xc0518440 ran for 0 msecs: deadline_init+0x0/0x10()
Calling initcall 0xc0518450: cfq_init+0x0/0xd0()
io scheduler cfq registered
initcall 0xc0518450: cfq_init+0x0/0xd0() returned 0.
initcall 0xc0518450 ran for 0 msecs: cfq_init+0x0/0xd0()
Calling initcall 0xc0518710: percpu_counter_startup+0x0/0x20()
initcall 0xc0518710: percpu_counter_startup+0x0/0x20() returned 0.
initcall 0xc0518710 ran for 0 msecs: percpu_counter_startup+0x0/0x20()
Calling initcall 0xc0518730: audit_classes_init+0x0/0x50()
initcall 0xc0518730: audit_classes_init+0x0/0x50() returned 0.
initcall 0xc0518730 ran for 0 msecs: audit_classes_init+0x0/0x50()
Calling initcall 0xc029bcb0: pci_init+0x0/0x30()
Limiting direct PCI/PCI transfers.
Boot video device is 0000:01:00.0
initcall 0xc029bcb0: pci_init+0x0/0x30() returned 0.
initcall 0xc029bcb0 ran for 0 msecs: pci_init+0x0/0x30()
Calling initcall 0xc0518e70: pci_proc_init+0x0/0x70()
initcall 0xc0518e70: pci_proc_init+0x0/0x70() returned 0.
initcall 0xc0518e70 ran for 0 msecs: pci_proc_init+0x0/0x70()
Calling initcall 0xc0518ee0: pci_hotplug_init+0x0/0x60()
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
initcall 0xc0518ee0: pci_hotplug_init+0x0/0x60() returned 0.
initcall 0xc0518ee0 ran for 0 msecs: pci_hotplug_init+0x0/0x60()
Calling initcall 0xc05195f0: pnpbios_thread_init+0x0/0x60()
initcall 0xc05195f0: pnpbios_thread_init+0x0/0x60() returned 0.
initcall 0xc05195f0 ran for 0 msecs: pnpbios_thread_init+0x0/0x60()
Calling initcall 0xc051a2c0: isapnp_init+0x0/0x4a0()
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
initcall 0xc051a2c0: isapnp_init+0x0/0x4a0() returned 0.
initcall 0xc051a2c0 ran for 340 msecs: isapnp_init+0x0/0x4a0()
Calling initcall 0xc051a910: rand_initialize+0x0/0x30()
initcall 0xc051a910: rand_initialize+0x0/0x30() returned 0.
initcall 0xc051a910 ran for 0 msecs: rand_initialize+0x0/0x30()
Calling initcall 0xc051a940: tty_init+0x0/0x1f0()
initcall 0xc051a940: tty_init+0x0/0x1f0() returned 0.
initcall 0xc051a940 ran for 27 msecs: tty_init+0x0/0x1f0()
Calling initcall 0xc051ab90: pty_init+0x0/0x420()
khelper used greatest stack depth: 6920 bytes left
khelper used greatest stack depth: 6804 bytes left
initcall 0xc051ab90: pty_init+0x0/0x420() returned 0.
initcall 0xc051ab90 ran for 244 msecs: pty_init+0x0/0x420()
Calling initcall 0xc051b610: rtc_init+0x0/0x1b0()
Real Time Clock Driver v1.12ac
initcall 0xc051b610: rtc_init+0x0/0x1b0() returned 0.
initcall 0xc051b610 ran for 0 msecs: rtc_init+0x0/0x1b0()
Calling initcall 0xc051b7c0: agp_init+0x0/0x30()
Linux agpgart interface v0.102
initcall 0xc051b7c0: agp_init+0x0/0x30() returned 0.
initcall 0xc051b7c0 ran for 0 msecs: agp_init+0x0/0x30()
Calling initcall 0xc051b850: agp_intel_init+0x0/0x40()
agpgart: suspend/resume problematic: resume with 3D/DRI active may lockup X.Org
on some chipset/BIOS combos (see DEBUG_AGP_PM in intel-agp.c)
agpgart: Detected an Intel 440BX Chipset.
agpgart: AGP aperture is 64M @ 0xf8000000
initcall 0xc051b850: agp_intel_init+0x0/0x40() returned 0.
initcall 0xc051b850 ran for 5 msecs: agp_intel_init+0x0/0x40()
Calling initcall 0xc051b890: cn_proc_init+0x0/0x40()
initcall 0xc051b890: cn_proc_init+0x0/0x40() returned 0.
initcall 0xc051b890 ran for 0 msecs: cn_proc_init+0x0/0x40()
Calling initcall 0xc051ba80: serial8250_init+0x0/0x130()
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
initcall 0xc051ba80: serial8250_init+0x0/0x130() returned 0.
initcall 0xc051ba80 ran for 3 msecs: serial8250_init+0x0/0x130()
Calling initcall 0xc051bbb0: serial8250_pnp_init+0x0/0x10()
pnp: the driver 'serial' has been registered
pnp: match found with the PnP device '00:0b' and the driver 'serial'
00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
pnp: match found with the PnP device '00:0c' and the driver 'serial'
00:0c: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
initcall 0xc051bbb0: serial8250_pnp_init+0x0/0x10() returned 0.
initcall 0xc051bbb0 ran for 3 msecs: serial8250_pnp_init+0x0/0x10()
Calling initcall 0xc051bbc0: serial8250_pci_init+0x0/0x20()
initcall 0xc051bbc0: serial8250_pci_init+0x0/0x20() returned 0.
initcall 0xc051bbc0 ran for 0 msecs: serial8250_pci_init+0x0/0x20()
Calling initcall 0xc051bd40: isa_bus_init+0x0/0x40()
initcall 0xc051bd40: isa_bus_init+0x0/0x40() returned 0.
initcall 0xc051bd40 ran for 0 msecs: isa_bus_init+0x0/0x40()
Calling initcall 0xc02d93e0: topology_sysfs_init+0x0/0x50()
initcall 0xc02d93e0: topology_sysfs_init+0x0/0x50() returned 0.
initcall 0xc02d93e0 ran for 0 msecs: topology_sysfs_init+0x0/0x50()
Calling initcall 0xc051c0e0: floppy_init+0x0/0xf10()
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
initcall 0xc051c0e0: floppy_init+0x0/0xf10() returned 0.
initcall 0xc051c0e0 ran for 19 msecs: floppy_init+0x0/0xf10()
Calling initcall 0xc051d040: rd_init+0x0/0x1e0()
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
initcall 0xc051d040: rd_init+0x0/0x1e0() returned 0.
initcall 0xc051d040 ran for 7 msecs: rd_init+0x0/0x1e0()
Calling initcall 0xc051d240: loop_init+0x0/0x180()
loop: module loaded
initcall 0xc051d240: loop_init+0x0/0x180() returned 0.
initcall 0xc051d240 ran for 3 msecs: loop_init+0x0/0x180()
Calling initcall 0xc051d3c0: e100_init_module+0x0/0x60()
e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
e100: eth0: e100_probe: addr 0xfc5ff000, irq 11, MAC addr 00:90:27:70:14:CD
initcall 0xc051d3c0: e100_init_module+0x0/0x60() returned 0.
initcall 0xc051d3c0 ran for 22 msecs: e100_init_module+0x0/0x60()
Calling initcall 0xc051d490: net_olddevs_init+0x0/0x90()
initcall 0xc051d490: net_olddevs_init+0x0/0x90() returned 0.
initcall 0xc051d490 ran for 0 msecs: net_olddevs_init+0x0/0x90()
Calling initcall 0xc051d520: loopback_init+0x0/0x30()
initcall 0xc051d520: loopback_init+0x0/0x30() returned 0.
initcall 0xc051d520 ran for 0 msecs: loopback_init+0x0/0x30()
Calling initcall 0xc051d550: dummy_init_module+0x0/0xd0()
initcall 0xc051d550: dummy_init_module+0x0/0xd0() returned 0.
initcall 0xc051d550 ran for 0 msecs: dummy_init_module+0x0/0xd0()
Calling initcall 0xc051d620: rtl8169_init_module+0x0/0x20()
initcall 0xc051d620: rtl8169_init_module+0x0/0x20() returned 0.
initcall 0xc051d620 ran for 0 msecs: rtl8169_init_module+0x0/0x20()
Calling initcall 0xc051d660: init_netconsole+0x0/0x1d0()
netconsole: local port 4444
netconsole: local IP 192.168.2.36
netconsole: interface eth0
netconsole: remote port 5140
netconsole: remote IP 192.168.2.33
netconsole: remote ethernet address 00:0d:56:c6:c6:cc
netconsole: device eth0 not up yet, forcing it
WARNING: at include/linux/netdevice.h:331 napi_enable()
 [<c0103bfa>] show_trace_log_lvl+0x1a/0x30
 [<c0104822>] show_trace+0x12/0x20
 [<c0104846>] dump_stack+0x16/0x20
 [<c02e3989>] e100_up+0x159/0x160
 [<c02e39ae>] e100_open+0x1e/0x60
 [<c0354bb8>] dev_open+0x38/0x80
 [<c03605eb>] netpoll_setup+0x15b/0x390
 [<c051d754>] init_netconsole+0xf4/0x1d0
 [<c05045f2>] kernel_init+0x142/0x320
 [<c0103807>] kernel_thread_helper+0x7/0x10
 =======================
e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
netconsole: carrier detect appears untrustworthy, waiting 4 seconds
console [netcon0] enabled
netconsole: network logging started
initcall 0xc051d660: init_netconsole+0x0/0x1d0() returned 0.
initcall 0xc051d660 ran for 3968 msecs: init_netconsole+0x0/0x1d0()
Calling initcall 0xc051d830: piix_ide_init+0x0/0xb0()
initcall 0xc051d830: piix_ide_init+0x0/0xb0() returned 0.
initcall 0xc051d830 ran for 0 msecs: piix_ide_init+0x0/0xb0()
Calling initcall 0xc051d8e0: generic_ide_init+0x0/0x20()
initcall 0xc051d8e0: generic_ide_init+0x0/0x20() returned 0.
initcall 0xc051d8e0 ran for 0 msecs: generic_ide_init+0x0/0x20()
Calling initcall 0xc051d9a0: ide_init+0x0/0x70()
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 0000:00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:pio, hdb:pio
    ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:pio
Probing IDE interface ide0...
Probing IDE interface ide1...
hdc: MAXTOR 6L080J4, ATA DISK drive
hdc: host max PIO4 wanted PIO255(auto-tune) selected PIO4
hdc: selected mode 0x42
ide1 at 0x170-0x177,0x376 on irq 15
initcall 0xc051d9a0: ide_init+0x0/0x70() returned 0.
initcall 0xc051d9a0 ran for 1465 msecs: ide_init+0x0/0x70()
Calling initcall 0xc051e1a0: ide_generic_init+0x0/0x10()
Probing IDE interface ide0...
initcall 0xc051e1a0: ide_generic_init+0x0/0x10() returned 0.
initcall 0xc051e1a0 ran for 546 msecs: ide_generic_init+0x0/0x10()
Calling initcall 0xc051e1b0: idedisk_init+0x0/0x10()
hdc: max request size: 128KiB
hdc: 156355584 sectors (80054 MB) w/1819KiB Cache, CHS=65535/16/63, UDMA(33)
hdc: cache flushes supported
 hdc: hdc1 hdc2 hdc3 hdc4 < hdc5 hdc6 >
initcall 0xc051e1b0: idedisk_init+0x0/0x10() returned 0.
initcall 0xc051e1b0 ran for 36 msecs: idedisk_init+0x0/0x10()
Calling initcall 0xc051e1c0: ide_cdrom_init+0x0/0x10()
initcall 0xc051e1c0: ide_cdrom_init+0x0/0x10() returned 0.
initcall 0xc051e1c0 ran for 0 msecs: ide_cdrom_init+0x0/0x10()
Calling initcall 0xc051e1d0: idetape_init+0x0/0x90()
initcall 0xc051e1d0: idetape_init+0x0/0x90() returned 0.
initcall 0xc051e1d0 ran for 0 msecs: idetape_init+0x0/0x90()
Calling initcall 0xc051e260: idefloppy_init+0x0/0x20()
ide-floppy driver 0.99.newide
initcall 0xc051e260: idefloppy_init+0x0/0x20() returned 0.
initcall 0xc051e260 ran for 0 msecs: idefloppy_init+0x0/0x20()
Calling initcall 0xc051e530: spi_transport_init+0x0/0x30()
initcall 0xc051e530: spi_transport_init+0x0/0x30() returned 0.
initcall 0xc051e530 ran for 0 msecs: spi_transport_init+0x0/0x30()
Calling initcall 0xc051e560: fc_transport_init+0x0/0x50()
initcall 0xc051e560: fc_transport_init+0x0/0x50() returned 0.
initcall 0xc051e560 ran for 1 msecs: fc_transport_init+0x0/0x50()
Calling initcall 0xc051e5b0: init_sd+0x0/0x90()
initcall 0xc051e5b0: init_sd+0x0/0x90() returned 0.
initcall 0xc051e5b0 ran for 1 msecs: init_sd+0x0/0x90()
Calling initcall 0xc051e640: init_sr+0x0/0x50()
initcall 0xc051e640: init_sr+0x0/0x50() returned 0.
initcall 0xc051e640 ran for 0 msecs: init_sr+0x0/0x50()
Calling initcall 0xc051e690: init_sg+0x0/0x150()
initcall 0xc051e690: init_sg+0x0/0x150() returned 0.
initcall 0xc051e690 ran for 0 msecs: init_sg+0x0/0x150()
Calling initcall 0xc051e7e0: cdrom_init+0x0/0x10()
initcall 0xc051e7e0: cdrom_init+0x0/0x10() returned 0.
initcall 0xc051e7e0 ran for 0 msecs: cdrom_init+0x0/0x10()
Calling initcall 0xc051e890: i8042_init+0x0/0x3f0()
pnp: the driver 'i8042 kbd' has been registered
pnp: match found with the PnP device '00:05' and the driver 'i8042 kbd'
pnp: the driver 'i8042 aux' has been registered
PNP: PS/2 Controller [PNP0303] at 0x60,0x64 irq 1
PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
serio: i8042 KBD port at 0x60,0x64 irq 1
initcall 0xc051e890: i8042_init+0x0/0x3f0() returned 0.
initcall 0xc051e890 ran for 2 msecs: i8042_init+0x0/0x3f0()
Calling initcall 0xc051ec80: serport_init+0x0/0x30()
initcall 0xc051ec80: serport_init+0x0/0x30() returned 0.
initcall 0xc051ec80 ran for 0 msecs: serport_init+0x0/0x30()
Calling initcall 0xc051ee60: mousedev_init+0x0/0x90()
mice: PS/2 mouse device common for all mice
initcall 0xc051ee60: mousedev_init+0x0/0x90() returned 0.
initcall 0xc051ee60 ran for 1 msecs: mousedev_init+0x0/0x90()
Calling initcall 0xc051eef0: atkbd_init+0x0/0x20()
initcall 0xc051eef0: atkbd_init+0x0/0x20() returned 0.
initcall 0xc051eef0 ran for 0 msecs: atkbd_init+0x0/0x20()
Calling initcall 0xc051ef10: psmouse_init+0x0/0x60()
input: AT Translated Set 2 keyboard as /class/input/input0
initcall 0xc051ef10: psmouse_init+0x0/0x60() returned 0.
initcall 0xc051ef10 ran for 36 msecs: psmouse_init+0x0/0x60()
Calling initcall 0xc051ef70: edac_init+0x0/0xb0()
EDAC MC: Ver: 2.1.0 Aug 21 2007
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_pci_dev_parity_clear()
EDAC DEBUG: edac_sysfs_setup_mc_kset()
EDAC DEBUG: edac_sysfs_setup_mc_kset() Registered '.../edac/mc' kobject
initcall 0xc051ef70: edac_init+0x0/0xb0() returned 0.
initcall 0xc051ef70 ran for 1 msecs: edac_init+0x0/0xb0()
Calling initcall 0xc051f020: amd76x_init+0x0/0x20()
initcall 0xc051f020: amd76x_init+0x0/0x20() returned 0.
initcall 0xc051f020 ran for 0 msecs: amd76x_init+0x0/0x20()
Calling initcall 0xc051f040: e7xxx_init+0x0/0x20()
initcall 0xc051f040: e7xxx_init+0x0/0x20() returned 0.
initcall 0xc051f040 ran for 0 msecs: e7xxx_init+0x0/0x20()
Calling initcall 0xc051f060: e752x_init+0x0/0x40()
initcall 0xc051f060: e752x_init+0x0/0x40() returned 0.
initcall 0xc051f060 ran for 0 msecs: e752x_init+0x0/0x40()
Calling initcall 0xc051f0a0: i82875p_init+0x0/0xf0()
EDAC DEBUG: 875p pci_get_device fail
initcall 0xc051f0a0: i82875p_init+0x0/0xf0() returned -19.
initcall 0xc051f0a0 ran for 0 msecs: i82875p_init+0x0/0xf0()
Calling initcall 0xc051f190: i82860_init+0x0/0xf0()
EDAC DEBUG: 860 pci_get_device fail
initcall 0xc051f190: i82860_init+0x0/0xf0() returned -19.
initcall 0xc051f190 ran for 0 msecs: i82860_init+0x0/0xf0()
Calling initcall 0xc051f280: r82600_init+0x0/0x20()
initcall 0xc051f280: r82600_init+0x0/0x20() returned 0.
initcall 0xc051f280 ran for 0 msecs: r82600_init+0x0/0x20()
Calling initcall 0xc051faa0: pci_eisa_init_module+0x0/0x20()
initcall 0xc051faa0: pci_eisa_init_module+0x0/0x20() returned 0.
initcall 0xc051faa0 ran for 0 msecs: pci_eisa_init_module+0x0/0x20()
Calling initcall 0xc051fac0: virtual_eisa_root_init+0x0/0x60()
EISA: Probing bus 0 at eisa.0
initcall 0xc051fac0: virtual_eisa_root_init+0x0/0x60() returned -1.
initcall 0xc051fac0 ran for 1 msecs: virtual_eisa_root_init+0x0/0x60()
initcall at 0xc051fac0: virtual_eisa_root_init+0x0/0x60(): returned with error code -1
Calling initcall 0xc051fbc0: cpufreq_stats_init+0x0/0xb0()
initcall 0xc051fbc0: cpufreq_stats_init+0x0/0xb0() returned 0.
initcall 0xc051fbc0 ran for 0 msecs: cpufreq_stats_init+0x0/0xb0()
Calling initcall 0xc05208f0: hid_init+0x0/0x10()
initcall 0xc05208f0: hid_init+0x0/0x10() returned 0.
initcall 0xc05208f0 ran for 0 msecs: hid_init+0x0/0x10()
Calling initcall 0xc0522350: flow_cache_init+0x0/0x180()
initcall 0xc0522350: flow_cache_init+0x0/0x180() returned 0.
initcall 0xc0522350 ran for 0 msecs: flow_cache_init+0x0/0x180()
Calling initcall 0xc0522510: llc_init+0x0/0x70()
initcall 0xc0522510: llc_init+0x0/0x70() returned 0.
initcall 0xc0522510 ran for 0 msecs: llc_init+0x0/0x70()
Calling initcall 0xc0522580: snap_init+0x0/0x40()
initcall 0xc0522580: snap_init+0x0/0x40() returned 0.
initcall 0xc0522580 ran for 0 msecs: snap_init+0x0/0x40()
Calling initcall 0xc0523810: xfrm4_beet_init+0x0/0x20()
initcall 0xc0523810: xfrm4_beet_init+0x0/0x20() returned 0.
initcall 0xc0523810 ran for 0 msecs: xfrm4_beet_init+0x0/0x20()
Calling initcall 0xc0523830: xfrm4_transport_init+0x0/0x20()
initcall 0xc0523830: xfrm4_transport_init+0x0/0x20() returned 0.
initcall 0xc0523830 ran for 0 msecs: xfrm4_transport_init+0x0/0x20()
Calling initcall 0xc0523850: xfrm4_tunnel_init+0x0/0x20()
initcall 0xc0523850: xfrm4_tunnel_init+0x0/0x20() returned 0.
initcall 0xc0523850 ran for 0 msecs: xfrm4_tunnel_init+0x0/0x20()
Calling initcall 0xc0523870: inet_diag_init+0x0/0x70()
initcall 0xc0523870: inet_diag_init+0x0/0x70() returned 0.
initcall 0xc0523870 ran for 0 msecs: inet_diag_init+0x0/0x70()
Calling initcall 0xc05238e0: tcp_diag_init+0x0/0x10()
initcall 0xc05238e0: tcp_diag_init+0x0/0x10() returned 0.
initcall 0xc05238e0 ran for 0 msecs: tcp_diag_init+0x0/0x10()
Calling initcall 0xc05238f0: cubictcp_register+0x0/0xb0()
TCP cubic registered
initcall 0xc05238f0: cubictcp_register+0x0/0xb0() returned 0.
initcall 0xc05238f0 ran for 0 msecs: cubictcp_register+0x0/0xb0()
Calling initcall 0xc0523b70: af_unix_init+0x0/0x80()
NET: Registered protocol family 1
initcall 0xc0523b70: af_unix_init+0x0/0x80() returned 0.
initcall 0xc0523b70 ran for 0 msecs: af_unix_init+0x0/0x80()
Calling initcall 0xc0523bf0: packet_init+0x0/0x60()
NET: Registered protocol family 17
initcall 0xc0523bf0: packet_init+0x0/0x60() returned 0.
initcall 0xc0523bf0 ran for 0 msecs: packet_init+0x0/0x60()
Calling initcall 0xc0523c50: ipsec_pfkey_init+0x0/0x90()
NET: Registered protocol family 15
initcall 0xc0523c50: ipsec_pfkey_init+0x0/0x90() returned 0.
initcall 0xc0523c50 ran for 0 msecs: ipsec_pfkey_init+0x0/0x90()
Calling initcall 0xc0523ce0: br_init+0x0/0xb0()
initcall 0xc0523ce0: br_init+0x0/0xb0() returned 0.
initcall 0xc0523ce0 ran for 0 msecs: br_init+0x0/0xb0()
Calling initcall 0xc0523e70: init_sunrpc+0x0/0x60()
initcall 0xc0523e70: init_sunrpc+0x0/0x60() returned 0.
initcall 0xc0523e70 ran for 0 msecs: init_sunrpc+0x0/0x60()
Calling initcall 0xc0523ed0: init_rpcsec_gss+0x0/0x40()
initcall 0xc0523ed0: init_rpcsec_gss+0x0/0x40() returned 0.
initcall 0xc0523ed0 ran for 0 msecs: init_rpcsec_gss+0x0/0x40()
Calling initcall 0xc0523f10: init_kerberos_module+0x0/0x29()
initcall 0xc0523f10: init_kerberos_module+0x0/0x29() returned 0.
initcall 0xc0523f10 ran for 0 msecs: init_kerberos_module+0x0/0x29()
Calling initcall 0xc050ec70: check_nmi_watchdog+0x0/0x1e0()
Testing NMI watchdog ... OK.
initcall 0xc050ec70: check_nmi_watchdog+0x0/0x1e0() returned 0.
initcall 0xc050ec70 ran for 75 msecs: check_nmi_watchdog+0x0/0x1e0()
Calling initcall 0xc050ec00: init_lapic_nmi_sysfs+0x0/0x40()
initcall 0xc050ec00: init_lapic_nmi_sysfs+0x0/0x40() returned 0.
initcall 0xc050ec00 ran for 0 msecs: init_lapic_nmi_sysfs+0x0/0x40()
Calling initcall 0xc0510690: balanced_irq_init+0x0/0x1e0()
Starting balanced_irq
initcall 0xc0510690: balanced_irq_init+0x0/0x1e0() returned 0.
initcall 0xc0510690 ran for 0 msecs: balanced_irq_init+0x0/0x1e0()
Calling initcall 0xc050efc0: io_apic_bug_finalize+0x0/0x20()
initcall 0xc050efc0: io_apic_bug_finalize+0x0/0x20() returned 0.
initcall 0xc050efc0 ran for 0 msecs: io_apic_bug_finalize+0x0/0x20()
Calling initcall 0xc0511760: print_ipi_mode+0x0/0x30()
Using IPI No-Shortcut mode
initcall 0xc0511760: print_ipi_mode+0x0/0x30() returned 0.
initcall 0xc0511760 ran for 0 msecs: print_ipi_mode+0x0/0x30()
Calling initcall 0xc0512310: disable_boot_consoles+0x0/0x50()
initcall 0xc0512310: disable_boot_consoles+0x0/0x50() returned 0.
initcall 0xc0512310 ran for 0 msecs: disable_boot_consoles+0x0/0x50()
Calling initcall 0xc0513ab0: taskstats_init+0x0/0x60()
initcall 0xc0513ab0: taskstats_init+0x0/0x60() returned 0.
initcall 0xc0513ab0 ran for 0 msecs: taskstats_init+0x0/0x60()
Calling initcall 0xc0518630: random32_reseed+0x0/0x60()
initcall 0xc0518630: random32_reseed+0x0/0x60() returned 0.
initcall 0xc0518630 ran for 0 msecs: random32_reseed+0x0/0x60()
Calling initcall 0xc0518e20: pci_sysfs_init+0x0/0x50()
initcall 0xc0518e20: pci_sysfs_init+0x0/0x50() returned 0.
initcall 0xc0518e20 ran for 0 msecs: pci_sysfs_init+0x0/0x50()
Calling initcall 0xc051a900: seqgen_init+0x0/0x10()
initcall 0xc051a900: seqgen_init+0x0/0x10() returned 0.
initcall 0xc051a900 ran for 0 msecs: seqgen_init+0x0/0x10()
Calling initcall 0xc030ad00: scsi_complete_async_scans+0x0/0x100()
initcall 0xc030ad00: scsi_complete_async_scans+0x0/0x100() returned 0.
initcall 0xc030ad00 ran for 0 msecs: scsi_complete_async_scans+0x0/0x100()
Calling initcall 0xc05203e0: edd_init+0x0/0x280()
BIOS EDD facility v0.16 2004-Jun-25, 6 devices found
initcall 0xc05203e0: edd_init+0x0/0x280() returned 0.
initcall 0xc05203e0 ran for 2 msecs: edd_init+0x0/0x280()
Calling initcall 0xc0522f30: tcp_congestion_default+0x0/0x10()
initcall 0xc0522f30: tcp_congestion_default+0x0/0x10() returned 0.
initcall 0xc0522f30 ran for 0 msecs: tcp_congestion_default+0x0/0x10()
RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (-28 != 32768) 4194304
EXT3-fs: INFO: recovery required on readonly filesystem.
EXT3-fs: write access will be enabled during recovery.
(fs/jbd/recovery.c, 255): journal_recover: JBD: recovery, exit status 0, recovered transactions 102287 to 102300
(fs/jbd/recovery.c, 257): journal_recover: JBD: Replayed 1011 and revoked 0/34 blocks
kjournald starting.  Commit interval 5 seconds
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 296k freed
Write protecting the kernel read-only data: 976k
hostname used greatest stack depth: 6580 bytes left
uname used greatest stack depth: 6472 bytes left
mount used greatest stack depth: 5792 bytes left
hotplug used greatest stack depth: 5664 bytes left
hotplug used greatest stack depth: 5508 bytes left
EXT3 FS on hdc2, internal journal
Adding 1020116k swap on /dev/hdc3.  Priority:-1 extents:1 across:1020116k
kjournald starting.  Commit interval 5 seconds
EXT3 FS on hdc1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
process `syslogd' is using obsolete setsockopt SO_BSDCOMPAT
BUG: unable to handle kernel NULL pointer dereference at virtual address 000002b0
 printing eip:
c0355075
*pde = 00000000
Oops: 0000 [#1]
SMP 
Modules linked in:
CPU:    0
EIP:    0060:[<c0355075>]    Not tainted VLI
EFLAGS: 00010246   (2.6.23-rc3 #3)
EIP is at net_rx_action+0x75/0x170
eax: 00000000   ebx: c1b6d298   ecx: 00000004   edx: 00000001
esi: 0000012c   edi: c054ada0   ebp: f5c1bb8c   esp: f5c1bb6c
ds: 007b   es: 007b   fs: 00d8  gs: 0033  ss: 0068
Process rpc.statd (pid: 1958, ti=f5c1a000 task=f6bf0f60 task.ti=f5c1a000)
Stack: f5c1bb78 fffef555 f5c1bb84 c1b6d298 c1b6d298 00000001 c04f5f58 c054ada0 
       f5c1bba8 c01263c7 0000000a 00000000 00000046 c04e3760 00000000 f5c1bbb4 
       c0126497 00000202 f5c1bbd0 c01266f5 00000246 c04e3760 c04e38e0 c04e3760 
Call Trace:
 [<c0103bfa>] show_trace_log_lvl+0x1a/0x30
 [<c0103cb9>] show_stack_log_lvl+0xa9/0xd0
 [<c0103ec9>] show_registers+0x1e9/0x2f0
 [<c01040e1>] die+0x111/0x260
 [<c0115cdc>] do_page_fault+0x18c/0x6a0
 [<c03d203a>] error_code+0x72/0x78
 [<c01263c7>] __do_softirq+0x87/0x100
 [<c0126497>] do_softirq+0x57/0x60
 [<c01266f5>] local_bh_enable+0xb5/0x150
 [<c0355748>] dev_queue_xmit+0xa8/0x330
 [<c035b11f>] neigh_resolve_output+0xcf/0x250
 [<c036fc53>] ip_output+0x1d3/0x2c0
 [<c036e4ff>] ip_push_pending_frames+0x25f/0x400
 [<c038b643>] udp_push_pending_frames+0x153/0x340
 [<c038c8c4>] udp_sendmsg+0x324/0x780
 [<c0392b44>] inet_sendmsg+0x34/0x60
 [<c0347d55>] sock_sendmsg+0xc5/0xf0
 [<c034870f>] sys_sendto+0xbf/0xe0
 [<c0349050>] sys_socketcall+0x1b0/0x280
 [<c0102b52>] sysenter_past_esp+0x5f/0x99
 =======================
Code: e8 21 9d de ff fb 8b 5d ec 39 5d e0 0f 84 8f 00 00 00 85 f6 0f 8e ac 00 00 00 a1 40 60 4f c0 39 45 e4 0f 85 9e 00 00 00 8b 43 38 <8b> 80 b0 02 00 00 85 c0 74 74 8d 43 18 89 df e8 e7 c8 07 00 64 
EIP: [<c0355075>] net_rx_action+0x75/0x170 SS:ESP 0068:f5c1bb6c
Kernel panic - not syncing: Fatal exception in interrupt


^ permalink raw reply

* Re: [RFT] r8169 changes against 2.6.23-rc3
From: Bruce Cole @ 2007-08-22  5:51 UTC (permalink / raw)
  To: Francois Romieu, netdev; +Cc: David Gundersen, bacole
In-Reply-To: <46CB3DE4.4060107@gmail.com>

So I did some experimenting with locking, but eventually found that this 
chunk:

@@ -2677,10 +2681,18 @@ static void rtl8169_tx_interrupt(struct 
net_device *dev,

     if (tp->dirty_tx != dirty_tx) {
         tp->dirty_tx = dirty_tx;
- -        smp_wmb();
- -        if (netif_queue_stopped(dev) &&
- -            (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) {
- -            netif_wake_queue(dev);
+        smp_mb();
+        if (unlikely(netif_queue_stopped(dev))) {
+            netif_tx_lock(dev);
+                if (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)
+                netif_wake_queue(dev);
+            if (dirty_tx != tp->cur_tx)
+                RTL_W8(TxPoll, NPQ);
+            netif_tx_unlock(dev);
+        } else if (dirty_tx != tp->cur_tx) {
+            netif_tx_lock(dev);
+            RTL_W8(TxPoll, NPQ);
+            netif_tx_unlock(dev);
         }
     }
 }

from the patch in http://www.spinics.net/lists/netdev/msg33960.html
was sufficient to fix the stuck TX queue bug without the busy-wait.  
Actually
just the else portion of the above chunk was sufficient in my testing, 
without
the barrier change or the if statement change.

David Gundersen pointed me to this potential fix days ago, but I didn't
consider it first since the change had (presumably intentionally) been 
dropped from
the set of diffs Francois pointed me to.  Given that I had reported the same
problem as David Gundersen (and Dirk, and other samba users...) I 
thought this
patch had been ruled out.  Apparently not.  Hopefully this can be dusted off
and made into a fairly high priority fix as it has been biting realtek users
since last year at least.


^ permalink raw reply

* [ofa-general] Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB
From: David Miller @ 2007-08-22  4:22 UTC (permalink / raw)
  To: krkumar2
  Cc: jagana, johnpol, gaagaan, jeff, Robert.Olsson, kumarkr, rdreier,
	peter.p.waskiewicz.jr, hadi, mcarlson, netdev, general, mchan,
	tgraf, sri, shemminger, kaber, herbert
In-Reply-To: <OFC19F468C.48FB78EE-ON6525733F.0016047F-6525733F.00170F48@in.ibm.com>

From: Krishna Kumar2 <krkumar2@in.ibm.com>
Date: Wed, 22 Aug 2007 09:41:52 +0530

> David Miller <davem@davemloft.net> wrote on 08/22/2007 12:21:43 AM:
> 
> > From: jamal <hadi@cyberus.ca>
> > Date: Tue, 21 Aug 2007 08:30:22 -0400
> >
> > > On Tue, 2007-21-08 at 00:18 -0700, David Miller wrote:
> > >
> > > > Using 16K buffer size really isn't going to keep the pipe full enough
> > > > for TSO.
> > >
> > > Why the comparison with TSO (or GSO for that matter)?
> >
> > Because TSO does batching already, so it's a very good
> > "tit for tat" comparison of the new batching scheme
> > vs. an existing one.
> 
> I am planning to do more testing on your suggestion over the
> weekend, but I had a comment. Are you saying that TSO and
> batching should be mutually exclusive so hardware that doesn't
> support TSO (like IB) only would benefit?
> 
> But even if they can co-exist, aren't cases like sending
> multiple small skbs better handled with batching?

I'm not making any suggestions, so don't read that into anything I've
said :-)

I think the jury is still out, but seeing TSO perform even slightly
worse with the batching changes in place would be very worrysome.
This applies to both throughput and cpu utilization.

^ permalink raw reply

* [ofa-general] Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB
From: Krishna Kumar2 @ 2007-08-22  4:11 UTC (permalink / raw)
  To: David Miller
  Cc: jagana, johnpol, gaagaan, jeff, Robert.Olsson, kumarkr, rdreier,
	peter.p.waskiewicz.jr, hadi, mcarlson, netdev, general, mchan,
	tgraf, sri, shemminger, kaber, herbert
In-Reply-To: <20070821.115143.23013721.davem@davemloft.net>

David Miller <davem@davemloft.net> wrote on 08/22/2007 12:21:43 AM:

> From: jamal <hadi@cyberus.ca>
> Date: Tue, 21 Aug 2007 08:30:22 -0400
>
> > On Tue, 2007-21-08 at 00:18 -0700, David Miller wrote:
> >
> > > Using 16K buffer size really isn't going to keep the pipe full enough
> > > for TSO.
> >
> > Why the comparison with TSO (or GSO for that matter)?
>
> Because TSO does batching already, so it's a very good
> "tit for tat" comparison of the new batching scheme
> vs. an existing one.

I am planning to do more testing on your suggestion over the
weekend, but I had a comment. Are you saying that TSO and
batching should be mutually exclusive so hardware that doesn't
support TSO (like IB) only would benefit?

But even if they can co-exist, aren't cases like sending
multiple small skbs better handled with batching?

Thanks,

- KK

^ permalink raw reply

* [PATCH 11/11] cxgb3 - log and clear PEX errors
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Clear pciE PEX errors late at module load time.
Log details when PEX errors occur.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/t3_hw.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index 3d47627..538b254 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -1355,6 +1355,10 @@ static void pcie_intr_handler(struct adapter *adapter)
 		{0}
 	};
 
+	if (t3_read_reg(adapter, A_PCIE_INT_CAUSE) & F_PEXERR)
+		CH_ALERT(adapter, "PEX error code 0x%x\n",
+			 t3_read_reg(adapter, A_PCIE_PEX_ERR));
+
 	if (t3_handle_intr_status(adapter, A_PCIE_INT_CAUSE, PCIE_INTR_MASK,
 				  pcie_intr_info, adapter->irq_stats))
 		t3_fatal_err(adapter);
@@ -1806,6 +1810,8 @@ void t3_intr_clear(struct adapter *adapter)
 	for (i = 0; i < ARRAY_SIZE(cause_reg_addr); ++i)
 		t3_write_reg(adapter, cause_reg_addr[i], 0xffffffff);
 
+	if (is_pcie(adapter))
+		t3_write_reg(adapter, A_PCIE_PEX_ERR, 0xffffffff);
 	t3_write_reg(adapter, A_PL_INT_CAUSE0, 0xffffffff);
 	t3_read_reg(adapter, A_PL_INT_CAUSE0);	/* flush */
 }

^ permalink raw reply related

* [PATCH 10/11] cxgb3 - Firmware update
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Update firmware version
Allow the driver to be up and running with older FW image

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/common.h     |    2 +-
 drivers/net/cxgb3/cxgb3_main.c |    9 +++++----
 drivers/net/cxgb3/t3_hw.c      |   20 +++++++++++++++-----
 drivers/net/cxgb3/version.h    |    2 +-
 4 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h
index b665b20..ff867c2 100644
--- a/drivers/net/cxgb3/common.h
+++ b/drivers/net/cxgb3/common.h
@@ -691,7 +691,7 @@ int t3_read_flash(struct adapter *adapter, unsigned int addr,
 		  unsigned int nwords, u32 *data, int byte_oriented);
 int t3_load_fw(struct adapter *adapter, const u8 * fw_data, unsigned int size);
 int t3_get_fw_version(struct adapter *adapter, u32 *vers);
-int t3_check_fw_version(struct adapter *adapter);
+int t3_check_fw_version(struct adapter *adapter, int *must_load);
 int t3_init_hw(struct adapter *adapter, u32 fw_params);
 void mac_prep(struct cmac *mac, struct adapter *adapter, int index);
 void early_hw_init(struct adapter *adapter, const struct adapter_info *ai);
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index 65ded16..eaebd7f 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -814,11 +814,12 @@ static int cxgb_up(struct adapter *adap)
 	int must_load;
 
 	if (!(adap->flags & FULL_INIT_DONE)) {
-		err = t3_check_fw_version(adap);
-		if (err == -EINVAL)
+		err = t3_check_fw_version(adap, &must_load);
+		if (err == -EINVAL) {
 			err = upgrade_fw(adap);
-		if (err)
-			goto out;
+			if (err && must_load)
+				goto out;
+		}
 
 		err = t3_check_tpsram_version(adap, &must_load);
 		if (err == -EINVAL) {
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index 63032e8..3d47627 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -957,16 +957,18 @@ int t3_get_fw_version(struct adapter *adapter, u32 *vers)
 /**
  *	t3_check_fw_version - check if the FW is compatible with this driver
  *	@adapter: the adapter
- *
+ *	@must_load: set to 1 if loading a new FW image is required
+
  *	Checks if an adapter's FW is compatible with the driver.  Returns 0
  *	if the versions are compatible, a negative error otherwise.
  */
-int t3_check_fw_version(struct adapter *adapter)
+int t3_check_fw_version(struct adapter *adapter, int *must_load)
 {
 	int ret;
 	u32 vers;
 	unsigned int type, major, minor;
 
+	*must_load = 1;
 	ret = t3_get_fw_version(adapter, &vers);
 	if (ret)
 		return ret;
@@ -979,9 +981,17 @@ int t3_check_fw_version(struct adapter *adapter)
 	    minor == FW_VERSION_MINOR)
 		return 0;
 
-	CH_ERR(adapter, "found wrong FW version(%u.%u), "
-	       "driver needs version %u.%u\n", major, minor,
-	       FW_VERSION_MAJOR, FW_VERSION_MINOR);
+	if (major != FW_VERSION_MAJOR)
+		CH_ERR(adapter, "found wrong FW version(%u.%u), "
+		       "driver needs version %u.%u\n", major, minor,
+		       FW_VERSION_MAJOR, FW_VERSION_MINOR);
+	else {
+		*must_load = 0;
+		CH_WARN(adapter, "found wrong FW minor version(%u.%u), "
+		        "driver compiled for version %u.%u\n", major, minor,
+			FW_VERSION_MAJOR, FW_VERSION_MINOR);
+	}
+
 	return -EINVAL;
 }
 
diff --git a/drivers/net/cxgb3/version.h b/drivers/net/cxgb3/version.h
index eb508bf..ef1c633 100644
--- a/drivers/net/cxgb3/version.h
+++ b/drivers/net/cxgb3/version.h
@@ -39,6 +39,6 @@
 
 /* Firmware version */
 #define FW_VERSION_MAJOR 4
-#define FW_VERSION_MINOR 3
+#define FW_VERSION_MINOR 6
 #define FW_VERSION_MICRO 0
 #endif				/* __CHELSIO_VERSION_H */

^ permalink raw reply related

* [PATCH 9/11] cxgb3 - engine microcode update
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Load microcode engine when the interface
is configured up.
Bump up version to 1.1.0.
Allow the driver to be and running with
older microcode images.
Allow ethtool to log the microcode version.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/common.h     |    8 ++-
 drivers/net/cxgb3/cxgb3_main.c |  116 ++++++++++++++++++++++++----------------
 drivers/net/cxgb3/t3_hw.c      |   43 +++++++++++++--
 3 files changed, 113 insertions(+), 54 deletions(-)

diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h
index d54446f..b665b20 100644
--- a/drivers/net/cxgb3/common.h
+++ b/drivers/net/cxgb3/common.h
@@ -127,8 +127,8 @@ enum {				/* adapter interrupt-maintained statistics */
 
 enum {
 	TP_VERSION_MAJOR	= 1,
-	TP_VERSION_MINOR	= 0,
-	TP_VERSION_MICRO	= 44
+	TP_VERSION_MINOR	= 1,
+	TP_VERSION_MICRO	= 0
 };
 
 #define S_TP_VERSION_MAJOR		16
@@ -438,6 +438,7 @@ enum {					    /* chip revisions */
 	T3_REV_A  = 0,
 	T3_REV_B  = 2,
 	T3_REV_B2 = 3,
+	T3_REV_C  = 4,
 };
 
 struct trace_params {
@@ -682,7 +683,8 @@ const struct adapter_info *t3_get_adapter_info(unsigned int board_id);
 int t3_seeprom_read(struct adapter *adapter, u32 addr, u32 *data);
 int t3_seeprom_write(struct adapter *adapter, u32 addr, u32 data);
 int t3_seeprom_wp(struct adapter *adapter, int enable);
-int t3_check_tpsram_version(struct adapter *adapter);
+int t3_get_tp_version(struct adapter *adapter, u32 *vers);
+int t3_check_tpsram_version(struct adapter *adapter, int *must_load);
 int t3_check_tpsram(struct adapter *adapter, u8 *tp_ram, unsigned int size);
 int t3_set_proto_sram(struct adapter *adap, u8 *data);
 int t3_read_flash(struct adapter *adapter, unsigned int addr,
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index e5744e7..65ded16 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -721,6 +721,7 @@ static void bind_qsets(struct adapter *adap)
 }
 
 #define FW_FNAME "t3fw-%d.%d.%d.bin"
+#define TPSRAM_NAME "t3%c_protocol_sram-%d.%d.%d.bin"
 
 static int upgrade_fw(struct adapter *adap)
 {
@@ -742,6 +743,61 @@ static int upgrade_fw(struct adapter *adap)
 	return ret;
 }
 
+static inline char t3rev2char(struct adapter *adapter)
+{
+	char rev = 0;
+
+	switch(adapter->params.rev) {
+	case T3_REV_A:
+		rev = 'a';
+		break;
+	case T3_REV_B:
+	case T3_REV_B2:
+		rev = 'b';
+		break;
+	case T3_REV_C:
+		rev = 'c';
+		break;
+	}
+	return rev;
+}
+
+int update_tpsram(struct adapter *adap)
+{
+	const struct firmware *tpsram;
+	char buf[64];
+	struct device *dev = &adap->pdev->dev;
+	int ret;
+	char rev;
+	
+	rev = t3rev2char(adap);
+	if (!rev)
+		return 0;
+
+	snprintf(buf, sizeof(buf), TPSRAM_NAME, rev,
+		 TP_VERSION_MAJOR, TP_VERSION_MINOR, TP_VERSION_MICRO);
+
+	ret = request_firmware(&tpsram, buf, dev);
+	if (ret < 0) {
+		dev_err(dev, "could not load TP SRAM: unable to load %s\n",
+			buf);
+		return ret;
+	}
+	
+	ret = t3_check_tpsram(adap, tpsram->data, tpsram->size);
+	if (ret)
+		goto release_tpsram;	
+
+	ret = t3_set_proto_sram(adap, tpsram->data);
+	if (ret)
+		dev_err(dev, "loading protocol SRAM failed\n");
+
+release_tpsram:
+	release_firmware(tpsram);
+	
+	return ret;
+}
+
 /**
  *	cxgb_up - enable the adapter
  *	@adapter: adapter being enabled
@@ -755,6 +811,7 @@ static int upgrade_fw(struct adapter *adap)
 static int cxgb_up(struct adapter *adap)
 {
 	int err = 0;
+	int must_load;
 
 	if (!(adap->flags & FULL_INIT_DONE)) {
 		err = t3_check_fw_version(adap);
@@ -763,6 +820,13 @@ static int cxgb_up(struct adapter *adap)
 		if (err)
 			goto out;
 
+		err = t3_check_tpsram_version(adap, &must_load);
+		if (err == -EINVAL) {
+			err = update_tpsram(adap);
+			if (err && must_load)
+				goto out;
+		}
+
 		err = init_dummy_netdevs(adap);
 		if (err)
 			goto out;
@@ -1097,9 +1161,11 @@ static int get_eeprom_len(struct net_device *dev)
 static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
 {
 	u32 fw_vers = 0;
+	u32 tp_vers = 0;
 	struct adapter *adapter = dev->priv;
 
 	t3_get_fw_version(adapter, &fw_vers);
+	t3_get_tp_version(adapter, &tp_vers);
 
 	strcpy(info->driver, DRV_NAME);
 	strcpy(info->version, DRV_VERSION);
@@ -1108,11 +1174,14 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
 		strcpy(info->fw_version, "N/A");
 	else {
 		snprintf(info->fw_version, sizeof(info->fw_version),
-			 "%s %u.%u.%u",
+			 "%s %u.%u.%u TP %u.%u.%u",
 			 G_FW_VERSION_TYPE(fw_vers) ? "T" : "N",
 			 G_FW_VERSION_MAJOR(fw_vers),
 			 G_FW_VERSION_MINOR(fw_vers),
-			 G_FW_VERSION_MICRO(fw_vers));
+			 G_FW_VERSION_MICRO(fw_vers),
+			 G_TP_VERSION_MAJOR(tp_vers),
+			 G_TP_VERSION_MINOR(tp_vers),
+			 G_TP_VERSION_MICRO(tp_vers));
 	}
 }
 
@@ -2088,42 +2157,6 @@ static void cxgb_netpoll(struct net_device *dev)
 }
 #endif
 
-#define TPSRAM_NAME "t3%c_protocol_sram-%d.%d.%d.bin"
-int update_tpsram(struct adapter *adap)
-{
-	const struct firmware *tpsram;
-	char buf[64];
-	struct device *dev = &adap->pdev->dev;
-	int ret;
-	char rev;
-	
-	rev = adap->params.rev == T3_REV_B2 ? 'b' : 'a';
-
-	snprintf(buf, sizeof(buf), TPSRAM_NAME, rev,
-		 TP_VERSION_MAJOR, TP_VERSION_MINOR, TP_VERSION_MICRO);
-
-	ret = request_firmware(&tpsram, buf, dev);
-	if (ret < 0) {
-		dev_err(dev, "could not load TP SRAM: unable to load %s\n",
-			buf);
-		return ret;
-	}
-	
-	ret = t3_check_tpsram(adap, tpsram->data, tpsram->size);
-	if (ret)
-		goto release_tpsram;	
-
-	ret = t3_set_proto_sram(adap, tpsram->data);
-	if (ret)
-		dev_err(dev, "loading protocol SRAM failed\n");
-
-release_tpsram:
-	release_firmware(tpsram);
-	
-	return ret;
-}
-
-
 /*
  * Periodic accumulation of MAC statistics.
  */
@@ -2478,13 +2511,6 @@ static int __devinit init_one(struct pci_dev *pdev,
 		err = -ENODEV;
 		goto out_free_dev;
 	}
-
-	err = t3_check_tpsram_version(adapter);
-	if (err == -EINVAL)
-		err = update_tpsram(adapter);
-
-	if (err)
-		goto out_free_dev;
 		
 	/*
 	 * The card is now ready to go.  If any errors occur during device
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index 13bfbec..63032e8 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -849,16 +849,15 @@ static int t3_write_flash(struct adapter *adapter, unsigned int addr,
 }
 
 /**
- *	t3_check_tpsram_version - read the tp sram version
+ *	t3_get_tp_version - read the tp sram version
  *	@adapter: the adapter
+ *	@vers: where to place the version
  *
- *	Reads the protocol sram version from serial eeprom.
+ *	Reads the protocol sram version from sram.
  */
-int t3_check_tpsram_version(struct adapter *adapter)
+int t3_get_tp_version(struct adapter *adapter, u32 *vers)
 {
 	int ret;
-	u32 vers;
-	unsigned int major, minor;
 
 	/* Get version loaded in SRAM */
 	t3_write_reg(adapter, A_TP_EMBED_OP_FIELD0, 0);
@@ -867,7 +866,29 @@ int t3_check_tpsram_version(struct adapter *adapter)
 	if (ret)
 		return ret;
 	
-	vers = t3_read_reg(adapter, A_TP_EMBED_OP_FIELD1);
+	*vers = t3_read_reg(adapter, A_TP_EMBED_OP_FIELD1);
+
+	return 0;
+}
+
+/**
+ *	t3_check_tpsram_version - read the tp sram version
+ *	@adapter: the adapter
+ *	@must_load: set to 1 if loading a new microcode image is required
+ *
+ *	Reads the protocol sram version from flash.
+ */
+int t3_check_tpsram_version(struct adapter *adapter, int *must_load)
+{
+	int ret;
+	u32 vers;
+	unsigned int major, minor;
+
+	*must_load = 1;
+
+	ret = t3_get_tp_version(adapter, &vers);
+	if (ret)
+		return ret;
 
 	major = G_TP_VERSION_MAJOR(vers);
 	minor = G_TP_VERSION_MINOR(vers);
@@ -875,6 +896,16 @@ int t3_check_tpsram_version(struct adapter *adapter)
 	if (major == TP_VERSION_MAJOR && minor == TP_VERSION_MINOR) 
 		return 0;
 
+	if (major != TP_VERSION_MAJOR)
+		CH_ERR(adapter, "found wrong TP version (%u.%u), "
+		       "driver needs version %d.%d\n", major, minor,
+		       TP_VERSION_MAJOR, TP_VERSION_MINOR);
+	else {
+		*must_load = 0;
+		CH_ERR(adapter, "found wrong TP version (%u.%u), "
+		       "driver compiled for version %d.%d\n", major, minor,
+		       TP_VERSION_MAJOR, TP_VERSION_MINOR);
+	}
 	return -EINVAL;
 }
 

^ permalink raw reply related

* [PATCH 8/11] cxgb3 - Update internal memory management
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Set PM1 internal memory to round robin mode
It balances access to this internal memory for multiport adapters.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/regs.h  |    2 ++
 drivers/net/cxgb3/t3_hw.c |    2 ++
 2 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/net/cxgb3/regs.h b/drivers/net/cxgb3/regs.h
index 2824278..5e1bc0d 100644
--- a/drivers/net/cxgb3/regs.h
+++ b/drivers/net/cxgb3/regs.h
@@ -1326,6 +1326,7 @@
 #define V_D0_WEIGHT(x) ((x) << S_D0_WEIGHT)
 
 #define A_PM1_RX_CFG 0x5c0
+#define A_PM1_RX_MODE 0x5c4
 
 #define A_PM1_RX_INT_ENABLE 0x5d8
 
@@ -1394,6 +1395,7 @@
 #define A_PM1_RX_INT_CAUSE 0x5dc
 
 #define A_PM1_TX_CFG 0x5e0
+#define A_PM1_TX_MODE 0x5e4
 
 #define A_PM1_TX_INT_ENABLE 0x5f8
 
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index 23b1a16..13bfbec 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -3189,6 +3189,8 @@ int t3_init_hw(struct adapter *adapter, u32 fw_params)
 		t3_set_reg_field(adapter, A_PCIX_CFG, 0, F_CLIDECEN);
 
 	t3_write_reg(adapter, A_PM1_RX_CFG, 0xffffffff);
+	t3_write_reg(adapter, A_PM1_RX_MODE, 0);
+	t3_write_reg(adapter, A_PM1_TX_MODE, 0);
 	init_hw_for_avail_ports(adapter, adapter->params.nports);
 	t3_sge_init(adapter, &adapter->params.sge);
 

^ permalink raw reply related

* [PATCH 7/11 RESEND] cxgb3 - log adapter serial number
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Log HW serial number when cxgb3 module is loaded.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/common.h     |    2 ++
 drivers/net/cxgb3/cxgb3_main.c |    6 ++++--
 drivers/net/cxgb3/t3_hw.c      |    3 ++-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h
index 55922ed..d54446f 100644
--- a/drivers/net/cxgb3/common.h
+++ b/drivers/net/cxgb3/common.h
@@ -97,6 +97,7 @@ enum {
 	MAX_NPORTS = 2,		/* max # of ports */
 	MAX_FRAME_SIZE = 10240,	/* max MAC frame size, including header + FCS */
 	EEPROMSIZE = 8192,	/* Serial EEPROM size */
+	SERNUM_LEN     = 16,    /* Serial # length */
 	RSS_TABLE_SIZE = 64,	/* size of RSS lookup and mapping tables */
 	TCB_SIZE = 128,		/* TCB size */
 	NMTUS = 16,		/* size of MTU table */
@@ -391,6 +392,7 @@ struct vpd_params {
 	unsigned int uclk;
 	unsigned int mdc;
 	unsigned int mem_timing;
+	u8 sn[SERNUM_LEN + 1];
 	u8 eth_base[6];
 	u8 port_type[MAX_NPORTS];
 	unsigned short xauicfg[2];
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index a1f94cf..e5744e7 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -2333,10 +2333,12 @@ static void __devinit print_port_info(struct adapter *adap,
 		       (adap->flags & USING_MSIX) ? " MSI-X" :
 		       (adap->flags & USING_MSI) ? " MSI" : "");
 		if (adap->name == dev->name && adap->params.vpd.mclk)
-			printk(KERN_INFO "%s: %uMB CM, %uMB PMTX, %uMB PMRX\n",
+			printk(KERN_INFO
+			       "%s: %uMB CM, %uMB PMTX, %uMB PMRX, S/N: %s\n",
 			       adap->name, t3_mc7_size(&adap->cm) >> 20,
 			       t3_mc7_size(&adap->pmtx) >> 20,
-			       t3_mc7_size(&adap->pmrx) >> 20);
+			       t3_mc7_size(&adap->pmrx) >> 20,
+			       adap->params.vpd.sn);
 	}
 }
 
diff --git a/drivers/net/cxgb3/t3_hw.c b/drivers/net/cxgb3/t3_hw.c
index dd3149d..23b1a16 100644
--- a/drivers/net/cxgb3/t3_hw.c
+++ b/drivers/net/cxgb3/t3_hw.c
@@ -505,7 +505,7 @@ struct t3_vpd {
 	u8 vpdr_len[2];
 	VPD_ENTRY(pn, 16);	/* part number */
 	VPD_ENTRY(ec, 16);	/* EC level */
-	VPD_ENTRY(sn, 16);	/* serial number */
+	VPD_ENTRY(sn, SERNUM_LEN); /* serial number */
 	VPD_ENTRY(na, 12);	/* MAC address base */
 	VPD_ENTRY(cclk, 6);	/* core clock */
 	VPD_ENTRY(mclk, 6);	/* mem clock */
@@ -648,6 +648,7 @@ static int get_vpd_params(struct adapter *adapter, struct vpd_params *p)
 	p->uclk = simple_strtoul(vpd.uclk_data, NULL, 10);
 	p->mdc = simple_strtoul(vpd.mdc_data, NULL, 10);
 	p->mem_timing = simple_strtoul(vpd.mt_data, NULL, 10);
+	memcpy(p->sn, vpd.sn_data, SERNUM_LEN);
 
 	/* Old eeproms didn't have port information */
 	if (adapter->params.rev == 0 && !vpd.port0_data[0]) {

^ permalink raw reply related

* [PATCH 6/11 RESEND] cxgb3 - Fatal error update
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Stop the MAC when a fatal error is detected.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/cxgb3_main.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index dc5d269..a1f94cf 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -2270,6 +2270,10 @@ void t3_fatal_err(struct adapter *adapter)
 
 	if (adapter->flags & FULL_INIT_DONE) {
 		t3_sge_stop(adapter);
+		t3_write_reg(adapter, A_XGM_TX_CTRL, 0);
+		t3_write_reg(adapter, A_XGM_RX_CTRL, 0);
+		t3_write_reg(adapter, XGM_REG(A_XGM_TX_CTRL, 1), 0);
+		t3_write_reg(adapter, XGM_REG(A_XGM_RX_CTRL, 1), 0);
 		t3_intr_disable(adapter);
 	}
 	CH_ALERT(adapter, "encountered fatal error, operation suspended\n");

^ permalink raw reply related

* [PATCH 5/11 RESEND] cxgb3 - tighten checks on TID values
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Enforce validity checks on connection ids

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/cxgb3_defs.h    |   20 ++++++++++++++++++--
 drivers/net/cxgb3/cxgb3_offload.c |   28 +++++++++++++++++++++++-----
 2 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/drivers/net/cxgb3/cxgb3_defs.h b/drivers/net/cxgb3/cxgb3_defs.h
index 483a594..45e9216 100644
--- a/drivers/net/cxgb3/cxgb3_defs.h
+++ b/drivers/net/cxgb3/cxgb3_defs.h
@@ -79,9 +79,17 @@ static inline struct t3c_tid_entry *lookup_tid(const struct tid_info *t,
 static inline struct t3c_tid_entry *lookup_stid(const struct tid_info *t,
 						unsigned int tid)
 {
+	union listen_entry *e;
+
 	if (tid < t->stid_base || tid >= t->stid_base + t->nstids)
 		return NULL;
-	return &(stid2entry(t, tid)->t3c_tid);
+
+	e = stid2entry(t, tid);
+	if ((void *)e->next >= (void *)t->tid_tab &&
+	    (void *)e->next < (void *)&t->atid_tab[t->natids])
+		return NULL;
+
+	return &e->t3c_tid;
 }
 
 /*
@@ -90,9 +98,17 @@ static inline struct t3c_tid_entry *lookup_stid(const struct tid_info *t,
 static inline struct t3c_tid_entry *lookup_atid(const struct tid_info *t,
 						unsigned int tid)
 {
+	union active_open_entry *e;
+
 	if (tid < t->atid_base || tid >= t->atid_base + t->natids)
 		return NULL;
-	return &(atid2entry(t, tid)->t3c_tid);
+
+	e = atid2entry(t, tid);
+	if ((void *)e->next >= (void *)t->tid_tab &&
+	    (void *)e->next < (void *)&t->atid_tab[t->natids])
+		return NULL;
+
+	return &e->t3c_tid;
 }
 
 int process_rx(struct t3cdev *dev, struct sk_buff **skbs, int n);
diff --git a/drivers/net/cxgb3/cxgb3_offload.c b/drivers/net/cxgb3/cxgb3_offload.c
index 522c1be..7fb526a 100644
--- a/drivers/net/cxgb3/cxgb3_offload.c
+++ b/drivers/net/cxgb3/cxgb3_offload.c
@@ -57,7 +57,7 @@ static DEFINE_RWLOCK(adapter_list_lock);
 static LIST_HEAD(adapter_list);
 
 static const unsigned int MAX_ATIDS = 64 * 1024;
-static const unsigned int ATID_BASE = 0x100000;
+static const unsigned int ATID_BASE = 0x10000;
 
 static inline int offload_activated(struct t3cdev *tdev)
 {
@@ -684,10 +684,19 @@ static int do_cr(struct t3cdev *dev, struct sk_buff *skb)
 {
 	struct cpl_pass_accept_req *req = cplhdr(skb);
 	unsigned int stid = G_PASS_OPEN_TID(ntohl(req->tos_tid));
+	struct tid_info *t = &(T3C_DATA(dev))->tid_maps;
 	struct t3c_tid_entry *t3c_tid;
+	unsigned int tid = GET_TID(req);
 
-	t3c_tid = lookup_stid(&(T3C_DATA(dev))->tid_maps, stid);
-	if (t3c_tid->ctx && t3c_tid->client->handlers &&
+	if (unlikely(tid >= t->ntids)) {
+		printk("%s: passive open TID %u too large\n",
+		       dev->name, tid);
+		t3_fatal_err(tdev2adap(dev));
+		return CPL_RET_BUF_DONE;
+	}
+	
+	t3c_tid = lookup_stid(t, stid);
+	if (t3c_tid && t3c_tid->ctx && t3c_tid->client->handlers &&
 	    t3c_tid->client->handlers[CPL_PASS_ACCEPT_REQ]) {
 		return t3c_tid->client->handlers[CPL_PASS_ACCEPT_REQ]
 		    (dev, skb, t3c_tid->ctx);
@@ -769,16 +778,25 @@ static int do_act_establish(struct t3cdev *dev, struct sk_buff *skb)
 {
 	struct cpl_act_establish *req = cplhdr(skb);
 	unsigned int atid = G_PASS_OPEN_TID(ntohl(req->tos_tid));
+	struct tid_info *t = &(T3C_DATA(dev))->tid_maps;
 	struct t3c_tid_entry *t3c_tid;
+	unsigned int tid = GET_TID(req);
 
-	t3c_tid = lookup_atid(&(T3C_DATA(dev))->tid_maps, atid);
+	if (unlikely(tid >= t->ntids)) {
+		printk("%s: active establish TID %u too large\n",
+		       dev->name, tid);
+		t3_fatal_err(tdev2adap(dev));
+		return CPL_RET_BUF_DONE;
+	}
+
+	t3c_tid = lookup_atid(t, atid);
 	if (t3c_tid && t3c_tid->ctx && t3c_tid->client->handlers &&
 	    t3c_tid->client->handlers[CPL_ACT_ESTABLISH]) {
 		return t3c_tid->client->handlers[CPL_ACT_ESTABLISH]
 		    (dev, skb, t3c_tid->ctx);
 	} else {
 		printk(KERN_ERR "%s: received clientless CPL command 0x%x\n",
-		       dev->name, CPL_PASS_ACCEPT_REQ);
+		       dev->name, CPL_ACT_ESTABLISH);
 		return CPL_RET_BUF_DONE | CPL_RET_BAD_MSG;
 	}
 }

^ permalink raw reply related

* [PATCH 4/11 RESEND] cxgb3 - Expose HW memory page info
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

A HW issue requires limiting the receive window size
to 23 pages of internal memory.
These pages can be configured to different sizes,
thus the RDMA driver needs to know the
page size to enforce the upper limit.

Also assign explicit enum values.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/cxgb3_ctl_defs.h |   52 +++++++++++++++++++++---------------
 drivers/net/cxgb3/cxgb3_offload.c  |    7 +++++
 2 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/net/cxgb3/cxgb3_ctl_defs.h b/drivers/net/cxgb3/cxgb3_ctl_defs.h
index 2095dda..6c4f320 100644
--- a/drivers/net/cxgb3/cxgb3_ctl_defs.h
+++ b/drivers/net/cxgb3/cxgb3_ctl_defs.h
@@ -33,27 +33,29 @@
 #define _CXGB3_OFFLOAD_CTL_DEFS_H
 
 enum {
-	GET_MAX_OUTSTANDING_WR,
-	GET_TX_MAX_CHUNK,
-	GET_TID_RANGE,
-	GET_STID_RANGE,
-	GET_RTBL_RANGE,
-	GET_L2T_CAPACITY,
-	GET_MTUS,
-	GET_WR_LEN,
-	GET_IFF_FROM_MAC,
-	GET_DDP_PARAMS,
-	GET_PORTS,
-
-	ULP_ISCSI_GET_PARAMS,
-	ULP_ISCSI_SET_PARAMS,
-
-	RDMA_GET_PARAMS,
-	RDMA_CQ_OP,
-	RDMA_CQ_SETUP,
-	RDMA_CQ_DISABLE,
-	RDMA_CTRL_QP_SETUP,
-	RDMA_GET_MEM,
+	GET_MAX_OUTSTANDING_WR 	= 0,
+	GET_TX_MAX_CHUNK	= 1,
+	GET_TID_RANGE		= 2,
+	GET_STID_RANGE		= 3,
+	GET_RTBL_RANGE		= 4,
+	GET_L2T_CAPACITY	= 5,
+	GET_MTUS		= 6,
+	GET_WR_LEN		= 7,
+	GET_IFF_FROM_MAC	= 8,
+	GET_DDP_PARAMS		= 9,
+	GET_PORTS		= 10,
+
+	ULP_ISCSI_GET_PARAMS	= 11,
+	ULP_ISCSI_SET_PARAMS	= 12,
+
+	RDMA_GET_PARAMS		= 13,
+	RDMA_CQ_OP		= 14,
+	RDMA_CQ_SETUP		= 15,
+	RDMA_CQ_DISABLE		= 16,
+	RDMA_CTRL_QP_SETUP	= 17,
+	RDMA_GET_MEM		= 18,
+
+	GET_RX_PAGE_INFO	= 50,
 };
 
 /*
@@ -161,4 +163,12 @@ struct rdma_ctrlqp_setup {
 	unsigned long long base_addr;
 	unsigned int size;
 };
+
+/*
+ * Offload TX/RX page information.
+ */
+struct ofld_page_info {
+	unsigned int page_size;  /* Page size, should be a power of 2 */
+	unsigned int num;        /* Number of pages */
+};
 #endif				/* _CXGB3_OFFLOAD_CTL_DEFS_H */
diff --git a/drivers/net/cxgb3/cxgb3_offload.c b/drivers/net/cxgb3/cxgb3_offload.c
index e620ed4..522c1be 100644
--- a/drivers/net/cxgb3/cxgb3_offload.c
+++ b/drivers/net/cxgb3/cxgb3_offload.c
@@ -317,6 +317,8 @@ static int cxgb_offload_ctl(struct t3cdev *tdev, unsigned int req, void *data)
 	struct iff_mac *iffmacp;
 	struct ddp_params *ddpp;
 	struct adap_ports *ports;
+	struct ofld_page_info *rx_page_info;
+	struct tp_params *tp = &adapter->params.tp;
 	int i;
 
 	switch (req) {
@@ -382,6 +384,11 @@ static int cxgb_offload_ctl(struct t3cdev *tdev, unsigned int req, void *data)
 		if (!offload_running(adapter))
 			return -EAGAIN;
 		return cxgb_rdma_ctl(adapter, req, data);
+	case GET_RX_PAGE_INFO:
+		rx_page_info = data;
+		rx_page_info->page_size = tp->rx_pg_size;
+		rx_page_info->num = tp->rx_num_pgs;
+		break;
 	default:
 		return -EOPNOTSUPP;
 	}

^ permalink raw reply related

* [PATCH 3/11 RESEND] cxgb3 - use immediate data for offload Tx
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Send small TX_DATA work requests as immediate data even when
there are fragments. this avoids doing multiple DMAs for 
small fragmented packets. 
The driver already implements this optimization for small
contiguous packets.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/sge.c |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index 9213cda..dca2716 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -1182,8 +1182,8 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev)
  *
  *	Writes a packet as immediate data into a Tx descriptor.  The packet
  *	contains a work request at its beginning.  We must write the packet
- *	carefully so the SGE doesn't read accidentally before it's written in
- *	its entirety.
+ *	carefully so the SGE doesn't read it accidentally before it's written
+ *	in its entirety.
  */
 static inline void write_imm(struct tx_desc *d, struct sk_buff *skb,
 			     unsigned int len, unsigned int gen)
@@ -1191,7 +1191,11 @@ static inline void write_imm(struct tx_desc *d, struct sk_buff *skb,
 	struct work_request_hdr *from = (struct work_request_hdr *)skb->data;
 	struct work_request_hdr *to = (struct work_request_hdr *)d;
 
-	memcpy(&to[1], &from[1], len - sizeof(*from));
+	if (likely(!skb->data_len))
+		memcpy(&to[1], &from[1], len - sizeof(*from));
+	else
+		skb_copy_bits(skb, sizeof(*from), &to[1], len - sizeof(*from));
+
 	to->wr_hi = from->wr_hi | htonl(F_WR_SOP | F_WR_EOP |
 					V_WR_BCNTLFLT(len & 7));
 	wmb();
@@ -1261,7 +1265,7 @@ static inline void reclaim_completed_tx_imm(struct sge_txq *q)
 
 static inline int immediate(const struct sk_buff *skb)
 {
-	return skb->len <= WR_LEN && !skb->data_len;
+	return skb->len <= WR_LEN;
 }
 
 /**
@@ -1467,12 +1471,13 @@ static void write_ofld_wr(struct adapter *adap, struct sk_buff *skb,
  */
 static inline unsigned int calc_tx_descs_ofld(const struct sk_buff *skb)
 {
-	unsigned int flits, cnt = skb_shinfo(skb)->nr_frags;
+	unsigned int flits, cnt;
 
-	if (skb->len <= WR_LEN && cnt == 0)
+	if (skb->len <= WR_LEN)
 		return 1;	/* packet fits as immediate data */
 
 	flits = skb_transport_offset(skb) / 8;	/* headers */
+	cnt = skb_shinfo(skb)->nr_frags;
 	if (skb->tail != skb->transport_header)
 		cnt++;
 	return flits_to_desc(flits + sgl_len(cnt));

^ permalink raw reply related

* [PATCH 2/11 RESEND] cxgb3 - SGE doorbell overflow warning
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Log doorbell Fifo overflow

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/regs.h |    8 ++++++++
 drivers/net/cxgb3/sge.c  |    4 ++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/net/cxgb3/regs.h b/drivers/net/cxgb3/regs.h
index aa80313..2824278 100644
--- a/drivers/net/cxgb3/regs.h
+++ b/drivers/net/cxgb3/regs.h
@@ -172,6 +172,14 @@
 
 #define A_SG_INT_CAUSE 0x5c
 
+#define S_HIPIODRBDROPERR    11
+#define V_HIPIODRBDROPERR(x) ((x) << S_HIPIODRBDROPERR)
+#define F_HIPIODRBDROPERR    V_HIPIODRBDROPERR(1U)
+
+#define S_LOPIODRBDROPERR    10
+#define V_LOPIODRBDROPERR(x) ((x) << S_LOPIODRBDROPERR)
+#define F_LOPIODRBDROPERR    V_LOPIODRBDROPERR(1U)
+
 #define S_RSPQDISABLED    3
 #define V_RSPQDISABLED(x) ((x) << S_RSPQDISABLED)
 #define F_RSPQDISABLED    V_RSPQDISABLED(1U)
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index a2cfd68..9213cda 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -2476,6 +2476,10 @@ void t3_sge_err_intr_handler(struct adapter *adapter)
 			 "(0x%x)\n", (v >> S_RSPQ0DISABLED) & 0xff);
 	}
 
+	if (status & (F_HIPIODRBDROPERR | F_LOPIODRBDROPERR))
+		CH_ALERT(adapter, "SGE dropped %s priority doorbell\n",
+			 status & F_HIPIODRBDROPERR ? "high" : "lo");
+
 	t3_write_reg(adapter, A_SG_INT_CAUSE, status);
 	if (status & (F_RSPQCREDITOVERFOW | F_RSPQDISABLED))
 		t3_fatal_err(adapter);

^ permalink raw reply related

* [PATCH 1/11 RESEND] cxgb3 - Update rx coalescing length
From: Divy Le Ray @ 2007-08-22  3:49 UTC (permalink / raw)
  To: jeff; +Cc: netdev, linux-kernel, swise

From: Divy Le Ray <divy@chelsio.com>

Reduce Rx coalescing length to 12288
Large bursts from the adapter to the host create back pressure
on the chip. Reducing the burst size avoids the issue.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
---

 drivers/net/cxgb3/common.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h
index c46c249..55922ed 100644
--- a/drivers/net/cxgb3/common.h
+++ b/drivers/net/cxgb3/common.h
@@ -104,7 +104,7 @@ enum {
 	PROTO_SRAM_LINES = 128, /* size of TP sram */
 };
 
-#define MAX_RX_COALESCING_LEN 16224U
+#define MAX_RX_COALESCING_LEN 12288U
 
 enum {
 	PAUSE_RX = 1 << 0,

^ permalink raw reply related

* [PATCH 0/11] cxgb3 - driver updates
From: Divy Le Ray @ 2007-08-22  3:45 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev, linux-kernel, Steve Wise

Jeff,

I'm resubmitting the last cxgb3 patch series against netdev-2.6#upstream,
minus the first patch that you already applied and the last patch.

Here is a brief description:
-       Modify max HW Rx coalescing size
-       Log SGE doorbell Fifo overflow
-       Use Tx immediate data for offload packets whenever possible
-       RDMA can get internal mem info to workaround HW issues
-       More validity checks on connection ids
-       Stop MAC when a fatal error is detected
-       Log HW serial number
-       Update internal mem operating mode
-       Update engine microcode management, version is now 1.1.0
-       Update FW management, version is now 4.6.0
-       Ignore some HW errors until the HW is initialized

Cheers,
Divy




^ permalink raw reply

* Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Paul E. McKenney @ 2007-08-22  0:50 UTC (permalink / raw)
  To: Valdis.Kletnieks
  Cc: Segher Boessenkool, Paul Mackerras, Russell King,
	Christoph Lameter, heiko.carstens, horms, linux-kernel, ak,
	netdev, cfriesen, akpm, rpjday, Nick Piggin, linux-arch,
	jesper.juhl, satyam, zlynx, schwidefsky, Chris Snook, Herbert Xu,
	davem, Linus Torvalds, wensong, wjiang
In-Reply-To: <28709.1187736676@turing-police.cc.vt.edu>

On Tue, Aug 21, 2007 at 06:51:16PM -0400, Valdis.Kletnieks@vt.edu wrote:
> On Tue, 21 Aug 2007 09:16:43 PDT, "Paul E. McKenney" said:
> 
> > I agree that instant gratification is hard to come by when synching
> > up compiler and kernel versions.  Nonetheless, it should be possible
> > to create APIs that are are conditioned on the compiler version.
> 
> We've tried that, sort of.  See the mess surrounding the whole
> extern/static/inline/__whatever boondogle, which seems to have
> changed semantics in every single gcc release since 2.95 or so.
> 
> And recently mention was made that gcc4.4 will have *new* semantics
> in this area. Yee. Hah.

;-)

						Thanx, Paul

^ permalink raw reply

* [PATCH] spidernet: enable poll() before registering interrupts
From: Ishizaki Kou @ 2007-08-22  0:27 UTC (permalink / raw)
  To: Linas Vepstas; +Cc: netdev, cbe-oss-dev, arnd

We must not call netif_poll_enable after enabling interrupts,
because an interrupt might come in and set the __LINK_STATE_RX_SCHED
bit before we get to clear that bit again. If that happens,
the next call to the ->poll() function will oops.

Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
---

I refreshed Arnd-san's patch.


Index: linux-powerpc-git/drivers/net/spider_net.c
===================================================================
--- linux-powerpc-git.orig/drivers/net/spider_net.c	2007-08-21 16:58:44.000000000 +0900
+++ linux-powerpc-git/drivers/net/spider_net.c	2007-08-21 17:11:07.000000000 +0900
@@ -2030,6 +2030,7 @@ spider_net_open(struct net_device *netde
 	/* further enhancement: setup hw vlan, if needed */
 
 	result = -EBUSY;
+	netif_poll_enable(netdev);
 	if (request_irq(netdev->irq, spider_net_interrupt,
 			     IRQF_SHARED, netdev->name, netdev))
 		goto register_int_failed;
@@ -2038,13 +2039,13 @@ spider_net_open(struct net_device *netde
 
 	netif_start_queue(netdev);
 	netif_carrier_on(netdev);
-	netif_poll_enable(netdev);
 
 	spider_net_enable_interrupts(card);
 
 	return 0;
 
 register_int_failed:
+	netif_poll_disable(netdev);
 	spider_net_free_rx_chain_contents(card);
 alloc_skbs_failed:
 	spider_net_free_chain(card, &card->rx_chain);

^ permalink raw reply

* Re: [Cbe-oss-dev] [PATCH] spidernet: fix interrupt reason recognition
From: Ishizaki Kou @ 2007-08-22  0:26 UTC (permalink / raw)
  To: linas; +Cc: netdev, cbe-oss-dev, arnd
In-Reply-To: <20070820223819.GK4261@austin.ibm.com>

Linas Vepstas wrote:
> On Mon, Aug 20, 2007 at 10:13:27PM +0900, Ishizaki Kou wrote:
> > Please apply this to 2.6.23.
> 
> I'll review and forward shortly.  Kick me if you don't see a formal
> reply in a few days.
> 
> > And also, please apply the following Arnd-san's patch to fix a problem
> > that spidernet driver sometimes causes a BUG_ON at open.
> > 
> >  http://patchwork.ozlabs.org/cbe-oss-dev/patch?id=12211
> 
> Are you sure? This patch no longer applies cleanly, in part because

I see. I'll send another applicable patch.

> your patch "[PATCH] spidernet: improve interrupt handling" 
> from Mon, 09 Jul 2007 added a spider_net_enable_interrupts(card); 
> at the end of spider_net_open().  Because of this, it seems like 
> Arnd's patch is no longer needed, right?

As you pointed out, we intended that "[PATCH] spidernet: improve
interrupt handling" solves the same problem which Arnd's patch solves.

When spider_net_open() is called, interrupt reasons sometimes remain
on interrupt status register, even though they are masked by mask
register.  With this patch, spider_net_interrupt() compares the value
of interrupt status register with SPIDER_NET_INTX_MASK_VALUE, not with
interrupt mask register value.  As a result, spider_net_interrupt()
(which is called from request_irq() in spider_net_open()) starts
polling and causes BUG_ON().

So, netif_poll_enable() must be called before request_irq() is
called. This is the reason that we also need Arnd's patch.

Best regards,
Kou Ishizaki

^ permalink raw reply

* Re: [NET]: Don't do netpoll on per cpu backlog napi struct
From: David Miller @ 2007-08-21 23:19 UTC (permalink / raw)
  To: tgraf; +Cc: netdev
In-Reply-To: <20070821230851.GP32236@postel.suug.ch>

From: Thomas Graf <tgraf@suug.ch>
Date: Wed, 22 Aug 2007 01:08:51 +0200

> The per cpu backlog napi struct can't do netpoll and has the
> dev member set to NULL. Fixes an oops on boot when netpoll is
> enabled.
> 
> Signed-off-by: Thomas Graf <tgraf@suug.ch>

Applied, thanks a lot Thomas.

^ permalink raw reply

* [NET]: Don't do netpoll on per cpu backlog napi struct
From: Thomas Graf @ 2007-08-21 23:08 UTC (permalink / raw)
  To: davem; +Cc: netdev

The per cpu backlog napi struct can't do netpoll and has the
dev member set to NULL. Fixes an oops on boot when netpoll is
enabled.

Signed-off-by: Thomas Graf <tgraf@suug.ch>

Index: net-2.6.24/include/linux/netpoll.h
===================================================================
--- net-2.6.24.orig/include/linux/netpoll.h	2007-08-22 01:02:14.000000000 +0200
+++ net-2.6.24/include/linux/netpoll.h	2007-08-22 01:02:30.000000000 +0200
@@ -75,7 +75,7 @@ static inline void *netpoll_poll_lock(st
 	struct net_device *dev = napi->dev;
 
 	rcu_read_lock(); /* deal with race on ->npinfo */
-	if (dev->npinfo) {
+	if (dev && dev->npinfo) {
 		spin_lock(&napi->poll_lock);
 		napi->poll_owner = smp_processor_id();
 		return napi;

^ permalink raw reply

* Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Valdis.Kletnieks @ 2007-08-21 22:51 UTC (permalink / raw)
  To: paulmck
  Cc: Segher Boessenkool, Paul Mackerras, Russell King,
	Christoph Lameter, heiko.carstens, horms, linux-kernel, ak,
	netdev, cfriesen, akpm, rpjday, Nick Piggin, linux-arch,
	jesper.juhl, satyam, zlynx, schwidefsky, Chris Snook, Herbert Xu,
	davem, Linus Torvalds, wensong, wjiang
In-Reply-To: <20070821161643.GA7574@linux.vnet.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 557 bytes --]

On Tue, 21 Aug 2007 09:16:43 PDT, "Paul E. McKenney" said:

> I agree that instant gratification is hard to come by when synching
> up compiler and kernel versions.  Nonetheless, it should be possible
> to create APIs that are are conditioned on the compiler version.

We've tried that, sort of.  See the mess surrounding the whole
extern/static/inline/__whatever boondogle, which seems to have
changed semantics in every single gcc release since 2.95 or so.

And recently mention was made that gcc4.4 will have *new* semantics
in this area. Yee. Hah.






[-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --]

^ permalink raw reply

* Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB
From: David Miller @ 2007-08-21 22:50 UTC (permalink / raw)
  To: hadi
  Cc: krkumar2, gaagaan, general, herbert, jagana, jeff, johnpol, kaber,
	kumarkr, mcarlson, mchan, netdev, peter.p.waskiewicz.jr, rdreier,
	rick.jones2, Robert.Olsson, shemminger, sri, tgraf, xma
In-Reply-To: <1187730552.5324.76.camel@localhost>

From: jamal <hadi@cyberus.ca>
Date: Tue, 21 Aug 2007 17:09:12 -0400

> Examples, a busy ssh or irc server and you could go as far as
> looking at the most pre-dominant app on the wild west, http (average
> page size from a few years back was in the range of 10-20K and can
> be simulated with good ole netperf/iperf).

Pages have chunked up considerably in recent years.

Just bringing up a myspace page can give you megabytes of video,
images, flash, and other stuff.

^ permalink raw reply

* [PATCH 2/3] sky2: only bring up watchdog if link is active
From: Stephen Hemminger @ 2007-08-21 21:34 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev
In-Reply-To: <20070821213401.543412708@linux-foundation.org>

[-- Attachment #1: sky2-timer-power.patch --]
[-- Type: text/plain, Size: 4909 bytes --]

This fixes the extra timer overhead that people were whining about
as a 2.6.23 regression.

Running the watchdog timer all the time is unneeded. Change it
to run only if link is up, and reduce frequency to save power.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>


--- a/drivers/net/sky2.c	2007-08-21 09:53:50.000000000 -0700
+++ b/drivers/net/sky2.c	2007-08-21 09:54:15.000000000 -0700
@@ -99,10 +99,6 @@ static int disable_msi = 0;
 module_param(disable_msi, int, 0);
 MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
 
-static int idle_timeout = 100;
-module_param(idle_timeout, int, 0);
-MODULE_PARM_DESC(idle_timeout, "Watchdog timer for lost interrupts (ms)");
-
 static const struct pci_device_id sky2_id_table[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, /* SK-9Sxx */
 	{ PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */
@@ -1624,6 +1620,9 @@ static int sky2_down(struct net_device *
 	if (netif_msg_ifdown(sky2))
 		printk(KERN_INFO PFX "%s: disabling interface\n", dev->name);
 
+	if (netif_carrier_ok(dev) && --hw->active == 0)
+		del_timer(&hw->watchdog_timer);
+
 	/* Stop more packets from being queued */
 	netif_stop_queue(dev);
 
@@ -1744,6 +1743,10 @@ static void sky2_link_up(struct sky2_por
 
 	netif_carrier_on(sky2->netdev);
 
+	if (hw->active++ == 0)
+		mod_timer(&hw->watchdog_timer, jiffies + 1);
+
+
 	/* Turn on link LED */
 	sky2_write8(hw, SK_REG(port, LNK_LED_REG),
 		    LINKLED_ON | LINKLED_BLINK_OFF | LINKLED_LINKSYNC_OFF);
@@ -1795,6 +1798,11 @@ static void sky2_link_down(struct sky2_p
 
 	netif_carrier_off(sky2->netdev);
 
+	/* Stop watchdog if both ports are not active */
+	if (--hw->active == 0)
+		del_timer(&hw->watchdog_timer);
+
+
 	/* Turn on link LED */
 	sky2_write8(hw, SK_REG(port, LNK_LED_REG), LINKLED_OFF);
 
@@ -2426,25 +2434,20 @@ static void sky2_le_error(struct sky2_hw
 	sky2_write32(hw, Q_ADDR(q, Q_CSR), BMU_CLR_IRQ_CHK);
 }
 
-/* If idle then force a fake soft NAPI poll once a second
- * to work around cases where sharing an edge triggered interrupt.
- */
-static inline void sky2_idle_start(struct sky2_hw *hw)
-{
-	if (idle_timeout > 0)
-		mod_timer(&hw->idle_timer,
-			  jiffies + msecs_to_jiffies(idle_timeout));
-}
-
-static void sky2_idle(unsigned long arg)
+/* Check for lost IRQ once a second */
+static void sky2_watchdog(unsigned long arg)
 {
 	struct sky2_hw *hw = (struct sky2_hw *) arg;
-	struct net_device *dev = hw->dev[0];
 
-	if (__netif_rx_schedule_prep(dev))
-		__netif_rx_schedule(dev);
+	if (sky2_read32(hw, B0_ISRC)) {
+		struct net_device *dev = hw->dev[0];
+
+		if (__netif_rx_schedule_prep(dev))
+			__netif_rx_schedule(dev);
+	}
 
-	mod_timer(&hw->idle_timer, jiffies + msecs_to_jiffies(idle_timeout));
+	if (hw->active > 0)
+		mod_timer(&hw->watchdog_timer, round_jiffies(jiffies + HZ));
 }
 
 /* Hardware/software error handling */
@@ -2732,8 +2735,6 @@ static void sky2_restart(struct work_str
 	struct net_device *dev;
 	int i, err;
 
-	del_timer_sync(&hw->idle_timer);
-
 	rtnl_lock();
 	sky2_write32(hw, B0_IMSK, 0);
 	sky2_read32(hw, B0_IMSK);
@@ -2762,8 +2763,6 @@ static void sky2_restart(struct work_str
 		}
 	}
 
-	sky2_idle_start(hw);
-
 	rtnl_unlock();
 }
 
@@ -4030,11 +4029,9 @@ static int __devinit sky2_probe(struct p
 			sky2_show_addr(dev1);
 	}
 
-	setup_timer(&hw->idle_timer, sky2_idle, (unsigned long) hw);
+	setup_timer(&hw->watchdog_timer, sky2_watchdog, (unsigned long) hw);
 	INIT_WORK(&hw->restart_work, sky2_restart);
 
-	sky2_idle_start(hw);
-
 	pci_set_drvdata(pdev, hw);
 
 	return 0;
@@ -4069,7 +4066,7 @@ static void __devexit sky2_remove(struct
 	if (!hw)
 		return;
 
-	del_timer_sync(&hw->idle_timer);
+	del_timer_sync(&hw->watchdog_timer);
 
 	flush_scheduled_work();
 
@@ -4113,7 +4110,6 @@ static int sky2_suspend(struct pci_dev *
 	if (!hw)
 		return 0;
 
-	del_timer_sync(&hw->idle_timer);
 	netif_poll_disable(hw->dev[0]);
 
 	for (i = 0; i < hw->ports; i++) {
@@ -4179,7 +4175,7 @@ static int sky2_resume(struct pci_dev *p
 	}
 
 	netif_poll_enable(hw->dev[0]);
-	sky2_idle_start(hw);
+
 	return 0;
 out:
 	dev_err(&pdev->dev, "resume failed (%d)\n", err);
@@ -4196,7 +4192,6 @@ static void sky2_shutdown(struct pci_dev
 	if (!hw)
 		return;
 
-	del_timer_sync(&hw->idle_timer);
 	netif_poll_disable(hw->dev[0]);
 
 	for (i = 0; i < hw->ports; i++) {
--- a/drivers/net/sky2.h	2007-08-20 16:32:28.000000000 -0700
+++ b/drivers/net/sky2.h	2007-08-21 09:53:53.000000000 -0700
@@ -2045,12 +2045,13 @@ struct sky2_hw {
 	u8		     chip_rev;
 	u8		     pmd_type;
 	u8		     ports;
+	u8		     active;
 
 	struct sky2_status_le *st_le;
 	u32		     st_idx;
 	dma_addr_t   	     st_dma;
 
-	struct timer_list    idle_timer;
+	struct timer_list    watchdog_timer;
 	struct work_struct   restart_work;
 	int		     msi;
 	wait_queue_head_t    msi_wait;

-- 
Stephen Hemminger <shemminger@linux-foundation.org>


^ permalink raw reply

* [PATCH 0/3] sky2 update for 2.6.23
From: Stephen Hemminger @ 2007-08-21 21:34 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev

These patches address some issues that got listed as regressions
in 2.6.23.

-- 
Stephen Hemminger <shemminger@linux-foundation.org>


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox