* 2.6.33-rc8: Reported regressions from 2.6.32
From: Rafael J. Wysocki @ 2010-02-14 23:31 UTC (permalink / raw)
To: Linux Kernel Mailing List
Cc: Maciej Rutecki, Andrew Morton, Linus Torvalds,
Kernel Testers List, Network Development, Linux ACPI,
Linux PM List, Linux SCSI List, Linux Wireless List, DRI
This message contains a list of some regressions from 2.6.32,
for which there are no fixes in the mainline known to the tracking team.
If any of them have been fixed already, please let us know.
If you know of any other unresolved regressions from 2.6.32, please let us
know either and we'll add them to the list. Also, please let us know
if any of the entries below are invalid.
Each entry from the list will be sent additionally in an automatic reply
to this message with CCs to the people involved in reporting and handling
the issue.
Listed regressions statistics:
Date Total Pending Unresolved
----------------------------------------
2010-02-15 112 34 31
2010-02-07 97 27 20
2010-02-01 85 26 21
2010-01-24 75 29 23
2010-01-10 55 33 21
2009-12-29 36 34 27
Unresolved regressions
----------------------
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15308
Subject : 2.6.33-rc8 breaks UML with Restrict initial stack space expansion to rlimit
Submitter : Jouni Malinen <j@w1.fi>
Date : 2010-02-14 16:40 (1 days old)
First-Bad-Commit: http://git.kernel.org/git/linus/803bf5ec259941936262d10ecc84511b76a20921
Message-ID : <20100214164023.GA2726@jm.kir.nu>
References : http://marc.info/?l=linux-kernel&m=126616751807902&w=4
Handled-By : Michael Neuling <mikey@neuling.org>
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15307
Subject : irq11: nobody cared, during yenta registration
Submitter : Meelis Roos <mroos@ut.ee>
Date : 2010-02-14 15:32 (1 days old)
Message-ID : <alpine.SOC.1.00.1002141720120.679@math.ut.ee>
References : http://marc.info/?l=linux-kernel&m=126616327302771&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15306
Subject : Filesystem I/O is CPU-bound
Submitter : James Cloos <cloos@jhcloos.com>
Date : 2010-02-14 3:11 (1 days old)
Message-ID : <m3pr48bjfg.fsf@lugabout.jhcloos.org>
References : http://marc.info/?l=linux-kernel&m=126611738629349&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15305
Subject : Dell video dies when booting
Submitter : David Ronis <ronis@ronispc.chem.mcgill.ca>
Date : 2010-02-14 1:07 (1 days old)
Message-ID : <1266109622.11290.10.camel@montroll.chem.mcgill.ca>
References : http://marc.info/?l=linux-kernel&m=126611098225127&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15292
Subject : Laptop reboots instead of resume from suspend with any kernel after 2.6.31
Submitter : Dave Morgan <davemorgan353@btinternet.com>
Date : 2010-02-13 13:11 (2 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15289
Subject : Regression 2.6.32 -> 2.6.33, Kernel needs a helping key to boot :)
Submitter : Asbjørn Sannes <kernelbugzilla@sannes.org>
Date : 2010-02-12 19:47 (3 days old)
First-Bad-Commit: http://git.kernel.org/git/linus/73472a46b5b28116b145fb5fc05242c1aa8e1461
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15287
Subject : RadeonKMS segfaults kdm on mobility radeon x700 pcie
Submitter : Jan Kreuzer <kontrollator@gmx.de>
Date : 2010-02-12 17:58 (3 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15278
Subject : lockdep warning for iscsi in 2.6.33-rc6
Submitter : Tao Ma <tao.ma@oracle.com>
Date : 2010-02-09 6:59 (6 days old)
Message-ID : <4B7107CF.3060703@oracle.com>
References : http://marc.info/?l=linux-kernel&m=126569884330200&w=2
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15277
Subject : 2.6.33-rc6 crashes on resume
Submitter : Bill Davidsen <davidsen@roadwarrior3.tmr.com>
Date : 2010-02-08 23:03 (7 days old)
Message-ID : <4B70982F.8090208@roadwarrior3.tmr.com>
References : http://marc.info/?l=linux-kernel&m=126567021801935&w=2
Handled-By : Rafael J. Wysocki <rjw@sisk.pl>
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15276
Subject : latest git kernel: general protection fault: 0000 [#1]
Submitter : Markus Trippelsdorf <markus@trippelsdorf.de>
Date : 2010-02-09 8:36 (6 days old)
Message-ID : <20100209083605.GA1766@arch.tripp.de>
References : http://marc.info/?l=linux-kernel&m=126570498804223&w=2
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15273
Subject : Regression in ptrace (Wine) starting with 2.6.33-rc1
Submitter : Michael Stefaniuc <mstefani@redhat.com>
Date : 2010-02-11 16:21 (4 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15259
Subject : Corruption with OpenGL since Intel's big DRM push on i945
Submitter : Alexandre <papouta@hotmail.com>
Date : 2010-02-08 13:19 (7 days old)
First-Bad-Commit: http://git.kernel.org/git/linus/76446cac68568fc7f5168a27deaf803ed22a4360
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15246
Subject : BUG: Bad page state in process portageq
Submitter : Johannes Hirte <johannes.hirte@fem.tu-ilmenau.de>
Date : 2010-02-07 0:45 (8 days old)
References : http://marc.info/?l=linux-kernel&m=126550356515887&w=2
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15245
Subject : [2.6.33-rc6 Weird JCPU times?
Submitter : Shawn Starr <shawn.starr@rogers.com>
Date : 2010-02-06 7:24 (9 days old)
References : http://marc.info/?l=linux-kernel&m=126544107816889&w=2
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15244
Subject : PROBLEM: hda-intel divide by zero kernel crash in azx_position_ok()
Submitter : Jody Bruchon <jody@nctritech.com>
Date : 2010-02-06 0:32 (9 days old)
References : http://marc.info/?l=linux-kernel&m=126541276028173&w=2
Handled-By : Takashi Iwai <tiwai@suse.de>
Jody Bruchon <jody@nctritech.com>
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15207
Subject : Pineview - only cursor on black screen visible, "GPU hung" in dmesg
Submitter : Christian Friedemann <dawn2k@gmail.com>
Date : 2010-02-01 20:15 (14 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15202
Subject : lockdep warning during elevator_switch
Submitter : Hugh Dickins <hugh.dickins@tiscali.co.uk>
Date : 2010-01-31 23:55 (15 days old)
References : http://marc.info/?l=linux-kernel&m=126498212613051&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15200
Subject : NFS problems in 2.6.33-rc6: Unknown error 526
Submitter : J.A. Magallón <jamagallon@ono.com>
Date : 2010-01-31 22:46 (15 days old)
References : http://marc.info/?l=linux-kernel&m=126497800408928&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15192
Subject : netperf ~50% regression with 2.6.33-rc1, bisect to 1b9508f
Submitter : Lin Ming <ming.m.lin@intel.com>
Date : 2010-01-25 10:03 (21 days old)
First-Bad-Commit: http://git.kernel.org/git/linus/1b9508f6831e10d53256825de8904caa22d1ca2c
References : http://marc.info/?l=linux-kernel&m=126441481427331&w=4
Handled-By : Mike Galbraith <efault@gmx.de>
Peter Zijlstra <peterz@infradead.org>
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15177
Subject : Asynchronous writes up to 30% slower than in previous kernel versions
Submitter : Bart Van Assche <bart.vanassche@gmail.com>
Date : 2010-01-30 16:38 (16 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15142
Subject : sysfs-related lockdep warning in __blkdev_get
Submitter : Matti Aarnio <matti.aarnio--kernel-bugzilla@zmailer.org>
Date : 2010-01-25 13:38 (21 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15139
Subject : e1000: transmit queue 0 timed out
Submitter : Alexander Beregalov <a.beregalov@gmail.com>
Date : 2010-01-23 15:37 (23 days old)
References : http://marc.info/?l=linux-netdev&m=126426149306083&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15114
Subject : X.org hang with [drm:i915_gem_do_execbuffer] *ERROR* in dmesg
Submitter : Matej Laitl <strohel@gmail.com>
Date : 2010-01-23 19:54 (23 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15076
Subject : System panic under load with clockevents_program_event
Submitter : okias <d.okias@gmail.com>
Date : 2010-01-17 13:03 (29 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15044
Subject : Much higher wakeups for "<kernel IPI> : Rescheduling interrupts" since 2.6.32.2
Submitter : Roman Mamedov <roman@rm.pp.ru>
Date : 2010-01-11 02:58 (35 days old)
First-Bad-Commit: http://git.kernel.org/git/linus/a1f84a3ab8e002159498814eaa7e48c33752b04b
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15036
Subject : soft lockup in dmesg after suspend/resume
Submitter : ykzhao <yakui.zhao@intel.com>
Date : 2010-01-04 5:36 (42 days old)
References : http://marc.info/?l=linux-kernel&m=126258356202722&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15025
Subject : Oops in ext4 driver
Submitter : Steinar H. Gunderson <sgunderson@bigfoot.com>
Date : 2010-01-10 13:09 (36 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=14999
Subject : possible circular locking dependency detected in rfkill at suspend
Submitter : Christian Casteyde <casteyde.christian@free.fr>
Date : 2010-01-06 21:52 (40 days old)
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=14950
Subject : tbench regression with 2.6.33-rc1
Submitter : Lin Ming <ming.m.lin@intel.com>
Date : 2009-12-25 11:11 (52 days old)
References : http://marc.info/?l=linux-kernel&m=126174044213172&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=14937
Subject : WARNING: at kernel/lockdep.c:2830
Submitter : Grant Wilson <grant.wilson@zen.co.uk>
Date : 2009-12-27 13:35 (50 days old)
References : http://marc.info/?l=linux-kernel&m=126192220404829&w=4
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=14792
Subject : Misdetection of the TV output
Submitter : Santi <santi@agolina.net>
Date : 2009-12-12 13:28 (65 days old)
First-Bad-Commit: http://git.kernel.org/git/linus/27dfaf4f5825a119305db1bc63bef30ed400e376
Handled-By : Zhao Yakui <yakui.zhao@intel.com>
Regressions with patches
------------------------
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15248
Subject : KMS broken on Intel 855GM broken with 2.6.32/33
Submitter : Michal Nowak <mnowak@redhat.com>
Date : 2010-02-07 09:59 (8 days old)
Handled-By : Jesse Barnes <jbarnes@virtuousgeek.org>
Patch : http://patchwork.kernel.org/patch/78947/
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15039
Subject : leds_alix2: can't allocate I/O for GPIO
Submitter : Arnd Hannemann <hannemann@nets.rwth-aachen.de>
Date : 2010-01-07 10:26 (39 days old)
References : http://marc.info/?l=linux-kernel&m=126286001106257&w=4
Handled-By : Daniel Mack <daniel@caiaq.de>
Patch : http://patchwork.kernel.org/patch/72006/
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=14949
Subject : drm_vm.c:drm_mmap: possible circular locking dependency detected
Submitter : Borislav Petkov <petkovbb@googlemail.com>
Date : 2009-12-26 9:45 (51 days old)
References : http://marc.info/?l=linux-kernel&m=126182073616279&w=4
Handled-By : Eric W. Biederman <ebiederm@aristanetworks.com>
Patch : http://patchwork.kernel.org/patch/70461/
For details, please visit the bug entries and follow the links given in
references.
As you can see, there is a Bugzilla entry for each of the listed regressions.
There also is a Bugzilla entry used for tracking the regressions from 2.6.32,
unresolved as well as resolved, at:
http://bugzilla.kernel.org/show_bug.cgi?id=14885
Please let the tracking team know if there are any Bugzilla entries that
should be added to the list in there.
Thanks!
^ permalink raw reply
* [PATCH 2/2] drivers/net/usb: Use netif_<level> logging facilities
From: Joe Perches @ 2010-02-14 23:01 UTC (permalink / raw)
To: David Miller
Cc: David Brownell, Greg Kroah-Hartman, netdev, linux-usb,
linux-kernel
In-Reply-To: <cover.1266187669.git.joe@perches.com>
Convert from:
if (netif_msg_<foo>(priv))
dev_<level>(dev...
to
netif_<level>(priv, foo, dev...
Also convert a few:
if (i < REG_TIMEOUT) {
etc...
return ret;
}
to
if (i >= REG_TIMEOUT)
goto fail;
etc...
return ret;
Signed-off-by: Joe Perches <joe@perches.com>
---
drivers/net/usb/cdc_ether.c | 18 ++--
drivers/net/usb/net1080.c | 96 +++++++++----------
drivers/net/usb/pegasus.c | 170 +++++++++++++++-------------------
drivers/net/usb/rndis_host.c | 14 +--
drivers/net/usb/smsc95xx.c | 99 ++++++++------------
drivers/net/usb/usbnet.c | 208 ++++++++++++++++++-----------------------
6 files changed, 264 insertions(+), 341 deletions(-)
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 7e5a752..3486e8c 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -339,10 +339,10 @@ EXPORT_SYMBOL_GPL(usbnet_cdc_unbind);
static void dumpspeed(struct usbnet *dev, __le32 *speeds)
{
- if (netif_msg_timer(dev))
- netdev_info(dev->net, "link speeds: %u kbps up, %u kbps down\n",
- __le32_to_cpu(speeds[0]) / 1000,
- __le32_to_cpu(speeds[1]) / 1000);
+ netif_info(dev, timer, dev->net,
+ "link speeds: %u kbps up, %u kbps down\n",
+ __le32_to_cpu(speeds[0]) / 1000,
+ __le32_to_cpu(speeds[1]) / 1000);
}
static void cdc_status(struct usbnet *dev, struct urb *urb)
@@ -361,18 +361,16 @@ static void cdc_status(struct usbnet *dev, struct urb *urb)
event = urb->transfer_buffer;
switch (event->bNotificationType) {
case USB_CDC_NOTIFY_NETWORK_CONNECTION:
- if (netif_msg_timer(dev))
- netdev_dbg(dev->net, "CDC: carrier %s\n",
- event->wValue ? "on" : "off");
+ netif_dbg(dev, timer, dev->net, "CDC: carrier %s\n",
+ event->wValue ? "on" : "off");
if (event->wValue)
netif_carrier_on(dev->net);
else
netif_carrier_off(dev->net);
break;
case USB_CDC_NOTIFY_SPEED_CHANGE: /* tx/rx rates */
- if (netif_msg_timer(dev))
- netdev_dbg(dev->net, "CDC: speed change (len %d)\n",
- urb->actual_length);
+ netif_dbg(dev, timer, dev->net, "CDC: speed change (len %d)\n",
+ urb->actual_length);
if (urb->actual_length != (sizeof *event + 8))
set_bit(EVENT_STS_SPLIT, &dev->flags);
else
diff --git a/drivers/net/usb/net1080.c b/drivers/net/usb/net1080.c
index aa078f3..9cd99a2 100644
--- a/drivers/net/usb/net1080.c
+++ b/drivers/net/usb/net1080.c
@@ -203,26 +203,23 @@ static void nc_dump_registers(struct usbnet *dev)
static inline void nc_dump_usbctl(struct usbnet *dev, u16 usbctl)
{
- if (!netif_msg_link(dev))
- return;
- netdev_dbg(dev->net, "net1080 %s-%s usbctl 0x%x:%s;"
- " this%s;"
- " other%s; r/o 0x%x\n",
- dev->udev->bus->bus_name, dev->udev->devpath,
- usbctl,
- (usbctl & USBCTL_ENABLE_LANG) ? " lang" :
- (usbctl & USBCTL_ENABLE_MFGR) ? " mfgr" :
- (usbctl & USBCTL_ENABLE_PROD) ? " prod" :
- (usbctl & USBCTL_ENABLE_SERIAL) ? " serial" :
- (usbctl & USBCTL_ENABLE_DEFAULTS) ? " defaults" : "",
-
- (usbctl & USBCTL_FLUSH_OTHER) ? " FLUSH" :
- (usbctl & USBCTL_DISCONN_OTHER) ? " DIS" : "",
-
- (usbctl & USBCTL_FLUSH_THIS) ? " FLUSH" :
- (usbctl & USBCTL_DISCONN_THIS) ? " DIS" : "",
-
- usbctl & ~USBCTL_WRITABLE_MASK);
+ netif_dbg(dev, link, dev->net,
+ "net1080 %s-%s usbctl 0x%x:%s; this%s; other%s; r/o 0x%x\n",
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ usbctl,
+ (usbctl & USBCTL_ENABLE_LANG) ? " lang" :
+ (usbctl & USBCTL_ENABLE_MFGR) ? " mfgr" :
+ (usbctl & USBCTL_ENABLE_PROD) ? " prod" :
+ (usbctl & USBCTL_ENABLE_SERIAL) ? " serial" :
+ (usbctl & USBCTL_ENABLE_DEFAULTS) ? " defaults" : "",
+
+ (usbctl & USBCTL_FLUSH_OTHER) ? " FLUSH" :
+ (usbctl & USBCTL_DISCONN_OTHER) ? " DIS" : "",
+
+ (usbctl & USBCTL_FLUSH_THIS) ? " FLUSH" :
+ (usbctl & USBCTL_DISCONN_THIS) ? " DIS" : "",
+
+ usbctl & ~USBCTL_WRITABLE_MASK);
}
/*-------------------------------------------------------------------------*/
@@ -249,27 +246,26 @@ static inline void nc_dump_usbctl(struct usbnet *dev, u16 usbctl)
static inline void nc_dump_status(struct usbnet *dev, u16 status)
{
- if (!netif_msg_link(dev))
- return;
- netdev_dbg(dev->net, "net1080 %s-%s status 0x%x: this (%c) PKT=%d%s; other PKT=%d%s; unspec 0x%x\n",
- dev->udev->bus->bus_name, dev->udev->devpath,
- status,
-
- // XXX the packet counts don't seem right
- // (1 at reset, not 0); maybe UNSPEC too
-
- (status & STATUS_PORT_A) ? 'A' : 'B',
- STATUS_PACKETS_THIS(status),
- (status & STATUS_CONN_THIS) ? " CON" :
- (status & STATUS_SUSPEND_THIS) ? " SUS" :
- (status & STATUS_MAILBOX_THIS) ? " MBOX" : "",
-
- STATUS_PACKETS_OTHER(status),
- (status & STATUS_CONN_OTHER) ? " CON" :
- (status & STATUS_SUSPEND_OTHER) ? " SUS" :
- (status & STATUS_MAILBOX_OTHER) ? " MBOX" : "",
-
- status & STATUS_UNSPEC_MASK);
+ netif_dbg(dev, link, dev->net,
+ "net1080 %s-%s status 0x%x: this (%c) PKT=%d%s; other PKT=%d%s; unspec 0x%x\n",
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ status,
+
+ // XXX the packet counts don't seem right
+ // (1 at reset, not 0); maybe UNSPEC too
+
+ (status & STATUS_PORT_A) ? 'A' : 'B',
+ STATUS_PACKETS_THIS(status),
+ (status & STATUS_CONN_THIS) ? " CON" :
+ (status & STATUS_SUSPEND_THIS) ? " SUS" :
+ (status & STATUS_MAILBOX_THIS) ? " MBOX" : "",
+
+ STATUS_PACKETS_OTHER(status),
+ (status & STATUS_CONN_OTHER) ? " CON" :
+ (status & STATUS_SUSPEND_OTHER) ? " SUS" :
+ (status & STATUS_MAILBOX_OTHER) ? " MBOX" : "",
+
+ status & STATUS_UNSPEC_MASK);
}
/*-------------------------------------------------------------------------*/
@@ -284,10 +280,9 @@ static inline void nc_dump_status(struct usbnet *dev, u16 status)
static inline void nc_dump_ttl(struct usbnet *dev, u16 ttl)
{
- if (netif_msg_link(dev))
- netdev_dbg(dev->net, "net1080 %s-%s ttl 0x%x this = %d, other = %d\n",
- dev->udev->bus->bus_name, dev->udev->devpath,
- ttl, TTL_THIS(ttl), TTL_OTHER(ttl));
+ netif_dbg(dev, link, dev->net, "net1080 %s-%s ttl 0x%x this = %d, other = %d\n",
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ ttl, TTL_THIS(ttl), TTL_OTHER(ttl));
}
/*-------------------------------------------------------------------------*/
@@ -332,10 +327,9 @@ static int net1080_reset(struct usbnet *dev)
MK_TTL(NC_READ_TTL_MS, TTL_OTHER(ttl)) );
dbg("%s: assigned TTL, %d ms", dev->net->name, NC_READ_TTL_MS);
- if (netif_msg_link(dev))
- netdev_info(dev->net, "port %c, peer %sconnected\n",
- (status & STATUS_PORT_A) ? 'A' : 'B',
- (status & STATUS_CONN_OTHER) ? "" : "dis");
+ netif_info(dev, link, dev->net, "port %c, peer %sconnected\n",
+ (status & STATUS_PORT_A) ? 'A' : 'B',
+ (status & STATUS_CONN_OTHER) ? "" : "dis");
retval = 0;
done:
@@ -412,8 +406,8 @@ static void nc_ensure_sync(struct usbnet *dev)
return;
}
- if (netif_msg_rx_err(dev))
- netdev_dbg(dev->net, "flush net1080; too many framing errors\n");
+ netif_dbg(dev, rx_err, dev->net,
+ "flush net1080; too many framing errors\n");
dev->frame_errors = 0;
}
}
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index 44ae8f6..4183877 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -132,9 +132,10 @@ static void ctrl_callback(struct urb *urb)
case -ENOENT:
break;
default:
- if (netif_msg_drv(pegasus) && printk_ratelimit())
- dev_dbg(&pegasus->intf->dev, "%s, status %d\n",
- __func__, status);
+ if (net_ratelimit())
+ netif_dbg(pegasus, drv, pegasus->net,
+ "%s, status %d\n", __func__, status);
+ break;
}
pegasus->flags &= ~ETH_REGS_CHANGED;
wake_up(&pegasus->ctrl_wait);
@@ -149,9 +150,8 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
buffer = kmalloc(size, GFP_KERNEL);
if (!buffer) {
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "out of memory in %s\n",
- __func__);
+ netif_warn(pegasus, drv, pegasus->net,
+ "out of memory in %s\n", __func__);
return -ENOMEM;
}
add_wait_queue(&pegasus->ctrl_wait, &wait);
@@ -181,9 +181,9 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
set_current_state(TASK_RUNNING);
if (ret == -ENODEV)
netif_device_detach(pegasus->net);
- if (netif_msg_drv(pegasus) && printk_ratelimit())
- dev_err(&pegasus->intf->dev, "%s, status %d\n",
- __func__, ret);
+ if (net_ratelimit())
+ netif_err(pegasus, drv, pegasus->net,
+ "%s, status %d\n", __func__, ret);
goto out;
}
@@ -205,9 +205,8 @@ static int set_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
buffer = kmalloc(size, GFP_KERNEL);
if (!buffer) {
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "out of memory in %s\n",
- __func__);
+ netif_warn(pegasus, drv, pegasus->net,
+ "out of memory in %s\n", __func__);
return -ENOMEM;
}
memcpy(buffer, data, size);
@@ -237,9 +236,8 @@ static int set_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
if ((ret = usb_submit_urb(pegasus->ctrl_urb, GFP_ATOMIC))) {
if (ret == -ENODEV)
netif_device_detach(pegasus->net);
- if (netif_msg_drv(pegasus))
- dev_err(&pegasus->intf->dev, "%s, status %d\n",
- __func__, ret);
+ netif_err(pegasus, drv, pegasus->net,
+ "%s, status %d\n", __func__, ret);
goto out;
}
@@ -259,9 +257,8 @@ static int set_register(pegasus_t * pegasus, __u16 indx, __u8 data)
tmp = kmalloc(1, GFP_KERNEL);
if (!tmp) {
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "out of memory in %s\n",
- __func__);
+ netif_warn(pegasus, drv, pegasus->net,
+ "out of memory in %s\n", __func__);
return -ENOMEM;
}
memcpy(tmp, &data, 1);
@@ -290,9 +287,9 @@ static int set_register(pegasus_t * pegasus, __u16 indx, __u8 data)
if ((ret = usb_submit_urb(pegasus->ctrl_urb, GFP_ATOMIC))) {
if (ret == -ENODEV)
netif_device_detach(pegasus->net);
- if (netif_msg_drv(pegasus) && printk_ratelimit())
- dev_err(&pegasus->intf->dev, "%s, status %d\n",
- __func__, ret);
+ if (net_ratelimit())
+ netif_err(pegasus, drv, pegasus->net,
+ "%s, status %d\n", __func__, ret);
goto out;
}
@@ -323,9 +320,8 @@ static int update_eth_regs_async(pegasus_t * pegasus)
if ((ret = usb_submit_urb(pegasus->ctrl_urb, GFP_ATOMIC))) {
if (ret == -ENODEV)
netif_device_detach(pegasus->net);
- if (netif_msg_drv(pegasus))
- dev_err(&pegasus->intf->dev, "%s, status %d\n",
- __func__, ret);
+ netif_err(pegasus, drv, pegasus->net,
+ "%s, status %d\n", __func__, ret);
}
return ret;
@@ -349,14 +345,16 @@ static int read_mii_word(pegasus_t * pegasus, __u8 phy, __u8 indx, __u16 * regd)
if (data[0] & PHY_DONE)
break;
}
- if (i < REG_TIMEOUT) {
- ret = get_registers(pegasus, PhyData, 2, ®di);
- *regd = le16_to_cpu(regdi);
- return ret;
- }
+
+ if (i >= REG_TIMEOUT)
+ goto fail;
+
+ ret = get_registers(pegasus, PhyData, 2, ®di);
+ *regd = le16_to_cpu(regdi);
+ return ret;
+
fail:
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "%s failed\n", __func__);
+ netif_warn(pegasus, drv, pegasus->net, "%s failed\n", __func__);
return ret;
}
@@ -388,12 +386,14 @@ static int write_mii_word(pegasus_t * pegasus, __u8 phy, __u8 indx, __u16 regd)
if (data[0] & PHY_DONE)
break;
}
- if (i < REG_TIMEOUT)
- return ret;
+
+ if (i >= REG_TIMEOUT)
+ goto fail;
+
+ return ret;
fail:
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "%s failed\n", __func__);
+ netif_warn(pegasus, drv, pegasus->net, "%s failed\n", __func__);
return -ETIMEDOUT;
}
@@ -422,15 +422,15 @@ static int read_eprom_word(pegasus_t * pegasus, __u8 index, __u16 * retdata)
if (ret == -ESHUTDOWN)
goto fail;
}
- if (i < REG_TIMEOUT) {
- ret = get_registers(pegasus, EpromData, 2, &retdatai);
- *retdata = le16_to_cpu(retdatai);
- return ret;
- }
+ if (i >= REG_TIMEOUT)
+ goto fail;
+
+ ret = get_registers(pegasus, EpromData, 2, &retdatai);
+ *retdata = le16_to_cpu(retdatai);
+ return ret;
fail:
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "%s failed\n", __func__);
+ netif_warn(pegasus, drv, pegasus->net, "%s failed\n", __func__);
return -ETIMEDOUT;
}
@@ -475,11 +475,13 @@ static int write_eprom_word(pegasus_t * pegasus, __u8 index, __u16 data)
break;
}
disable_eprom_write(pegasus);
- if (i < REG_TIMEOUT)
- return ret;
+ if (i >= REG_TIMEOUT)
+ goto fail;
+
+ return ret;
+
fail:
- if (netif_msg_drv(pegasus))
- dev_warn(&pegasus->intf->dev, "%s failed\n", __func__);
+ netif_warn(pegasus, drv, pegasus->net, "%s failed\n", __func__);
return -ETIMEDOUT;
}
#endif /* PEGASUS_WRITE_EEPROM */
@@ -642,25 +644,20 @@ static void read_bulk_callback(struct urb *urb)
case 0:
break;
case -ETIME:
- if (netif_msg_rx_err(pegasus))
- pr_debug("%s: reset MAC\n", net->name);
+ netif_dbg(pegasus, rx_err, net, "reset MAC\n");
pegasus->flags &= ~PEGASUS_RX_BUSY;
break;
case -EPIPE: /* stall, or disconnect from TT */
/* FIXME schedule work to clear the halt */
- if (netif_msg_rx_err(pegasus))
- printk(KERN_WARNING "%s: no rx stall recovery\n",
- net->name);
+ netif_warn(pegasus, rx_err, net, "no rx stall recovery\n");
return;
case -ENOENT:
case -ECONNRESET:
case -ESHUTDOWN:
- if (netif_msg_ifdown(pegasus))
- pr_debug("%s: rx unlink, %d\n", net->name, status);
+ netif_dbg(pegasus, ifdown, net, "rx unlink, %d\n", status);
return;
default:
- if (netif_msg_rx_err(pegasus))
- pr_debug("%s: RX status %d\n", net->name, status);
+ netif_dbg(pegasus, rx_err, net, "RX status %d\n", status);
goto goon;
}
@@ -669,9 +666,8 @@ static void read_bulk_callback(struct urb *urb)
rx_status = buf[count - 2];
if (rx_status & 0x1e) {
- if (netif_msg_rx_err(pegasus))
- pr_debug("%s: RX packet error %x\n",
- net->name, rx_status);
+ netif_dbg(pegasus, rx_err, net,
+ "RX packet error %x\n", rx_status);
pegasus->stats.rx_errors++;
if (rx_status & 0x06) // long or runt
pegasus->stats.rx_length_errors++;
@@ -758,9 +754,7 @@ static void rx_fixup(unsigned long data)
pegasus->rx_skb = pull_skb(pegasus);
}
if (pegasus->rx_skb == NULL) {
- if (netif_msg_rx_err(pegasus))
- printk(KERN_WARNING "%s: low on memory\n",
- pegasus->net->name);
+ netif_warn(pegasus, rx_err, pegasus->net, "low on memory\n");
tasklet_schedule(&pegasus->rx_tl);
goto done;
}
@@ -800,19 +794,15 @@ static void write_bulk_callback(struct urb *urb)
case -EPIPE:
/* FIXME schedule_work() to clear the tx halt */
netif_stop_queue(net);
- if (netif_msg_tx_err(pegasus))
- printk(KERN_WARNING "%s: no tx stall recovery\n",
- net->name);
+ netif_warn(pegasus, tx_err, net, "no tx stall recovery\n");
return;
case -ENOENT:
case -ECONNRESET:
case -ESHUTDOWN:
- if (netif_msg_ifdown(pegasus))
- pr_debug("%s: tx unlink, %d\n", net->name, status);
+ netif_dbg(pegasus, ifdown, net, "tx unlink, %d\n", status);
return;
default:
- if (netif_msg_tx_err(pegasus))
- pr_info("%s: TX status %d\n", net->name, status);
+ netif_info(pegasus, tx_err, net, "TX status %d\n", status);
/* FALL THROUGH */
case 0:
break;
@@ -843,9 +833,7 @@ static void intr_callback(struct urb *urb)
/* some Pegasus-I products report LOTS of data
* toggle errors... avoid log spamming
*/
- if (netif_msg_timer(pegasus))
- pr_debug("%s: intr status %d\n", net->name,
- status);
+ netif_dbg(pegasus, timer, net, "intr status %d\n", status);
}
if (urb->actual_length >= 6) {
@@ -875,16 +863,15 @@ static void intr_callback(struct urb *urb)
res = usb_submit_urb(urb, GFP_ATOMIC);
if (res == -ENODEV)
netif_device_detach(pegasus->net);
- if (res && netif_msg_timer(pegasus))
- printk(KERN_ERR "%s: can't resubmit interrupt urb, %d\n",
- net->name, res);
+ if (res)
+ netif_err(pegasus, timer, net,
+ "can't resubmit interrupt urb, %d\n", res);
}
static void pegasus_tx_timeout(struct net_device *net)
{
pegasus_t *pegasus = netdev_priv(net);
- if (netif_msg_timer(pegasus))
- printk(KERN_WARNING "%s: tx timeout\n", net->name);
+ netif_warn(pegasus, timer, net, "tx timeout\n");
usb_unlink_urb(pegasus->tx_urb);
pegasus->stats.tx_errors++;
}
@@ -906,9 +893,7 @@ static netdev_tx_t pegasus_start_xmit(struct sk_buff *skb,
pegasus->tx_buff, count,
write_bulk_callback, pegasus);
if ((res = usb_submit_urb(pegasus->tx_urb, GFP_ATOMIC))) {
- if (netif_msg_tx_err(pegasus))
- printk(KERN_WARNING "%s: fail tx, %d\n",
- net->name, res);
+ netif_warn(pegasus, tx_err, net, "fail tx, %d\n", res);
switch (res) {
case -EPIPE: /* stall, or disconnect from TT */
/* cleanup should already have been scheduled */
@@ -952,10 +937,9 @@ static inline void get_interrupt_interval(pegasus_t * pegasus)
interval = data >> 8;
if (pegasus->usb->speed != USB_SPEED_HIGH) {
if (interval < 0x80) {
- if (netif_msg_timer(pegasus))
- dev_info(&pegasus->intf->dev, "intr interval "
- "changed from %ums to %ums\n",
- interval, 0x80);
+ netif_info(pegasus, timer, pegasus->net,
+ "intr interval changed from %ums to %ums\n",
+ interval, 0x80);
interval = 0x80;
data = (data & 0x00FF) | ((u16)interval << 8);
#ifdef PEGASUS_WRITE_EEPROM
@@ -1046,8 +1030,7 @@ static int pegasus_open(struct net_device *net)
if ((res = usb_submit_urb(pegasus->rx_urb, GFP_KERNEL))) {
if (res == -ENODEV)
netif_device_detach(pegasus->net);
- if (netif_msg_ifup(pegasus))
- pr_debug("%s: failed rx_urb, %d", net->name, res);
+ netif_dbg(pegasus, ifup, net, "failed rx_urb, %d\n", res);
goto exit;
}
@@ -1058,15 +1041,13 @@ static int pegasus_open(struct net_device *net)
if ((res = usb_submit_urb(pegasus->intr_urb, GFP_KERNEL))) {
if (res == -ENODEV)
netif_device_detach(pegasus->net);
- if (netif_msg_ifup(pegasus))
- pr_debug("%s: failed intr_urb, %d\n", net->name, res);
+ netif_dbg(pegasus, ifup, net, "failed intr_urb, %d\n", res);
usb_kill_urb(pegasus->rx_urb);
goto exit;
}
if ((res = enable_net_traffic(net, pegasus->usb))) {
- if (netif_msg_ifup(pegasus))
- pr_debug("%s: can't enable_net_traffic() - %d\n",
- net->name, res);
+ netif_dbg(pegasus, ifup, net,
+ "can't enable_net_traffic() - %d\n", res);
res = -EIO;
usb_kill_urb(pegasus->rx_urb);
usb_kill_urb(pegasus->intr_urb);
@@ -1075,8 +1056,7 @@ static int pegasus_open(struct net_device *net)
}
set_carrier(net);
netif_start_queue(net);
- if (netif_msg_ifup(pegasus))
- pr_debug("%s: open\n", net->name);
+ netif_dbg(pegasus, ifup, net, "open\n");
res = 0;
exit:
return res;
@@ -1230,13 +1210,11 @@ static void pegasus_set_multicast(struct net_device *net)
if (net->flags & IFF_PROMISC) {
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
- if (netif_msg_link(pegasus))
- pr_info("%s: Promiscuous mode enabled.\n", net->name);
+ netif_info(pegasus, link, net, "Promiscuous mode enabled\n");
} else if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI)) {
pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
- if (netif_msg_link(pegasus))
- pr_debug("%s: set allmulti\n", net->name);
+ netif_dbg(pegasus, link, net, "set allmulti\n");
} else {
pegasus->eth_regs[EthCtrl0] &= ~RX_MULTICAST;
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index f01f024..4ce331f 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -335,8 +335,8 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
dev->maxpacket = usb_maxpacket(dev->udev, dev->out, 1);
if (dev->maxpacket == 0) {
- if (netif_msg_probe(dev))
- dev_dbg(&intf->dev, "dev->maxpacket can't be 0\n");
+ netif_dbg(dev, probe, dev->net,
+ "dev->maxpacket can't be 0\n");
retval = -EINVAL;
goto fail_and_release;
}
@@ -394,17 +394,15 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
}
if ((flags & FLAG_RNDIS_PHYM_WIRELESS) &&
*phym != RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) {
- if (netif_msg_probe(dev))
- dev_dbg(&intf->dev, "driver requires wireless "
- "physical medium, but device is not.\n");
+ netif_dbg(dev, probe, dev->net,
+ "driver requires wireless physical medium, but device is not\n");
retval = -ENODEV;
goto halt_fail_and_release;
}
if ((flags & FLAG_RNDIS_PHYM_NOT_WIRELESS) &&
*phym == RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) {
- if (netif_msg_probe(dev))
- dev_dbg(&intf->dev, "driver requires non-wireless "
- "physical medium, but device is wireless.\n");
+ netif_dbg(dev, probe, dev->net,
+ "driver requires non-wireless physical medium, but device is wireless.\n");
retval = -ENODEV;
goto halt_fail_and_release;
}
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index d4cbcef..1ada51e 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -376,13 +376,11 @@ static void smsc95xx_set_multicast(struct net_device *netdev)
spin_lock_irqsave(&pdata->mac_cr_lock, flags);
if (dev->net->flags & IFF_PROMISC) {
- if (netif_msg_drv(dev))
- netdev_dbg(dev->net, "promiscuous mode enabled\n");
+ netif_dbg(dev, drv, dev->net, "promiscuous mode enabled\n");
pdata->mac_cr |= MAC_CR_PRMS_;
pdata->mac_cr &= ~(MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
} else if (dev->net->flags & IFF_ALLMULTI) {
- if (netif_msg_drv(dev))
- netdev_dbg(dev->net, "receive all multicast enabled\n");
+ netif_dbg(dev, drv, dev->net, "receive all multicast enabled\n");
pdata->mac_cr |= MAC_CR_MCPAS_;
pdata->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_HPFILT_);
} else if (!netdev_mc_empty(dev->net)) {
@@ -410,12 +408,10 @@ static void smsc95xx_set_multicast(struct net_device *netdev)
if (count != ((u32) netdev_mc_count(dev->net)))
netdev_warn(dev->net, "mc_count != dev->mc_count\n");
- if (netif_msg_drv(dev))
- netdev_dbg(dev->net, "HASHH=0x%08X, HASHL=0x%08X\n",
+ netif_dbg(dev, drv, dev->net, "HASHH=0x%08X, HASHL=0x%08X\n",
hash_hi, hash_lo);
} else {
- if (netif_msg_drv(dev))
- netdev_dbg(dev->net, "receive own packets only\n");
+ netif_dbg(dev, drv, dev->net, "receive own packets only\n");
pdata->mac_cr &=
~(MAC_CR_PRMS_ | MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
}
@@ -452,13 +448,11 @@ static void smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
else
afc_cfg &= ~0xF;
- if (netif_msg_link(dev))
- netdev_dbg(dev->net, "rx pause %s, tx pause %s\n",
+ netif_dbg(dev, link, dev->net, "rx pause %s, tx pause %s\n",
cap & FLOW_CTRL_RX ? "enabled" : "disabled",
cap & FLOW_CTRL_TX ? "enabled" : "disabled");
} else {
- if (netif_msg_link(dev))
- netdev_dbg(dev->net, "half duplex\n");
+ netif_dbg(dev, link, dev->net, "half duplex\n");
flow = 0;
afc_cfg |= 0xF;
}
@@ -486,9 +480,8 @@ static int smsc95xx_link_reset(struct usbnet *dev)
lcladv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_ADVERTISE);
rmtadv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_LPA);
- if (netif_msg_link(dev))
- netdev_dbg(dev->net, "speed: %d duplex: %d lcladv: %04x rmtadv: %04x\n",
- ecmd.speed, ecmd.duplex, lcladv, rmtadv);
+ netif_dbg(dev, link, dev->net, "speed: %d duplex: %d lcladv: %04x rmtadv: %04x\n",
+ ecmd.speed, ecmd.duplex, lcladv, rmtadv);
spin_lock_irqsave(&pdata->mac_cr_lock, flags);
if (ecmd.duplex != DUPLEX_FULL) {
@@ -520,8 +513,7 @@ static void smsc95xx_status(struct usbnet *dev, struct urb *urb)
memcpy(&intdata, urb->transfer_buffer, 4);
le32_to_cpus(&intdata);
- if (netif_msg_link(dev))
- netdev_dbg(dev->net, "intdata: 0x%08X\n", intdata);
+ netif_dbg(dev, link, dev->net, "intdata: 0x%08X\n", intdata);
if (intdata & INT_ENP_PHY_INT_)
usbnet_defer_kevent(dev, EVENT_LINK_RESET);
@@ -557,8 +549,7 @@ static int smsc95xx_set_csums(struct usbnet *dev)
return ret;
}
- if (netif_msg_hw(dev))
- netdev_dbg(dev->net, "COE_CR = 0x%08x\n", read_buf);
+ netif_dbg(dev, hw, dev->net, "COE_CR = 0x%08x\n", read_buf);
return 0;
}
@@ -662,16 +653,14 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
dev->net->dev_addr) == 0) {
if (is_valid_ether_addr(dev->net->dev_addr)) {
/* eeprom values are valid so use them */
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "MAC address read from EEPROM\n");
+ netif_dbg(dev, ifup, dev->net, "MAC address read from EEPROM\n");
return;
}
}
/* no eeprom, or eeprom values are invalid. generate random MAC */
random_ether_addr(dev->net->dev_addr);
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "MAC address set to random_ether_addr\n");
+ netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr\n");
}
static int smsc95xx_set_mac_address(struct usbnet *dev)
@@ -750,8 +739,7 @@ static int smsc95xx_phy_initialize(struct usbnet *dev)
PHY_INT_MASK_DEFAULT_);
mii_nway_restart(&dev->mii);
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "phy initialised successfully\n");
+ netif_dbg(dev, ifup, dev->net, "phy initialised successfully\n");
return 0;
}
@@ -762,8 +750,7 @@ static int smsc95xx_reset(struct usbnet *dev)
u32 read_buf, write_buf, burst_cap;
int ret = 0, timeout;
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "entering smsc95xx_reset\n");
+ netif_dbg(dev, ifup, dev->net, "entering smsc95xx_reset\n");
write_buf = HW_CFG_LRST_;
ret = smsc95xx_write_reg(dev, HW_CFG, write_buf);
@@ -818,8 +805,8 @@ static int smsc95xx_reset(struct usbnet *dev)
if (ret < 0)
return ret;
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "MAC Address: %pM\n", dev->net->dev_addr);
+ netif_dbg(dev, ifup, dev->net,
+ "MAC Address: %pM\n", dev->net->dev_addr);
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
@@ -827,8 +814,8 @@ static int smsc95xx_reset(struct usbnet *dev)
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "Read Value from HW_CFG : 0x%08x\n", read_buf);
+ netif_dbg(dev, ifup, dev->net,
+ "Read Value from HW_CFG : 0x%08x\n", read_buf);
read_buf |= HW_CFG_BIR_;
@@ -844,9 +831,9 @@ static int smsc95xx_reset(struct usbnet *dev)
netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "Read Value from HW_CFG after writing HW_CFG_BIR_: 0x%08x\n",
- read_buf);
+ netif_dbg(dev, ifup, dev->net,
+ "Read Value from HW_CFG after writing HW_CFG_BIR_: 0x%08x\n",
+ read_buf);
if (!turbo_mode) {
burst_cap = 0;
@@ -859,8 +846,8 @@ static int smsc95xx_reset(struct usbnet *dev)
dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "rx_urb_size=%ld\n", (ulong)dev->rx_urb_size);
+ netif_dbg(dev, ifup, dev->net,
+ "rx_urb_size=%ld\n", (ulong)dev->rx_urb_size);
ret = smsc95xx_write_reg(dev, BURST_CAP, burst_cap);
if (ret < 0) {
@@ -873,9 +860,9 @@ static int smsc95xx_reset(struct usbnet *dev)
netdev_warn(dev->net, "Failed to read BURST_CAP: %d\n", ret);
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "Read Value from BURST_CAP after writing: 0x%08x\n",
- read_buf);
+ netif_dbg(dev, ifup, dev->net,
+ "Read Value from BURST_CAP after writing: 0x%08x\n",
+ read_buf);
read_buf = DEFAULT_BULK_IN_DELAY;
ret = smsc95xx_write_reg(dev, BULK_IN_DLY, read_buf);
@@ -889,17 +876,17 @@ static int smsc95xx_reset(struct usbnet *dev)
netdev_warn(dev->net, "Failed to read BULK_IN_DLY: %d\n", ret);
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "Read Value from BULK_IN_DLY after writing: 0x%08x\n",
- read_buf);
+ netif_dbg(dev, ifup, dev->net,
+ "Read Value from BULK_IN_DLY after writing: 0x%08x\n",
+ read_buf);
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "Read Value from HW_CFG: 0x%08x\n", read_buf);
+ netif_dbg(dev, ifup, dev->net,
+ "Read Value from HW_CFG: 0x%08x\n", read_buf);
if (turbo_mode)
read_buf |= (HW_CFG_MEF_ | HW_CFG_BCE_);
@@ -921,9 +908,8 @@ static int smsc95xx_reset(struct usbnet *dev)
netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "Read Value from HW_CFG after writing: 0x%08x\n",
- read_buf);
+ netif_dbg(dev, ifup, dev->net,
+ "Read Value from HW_CFG after writing: 0x%08x\n", read_buf);
write_buf = 0xFFFFFFFF;
ret = smsc95xx_write_reg(dev, INT_STS, write_buf);
@@ -938,8 +924,7 @@ static int smsc95xx_reset(struct usbnet *dev)
netdev_warn(dev->net, "Failed to read ID_REV: %d\n", ret);
return ret;
}
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "ID_REV = 0x%08x\n", read_buf);
+ netif_dbg(dev, ifup, dev->net, "ID_REV = 0x%08x\n", read_buf);
/* Configure GPIO pins as LED outputs */
write_buf = LED_GPIO_CFG_SPD_LED | LED_GPIO_CFG_LNK_LED |
@@ -1013,8 +998,7 @@ static int smsc95xx_reset(struct usbnet *dev)
smsc95xx_start_tx_path(dev);
smsc95xx_start_rx_path(dev);
- if (netif_msg_ifup(dev))
- netdev_dbg(dev->net, "smsc95xx_reset, return 0\n");
+ netif_dbg(dev, ifup, dev->net, "smsc95xx_reset, return 0\n");
return 0;
}
@@ -1071,8 +1055,7 @@ static void smsc95xx_unbind(struct usbnet *dev, struct usb_interface *intf)
{
struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
if (pdata) {
- if (netif_msg_ifdown(dev))
- netdev_dbg(dev->net, "free pdata\n");
+ netif_dbg(dev, ifdown, dev->net, "free pdata\n");
kfree(pdata);
pdata = NULL;
dev->data[0] = 0;
@@ -1106,9 +1089,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
align_count = (4 - ((size + NET_IP_ALIGN) % 4)) % 4;
if (unlikely(header & RX_STS_ES_)) {
- if (netif_msg_rx_err(dev))
- netdev_dbg(dev->net, "Error header=0x%08x\n",
- header);
+ netif_dbg(dev, rx_err, dev->net,
+ "Error header=0x%08x\n", header);
dev->net->stats.rx_errors++;
dev->net->stats.rx_dropped++;
@@ -1125,9 +1107,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
} else {
/* ETH_FRAME_LEN + 4(CRC) + 2(COE) + 4(Vlan) */
if (unlikely(size > (ETH_FRAME_LEN + 12))) {
- if (netif_msg_rx_err(dev))
- netdev_dbg(dev->net, "size err header=0x%08x\n",
- header);
+ netif_dbg(dev, rx_err, dev->net,
+ "size err header=0x%08x\n", header);
return 0;
}
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 8e73293..17b6a62 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -242,13 +242,13 @@ void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
dev->net->stats.rx_packets++;
dev->net->stats.rx_bytes += skb->len;
- if (netif_msg_rx_status (dev))
- netdev_dbg(dev->net, "< rx, len %zu, type 0x%x\n",
- skb->len + sizeof (struct ethhdr), skb->protocol);
+ netif_dbg(dev, rx_status, dev->net, "< rx, len %zu, type 0x%x\n",
+ skb->len + sizeof (struct ethhdr), skb->protocol);
memset (skb->cb, 0, sizeof (struct skb_data));
status = netif_rx (skb);
- if (status != NET_RX_SUCCESS && netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "netif_rx status %d\n", status);
+ if (status != NET_RX_SUCCESS)
+ netif_dbg(dev, rx_err, dev->net,
+ "netif_rx status %d\n", status);
}
EXPORT_SYMBOL_GPL(usbnet_skb_return);
@@ -332,8 +332,7 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
size_t size = dev->rx_urb_size;
if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {
- if (netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "no rx skb\n");
+ netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
usb_free_urb (urb);
return;
@@ -363,21 +362,19 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
break;
case -ENODEV:
- if (netif_msg_ifdown (dev))
- netdev_dbg(dev->net, "device gone\n");
+ netif_dbg(dev, ifdown, dev->net, "device gone\n");
netif_device_detach (dev->net);
break;
default:
- if (netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "rx submit, %d\n", retval);
+ netif_dbg(dev, rx_err, dev->net,
+ "rx submit, %d\n", retval);
tasklet_schedule (&dev->bh);
break;
case 0:
__skb_queue_tail (&dev->rxq, skb);
}
} else {
- if (netif_msg_ifdown (dev))
- netdev_dbg(dev->net, "rx: stopped\n");
+ netif_dbg(dev, ifdown, dev->net, "rx: stopped\n");
retval = -ENOLINK;
}
spin_unlock_irqrestore (&dev->rxq.lock, lockflags);
@@ -400,8 +397,7 @@ static inline void rx_process (struct usbnet *dev, struct sk_buff *skb)
if (skb->len)
usbnet_skb_return (dev, skb);
else {
- if (netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "drop\n");
+ netif_dbg(dev, rx_err, dev->net, "drop\n");
error:
dev->net->stats.rx_errors++;
skb_queue_tail (&dev->done, skb);
@@ -428,8 +424,8 @@ static void rx_complete (struct urb *urb)
entry->state = rx_cleanup;
dev->net->stats.rx_errors++;
dev->net->stats.rx_length_errors++;
- if (netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "rx length %d\n", skb->len);
+ netif_dbg(dev, rx_err, dev->net,
+ "rx length %d\n", skb->len);
}
break;
@@ -446,8 +442,8 @@ static void rx_complete (struct urb *urb)
/* software-driven interface shutdown */
case -ECONNRESET: /* async unlink */
case -ESHUTDOWN: /* hardware gone */
- if (netif_msg_ifdown (dev))
- netdev_dbg(dev->net, "rx shutdown, code %d\n", urb_status);
+ netif_dbg(dev, ifdown, dev->net,
+ "rx shutdown, code %d\n", urb_status);
goto block;
/* we get controller i/o faults during khubd disconnect() delays.
@@ -460,8 +456,8 @@ static void rx_complete (struct urb *urb)
dev->net->stats.rx_errors++;
if (!timer_pending (&dev->delay)) {
mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES);
- if (netif_msg_link (dev))
- netdev_dbg(dev->net, "rx throttle %d\n", urb_status);
+ netif_dbg(dev, link, dev->net,
+ "rx throttle %d\n", urb_status);
}
block:
entry->state = rx_cleanup;
@@ -477,8 +473,7 @@ block:
default:
entry->state = rx_cleanup;
dev->net->stats.rx_errors++;
- if (netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "rx status %d\n", urb_status);
+ netif_dbg(dev, rx_err, dev->net, "rx status %d\n", urb_status);
break;
}
@@ -492,8 +487,7 @@ block:
}
usb_free_urb (urb);
}
- if (netif_msg_rx_err (dev))
- netdev_dbg(dev->net, "no read resubmitted\n");
+ netif_dbg(dev, rx_err, dev->net, "no read resubmitted\n");
}
static void intr_complete (struct urb *urb)
@@ -510,8 +504,8 @@ static void intr_complete (struct urb *urb)
/* software-driven interface shutdown */
case -ENOENT: /* urb killed */
case -ESHUTDOWN: /* hardware gone */
- if (netif_msg_ifdown (dev))
- netdev_dbg(dev->net, "intr shutdown, code %d\n", status);
+ netif_dbg(dev, ifdown, dev->net,
+ "intr shutdown, code %d\n", status);
return;
/* NOTE: not throttling like RX/TX, since this endpoint
@@ -527,8 +521,9 @@ static void intr_complete (struct urb *urb)
memset(urb->transfer_buffer, 0, urb->transfer_buffer_length);
status = usb_submit_urb (urb, GFP_ATOMIC);
- if (status != 0 && netif_msg_timer (dev))
- netdev_err(dev->net, "intr resubmit --> %d\n", status);
+ if (status != 0)
+ netif_err(dev, timer, dev->net,
+ "intr resubmit --> %d\n", status);
}
/*-------------------------------------------------------------------------*/
@@ -536,8 +531,7 @@ void usbnet_pause_rx(struct usbnet *dev)
{
set_bit(EVENT_RX_PAUSED, &dev->flags);
- if (netif_msg_rx_status(dev))
- netdev_dbg(dev->net, "paused rx queue enabled\n");
+ netif_dbg(dev, rx_status, dev->net, "paused rx queue enabled\n");
}
EXPORT_SYMBOL_GPL(usbnet_pause_rx);
@@ -555,9 +549,8 @@ void usbnet_resume_rx(struct usbnet *dev)
tasklet_schedule(&dev->bh);
- if (netif_msg_rx_status(dev))
- netdev_dbg(dev->net, "paused rx queue disabled, %d skbs requeued\n",
- num);
+ netif_dbg(dev, rx_status, dev->net,
+ "paused rx queue disabled, %d skbs requeued\n", num);
}
EXPORT_SYMBOL_GPL(usbnet_resume_rx);
@@ -632,9 +625,8 @@ static void usbnet_terminate_urbs(struct usbnet *dev)
&& !skb_queue_empty(&dev->done)) {
schedule_timeout(UNLINK_TIMEOUT_MS);
set_current_state(TASK_UNINTERRUPTIBLE);
- if (netif_msg_ifdown(dev))
- netdev_dbg(dev->net, "waited for %d urb completions\n",
- temp);
+ netif_dbg(dev, ifdown, dev->net,
+ "waited for %d urb completions\n", temp);
}
set_current_state(TASK_RUNNING);
dev->wait = NULL;
@@ -649,21 +641,21 @@ int usbnet_stop (struct net_device *net)
netif_stop_queue (net);
- if (netif_msg_ifdown (dev))
- netdev_info(dev->net, "stop stats: rx/tx %ld/%ld, errs %ld/%ld\n",
- net->stats.rx_packets, net->stats.tx_packets,
- net->stats.rx_errors, net->stats.tx_errors);
+ netif_info(dev, ifdown, dev->net,
+ "stop stats: rx/tx %ld/%ld, errs %ld/%ld\n",
+ net->stats.rx_packets, net->stats.tx_packets,
+ net->stats.rx_errors, net->stats.tx_errors);
/* allow minidriver to stop correctly (wireless devices to turn off
* radio etc) */
if (info->stop) {
retval = info->stop(dev);
- if (retval < 0 && netif_msg_ifdown(dev))
- netdev_info(dev->net,
- "stop fail (%d) usbnet usb-%s-%s, %s\n",
- retval,
- dev->udev->bus->bus_name, dev->udev->devpath,
- info->description);
+ if (retval < 0)
+ netif_info(dev, ifdown, dev->net,
+ "stop fail (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ info->description);
}
if (!(info->flags & FLAG_AVOID_UNLINK_URBS))
@@ -702,32 +694,29 @@ int usbnet_open (struct net_device *net)
struct driver_info *info = dev->driver_info;
if ((retval = usb_autopm_get_interface(dev->intf)) < 0) {
- if (netif_msg_ifup (dev))
- netdev_info(dev->net,
- "resumption fail (%d) usbnet usb-%s-%s, %s\n",
- retval,
- dev->udev->bus->bus_name,
- dev->udev->devpath,
- info->description);
+ netif_info(dev, ifup, dev->net,
+ "resumption fail (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name,
+ dev->udev->devpath,
+ info->description);
goto done_nopm;
}
// put into "known safe" state
if (info->reset && (retval = info->reset (dev)) < 0) {
- if (netif_msg_ifup (dev))
- netdev_info(dev->net,
- "open reset fail (%d) usbnet usb-%s-%s, %s\n",
- retval,
- dev->udev->bus->bus_name,
- dev->udev->devpath,
- info->description);
+ netif_info(dev, ifup, dev->net,
+ "open reset fail (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name,
+ dev->udev->devpath,
+ info->description);
goto done;
}
// insist peer be connected
if (info->check_connect && (retval = info->check_connect (dev)) < 0) {
- if (netif_msg_ifup (dev))
- netdev_dbg(dev->net, "can't open; %d\n", retval);
+ netif_dbg(dev, ifup, dev->net, "can't open; %d\n", retval);
goto done;
}
@@ -735,33 +724,23 @@ int usbnet_open (struct net_device *net)
if (dev->interrupt) {
retval = usb_submit_urb (dev->interrupt, GFP_KERNEL);
if (retval < 0) {
- if (netif_msg_ifup (dev))
- netdev_err(dev->net, "intr submit %d\n", retval);
+ netif_err(dev, ifup, dev->net,
+ "intr submit %d\n", retval);
goto done;
}
}
netif_start_queue (net);
- if (netif_msg_ifup (dev)) {
- char *framing;
-
- if (dev->driver_info->flags & FLAG_FRAMING_NC)
- framing = "NetChip";
- else if (dev->driver_info->flags & FLAG_FRAMING_GL)
- framing = "GeneSys";
- else if (dev->driver_info->flags & FLAG_FRAMING_Z)
- framing = "Zaurus";
- else if (dev->driver_info->flags & FLAG_FRAMING_RN)
- framing = "RNDIS";
- else if (dev->driver_info->flags & FLAG_FRAMING_AX)
- framing = "ASIX";
- else
- framing = "simple";
-
- netdev_info(dev->net, "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n",
- (int)RX_QLEN(dev), (int)TX_QLEN(dev),
- dev->net->mtu, framing);
- }
+ netif_info(dev, ifup, dev->net,
+ "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n",
+ (int)RX_QLEN(dev), (int)TX_QLEN(dev),
+ dev->net->mtu,
+ (dev->driver_info->flags & FLAG_FRAMING_NC) ? "NetChip" :
+ (dev->driver_info->flags & FLAG_FRAMING_GL) ? "GeneSys" :
+ (dev->driver_info->flags & FLAG_FRAMING_Z) ? "Zaurus" :
+ (dev->driver_info->flags & FLAG_FRAMING_RN) ? "RNDIS" :
+ (dev->driver_info->flags & FLAG_FRAMING_AX) ? "ASIX" :
+ "simple");
// delay posting reads until we're fully open
tasklet_schedule (&dev->bh);
@@ -772,6 +751,7 @@ int usbnet_open (struct net_device *net)
usb_autopm_put_interface(dev->intf);
}
return retval;
+
done:
usb_autopm_put_interface(dev->intf);
done_nopm:
@@ -1015,16 +995,14 @@ static void tx_complete (struct urb *urb)
if (!timer_pending (&dev->delay)) {
mod_timer (&dev->delay,
jiffies + THROTTLE_JIFFIES);
- if (netif_msg_link (dev))
- netdev_dbg(dev->net, "tx throttle %d\n",
- urb->status);
+ netif_dbg(dev, link, dev->net,
+ "tx throttle %d\n", urb->status);
}
netif_stop_queue (dev->net);
break;
default:
- if (netif_msg_tx_err (dev))
- netdev_dbg(dev->net, "tx err %d\n",
- entry->urb->status);
+ netif_dbg(dev, tx_err, dev->net,
+ "tx err %d\n", entry->urb->status);
break;
}
}
@@ -1066,16 +1044,14 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
if (info->tx_fixup) {
skb = info->tx_fixup (dev, skb, GFP_ATOMIC);
if (!skb) {
- if (netif_msg_tx_err (dev))
- netdev_dbg(dev->net, "can't tx_fixup skb\n");
+ netif_dbg(dev, tx_err, dev->net, "can't tx_fixup skb\n");
goto drop;
}
}
length = skb->len;
if (!(urb = usb_alloc_urb (0, GFP_ATOMIC))) {
- if (netif_msg_tx_err (dev))
- netdev_dbg(dev->net, "no urb\n");
+ netif_dbg(dev, tx_err, dev->net, "no urb\n");
goto drop;
}
@@ -1128,8 +1104,8 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
break;
default:
usb_autopm_put_interface_async(dev->intf);
- if (netif_msg_tx_err (dev))
- netdev_dbg(dev->net, "tx: submit urb err %d\n", retval);
+ netif_dbg(dev, tx_err, dev->net,
+ "tx: submit urb err %d\n", retval);
break;
case 0:
net->trans_start = jiffies;
@@ -1140,17 +1116,15 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
spin_unlock_irqrestore (&dev->txq.lock, flags);
if (retval) {
- if (netif_msg_tx_err (dev))
- netdev_dbg(dev->net, "drop, code %d\n", retval);
+ netif_dbg(dev, tx_err, dev->net, "drop, code %d\n", retval);
drop:
dev->net->stats.tx_dropped++;
if (skb)
dev_kfree_skb_any (skb);
usb_free_urb (urb);
- } else if (netif_msg_tx_queued (dev)) {
- netdev_dbg(dev->net, "> tx, len %d, type 0x%x\n",
- length, skb->protocol);
- }
+ } else
+ netif_dbg(dev, tx_queued, dev->net,
+ "> tx, len %d, type 0x%x\n", length, skb->protocol);
#ifdef CONFIG_PM
deferred:
#endif
@@ -1209,9 +1183,10 @@ static void usbnet_bh (unsigned long param)
if (urb != NULL)
rx_submit (dev, urb, GFP_ATOMIC);
}
- if (temp != dev->rxq.qlen && netif_msg_link (dev))
- netdev_dbg(dev->net, "rxqlen %d --> %d\n",
- temp, dev->rxq.qlen);
+ if (temp != dev->rxq.qlen)
+ netif_dbg(dev, link, dev->net,
+ "rxqlen %d --> %d\n",
+ temp, dev->rxq.qlen);
if (dev->rxq.qlen < qlen)
tasklet_schedule (&dev->bh);
}
@@ -1242,11 +1217,10 @@ void usbnet_disconnect (struct usb_interface *intf)
xdev = interface_to_usbdev (intf);
- if (netif_msg_probe (dev))
- netdev_info(dev->net, "unregister '%s' usb-%s-%s, %s\n",
- intf->dev.driver->name,
- xdev->bus->bus_name, xdev->devpath,
- dev->driver_info->description);
+ netif_info(dev, probe, dev->net, "unregister '%s' usb-%s-%s, %s\n",
+ intf->dev.driver->name,
+ xdev->bus->bus_name, xdev->devpath,
+ dev->driver_info->description);
net = dev->net;
unregister_netdev (net);
@@ -1409,12 +1383,12 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
status = register_netdev (net);
if (status)
goto out3;
- if (netif_msg_probe (dev))
- netdev_info(dev->net, "register '%s' at usb-%s-%s, %s, %pM\n",
- udev->dev.driver->name,
- xdev->bus->bus_name, xdev->devpath,
- dev->driver_info->description,
- net->dev_addr);
+ netif_info(dev, probe, dev->net,
+ "register '%s' at usb-%s-%s, %s, %pM\n",
+ udev->dev.driver->name,
+ xdev->bus->bus_name, xdev->devpath,
+ dev->driver_info->description,
+ net->dev_addr);
// ok, it's ready to go.
usb_set_intfdata (udev, dev);
--
1.7.0.rc1.33.g07cf0f
^ permalink raw reply related
* [PATCH 1/2] usbnet: Convert dev(dbg|err|warn|info) macros to netdev_<level>
From: Joe Perches @ 2010-02-14 23:01 UTC (permalink / raw)
To: David Miller
Cc: David Brownell, Greg Kroah-Hartman, netdev, linux-usb,
linux-kernel
In-Reply-To: <cover.1266187669.git.joe@perches.com>
These macros are too similar to the dev_<level> equivalents
but take a usbnet * argument. Convert them to the recently
introduced netdev_<level> macros.
The old macros had "\n" appended to the format string.
Add the "\n" to the converted uses.
Some existing uses of the dev<foo> macros in cdc_eem.c
probably mistakenly had trailing "\n". No "\n" added there.
Some logging messages were in the form:
printk(KERN_<level> "msg %s%s%s%s\n",
value == 1 ? "one" : "",
value == 2 ? "two" : "",
value == 3 ? "three" : "",
value == 4 ? "four" : "unknown");
Converted to:
printk(KERN_<level> "msg %s\n",
value == 1 ? "one" :
value == 2 ? "two" :
value == 3 ? "three" :
value == 4 ? "four" : "unknown");
Signed-off-by: Joe Perches <joe@perches.com>
---
drivers/net/usb/asix.c | 97 ++++++++++++----------
drivers/net/usb/cdc_eem.c | 10 ++-
drivers/net/usb/cdc_ether.c | 18 ++--
drivers/net/usb/dm9601.c | 49 ++++++------
drivers/net/usb/int51x1.c | 15 ++--
drivers/net/usb/net1080.c | 101 +++++++++++------------
drivers/net/usb/rndis_host.c | 10 +-
drivers/net/usb/smsc95xx.c | 188 ++++++++++++++++++++++--------------------
drivers/net/usb/usbnet.c | 162 ++++++++++++++++++------------------
include/linux/usb/usbnet.h | 21 -----
10 files changed, 334 insertions(+), 337 deletions(-)
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index f025517..f605204 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -184,8 +184,8 @@ static int asix_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
void *buf;
int err = -ENOMEM;
- devdbg(dev,"asix_read_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d",
- cmd, value, index, size);
+ netdev_dbg(dev->net, "asix_read_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
+ cmd, value, index, size);
buf = kmalloc(size, GFP_KERNEL);
if (!buf)
@@ -217,8 +217,8 @@ static int asix_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
void *buf = NULL;
int err = -ENOMEM;
- devdbg(dev,"asix_write_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d",
- cmd, value, index, size);
+ netdev_dbg(dev->net, "asix_write_cmd() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
+ cmd, value, index, size);
if (data) {
buf = kmalloc(size, GFP_KERNEL);
@@ -264,15 +264,15 @@ asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index,
int status;
struct urb *urb;
- devdbg(dev,"asix_write_cmd_async() cmd=0x%02x value=0x%04x index=0x%04x size=%d",
- cmd, value, index, size);
+ netdev_dbg(dev->net, "asix_write_cmd_async() cmd=0x%02x value=0x%04x index=0x%04x size=%d\n",
+ cmd, value, index, size);
if ((urb = usb_alloc_urb(0, GFP_ATOMIC)) == NULL) {
- deverr(dev, "Error allocating URB in write_cmd_async!");
+ netdev_err(dev->net, "Error allocating URB in write_cmd_async!\n");
return;
}
if ((req = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC)) == NULL) {
- deverr(dev, "Failed to allocate memory for control request");
+ netdev_err(dev->net, "Failed to allocate memory for control request\n");
usb_free_urb(urb);
return;
}
@@ -289,8 +289,8 @@ asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index,
asix_async_cmd_callback, req);
if((status = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
- deverr(dev, "Error submitting the control message: status=%d",
- status);
+ netdev_err(dev->net, "Error submitting the control message: status=%d\n",
+ status);
kfree(req);
usb_free_urb(urb);
}
@@ -314,7 +314,7 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
while (skb->len > 0) {
if ((short)(header & 0x0000ffff) !=
~((short)((header & 0xffff0000) >> 16))) {
- deverr(dev,"asix_rx_fixup() Bad Header Length");
+ netdev_err(dev->net, "asix_rx_fixup() Bad Header Length\n");
}
/* get the packet length */
size = (u16) (header & 0x0000ffff);
@@ -322,7 +322,8 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
if ((skb->len) - ((size + 1) & 0xfffe) == 0)
return 2;
if (size > ETH_FRAME_LEN) {
- deverr(dev,"asix_rx_fixup() Bad RX Length %d", size);
+ netdev_err(dev->net, "asix_rx_fixup() Bad RX Length %d\n",
+ size);
return 0;
}
ax_skb = skb_clone(skb, GFP_ATOMIC);
@@ -348,7 +349,8 @@ static int asix_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
}
if (skb->len < 0) {
- deverr(dev,"asix_rx_fixup() Bad SKB Length %d", skb->len);
+ netdev_err(dev->net, "asix_rx_fixup() Bad SKB Length %d\n",
+ skb->len);
return 0;
}
return 1;
@@ -409,7 +411,7 @@ static void asix_status(struct usbnet *dev, struct urb *urb)
usbnet_defer_kevent (dev, EVENT_LINK_RESET );
} else
netif_carrier_off(dev->net);
- devdbg(dev, "Link Status is: %d", link);
+ netdev_dbg(dev->net, "Link Status is: %d\n", link);
}
}
@@ -418,7 +420,7 @@ static inline int asix_set_sw_mii(struct usbnet *dev)
int ret;
ret = asix_write_cmd(dev, AX_CMD_SET_SW_MII, 0x0000, 0, 0, NULL);
if (ret < 0)
- deverr(dev, "Failed to enable software MII access");
+ netdev_err(dev->net, "Failed to enable software MII access\n");
return ret;
}
@@ -427,7 +429,7 @@ static inline int asix_set_hw_mii(struct usbnet *dev)
int ret;
ret = asix_write_cmd(dev, AX_CMD_SET_HW_MII, 0x0000, 0, 0, NULL);
if (ret < 0)
- deverr(dev, "Failed to enable hardware MII access");
+ netdev_err(dev->net, "Failed to enable hardware MII access\n");
return ret;
}
@@ -436,13 +438,14 @@ static inline int asix_get_phy_addr(struct usbnet *dev)
u8 buf[2];
int ret = asix_read_cmd(dev, AX_CMD_READ_PHY_ID, 0, 0, 2, buf);
- devdbg(dev, "asix_get_phy_addr()");
+ netdev_dbg(dev->net, "asix_get_phy_addr()\n");
if (ret < 0) {
- deverr(dev, "Error reading PHYID register: %02x", ret);
+ netdev_err(dev->net, "Error reading PHYID register: %02x\n", ret);
goto out;
}
- devdbg(dev, "asix_get_phy_addr() returning 0x%04x", *((__le16 *)buf));
+ netdev_dbg(dev->net, "asix_get_phy_addr() returning 0x%04x\n",
+ *((__le16 *)buf));
ret = buf[1];
out:
@@ -455,7 +458,7 @@ static int asix_sw_reset(struct usbnet *dev, u8 flags)
ret = asix_write_cmd(dev, AX_CMD_SW_RESET, flags, 0, 0, NULL);
if (ret < 0)
- deverr(dev,"Failed to send software reset: %02x", ret);
+ netdev_err(dev->net, "Failed to send software reset: %02x\n", ret);
return ret;
}
@@ -466,7 +469,7 @@ static u16 asix_read_rx_ctl(struct usbnet *dev)
int ret = asix_read_cmd(dev, AX_CMD_READ_RX_CTL, 0, 0, 2, &v);
if (ret < 0) {
- deverr(dev, "Error reading RX_CTL register: %02x", ret);
+ netdev_err(dev->net, "Error reading RX_CTL register: %02x\n", ret);
goto out;
}
ret = le16_to_cpu(v);
@@ -478,11 +481,11 @@ static int asix_write_rx_ctl(struct usbnet *dev, u16 mode)
{
int ret;
- devdbg(dev,"asix_write_rx_ctl() - mode = 0x%04x", mode);
+ netdev_dbg(dev->net, "asix_write_rx_ctl() - mode = 0x%04x\n", mode);
ret = asix_write_cmd(dev, AX_CMD_WRITE_RX_CTL, mode, 0, 0, NULL);
if (ret < 0)
- deverr(dev, "Failed to write RX_CTL mode to 0x%04x: %02x",
- mode, ret);
+ netdev_err(dev->net, "Failed to write RX_CTL mode to 0x%04x: %02x\n",
+ mode, ret);
return ret;
}
@@ -493,7 +496,8 @@ static u16 asix_read_medium_status(struct usbnet *dev)
int ret = asix_read_cmd(dev, AX_CMD_READ_MEDIUM_STATUS, 0, 0, 2, &v);
if (ret < 0) {
- deverr(dev, "Error reading Medium Status register: %02x", ret);
+ netdev_err(dev->net, "Error reading Medium Status register: %02x\n",
+ ret);
goto out;
}
ret = le16_to_cpu(v);
@@ -505,11 +509,11 @@ static int asix_write_medium_mode(struct usbnet *dev, u16 mode)
{
int ret;
- devdbg(dev,"asix_write_medium_mode() - mode = 0x%04x", mode);
+ netdev_dbg(dev->net, "asix_write_medium_mode() - mode = 0x%04x\n", mode);
ret = asix_write_cmd(dev, AX_CMD_WRITE_MEDIUM_MODE, mode, 0, 0, NULL);
if (ret < 0)
- deverr(dev, "Failed to write Medium Mode mode to 0x%04x: %02x",
- mode, ret);
+ netdev_err(dev->net, "Failed to write Medium Mode mode to 0x%04x: %02x\n",
+ mode, ret);
return ret;
}
@@ -518,11 +522,11 @@ static int asix_write_gpio(struct usbnet *dev, u16 value, int sleep)
{
int ret;
- devdbg(dev,"asix_write_gpio() - value = 0x%04x", value);
+ netdev_dbg(dev->net, "asix_write_gpio() - value = 0x%04x\n", value);
ret = asix_write_cmd(dev, AX_CMD_WRITE_GPIOS, value, 0, 0, NULL);
if (ret < 0)
- deverr(dev, "Failed to write GPIO value 0x%04x: %02x",
- value, ret);
+ netdev_err(dev->net, "Failed to write GPIO value 0x%04x: %02x\n",
+ value, ret);
if (sleep)
msleep(sleep);
@@ -588,7 +592,8 @@ static int asix_mdio_read(struct net_device *netdev, int phy_id, int loc)
asix_set_hw_mii(dev);
mutex_unlock(&dev->phy_mutex);
- devdbg(dev, "asix_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x", phy_id, loc, le16_to_cpu(res));
+ netdev_dbg(dev->net, "asix_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
+ phy_id, loc, le16_to_cpu(res));
return le16_to_cpu(res);
}
@@ -599,7 +604,8 @@ asix_mdio_write(struct net_device *netdev, int phy_id, int loc, int val)
struct usbnet *dev = netdev_priv(netdev);
__le16 res = cpu_to_le16(val);
- devdbg(dev, "asix_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x", phy_id, loc, val);
+ netdev_dbg(dev->net, "asix_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x\n",
+ phy_id, loc, val);
mutex_lock(&dev->phy_mutex);
asix_set_sw_mii(dev);
asix_write_cmd(dev, AX_CMD_WRITE_MII_REG, phy_id, (__u16)loc, 2, &res);
@@ -800,7 +806,8 @@ static int ax88172_link_reset(struct usbnet *dev)
if (ecmd.duplex != DUPLEX_FULL)
mode |= ~AX88172_MEDIUM_FD;
- devdbg(dev, "ax88172_link_reset() speed: %d duplex: %d setting mode to 0x%04x", ecmd.speed, ecmd.duplex, mode);
+ netdev_dbg(dev->net, "ax88172_link_reset() speed: %d duplex: %d setting mode to 0x%04x\n",
+ ecmd.speed, ecmd.duplex, mode);
asix_write_medium_mode(dev, mode);
@@ -902,7 +909,8 @@ static int ax88772_link_reset(struct usbnet *dev)
if (ecmd.duplex != DUPLEX_FULL)
mode &= ~AX_MEDIUM_FD;
- devdbg(dev, "ax88772_link_reset() speed: %d duplex: %d setting mode to 0x%04x", ecmd.speed, ecmd.duplex, mode);
+ netdev_dbg(dev->net, "ax88772_link_reset() speed: %d duplex: %d setting mode to 0x%04x\n",
+ ecmd.speed, ecmd.duplex, mode);
asix_write_medium_mode(dev, mode);
@@ -1059,10 +1067,10 @@ static int marvell_phy_init(struct usbnet *dev)
struct asix_data *data = (struct asix_data *)&dev->data;
u16 reg;
- devdbg(dev,"marvell_phy_init()");
+ netdev_dbg(dev->net, "marvell_phy_init()\n");
reg = asix_mdio_read(dev->net, dev->mii.phy_id, MII_MARVELL_STATUS);
- devdbg(dev,"MII_MARVELL_STATUS = 0x%04x", reg);
+ netdev_dbg(dev->net, "MII_MARVELL_STATUS = 0x%04x\n", reg);
asix_mdio_write(dev->net, dev->mii.phy_id, MII_MARVELL_CTRL,
MARVELL_CTRL_RXDELAY | MARVELL_CTRL_TXDELAY);
@@ -1070,7 +1078,7 @@ static int marvell_phy_init(struct usbnet *dev)
if (data->ledmode) {
reg = asix_mdio_read(dev->net, dev->mii.phy_id,
MII_MARVELL_LED_CTRL);
- devdbg(dev,"MII_MARVELL_LED_CTRL (1) = 0x%04x", reg);
+ netdev_dbg(dev->net, "MII_MARVELL_LED_CTRL (1) = 0x%04x\n", reg);
reg &= 0xf8ff;
reg |= (1 + 0x0100);
@@ -1079,7 +1087,7 @@ static int marvell_phy_init(struct usbnet *dev)
reg = asix_mdio_read(dev->net, dev->mii.phy_id,
MII_MARVELL_LED_CTRL);
- devdbg(dev,"MII_MARVELL_LED_CTRL (2) = 0x%04x", reg);
+ netdev_dbg(dev->net, "MII_MARVELL_LED_CTRL (2) = 0x%04x\n", reg);
reg &= 0xfc0f;
}
@@ -1090,7 +1098,7 @@ static int marvell_led_status(struct usbnet *dev, u16 speed)
{
u16 reg = asix_mdio_read(dev->net, dev->mii.phy_id, MARVELL_LED_MANUAL);
- devdbg(dev, "marvell_led_status() read 0x%04x", reg);
+ netdev_dbg(dev->net, "marvell_led_status() read 0x%04x\n", reg);
/* Clear out the center LED bits - 0x03F0 */
reg &= 0xfc0f;
@@ -1106,7 +1114,7 @@ static int marvell_led_status(struct usbnet *dev, u16 speed)
reg |= 0x02f0;
}
- devdbg(dev, "marvell_led_status() writing 0x%04x", reg);
+ netdev_dbg(dev->net, "marvell_led_status() writing 0x%04x\n", reg);
asix_mdio_write(dev->net, dev->mii.phy_id, MARVELL_LED_MANUAL, reg);
return 0;
@@ -1118,7 +1126,7 @@ static int ax88178_link_reset(struct usbnet *dev)
struct ethtool_cmd ecmd;
struct asix_data *data = (struct asix_data *)&dev->data;
- devdbg(dev,"ax88178_link_reset()");
+ netdev_dbg(dev->net, "ax88178_link_reset()\n");
mii_check_media(&dev->mii, 1, 1);
mii_ethtool_gset(&dev->mii, &ecmd);
@@ -1138,7 +1146,8 @@ static int ax88178_link_reset(struct usbnet *dev)
else
mode &= ~AX_MEDIUM_FD;
- devdbg(dev, "ax88178_link_reset() speed: %d duplex: %d setting mode to 0x%04x", ecmd.speed, ecmd.duplex, mode);
+ netdev_dbg(dev->net, "ax88178_link_reset() speed: %d duplex: %d setting mode to 0x%04x\n",
+ ecmd.speed, ecmd.duplex, mode);
asix_write_medium_mode(dev, mode);
@@ -1188,7 +1197,7 @@ static int ax88178_change_mtu(struct net_device *net, int new_mtu)
struct usbnet *dev = netdev_priv(net);
int ll_mtu = new_mtu + net->hard_header_len + 4;
- devdbg(dev, "ax88178_change_mtu() new_mtu=%d", new_mtu);
+ netdev_dbg(dev->net, "ax88178_change_mtu() new_mtu=%d\n", new_mtu);
if (new_mtu <= 0 || ll_mtu > 16384)
return -EINVAL;
diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
index c337ffc..a4a85a6 100644
--- a/drivers/net/usb/cdc_eem.c
+++ b/drivers/net/usb/cdc_eem.c
@@ -73,7 +73,7 @@ static void eem_linkcmd(struct usbnet *dev, struct sk_buff *skb)
usb_free_urb(urb);
fail:
dev_kfree_skb(skb);
- devwarn(dev, "link cmd failure\n");
+ netdev_warn(dev->net, "link cmd failure\n");
return;
}
}
@@ -212,7 +212,8 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
* b15: 1 (EEM command)
*/
if (header & BIT(14)) {
- devdbg(dev, "reserved command %04x\n", header);
+ netdev_dbg(dev->net, "reserved command %04x\n",
+ header);
continue;
}
@@ -255,8 +256,9 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
case 1: /* Echo response */
case 5: /* Tickle */
default: /* reserved */
- devwarn(dev, "unexpected link command %d\n",
- bmEEMCmd);
+ netdev_warn(dev->net,
+ "unexpected link command %d\n",
+ bmEEMCmd);
continue;
}
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 4f27f02..7e5a752 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -340,9 +340,9 @@ EXPORT_SYMBOL_GPL(usbnet_cdc_unbind);
static void dumpspeed(struct usbnet *dev, __le32 *speeds)
{
if (netif_msg_timer(dev))
- devinfo(dev, "link speeds: %u kbps up, %u kbps down",
- __le32_to_cpu(speeds[0]) / 1000,
- __le32_to_cpu(speeds[1]) / 1000);
+ netdev_info(dev->net, "link speeds: %u kbps up, %u kbps down\n",
+ __le32_to_cpu(speeds[0]) / 1000,
+ __le32_to_cpu(speeds[1]) / 1000);
}
static void cdc_status(struct usbnet *dev, struct urb *urb)
@@ -362,8 +362,8 @@ static void cdc_status(struct usbnet *dev, struct urb *urb)
switch (event->bNotificationType) {
case USB_CDC_NOTIFY_NETWORK_CONNECTION:
if (netif_msg_timer(dev))
- devdbg(dev, "CDC: carrier %s",
- event->wValue ? "on" : "off");
+ netdev_dbg(dev->net, "CDC: carrier %s\n",
+ event->wValue ? "on" : "off");
if (event->wValue)
netif_carrier_on(dev->net);
else
@@ -371,8 +371,8 @@ static void cdc_status(struct usbnet *dev, struct urb *urb)
break;
case USB_CDC_NOTIFY_SPEED_CHANGE: /* tx/rx rates */
if (netif_msg_timer(dev))
- devdbg(dev, "CDC: speed change (len %d)",
- urb->actual_length);
+ netdev_dbg(dev->net, "CDC: speed change (len %d)\n",
+ urb->actual_length);
if (urb->actual_length != (sizeof *event + 8))
set_bit(EVENT_STS_SPLIT, &dev->flags);
else
@@ -382,8 +382,8 @@ static void cdc_status(struct usbnet *dev, struct urb *urb)
* but there are no standard formats for the response data.
*/
default:
- deverr(dev, "CDC: unexpected notification %02x!",
- event->bNotificationType);
+ netdev_err(dev->net, "CDC: unexpected notification %02x!\n",
+ event->bNotificationType);
break;
}
}
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c
index c820fec..2693397 100644
--- a/drivers/net/usb/dm9601.c
+++ b/drivers/net/usb/dm9601.c
@@ -58,7 +58,7 @@ static int dm_read(struct usbnet *dev, u8 reg, u16 length, void *data)
void *buf;
int err = -ENOMEM;
- devdbg(dev, "dm_read() reg=0x%02x length=%d", reg, length);
+ netdev_dbg(dev->net, "dm_read() reg=0x%02x length=%d\n", reg, length);
buf = kmalloc(length, GFP_KERNEL);
if (!buf)
@@ -89,7 +89,7 @@ static int dm_write(struct usbnet *dev, u8 reg, u16 length, void *data)
void *buf = NULL;
int err = -ENOMEM;
- devdbg(dev, "dm_write() reg=0x%02x, length=%d", reg, length);
+ netdev_dbg(dev->net, "dm_write() reg=0x%02x, length=%d\n", reg, length);
if (data) {
buf = kmalloc(length, GFP_KERNEL);
@@ -112,7 +112,8 @@ static int dm_write(struct usbnet *dev, u8 reg, u16 length, void *data)
static int dm_write_reg(struct usbnet *dev, u8 reg, u8 value)
{
- devdbg(dev, "dm_write_reg() reg=0x%02x, value=0x%02x", reg, value);
+ netdev_dbg(dev->net, "dm_write_reg() reg=0x%02x, value=0x%02x\n",
+ reg, value);
return usb_control_msg(dev->udev,
usb_sndctrlpipe(dev->udev, 0),
DM_WRITE_REG,
@@ -142,13 +143,13 @@ static void dm_write_async_helper(struct usbnet *dev, u8 reg, u8 value,
urb = usb_alloc_urb(0, GFP_ATOMIC);
if (!urb) {
- deverr(dev, "Error allocating URB in dm_write_async_helper!");
+ netdev_err(dev->net, "Error allocating URB in dm_write_async_helper!\n");
return;
}
req = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
if (!req) {
- deverr(dev, "Failed to allocate memory for control request");
+ netdev_err(dev->net, "Failed to allocate memory for control request\n");
usb_free_urb(urb);
return;
}
@@ -166,8 +167,8 @@ static void dm_write_async_helper(struct usbnet *dev, u8 reg, u8 value,
status = usb_submit_urb(urb, GFP_ATOMIC);
if (status < 0) {
- deverr(dev, "Error submitting the control message: status=%d",
- status);
+ netdev_err(dev->net, "Error submitting the control message: status=%d\n",
+ status);
kfree(req);
usb_free_urb(urb);
}
@@ -175,15 +176,15 @@ static void dm_write_async_helper(struct usbnet *dev, u8 reg, u8 value,
static void dm_write_async(struct usbnet *dev, u8 reg, u16 length, void *data)
{
- devdbg(dev, "dm_write_async() reg=0x%02x length=%d", reg, length);
+ netdev_dbg(dev->net, "dm_write_async() reg=0x%02x length=%d\n", reg, length);
dm_write_async_helper(dev, reg, 0, length, data);
}
static void dm_write_reg_async(struct usbnet *dev, u8 reg, u8 value)
{
- devdbg(dev, "dm_write_reg_async() reg=0x%02x value=0x%02x",
- reg, value);
+ netdev_dbg(dev->net, "dm_write_reg_async() reg=0x%02x value=0x%02x\n",
+ reg, value);
dm_write_async_helper(dev, reg, value, 0, NULL);
}
@@ -211,7 +212,7 @@ static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *valu
}
if (i == DM_TIMEOUT) {
- deverr(dev, "%s read timed out!", phy ? "phy" : "eeprom");
+ netdev_err(dev->net, "%s read timed out!\n", phy ? "phy" : "eeprom");
ret = -EIO;
goto out;
}
@@ -219,8 +220,8 @@ static int dm_read_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 *valu
dm_write_reg(dev, DM_SHARED_CTRL, 0x0);
ret = dm_read(dev, DM_SHARED_DATA, 2, value);
- devdbg(dev, "read shared %d 0x%02x returned 0x%04x, %d",
- phy, reg, *value, ret);
+ netdev_dbg(dev->net, "read shared %d 0x%02x returned 0x%04x, %d\n",
+ phy, reg, *value, ret);
out:
mutex_unlock(&dev->phy_mutex);
@@ -254,7 +255,7 @@ static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 valu
}
if (i == DM_TIMEOUT) {
- deverr(dev, "%s write timed out!", phy ? "phy" : "eeprom");
+ netdev_err(dev->net, "%s write timed out!\n", phy ? "phy" : "eeprom");
ret = -EIO;
goto out;
}
@@ -304,15 +305,15 @@ static int dm9601_mdio_read(struct net_device *netdev, int phy_id, int loc)
__le16 res;
if (phy_id) {
- devdbg(dev, "Only internal phy supported");
+ netdev_dbg(dev->net, "Only internal phy supported\n");
return 0;
}
dm_read_shared_word(dev, 1, loc, &res);
- devdbg(dev,
- "dm9601_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x",
- phy_id, loc, le16_to_cpu(res));
+ netdev_dbg(dev->net,
+ "dm9601_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
+ phy_id, loc, le16_to_cpu(res));
return le16_to_cpu(res);
}
@@ -324,12 +325,12 @@ static void dm9601_mdio_write(struct net_device *netdev, int phy_id, int loc,
__le16 res = cpu_to_le16(val);
if (phy_id) {
- devdbg(dev, "Only internal phy supported");
+ netdev_dbg(dev->net, "Only internal phy supported\n");
return;
}
- devdbg(dev,"dm9601_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x",
- phy_id, loc, val);
+ netdev_dbg(dev->net, "dm9601_mdio_write() phy_id=0x%02x, loc=0x%02x, val=0x%04x\n",
+ phy_id, loc, val);
dm_write_shared_word(dev, 1, loc, res);
}
@@ -592,7 +593,7 @@ static void dm9601_status(struct usbnet *dev, struct urb *urb)
}
else
netif_carrier_off(dev->net);
- devdbg(dev, "Link Status is: %d", link);
+ netdev_dbg(dev->net, "Link Status is: %d\n", link);
}
}
@@ -603,8 +604,8 @@ static int dm9601_link_reset(struct usbnet *dev)
mii_check_media(&dev->mii, 1, 1);
mii_ethtool_gset(&dev->mii, &ecmd);
- devdbg(dev, "link_reset() speed: %d duplex: %d",
- ecmd.speed, ecmd.duplex);
+ netdev_dbg(dev->net, "link_reset() speed: %d duplex: %d\n",
+ ecmd.speed, ecmd.duplex);
return 0;
}
diff --git a/drivers/net/usb/int51x1.c b/drivers/net/usb/int51x1.c
index 9ab5c19..3c228df 100644
--- a/drivers/net/usb/int51x1.c
+++ b/drivers/net/usb/int51x1.c
@@ -51,7 +51,7 @@ static int int51x1_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
int len;
if (!(pskb_may_pull(skb, INT51X1_HEADER_SIZE))) {
- deverr(dev, "unexpected tiny rx frame");
+ netdev_err(dev->net, "unexpected tiny rx frame\n");
return 0;
}
@@ -138,25 +138,25 @@ static void int51x1_set_multicast(struct net_device *netdev)
if (netdev->flags & IFF_PROMISC) {
/* do not expect to see traffic of other PLCs */
filter |= PACKET_TYPE_PROMISCUOUS;
- devinfo(dev, "promiscuous mode enabled");
+ netdev_info(dev->net, "promiscuous mode enabled\n");
} else if (!netdev_mc_empty(netdev) ||
(netdev->flags & IFF_ALLMULTI)) {
filter |= PACKET_TYPE_ALL_MULTICAST;
- devdbg(dev, "receive all multicast enabled");
+ netdev_dbg(dev->net, "receive all multicast enabled\n");
} else {
/* ~PROMISCUOUS, ~MULTICAST */
- devdbg(dev, "receive own packets only");
+ netdev_dbg(dev->net, "receive own packets only\n");
}
urb = usb_alloc_urb(0, GFP_ATOMIC);
if (!urb) {
- devwarn(dev, "Error allocating URB");
+ netdev_warn(dev->net, "Error allocating URB\n");
return;
}
req = kmalloc(sizeof(*req), GFP_ATOMIC);
if (!req) {
- devwarn(dev, "Error allocating control msg");
+ netdev_warn(dev->net, "Error allocating control msg\n");
goto out;
}
@@ -173,7 +173,8 @@ static void int51x1_set_multicast(struct net_device *netdev)
status = usb_submit_urb(urb, GFP_ATOMIC);
if (status < 0) {
- devwarn(dev, "Error submitting control msg, sts=%d", status);
+ netdev_warn(dev->net, "Error submitting control msg, sts=%d\n",
+ status);
goto out1;
}
return;
diff --git a/drivers/net/usb/net1080.c b/drivers/net/usb/net1080.c
index aeb1ab0..aa078f3 100644
--- a/drivers/net/usb/net1080.c
+++ b/drivers/net/usb/net1080.c
@@ -205,23 +205,24 @@ static inline void nc_dump_usbctl(struct usbnet *dev, u16 usbctl)
{
if (!netif_msg_link(dev))
return;
- devdbg(dev, "net1080 %s-%s usbctl 0x%x:%s%s%s%s%s;"
- " this%s%s;"
- " other%s%s; r/o 0x%x",
- dev->udev->bus->bus_name, dev->udev->devpath,
- usbctl,
- (usbctl & USBCTL_ENABLE_LANG) ? " lang" : "",
- (usbctl & USBCTL_ENABLE_MFGR) ? " mfgr" : "",
- (usbctl & USBCTL_ENABLE_PROD) ? " prod" : "",
- (usbctl & USBCTL_ENABLE_SERIAL) ? " serial" : "",
- (usbctl & USBCTL_ENABLE_DEFAULTS) ? " defaults" : "",
-
- (usbctl & USBCTL_FLUSH_OTHER) ? " FLUSH" : "",
- (usbctl & USBCTL_DISCONN_OTHER) ? " DIS" : "",
- (usbctl & USBCTL_FLUSH_THIS) ? " FLUSH" : "",
- (usbctl & USBCTL_DISCONN_THIS) ? " DIS" : "",
- usbctl & ~USBCTL_WRITABLE_MASK
- );
+ netdev_dbg(dev->net, "net1080 %s-%s usbctl 0x%x:%s;"
+ " this%s;"
+ " other%s; r/o 0x%x\n",
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ usbctl,
+ (usbctl & USBCTL_ENABLE_LANG) ? " lang" :
+ (usbctl & USBCTL_ENABLE_MFGR) ? " mfgr" :
+ (usbctl & USBCTL_ENABLE_PROD) ? " prod" :
+ (usbctl & USBCTL_ENABLE_SERIAL) ? " serial" :
+ (usbctl & USBCTL_ENABLE_DEFAULTS) ? " defaults" : "",
+
+ (usbctl & USBCTL_FLUSH_OTHER) ? " FLUSH" :
+ (usbctl & USBCTL_DISCONN_OTHER) ? " DIS" : "",
+
+ (usbctl & USBCTL_FLUSH_THIS) ? " FLUSH" :
+ (usbctl & USBCTL_DISCONN_THIS) ? " DIS" : "",
+
+ usbctl & ~USBCTL_WRITABLE_MASK);
}
/*-------------------------------------------------------------------------*/
@@ -250,28 +251,25 @@ static inline void nc_dump_status(struct usbnet *dev, u16 status)
{
if (!netif_msg_link(dev))
return;
- devdbg(dev, "net1080 %s-%s status 0x%x:"
- " this (%c) PKT=%d%s%s%s;"
- " other PKT=%d%s%s%s; unspec 0x%x",
- dev->udev->bus->bus_name, dev->udev->devpath,
- status,
-
- // XXX the packet counts don't seem right
- // (1 at reset, not 0); maybe UNSPEC too
-
- (status & STATUS_PORT_A) ? 'A' : 'B',
- STATUS_PACKETS_THIS(status),
- (status & STATUS_CONN_THIS) ? " CON" : "",
- (status & STATUS_SUSPEND_THIS) ? " SUS" : "",
- (status & STATUS_MAILBOX_THIS) ? " MBOX" : "",
-
- STATUS_PACKETS_OTHER(status),
- (status & STATUS_CONN_OTHER) ? " CON" : "",
- (status & STATUS_SUSPEND_OTHER) ? " SUS" : "",
- (status & STATUS_MAILBOX_OTHER) ? " MBOX" : "",
-
- status & STATUS_UNSPEC_MASK
- );
+ netdev_dbg(dev->net, "net1080 %s-%s status 0x%x: this (%c) PKT=%d%s; other PKT=%d%s; unspec 0x%x\n",
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ status,
+
+ // XXX the packet counts don't seem right
+ // (1 at reset, not 0); maybe UNSPEC too
+
+ (status & STATUS_PORT_A) ? 'A' : 'B',
+ STATUS_PACKETS_THIS(status),
+ (status & STATUS_CONN_THIS) ? " CON" :
+ (status & STATUS_SUSPEND_THIS) ? " SUS" :
+ (status & STATUS_MAILBOX_THIS) ? " MBOX" : "",
+
+ STATUS_PACKETS_OTHER(status),
+ (status & STATUS_CONN_OTHER) ? " CON" :
+ (status & STATUS_SUSPEND_OTHER) ? " SUS" :
+ (status & STATUS_MAILBOX_OTHER) ? " MBOX" : "",
+
+ status & STATUS_UNSPEC_MASK);
}
/*-------------------------------------------------------------------------*/
@@ -287,9 +285,9 @@ static inline void nc_dump_status(struct usbnet *dev, u16 status)
static inline void nc_dump_ttl(struct usbnet *dev, u16 ttl)
{
if (netif_msg_link(dev))
- devdbg(dev, "net1080 %s-%s ttl 0x%x this = %d, other = %d",
- dev->udev->bus->bus_name, dev->udev->devpath,
- ttl, TTL_THIS(ttl), TTL_OTHER(ttl));
+ netdev_dbg(dev->net, "net1080 %s-%s ttl 0x%x this = %d, other = %d\n",
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ ttl, TTL_THIS(ttl), TTL_OTHER(ttl));
}
/*-------------------------------------------------------------------------*/
@@ -335,10 +333,9 @@ static int net1080_reset(struct usbnet *dev)
dbg("%s: assigned TTL, %d ms", dev->net->name, NC_READ_TTL_MS);
if (netif_msg_link(dev))
- devinfo(dev, "port %c, peer %sconnected",
- (status & STATUS_PORT_A) ? 'A' : 'B',
- (status & STATUS_CONN_OTHER) ? "" : "dis"
- );
+ netdev_info(dev->net, "port %c, peer %sconnected\n",
+ (status & STATUS_PORT_A) ? 'A' : 'B',
+ (status & STATUS_CONN_OTHER) ? "" : "dis");
retval = 0;
done:
@@ -416,7 +413,7 @@ static void nc_ensure_sync(struct usbnet *dev)
}
if (netif_msg_rx_err(dev))
- devdbg(dev, "flush net1080; too many framing errors");
+ netdev_dbg(dev->net, "flush net1080; too many framing errors\n");
dev->frame_errors = 0;
}
}
@@ -486,8 +483,8 @@ static int net1080_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
return 0;
}
#if 0
- devdbg(dev, "frame <rx h %d p %d id %d", header->hdr_len,
- header->packet_len, header->packet_id);
+ netdev_dbg(dev->net, "frame <rx h %d p %d id %d\n", header->hdr_len,
+ header->packet_len, header->packet_id);
#endif
dev->frame_errors = 0;
return 1;
@@ -547,9 +544,9 @@ encapsulate:
trailer = (struct nc_trailer *) skb_put(skb, sizeof *trailer);
put_unaligned(header->packet_id, &trailer->packet_id);
#if 0
- devdbg(dev, "frame >tx h %d p %d id %d",
- header->hdr_len, header->packet_len,
- header->packet_id);
+ netdev_dbg(dev->net, "frame >tx h %d p %d id %d\n",
+ header->hdr_len, header->packet_len,
+ header->packet_id);
#endif
return skb;
}
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 490fa8f..f01f024 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -57,8 +57,8 @@
*/
void rndis_status(struct usbnet *dev, struct urb *urb)
{
- devdbg(dev, "rndis status urb, len %d stat %d",
- urb->actual_length, urb->status);
+ netdev_dbg(dev->net, "rndis status urb, len %d stat %d\n",
+ urb->actual_length, urb->status);
// FIXME for keepalives, respond immediately (asynchronously)
// if not an RNDIS status, do like cdc_status(dev,urb) does
}
@@ -497,9 +497,9 @@ int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
skb->len < msg_len ||
(data_offset + data_len + 8) > msg_len)) {
dev->net->stats.rx_frame_errors++;
- devdbg(dev, "bad rndis message %d/%d/%d/%d, len %d",
- le32_to_cpu(hdr->msg_type),
- msg_len, data_offset, data_len, skb->len);
+ netdev_dbg(dev->net, "bad rndis message %d/%d/%d/%d, len %d\n",
+ le32_to_cpu(hdr->msg_type),
+ msg_len, data_offset, data_len, skb->len);
return 0;
}
skb_pull(skb, 8 + data_offset);
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 48555d0..d4cbcef 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -78,7 +78,7 @@ static int smsc95xx_read_reg(struct usbnet *dev, u32 index, u32 *data)
00, index, buf, 4, USB_CTRL_GET_TIMEOUT);
if (unlikely(ret < 0))
- devwarn(dev, "Failed to read register index 0x%08x", index);
+ netdev_warn(dev->net, "Failed to read register index 0x%08x\n", index);
le32_to_cpus(buf);
*data = *buf;
@@ -106,7 +106,7 @@ static int smsc95xx_write_reg(struct usbnet *dev, u32 index, u32 data)
00, index, buf, 4, USB_CTRL_SET_TIMEOUT);
if (unlikely(ret < 0))
- devwarn(dev, "Failed to write register index 0x%08x", index);
+ netdev_warn(dev->net, "Failed to write register index 0x%08x\n", index);
kfree(buf);
@@ -138,7 +138,7 @@ static int smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
/* confirm MII not busy */
if (smsc95xx_phy_wait_not_busy(dev)) {
- devwarn(dev, "MII is busy in smsc95xx_mdio_read");
+ netdev_warn(dev->net, "MII is busy in smsc95xx_mdio_read\n");
mutex_unlock(&dev->phy_mutex);
return -EIO;
}
@@ -150,7 +150,7 @@ static int smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
smsc95xx_write_reg(dev, MII_ADDR, addr);
if (smsc95xx_phy_wait_not_busy(dev)) {
- devwarn(dev, "Timed out reading MII reg %02X", idx);
+ netdev_warn(dev->net, "Timed out reading MII reg %02X\n", idx);
mutex_unlock(&dev->phy_mutex);
return -EIO;
}
@@ -172,7 +172,7 @@ static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
/* confirm MII not busy */
if (smsc95xx_phy_wait_not_busy(dev)) {
- devwarn(dev, "MII is busy in smsc95xx_mdio_write");
+ netdev_warn(dev->net, "MII is busy in smsc95xx_mdio_write\n");
mutex_unlock(&dev->phy_mutex);
return;
}
@@ -187,7 +187,7 @@ static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
smsc95xx_write_reg(dev, MII_ADDR, addr);
if (smsc95xx_phy_wait_not_busy(dev))
- devwarn(dev, "Timed out writing MII reg %02X", idx);
+ netdev_warn(dev->net, "Timed out writing MII reg %02X\n", idx);
mutex_unlock(&dev->phy_mutex);
}
@@ -205,7 +205,7 @@ static int smsc95xx_wait_eeprom(struct usbnet *dev)
} while (!time_after(jiffies, start_time + HZ));
if (val & (E2P_CMD_TIMEOUT_ | E2P_CMD_BUSY_)) {
- devwarn(dev, "EEPROM read operation timeout");
+ netdev_warn(dev->net, "EEPROM read operation timeout\n");
return -EIO;
}
@@ -226,7 +226,7 @@ static int smsc95xx_eeprom_confirm_not_busy(struct usbnet *dev)
udelay(40);
} while (!time_after(jiffies, start_time + HZ));
- devwarn(dev, "EEPROM is busy");
+ netdev_warn(dev->net, "EEPROM is busy\n");
return -EIO;
}
@@ -308,7 +308,7 @@ static void smsc95xx_async_cmd_callback(struct urb *urb)
int status = urb->status;
if (status < 0)
- devwarn(dev, "async callback failed with %d", status);
+ netdev_warn(dev->net, "async callback failed with %d\n", status);
kfree(usb_context);
usb_free_urb(urb);
@@ -323,13 +323,13 @@ static int smsc95xx_write_reg_async(struct usbnet *dev, u16 index, u32 *data)
urb = usb_alloc_urb(0, GFP_ATOMIC);
if (!urb) {
- devwarn(dev, "Error allocating URB");
+ netdev_warn(dev->net, "Error allocating URB\n");
return -ENOMEM;
}
usb_context = kmalloc(sizeof(struct usb_context), GFP_ATOMIC);
if (usb_context == NULL) {
- devwarn(dev, "Error allocating control msg");
+ netdev_warn(dev->net, "Error allocating control msg\n");
usb_free_urb(urb);
return -ENOMEM;
}
@@ -348,7 +348,8 @@ static int smsc95xx_write_reg_async(struct usbnet *dev, u16 index, u32 *data)
status = usb_submit_urb(urb, GFP_ATOMIC);
if (status < 0) {
- devwarn(dev, "Error submitting control msg, sts=%d", status);
+ netdev_warn(dev->net, "Error submitting control msg, sts=%d\n",
+ status);
kfree(usb_context);
usb_free_urb(urb);
}
@@ -376,12 +377,12 @@ static void smsc95xx_set_multicast(struct net_device *netdev)
if (dev->net->flags & IFF_PROMISC) {
if (netif_msg_drv(dev))
- devdbg(dev, "promiscuous mode enabled");
+ netdev_dbg(dev->net, "promiscuous mode enabled\n");
pdata->mac_cr |= MAC_CR_PRMS_;
pdata->mac_cr &= ~(MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
} else if (dev->net->flags & IFF_ALLMULTI) {
if (netif_msg_drv(dev))
- devdbg(dev, "receive all multicast enabled");
+ netdev_dbg(dev->net, "receive all multicast enabled\n");
pdata->mac_cr |= MAC_CR_MCPAS_;
pdata->mac_cr &= ~(MAC_CR_PRMS_ | MAC_CR_HPFILT_);
} else if (!netdev_mc_empty(dev->net)) {
@@ -401,20 +402,20 @@ static void smsc95xx_set_multicast(struct net_device *netdev)
else
hash_lo |= mask;
} else {
- devwarn(dev, "dmi_addrlen != 6");
+ netdev_warn(dev->net, "dmi_addrlen != 6\n");
}
mc_list = mc_list->next;
}
if (count != ((u32) netdev_mc_count(dev->net)))
- devwarn(dev, "mc_count != dev->mc_count");
+ netdev_warn(dev->net, "mc_count != dev->mc_count\n");
if (netif_msg_drv(dev))
- devdbg(dev, "HASHH=0x%08X, HASHL=0x%08X", hash_hi,
- hash_lo);
+ netdev_dbg(dev->net, "HASHH=0x%08X, HASHL=0x%08X\n",
+ hash_hi, hash_lo);
} else {
if (netif_msg_drv(dev))
- devdbg(dev, "receive own packets only");
+ netdev_dbg(dev->net, "receive own packets only\n");
pdata->mac_cr &=
~(MAC_CR_PRMS_ | MAC_CR_MCPAS_ | MAC_CR_HPFILT_);
}
@@ -434,7 +435,7 @@ static void smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
int ret = smsc95xx_read_reg(dev, AFC_CFG, &afc_cfg);
if (ret < 0) {
- devwarn(dev, "error reading AFC_CFG");
+ netdev_warn(dev->net, "error reading AFC_CFG\n");
return;
}
@@ -452,12 +453,12 @@ static void smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
afc_cfg &= ~0xF;
if (netif_msg_link(dev))
- devdbg(dev, "rx pause %s, tx pause %s",
- (cap & FLOW_CTRL_RX ? "enabled" : "disabled"),
- (cap & FLOW_CTRL_TX ? "enabled" : "disabled"));
+ netdev_dbg(dev->net, "rx pause %s, tx pause %s\n",
+ cap & FLOW_CTRL_RX ? "enabled" : "disabled",
+ cap & FLOW_CTRL_TX ? "enabled" : "disabled");
} else {
if (netif_msg_link(dev))
- devdbg(dev, "half duplex");
+ netdev_dbg(dev->net, "half duplex\n");
flow = 0;
afc_cfg |= 0xF;
}
@@ -486,8 +487,8 @@ static int smsc95xx_link_reset(struct usbnet *dev)
rmtadv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_LPA);
if (netif_msg_link(dev))
- devdbg(dev, "speed: %d duplex: %d lcladv: %04x rmtadv: %04x",
- ecmd.speed, ecmd.duplex, lcladv, rmtadv);
+ netdev_dbg(dev->net, "speed: %d duplex: %d lcladv: %04x rmtadv: %04x\n",
+ ecmd.speed, ecmd.duplex, lcladv, rmtadv);
spin_lock_irqsave(&pdata->mac_cr_lock, flags);
if (ecmd.duplex != DUPLEX_FULL) {
@@ -511,7 +512,8 @@ static void smsc95xx_status(struct usbnet *dev, struct urb *urb)
u32 intdata;
if (urb->actual_length != 4) {
- devwarn(dev, "unexpected urb length %d", urb->actual_length);
+ netdev_warn(dev->net, "unexpected urb length %d\n",
+ urb->actual_length);
return;
}
@@ -519,12 +521,13 @@ static void smsc95xx_status(struct usbnet *dev, struct urb *urb)
le32_to_cpus(&intdata);
if (netif_msg_link(dev))
- devdbg(dev, "intdata: 0x%08X", intdata);
+ netdev_dbg(dev->net, "intdata: 0x%08X\n", intdata);
if (intdata & INT_ENP_PHY_INT_)
usbnet_defer_kevent(dev, EVENT_LINK_RESET);
else
- devwarn(dev, "unexpected interrupt, intdata=0x%08X", intdata);
+ netdev_warn(dev->net, "unexpected interrupt, intdata=0x%08X\n",
+ intdata);
}
/* Enable or disable Tx & Rx checksum offload engines */
@@ -534,7 +537,7 @@ static int smsc95xx_set_csums(struct usbnet *dev)
u32 read_buf;
int ret = smsc95xx_read_reg(dev, COE_CR, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read COE_CR: %d", ret);
+ netdev_warn(dev->net, "Failed to read COE_CR: %d\n", ret);
return ret;
}
@@ -550,12 +553,12 @@ static int smsc95xx_set_csums(struct usbnet *dev)
ret = smsc95xx_write_reg(dev, COE_CR, read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write COE_CR: %d", ret);
+ netdev_warn(dev->net, "Failed to write COE_CR: %d\n", ret);
return ret;
}
if (netif_msg_hw(dev))
- devdbg(dev, "COE_CR = 0x%08x", read_buf);
+ netdev_dbg(dev->net, "COE_CR = 0x%08x\n", read_buf);
return 0;
}
@@ -580,8 +583,8 @@ static int smsc95xx_ethtool_set_eeprom(struct net_device *netdev,
struct usbnet *dev = netdev_priv(netdev);
if (ee->magic != LAN95XX_EEPROM_MAGIC) {
- devwarn(dev, "EEPROM: magic value mismatch, magic = 0x%x",
- ee->magic);
+ netdev_warn(dev->net, "EEPROM: magic value mismatch, magic = 0x%x\n",
+ ee->magic);
return -EINVAL;
}
@@ -660,7 +663,7 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
if (is_valid_ether_addr(dev->net->dev_addr)) {
/* eeprom values are valid so use them */
if (netif_msg_ifup(dev))
- devdbg(dev, "MAC address read from EEPROM");
+ netdev_dbg(dev->net, "MAC address read from EEPROM\n");
return;
}
}
@@ -668,7 +671,7 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
/* no eeprom, or eeprom values are invalid. generate random MAC */
random_ether_addr(dev->net->dev_addr);
if (netif_msg_ifup(dev))
- devdbg(dev, "MAC address set to random_ether_addr");
+ netdev_dbg(dev->net, "MAC address set to random_ether_addr\n");
}
static int smsc95xx_set_mac_address(struct usbnet *dev)
@@ -680,13 +683,13 @@ static int smsc95xx_set_mac_address(struct usbnet *dev)
ret = smsc95xx_write_reg(dev, ADDRL, addr_lo);
if (ret < 0) {
- devwarn(dev, "Failed to write ADDRL: %d", ret);
+ netdev_warn(dev->net, "Failed to write ADDRL: %d\n", ret);
return ret;
}
ret = smsc95xx_write_reg(dev, ADDRH, addr_hi);
if (ret < 0) {
- devwarn(dev, "Failed to write ADDRH: %d", ret);
+ netdev_warn(dev->net, "Failed to write ADDRH: %d\n", ret);
return ret;
}
@@ -748,7 +751,7 @@ static int smsc95xx_phy_initialize(struct usbnet *dev)
mii_nway_restart(&dev->mii);
if (netif_msg_ifup(dev))
- devdbg(dev, "phy initialised successfully");
+ netdev_dbg(dev->net, "phy initialised successfully\n");
return 0;
}
@@ -760,13 +763,13 @@ static int smsc95xx_reset(struct usbnet *dev)
int ret = 0, timeout;
if (netif_msg_ifup(dev))
- devdbg(dev, "entering smsc95xx_reset");
+ netdev_dbg(dev->net, "entering smsc95xx_reset\n");
write_buf = HW_CFG_LRST_;
ret = smsc95xx_write_reg(dev, HW_CFG, write_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write HW_CFG_LRST_ bit in HW_CFG "
- "register, ret = %d", ret);
+ netdev_warn(dev->net, "Failed to write HW_CFG_LRST_ bit in HW_CFG register, ret = %d\n",
+ ret);
return ret;
}
@@ -774,7 +777,7 @@ static int smsc95xx_reset(struct usbnet *dev)
do {
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read HW_CFG: %d", ret);
+ netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
msleep(10);
@@ -782,14 +785,14 @@ static int smsc95xx_reset(struct usbnet *dev)
} while ((read_buf & HW_CFG_LRST_) && (timeout < 100));
if (timeout >= 100) {
- devwarn(dev, "timeout waiting for completion of Lite Reset");
+ netdev_warn(dev->net, "timeout waiting for completion of Lite Reset\n");
return ret;
}
write_buf = PM_CTL_PHY_RST_;
ret = smsc95xx_write_reg(dev, PM_CTRL, write_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write PM_CTRL: %d", ret);
+ netdev_warn(dev->net, "Failed to write PM_CTRL: %d\n", ret);
return ret;
}
@@ -797,7 +800,7 @@ static int smsc95xx_reset(struct usbnet *dev)
do {
ret = smsc95xx_read_reg(dev, PM_CTRL, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read PM_CTRL: %d", ret);
+ netdev_warn(dev->net, "Failed to read PM_CTRL: %d\n", ret);
return ret;
}
msleep(10);
@@ -805,7 +808,7 @@ static int smsc95xx_reset(struct usbnet *dev)
} while ((read_buf & PM_CTL_PHY_RST_) && (timeout < 100));
if (timeout >= 100) {
- devwarn(dev, "timeout waiting for PHY Reset");
+ netdev_warn(dev->net, "timeout waiting for PHY Reset\n");
return ret;
}
@@ -816,34 +819,34 @@ static int smsc95xx_reset(struct usbnet *dev)
return ret;
if (netif_msg_ifup(dev))
- devdbg(dev, "MAC Address: %pM", dev->net->dev_addr);
+ netdev_dbg(dev->net, "MAC Address: %pM\n", dev->net->dev_addr);
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read HW_CFG: %d", ret);
+ netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "Read Value from HW_CFG : 0x%08x", read_buf);
+ netdev_dbg(dev->net, "Read Value from HW_CFG : 0x%08x\n", read_buf);
read_buf |= HW_CFG_BIR_;
ret = smsc95xx_write_reg(dev, HW_CFG, read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write HW_CFG_BIR_ bit in HW_CFG "
- "register, ret = %d", ret);
+ netdev_warn(dev->net, "Failed to write HW_CFG_BIR_ bit in HW_CFG register, ret = %d\n",
+ ret);
return ret;
}
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read HW_CFG: %d", ret);
+ netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "Read Value from HW_CFG after writing "
- "HW_CFG_BIR_: 0x%08x", read_buf);
+ netdev_dbg(dev->net, "Read Value from HW_CFG after writing HW_CFG_BIR_: 0x%08x\n",
+ read_buf);
if (!turbo_mode) {
burst_cap = 0;
@@ -857,46 +860,46 @@ static int smsc95xx_reset(struct usbnet *dev)
}
if (netif_msg_ifup(dev))
- devdbg(dev, "rx_urb_size=%ld", (ulong)dev->rx_urb_size);
+ netdev_dbg(dev->net, "rx_urb_size=%ld\n", (ulong)dev->rx_urb_size);
ret = smsc95xx_write_reg(dev, BURST_CAP, burst_cap);
if (ret < 0) {
- devwarn(dev, "Failed to write BURST_CAP: %d", ret);
+ netdev_warn(dev->net, "Failed to write BURST_CAP: %d\n", ret);
return ret;
}
ret = smsc95xx_read_reg(dev, BURST_CAP, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read BURST_CAP: %d", ret);
+ netdev_warn(dev->net, "Failed to read BURST_CAP: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "Read Value from BURST_CAP after writing: 0x%08x",
- read_buf);
+ netdev_dbg(dev->net, "Read Value from BURST_CAP after writing: 0x%08x\n",
+ read_buf);
read_buf = DEFAULT_BULK_IN_DELAY;
ret = smsc95xx_write_reg(dev, BULK_IN_DLY, read_buf);
if (ret < 0) {
- devwarn(dev, "ret = %d", ret);
+ netdev_warn(dev->net, "ret = %d\n", ret);
return ret;
}
ret = smsc95xx_read_reg(dev, BULK_IN_DLY, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read BULK_IN_DLY: %d", ret);
+ netdev_warn(dev->net, "Failed to read BULK_IN_DLY: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "Read Value from BULK_IN_DLY after writing: "
- "0x%08x", read_buf);
+ netdev_dbg(dev->net, "Read Value from BULK_IN_DLY after writing: 0x%08x\n",
+ read_buf);
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read HW_CFG: %d", ret);
+ netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "Read Value from HW_CFG: 0x%08x", read_buf);
+ netdev_dbg(dev->net, "Read Value from HW_CFG: 0x%08x\n", read_buf);
if (turbo_mode)
read_buf |= (HW_CFG_MEF_ | HW_CFG_BCE_);
@@ -908,41 +911,43 @@ static int smsc95xx_reset(struct usbnet *dev)
ret = smsc95xx_write_reg(dev, HW_CFG, read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write HW_CFG register, ret=%d", ret);
+ netdev_warn(dev->net, "Failed to write HW_CFG register, ret=%d\n",
+ ret);
return ret;
}
ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read HW_CFG: %d", ret);
+ netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "Read Value from HW_CFG after writing: 0x%08x",
- read_buf);
+ netdev_dbg(dev->net, "Read Value from HW_CFG after writing: 0x%08x\n",
+ read_buf);
write_buf = 0xFFFFFFFF;
ret = smsc95xx_write_reg(dev, INT_STS, write_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write INT_STS register, ret=%d", ret);
+ netdev_warn(dev->net, "Failed to write INT_STS register, ret=%d\n",
+ ret);
return ret;
}
ret = smsc95xx_read_reg(dev, ID_REV, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read ID_REV: %d", ret);
+ netdev_warn(dev->net, "Failed to read ID_REV: %d\n", ret);
return ret;
}
if (netif_msg_ifup(dev))
- devdbg(dev, "ID_REV = 0x%08x", read_buf);
+ netdev_dbg(dev->net, "ID_REV = 0x%08x\n", read_buf);
/* Configure GPIO pins as LED outputs */
write_buf = LED_GPIO_CFG_SPD_LED | LED_GPIO_CFG_LNK_LED |
LED_GPIO_CFG_FDX_LED;
ret = smsc95xx_write_reg(dev, LED_GPIO_CFG, write_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write LED_GPIO_CFG register, ret=%d",
- ret);
+ netdev_warn(dev->net, "Failed to write LED_GPIO_CFG register, ret=%d\n",
+ ret);
return ret;
}
@@ -950,21 +955,21 @@ static int smsc95xx_reset(struct usbnet *dev)
write_buf = 0;
ret = smsc95xx_write_reg(dev, FLOW, write_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write FLOW: %d", ret);
+ netdev_warn(dev->net, "Failed to write FLOW: %d\n", ret);
return ret;
}
read_buf = AFC_CFG_DEFAULT;
ret = smsc95xx_write_reg(dev, AFC_CFG, read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write AFC_CFG: %d", ret);
+ netdev_warn(dev->net, "Failed to write AFC_CFG: %d\n", ret);
return ret;
}
/* Don't need mac_cr_lock during initialisation */
ret = smsc95xx_read_reg(dev, MAC_CR, &pdata->mac_cr);
if (ret < 0) {
- devwarn(dev, "Failed to read MAC_CR: %d", ret);
+ netdev_warn(dev->net, "Failed to read MAC_CR: %d\n", ret);
return ret;
}
@@ -973,7 +978,7 @@ static int smsc95xx_reset(struct usbnet *dev)
write_buf = (u32)ETH_P_8021Q;
ret = smsc95xx_write_reg(dev, VLAN1, write_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write VAN1: %d", ret);
+ netdev_warn(dev->net, "Failed to write VAN1: %d\n", ret);
return ret;
}
@@ -981,7 +986,7 @@ static int smsc95xx_reset(struct usbnet *dev)
ethtool_op_set_tx_hw_csum(netdev, pdata->use_tx_csum);
ret = smsc95xx_set_csums(dev);
if (ret < 0) {
- devwarn(dev, "Failed to set csum offload: %d", ret);
+ netdev_warn(dev->net, "Failed to set csum offload: %d\n", ret);
return ret;
}
@@ -992,7 +997,7 @@ static int smsc95xx_reset(struct usbnet *dev)
ret = smsc95xx_read_reg(dev, INT_EP_CTL, &read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to read INT_EP_CTL: %d", ret);
+ netdev_warn(dev->net, "Failed to read INT_EP_CTL: %d\n", ret);
return ret;
}
@@ -1001,7 +1006,7 @@ static int smsc95xx_reset(struct usbnet *dev)
ret = smsc95xx_write_reg(dev, INT_EP_CTL, read_buf);
if (ret < 0) {
- devwarn(dev, "Failed to write INT_EP_CTL: %d", ret);
+ netdev_warn(dev->net, "Failed to write INT_EP_CTL: %d\n", ret);
return ret;
}
@@ -1009,7 +1014,7 @@ static int smsc95xx_reset(struct usbnet *dev)
smsc95xx_start_rx_path(dev);
if (netif_msg_ifup(dev))
- devdbg(dev, "smsc95xx_reset, return 0");
+ netdev_dbg(dev->net, "smsc95xx_reset, return 0\n");
return 0;
}
@@ -1034,7 +1039,7 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
ret = usbnet_get_endpoints(dev, intf);
if (ret < 0) {
- devwarn(dev, "usbnet_get_endpoints failed: %d", ret);
+ netdev_warn(dev->net, "usbnet_get_endpoints failed: %d\n", ret);
return ret;
}
@@ -1043,7 +1048,7 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
pdata = (struct smsc95xx_priv *)(dev->data[0]);
if (!pdata) {
- devwarn(dev, "Unable to allocate struct smsc95xx_priv");
+ netdev_warn(dev->net, "Unable to allocate struct smsc95xx_priv\n");
return -ENOMEM;
}
@@ -1067,7 +1072,7 @@ static void smsc95xx_unbind(struct usbnet *dev, struct usb_interface *intf)
struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
if (pdata) {
if (netif_msg_ifdown(dev))
- devdbg(dev, "free pdata");
+ netdev_dbg(dev->net, "free pdata\n");
kfree(pdata);
pdata = NULL;
dev->data[0] = 0;
@@ -1102,7 +1107,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
if (unlikely(header & RX_STS_ES_)) {
if (netif_msg_rx_err(dev))
- devdbg(dev, "Error header=0x%08x", header);
+ netdev_dbg(dev->net, "Error header=0x%08x\n",
+ header);
dev->net->stats.rx_errors++;
dev->net->stats.rx_dropped++;
@@ -1120,8 +1126,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
/* ETH_FRAME_LEN + 4(CRC) + 2(COE) + 4(Vlan) */
if (unlikely(size > (ETH_FRAME_LEN + 12))) {
if (netif_msg_rx_err(dev))
- devdbg(dev, "size err header=0x%08x",
- header);
+ netdev_dbg(dev->net, "size err header=0x%08x\n",
+ header);
return 0;
}
@@ -1137,7 +1143,7 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
ax_skb = skb_clone(skb, GFP_ATOMIC);
if (unlikely(!ax_skb)) {
- devwarn(dev, "Error allocating skb");
+ netdev_warn(dev->net, "Error allocating skb\n");
return 0;
}
@@ -1161,7 +1167,7 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
}
if (unlikely(skb->len < 0)) {
- devwarn(dev, "invalid rx length<0 %d", skb->len);
+ netdev_warn(dev->net, "invalid rx length<0 %d\n", skb->len);
return 0;
}
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 035fab0..8e73293 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -243,12 +243,12 @@ void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
dev->net->stats.rx_bytes += skb->len;
if (netif_msg_rx_status (dev))
- devdbg (dev, "< rx, len %zu, type 0x%x",
- skb->len + sizeof (struct ethhdr), skb->protocol);
+ netdev_dbg(dev->net, "< rx, len %zu, type 0x%x\n",
+ skb->len + sizeof (struct ethhdr), skb->protocol);
memset (skb->cb, 0, sizeof (struct skb_data));
status = netif_rx (skb);
if (status != NET_RX_SUCCESS && netif_msg_rx_err (dev))
- devdbg (dev, "netif_rx status %d", status);
+ netdev_dbg(dev->net, "netif_rx status %d\n", status);
}
EXPORT_SYMBOL_GPL(usbnet_skb_return);
@@ -313,9 +313,9 @@ void usbnet_defer_kevent (struct usbnet *dev, int work)
{
set_bit (work, &dev->flags);
if (!schedule_work (&dev->kevent))
- deverr (dev, "kevent %d may have been dropped", work);
+ netdev_err(dev->net, "kevent %d may have been dropped\n", work);
else
- devdbg (dev, "kevent %d scheduled", work);
+ netdev_dbg(dev->net, "kevent %d scheduled\n", work);
}
EXPORT_SYMBOL_GPL(usbnet_defer_kevent);
@@ -333,7 +333,7 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {
if (netif_msg_rx_err (dev))
- devdbg (dev, "no rx skb");
+ netdev_dbg(dev->net, "no rx skb\n");
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
usb_free_urb (urb);
return;
@@ -364,12 +364,12 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
break;
case -ENODEV:
if (netif_msg_ifdown (dev))
- devdbg (dev, "device gone");
+ netdev_dbg(dev->net, "device gone\n");
netif_device_detach (dev->net);
break;
default:
if (netif_msg_rx_err (dev))
- devdbg (dev, "rx submit, %d", retval);
+ netdev_dbg(dev->net, "rx submit, %d\n", retval);
tasklet_schedule (&dev->bh);
break;
case 0:
@@ -377,7 +377,7 @@ static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
}
} else {
if (netif_msg_ifdown (dev))
- devdbg (dev, "rx: stopped");
+ netdev_dbg(dev->net, "rx: stopped\n");
retval = -ENOLINK;
}
spin_unlock_irqrestore (&dev->rxq.lock, lockflags);
@@ -401,7 +401,7 @@ static inline void rx_process (struct usbnet *dev, struct sk_buff *skb)
usbnet_skb_return (dev, skb);
else {
if (netif_msg_rx_err (dev))
- devdbg (dev, "drop");
+ netdev_dbg(dev->net, "drop\n");
error:
dev->net->stats.rx_errors++;
skb_queue_tail (&dev->done, skb);
@@ -429,7 +429,7 @@ static void rx_complete (struct urb *urb)
dev->net->stats.rx_errors++;
dev->net->stats.rx_length_errors++;
if (netif_msg_rx_err (dev))
- devdbg (dev, "rx length %d", skb->len);
+ netdev_dbg(dev->net, "rx length %d\n", skb->len);
}
break;
@@ -447,7 +447,7 @@ static void rx_complete (struct urb *urb)
case -ECONNRESET: /* async unlink */
case -ESHUTDOWN: /* hardware gone */
if (netif_msg_ifdown (dev))
- devdbg (dev, "rx shutdown, code %d", urb_status);
+ netdev_dbg(dev->net, "rx shutdown, code %d\n", urb_status);
goto block;
/* we get controller i/o faults during khubd disconnect() delays.
@@ -461,7 +461,7 @@ static void rx_complete (struct urb *urb)
if (!timer_pending (&dev->delay)) {
mod_timer (&dev->delay, jiffies + THROTTLE_JIFFIES);
if (netif_msg_link (dev))
- devdbg (dev, "rx throttle %d", urb_status);
+ netdev_dbg(dev->net, "rx throttle %d\n", urb_status);
}
block:
entry->state = rx_cleanup;
@@ -478,7 +478,7 @@ block:
entry->state = rx_cleanup;
dev->net->stats.rx_errors++;
if (netif_msg_rx_err (dev))
- devdbg (dev, "rx status %d", urb_status);
+ netdev_dbg(dev->net, "rx status %d\n", urb_status);
break;
}
@@ -493,7 +493,7 @@ block:
usb_free_urb (urb);
}
if (netif_msg_rx_err (dev))
- devdbg (dev, "no read resubmitted");
+ netdev_dbg(dev->net, "no read resubmitted\n");
}
static void intr_complete (struct urb *urb)
@@ -511,14 +511,14 @@ static void intr_complete (struct urb *urb)
case -ENOENT: /* urb killed */
case -ESHUTDOWN: /* hardware gone */
if (netif_msg_ifdown (dev))
- devdbg (dev, "intr shutdown, code %d", status);
+ netdev_dbg(dev->net, "intr shutdown, code %d\n", status);
return;
/* NOTE: not throttling like RX/TX, since this endpoint
* already polls infrequently
*/
default:
- devdbg (dev, "intr status %d", status);
+ netdev_dbg(dev->net, "intr status %d\n", status);
break;
}
@@ -528,7 +528,7 @@ static void intr_complete (struct urb *urb)
memset(urb->transfer_buffer, 0, urb->transfer_buffer_length);
status = usb_submit_urb (urb, GFP_ATOMIC);
if (status != 0 && netif_msg_timer (dev))
- deverr(dev, "intr resubmit --> %d", status);
+ netdev_err(dev->net, "intr resubmit --> %d\n", status);
}
/*-------------------------------------------------------------------------*/
@@ -537,7 +537,7 @@ void usbnet_pause_rx(struct usbnet *dev)
set_bit(EVENT_RX_PAUSED, &dev->flags);
if (netif_msg_rx_status(dev))
- devdbg(dev, "paused rx queue enabled");
+ netdev_dbg(dev->net, "paused rx queue enabled\n");
}
EXPORT_SYMBOL_GPL(usbnet_pause_rx);
@@ -556,7 +556,8 @@ void usbnet_resume_rx(struct usbnet *dev)
tasklet_schedule(&dev->bh);
if (netif_msg_rx_status(dev))
- devdbg(dev, "paused rx queue disabled, %d skbs requeued", num);
+ netdev_dbg(dev->net, "paused rx queue disabled, %d skbs requeued\n",
+ num);
}
EXPORT_SYMBOL_GPL(usbnet_resume_rx);
@@ -589,7 +590,7 @@ static int unlink_urbs (struct usbnet *dev, struct sk_buff_head *q)
// these (async) unlinks complete immediately
retval = usb_unlink_urb (urb);
if (retval != -EINPROGRESS && retval != 0)
- devdbg (dev, "unlink urb err, %d", retval);
+ netdev_dbg(dev->net, "unlink urb err, %d\n", retval);
else
count++;
}
@@ -632,8 +633,8 @@ static void usbnet_terminate_urbs(struct usbnet *dev)
schedule_timeout(UNLINK_TIMEOUT_MS);
set_current_state(TASK_UNINTERRUPTIBLE);
if (netif_msg_ifdown(dev))
- devdbg(dev, "waited for %d urb completions",
- temp);
+ netdev_dbg(dev->net, "waited for %d urb completions\n",
+ temp);
}
set_current_state(TASK_RUNNING);
dev->wait = NULL;
@@ -649,21 +650,20 @@ int usbnet_stop (struct net_device *net)
netif_stop_queue (net);
if (netif_msg_ifdown (dev))
- devinfo (dev, "stop stats: rx/tx %ld/%ld, errs %ld/%ld",
- net->stats.rx_packets, net->stats.tx_packets,
- net->stats.rx_errors, net->stats.tx_errors
- );
+ netdev_info(dev->net, "stop stats: rx/tx %ld/%ld, errs %ld/%ld\n",
+ net->stats.rx_packets, net->stats.tx_packets,
+ net->stats.rx_errors, net->stats.tx_errors);
/* allow minidriver to stop correctly (wireless devices to turn off
* radio etc) */
if (info->stop) {
retval = info->stop(dev);
if (retval < 0 && netif_msg_ifdown(dev))
- devinfo(dev,
- "stop fail (%d) usbnet usb-%s-%s, %s",
- retval,
- dev->udev->bus->bus_name, dev->udev->devpath,
- info->description);
+ netdev_info(dev->net,
+ "stop fail (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name, dev->udev->devpath,
+ info->description);
}
if (!(info->flags & FLAG_AVOID_UNLINK_URBS))
@@ -703,29 +703,31 @@ int usbnet_open (struct net_device *net)
if ((retval = usb_autopm_get_interface(dev->intf)) < 0) {
if (netif_msg_ifup (dev))
- devinfo (dev,
- "resumption fail (%d) usbnet usb-%s-%s, %s",
- retval,
- dev->udev->bus->bus_name, dev->udev->devpath,
- info->description);
+ netdev_info(dev->net,
+ "resumption fail (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name,
+ dev->udev->devpath,
+ info->description);
goto done_nopm;
}
// put into "known safe" state
if (info->reset && (retval = info->reset (dev)) < 0) {
if (netif_msg_ifup (dev))
- devinfo (dev,
- "open reset fail (%d) usbnet usb-%s-%s, %s",
- retval,
- dev->udev->bus->bus_name, dev->udev->devpath,
- info->description);
+ netdev_info(dev->net,
+ "open reset fail (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name,
+ dev->udev->devpath,
+ info->description);
goto done;
}
// insist peer be connected
if (info->check_connect && (retval = info->check_connect (dev)) < 0) {
if (netif_msg_ifup (dev))
- devdbg (dev, "can't open; %d", retval);
+ netdev_dbg(dev->net, "can't open; %d\n", retval);
goto done;
}
@@ -734,7 +736,7 @@ int usbnet_open (struct net_device *net)
retval = usb_submit_urb (dev->interrupt, GFP_KERNEL);
if (retval < 0) {
if (netif_msg_ifup (dev))
- deverr (dev, "intr submit %d", retval);
+ netdev_err(dev->net, "intr submit %d\n", retval);
goto done;
}
}
@@ -756,10 +758,9 @@ int usbnet_open (struct net_device *net)
else
framing = "simple";
- devinfo (dev, "open: enable queueing "
- "(rx %d, tx %d) mtu %d %s framing",
- (int)RX_QLEN (dev), (int)TX_QLEN (dev), dev->net->mtu,
- framing);
+ netdev_info(dev->net, "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n",
+ (int)RX_QLEN(dev), (int)TX_QLEN(dev),
+ dev->net->mtu, framing);
}
// delay posting reads until we're fully open
@@ -908,8 +909,8 @@ kevent (struct work_struct *work)
status != -ESHUTDOWN) {
if (netif_msg_tx_err (dev))
fail_pipe:
- deverr (dev, "can't clear tx halt, status %d",
- status);
+ netdev_err(dev->net, "can't clear tx halt, status %d\n",
+ status);
} else {
clear_bit (EVENT_TX_HALT, &dev->flags);
if (status != -ESHUTDOWN)
@@ -928,8 +929,8 @@ fail_pipe:
status != -ESHUTDOWN) {
if (netif_msg_rx_err (dev))
fail_halt:
- deverr (dev, "can't clear rx halt, status %d",
- status);
+ netdev_err(dev->net, "can't clear rx halt, status %d\n",
+ status);
} else {
clear_bit (EVENT_RX_HALT, &dev->flags);
tasklet_schedule (&dev->bh);
@@ -967,18 +968,18 @@ fail_lowmem:
if(info->link_reset && (retval = info->link_reset(dev)) < 0) {
usb_autopm_put_interface(dev->intf);
skip_reset:
- devinfo(dev, "link reset failed (%d) usbnet usb-%s-%s, %s",
- retval,
- dev->udev->bus->bus_name, dev->udev->devpath,
- info->description);
+ netdev_info(dev->net, "link reset failed (%d) usbnet usb-%s-%s, %s\n",
+ retval,
+ dev->udev->bus->bus_name,
+ dev->udev->devpath,
+ info->description);
} else {
usb_autopm_put_interface(dev->intf);
}
}
if (dev->flags)
- devdbg (dev, "kevent done, flags = 0x%lx",
- dev->flags);
+ netdev_dbg(dev->net, "kevent done, flags = 0x%lx\n", dev->flags);
}
/*-------------------------------------------------------------------------*/
@@ -1015,14 +1016,15 @@ static void tx_complete (struct urb *urb)
mod_timer (&dev->delay,
jiffies + THROTTLE_JIFFIES);
if (netif_msg_link (dev))
- devdbg (dev, "tx throttle %d",
- urb->status);
+ netdev_dbg(dev->net, "tx throttle %d\n",
+ urb->status);
}
netif_stop_queue (dev->net);
break;
default:
if (netif_msg_tx_err (dev))
- devdbg (dev, "tx err %d", entry->urb->status);
+ netdev_dbg(dev->net, "tx err %d\n",
+ entry->urb->status);
break;
}
}
@@ -1065,7 +1067,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
skb = info->tx_fixup (dev, skb, GFP_ATOMIC);
if (!skb) {
if (netif_msg_tx_err (dev))
- devdbg (dev, "can't tx_fixup skb");
+ netdev_dbg(dev->net, "can't tx_fixup skb\n");
goto drop;
}
}
@@ -1073,7 +1075,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
if (!(urb = usb_alloc_urb (0, GFP_ATOMIC))) {
if (netif_msg_tx_err (dev))
- devdbg (dev, "no urb");
+ netdev_dbg(dev->net, "no urb\n");
goto drop;
}
@@ -1113,7 +1115,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
/* no use to process more packets */
netif_stop_queue(net);
spin_unlock_irqrestore(&dev->txq.lock, flags);
- devdbg(dev, "Delaying transmission for resumption");
+ netdev_dbg(dev->net, "Delaying transmission for resumption\n");
goto deferred;
}
#endif
@@ -1127,7 +1129,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
default:
usb_autopm_put_interface_async(dev->intf);
if (netif_msg_tx_err (dev))
- devdbg (dev, "tx: submit urb err %d", retval);
+ netdev_dbg(dev->net, "tx: submit urb err %d\n", retval);
break;
case 0:
net->trans_start = jiffies;
@@ -1139,15 +1141,15 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
if (retval) {
if (netif_msg_tx_err (dev))
- devdbg (dev, "drop, code %d", retval);
+ netdev_dbg(dev->net, "drop, code %d\n", retval);
drop:
dev->net->stats.tx_dropped++;
if (skb)
dev_kfree_skb_any (skb);
usb_free_urb (urb);
} else if (netif_msg_tx_queued (dev)) {
- devdbg (dev, "> tx, len %d, type 0x%x",
- length, skb->protocol);
+ netdev_dbg(dev->net, "> tx, len %d, type 0x%x\n",
+ length, skb->protocol);
}
#ifdef CONFIG_PM
deferred:
@@ -1179,7 +1181,7 @@ static void usbnet_bh (unsigned long param)
dev_kfree_skb (skb);
continue;
default:
- devdbg (dev, "bogus skb state %d", entry->state);
+ netdev_dbg(dev->net, "bogus skb state %d\n", entry->state);
}
}
@@ -1208,8 +1210,8 @@ static void usbnet_bh (unsigned long param)
rx_submit (dev, urb, GFP_ATOMIC);
}
if (temp != dev->rxq.qlen && netif_msg_link (dev))
- devdbg (dev, "rxqlen %d --> %d",
- temp, dev->rxq.qlen);
+ netdev_dbg(dev->net, "rxqlen %d --> %d\n",
+ temp, dev->rxq.qlen);
if (dev->rxq.qlen < qlen)
tasklet_schedule (&dev->bh);
}
@@ -1241,10 +1243,10 @@ void usbnet_disconnect (struct usb_interface *intf)
xdev = interface_to_usbdev (intf);
if (netif_msg_probe (dev))
- devinfo (dev, "unregister '%s' usb-%s-%s, %s",
- intf->dev.driver->name,
- xdev->bus->bus_name, xdev->devpath,
- dev->driver_info->description);
+ netdev_info(dev->net, "unregister '%s' usb-%s-%s, %s\n",
+ intf->dev.driver->name,
+ xdev->bus->bus_name, xdev->devpath,
+ dev->driver_info->description);
net = dev->net;
unregister_netdev (net);
@@ -1408,11 +1410,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
if (status)
goto out3;
if (netif_msg_probe (dev))
- devinfo (dev, "register '%s' at usb-%s-%s, %s, %pM",
- udev->dev.driver->name,
- xdev->bus->bus_name, xdev->devpath,
- dev->driver_info->description,
- net->dev_addr);
+ netdev_info(dev->net, "register '%s' at usb-%s-%s, %s, %pM\n",
+ udev->dev.driver->name,
+ xdev->bus->bus_name, xdev->devpath,
+ dev->driver_info->description,
+ net->dev_addr);
// ok, it's ready to go.
usb_set_intfdata (udev, dev);
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index 8ce6135..df1e83d 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -214,25 +214,4 @@ extern void usbnet_set_msglevel (struct net_device *, u32);
extern void usbnet_get_drvinfo (struct net_device *, struct ethtool_drvinfo *);
extern int usbnet_nway_reset(struct net_device *net);
-/* messaging support includes the interface name, so it must not be
- * used before it has one ... notably, in minidriver bind() calls.
- */
-#ifdef DEBUG
-#define devdbg(usbnet, fmt, arg...) \
- printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
-#else
-#define devdbg(usbnet, fmt, arg...) \
- ({ if (0) printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , \
- ## arg); 0; })
-#endif
-
-#define deverr(usbnet, fmt, arg...) \
- printk(KERN_ERR "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
-#define devwarn(usbnet, fmt, arg...) \
- printk(KERN_WARNING "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
-
-#define devinfo(usbnet, fmt, arg...) \
- printk(KERN_INFO "%s: " fmt "\n" , (usbnet)->net->name , ## arg); \
-
-
#endif /* __LINUX_USB_USBNET_H */
--
1.7.0.rc1.33.g07cf0f
^ permalink raw reply related
* [net-next PATCH 0/2] usbnet: convert dev(dbg|err|warn|info) macros to netdev_<>
From: Joe Perches @ 2010-02-14 23:01 UTC (permalink / raw)
To: David Miller
Cc: David Brownell, Greg Kroah-Hartman, netdev-u79uwXL29TY76Z2rM5mHXA,
linux-usb-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20100212.123837.56526847.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
Add some consistency to log messages
Use the net netif_<> macros
Joe Perches (2):
usbnet: Convert dev(dbg|err|warn|info) macros to netdev_<level>
drivers/net/usb: Use netif_<level> logging facilities
drivers/net/usb/asix.c | 97 +++++++++--------
drivers/net/usb/cdc_eem.c | 10 +-
drivers/net/usb/cdc_ether.c | 22 ++--
drivers/net/usb/dm9601.c | 49 +++++----
drivers/net/usb/int51x1.c | 15 ++--
drivers/net/usb/net1080.c | 109 +++++++++-----------
drivers/net/usb/pegasus.c | 170 +++++++++++++-----------------
drivers/net/usb/rndis_host.c | 24 ++---
drivers/net/usb/smsc95xx.c | 221 ++++++++++++++++++---------------------
drivers/net/usb/usbnet.c | 238 +++++++++++++++++++-----------------------
include/linux/usb/usbnet.h | 21 ----
11 files changed, 448 insertions(+), 528 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Larry Finger @ 2010-02-14 22:38 UTC (permalink / raw)
To: Gábor Stefanik
Cc: Thomas Backlund, linux-wireless@vger.kernel.org,
netdev@vger.kernel.org
In-Reply-To: <69e28c911002141353x7805033fl2e68ae56f3dabf40@mail.gmail.com>
On 02/14/2010 03:53 PM, Gábor Stefanik wrote:
>
> Looks like the trigger is not Intel Atom, but PhoenixBIOS after all -
> a quick analysis of bios v. A15 for this machine shows it to be a
> highly cloaked/rebranded PhoenixBIOS.
>
> Core 2 T7250 is a regular Merom/Santa Rosa CPU, almost the same as my
> T7100 (only the clock multiplier is different), and is not a ULV CPU,
> the trigger we previously suspected.
>
> PhoenixBIOS (and its rebrands) appears to be the common trigger.
It also requires an Intel CPU. My AMD is fine with a Phoenix BIOS.
Larry
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Gábor Stefanik @ 2010-02-14 21:53 UTC (permalink / raw)
To: Thomas Backlund
Cc: Larry Finger,
linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <4B784C68.8020402-4qZELD6Fgxhg9hUCZPvPmw@public.gmane.org>
2010/2/14 Thomas Backlund <tmb-4qZELD6Fgxhg9hUCZPvPmw@public.gmane.org>:
> Gábor Stefanik skrev 14.2.2010 20:59:
>>
>> On Sun, Feb 14, 2010 at 7:44 PM, Thomas Backlund<tmb-4qZELD6Fgxhg9hUCZPvPmw@public.gmane.org> wrote:
>>>
>>> Larry Finger skrev 14.2.2010 18:36:
>>>>
>>>> On 02/14/2010 03:53 AM, Thomas Backlund wrote:
>>>>>
>>>>> Hi,
>>>>> (please cc me on replies)
>>>>>
>>>>> We have a user that tried out b43, but got this in the logs:
>>>>>
>>>>> --- cut ---
>>>>> 65858:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>>>>> support DMA on your system. Please use PIO instead. 65859:Feb 9
>>>>> 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO must
>>>>> be set in your kernel configuration.
>>>>> 65860:Feb 9 22:05:16 elmo kernel: b43-phy2 debug: Adding Interface
>>>>> type
>>>>> 2
>>>>> 65861:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: Fatal DMA error:
>>>>> 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
>>>>>
>>>>> 65862:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>>>>> support DMA on your system. Please use PIO instead.
>>>>> 65863:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO
>>>>> must be set in your kernel configuration.
>>>>> --- cut ---
>>>>>
>>>>>
>>>>>
>>>>> But reading the Kconfig help, it states:
>>>>> --- cut ---
>>>>> config B43_FORCE_PIO
>>>>> bool "Force usage of PIO instead of DMA"
>>>>> depends on B43&& B43_DEBUG
>>>>> ---help---
>>>>> This will disable DMA and always enable PIO instead.
>>>>>
>>>>> Say N!
>>>>> This is only for debugging the PIO engine code. You do
>>>>> _NOT_ want to enable this.
>>>>> --- cut ---
>>>>>
>>>>>
>>>>> So,
>>>>> wich one is it ?
>>>>>
>>>>> Do I belive the dmesg output, or the Kconfig ?
>>>>>
>>>>> Note,
>>>>> the b43 works for the user if he enable the CONFIG_B43_FORCE_PIO.
>>>>>
>>>>> But I'm thinking of this problem from a distro point of view.
>>>>> Will it break for others if I enable it ?
>>>>
>>>>> From a distro point of view, you would not want to set FORCE_PIO as
>>>>> the
>>>>
>>>> performance penalty would be very large.
>>>>
>>>
>>> As I suspected.
>>> Thanks for confirming it.
>>>
>>>> You do not give the specific details on the problem system; however, it
>>>> is
>>>> probably a BCM4312 802.11 b/g device with PCI ID 14e4:4315 being used
>>>> with
>>>> an
>>>> Atom processor in a netbook. We have no fix.
>>>>
>>>
>>> Sorry about the missing info...
>>> I asked a few times from the user, and got no reponse until today a few
>>> hours after your response...
>>>
>>> It is indeed a BCM4312 802.11 b/g device with PCI ID 14e4:4315 on a Dell
>>> laptop with a Intel ICH9M series chipset and a Intel Core(TM)2 Duo CPU
>>> T7250
>>> @ 2.00GHz.
>>
>> Weird... that's not an Intel Atom, but a Core 2 Duo, standard-voltage.
>> Mind posting any more details on this system?
>>
>
> It's a Dell Latitude E5500, Bios A13.
>
> It's a 64bit kernel/userspace.
>
> The b43 firmware is: 478.104
>
> lspci -vvvnnn states:
> 0c:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g
> [14e4:4315] (rev 01)
> Subsystem: Dell Wireless 1397 WLAN Mini-Card [1028:000c]
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 17
> Region 0: Memory at f69fc000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: <access denied>
> Kernel driver in use: b43-pci-bridge
> Kernel modules: wl, ssb
>
>
> Anything else you need ?
>
> --
> Thomas
>
Looks like the trigger is not Intel Atom, but PhoenixBIOS after all -
a quick analysis of bios v. A15 for this machine shows it to be a
highly cloaked/rebranded PhoenixBIOS.
Core 2 T7250 is a regular Merom/Santa Rosa CPU, almost the same as my
T7100 (only the clock multiplier is different), and is not a ULV CPU,
the trigger we previously suspected.
PhoenixBIOS (and its rebrands) appears to be the common trigger.
--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH] atm : fix /sys/devices/virtual/atm/X/carrier(ATM_PHY_SIG_UNKNOWN)
From: Chas Williams (CONTRACTOR) @ 2010-02-14 21:34 UTC (permalink / raw)
To: Philippe De Muyter; +Cc: netdev
In-Reply-To: <20100214175136.GA15891@frolo.macqel>
In message <20100214175136.GA15891@frolo.macqel>,Philippe De Muyter writes:
>OK for me. I would agree with
>
> carrier = 0 when signal == ATM_PHY_SIG_UNKNOWN,
>
>but currently we have
>
> carrier = 1 when signal == ATM_PHY_SIG_UNKNOWN
not quite what i said (or perhaps i didnt clearly convey my intent).
ATM_PHY_SIG_UNKNOWN is set during the driver create/initialize.
unfortunately, some drivers never bothers to set signal so it winds up
always being unknown. however, for those drivers, we cant assume the
carrier is 0, or nothing will happen if someone is watching for the
carrier to be 1.
so, all drivers, if they arent going to support setting signal should
just assign it to 1. i would sort of prefer that ATM_PHY_SIG_UNKNOWN
simply didnt exist. as i said before there is carrier or there is
not. if the driver doesnt support checking/knowing the carrier status
it should simply say 'yes i have carrier'.
i will see if i cant workup a little patch for this today.
^ permalink raw reply
* Re: [PATCH net-next-2.6] macvtap: Add GSO/csum offload support
From: Arnd Bergmann @ 2010-02-14 19:13 UTC (permalink / raw)
To: Sridhar Samudrala; +Cc: David Miller, Herbert Xu, netdev
In-Reply-To: <4B7711C9.2090800@us.ibm.com>
On Saturday 13 February 2010 21:55:37 Sridhar Samudrala wrote:
> > Also, what about IFF_TAP and IFF_NO_PI, should those be always set?
> >
> Atleast it is not required for qemu to have these flags set. If we are
> not doing anything different based on
> these flags, i felt we don't need to have them.
The point is that other applications might depend on them. We only support
IFF_TAP operation (not IFF_TUN), and we do not understand the !IFF_NO_PI
frame format, so any program that tries to use the PI header or use cooked
IP packets will get incorrect data.
> >> - /* TODO: add support for these, so far we don't
> >> - support any offload */
> >> - if (arg& (TUN_F_CSUM | TUN_F_TSO4 | TUN_F_TSO6 |
> >> - TUN_F_TSO_ECN | TUN_F_UFO))
> >> - return -EINVAL;
> >> -
> >> - return 0;
> >> + q = macvtap_file_get_queue(file);
> >> + if (!q)
> >> + return -ENOLINK;
> >> + ret = 0;
> >> + if (!(q->flags& IFF_VNET_HDR))
> >> + ret = -EINVAL;
> >> + macvtap_file_put_queue(q);
> >> + return ret;
> >>
> >> default:
> >> return -EINVAL;
> >>
> > At least the first check needs to be in there, in case we are running with
> > new user space that knows additional flags. Moreover, shouldn't we check
> > the flags against the capabilities of vlan->lowerdev? I though it would be
> > best to report the capabilities of the real hardware to the guest kernel
> > so it can do the right thing.
> >
> Originally, i also thought we should check these based on the real
> device capabilities. But later i realized,
> that it is not really required as we fall back to software offload via
> dev_gso_segment() call in dev_hard_start_xmit()
> if the real device doesn't support any of the offloads. So we can
> advertise that all the offloads are supported to
> the guest and let host deal with any offloads that are not supported by
> the real device.
Ah, good point. Will that also work for the checksumming? Also, should the
host really be doing segmentation and checksumming for the guest if the
hardware can't do it? So even if everything works correctly, we might
want to let the guest do the work in order to get accounting of the CPU
cycles right.
OTOH, for data transfers between guests, we can probably use all the offloads
independent of what the HW can do, so when optimizing for inter-guest
communication, we might want to ignore the accounting problems.
I'd like to hear other opinions on this.
Arnd
^ permalink raw reply
* Re: pull request: wireless-2.6 2010-02-12
From: David Miller @ 2010-02-14 19:56 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <20100212214550.GB16783@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Fri, 12 Feb 2010 16:45:50 -0500
> Here are a couple of stragglers for 2.6.33. One purports to fix a
> crash, the other avoids processing of uninitialized data when using
> devices with rate control in hardware.
>
> The latter patch will cause a merge issue in linux-next. I'll be happy
> to resolve that in wireless-next-2.6 once this merge request is
> resolved.
Pulled, thanks John.
^ permalink raw reply
* Re: [PATCH] vhost-net: switch to smp barriers
From: David Miller @ 2010-02-14 19:55 UTC (permalink / raw)
To: mst; +Cc: rusty, kvm, virtualization, netdev, linux-kernel
In-Reply-To: <20100213173911.GA5040@redhat.com>
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: Sat, 13 Feb 2010 19:39:11 +0200
> Dave, I see it's marked "not applicable":
> http://patchwork.ozlabs.org/patch/44207/
> the patch applies to net-next as of
> b3b3f04fb587ecb61b5baa6c1c5f0e666fd12d73.
> Can this be queued up please?
> Should I resubmit with Rusty's ack?
Sorry about that, I must have thought Rusty would queue
it up.
I'll fix the state to under-review and process it in my
backlog.
Thanks.
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Larry Finger @ 2010-02-14 19:24 UTC (permalink / raw)
To: Thomas Backlund
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <4B784498.8030509-4qZELD6Fgxhg9hUCZPvPmw@public.gmane.org>
On 02/14/2010 12:44 PM, Thomas Backlund wrote:
>
> Nice solution.
>
> What about making it autodetected ?
> Or is it only a "last resort" with the hopes of getting the issue fixed?
When we detect the problem, we are too far past the initialization to switch
from DMA to PIO.
We certainly hope to fix the issue. We do know that the failure occurs when b43
is loaded after a cold boot, but if one warm boots after using wl, then it works
OK. There is some kind of initialization problem that only shows on Atom and
some Intel Core Duo CPUs.
Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Thomas Backlund @ 2010-02-14 19:18 UTC (permalink / raw)
To: Gábor Stefanik
Cc: Larry Finger, linux-wireless@vger.kernel.org,
netdev@vger.kernel.org
In-Reply-To: <69e28c911002141059y57fb2097x5613c25ad1c616da@mail.gmail.com>
Gábor Stefanik skrev 14.2.2010 20:59:
> On Sun, Feb 14, 2010 at 7:44 PM, Thomas Backlund<tmb@mandriva.org> wrote:
>> Larry Finger skrev 14.2.2010 18:36:
>>>
>>> On 02/14/2010 03:53 AM, Thomas Backlund wrote:
>>>>
>>>> Hi,
>>>> (please cc me on replies)
>>>>
>>>> We have a user that tried out b43, but got this in the logs:
>>>>
>>>> --- cut ---
>>>> 65858:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>>>> support DMA on your system. Please use PIO instead. 65859:Feb 9
>>>> 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO must
>>>> be set in your kernel configuration.
>>>> 65860:Feb 9 22:05:16 elmo kernel: b43-phy2 debug: Adding Interface type
>>>> 2
>>>> 65861:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: Fatal DMA error:
>>>> 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
>>>>
>>>> 65862:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>>>> support DMA on your system. Please use PIO instead.
>>>> 65863:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO
>>>> must be set in your kernel configuration.
>>>> --- cut ---
>>>>
>>>>
>>>>
>>>> But reading the Kconfig help, it states:
>>>> --- cut ---
>>>> config B43_FORCE_PIO
>>>> bool "Force usage of PIO instead of DMA"
>>>> depends on B43&& B43_DEBUG
>>>> ---help---
>>>> This will disable DMA and always enable PIO instead.
>>>>
>>>> Say N!
>>>> This is only for debugging the PIO engine code. You do
>>>> _NOT_ want to enable this.
>>>> --- cut ---
>>>>
>>>>
>>>> So,
>>>> wich one is it ?
>>>>
>>>> Do I belive the dmesg output, or the Kconfig ?
>>>>
>>>> Note,
>>>> the b43 works for the user if he enable the CONFIG_B43_FORCE_PIO.
>>>>
>>>> But I'm thinking of this problem from a distro point of view.
>>>> Will it break for others if I enable it ?
>>>
>>>> From a distro point of view, you would not want to set FORCE_PIO as the
>>>
>>> performance penalty would be very large.
>>>
>>
>> As I suspected.
>> Thanks for confirming it.
>>
>>> You do not give the specific details on the problem system; however, it is
>>> probably a BCM4312 802.11 b/g device with PCI ID 14e4:4315 being used with
>>> an
>>> Atom processor in a netbook. We have no fix.
>>>
>>
>> Sorry about the missing info...
>> I asked a few times from the user, and got no reponse until today a few
>> hours after your response...
>>
>> It is indeed a BCM4312 802.11 b/g device with PCI ID 14e4:4315 on a Dell
>> laptop with a Intel ICH9M series chipset and a Intel Core(TM)2 Duo CPU T7250
>> @ 2.00GHz.
>
> Weird... that's not an Intel Atom, but a Core 2 Duo, standard-voltage.
> Mind posting any more details on this system?
>
It's a Dell Latitude E5500, Bios A13.
It's a 64bit kernel/userspace.
The b43 firmware is: 478.104
lspci -vvvnnn states:
0c:00.0 Network controller [0280]: Broadcom Corporation BCM4312
802.11b/g [14e4:4315] (rev 01)
Subsystem: Dell Wireless 1397 WLAN Mini-Card [1028:000c]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at f69fc000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: b43-pci-bridge
Kernel modules: wl, ssb
Anything else you need ?
--
Thomas
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Gábor Stefanik @ 2010-02-14 18:59 UTC (permalink / raw)
To: Thomas Backlund
Cc: Larry Finger, linux-wireless@vger.kernel.org,
netdev@vger.kernel.org
In-Reply-To: <4B784498.8030509@mandriva.org>
On Sun, Feb 14, 2010 at 7:44 PM, Thomas Backlund <tmb@mandriva.org> wrote:
> Larry Finger skrev 14.2.2010 18:36:
>>
>> On 02/14/2010 03:53 AM, Thomas Backlund wrote:
>>>
>>> Hi,
>>> (please cc me on replies)
>>>
>>> We have a user that tried out b43, but got this in the logs:
>>>
>>> --- cut ---
>>> 65858:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>>> support DMA on your system. Please use PIO instead. 65859:Feb 9
>>> 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO must
>>> be set in your kernel configuration.
>>> 65860:Feb 9 22:05:16 elmo kernel: b43-phy2 debug: Adding Interface type
>>> 2
>>> 65861:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: Fatal DMA error:
>>> 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
>>>
>>> 65862:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>>> support DMA on your system. Please use PIO instead.
>>> 65863:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO
>>> must be set in your kernel configuration.
>>> --- cut ---
>>>
>>>
>>>
>>> But reading the Kconfig help, it states:
>>> --- cut ---
>>> config B43_FORCE_PIO
>>> bool "Force usage of PIO instead of DMA"
>>> depends on B43&& B43_DEBUG
>>> ---help---
>>> This will disable DMA and always enable PIO instead.
>>>
>>> Say N!
>>> This is only for debugging the PIO engine code. You do
>>> _NOT_ want to enable this.
>>> --- cut ---
>>>
>>>
>>> So,
>>> wich one is it ?
>>>
>>> Do I belive the dmesg output, or the Kconfig ?
>>>
>>> Note,
>>> the b43 works for the user if he enable the CONFIG_B43_FORCE_PIO.
>>>
>>> But I'm thinking of this problem from a distro point of view.
>>> Will it break for others if I enable it ?
>>
>>> From a distro point of view, you would not want to set FORCE_PIO as the
>>
>> performance penalty would be very large.
>>
>
> As I suspected.
> Thanks for confirming it.
>
>> You do not give the specific details on the problem system; however, it is
>> probably a BCM4312 802.11 b/g device with PCI ID 14e4:4315 being used with
>> an
>> Atom processor in a netbook. We have no fix.
>>
>
> Sorry about the missing info...
> I asked a few times from the user, and got no reponse until today a few
> hours after your response...
>
> It is indeed a BCM4312 802.11 b/g device with PCI ID 14e4:4315 on a Dell
> laptop with a Intel ICH9M series chipset and a Intel Core(TM)2 Duo CPU T7250
> @ 2.00GHz.
Weird... that's not an Intel Atom, but a Core 2 Duo, standard-voltage.
Mind posting any more details on this system?
>
>> In the 2.6.34 code, b43 will be changed to allow the selection of PIO mode
>> at
>> run time rather than compile time. For a distro, this method is clearly
>> superior. Those users that need PIO can select it without forcing the
>> performance penalty on everyone. The patch was too late for the 2.6.33
>> merge,
>> and too intrusive to be applied to 2.6.33-rcX. It has been present in the
>> wireless-testing code base for 2 months with no trouble reported, thus it
>> should
>> be safe for inclusion in your kernels. The relevant patch is attached.
>>
>
> Nice solution.
>
> What about making it autodetected ?
> Or is it only a "last resort" with the hopes of getting the issue fixed?
>
> Anyway, thanks for the patch.
>
> --
> Thomas
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Thomas Backlund @ 2010-02-14 18:44 UTC (permalink / raw)
To: Larry Finger
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
In-Reply-To: <4B782670.9080001-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
Larry Finger skrev 14.2.2010 18:36:
> On 02/14/2010 03:53 AM, Thomas Backlund wrote:
>> Hi,
>> (please cc me on replies)
>>
>> We have a user that tried out b43, but got this in the logs:
>>
>> --- cut ---
>> 65858:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>> support DMA on your system. Please use PIO instead. 65859:Feb 9
>> 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO must
>> be set in your kernel configuration.
>> 65860:Feb 9 22:05:16 elmo kernel: b43-phy2 debug: Adding Interface type 2
>> 65861:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: Fatal DMA error:
>> 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
>>
>> 65862:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
>> support DMA on your system. Please use PIO instead.
>> 65863:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO
>> must be set in your kernel configuration.
>> --- cut ---
>>
>>
>>
>> But reading the Kconfig help, it states:
>> --- cut ---
>> config B43_FORCE_PIO
>> bool "Force usage of PIO instead of DMA"
>> depends on B43&& B43_DEBUG
>> ---help---
>> This will disable DMA and always enable PIO instead.
>>
>> Say N!
>> This is only for debugging the PIO engine code. You do
>> _NOT_ want to enable this.
>> --- cut ---
>>
>>
>> So,
>> wich one is it ?
>>
>> Do I belive the dmesg output, or the Kconfig ?
>>
>> Note,
>> the b43 works for the user if he enable the CONFIG_B43_FORCE_PIO.
>>
>> But I'm thinking of this problem from a distro point of view.
>> Will it break for others if I enable it ?
>
>> From a distro point of view, you would not want to set FORCE_PIO as the
> performance penalty would be very large.
>
As I suspected.
Thanks for confirming it.
> You do not give the specific details on the problem system; however, it is
> probably a BCM4312 802.11 b/g device with PCI ID 14e4:4315 being used with an
> Atom processor in a netbook. We have no fix.
>
Sorry about the missing info...
I asked a few times from the user, and got no reponse until today a few
hours after your response...
It is indeed a BCM4312 802.11 b/g device with PCI ID 14e4:4315 on a Dell
laptop with a Intel ICH9M series chipset and a Intel Core(TM)2 Duo CPU
T7250 @ 2.00GHz.
> In the 2.6.34 code, b43 will be changed to allow the selection of PIO mode at
> run time rather than compile time. For a distro, this method is clearly
> superior. Those users that need PIO can select it without forcing the
> performance penalty on everyone. The patch was too late for the 2.6.33 merge,
> and too intrusive to be applied to 2.6.33-rcX. It has been present in the
> wireless-testing code base for 2 months with no trouble reported, thus it should
> be safe for inclusion in your kernels. The relevant patch is attached.
>
Nice solution.
What about making it autodetected ?
Or is it only a "last resort" with the hopes of getting the issue fixed?
Anyway, thanks for the patch.
--
Thomas
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH] atm : fix /sys/devices/virtual/atm/X/carrier(ATM_PHY_SIG_UNKNOWN)
From: Philippe De Muyter @ 2010-02-14 17:51 UTC (permalink / raw)
To: chas3; +Cc: netdev
In-Reply-To: <201002132324.o1DNOY0F030510@thirdoffive.cmf.nrl.navy.mil>
Hi Chas,
On Sat, Feb 13, 2010 at 06:24:34PM -0500, Chas Williams (CONTRACTOR) wrote:
> In message <20100213215633.GA4345@frolo.macqel>,Philippe De Muyter writes:
> >value '1' while actually carrier was not yet established and real carrier
> >state was not yet known to linux. I propose to fix that by using '?' as the
> >/sys/devices/virtual/atm/cxacru0/carrier value when carrier state is not yet
> >known to linux. Any other value except '1' would also be OK for me.
>
> this is sort of intentional because some drivers dont actually implement
> atm_dev->signal. ATM_PHY_SIG_UNKNOWN and ATM_PHY_SIG_LOST should
> likely be carrier = 0. if the driver doesnt isnt going to handle
> changing the state of atm_dev->signal it should just set the value to
> ATM_PHY_SIG_FOUND.
>
> i dont like the idea of carrier being '?' -- carrier is either true or false.
> you have it or you dont.
OK for me. I would agree with
carrier = 0 when signal == ATM_PHY_SIG_UNKNOWN,
but currently we have
carrier = 1 when signal == ATM_PHY_SIG_UNKNOWN
cxacru itself does the right thing : as soon as carrier state is known,
signal is set to ATM_PHY_SIG_LOST or ATM_PHY_SIG_FOUND, but
atm_sysfs.c::show_carrier is wrong.
So here is a revised patch :
--
The carrier field of /sys/devices/virtual/atm/cxacru0 shows 1 when carrier
is actually down (but unknown to linux). Make it show 0 instead in that case.
Signed-off-by: Philippe De Muyter <phdm@macqel.be>
--- a/net/atm/atm_sysfs.c 2010-02-14 18:17:05.604508129 +0100
+++ b/net/atm/atm_sysfs.c 2010-02-14 18:15:08.316917041 +0100
@@ -63,8 +63,7 @@ static ssize_t show_carrier(struct devic
char *pos = buf;
struct atm_dev *adev = to_atm_dev(cdev);
- pos += sprintf(pos, "%d\n",
- adev->signal == ATM_PHY_SIG_LOST ? 0 : 1);
+ pos += sprintf(pos, "%d\n", adev->signal == ATM_PHY_SIG_FOUND);
return pos - buf;
}
^ permalink raw reply
* PROPOSAL READ ATTACHMENT AND GET BACK TO ME
From: Mr. Johnson @ 2010-02-14 16:50 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 45 bytes --]
PROPOSAL READ ATTACHMENT AND GET BACK TO ME
[-- Attachment #2: MR. JOHNSON KHUNE.jpg --]
[-- Type: image/jpeg, Size: 233512 bytes --]
^ permalink raw reply
* ixgbe_clean_tx_irq: tx hang 1 detected, resetting adapter (2.6.32.8)
From: Jesper Krogh @ 2010-02-14 16:29 UTC (permalink / raw)
To: linux-nfs, netdev
Hi List.
I have tried to get a dual bond of 2 x 10G NICs using the
Intel Corporation 82598EB 10-Gigabit AT2 Server Adapter (rev 01)
going. As first it looked like it "just worked" but when tried to fill
the links with data one of the NIC's (eth7) hang and did a reset of
itself, so all data was pushed through the other NIC in the bond (eth8)
Full dmesg below, but I think the important part is this:
[ 2162.745354] ixgbe: eth7: ixgbe_check_tx_hang: Detected Tx Unit Hang
[ 2162.745356] Tx Queue <4>
[ 2162.745356] TDH, TDT <e1>, <cc>
[ 2162.745357] next_to_use <cc>
[ 2162.745358] next_to_clean <e1>
[ 2162.745359] tx_buffer_info[next_to_clean]
[ 2162.745359] time_stamp <1000713d3>
[ 2162.745360] jiffies <10007152e>
[ 2163.162478] ixgbe: eth7: ixgbe_clean_tx_irq: tx hang 1 detected,
resetting adapter
[ 2163.357333] bonding: bond0: link status definitely down for interface
eth7, disabling it
[ 2168.670342] ixgbe: eth7 NIC Link is Up 10 Gbps, Flow Control: None
Full dmesg:
[ 0.000000] Linux version 2.6.32.8 (jk@ko) (gcc version 4.2.4 (Ubuntu
4.2.4-1ubuntu4)) #3 SMP Thu Feb 11 19:27:44 CET 2010
[ 0.000000] Command line:
root=UUID=52012ca3-9b77-4a86-a1cf-9bbed1bbf53f ro console=ttyS0,9600
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] AMD AuthenticAMD
[ 0.000000] Centaur CentaurHauls
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009bc00 (usable)
[ 0.000000] BIOS-e820: 000000000009bc00 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 00000000dfff0000 (usable)
[ 0.000000] BIOS-e820: 00000000dfff0000 - 00000000dfffe000 (ACPI data)
[ 0.000000] BIOS-e820: 00000000dfffe000 - 00000000e0000000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
[ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[ 0.000000] BIOS-e820: 00000000ff700000 - 0000000100000000 (reserved)
[ 0.000000] BIOS-e820: 0000000100000000 - 0000002000000000 (usable)
[ 0.000000] DMI 2.3 present.
[ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working
around it.
[ 0.000000] e820 update range: 0000000000000000 - 0000000000010000
(usable) ==> (reserved)
[ 0.000000] last_pfn = 0x2000000 max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-EFFFF uncachable
[ 0.000000] F0000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 0000000000 mask E000000000 write-back
[ 0.000000] 1 base 00E0000000 mask FFE0000000 uncachable
[ 0.000000] 2 disabled
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] TOM2: 0000002000000000 aka 131072M
[ 0.000000] e820 update range: 00000000e0000000 - 0000000100000000
(usable) ==> (reserved)
[ 0.000000] last_pfn = 0xdfff0 max_arch_pfn = 0x400000000
[ 0.000000] initial memory mapped : 0 - 20000000
[ 0.000000] init_memory_mapping: 0000000000000000-00000000dfff0000
[ 0.000000] 0000000000 - 00dfe00000 page 2M
[ 0.000000] 00dfe00000 - 00dfff0000 page 4k
[ 0.000000] kernel direct mapping tables up to dfff0000 @ 10000-16000
[ 0.000000] init_memory_mapping: 0000000100000000-0000002000000000
[ 0.000000] 0100000000 - 2000000000 page 2M
[ 0.000000] kernel direct mapping tables up to 2000000000 @ 14000-95000
[ 0.000000] RAMDISK: 3787b000 - 37fef291
[ 0.000000] ACPI: RSDP 00000000000f92d0 00024 (v02 SUN )
[ 0.000000] ACPI: XSDT 00000000dfff0100 0006C (v01 SUN X4600 M2
00000050 MSFT 00000097)
[ 0.000000] ACPI: FACP 00000000dfff0290 000F4 (v03 SUN X4600 M2
00000050 MSFT 00000097)
[ 0.000000] ACPI: DSDT 00000000dfff04d0 07176 (v01 SUN X4600 M2
00000050 INTL 20050624)
[ 0.000000] ACPI: FACS 00000000dfffe000 00040
[ 0.000000] ACPI: APIC 00000000dfff0390 000E6 (v01 SUN X4600 M2
00000050 MSFT 00000097)
[ 0.000000] ACPI: SPCR 00000000dfff0480 00050 (v01 SUN X4600 M2
00000050 MSFT 00000097)
[ 0.000000] ACPI: OEMB 00000000dfffe040 00063 (v01 SUN X4600 M2
00000050 MSFT 00000097)
[ 0.000000] ACPI: SRAT 00000000dfff7650 002C0 (v01 SUN X4600 M2
00000050 MSFT 00000097)
[ 0.000000] ACPI: HPET 00000000dfff7910 00038 (v01 SUN OEMHPET0
00000050 MSFT 00000097)
[ 0.000000] ACPI: IPET 00000000dfff7950 00038 (v01 SUN OEMHPET1
00000050 MSFT 00000097)
[ 0.000000] ACPI: SRAT 00000000dfff7990 002C0 (v01 AMD HAMMER
00000001 AMD 00000001)
[ 0.000000] ACPI: SSDT 00000000dfff7c50 01384 (v01 A M I POWERNOW
00000001 AMD 00000001)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] SRAT: PXM 0 -> APIC 0 -> Node 0
[ 0.000000] SRAT: PXM 0 -> APIC 1 -> Node 0
[ 0.000000] SRAT: PXM 1 -> APIC 2 -> Node 1
[ 0.000000] SRAT: PXM 1 -> APIC 3 -> Node 1
[ 0.000000] SRAT: PXM 2 -> APIC 4 -> Node 2
[ 0.000000] SRAT: PXM 2 -> APIC 5 -> Node 2
[ 0.000000] SRAT: PXM 3 -> APIC 6 -> Node 3
[ 0.000000] SRAT: PXM 3 -> APIC 7 -> Node 3
[ 0.000000] SRAT: PXM 4 -> APIC 8 -> Node 4
[ 0.000000] SRAT: PXM 4 -> APIC 9 -> Node 4
[ 0.000000] SRAT: PXM 5 -> APIC 10 -> Node 5
[ 0.000000] SRAT: PXM 5 -> APIC 11 -> Node 5
[ 0.000000] SRAT: PXM 6 -> APIC 12 -> Node 6
[ 0.000000] SRAT: PXM 6 -> APIC 13 -> Node 6
[ 0.000000] SRAT: PXM 7 -> APIC 14 -> Node 7
[ 0.000000] SRAT: PXM 7 -> APIC 15 -> Node 7
[ 0.000000] SRAT: Node 0 PXM 0 100000-e0000000
[ 0.000000] SRAT: Node 1 PXM 1 500000000-a00000000
[ 0.000000] SRAT: Node 2 PXM 2 a00000000-f00000000
[ 0.000000] SRAT: Node 3 PXM 3 f00000000-1400000000
[ 0.000000] SRAT: Node 4 PXM 4 1400000000-1700000000
[ 0.000000] SRAT: Node 5 PXM 5 1700000000-1a00000000
[ 0.000000] SRAT: Node 6 PXM 6 1a00000000-1d00000000
[ 0.000000] SRAT: Node 7 PXM 7 1d00000000-2000000000
[ 0.000000] SRAT: Node 0 PXM 0 100000000-500000000
[ 0.000000] SRAT: Node 0 PXM 0 0-9bc00
[ 0.000000] SRAT: PXMs only cover 114174MB of your 130559MB e820 RAM.
Not used.
[ 0.000000] SRAT: SRAT not used.
[ 0.000000] Scanning NUMA topology in Northbridge 24
[ 0.000000] Number of nodes 8
[ 0.000000] Node 0 MemBase 0000000000000000 Limit 0000000500000000
[ 0.000000] Node 1 MemBase 0000000500000000 Limit 0000000a00000000
[ 0.000000] Node 2 MemBase 0000000a00000000 Limit 0000000f00000000
[ 0.000000] Node 3 MemBase 0000000f00000000 Limit 0000001400000000
[ 0.000000] Node 4 MemBase 0000001400000000 Limit 0000001700000000
[ 0.000000] Node 5 MemBase 0000001700000000 Limit 0000001a00000000
[ 0.000000] Node 6 MemBase 0000001a00000000 Limit 0000001d00000000
[ 0.000000] Node 7 MemBase 0000001d00000000 Limit 0000002000000000
[ 0.000000] NUMA: Using 32 for the hash shift.
[ 0.000000] Using node hash shift of 32
[ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] Bootmem setup node 0 0000000000000000-0000000500000000
[ 0.000000] NODE_DATA [0000000000090000 - 0000000000094fff]
[ 0.000000] bootmap [0000000000100000 - 000000000019ffff] pages a0
[ 0.000000] (8 early reservations) ==> bootmem [0000000000 - 0500000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==>
[0000000000 - 0000001000]
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE ==>
[0000006000 - 0000008000]
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS ==>
[0001000000 - 000164ec44]
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK ==>
[003787b000 - 0037fef291]
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved ==>
[000009bc00 - 0000100000]
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK ==>
[000164f000 - 000164f2bc]
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE ==>
[0000010000 - 0000014000]
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE ==>
[0000014000 - 0000090000]
[ 0.000000] Bootmem setup node 1 0000000500000000-0000000a00000000
[ 0.000000] NODE_DATA [0000000500000000 - 0000000500004fff]
[ 0.000000] bootmap [0000000500005000 - 00000005000a4fff] pages a0
[ 0.000000] (8 early reservations) ==> bootmem [0500000000 - 0a00000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] Bootmem setup node 2 0000000a00000000-0000000f00000000
[ 0.000000] NODE_DATA [0000000a00000000 - 0000000a00004fff]
[ 0.000000] bootmap [0000000a00005000 - 0000000a000a4fff] pages a0
[ 0.000000] (8 early reservations) ==> bootmem [0a00000000 - 0f00000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] Bootmem setup node 3 0000000f00000000-0000001400000000
[ 0.000000] NODE_DATA [0000000f00000000 - 0000000f00004fff]
[ 0.000000] bootmap [0000000f00005000 - 0000000f000a4fff] pages a0
[ 0.000000] (8 early reservations) ==> bootmem [0f00000000 - 1400000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] Bootmem setup node 4 0000001400000000-0000001700000000
[ 0.000000] NODE_DATA [0000001400000000 - 0000001400004fff]
[ 0.000000] bootmap [0000001400005000 - 0000001400064fff] pages 60
[ 0.000000] (8 early reservations) ==> bootmem [1400000000 - 1700000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] Bootmem setup node 5 0000001700000000-0000001a00000000
[ 0.000000] NODE_DATA [0000001700000000 - 0000001700004fff]
[ 0.000000] bootmap [0000001700005000 - 0000001700064fff] pages 60
[ 0.000000] (8 early reservations) ==> bootmem [1700000000 - 1a00000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] Bootmem setup node 6 0000001a00000000-0000001d00000000
[ 0.000000] NODE_DATA [0000001a00000000 - 0000001a00004fff]
[ 0.000000] bootmap [0000001a00005000 - 0000001a00064fff] pages 60
[ 0.000000] (8 early reservations) ==> bootmem [1a00000000 - 1d00000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] Bootmem setup node 7 0000001d00000000-0000002000000000
[ 0.000000] NODE_DATA [0000001d00000000 - 0000001d00004fff]
[ 0.000000] bootmap [0000001d00005000 - 0000001d00064fff] pages 60
[ 0.000000] (8 early reservations) ==> bootmem [1d00000000 - 2000000000]
[ 0.000000] #0 [0000000000 - 0000001000] BIOS data page
[ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE
[ 0.000000] #2 [0001000000 - 000164ec44] TEXT DATA BSS
[ 0.000000] #3 [003787b000 - 0037fef291] RAMDISK
[ 0.000000] #4 [000009bc00 - 0000100000] BIOS reserved
[ 0.000000] #5 [000164f000 - 000164f2bc] BRK
[ 0.000000] #6 [0000010000 - 0000014000] PGTABLE
[ 0.000000] #7 [0000014000 - 0000090000] PGTABLE
[ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780
[ 0.000000] [ffffea0000000000-ffffea000f7fffff] PMD ->
[ffff880028600000-ffff8800377fffff] on node 0
[ 0.000000] [ffffea000f800000-ffffea00117fffff] PMD ->
[ffff880038000000-ffff880039ffffff] on node 0
[ 0.000000] [ffffea0011800000-ffffea0022ffffff] PMD ->
[ffff880500200000-ffff8805119fffff] on node 1
[ 0.000000] [ffffea0023000000-ffffea00347fffff] PMD ->
[ffff880a00200000-ffff880a119fffff] on node 2
[ 0.000000] [ffffea0034800000-ffffea003fffffff] PMD ->
[ffff880f00200000-ffff880f0b9fffff] on node 3
[ 0.000000] [ffffea0040000000-ffffea0045ffffff] PMD ->
[ffff880f0bc00000-ffff880f11bfffff] on node 3
[ 0.000000] [ffffea0046000000-ffffea00507fffff] PMD ->
[ffff881400200000-ffff88140a9fffff] on node 4
[ 0.000000] [ffffea0050800000-ffffea005affffff] PMD ->
[ffff881700200000-ffff88170a9fffff] on node 5
[ 0.000000] [ffffea005b000000-ffffea00657fffff] PMD ->
[ffff881a00200000-ffff881a0a9fffff] on node 6
[ 0.000000] [ffffea0065800000-ffffea006fffffff] PMD ->
[ffff881d00200000-ffff881d0a9fffff] on node 7
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000010 -> 0x00001000
[ 0.000000] DMA32 0x00001000 -> 0x00100000
[ 0.000000] Normal 0x00100000 -> 0x02000000
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[10] active PFN ranges
[ 0.000000] 0: 0x00000010 -> 0x0000009b
[ 0.000000] 0: 0x00000100 -> 0x000dfff0
[ 0.000000] 0: 0x00100000 -> 0x00500000
[ 0.000000] 1: 0x00500000 -> 0x00a00000
[ 0.000000] 2: 0x00a00000 -> 0x00f00000
[ 0.000000] 3: 0x00f00000 -> 0x01400000
[ 0.000000] 4: 0x01400000 -> 0x01700000
[ 0.000000] 5: 0x01700000 -> 0x01a00000
[ 0.000000] 6: 0x01a00000 -> 0x01d00000
[ 0.000000] 7: 0x01d00000 -> 0x02000000
[ 0.000000] On node 0 totalpages: 5111675
[ 0.000000] DMA zone: 56 pages used for memmap
[ 0.000000] DMA zone: 231 pages reserved
[ 0.000000] DMA zone: 3692 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 14280 pages used for memmap
[ 0.000000] DMA32 zone: 899112 pages, LIFO batch:31
[ 0.000000] Normal zone: 57344 pages used for memmap
[ 0.000000] Normal zone: 4136960 pages, LIFO batch:31
[ 0.000000] On node 1 totalpages: 5242880
[ 0.000000] Normal zone: 71680 pages used for memmap
[ 0.000000] Normal zone: 5171200 pages, LIFO batch:31
[ 0.000000] On node 2 totalpages: 5242880
[ 0.000000] Normal zone: 71680 pages used for memmap
[ 0.000000] Normal zone: 5171200 pages, LIFO batch:31
[ 0.000000] On node 3 totalpages: 5242880
[ 0.000000] Normal zone: 71680 pages used for memmap
[ 0.000000] Normal zone: 5171200 pages, LIFO batch:31
[ 0.000000] On node 4 totalpages: 3145728
[ 0.000000] Normal zone: 43008 pages used for memmap
[ 0.000000] Normal zone: 3102720 pages, LIFO batch:31
[ 0.000000] On node 5 totalpages: 3145728
[ 0.000000] Normal zone: 43008 pages used for memmap
[ 0.000000] Normal zone: 3102720 pages, LIFO batch:31
[ 0.000000] On node 6 totalpages: 3145728
[ 0.000000] Normal zone: 43008 pages used for memmap
[ 0.000000] Normal zone: 3102720 pages, LIFO batch:31
[ 0.000000] On node 7 totalpages: 3145728
[ 0.000000] Normal zone: 43008 pages used for memmap
[ 0.000000] Normal zone: 3102720 pages, LIFO batch:31
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] Detected use of extended apic ids on hypertransport bus
[ 0.000000] ACPI: PM-Timer IO Port: 0x4008
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x04] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x05] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x06] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x07] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x08] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x09] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x0a] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x0b] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x0c] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x0d] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x0e] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x0f] enabled)
[ 0.000000] ACPI: IOAPIC (id[0x0f] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 15, version 17, address 0xfec00000,
GSI 0-23
[ 0.000000] ACPI: IOAPIC (id[0x10] address[0xfe5fd000] gsi_base[48])
[ 0.000000] IOAPIC[1]: apic_id 16, version 17, address 0xfe5fd000,
GSI 48-54
[ 0.000000] ACPI: IOAPIC (id[0x11] address[0xfe5fc000] gsi_base[56])
[ 0.000000] IOAPIC[2]: apic_id 17, version 17, address 0xfe5fc000,
GSI 56-62
[ 0.000000] ACPI: IOAPIC (id[0x0e] address[0xfeaff000] gsi_base[24])
[ 0.000000] IOAPIC[3]: apic_id 14, version 17, address 0xfeaff000,
GSI 24-47
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x0 base: 0xfed00000
[ 0.000000] SMP: Allowing 16 CPUs, 0 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 63
[ 0.000000] Allocating PCI resources starting at e0000000 (gap:
e0000000:1ec00000)
[ 0.000000] NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:16 nr_node_ids:8
[ 0.000000] PERCPU: Embedded 27 pages/cpu @ffff880028200000 s81432
r8192 d20968 u1048576
[ 0.000000] pcpu-alloc: s81432 r8192 d20968 u1048576 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 00 01 [1] 02 03 [2] 04 05 [3] 06 07
[ 0.000000] pcpu-alloc: [4] 08 09 [5] 10 11 [6] 12 13 [7] 14 15
[ 0.000000] Built 8 zonelists in Zone order, mobility grouping on.
Total pages: 32964244
[ 0.000000] Policy zone: Normal
[ 0.000000] Kernel command line:
root=UUID=52012ca3-9b77-4a86-a1cf-9bbed1bbf53f ro console=ttyS0,9600
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Initializing CPU#0
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Node 0: aperture @ fbf4000000 size 32 MB
[ 0.000000] Aperture beyond 4GB. Ignoring.
[ 0.000000] Your BIOS doesn't leave a aperture memory hole
[ 0.000000] Please enable the IOMMU option in the BIOS setup
[ 0.000000] This costs you 64 MB of RAM
[ 0.000000] Mapping aperture over 65536 KB of RAM @ 20000000
[ 0.000000] Memory: 131780964k/134217728k available (3014k kernel
code, 524820k absent, 1911944k reserved, 2105k data, 496k init)
[ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0,
CPUs=16, Nodes=8
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:1280
[ 0.000000] Extended CMOS year: 2000
[ 0.000000] spurious 8259A interrupt: IRQ7.
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [ttyS0] enabled
[ 0.000000] hpet clockevent registered
[ 0.000000] HPET: 3 timers in total, 0 timers will be used for
per-cpu timer
[ 0.000000] Fast TSC calibration using PIT
[ 0.000000] Detected 2799.820 MHz processor.
[ 0.012013] Calibrating delay loop (skipped), value calculated using
timer frequency.. 5599.64 BogoMIPS (lpj=11199280)
[ 0.020072] Security Framework initialized
[ 0.024008] SELinux: Disabled at boot.
[ 0.039043] Dentry cache hash table entries: 16777216 (order: 15,
134217728 bytes)
[ 0.161631] Inode-cache hash table entries: 8388608 (order: 14,
67108864 bytes)
[ 0.222389] Mount-cache hash table entries: 256
[ 0.224296] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.228002] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.232002] CPU 0/0x0 -> Node 0
[ 0.236002] tseg: 0000000000
[ 0.236020] CPU: Physical Processor ID: 0
[ 0.240001] CPU: Processor Core ID: 0
[ 0.244004] mce: CPU supports 5 MCE banks
[ 0.248012] using C1E aware idle routine
[ 0.252002] Performance Events: AMD PMU driver.
[ 0.260003] ... version: 0
[ 0.264001] ... bit width: 48
[ 0.268001] ... generic registers: 4
[ 0.272001] ... value mask: 0000ffffffffffff
[ 0.276001] ... max period: 00007fffffffffff
[ 0.280001] ... fixed-purpose events: 0
[ 0.284001] ... event mask: 000000000000000f
[ 0.288017] ACPI: Core revision 20090903
[ 0.307823] Setting APIC routing to physical flat
[ 0.308663] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1
[ 0.352124] CPU0: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 0.368000] Booting processor 1 APIC 0x1 ip 0x6000
[ 0.016000] Initializing CPU#1
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 1/0x1 -> Node 0
[ 0.016000] CPU: Physical Processor ID: 0
[ 0.016000] CPU: Processor Core ID: 1
[ 0.460092] CPU1: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 0.476012] Booting processor 2 APIC 0x2 ip 0x6000
[ 0.016000] Initializing CPU#2
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 2/0x2 -> Node 1
[ 0.016000] CPU: Physical Processor ID: 1
[ 0.016000] CPU: Processor Core ID: 0
[ 0.572049] CPU2: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 0.584087] Booting processor 3 APIC 0x3 ip 0x6000
[ 0.016000] Initializing CPU#3
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 3/0x3 -> Node 1
[ 0.016000] CPU: Physical Processor ID: 1
[ 0.016000] CPU: Processor Core ID: 1
[ 0.680099] CPU3: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 0.696025] Booting processor 4 APIC 0x4 ip 0x6000
[ 0.016000] Initializing CPU#4
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 4/0x4 -> Node 2
[ 0.016000] CPU: Physical Processor ID: 2
[ 0.016000] CPU: Processor Core ID: 0
[ 0.792052] CPU4: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 0.804077] Booting processor 5 APIC 0x5 ip 0x6000
[ 0.016000] Initializing CPU#5
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 5/0x5 -> Node 2
[ 0.016000] CPU: Physical Processor ID: 2
[ 0.016000] CPU: Processor Core ID: 1
[ 0.900107] CPU5: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 0.916030] Booting processor 6 APIC 0x6 ip 0x6000
[ 0.016000] Initializing CPU#6
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 6/0x6 -> Node 3
[ 0.016000] CPU: Physical Processor ID: 3
[ 0.016000] CPU: Processor Core ID: 0
[ 1.012055] CPU6: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.024081] Booting processor 7 APIC 0x7 ip 0x6000
[ 0.016000] Initializing CPU#7
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 7/0x7 -> Node 3
[ 0.016000] CPU: Physical Processor ID: 3
[ 0.016000] CPU: Processor Core ID: 1
[ 1.120113] CPU7: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.132092] Booting processor 8 APIC 0x8 ip 0x6000
[ 0.016000] Initializing CPU#8
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 8/0x8 -> Node 4
[ 0.016000] CPU: Physical Processor ID: 4
[ 0.016000] CPU: Processor Core ID: 0
[ 1.228066] CPU8: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.240074] Booting processor 9 APIC 0x9 ip 0x6000
[ 0.016000] Initializing CPU#9
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 9/0x9 -> Node 4
[ 0.016000] CPU: Physical Processor ID: 4
[ 0.016000] CPU: Processor Core ID: 1
[ 1.336112] CPU9: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.352032] Booting processor 10 APIC 0xa ip 0x6000
[ 0.016000] Initializing CPU#10
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 10/0xa -> Node 5
[ 0.016000] CPU: Physical Processor ID: 5
[ 0.016000] CPU: Processor Core ID: 0
[ 1.448078] CPU10: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.460078] Booting processor 11 APIC 0xb ip 0x6000
[ 0.016000] Initializing CPU#11
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 11/0xb -> Node 5
[ 0.016000] CPU: Physical Processor ID: 5
[ 0.016000] CPU: Processor Core ID: 1
[ 1.556101] CPU11: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.568083] Booting processor 12 APIC 0xc ip 0x6000
[ 0.016000] Initializing CPU#12
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 12/0xc -> Node 6
[ 0.016000] CPU: Physical Processor ID: 6
[ 0.016000] CPU: Processor Core ID: 0
[ 1.664122] CPU12: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.676073] Booting processor 13 APIC 0xd ip 0x6000
[ 0.016000] Initializing CPU#13
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 13/0xd -> Node 6
[ 0.016000] CPU: Physical Processor ID: 6
[ 0.016000] CPU: Processor Core ID: 1
[ 1.772042] CPU13: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.784090] Booting processor 14 APIC 0xe ip 0x6000
[ 0.016000] Initializing CPU#14
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 14/0xe -> Node 7
[ 0.016000] CPU: Physical Processor ID: 7
[ 0.016000] CPU: Processor Core ID: 0
[ 1.880059] CPU14: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 1.892087] Booting processor 15 APIC 0xf ip 0x6000
[ 0.016000] Initializing CPU#15
[ 0.016000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64
bytes/line)
[ 0.016000] CPU: L2 Cache: 1024K (64 bytes/line)
[ 0.016000] CPU 15/0xf -> Node 7
[ 0.016000] CPU: Physical Processor ID: 7
[ 0.016000] CPU: Processor Core ID: 1
[ 1.988092] CPU15: Dual-Core AMD Opteron(tm) Processor 8220 stepping 03
[ 2.000017] Brought up 16 CPUs
[ 2.004004] Total of 16 processors activated (89600.39 BogoMIPS).
[ 2.009879] CPU0 attaching sched-domain:
[ 2.009882] domain 0: span 0-1 level MC
[ 2.009883] groups: 0 1
[ 2.009886] domain 1: span 0-15 level NODE
[ 2.009888] groups: 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048)
4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048)
10-11 (cpu_power = 2048) 12-13 (cpu_power = 2048) 14-15 (cpu_power = 2048)
[ 2.009899] CPU1 attaching sched-domain:
[ 2.009901] domain 0: span 0-1 level MC
[ 2.009902] groups: 1 0
[ 2.009904] domain 1: span 0-15 level NODE
[ 2.009906] groups: 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048)
4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048)
10-11 (cpu_power = 2048) 12-13 (cpu_power = 2048) 14-15 (cpu_power = 2048)
[ 2.009916] CPU2 attaching sched-domain:
[ 2.009917] domain 0: span 2-3 level MC
[ 2.009918] groups: 2 3
[ 2.009921] domain 1: span 0-15 level NODE
[ 2.009922] groups: 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048)
6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048)
12-13 (cpu_power = 2048) 14-15 (cpu_power = 2048) 0-1 (cpu_power = 2048)
[ 2.009932] CPU3 attaching sched-domain:
[ 2.009933] domain 0: span 2-3 level MC
[ 2.009935] groups: 3 2
[ 2.009937] domain 1: span 0-15 level NODE
[ 2.009939] groups: 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048)
6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048)
12-13 (cpu_power = 2048) 14-15 (cpu_power = 2048) 0-1 (cpu_power = 2048)
[ 2.009949] CPU4 attaching sched-domain:
[ 2.009950] domain 0: span 4-5 level MC
[ 2.009951] groups: 4 5
[ 2.009954] domain 1: span 0-15 level NODE
[ 2.009955] groups: 4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048)
8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048) 12-13 (cpu_power = 2048)
14-15 (cpu_power = 2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048)
[ 2.009965] CPU5 attaching sched-domain:
[ 2.009966] domain 0: span 4-5 level MC
[ 2.009968] groups: 5 4
[ 2.009970] domain 1: span 0-15 level NODE
[ 2.009971] groups: 4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048)
8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048) 12-13 (cpu_power = 2048)
14-15 (cpu_power = 2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048)
[ 2.009981] CPU6 attaching sched-domain:
[ 2.009983] domain 0: span 6-7 level MC
[ 2.009984] groups: 6 7
[ 2.009986] domain 1: span 0-15 level NODE
[ 2.009988] groups: 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048)
10-11 (cpu_power = 2048) 12-13 (cpu_power = 2048) 14-15 (cpu_power =
2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048)
[ 2.009998] CPU7 attaching sched-domain:
[ 2.009999] domain 0: span 6-7 level MC
[ 2.010000] groups: 7 6
[ 2.010003] domain 1: span 0-15 level NODE
[ 2.010004] groups: 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048)
10-11 (cpu_power = 2048) 12-13 (cpu_power = 2048) 14-15 (cpu_power =
2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048)
[ 2.010014] CPU8 attaching sched-domain:
[ 2.010015] domain 0: span 8-9 level MC
[ 2.010017] groups: 8 9
[ 2.010019] domain 1: span 0-15 level NODE
[ 2.010020] groups: 8-9 (cpu_power = 2048) 10-11 (cpu_power =
2048) 12-13 (cpu_power = 2048) 14-15 (cpu_power = 2048) 0-1 (cpu_power =
2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048)
[ 2.010031] CPU9 attaching sched-domain:
[ 2.010032] domain 0: span 8-9 level MC
[ 2.010033] groups: 9 8
[ 2.010036] domain 1: span 0-15 level NODE
[ 2.010037] groups: 8-9 (cpu_power = 2048) 10-11 (cpu_power =
2048) 12-13 (cpu_power = 2048) 14-15 (cpu_power = 2048) 0-1 (cpu_power =
2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048)
[ 2.010047] CPU10 attaching sched-domain:
[ 2.010048] domain 0: span 10-11 level MC
[ 2.010050] groups: 10 11
[ 2.010052] domain 1: span 0-15 level NODE
[ 2.010054] groups: 10-11 (cpu_power = 2048) 12-13 (cpu_power =
2048) 14-15 (cpu_power = 2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power =
2048) 4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048)
[ 2.010063] CPU11 attaching sched-domain:
[ 2.010065] domain 0: span 10-11 level MC
[ 2.010066] groups: 11 10
[ 2.010069] domain 1: span 0-15 level NODE
[ 2.010070] groups: 10-11 (cpu_power = 2048) 12-13 (cpu_power =
2048) 14-15 (cpu_power = 2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power =
2048) 4-5 (cpu_power = 2048) 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048)
[ 2.010080] CPU12 attaching sched-domain:
[ 2.010081] domain 0: span 12-13 level MC
[ 2.010083] groups: 12 13
[ 2.010085] domain 1: span 0-15 level NODE
[ 2.010086] groups: 12-13 (cpu_power = 2048) 14-15 (cpu_power =
2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power =
2048) 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048)
[ 2.010096] CPU13 attaching sched-domain:
[ 2.010098] domain 0: span 12-13 level MC
[ 2.010099] groups: 13 12
[ 2.010102] domain 1: span 0-15 level NODE
[ 2.010103] groups: 12-13 (cpu_power = 2048) 14-15 (cpu_power =
2048) 0-1 (cpu_power = 2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power =
2048) 6-7 (cpu_power = 2048) 8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048)
[ 2.010113] CPU14 attaching sched-domain:
[ 2.010114] domain 0: span 14-15 level MC
[ 2.010116] groups: 14 15
[ 2.010118] domain 1: span 0-15 level NODE
[ 2.010119] groups: 14-15 (cpu_power = 2048) 0-1 (cpu_power =
2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048) 6-7 (cpu_power =
2048) 8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048) 12-13 (cpu_power =
2048)
[ 2.010129] CPU15 attaching sched-domain:
[ 2.010131] domain 0: span 14-15 level MC
[ 2.010132] groups: 15 14
[ 2.010135] domain 1: span 0-15 level NODE
[ 2.010136] groups: 14-15 (cpu_power = 2048) 0-1 (cpu_power =
2048) 2-3 (cpu_power = 2048) 4-5 (cpu_power = 2048) 6-7 (cpu_power =
2048) 8-9 (cpu_power = 2048) 10-11 (cpu_power = 2048) 12-13 (cpu_power =
2048)
[ 2.011492] NET: Registered protocol family 16
[ 2.012421] node 0 link 2: io port [9000, cfff]
[ 2.012424] node 7 link 2: io port [d000, ffff]
[ 2.012426] node 7 link 2: io port [5000, 5fff]
[ 2.012428] TOM: 00000000e0000000 aka 3584M
[ 2.016004] node 0 link 2: mmio [fbd00000, fe6fffff]
[ 2.016006] node 7 link 2: mmio [fe700000, febfffff]
[ 2.016008] node 7 link 2: mmio [fed10000, fed1ffff]
[ 2.016010] node 7 link 2: mmio [e8000000, ebffffff]
[ 2.016012] node 0 link 2: mmio [a0000, bffff]
[ 2.016014] node 0 link 2: mmio [e0000000, e3ffffff]
[ 2.016016] TOM2: 0000002000000000 aka 131072M
[ 2.020003] bus: [00,07] on node 0 link 2
[ 2.020005] bus: 00 index 0 io port: [6000, cfff]
[ 2.020006] bus: 00 index 1 io port: [0, 4fff]
[ 2.020008] bus: 00 index 2 mmio: [ec000000, fe6fffff]
[ 2.020010] bus: 00 index 3 mmio: [a0000, bffff]
[ 2.020011] bus: 00 index 4 mmio: [e0000000, e7ffffff]
[ 2.020013] bus: 00 index 5 mmio: [fec00000, fed0ffff]
[ 2.020014] bus: 00 index 6 mmio: [fed20000, ffffffff]
[ 2.020016] bus: 00 index 7 mmio: [2000000000, fcffffffff]
[ 2.020017] bus: [80,84] on node 7 link 2
[ 2.020019] bus: 80 index 0 io port: [d000, ffff]
[ 2.020021] bus: 80 index 1 io port: [5000, 5fff]
[ 2.020022] bus: 80 index 2 mmio: [fe700000, febfffff]
[ 2.020024] bus: 80 index 3 mmio: [fed10000, fed1ffff]
[ 2.020025] bus: 80 index 4 mmio: [e8000000, ebffffff]
[ 2.020032] ACPI: bus type pci registered
[ 2.024104] PCI: Using configuration type 1 for base access
[ 2.033213] bio: create slab <bio-0> at 0
[ 2.037003] ACPI: EC: Look up EC in DSDT
[ 2.044551] ACPI: Executed 1 blocks of module-level executable AML code
[ 2.071807] ACPI: Interpreter enabled
[ 2.072007] ACPI: (supports S0 S1 S5)
[ 2.087120] ACPI: Using IOAPIC for interrupt routing
[ 2.107662] ACPI Warning: Incorrect checksum in table [OEMB] - 33,
should be 32 (20090903/tbutils-314)
[ 2.116370] ACPI: No dock devices found.
[ 2.131791] ACPI: PCI Root Bridge [PCI0] (0000:00)
[ 2.132168] pci 0000:00:01.1: reg 10 io port: [0x2800-0x281f]
[ 2.132176] pci 0000:00:01.1: reg 20 io port: [0xff00-0xff3f]
[ 2.132180] pci 0000:00:01.1: reg 24 io port: [0xff40-0xff7f]
[ 2.132191] pci 0000:00:01.1: PME# supported from D3hot D3cold
[ 2.136003] pci 0000:00:01.1: PME# disabled
[ 2.140021] pci 0000:00:02.0: reg 10 32bit mmio: [0xfe5ff000-0xfe5fffff]
[ 2.140040] pci 0000:00:02.0: supports D1 D2
[ 2.140041] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.144002] pci 0000:00:02.0: PME# disabled
[ 2.148020] pci 0000:00:02.1: reg 10 32bit mmio: [0xfe5fec00-0xfe5fecff]
[ 2.148042] pci 0000:00:02.1: supports D1 D2
[ 2.148043] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.152003] pci 0000:00:02.1: PME# disabled
[ 2.156031] pci 0000:00:06.0: reg 20 io port: [0x2000-0x200f]
[ 2.156094] pci 0000:00:0b.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.160002] pci 0000:00:0b.0: PME# disabled
[ 2.164036] pci 0000:00:0c.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.168003] pci 0000:00:0c.0: PME# disabled
[ 2.172036] pci 0000:00:0d.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.176002] pci 0000:00:0d.0: PME# disabled
[ 2.180035] pci 0000:00:0e.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.184003] pci 0000:00:0e.0: PME# disabled
[ 2.188032] pci 0000:00:10.0: Enabling HT MSI Mapping
[ 2.192023] pci 0000:00:10.1: reg 10 64bit mmio: [0xfe5fd000-0xfe5fdfff]
[ 2.192066] pci 0000:00:11.0: Enabling HT MSI Mapping
[ 2.196024] pci 0000:00:11.1: reg 10 64bit mmio: [0xfe5fc000-0xfe5fcfff]
[ 2.200257] PCI: peer root bus 00 res updated from pci conf
[ 2.200290] pci 0000:01:06.0: reg 10 32bit mmio: [0xfc000000-0xfcffffff]
[ 2.200295] pci 0000:01:06.0: reg 14 io port: [0x9800-0x98ff]
[ 2.200300] pci 0000:01:06.0: reg 18 32bit mmio: [0xfddff000-0xfddfffff]
[ 2.200315] pci 0000:01:06.0: reg 30 32bit mmio pref:
[0xfddc0000-0xfdddffff]
[ 2.200328] pci 0000:01:06.0: supports D1 D2
[ 2.200353] pci 0000:00:09.0: transparent bridge
[ 2.204003] pci 0000:00:09.0: bridge io port: [0x9000-0x9fff]
[ 2.204006] pci 0000:00:09.0: bridge 32bit mmio: [0xfbd00000-0xfddfffff]
[ 2.204099] pci 0000:04:00.0: reg 10 io port: [0xa800-0xa8ff]
[ 2.204108] pci 0000:04:00.0: reg 14 64bit mmio: [0xfdefc000-0xfdefffff]
[ 2.204125] pci 0000:04:00.0: reg 30 32bit mmio pref:
[0xfde80000-0xfdebffff]
[ 2.204187] pci 0000:00:0d.0: bridge io port: [0xa000-0xafff]
[ 2.204189] pci 0000:00:0d.0: bridge 32bit mmio: [0xfde00000-0xfdefffff]
[ 2.204246] pci 0000:06:01.0: reg 10 64bit mmio: [0xfdfe0000-0xfdffffff]
[ 2.204252] pci 0000:06:01.0: reg 20 io port: [0xbc00-0xbc3f]
[ 2.204266] pci 0000:06:01.0: PME# supported from D0 D3hot
[ 2.208002] pci 0000:06:01.0: PME# disabled
[ 2.212023] pci 0000:06:01.1: reg 10 64bit mmio: [0xfdfc0000-0xfdfdffff]
[ 2.212029] pci 0000:06:01.1: reg 20 io port: [0xb800-0xb83f]
[ 2.212043] pci 0000:06:01.1: PME# supported from D0 D3hot
[ 2.216002] pci 0000:06:01.1: PME# disabled
[ 2.220026] pci 0000:06:02.0: reg 10 64bit mmio: [0xfdfa0000-0xfdfbffff]
[ 2.220033] pci 0000:06:02.0: reg 20 io port: [0xb400-0xb43f]
[ 2.220046] pci 0000:06:02.0: PME# supported from D0 D3hot
[ 2.224002] pci 0000:06:02.0: PME# disabled
[ 2.228023] pci 0000:06:02.1: reg 10 64bit mmio: [0xfdf80000-0xfdf9ffff]
[ 2.228030] pci 0000:06:02.1: reg 20 io port: [0xb000-0xb03f]
[ 2.228043] pci 0000:06:02.1: PME# supported from D0 D3hot
[ 2.232003] pci 0000:06:02.1: PME# disabled
[ 2.236023] pci 0000:00:10.0: bridge io port: [0xb000-0xbfff]
[ 2.236025] pci 0000:00:10.0: bridge 32bit mmio: [0xfdf00000-0xfdffffff]
[ 2.236054] pci 0000:07:04.0: reg 10 io port: [0xc800-0xc8ff]
[ 2.236060] pci 0000:07:04.0: reg 14 64bit mmio: [0xfe4fc000-0xfe4fffff]
[ 2.236066] pci 0000:07:04.0: reg 1c 64bit mmio: [0xfe4e0000-0xfe4effff]
[ 2.236071] pci 0000:07:04.0: reg 30 32bit mmio pref:
[0xfe200000-0xfe3fffff]
[ 2.236085] pci 0000:07:04.0: supports D1 D2
[ 2.236106] pci 0000:00:11.0: bridge io port: [0xc000-0xcfff]
[ 2.236109] pci 0000:00:11.0: bridge 32bit mmio: [0xfe000000-0xfe4fffff]
[ 2.236128] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 2.236316] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.POGA._PRT]
[ 2.236374] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.POGB._PRT]
[ 2.236476] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT]
[ 2.236526] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P3._PRT]
[ 2.236592] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P4._PRT]
[ 2.236655] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P5._PRT]
[ 2.264418] ACPI: PCI Root Bridge [PCIB] (0000:80)
[ 2.268124] pci 0000:80:01.0: reg 14 32bit mmio: [0xfeaff000-0xfeafffff]
[ 2.268174] pci 0000:80:0b.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.272003] pci 0000:80:0b.0: PME# disabled
[ 2.276032] pci 0000:80:0c.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.280002] pci 0000:80:0c.0: PME# disabled
[ 2.284031] pci 0000:80:0d.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.288003] pci 0000:80:0d.0: PME# disabled
[ 2.292031] pci 0000:80:0e.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 2.296002] pci 0000:80:0e.0: PME# disabled
[ 2.300017] PCI: peer root bus 80 res updated from pci conf
[ 2.300075] pci 0000:82:00.0: reg 10 32bit mmio: [0xfe7e0000-0xfe7fffff]
[ 2.300080] pci 0000:82:00.0: reg 14 32bit mmio: [0xfe780000-0xfe7bffff]
[ 2.300085] pci 0000:82:00.0: reg 18 io port: [0xdc00-0xdc1f]
[ 2.300090] pci 0000:82:00.0: reg 1c 32bit mmio: [0xfe7dc000-0xfe7dffff]
[ 2.300124] pci 0000:82:00.0: PME# supported from D0 D3hot
[ 2.304003] pci 0000:82:00.0: PME# disabled
[ 2.308032] pci 0000:80:0c.0: bridge io port: [0xd000-0xdfff]
[ 2.308034] pci 0000:80:0c.0: bridge 32bit mmio: [0xfe700000-0xfe7fffff]
[ 2.308062] pci 0000:83:00.0: reg 10 32bit mmio: [0xfe8e0000-0xfe8fffff]
[ 2.308066] pci 0000:83:00.0: reg 14 32bit mmio: [0xfe880000-0xfe8bffff]
[ 2.308071] pci 0000:83:00.0: reg 18 io port: [0xec00-0xec1f]
[ 2.308076] pci 0000:83:00.0: reg 1c 32bit mmio: [0xfe8dc000-0xfe8dffff]
[ 2.308104] pci 0000:83:00.0: PME# supported from D0 D3hot
[ 2.312003] pci 0000:83:00.0: PME# disabled
[ 2.316031] pci 0000:80:0d.0: bridge io port: [0xe000-0xefff]
[ 2.316033] pci 0000:80:0d.0: bridge 32bit mmio: [0xfe800000-0xfe8fffff]
[ 2.316060] pci 0000:84:00.0: reg 10 32bit mmio: [0xfe9e0000-0xfe9fffff]
[ 2.316065] pci 0000:84:00.0: reg 14 32bit mmio: [0xfe980000-0xfe9bffff]
[ 2.316070] pci 0000:84:00.0: reg 18 io port: [0xfc00-0xfc1f]
[ 2.316074] pci 0000:84:00.0: reg 1c 32bit mmio: [0xfe9dc000-0xfe9dffff]
[ 2.316102] pci 0000:84:00.0: PME# supported from D0 D3hot
[ 2.320003] pci 0000:84:00.0: PME# disabled
[ 2.324031] pci 0000:80:0e.0: bridge io port: [0xf000-0xffff]
[ 2.324033] pci 0000:80:0e.0: bridge 32bit mmio: [0xfe900000-0xfe9fffff]
[ 2.324044] ACPI: PCI Interrupt Routing Table [\_SB_.PCIB._PRT]
[ 2.324188] ACPI: PCI Interrupt Routing Table [\_SB_.PCIB.BR8C._PRT]
[ 2.324252] ACPI: PCI Interrupt Routing Table [\_SB_.PCIB.BR8D._PRT]
[ 2.324313] ACPI: PCI Interrupt Routing Table [\_SB_.PCIB.BR8E._PRT]
[ 2.325779] ACPI: PCI Interrupt Link [LNKA] (IRQs 16 17 18 19) *10
[ 2.348205] ACPI: PCI Interrupt Link [LNKB] (IRQs 16 17 18 19) *7
[ 2.372201] ACPI: PCI Interrupt Link [LNKC] (IRQs 16 17 18 19) *5
[ 2.398278] ACPI: PCI Interrupt Link [LNKD] (IRQs 16 17 18 19) *15
[ 2.420196] ACPI: PCI Interrupt Link [LNKE] (IRQs 16 17 18 19) *0,
disabled.
[ 2.448197] ACPI: PCI Interrupt Link [LUS0] (IRQs 20 21 22) *11
[ 2.472144] ACPI: PCI Interrupt Link [LUS1] (IRQs 20 21 22) *0, disabled.
[ 2.496196] ACPI: PCI Interrupt Link [LUS2] (IRQs 20 21 22) *5
[ 2.518282] ACPI: PCI Interrupt Link [LKLN] (IRQs 20 21 22) *0, disabled.
[ 2.540197] ACPI: PCI Interrupt Link [LAUI] (IRQs 20 21 22) *0, disabled.
[ 2.568197] ACPI: PCI Interrupt Link [LKMO] (IRQs 20 21 22) *0, disabled.
[ 2.590278] ACPI: PCI Interrupt Link [LKSM] (IRQs 20 21 22) *0, disabled.
[ 2.612196] ACPI: PCI Interrupt Link [LTID] (IRQs 20 21 22) *0, disabled.
[ 2.638283] ACPI: PCI Interrupt Link [LTIE] (IRQs 20 21 22) *0, disabled.
[ 2.658323] ACPI: PCI Interrupt Link [LATA] (IRQs 20 21 22) *14
[ 2.678297] ACPI: PCI Interrupt Link [LN2A] (IRQs 40 41 42 43) *10
[ 2.700210] ACPI: PCI Interrupt Link [LN2B] (IRQs 40 41 42 43) *7
[ 2.724208] ACPI: PCI Interrupt Link [LN2C] (IRQs 40 41 42 43) *5
[ 2.746289] ACPI: PCI Interrupt Link [LN2D] (IRQs 40 41 42 43) *15
[ 2.768209] ACPI: PCI Interrupt Link [LN4A] (IRQs 40 41 42 43) *15
[ 2.794290] ACPI: PCI Interrupt Link [LN4B] (IRQs 40 41 42 43) *15
[ 2.816208] ACPI: PCI Interrupt Link [LN4C] (IRQs 40 41 42 43) *15
[ 2.842287] ACPI: PCI Interrupt Link [LN4D] (IRQs 40 41 42 43) *15
[ 2.864208] ACPI: PCI Interrupt Link [LN6A] (IRQs 40 41 42 43) *15
[ 2.890289] ACPI: PCI Interrupt Link [LN6B] (IRQs 40 41 42 43) *15
[ 2.912207] ACPI: PCI Interrupt Link [LN6C] (IRQs 40 41 42 43) *15
[ 2.938290] ACPI: PCI Interrupt Link [LN6D] (IRQs 40 41 42 43) *15
[ 2.960208] ACPI: PCI Interrupt Link [LK2N] (IRQs 44 45 46 47) *0,
disabled.
[ 2.986294] ACPI: PCI Interrupt Link [LK4N] (IRQs 44 45 46 47) *15
[ 3.008209] ACPI: PCI Interrupt Link [LK6N] (IRQs 44 45 46 47) *15
[ 3.034291] ACPI: PCI Interrupt Link [LT3D] (IRQs 44 45 46 47) *0,
disabled.
[ 3.058301] ACPI: PCI Interrupt Link [LT2E] (IRQs 44 45 46 47) *0,
disabled.
[ 3.082341] vgaarb: device added:
PCI:0000:01:06.0,decodes=io+mem,owns=io+mem,locks=none
[ 3.084012] vgaarb: loaded
[ 3.088215] PCI: Using ACPI for IRQ routing
[ 3.092014] pci 0000:00:01.1: BAR 4: no parent found for of device
[0xff00-0xff3f]
[ 3.096002] pci 0000:00:01.1: BAR 4: can't allocate resource
[ 3.100002] pci 0000:00:01.1: BAR 5: no parent found for of device
[0xff40-0xff7f]
[ 3.104001] pci 0000:00:01.1: BAR 5: can't allocate resource
[ 3.108302] NET: Registered protocol family 8
[ 3.112002] NET: Registered protocol family 20
[ 3.116094] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 31
[ 3.132001] hpet0: 3 comparators, 32-bit 25.000000 MHz counter
[ 3.188305] Switching to clocksource hpet
[ 3.194723] pnp: PnP ACPI init
[ 3.231007] ACPI: bus type pnp registered
[ 3.292594] pnp 00:06: io resource (0x10-0x1f) overlaps 0000:00:01.1
BAR 4 (0x0-0x3f), disabling
[ 3.397650] pnp 00:06: io resource (0x22-0x3f) overlaps 0000:00:01.1
BAR 4 (0x0-0x3f), disabling
[ 3.502707] pnp 00:06: io resource (0x10-0x1f) overlaps 0000:00:01.1
BAR 5 (0x0-0x3f), disabling
[ 3.607767] pnp 00:06: io resource (0x22-0x3f) overlaps 0000:00:01.1
BAR 5 (0x0-0x3f), disabling
[ 3.725288] pnp: PnP ACPI: found 14 devices
[ 3.775222] ACPI: ACPI bus type pnp unregistered
[ 3.830372] system 00:06: ioport range 0x190-0x193 has been reserved
[ 3.906308] system 00:06: ioport range 0x4d0-0x4d1 has been reserved
[ 3.982242] system 00:06: iomem range 0xffb80000-0xfffffffe has been
reserved
[ 4.067539] system 00:09: ioport range 0xcf8-0xcff could not be reserved
[ 4.147632] system 00:09: ioport range 0xca0-0xcaf has been reserved
[ 4.223568] system 00:09: iomem range 0xfec00000-0xfec00fff could not
be reserved
[ 4.313019] system 00:09: iomem range 0xfee00000-0xfeefffff could not
be reserved
[ 4.402473] system 00:09: iomem range 0xfefff000-0xfeffffff has been
reserved
[ 4.487768] system 00:0a: ioport range 0x680-0x6ff has been reserved
[ 4.563708] system 00:0b: iomem range 0xe0000000-0xefffffff could not
be reserved
[ 4.653165] system 00:0c: iomem range 0x0-0x9ffff could not be reserved
[ 4.732219] system 00:0c: iomem range 0xc0000-0xdffff has been reserved
[ 4.811269] system 00:0c: iomem range 0xe0000-0xfffff could not be
reserved
[ 4.894483] system 00:0c: iomem range 0x100000-0xdfffffff could not
be reserved
[ 4.987128] pci 0000:01:06.0: BAR 6: address space collision on of
device [0xfddc0000-0xfdddffff]
[ 5.093295] pci 0000:00:09.0: PCI bridge, secondary bus 0000:01
[ 5.164033] pci 0000:00:09.0: IO window: 0x9000-0x9fff
[ 5.227486] pci 0000:00:09.0: MEM window: 0xfbd00000-0xfddfffff
[ 5.300300] pci 0000:00:09.0: PREFETCH window: 0xec000000-0xec0fffff
[ 5.378315] pci 0000:00:0b.0: PCI bridge, secondary bus 0000:02
[ 5.449048] pci 0000:00:0b.0: IO window: disabled
[ 5.507304] pci 0000:00:0b.0: MEM window: disabled
[ 5.566596] pci 0000:00:0b.0: PREFETCH window: disabled
[ 5.631090] pci 0000:00:0c.0: PCI bridge, secondary bus 0000:03
[ 5.701823] pci 0000:00:0c.0: IO window: disabled
[ 5.760075] pci 0000:00:0c.0: MEM window: disabled
[ 5.819368] pci 0000:00:0c.0: PREFETCH window: disabled
[ 5.883863] pci 0000:00:0d.0: PCI bridge, secondary bus 0000:04
[ 5.954594] pci 0000:00:0d.0: IO window: 0xa000-0xafff
[ 6.018050] pci 0000:00:0d.0: MEM window: 0xfde00000-0xfdefffff
[ 6.090861] pci 0000:00:0d.0: PREFETCH window: disabled
[ 6.155354] pci 0000:00:0e.0: PCI bridge, secondary bus 0000:05
[ 6.226085] pci 0000:00:0e.0: IO window: disabled
[ 6.284341] pci 0000:00:0e.0: MEM window: disabled
[ 6.343632] pci 0000:00:0e.0: PREFETCH window: disabled
[ 6.408126] pci 0000:00:10.0: PCI bridge, secondary bus 0000:06
[ 6.478859] pci 0000:00:10.0: IO window: 0xb000-0xbfff
[ 6.542314] pci 0000:00:10.0: MEM window: 0xfdf00000-0xfdffffff
[ 6.615124] pci 0000:00:10.0: PREFETCH window: disabled
[ 6.679619] pci 0000:00:11.0: PCI bridge, secondary bus 0000:07
[ 6.750350] pci 0000:00:11.0: IO window: 0xc000-0xcfff
[ 6.813806] pci 0000:00:11.0: MEM window: 0xfe000000-0xfe4fffff
[ 6.886622] pci 0000:00:11.0: PREFETCH window: disabled
[ 6.951127] pci 0000:00:09.0: setting latency timer to 64
[ 6.951135] pci 0000:00:0b.0: setting latency timer to 64
[ 6.951141] pci 0000:00:0c.0: setting latency timer to 64
[ 6.951147] pci 0000:00:0d.0: setting latency timer to 64
[ 6.951153] pci 0000:00:0e.0: setting latency timer to 64
[ 6.951161] pci 0000:80:0b.0: PCI bridge, secondary bus 0000:81
[ 7.021894] pci 0000:80:0b.0: IO window: disabled
[ 7.080147] pci 0000:80:0b.0: MEM window: disabled
[ 7.139440] pci 0000:80:0b.0: PREFETCH window: disabled
[ 7.203933] pci 0000:80:0c.0: PCI bridge, secondary bus 0000:82
[ 7.274667] pci 0000:80:0c.0: IO window: 0xd000-0xdfff
[ 7.338121] pci 0000:80:0c.0: MEM window: 0xfe700000-0xfe7fffff
[ 7.410932] pci 0000:80:0c.0: PREFETCH window: disabled
[ 7.475425] pci 0000:80:0d.0: PCI bridge, secondary bus 0000:83
[ 7.546203] pci 0000:80:0d.0: IO window: 0xe000-0xefff
[ 7.609659] pci 0000:80:0d.0: MEM window: 0xfe800000-0xfe8fffff
[ 7.682468] pci 0000:80:0d.0: PREFETCH window: disabled
[ 7.746963] pci 0000:80:0e.0: PCI bridge, secondary bus 0000:84
[ 7.817695] pci 0000:80:0e.0: IO window: 0xf000-0xffff
[ 7.881150] pci 0000:80:0e.0: MEM window: 0xfe900000-0xfe9fffff
[ 7.953961] pci 0000:80:0e.0: PREFETCH window: disabled
[ 8.018458] pci 0000:80:0b.0: setting latency timer to 64
[ 8.018462] pci 0000:80:0c.0: setting latency timer to 64
[ 8.018466] pci 0000:80:0d.0: setting latency timer to 64
[ 8.018470] pci 0000:80:0e.0: setting latency timer to 64
[ 8.018473] pci_bus 0000:00: resource 0 io: [0x6000-0xcfff]
[ 8.018475] pci_bus 0000:00: resource 1 io: [0x00-0x4fff]
[ 8.018477] pci_bus 0000:00: resource 2 mem: [0xec000000-0xfe6fffff]
[ 8.018479] pci_bus 0000:00: resource 3 mem: [0x0a0000-0x0bffff]
[ 8.018481] pci_bus 0000:00: resource 4 mem: [0xe0000000-0xe7ffffff]
[ 8.018482] pci_bus 0000:00: resource 5 mem: [0xfec00000-0xfed0ffff]
[ 8.018484] pci_bus 0000:00: resource 6 mem: [0xfed20000-0xffffffff]
[ 8.018486] pci_bus 0000:00: resource 7 mem: [0x2000000000-0xfcffffffff]
[ 8.018488] pci_bus 0000:01: resource 0 io: [0x9000-0x9fff]
[ 8.018490] pci_bus 0000:01: resource 1 mem: [0xfbd00000-0xfddfffff]
[ 8.018492] pci_bus 0000:01: resource 2 pref mem [0xec000000-0xec0fffff]
[ 8.018494] pci_bus 0000:01: resource 3 io: [0x6000-0xcfff]
[ 8.018495] pci_bus 0000:01: resource 4 io: [0x00-0x4fff]
[ 8.018497] pci_bus 0000:01: resource 5 mem: [0xec000000-0xfe6fffff]
[ 8.018499] pci_bus 0000:01: resource 6 mem: [0x0a0000-0x0bffff]
[ 8.018501] pci_bus 0000:01: resource 7 mem: [0xe0000000-0xe7ffffff]
[ 8.018503] pci_bus 0000:01: resource 8 mem: [0xfec00000-0xfed0ffff]
[ 8.018504] pci_bus 0000:01: resource 9 mem: [0xfed20000-0xffffffff]
[ 8.018506] pci_bus 0000:01: resource 10 mem: [0x2000000000-0xfcffffffff]
[ 8.018509] pci_bus 0000:04: resource 0 io: [0xa000-0xafff]
[ 8.018510] pci_bus 0000:04: resource 1 mem: [0xfde00000-0xfdefffff]
[ 8.018512] pci_bus 0000:06: resource 0 io: [0xb000-0xbfff]
[ 8.018514] pci_bus 0000:06: resource 1 mem: [0xfdf00000-0xfdffffff]
[ 8.018516] pci_bus 0000:07: resource 0 io: [0xc000-0xcfff]
[ 8.018518] pci_bus 0000:07: resource 1 mem: [0xfe000000-0xfe4fffff]
[ 8.018521] pci_bus 0000:80: resource 0 io: [0xd000-0xffff]
[ 8.018523] pci_bus 0000:80: resource 1 io: [0x5000-0x5fff]
[ 8.018524] pci_bus 0000:80: resource 2 mem: [0xfe700000-0xfebfffff]
[ 8.018526] pci_bus 0000:80: resource 3 mem: [0xfed10000-0xfed1ffff]
[ 8.018528] pci_bus 0000:80: resource 4 mem: [0xe8000000-0xebffffff]
[ 8.018530] pci_bus 0000:82: resource 0 io: [0xd000-0xdfff]
[ 8.018532] pci_bus 0000:82: resource 1 mem: [0xfe700000-0xfe7fffff]
[ 8.018534] pci_bus 0000:83: resource 0 io: [0xe000-0xefff]
[ 8.018536] pci_bus 0000:83: resource 1 mem: [0xfe800000-0xfe8fffff]
[ 8.018538] pci_bus 0000:84: resource 0 io: [0xf000-0xffff]
[ 8.018540] pci_bus 0000:84: resource 1 mem: [0xfe900000-0xfe9fffff]
[ 8.018635] NET: Registered protocol family 2
[ 8.071259] IP route cache hash table entries: 524288 (order: 10,
4194304 bytes)
[ 8.164046] TCP established hash table entries: 524288 (order: 11,
8388608 bytes)
[ 8.260592] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
[ 8.341515] TCP: Hash tables configured (established 524288 bind 65536)
[ 8.420591] TCP reno registered
[ 8.458357] NET: Registered protocol family 1
[ 8.535816] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 8.601354] pci 0000:00:0b.0: Found disabled HT MSI Mapping
[ 8.667933] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 8.733509] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 8.799043] pci 0000:00:0c.0: Found disabled HT MSI Mapping
[ 8.865624] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 8.931203] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 8.996742] pci 0000:00:0d.0: Found disabled HT MSI Mapping
[ 9.063322] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 9.128905] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 9.194446] pci 0000:00:0e.0: Found disabled HT MSI Mapping
[ 9.261027] pci 0000:00:00.0: Found enabled HT MSI Mapping
[ 9.326644] pci 0000:01:06.0: Boot video device
[ 9.326688] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.392225] pci 0000:80:0b.0: Found disabled HT MSI Mapping
[ 9.458799] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.524357] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.589889] pci 0000:80:0c.0: Found disabled HT MSI Mapping
[ 9.656464] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.722016] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.787550] pci 0000:80:0d.0: Found disabled HT MSI Mapping
[ 9.854128] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.919684] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 9.985220] pci 0000:80:0e.0: Found disabled HT MSI Mapping
[ 10.051795] pci 0000:80:00.0: Found enabled HT MSI Mapping
[ 10.117334] pci 0000:83:00.0: Disabling L0s
[ 10.167374] Trying to unpack rootfs image as initramfs...
[ 10.382688] Freeing initrd memory: 7632k freed
[ 10.443904] PCI-DMA: Disabling AGP.
[ 10.486132] PCI-DMA: aperture base @ 20000000 size 65536 KB
[ 10.552711] PCI-DMA: using GART IOMMU.
[ 10.597454] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
[ 10.680640] audit: initializing netlink socket (disabled)
[ 10.745162] type=2000 audit(1266153688.743:1): initialized
[ 10.824680] VFS: Disk quotas dquot_6.5.2
[ 10.871627] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 10.948665] msgmni has been set to 32768
[ 10.996142] alg: No test for stdrng (krng)
[ 11.045049] io scheduler noop registered
[ 11.091862] io scheduler anticipatory registered
[ 11.146995] io scheduler deadline registered
[ 11.198062] io scheduler cfq registered (default)
[ 11.254540] pcieport 0000:00:0b.0: irq 63 for MSI/MSI-X
[ 11.254546] pcieport 0000:00:0b.0: setting latency timer to 64
[ 11.254690] pcieport 0000:00:0c.0: irq 64 for MSI/MSI-X
[ 11.254694] pcieport 0000:00:0c.0: setting latency timer to 64
[ 11.254826] pcieport 0000:00:0d.0: irq 65 for MSI/MSI-X
[ 11.254830] pcieport 0000:00:0d.0: setting latency timer to 64
[ 11.254963] pcieport 0000:00:0e.0: irq 66 for MSI/MSI-X
[ 11.254967] pcieport 0000:00:0e.0: setting latency timer to 64
[ 11.255212] pcieport 0000:80:0b.0: irq 67 for MSI/MSI-X
[ 11.255219] pcieport 0000:80:0b.0: setting latency timer to 64
[ 11.255374] pcieport 0000:80:0c.0: irq 68 for MSI/MSI-X
[ 11.255378] pcieport 0000:80:0c.0: setting latency timer to 64
[ 11.255498] pcieport 0000:80:0d.0: irq 69 for MSI/MSI-X
[ 11.255502] pcieport 0000:80:0d.0: setting latency timer to 64
[ 11.255629] pcieport 0000:80:0e.0: irq 70 for MSI/MSI-X
[ 11.255632] pcieport 0000:80:0e.0: setting latency timer to 64
[ 11.292622] hpet_acpi_add: no address or irqs in _CRS
[ 11.353097] Linux agpgart interface v0.103
[ 11.401992] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 11.477065] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 11.549536] 00:05: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 11.618787] brd: module loaded
[ 11.655296] input: Macintosh mouse button emulation as
/class/input/input0
[ 11.737518] Uniform Multi-Platform E-IDE driver
[ 11.791786] ide-gd driver 1.18
[ 11.828457] PNP: No PS/2 controller found. Probing ports directly.
[ 11.905417] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 11.964718] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 12.025439] mice: PS/2 mouse device common for all mice
[ 12.087918] cpuidle: using governor ladder
[ 12.137240] TCP cubic registered
[ 12.176796] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[ 12.251762] Freeing unused kernel memory: 496k freed
[ 12.472672] fuse init (API version 7.13)
[ 12.550508] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01)
initialised: dm-devel@redhat.com
[ 13.433996] usbcore: registered new interface driver usbfs
[ 13.434613] amd74xx 0000:00:06.0: UDMA133 controller
[ 13.434618] amd74xx 0000:00:06.0: IDE controller (0x10de:0x0053 rev 0xf2)
[ 13.434644] amd74xx 0000:00:06.0: IDE port disabled
[ 13.434671] amd74xx 0000:00:06.0: not 100% native mode: will probe
irqs later
[ 13.434677] ide0: BM-DMA at 0x2000-0x2007
[ 13.434691] Probing IDE interface ide0...
[ 13.450419] SCSI subsystem initialized
[ 13.452559] Intel(R) PRO/1000 Network Driver - version 7.3.21-k5-NAPI
[ 13.452563] Copyright (c) 1999-2006 Intel Corporation.
[ 13.455604] e1000 0000:06:01.0: PCI INT A -> GSI 48 (level, low) ->
IRQ 48
[ 13.462685] QLogic Fibre Channel HBA Driver: 8.03.01-k6
[ 13.465445] Fusion MPT base driver 3.04.12
[ 13.465448] Copyright (c) 1999-2008 LSI Corporation
[ 13.472151] Fusion MPT SAS Host driver 3.04.12
[ 14.323405] usbcore: registered new interface driver hub
[ 14.323786] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 19
[ 14.323794] qla2xxx 0000:04:00.0: PCI INT A -> Link[LNKD] -> GSI 19
(level, low) -> IRQ 19
[ 14.554310] qla2xxx 0000:04:00.0: Found an ISP2432, irq 19, iobase
0xffffc9000cdc6000
[ 14.647997] mptsas 0000:07:04.0: PCI INT A -> GSI 56 (level, low) ->
IRQ 56
[ 14.731362] usbcore: registered new device driver usb
[ 14.731410] mptbase: ioc0: Initiating bringup
[ 14.731806] qla2xxx 0000:04:00.0: irq 71 for MSI/MSI-X
[ 14.731851] qla2xxx 0000:04:00.0: Configuring PCI space...
[ 14.731856] qla2xxx 0000:04:00.0: setting latency timer to 64
[ 14.910829] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 14.912632] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 14.989839] e1000: 0000:06:01.0: e1000_probe: (PCI-X:133MHz:64-bit)
00:14:4f:a8:42:10
[ 15.015826] qla2xxx 0000:04:00.0: Configure NVRAM parameters...
[ 15.048894] qla2xxx 0000:04:00.0: Verifying loaded RISC code...
[ 15.068718] qla2xxx 0000:04:00.0: firmware: requesting ql2400_fw.bin
[ 15.069024] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network
Connection
[ 15.069112] e1000 0000:06:01.1: PCI INT B -> GSI 49 (level, low) ->
IRQ 49
[ 15.538106] qla2xxx 0000:04:00.0: Firmware image unavailable.
[ 15.623413] qla2xxx 0000:04:00.0: Firmware images can be retrieved
from: ftp://ftp.qlogic.com/outgoing/linux/firmware/.
[ 15.769006] qla2xxx 0000:04:00.0: FW: Loading from flash (20000)...
[ 16.290091] e1000: 0000:06:01.1: e1000_probe: (PCI-X:133MHz:64-bit)
00:14:4f:a8:42:11
[ 16.607395] hda: MATSHITACD-RW CW-8124, ATAPI CD/DVD-ROM drive
[ 16.731297] ioc0: LSISAS1064 A3: Capabilities={Initiator}
[ 16.872650] e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network
Connection
[ 16.971308] e1000 0000:06:02.0: PCI INT A -> GSI 50 (level, low) ->
IRQ 50
[ 17.398067] e1000: 0000:06:02.0: e1000_probe: (PCI-X:133MHz:64-bit)
00:14:4f:a8:42:12
[ 17.528599] e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network
Connection
[ 17.610818] e1000 0000:06:02.1: PCI INT B -> GSI 51 (level, low) ->
IRQ 51
[ 17.703302] hda: host max PIO5 wanted PIO255(auto-tune) selected PIO4
[ 17.703448] hda: UDMA/33 mode selected
[ 17.748364] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
[ 17.805110] ACPI: PCI Interrupt Link [LUS2] enabled at IRQ 22
[ 17.873777] ehci_hcd 0000:00:02.1: PCI INT B -> Link[LUS2] -> GSI 22
(level, low) -> IRQ 22
[ 18.216429] e1000: 0000:06:02.1: e1000_probe: (PCI-X:133MHz:64-bit)
00:14:4f:a8:42:13
[ 18.310182] ehci_hcd 0000:00:02.1: setting latency timer to 64
[ 18.310185] ehci_hcd 0000:00:02.1: EHCI Host Controller
[ 18.372676] ehci_hcd 0000:00:02.1: new USB bus registered, assigned
bus number 1
[ 18.461137] ehci_hcd 0000:00:02.1: debug port 1
[ 18.515232] ehci_hcd 0000:00:02.1: cache line size of 64 is not supported
[ 18.515307] qla2xxx 0000:04:00.0: Allocated (64 KB) for EFT...
[ 18.585006] ehci_hcd 0000:00:02.1: irq 22, io mem 0xfe5fec00
[ 18.652703] qla2xxx 0000:04:00.0: Allocated (1285 KB) for firmware
dump...
[ 18.744229] e1000: eth3: e1000_probe: Intel(R) PRO/1000 Network
Connection
[ 18.826743] libata version 3.00 loaded.
[ 18.835254] ehci_hcd 0000:00:02.1: USB 2.0 started, EHCI 1.00
[ 18.903960] scsi0 : qla2xxx
[ 18.937485] qla2xxx 0000:04:00.0:
[ 18.937486] QLogic Fibre Channel HBA Driver: 8.03.01-k6
[ 18.937486] QLogic QLE2460 - SG-(X)PCIE1FC-QF4, Sun StorageTek 4 Gb
FC Enterprise PCI-Express Single Channel
[ 18.937487] ISP2432: PCIe (2.5GT/s x4) @ 0000:04:00.0 hdma+,
host#=0, fw=4.00.26 (2)
[ 19.255792] qla2xxx 0000:04:00.0: LIP reset occurred (f8f7).
[ 19.323602] usb usb1: configuration #1 chosen from 1 choice
[ 19.390202] hub 1-0:1.0: USB hub found
[ 19.434942] hub 1-0:1.0: 7 ports detected
[ 19.483236] ACPI: PCI Interrupt Link [LUS0] enabled at IRQ 21
[ 19.551902] ohci_hcd 0000:00:02.0: PCI INT A -> Link[LUS0] -> GSI 21
(level, low) -> IRQ 21
[ 19.651804] ohci_hcd 0000:00:02.0: setting latency timer to 64
[ 19.651807] ohci_hcd 0000:00:02.0: OHCI Host Controller
[ 19.714229] ohci_hcd 0000:00:02.0: new USB bus registered, assigned
bus number 2
[ 19.802661] ohci_hcd 0000:00:02.0: irq 21, io mem 0xfe5ff000
[ 19.925267] usb usb2: configuration #1 chosen from 1 choice
[ 19.991877] hub 2-0:1.0: USB hub found
[ 20.036619] hub 2-0:1.0: 7 ports detected
[ 20.096052] ide-cd driver 5.00
[ 20.132966] ide-cd: hda: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache
[ 20.211045] Uniform CD-ROM driver Revision: 3.20
[ 20.743216] usb 1-6: new high speed USB device using ehci_hcd and
address 5
[ 20.956149] usb 1-6: configuration #1 chosen from 1 choice
[ 21.021791] hub 1-6:1.0: USB hub found
[ 21.066633] hub 1-6:1.0: 4 ports detected
[ 21.240568] qla2xxx 0000:04:00.0: LIP occurred (f7f7).
[ 21.301951] qla2xxx 0000:04:00.0: LIP reset occurred (f7f7).
[ 21.369585] qla2xxx 0000:04:00.0: LOOP UP detected (4 Gbps).
[ 21.486269] scsi 0:0:0:0: Direct-Access NEXSAN SATABeast2
Nf66 PQ: 1 ANSI: 5
[ 21.559221] usb 2-3: new full speed USB device using ohci_hcd and
address 2
[ 21.667777] scsi 0:0:0:4: Direct-Access NEXSAN SATABeast2
Nf66 PQ: 0 ANSI: 5
[ 21.677411] scsi 0:0:0:0: Attached scsi generic sg0 type 0
[ 21.771303] usb 2-3: configuration #1 chosen from 1 choice
[ 21.789196] usbcore: registered new interface driver hiddev
[ 21.794563] input: American Megatrends Inc. Virtual Keyboard and
Mouse as /class/input/input1
[ 21.794578] generic-usb 0003:046B:FF10.0001: input: USB HID v1.10
Keyboard [American Megatrends Inc. Virtual Keyboard and Mouse] on
usb-0000:00:02.0-3/input0
[ 21.800424] input: American Megatrends Inc. Virtual Keyboard and
Mouse as /class/input/input2
[ 21.800462] generic-usb 0003:046B:FF10.0002: input: USB HID v1.10
Mouse [American Megatrends Inc. Virtual Keyboard and Mouse] on
usb-0000:00:02.0-3/input1
[ 21.800494] usbcore: registered new interface driver usbhid
[ 21.800497] usbhid: v2.6:USB HID core driver
[ 22.083190] usb 2-4: new full speed USB device using ohci_hcd and
address 3
[ 22.295298] usb 2-4: configuration #1 chosen from 1 choice
[ 22.308341] usbcore: registered new interface driver libusual
[ 22.313809] Initializing USB Mass Storage driver...
[ 22.313934] scsi1 : SCSI emulation for USB Mass Storage devices
[ 22.314028] usb-storage: device found at 3
[ 22.314030] usb-storage: waiting for device to settle before scanning
[ 22.314038] usbcore: registered new interface driver usb-storage
[ 22.314041] USB Mass Storage support registered.
[ 22.603177] usb 2-5: new full speed USB device using ohci_hcd and
address 4
[ 22.815290] usb 2-5: configuration #1 chosen from 1 choice
[ 22.821300] scsi2 : SCSI emulation for USB Mass Storage devices
[ 22.821409] usb-storage: device found at 4
[ 22.821410] usb-storage: waiting for device to settle before scanning
[ 23.310317] sd 0:0:0:4: Attached scsi generic sg1 type 0
[ 23.311252] sd 0:0:0:4: [sda] 1953126400 512-byte logical blocks:
(1.00 TB/931 GiB)
[ 23.312406] sd 0:0:0:4: [sda] Write Protect is off
[ 23.312408] sd 0:0:0:4: [sda] Mode Sense: 97 00 00 08
[ 23.312920] sd 0:0:0:4: [sda] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 23.315312] sda: unknown partition table
[ 23.679159] scsi 0:0:0:5: Direct-Access NEXSAN SATABeast2
Nf66 PQ: 0 ANSI: 5
[ 23.681046] sd 0:0:0:4: [sda] Attached SCSI disk
[ 23.831121] sd 0:0:0:5: Attached scsi generic sg2 type 0
[ 23.832081] sd 0:0:0:5: [sdb] 15625000960 512-byte logical blocks:
(8.00 TB/7.27 TiB)
[ 23.833236] sd 0:0:0:5: [sdb] Write Protect is off
[ 23.833238] sd 0:0:0:5: [sdb] Mode Sense: 97 00 00 08
[ 23.833753] sd 0:0:0:5: [sdb] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 23.836151] sdb: unknown partition table
[ 24.202024] scsi 0:0:0:6: Direct-Access NEXSAN SATABeast2
Nf66 PQ: 0 ANSI: 5
[ 24.203921] sd 0:0:0:5: [sdb] Attached SCSI disk
[ 24.353990] sd 0:0:0:6: Attached scsi generic sg3 type 0
[ 24.354946] sd 0:0:0:6: [sdc] 15625000960 512-byte logical blocks:
(8.00 TB/7.27 TiB)
[ 24.356107] sd 0:0:0:6: [sdc] Write Protect is off
[ 24.356108] sd 0:0:0:6: [sdc] Mode Sense: 97 00 00 08
[ 24.356626] sd 0:0:0:6: [sdc] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 24.359012] sdc: unknown partition table
[ 24.724892] scsi 0:0:0:7: Direct-Access NEXSAN SATABeast2
Nf66 PQ: 0 ANSI: 5
[ 24.726783] sd 0:0:0:6: [sdc] Attached SCSI disk
[ 24.876872] sd 0:0:0:7: Attached scsi generic sg4 type 0
[ 24.877827] sd 0:0:0:7: [sdd] 3911623680 512-byte logical blocks:
(2.00 TB/1.82 TiB)
[ 24.878985] sd 0:0:0:7: [sdd] Write Protect is off
[ 24.878987] sd 0:0:0:7: [sdd] Mode Sense: 97 00 00 08
[ 24.879504] sd 0:0:0:7: [sdd] Write cache: enabled, read cache:
enabled, doesn't support DPO or FUA
[ 24.881895] sdd: unknown partition table
[ 25.248713] sd 0:0:0:7: [sdd] Attached SCSI disk
[ 27.364259] usb-storage: device scan complete
[ 27.371257] scsi 1:0:0:0: CD-ROM AMI Virtual CDROM
1.00 PQ: 0 ANSI: 0 CCS
[ 27.472544] scsi 1:0:0:0: Attached scsi generic sg5 type 5
[ 27.586244] sr0: scsi-1 drive
[ 27.621764] sr 1:0:0:0: Attached scsi CD-ROM sr0
[ 27.808482] scsi3 : ioc0: LSISAS1064 A3, FwRev=01102800h, Ports=1,
MaxQ=511, IRQ=56
[ 27.925397] mptsas: ioc0: attaching ssp device: fw_channel 0, fw_id
4, phy 0, sas_addr 0x5000cca000146e99
[ 28.041314] scsi 3:0:0:0: Direct-Access HITACHI H101414SCSUN146G
SA23 PQ: 0 ANSI: 5
[ 28.141216] scsi 3:0:0:0: Attached scsi generic sg6 type 0
[ 28.209102] mptsas: ioc0: attaching ssp device: fw_channel 0, fw_id
1, phy 1, sas_addr 0x5000cca000150b49
[ 28.324930] scsi 3:0:1:0: Direct-Access HITACHI H101414SCSUN146G
SA23 PQ: 0 ANSI: 5
[ 28.424397] scsi 3:0:1:0: Attached scsi generic sg7 type 0
[ 28.492157] mptsas: ioc0: attaching raid volume, channel 1, id 0
[ 28.565120] scsi 3:1:0:0: Direct-Access LSILOGIC Logical Volume
3000 PQ: 0 ANSI: 2
[ 28.670730] sd 3:1:0:0: Attached scsi generic sg8 type 0
[ 28.734497] sd 3:1:0:0: [sde] 285155328 512-byte logical blocks: (145
GB/135 GiB)
[ 28.824241] sd 3:1:0:0: [sde] Write Protect is off
[ 28.881460] sd 3:1:0:0: [sde] Mode Sense: 03 00 00 08
[ 28.881963] sd 3:1:0:0: [sde] Write cache: disabled, read cache:
enabled, doesn't support DPO or FUA
[ 28.992459] sde: sde1 sde2
[ 29.047216] sd 3:1:0:0: [sde] Attached SCSI disk
[ 29.179075] usb-storage: device scan complete
[ 29.204253] scsi 2:0:0:0: Direct-Access AMI Virtual Floppy
1.00 PQ: 0 ANSI: 0 CCS
[ 29.305544] sd 2:0:0:0: Attached scsi generic sg9 type 0
[ 29.492250] sd 2:0:0:0: [sdf] Attached SCSI removable disk
[ 29.767210] kjournald starting. Commit interval 5 seconds
[ 29.767212] EXT3-fs: mounted filesystem with writeback data mode.
[ 31.856893] input: Power Button as /class/input/input3
[ 31.860539] processor LNXCPU:00: registered as cooling_device0
[ 31.861100] processor LNXCPU:01: registered as cooling_device1
[ 31.861600] processor LNXCPU:02: registered as cooling_device2
[ 31.862105] processor LNXCPU:03: registered as cooling_device3
[ 31.862612] processor LNXCPU:04: registered as cooling_device4
[ 31.863135] processor LNXCPU:05: registered as cooling_device5
[ 31.863654] processor LNXCPU:06: registered as cooling_device6
[ 31.864160] processor LNXCPU:07: registered as cooling_device7
[ 31.864657] processor LNXCPU:08: registered as cooling_device8
[ 31.865167] processor LNXCPU:09: registered as cooling_device9
[ 31.865678] processor LNXCPU:0a: registered as cooling_device10
[ 31.866180] processor LNXCPU:0b: registered as cooling_device11
[ 31.866695] processor LNXCPU:0c: registered as cooling_device12
[ 31.867221] processor LNXCPU:0d: registered as cooling_device13
[ 31.867732] processor LNXCPU:0e: registered as cooling_device14
[ 31.868240] processor LNXCPU:0f: registered as cooling_device15
[ 32.070000] input: PC Speaker as /class/input/input4
[ 33.099000] ACPI: Power Button [PWRB]
[ 33.142798] input: Power Button as /class/input/input5
[ 33.158542] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 33.161090] shpchp 0000:00:10.0: HPC vendor_id 1022 device_id 7458
ss_vid 0 ss_did 0
[ 33.161095] shpchp 0000:00:10.0: Cannot reserve MMIO region
[ 33.161141] shpchp 0000:00:11.0: HPC vendor_id 1022 device_id 7458
ss_vid 0 ss_did 0
[ 33.161143] shpchp 0000:00:11.0: Cannot reserve MMIO region
[ 33.161192] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 33.166357] k8temp 0000:00:18.3: Temperature readouts might be wrong
- check erratum #141
[ 33.166552] k8temp 0000:00:19.3: Temperature readouts might be wrong
- check erratum #141
[ 33.167024] k8temp 0000:00:1a.3: Temperature readouts might be wrong
- check erratum #141
[ 33.167322] k8temp 0000:00:1b.3: Temperature readouts might be wrong
- check erratum #141
[ 33.167449] k8temp 0000:00:1c.3: Temperature readouts might be wrong
- check erratum #141
[ 33.167574] k8temp 0000:00:1d.3: Temperature readouts might be wrong
- check erratum #141
[ 34.255733] k8temp 0000:00:1e.3: Temperature readouts might be wrong
- check erratum #141
[ 34.258963] ACPI: Power Button [PWRF]
[ 34.280290] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver -
version 2.0.44-k2
[ 34.280293] ixgbe: Copyright (c) 1999-2009 Intel Corporation.
[ 34.281645] ACPI: PCI Interrupt Link [LN2A] enabled at IRQ 43
[ 34.281676] ixgbe 0000:82:00.0: PCI INT A -> Link[LN2A] -> GSI 43
(level, low) -> IRQ 43
[ 34.281692] ixgbe 0000:82:00.0: setting latency timer to 64
[ 34.725294] k8temp 0000:00:1f.3: Temperature readouts might be wrong
- check erratum #141
[ 34.823358] i2c i2c-0: nForce2 SMBus adapter at 0x6000
[ 34.885019] i2c i2c-1: nForce2 SMBus adapter at 0x6040
[ 34.996671] ixgbe 0000:82:00.0: irq 72 for MSI/MSI-X
[ 34.996674] ixgbe 0000:82:00.0: irq 73 for MSI/MSI-X
[ 34.996676] ixgbe 0000:82:00.0: irq 74 for MSI/MSI-X
[ 34.996679] ixgbe 0000:82:00.0: irq 75 for MSI/MSI-X
[ 34.996681] ixgbe 0000:82:00.0: irq 76 for MSI/MSI-X
[ 34.996683] ixgbe 0000:82:00.0: irq 77 for MSI/MSI-X
[ 34.996686] ixgbe 0000:82:00.0: irq 78 for MSI/MSI-X
[ 34.996688] ixgbe 0000:82:00.0: irq 79 for MSI/MSI-X
[ 34.996690] ixgbe 0000:82:00.0: irq 80 for MSI/MSI-X
[ 34.996692] ixgbe 0000:82:00.0: irq 81 for MSI/MSI-X
[ 34.996694] ixgbe 0000:82:00.0: irq 82 for MSI/MSI-X
[ 34.996697] ixgbe 0000:82:00.0: irq 83 for MSI/MSI-X
[ 34.996699] ixgbe 0000:82:00.0: irq 84 for MSI/MSI-X
[ 34.996701] ixgbe 0000:82:00.0: irq 85 for MSI/MSI-X
[ 34.996703] ixgbe 0000:82:00.0: irq 86 for MSI/MSI-X
[ 34.996706] ixgbe 0000:82:00.0: irq 87 for MSI/MSI-X
[ 34.996708] ixgbe 0000:82:00.0: irq 88 for MSI/MSI-X
[ 34.996710] ixgbe 0000:82:00.0: irq 89 for MSI/MSI-X
[ 34.996738] ixgbe: 0000:82:00.0: ixgbe_init_interrupt_scheme:
Multiqueue Enabled: Rx Queue count = 16, Tx Queue count = 16
[ 35.128844] ixgbe 0000:82:00.0: (PCI Express:2.5Gb/s:Width x4)
00:1b:21:4b:c8:9b
[ 35.217332] ixgbe 0000:82:00.0: MAC: 1, PHY: 1, PBA No: e73052-002
[ 35.291183] ixgbe 0000:82:00.0: PCI-Express bandwidth available for
this card is not sufficient for optimal performance.
[ 35.421196] ixgbe 0000:82:00.0: For optimal performance a x8
PCI-Express slot is required.
[ 35.520611] ixgbe 0000:82:00.0: Intel(R) 10 Gigabit Network Connection
[ 35.599018] ACPI: PCI Interrupt Link [LN2D] enabled at IRQ 42
[ 35.667675] ixgbe 0000:83:00.0: PCI INT A -> Link[LN2D] -> GSI 42
(level, low) -> IRQ 42
[ 35.764412] ixgbe 0000:83:00.0: setting latency timer to 64
[ 35.832194] ixgbe 0000:83:00.0: irq 90 for MSI/MSI-X
[ 35.832197] ixgbe 0000:83:00.0: irq 91 for MSI/MSI-X
[ 35.832199] ixgbe 0000:83:00.0: irq 92 for MSI/MSI-X
[ 35.832201] ixgbe 0000:83:00.0: irq 93 for MSI/MSI-X
[ 35.832204] ixgbe 0000:83:00.0: irq 94 for MSI/MSI-X
[ 35.832206] ixgbe 0000:83:00.0: irq 95 for MSI/MSI-X
[ 35.832208] ixgbe 0000:83:00.0: irq 96 for MSI/MSI-X
[ 35.832210] ixgbe 0000:83:00.0: irq 97 for MSI/MSI-X
[ 35.832213] ixgbe 0000:83:00.0: irq 98 for MSI/MSI-X
[ 35.832215] ixgbe 0000:83:00.0: irq 99 for MSI/MSI-X
[ 35.832217] ixgbe 0000:83:00.0: irq 100 for MSI/MSI-X
[ 35.832219] ixgbe 0000:83:00.0: irq 101 for MSI/MSI-X
[ 35.832222] ixgbe 0000:83:00.0: irq 102 for MSI/MSI-X
[ 35.832224] ixgbe 0000:83:00.0: irq 103 for MSI/MSI-X
[ 35.832226] ixgbe 0000:83:00.0: irq 104 for MSI/MSI-X
[ 35.832229] ixgbe 0000:83:00.0: irq 105 for MSI/MSI-X
[ 35.832231] ixgbe 0000:83:00.0: irq 106 for MSI/MSI-X
[ 35.832233] ixgbe 0000:83:00.0: irq 107 for MSI/MSI-X
[ 35.832254] ixgbe: 0000:83:00.0: ixgbe_init_interrupt_scheme:
Multiqueue Enabled: Rx Queue count = 16, Tx Queue count = 16
[ 35.964352] ixgbe 0000:83:00.0: (PCI Express:2.5Gb/s:Width x8)
00:1b:21:34:ee:9a
[ 36.052838] ixgbe 0000:83:00.0: MAC: 1, PHY: 3, PBA No: e18269-001
[ 36.127154] ixgbe 0000:83:00.0: Intel(R) 10 Gigabit Network Connection
[ 36.128555] udev: renamed network interface eth5 to eth6
[ 36.268962] ACPI: PCI Interrupt Link [LN2C] enabled at IRQ 41
[ 36.337623] ixgbe 0000:84:00.0: PCI INT A -> Link[LN2C] -> GSI 41
(level, low) -> IRQ 41
[ 36.434373] ixgbe 0000:84:00.0: setting latency timer to 64
[ 36.500394] ixgbe 0000:84:00.0: irq 108 for MSI/MSI-X
[ 36.500396] ixgbe 0000:84:00.0: irq 109 for MSI/MSI-X
[ 36.500398] ixgbe 0000:84:00.0: irq 110 for MSI/MSI-X
[ 36.500401] ixgbe 0000:84:00.0: irq 111 for MSI/MSI-X
[ 36.500403] ixgbe 0000:84:00.0: irq 112 for MSI/MSI-X
[ 36.500405] ixgbe 0000:84:00.0: irq 113 for MSI/MSI-X
[ 36.500407] ixgbe 0000:84:00.0: irq 114 for MSI/MSI-X
[ 36.500409] ixgbe 0000:84:00.0: irq 115 for MSI/MSI-X
[ 36.500412] ixgbe 0000:84:00.0: irq 116 for MSI/MSI-X
[ 36.500414] ixgbe 0000:84:00.0: irq 117 for MSI/MSI-X
[ 36.500416] ixgbe 0000:84:00.0: irq 118 for MSI/MSI-X
[ 36.500418] ixgbe 0000:84:00.0: irq 119 for MSI/MSI-X
[ 36.500420] ixgbe 0000:84:00.0: irq 120 for MSI/MSI-X
[ 36.500423] ixgbe 0000:84:00.0: irq 121 for MSI/MSI-X
[ 36.500425] ixgbe 0000:84:00.0: irq 122 for MSI/MSI-X
[ 36.500427] ixgbe 0000:84:00.0: irq 123 for MSI/MSI-X
[ 36.500429] ixgbe 0000:84:00.0: irq 124 for MSI/MSI-X
[ 36.500431] ixgbe 0000:84:00.0: irq 125 for MSI/MSI-X
[ 36.500454] ixgbe: 0000:84:00.0: ixgbe_init_interrupt_scheme:
Multiqueue Enabled: Rx Queue count = 16, Tx Queue count = 16
[ 36.632551] ixgbe 0000:84:00.0: (PCI Express:2.5Gb/s:Width x8)
00:1b:21:4b:c8:b1
[ 36.721033] ixgbe 0000:84:00.0: MAC: 1, PHY: 1, PBA No: e73052-002
[ 36.795405] ixgbe 0000:84:00.0: Intel(R) 10 Gigabit Network Connection
[ 36.796641] udev: renamed network interface eth5 to eth8
[ 36.939270] udev: renamed network interface eth4 to eth7
[ 37.156916] loop: module loaded
[ 37.223422] lp: driver loaded but no devices found
[ 37.536852] Adding 31246416k swap on /dev/sde1. Priority:-1
extents:1 across:31246416k
[ 37.774048] EXT3 FS on sde2, internal journal
[ 37.866485] Loading iSCSI transport class v2.0-870.
[ 37.890303] iscsi: registered transport (tcp)
[ 37.941049] NET: Registered protocol family 10
[ 37.941868] lo: Disabled Privacy Extensions
[ 37.991415] iscsi: registered transport (iser)
[ 39.154043] EXT4-fs (sdb): mounted filesystem with ordered data mode
[ 39.621853] EXT4-fs (sdc): warning: mounting fs with errors, running
e2fsck is recommended
[ 39.843059] EXT4-fs (sdc): mounted filesystem with ordered data mode
[ 39.965493] kjournald starting. Commit interval 5 seconds
[ 39.966733] EXT3 FS on sdd, internal journal
[ 39.966739] EXT3-fs: mounted filesystem with writeback data mode.
[ 44.189320] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 44.248301] Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
[ 44.248310] bonding: MII link monitoring set to 100 ms
[ 44.253133] ADDRCONF(NETDEV_UP): bond0: link is not ready
[ 44.670362] bonding: bond0: enslaving eth7 as a backup interface with
a down link.
[ 45.082294] bonding: bond0: enslaving eth8 as a backup interface with
a down link.
[ 49.586682] ixgbe: eth8 NIC Link is Up 10 Gbps, Flow Control: None
[ 49.646677] bonding: bond0: link status definitely up for interface eth8.
[ 49.650146] ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
[ 53.325580] RPC: Registered udp transport module.
[ 53.325583] RPC: Registered tcp transport module.
[ 53.325585] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 53.469713] ixgbe: eth7 NIC Link is Up 10 Gbps, Flow Control: None
[ 53.546605] bonding: bond0: link status definitely up for interface eth7.
[ 55.836193] warning: `named' uses 32-bit capabilities (legacy support
in use)
[ 57.840835] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 57.881306] svc: failed to register lockdv1 RPC service (errno 97).
[ 57.882023] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state
recovery directory
[ 57.889030] NFSD: starting 90-second grace period
[ 59.236421] ipmi message handler version 39.2
[ 60.602473] bond0: no IPv6 routers present
[ 1778.485939] nfs: server hest not responding, still trying
[ 1779.281922] nfs: server hest not responding, still trying
[ 1786.901829] nfs: server hest not responding, still trying
[ 1788.805807] nfs: server hest not responding, still trying
[ 1819.605443] nfs: server hest not responding, still trying
[ 1819.617434] nfs: server hest not responding, still trying
[ 1819.617450] nfs: server hest not responding, still trying
[ 1819.617458] nfs: server hest not responding, still trying
[ 1820.249427] nfs: server hest not responding, still trying
[ 1823.569386] nfs: server hest not responding, still trying
[ 1825.213365] nfs: server hest not responding, still trying
[ 1833.779042] nfs: server hest OK
[ 1833.779146] nfs: server hest OK
[ 1833.779196] nfs: server hest OK
[ 1833.780481] nfs: server hest OK
[ 1833.780588] nfs: server hest OK
[ 1833.783157] nfs: server hest OK
[ 2056.538398] INFO: task nfsd:6779 blocked for more than 120 seconds.
[ 2056.613319] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
disables this message.
[ 2056.706960] nfsd D ffff880f11e0df08 0 6779 2
0x00000000
[ 2056.706964] ffff8804fe482a70 0000000000000046 0000000000000000
ffffffff8106688d
[ 2056.706967] ffff8804fbd5bfd8 ffff8804fbd68000 0000000000004000
000000000000df08
[ 2056.706970] 00000000000135c0 ffff8804fbd5bfd8 ffff8804fbd5bfd8
00000000000135c0
[ 2056.706973] Call Trace:
[ 2056.706983] [<ffffffff8106688d>] ? set_groups+0x1d/0x1c0
[ 2056.706990] [<ffffffff812ea212>] ? __mutex_lock_slowpath+0xc2/0x140
[ 2056.707020] [<ffffffffa0490360>] ? svc_recvfrom+0x60/0xa0 [sunrpc]
[ 2056.707023] [<ffffffff812ea0a3>] ? mutex_lock+0x23/0x50
[ 2056.707042] [<ffffffffa056a76c>] ? nfsd_unlink+0x13c/0x2f0 [nfsd]
[ 2056.707049] [<ffffffffa057394f>] ? nfsd3_proc_remove+0x7f/0x100 [nfsd]
[ 2056.707055] [<ffffffffa0566331>] ? nfsd_dispatch+0xb1/0x240 [nfsd]
[ 2056.707063] [<ffffffffa048eef3>] ? svc_process+0x493/0x7f0 [sunrpc]
[ 2056.707068] [<ffffffff8103b470>] ? default_wake_function+0x0/0x10
[ 2056.707072] [<ffffffff812eaf92>] ? __down_read+0x12/0xad
[ 2056.707076] [<ffffffffa05667e0>] ? nfsd+0x0/0x140 [nfsd]
[ 2056.707081] [<ffffffffa056688f>] ? nfsd+0xaf/0x140 [nfsd]
[ 2056.707085] [<ffffffff81060626>] ? kthread+0x96/0xa0
[ 2056.707088] [<ffffffff8100cc5a>] ? child_rip+0xa/0x20
[ 2056.707093] [<ffffffff81025230>] ? physflat_send_IPI_mask+0x0/0x10
[ 2056.707095] [<ffffffff81060590>] ? kthread+0x0/0xa0
[ 2056.707097] [<ffffffff8100cc50>] ? child_rip+0x0/0x20
[ 2056.707101] INFO: task nfsd:6790 blocked for more than 120 seconds.
[ 2056.782013] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
disables this message.
[ 2056.875650] nfsd D ffff880f11f0df08 0 6790 2
0x00000000
[ 2056.875653] ffff8804fe4842b0 0000000000000046 0000000000000000
ffffffff8106688d
[ 2056.875656] ffff8804fbd81fd8 ffff8804fbd6c2b0 0000000000004000
000000000000df08
[ 2056.875658] 00000000000135c0 ffff8804fbd81fd8 ffff8804fbd81fd8
00000000000135c0
[ 2056.875661] Call Trace:
[ 2056.875663] [<ffffffff8106688d>] ? set_groups+0x1d/0x1c0
[ 2056.875666] [<ffffffff812ea212>] ? __mutex_lock_slowpath+0xc2/0x140
[ 2056.875674] [<ffffffffa0490360>] ? svc_recvfrom+0x60/0xa0 [sunrpc]
[ 2056.875677] [<ffffffff812ea0a3>] ? mutex_lock+0x23/0x50
[ 2056.875682] [<ffffffffa056a76c>] ? nfsd_unlink+0x13c/0x2f0 [nfsd]
[ 2056.875688] [<ffffffffa057394f>] ? nfsd3_proc_remove+0x7f/0x100 [nfsd]
[ 2056.875693] [<ffffffffa0566331>] ? nfsd_dispatch+0xb1/0x240 [nfsd]
[ 2056.875701] [<ffffffffa048eef3>] ? svc_process+0x493/0x7f0 [sunrpc]
[ 2056.875704] [<ffffffff8103b470>] ? default_wake_function+0x0/0x10
[ 2056.875706] [<ffffffff812eaf92>] ? __down_read+0x12/0xad
[ 2056.875711] [<ffffffffa05667e0>] ? nfsd+0x0/0x140 [nfsd]
[ 2056.875715] [<ffffffffa056688f>] ? nfsd+0xaf/0x140 [nfsd]
[ 2056.875718] [<ffffffff81060626>] ? kthread+0x96/0xa0
[ 2056.875720] [<ffffffff8100cc5a>] ? child_rip+0xa/0x20
[ 2056.875722] [<ffffffff81025230>] ? physflat_send_IPI_mask+0x0/0x10
[ 2056.875725] [<ffffffff81060590>] ? kthread+0x0/0xa0
[ 2056.875727] [<ffffffff8100cc50>] ? child_rip+0x0/0x20
[ 2162.745354] ixgbe: eth7: ixgbe_check_tx_hang: Detected Tx Unit Hang
[ 2162.745356] Tx Queue <4>
[ 2162.745356] TDH, TDT <e1>, <cc>
[ 2162.745357] next_to_use <cc>
[ 2162.745358] next_to_clean <e1>
[ 2162.745359] tx_buffer_info[next_to_clean]
[ 2162.745359] time_stamp <1000713d3>
[ 2162.745360] jiffies <10007152e>
[ 2163.162478] ixgbe: eth7: ixgbe_clean_tx_irq: tx hang 1 detected,
resetting adapter
[ 2163.357333] bonding: bond0: link status definitely down for interface
eth7, disabling it
[ 2168.670342] ixgbe: eth7 NIC Link is Up 10 Gbps, Flow Control: None
[ 2168.757248] bonding: bond0: link status definitely up for interface eth7.
^ permalink raw reply
* Re: linux-2..6.33-rc7 and b43
From: Larry Finger @ 2010-02-14 16:36 UTC (permalink / raw)
To: Thomas Backlund; +Cc: linux-wireless, netdev
In-Reply-To: <4B77C819.9050602@mandriva.org>
[-- Attachment #1: Type: text/plain, Size: 2418 bytes --]
On 02/14/2010 03:53 AM, Thomas Backlund wrote:
> Hi,
> (please cc me on replies)
>
> We have a user that tried out b43, but got this in the logs:
>
> --- cut ---
> 65858:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
> support DMA on your system. Please use PIO instead. 65859:Feb 9
> 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO must
> be set in your kernel configuration.
> 65860:Feb 9 22:05:16 elmo kernel: b43-phy2 debug: Adding Interface type 2
> 65861:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: Fatal DMA error:
> 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
>
> 65862:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: This device does not
> support DMA on your system. Please use PIO instead.
> 65863:Feb 9 22:05:16 elmo kernel: b43-phy2 ERROR: CONFIG_B43_FORCE_PIO
> must be set in your kernel configuration.
> --- cut ---
>
>
>
> But reading the Kconfig help, it states:
> --- cut ---
> config B43_FORCE_PIO
> bool "Force usage of PIO instead of DMA"
> depends on B43 && B43_DEBUG
> ---help---
> This will disable DMA and always enable PIO instead.
>
> Say N!
> This is only for debugging the PIO engine code. You do
> _NOT_ want to enable this.
> --- cut ---
>
>
> So,
> wich one is it ?
>
> Do I belive the dmesg output, or the Kconfig ?
>
> Note,
> the b43 works for the user if he enable the CONFIG_B43_FORCE_PIO.
>
> But I'm thinking of this problem from a distro point of view.
> Will it break for others if I enable it ?
>From a distro point of view, you would not want to set FORCE_PIO as the
performance penalty would be very large.
You do not give the specific details on the problem system; however, it is
probably a BCM4312 802.11 b/g device with PCI ID 14e4:4315 being used with an
Atom processor in a netbook. We have no fix.
In the 2.6.34 code, b43 will be changed to allow the selection of PIO mode at
run time rather than compile time. For a distro, this method is clearly
superior. Those users that need PIO can select it without forcing the
performance penalty on everyone. The patch was too late for the 2.6.33 merge,
and too intrusive to be applied to 2.6.33-rcX. It has been present in the
wireless-testing code base for 2 months with no trouble reported, thus it should
be safe for inclusion in your kernels. The relevant patch is attached.
Larry
[-- Attachment #2: b43_allow_pio_at_run_time --]
[-- Type: text/plain, Size: 7026 bytes --]
commit b02914af4d7020828ce921a572589dd793517c09
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date: Thu Dec 10 17:35:01 2009 -0600
b43: Allow PIO mode to be selected at module load
If userencounter the "Fatal DMA Problem" with a BCM43XX device, and
still wish to use b43 as the driver, their only option is to rebuild
the kernel with CONFIG_B43_FORCE_PIO. This patch removes this option and
allows PIO mode to be selected with a load-time parameter for the module.
Note that the configuration variable CONFIG_B43_PIO is also removed.
Once the DMA problem with the BCM4312 devices is solved, this patch will
likely be reverted.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: John Daiker <daikerjohn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/b43/Kconfig b/drivers/net/wireless/b43/Kconfig
index 64c12e1..073be56 100644
--- a/drivers/net/wireless/b43/Kconfig
+++ b/drivers/net/wireless/b43/Kconfig
@@ -3,6 +3,7 @@ config B43
depends on SSB_POSSIBLE && MAC80211 && HAS_DMA
select SSB
select FW_LOADER
+ select SSB_BLOCKIO
---help---
b43 is a driver for the Broadcom 43xx series wireless devices.
@@ -78,14 +79,6 @@ config B43_SDIO
If unsure, say N.
-# Data transfers to the device via PIO
-# This is only needed on PCMCIA and SDIO devices. All others can do DMA properly.
-config B43_PIO
- bool
- depends on B43 && (B43_SDIO || B43_PCMCIA || B43_FORCE_PIO)
- select SSB_BLOCKIO
- default y
-
config B43_NPHY
bool "Pre IEEE 802.11n support (BROKEN)"
depends on B43 && EXPERIMENTAL && BROKEN
@@ -137,12 +130,4 @@ config B43_DEBUG
for production use.
Only say Y, if you are debugging a problem in the b43 driver sourcecode.
-config B43_FORCE_PIO
- bool "Force usage of PIO instead of DMA"
- depends on B43 && B43_DEBUG
- ---help---
- This will disable DMA and always enable PIO instead.
- Say N!
- This is only for debugging the PIO engine code. You do
- _NOT_ want to enable this.
diff --git a/drivers/net/wireless/b43/Makefile b/drivers/net/wireless/b43/Makefile
index 84772a2..5e83b6f 100644
--- a/drivers/net/wireless/b43/Makefile
+++ b/drivers/net/wireless/b43/Makefile
@@ -12,7 +12,7 @@ b43-y += xmit.o
b43-y += lo.o
b43-y += wa.o
b43-y += dma.o
-b43-$(CONFIG_B43_PIO) += pio.o
+b43-y += pio.o
b43-y += rfkill.o
b43-$(CONFIG_B43_LEDS) += leds.o
b43-$(CONFIG_B43_PCMCIA) += pcmcia.o
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h
index fe3bf94..2f12a75 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -821,11 +821,9 @@ struct b43_wl {
/* The device LEDs. */
struct b43_leds leds;
-#ifdef CONFIG_B43_PIO
/* Kmalloc'ed scratch space for PIO TX/RX. Protected by wl->mutex. */
u8 pio_scratchspace[110] __attribute__((__aligned__(8)));
u8 pio_tailspace[4] __attribute__((__aligned__(8)));
-#endif /* CONFIG_B43_PIO */
};
static inline struct b43_wl *hw_to_b43_wl(struct ieee80211_hw *hw)
@@ -876,20 +874,9 @@ static inline void b43_write32(struct b43_wldev *dev, u16 offset, u32 value)
static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
{
-#ifdef CONFIG_B43_PIO
return dev->__using_pio_transfers;
-#else
- return 0;
-#endif
}
-#ifdef CONFIG_B43_FORCE_PIO
-# define B43_FORCE_PIO 1
-#else
-# define B43_FORCE_PIO 0
-#endif
-
-
/* Message printing */
void b43info(struct b43_wl *wl, const char *fmt, ...)
__attribute__ ((format(printf, 2, 3)));
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 027be27..5dd8a21 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -1760,7 +1760,6 @@ void b43_dma_tx_resume(struct b43_wldev *dev)
b43_power_saving_ctl_bits(dev, 0);
}
-#ifdef CONFIG_B43_PIO
static void direct_fifo_rx(struct b43_wldev *dev, enum b43_dmatype type,
u16 mmio_base, bool enable)
{
@@ -1794,4 +1793,3 @@ void b43_dma_direct_fifo_rx(struct b43_wldev *dev,
mmio_base = b43_dmacontroller_base(type, engine_index);
direct_fifo_rx(dev, type, mmio_base, enable);
}
-#endif /* CONFIG_B43_PIO */
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 19b4eae..b0b5ce9 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -102,6 +102,9 @@ int b43_modparam_verbose = B43_VERBOSITY_DEFAULT;
module_param_named(verbose, b43_modparam_verbose, int, 0644);
MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
+static int modparam_pio;
+module_param_named(pio, modparam_pio, int, 0444);
+MODULE_PARM_DESC(pio, "enable(1) / disable(0) PIO mode");
static const struct ssb_device_id b43_ssb_tbl[] = {
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
@@ -1786,8 +1789,8 @@ static void b43_do_interrupt_thread(struct b43_wldev *dev)
dma_reason[4], dma_reason[5]);
b43err(dev->wl, "This device does not support DMA "
"on your system. Please use PIO instead.\n");
- b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
- "your kernel configuration.\n");
+ b43err(dev->wl, "Unload the b43 module and reload "
+ "with 'pio=1'\n");
return;
}
if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
@@ -4353,7 +4356,7 @@ static int b43_wireless_core_init(struct b43_wldev *dev)
if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
(dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
- B43_FORCE_PIO) {
+ modparam_pio) {
dev->__using_pio_transfers = 1;
err = b43_pio_init(dev);
} else {
diff --git a/drivers/net/wireless/b43/pio.h b/drivers/net/wireless/b43/pio.h
index 7dd649c..7b3c42f 100644
--- a/drivers/net/wireless/b43/pio.h
+++ b/drivers/net/wireless/b43/pio.h
@@ -55,8 +55,6 @@
#define B43_PIO_MAX_NR_TXPACKETS 32
-#ifdef CONFIG_B43_PIO
-
struct b43_pio_txpacket {
/* Pointer to the TX queue we belong to. */
struct b43_pio_txqueue *queue;
@@ -169,42 +167,4 @@ void b43_pio_rx(struct b43_pio_rxqueue *q);
void b43_pio_tx_suspend(struct b43_wldev *dev);
void b43_pio_tx_resume(struct b43_wldev *dev);
-
-#else /* CONFIG_B43_PIO */
-
-
-static inline int b43_pio_init(struct b43_wldev *dev)
-{
- return 0;
-}
-static inline void b43_pio_free(struct b43_wldev *dev)
-{
-}
-static inline void b43_pio_stop(struct b43_wldev *dev)
-{
-}
-static inline int b43_pio_tx(struct b43_wldev *dev,
- struct sk_buff *skb)
-{
- return 0;
-}
-static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
- const struct b43_txstatus *status)
-{
-}
-static inline void b43_pio_get_tx_stats(struct b43_wldev *dev,
- struct ieee80211_tx_queue_stats *stats)
-{
-}
-static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
-{
-}
-static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
-{
-}
-static inline void b43_pio_tx_resume(struct b43_wldev *dev)
-{
-}
-
-#endif /* CONFIG_B43_PIO */
#endif /* B43_PIO_H_ */
^ permalink raw reply related
* PROPOSAL READ ATTACHMENT AND GET BACK TO ME
From: Mr. Johnson @ 2010-02-14 14:32 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 45 bytes --]
PROPOSAL READ ATTACHMENT AND GET BACK TO ME
[-- Attachment #2: MR. JOHNSON KHUNE.jpg --]
[-- Type: image/jpeg, Size: 233512 bytes --]
^ permalink raw reply
* [net-next-2.6 PATCH 7/7] xfrm: Allow user space manipulation of SPD mark
From: jamal @ 2010-02-14 15:18 UTC (permalink / raw)
To: timo.teras, kaber, herbert, davem; +Cc: netdev, Jamal Hadi Salim
In-Reply-To: <1266160732-946-7-git-send-email-hadi@cyberus.ca>
From: Jamal Hadi Salim <hadi@cyberus.ca>
Add ability for netlink userspace to manipulate the SPD
and manipulate the mark, retrieve it and get events with a defined
mark, etc.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
---
net/xfrm/xfrm_user.c | 31 +++++++++++++++++++++++++------
1 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 57b38a3..17a7d51 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -31,8 +31,6 @@
#include <linux/in6.h>
#endif
-#define DUMMY_MARK 0
-
static inline int aead_len(struct xfrm_algo_aead *alg)
{
return sizeof(*alg) + ((alg->alg_key_len + 7) / 8);
@@ -1234,6 +1232,8 @@ static struct xfrm_policy *xfrm_policy_construct(struct net *net, struct xfrm_us
if (err)
goto error;
+ xfrm_mark_get(attrs, &xp->mark);
+
return xp;
error:
*errp = err;
@@ -1380,10 +1380,13 @@ static int dump_one_policy(struct xfrm_policy *xp, int dir, int count, void *ptr
goto nlmsg_failure;
if (copy_to_user_policy_type(xp->type, skb) < 0)
goto nlmsg_failure;
+ if (xfrm_mark_put(skb, &xp->mark))
+ goto nla_put_failure;
nlmsg_end(skb, nlh);
return 0;
+nla_put_failure:
nlmsg_failure:
nlmsg_cancel(skb, nlh);
return -EMSGSIZE;
@@ -1455,6 +1458,8 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
int err;
struct km_event c;
int delete;
+ struct xfrm_kmark m;
+ u32 mark = xfrm_mark_get(attrs, &m);
p = nlmsg_data(nlh);
delete = nlh->nlmsg_type == XFRM_MSG_DELPOLICY;
@@ -1468,7 +1473,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
return err;
if (p->index)
- xp = xfrm_policy_byid(net, DUMMY_MARK, type, p->dir, p->index, delete, &err);
+ xp = xfrm_policy_byid(net, mark, type, p->dir, p->index, delete, &err);
else {
struct nlattr *rt = attrs[XFRMA_SEC_CTX];
struct xfrm_sec_ctx *ctx;
@@ -1485,7 +1490,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
if (err)
return err;
}
- xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir, &p->sel,
+ xp = xfrm_policy_bysel_ctx(net, mark, type, p->dir, &p->sel,
ctx, delete, &err);
security_xfrm_policy_free(ctx);
}
@@ -1722,13 +1727,15 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct xfrm_userpolicy_info *p = &up->pol;
u8 type = XFRM_POLICY_TYPE_MAIN;
int err = -ENOENT;
+ struct xfrm_kmark m;
+ u32 mark = xfrm_mark_get(attrs, &m);
err = copy_from_user_policy_type(&type, attrs);
if (err)
return err;
if (p->index)
- xp = xfrm_policy_byid(net, DUMMY_MARK, type, p->dir, p->index, 0, &err);
+ xp = xfrm_policy_byid(net, mark, type, p->dir, p->index, 0, &err);
else {
struct nlattr *rt = attrs[XFRMA_SEC_CTX];
struct xfrm_sec_ctx *ctx;
@@ -1745,7 +1752,7 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
if (err)
return err;
}
- xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir,
+ xp = xfrm_policy_bysel_ctx(net, mark, type, p->dir,
&p->sel, ctx, 0, &err);
security_xfrm_policy_free(ctx);
}
@@ -2417,9 +2424,12 @@ static int build_acquire(struct sk_buff *skb, struct xfrm_state *x,
goto nlmsg_failure;
if (copy_to_user_policy_type(xp->type, skb) < 0)
goto nlmsg_failure;
+ if (xfrm_mark_put(skb, &xp->mark))
+ goto nla_put_failure;
return nlmsg_end(skb, nlh);
+nla_put_failure:
nlmsg_failure:
nlmsg_cancel(skb, nlh);
return -EMSGSIZE;
@@ -2506,6 +2516,7 @@ static inline size_t xfrm_polexpire_msgsize(struct xfrm_policy *xp)
return NLMSG_ALIGN(sizeof(struct xfrm_user_polexpire))
+ nla_total_size(sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr)
+ nla_total_size(xfrm_user_sec_ctx_size(xp->security))
+ + nla_total_size(sizeof(struct xfrm_umark))
+ userpolicy_type_attrsize();
}
@@ -2528,10 +2539,13 @@ static int build_polexpire(struct sk_buff *skb, struct xfrm_policy *xp,
goto nlmsg_failure;
if (copy_to_user_policy_type(xp->type, skb) < 0)
goto nlmsg_failure;
+ if (xfrm_mark_put(skb, &xp->mark))
+ goto nla_put_failure;
upe->hard = !!hard;
return nlmsg_end(skb, nlh);
+nla_put_failure:
nlmsg_failure:
nlmsg_cancel(skb, nlh);
return -EMSGSIZE;
@@ -2568,6 +2582,7 @@ static int xfrm_notify_policy(struct xfrm_policy *xp, int dir, struct km_event *
headlen = sizeof(*id);
}
len += userpolicy_type_attrsize();
+ len += nla_total_size(sizeof(struct xfrm_umark));
len += NLMSG_ALIGN(headlen);
skb = nlmsg_new(len, GFP_ATOMIC);
@@ -2603,10 +2618,14 @@ static int xfrm_notify_policy(struct xfrm_policy *xp, int dir, struct km_event *
if (copy_to_user_policy_type(xp->type, skb) < 0)
goto nlmsg_failure;
+ if (xfrm_mark_put(skb, &xp->mark))
+ goto nla_put_failure;
+
nlmsg_end(skb, nlh);
return nlmsg_multicast(net->xfrm.nlsk, skb, 0, XFRMNLGRP_POLICY, GFP_ATOMIC);
+nla_put_failure:
nlmsg_failure:
kfree_skb(skb);
return -1;
--
1.6.0.4
^ permalink raw reply related
* [net-next-2.6 PATCH 6/7] xfrm: Allow user space config of SAD mark
From: jamal @ 2010-02-14 15:18 UTC (permalink / raw)
To: timo.teras, kaber, herbert, davem; +Cc: netdev, Jamal Hadi Salim
In-Reply-To: <1266160732-946-6-git-send-email-hadi@cyberus.ca>
From: Jamal Hadi Salim <hadi@cyberus.ca>
Add ability for netlink userspace to manipulate the SAD
and manipulate the mark, retrieve it and get events with a defined
mark.
MIGRATE may be added later.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
---
net/xfrm/xfrm_user.c | 72 +++++++++++++++++++++++++++++++++++++++----------
1 files changed, 57 insertions(+), 15 deletions(-)
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 6abe4c0..57b38a3 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -32,7 +32,6 @@
#endif
#define DUMMY_MARK 0
-static struct xfrm_kmark dummy_mark = {0, 0};
static inline int aead_len(struct xfrm_algo_aead *alg)
{
@@ -449,6 +448,8 @@ static struct xfrm_state *xfrm_state_construct(struct net *net,
goto error;
}
+ xfrm_mark_get(attrs, &x->mark);
+
err = xfrm_init_state(x);
if (err)
goto error;
@@ -529,11 +530,13 @@ static struct xfrm_state *xfrm_user_state_lookup(struct net *net,
int *errp)
{
struct xfrm_state *x = NULL;
+ struct xfrm_kmark m;
int err;
+ u32 mark = xfrm_mark_get(attrs, &m);
if (xfrm_id_proto_match(p->proto, IPSEC_PROTO_ANY)) {
err = -ESRCH;
- x = xfrm_state_lookup(net, DUMMY_MARK, &p->daddr, p->spi, p->proto, p->family);
+ x = xfrm_state_lookup(net, mark, &p->daddr, p->spi, p->proto, p->family);
} else {
xfrm_address_t *saddr = NULL;
@@ -544,7 +547,8 @@ static struct xfrm_state *xfrm_user_state_lookup(struct net *net,
}
err = -ESRCH;
- x = xfrm_state_lookup_byaddr(net, DUMMY_MARK, &p->daddr, saddr,
+ x = xfrm_state_lookup_byaddr(net, mark,
+ &p->daddr, saddr,
p->proto, p->family);
}
@@ -686,6 +690,9 @@ static int copy_to_user_state_extra(struct xfrm_state *x,
if (x->encap)
NLA_PUT(skb, XFRMA_ENCAP, sizeof(*x->encap), x->encap);
+ if (xfrm_mark_put(skb, &x->mark))
+ goto nla_put_failure;
+
if (x->security && copy_sec_ctx(x->security, skb) < 0)
goto nla_put_failure;
@@ -950,6 +957,8 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
xfrm_address_t *daddr;
int family;
int err;
+ u32 mark;
+ struct xfrm_kmark m;
p = nlmsg_data(nlh);
err = verify_userspi_info(p);
@@ -960,8 +969,10 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
daddr = &p->info.id.daddr;
x = NULL;
+
+ mark = xfrm_mark_get(attrs, &m);
if (p->info.seq) {
- x = xfrm_find_acq_byseq(net, DUMMY_MARK, p->info.seq);
+ x = xfrm_find_acq_byseq(net, mark, p->info.seq);
if (x && xfrm_addr_cmp(&x->id.daddr, daddr, family)) {
xfrm_state_put(x);
x = NULL;
@@ -969,7 +980,7 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
}
if (!x)
- x = xfrm_find_acq(net, &dummy_mark, p->info.mode, p->info.reqid,
+ x = xfrm_find_acq(net, &m, p->info.mode, p->info.reqid,
p->info.id.proto, daddr,
&p->info.saddr, 1,
family);
@@ -1474,8 +1485,8 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
if (err)
return err;
}
- xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir,
- &p->sel, ctx, delete, &err);
+ xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir, &p->sel,
+ ctx, delete, &err);
security_xfrm_policy_free(ctx);
}
if (xp == NULL)
@@ -1544,6 +1555,7 @@ static inline size_t xfrm_aevent_msgsize(void)
return NLMSG_ALIGN(sizeof(struct xfrm_aevent_id))
+ nla_total_size(sizeof(struct xfrm_replay_state))
+ nla_total_size(sizeof(struct xfrm_lifetime_cur))
+ + nla_total_size(sizeof(struct xfrm_umark))
+ nla_total_size(4) /* XFRM_AE_RTHR */
+ nla_total_size(4); /* XFRM_AE_ETHR */
}
@@ -1576,6 +1588,9 @@ static int build_aevent(struct sk_buff *skb, struct xfrm_state *x, struct km_eve
NLA_PUT_U32(skb, XFRMA_ETIMER_THRESH,
x->replay_maxage * 10 / HZ);
+ if (xfrm_mark_put(skb, &x->mark))
+ goto nla_put_failure;
+
return nlmsg_end(skb, nlh);
nla_put_failure:
@@ -1591,6 +1606,8 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
struct sk_buff *r_skb;
int err;
struct km_event c;
+ u32 mark;
+ struct xfrm_kmark m;
struct xfrm_aevent_id *p = nlmsg_data(nlh);
struct xfrm_usersa_id *id = &p->sa_id;
@@ -1598,7 +1615,9 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
if (r_skb == NULL)
return -ENOMEM;
- x = xfrm_state_lookup(net, DUMMY_MARK, &id->daddr, id->spi, id->proto, id->family);
+ mark = xfrm_mark_get(attrs, &m);
+
+ x = xfrm_state_lookup(net, mark, &id->daddr, id->spi, id->proto, id->family);
if (x == NULL) {
kfree_skb(r_skb);
return -ESRCH;
@@ -1629,6 +1648,8 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
struct xfrm_state *x;
struct km_event c;
int err = - EINVAL;
+ u32 mark = 0;
+ struct xfrm_kmark m;
struct xfrm_aevent_id *p = nlmsg_data(nlh);
struct nlattr *rp = attrs[XFRMA_REPLAY_VAL];
struct nlattr *lt = attrs[XFRMA_LTIME_VAL];
@@ -1640,7 +1661,9 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
if (!(nlh->nlmsg_flags&NLM_F_REPLACE))
return err;
- x = xfrm_state_lookup(net, DUMMY_MARK, &p->sa_id.daddr, p->sa_id.spi, p->sa_id.proto, p->sa_id.family);
+ mark = xfrm_mark_get(attrs, &m);
+
+ x = xfrm_state_lookup(net, mark, &p->sa_id.daddr, p->sa_id.spi, p->sa_id.proto, p->sa_id.family);
if (x == NULL)
return -ESRCH;
@@ -1722,7 +1745,8 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
if (err)
return err;
}
- xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir, &p->sel, ctx, 0, &err);
+ xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir,
+ &p->sel, ctx, 0, &err);
security_xfrm_policy_free(ctx);
}
if (xp == NULL)
@@ -1762,8 +1786,10 @@ static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
int err;
struct xfrm_user_expire *ue = nlmsg_data(nlh);
struct xfrm_usersa_info *p = &ue->state;
+ struct xfrm_kmark m;
+ u32 mark = xfrm_mark_get(attrs, &m);;
- x = xfrm_state_lookup(net, DUMMY_MARK, &p->id.daddr, p->id.spi, p->id.proto, p->family);
+ x = xfrm_state_lookup(net, mark, &p->id.daddr, p->id.spi, p->id.proto, p->family);
err = -ENOENT;
if (x == NULL)
@@ -1797,6 +1823,7 @@ static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct xfrm_user_tmpl *ut;
int i;
struct nlattr *rt = attrs[XFRMA_TMPL];
+ struct xfrm_kmark mark;
struct xfrm_user_acquire *ua = nlmsg_data(nlh);
struct xfrm_state *x = xfrm_state_alloc(net);
@@ -1805,6 +1832,8 @@ static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh,
if (!x)
goto nomem;
+ xfrm_mark_get(attrs, &mark);
+
err = verify_newpolicy_info(&ua->policy);
if (err)
goto bad_policy;
@@ -1817,7 +1846,8 @@ static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh,
memcpy(&x->id, &ua->id, sizeof(ua->id));
memcpy(&x->props.saddr, &ua->saddr, sizeof(ua->saddr));
memcpy(&x->sel, &ua->sel, sizeof(ua->sel));
-
+ xp->mark.m = x->mark.m = mark.m;
+ xp->mark.v = x->mark.v = mark.v;
ut = nla_data(rt);
/* extract the templates and for each call km_key */
for (i = 0; i < xp->xfrm_nr; i++, ut++) {
@@ -2077,6 +2107,7 @@ static const struct nla_policy xfrma_policy[XFRMA_MAX+1] = {
[XFRMA_POLICY_TYPE] = { .len = sizeof(struct xfrm_userpolicy_type)},
[XFRMA_MIGRATE] = { .len = sizeof(struct xfrm_user_migrate) },
[XFRMA_KMADDRESS] = { .len = sizeof(struct xfrm_user_kmaddress) },
+ [XFRMA_MARK] = { .len = sizeof(struct xfrm_umark) },
};
static struct xfrm_link {
@@ -2156,7 +2187,8 @@ static void xfrm_netlink_rcv(struct sk_buff *skb)
static inline size_t xfrm_expire_msgsize(void)
{
- return NLMSG_ALIGN(sizeof(struct xfrm_user_expire));
+ return NLMSG_ALIGN(sizeof(struct xfrm_user_expire))
+ + nla_total_size(sizeof(struct xfrm_umark));
}
static int build_expire(struct sk_buff *skb, struct xfrm_state *x, struct km_event *c)
@@ -2172,7 +2204,13 @@ static int build_expire(struct sk_buff *skb, struct xfrm_state *x, struct km_eve
copy_to_user_state(x, &ue->state);
ue->hard = (c->data.hard != 0) ? 1 : 0;
+ if (xfrm_mark_put(skb, &x->mark))
+ goto nla_put_failure;
+
return nlmsg_end(skb, nlh);
+
+nla_put_failure:
+ return -EMSGSIZE;
}
static int xfrm_exp_state_notify(struct xfrm_state *x, struct km_event *c)
@@ -2184,8 +2222,10 @@ static int xfrm_exp_state_notify(struct xfrm_state *x, struct km_event *c)
if (skb == NULL)
return -ENOMEM;
- if (build_expire(skb, x, c) < 0)
- BUG();
+ if (build_expire(skb, x, c) < 0) {
+ kfree_skb(skb);
+ return -EMSGSIZE;
+ }
return nlmsg_multicast(net->xfrm.nlsk, skb, 0, XFRMNLGRP_EXPIRE, GFP_ATOMIC);
}
@@ -2273,6 +2313,7 @@ static int xfrm_notify_sa(struct xfrm_state *x, struct km_event *c)
if (c->event == XFRM_MSG_DELSA) {
len += nla_total_size(headlen);
headlen = sizeof(*id);
+ len += nla_total_size(sizeof(struct xfrm_umark));
}
len += NLMSG_ALIGN(headlen);
@@ -2343,6 +2384,7 @@ static inline size_t xfrm_acquire_msgsize(struct xfrm_state *x,
{
return NLMSG_ALIGN(sizeof(struct xfrm_user_acquire))
+ nla_total_size(sizeof(struct xfrm_user_tmpl) * xp->xfrm_nr)
+ + nla_total_size(sizeof(struct xfrm_umark))
+ nla_total_size(xfrm_user_sec_ctx_size(x->security))
+ userpolicy_type_attrsize();
}
--
1.6.0.4
^ permalink raw reply related
* [net-next-2.6 PATCH 5/7] xfrm: SP lookups with mark
From: jamal @ 2010-02-14 15:18 UTC (permalink / raw)
To: timo.teras, kaber, herbert, davem; +Cc: netdev, Jamal Hadi Salim
In-Reply-To: <1266160732-946-5-git-send-email-hadi@cyberus.ca>
From: Jamal Hadi Salim <hadi@cyberus.ca>
Allow mark to be used when doing SP lookup
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
---
net/xfrm/xfrm_policy.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index e804aa5..38f40c4 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -556,6 +556,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
struct hlist_head *chain;
struct hlist_node *entry, *newpos;
struct dst_entry *gc_list;
+ u32 mark = policy->mark.v & policy->mark.m;
write_lock_bh(&xfrm_policy_lock);
chain = policy_hash_bysel(net, &policy->selector, policy->family, dir);
@@ -564,6 +565,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
hlist_for_each_entry(pol, entry, chain, bydst) {
if (pol->type == policy->type &&
!selector_cmp(&pol->selector, &policy->selector) &&
+ (mark & pol->mark.m) == pol->mark.v &&
xfrm_sec_ctx_match(pol->security, policy->security) &&
!WARN_ON(delpol)) {
if (excl) {
@@ -650,6 +652,7 @@ struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark, u8 type,
ret = NULL;
hlist_for_each_entry(pol, entry, chain, bydst) {
if (pol->type == type &&
+ (mark & pol->mark.m) == pol->mark.v &&
!selector_cmp(sel, &pol->selector) &&
xfrm_sec_ctx_match(ctx, pol->security)) {
xfrm_pol_hold(pol);
@@ -692,7 +695,8 @@ struct xfrm_policy *xfrm_policy_byid(struct net *net, u32 mark, u8 type,
chain = net->xfrm.policy_byidx + idx_hash(net, id);
ret = NULL;
hlist_for_each_entry(pol, entry, chain, byidx) {
- if (pol->type == type && pol->index == id) {
+ if (pol->type == type && pol->index == id &&
+ (mark & pol->mark.m) == pol->mark.v) {
xfrm_pol_hold(pol);
if (delete) {
*err = security_xfrm_policy_delete(
@@ -909,6 +913,7 @@ static int xfrm_policy_match(struct xfrm_policy *pol, struct flowi *fl,
int match, ret = -ESRCH;
if (pol->family != family ||
+ (fl->mark & pol->mark.m) != pol->mark.v ||
pol->type != type)
return ret;
@@ -1033,6 +1038,10 @@ static struct xfrm_policy *xfrm_sk_policy_lookup(struct sock *sk, int dir, struc
int err = 0;
if (match) {
+ if ((sk->sk_mark & pol->mark.m) != pol->mark.v) {
+ pol = NULL;
+ goto out;
+ }
err = security_xfrm_policy_lookup(pol->security,
fl->secid,
policy_to_flow_dir(dir));
@@ -1045,6 +1054,7 @@ static struct xfrm_policy *xfrm_sk_policy_lookup(struct sock *sk, int dir, struc
} else
pol = NULL;
}
+out:
read_unlock_bh(&xfrm_policy_lock);
return pol;
}
--
1.6.0.4
^ permalink raw reply related
* [net-next-2.6 PATCH 4/7] xfrm: SP lookups signature with mark
From: jamal @ 2010-02-14 15:18 UTC (permalink / raw)
To: timo.teras, kaber, herbert, davem; +Cc: netdev, Jamal Hadi Salim
In-Reply-To: <1266160732-946-4-git-send-email-hadi@cyberus.ca>
From: Jamal Hadi Salim <hadi@cyberus.ca>
pass mark to all SP lookups to prepare them for when we add code
to have them search.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
---
include/net/xfrm.h | 5 +++--
net/key/af_key.c | 4 ++--
net/xfrm/xfrm_policy.c | 8 ++++----
net/xfrm/xfrm_user.c | 10 +++++-----
4 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 96b6953..676f71b 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1456,11 +1456,12 @@ extern int xfrm_policy_walk(struct net *net, struct xfrm_policy_walk *walk,
int (*func)(struct xfrm_policy *, int, int, void*), void *);
extern void xfrm_policy_walk_done(struct xfrm_policy_walk *walk);
int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl);
-struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u8 type, int dir,
+struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark,
+ u8 type, int dir,
struct xfrm_selector *sel,
struct xfrm_sec_ctx *ctx, int delete,
int *err);
-struct xfrm_policy *xfrm_policy_byid(struct net *net, u8, int dir, u32 id, int delete, int *err);
+struct xfrm_policy *xfrm_policy_byid(struct net *net, u32 mark, u8, int dir, u32 id, int delete, int *err);
int xfrm_policy_flush(struct net *net, u8 type, struct xfrm_audit *audit_info);
u32 xfrm_get_acqseq(void);
extern int xfrm_alloc_spi(struct xfrm_state *x, u32 minspi, u32 maxspi);
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 4d652c8..31c87df 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -2348,7 +2348,7 @@ static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, struct sadb_msg
return err;
}
- xp = xfrm_policy_bysel_ctx(net, XFRM_POLICY_TYPE_MAIN,
+ xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, XFRM_POLICY_TYPE_MAIN,
pol->sadb_x_policy_dir - 1, &sel, pol_ctx,
1, &err);
security_xfrm_policy_free(pol_ctx);
@@ -2596,7 +2596,7 @@ static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
return -EINVAL;
delete = (hdr->sadb_msg_type == SADB_X_SPDDELETE2);
- xp = xfrm_policy_byid(net, XFRM_POLICY_TYPE_MAIN,
+ xp = xfrm_policy_byid(net, DUMMY_MARK, XFRM_POLICY_TYPE_MAIN,
dir, pol->sadb_x_policy_id, delete, &err);
if (xp == NULL)
return -ENOENT;
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 0ecb16a..e804aa5 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -635,8 +635,8 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
}
EXPORT_SYMBOL(xfrm_policy_insert);
-struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u8 type, int dir,
- struct xfrm_selector *sel,
+struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u32 mark, u8 type,
+ int dir, struct xfrm_selector *sel,
struct xfrm_sec_ctx *ctx, int delete,
int *err)
{
@@ -676,8 +676,8 @@ struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net, u8 type, int dir,
}
EXPORT_SYMBOL(xfrm_policy_bysel_ctx);
-struct xfrm_policy *xfrm_policy_byid(struct net *net, u8 type, int dir, u32 id,
- int delete, int *err)
+struct xfrm_policy *xfrm_policy_byid(struct net *net, u32 mark, u8 type,
+ int dir, u32 id, int delete, int *err)
{
struct xfrm_policy *pol, *ret;
struct hlist_head *chain;
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index a2c9823..6abe4c0 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -1457,7 +1457,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
return err;
if (p->index)
- xp = xfrm_policy_byid(net, type, p->dir, p->index, delete, &err);
+ xp = xfrm_policy_byid(net, DUMMY_MARK, type, p->dir, p->index, delete, &err);
else {
struct nlattr *rt = attrs[XFRMA_SEC_CTX];
struct xfrm_sec_ctx *ctx;
@@ -1474,8 +1474,8 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
if (err)
return err;
}
- xp = xfrm_policy_bysel_ctx(net, type, p->dir, &p->sel, ctx,
- delete, &err);
+ xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir,
+ &p->sel, ctx, delete, &err);
security_xfrm_policy_free(ctx);
}
if (xp == NULL)
@@ -1705,7 +1705,7 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
return err;
if (p->index)
- xp = xfrm_policy_byid(net, type, p->dir, p->index, 0, &err);
+ xp = xfrm_policy_byid(net, DUMMY_MARK, type, p->dir, p->index, 0, &err);
else {
struct nlattr *rt = attrs[XFRMA_SEC_CTX];
struct xfrm_sec_ctx *ctx;
@@ -1722,7 +1722,7 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
if (err)
return err;
}
- xp = xfrm_policy_bysel_ctx(net, type, p->dir, &p->sel, ctx, 0, &err);
+ xp = xfrm_policy_bysel_ctx(net, DUMMY_MARK, type, p->dir, &p->sel, ctx, 0, &err);
security_xfrm_policy_free(ctx);
}
if (xp == NULL)
--
1.6.0.4
^ permalink raw reply related
* [net-next-2.6 PATCH 3/7] xfrm: SA lookups with mark
From: jamal @ 2010-02-14 15:18 UTC (permalink / raw)
To: timo.teras, kaber, herbert, davem; +Cc: netdev, Jamal Hadi Salim
In-Reply-To: <1266160732-946-3-git-send-email-hadi@cyberus.ca>
From: Jamal Hadi Salim <hadi@cyberus.ca>
Allow mark to be added to the SA lookup
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
---
net/xfrm/xfrm_state.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index fcf0d9f..151c6d6 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -678,6 +678,8 @@ static struct xfrm_state *__xfrm_state_lookup(struct net *net, u32 mark, xfrm_ad
xfrm_addr_cmp(&x->id.daddr, daddr, family))
continue;
+ if ((mark & x->mark.m) != x->mark.v)
+ continue;
xfrm_state_hold(x);
return x;
}
@@ -698,6 +700,8 @@ static struct xfrm_state *__xfrm_state_lookup_byaddr(struct net *net, u32 mark,
xfrm_addr_cmp(&x->props.saddr, saddr, family))
continue;
+ if ((mark & x->mark.m) != x->mark.v)
+ continue;
xfrm_state_hold(x);
return x;
}
@@ -790,6 +794,7 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
if (x->props.family == family &&
x->props.reqid == tmpl->reqid &&
+ (mark & x->mark.m) == x->mark.v &&
!(x->props.flags & XFRM_STATE_WILDRECV) &&
xfrm_state_addr_check(x, daddr, saddr, family) &&
tmpl->mode == x->props.mode &&
@@ -805,6 +810,7 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h_wildcard, bydst) {
if (x->props.family == family &&
x->props.reqid == tmpl->reqid &&
+ (mark & x->mark.m) == x->mark.v &&
!(x->props.flags & XFRM_STATE_WILDRECV) &&
xfrm_state_addr_check(x, daddr, saddr, family) &&
tmpl->mode == x->props.mode &&
@@ -888,6 +894,7 @@ xfrm_stateonly_find(struct net *net, u32 mark,
hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
if (x->props.family == family &&
x->props.reqid == reqid &&
+ (mark & x->mark.m) == x->mark.v &&
!(x->props.flags & XFRM_STATE_WILDRECV) &&
xfrm_state_addr_check(x, daddr, saddr, family) &&
mode == x->props.mode &&
@@ -950,11 +957,13 @@ static void __xfrm_state_bump_genids(struct xfrm_state *xnew)
struct xfrm_state *x;
struct hlist_node *entry;
unsigned int h;
+ u32 mark = xnew->mark.v & xnew->mark.m;
h = xfrm_dst_hash(net, &xnew->id.daddr, &xnew->props.saddr, reqid, family);
hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
if (x->props.family == family &&
x->props.reqid == reqid &&
+ (mark & x->mark.m) == x->mark.v &&
!xfrm_addr_cmp(&x->id.daddr, &xnew->id.daddr, family) &&
!xfrm_addr_cmp(&x->props.saddr, &xnew->props.saddr, family))
x->genid = xfrm_state_genid;
@@ -976,6 +985,7 @@ static struct xfrm_state *__find_acq_core(struct net *net, struct xfrm_kmark *m,
unsigned int h = xfrm_dst_hash(net, daddr, saddr, reqid, family);
struct hlist_node *entry;
struct xfrm_state *x;
+ u32 mark = m->v & m->m;
hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
if (x->props.reqid != reqid ||
@@ -984,6 +994,7 @@ static struct xfrm_state *__find_acq_core(struct net *net, struct xfrm_kmark *m,
x->km.state != XFRM_STATE_ACQ ||
x->id.spi != 0 ||
x->id.proto != proto ||
+ (mark & x->mark.m) != x->mark.v ||
xfrm_addr_cmp(&x->id.daddr, daddr, family) ||
xfrm_addr_cmp(&x->props.saddr, saddr, family))
continue;
@@ -1444,6 +1455,7 @@ static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 mark, u32 s
hlist_for_each_entry(x, entry, net->xfrm.state_bydst+i, bydst) {
if (x->km.seq == seq &&
+ (mark & x->mark.m) == x->mark.v &&
x->km.state == XFRM_STATE_ACQ) {
xfrm_state_hold(x);
return x;
--
1.6.0.4
^ permalink raw reply related
* [net-next-2.6 PATCH 2/7] xfrm: SA lookups signature with mark
From: jamal @ 2010-02-14 15:18 UTC (permalink / raw)
To: timo.teras, kaber, herbert, davem; +Cc: netdev, Jamal Hadi Salim
In-Reply-To: <1266160732-946-2-git-send-email-hadi@cyberus.ca>
From: Jamal Hadi Salim <hadi@cyberus.ca>
pass mark to all SA lookups to prepare them for when we add code
to have them search.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
---
include/net/xfrm.h | 23 +++++++++++++-----
net/core/pktgen.c | 3 +-
net/ipv4/ah4.c | 2 +-
net/ipv4/esp4.c | 2 +-
net/ipv4/ipcomp.c | 6 +++-
net/ipv6/ah6.c | 2 +-
net/ipv6/esp6.c | 2 +-
net/ipv6/ipcomp6.c | 6 +++-
net/ipv6/xfrm6_input.c | 2 +-
net/key/af_key.c | 14 ++++++-----
net/xfrm/xfrm_input.c | 2 +-
net/xfrm/xfrm_state.c | 58 ++++++++++++++++++++++++++++-------------------
net/xfrm/xfrm_user.c | 17 ++++++++-----
13 files changed, 84 insertions(+), 55 deletions(-)
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 904527f..96b6953 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1325,7 +1325,7 @@ extern struct xfrm_state *xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t
struct flowi *fl, struct xfrm_tmpl *tmpl,
struct xfrm_policy *pol, int *err,
unsigned short family);
-extern struct xfrm_state * xfrm_stateonly_find(struct net *net,
+extern struct xfrm_state *xfrm_stateonly_find(struct net *net, u32 mark,
xfrm_address_t *daddr,
xfrm_address_t *saddr,
unsigned short family,
@@ -1334,8 +1334,14 @@ extern int xfrm_state_check_expire(struct xfrm_state *x);
extern void xfrm_state_insert(struct xfrm_state *x);
extern int xfrm_state_add(struct xfrm_state *x);
extern int xfrm_state_update(struct xfrm_state *x);
-extern struct xfrm_state *xfrm_state_lookup(struct net *net, xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family);
-extern struct xfrm_state *xfrm_state_lookup_byaddr(struct net *net, xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto, unsigned short family);
+extern struct xfrm_state *xfrm_state_lookup(struct net *net, u32 mark,
+ xfrm_address_t *daddr, __be32 spi,
+ u8 proto, unsigned short family);
+extern struct xfrm_state *xfrm_state_lookup_byaddr(struct net *net, u32 mark,
+ xfrm_address_t *daddr,
+ xfrm_address_t *saddr,
+ u8 proto,
+ unsigned short family);
#ifdef CONFIG_XFRM_SUB_POLICY
extern int xfrm_tmpl_sort(struct xfrm_tmpl **dst, struct xfrm_tmpl **src,
int n, unsigned short family);
@@ -1372,7 +1378,8 @@ struct xfrmk_spdinfo {
u32 spdhmcnt;
};
-extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq);
+extern struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 mark,
+ u32 seq);
extern int xfrm_state_delete(struct xfrm_state *x);
extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info);
extern void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si);
@@ -1457,9 +1464,11 @@ struct xfrm_policy *xfrm_policy_byid(struct net *net, u8, int dir, u32 id, int d
int xfrm_policy_flush(struct net *net, u8 type, struct xfrm_audit *audit_info);
u32 xfrm_get_acqseq(void);
extern int xfrm_alloc_spi(struct xfrm_state *x, u32 minspi, u32 maxspi);
-struct xfrm_state * xfrm_find_acq(struct net *net, u8 mode, u32 reqid, u8 proto,
- xfrm_address_t *daddr, xfrm_address_t *saddr,
- int create, unsigned short family);
+struct xfrm_state *xfrm_find_acq(struct net *net, struct xfrm_kmark *mark,
+ u8 mode, u32 reqid, u8 proto,
+ xfrm_address_t *daddr,
+ xfrm_address_t *saddr, int create,
+ unsigned short family);
extern int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol);
extern int xfrm_bundle_ok(struct xfrm_policy *pol, struct xfrm_dst *xdst,
struct flowi *fl, int family, int strict);
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 2e692af..4392381 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -2188,12 +2188,13 @@ static inline int f_pick(struct pktgen_dev *pkt_dev)
/* If there was already an IPSEC SA, we keep it as is, else
* we go look for it ...
*/
+#define DUMMY_MARK 0
static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
{
struct xfrm_state *x = pkt_dev->flows[flow].x;
if (!x) {
/*slow path: we dont already have xfrm_state*/
- x = xfrm_stateonly_find(&init_net,
+ x = xfrm_stateonly_find(&init_net, DUMMY_MARK,
(xfrm_address_t *)&pkt_dev->cur_daddr,
(xfrm_address_t *)&pkt_dev->cur_saddr,
AF_INET,
diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c
index 7ed3e4a..987b47d 100644
--- a/net/ipv4/ah4.c
+++ b/net/ipv4/ah4.c
@@ -393,7 +393,7 @@ static void ah4_err(struct sk_buff *skb, u32 info)
icmp_hdr(skb)->code != ICMP_FRAG_NEEDED)
return;
- x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET);
+ x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET);
if (!x)
return;
printk(KERN_DEBUG "pmtu discovery on SA AH/%08x/%08x\n",
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c
index 1948895..14ca1f1 100644
--- a/net/ipv4/esp4.c
+++ b/net/ipv4/esp4.c
@@ -422,7 +422,7 @@ static void esp4_err(struct sk_buff *skb, u32 info)
icmp_hdr(skb)->code != ICMP_FRAG_NEEDED)
return;
- x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr, esph->spi, IPPROTO_ESP, AF_INET);
+ x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, esph->spi, IPPROTO_ESP, AF_INET);
if (!x)
return;
NETDEBUG(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%08x\n",
diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c
index b55a0c3..b192e2f 100644
--- a/net/ipv4/ipcomp.c
+++ b/net/ipv4/ipcomp.c
@@ -36,7 +36,7 @@ static void ipcomp4_err(struct sk_buff *skb, u32 info)
return;
spi = htonl(ntohs(ipch->cpi));
- x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr,
+ x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr,
spi, IPPROTO_COMP, AF_INET);
if (!x)
return;
@@ -63,6 +63,7 @@ static struct xfrm_state *ipcomp_tunnel_create(struct xfrm_state *x)
t->props.mode = x->props.mode;
t->props.saddr.a4 = x->props.saddr.a4;
t->props.flags = x->props.flags;
+ memcpy(&t->mark, &x->mark, sizeof(t->mark));
if (xfrm_init_state(t))
goto error;
@@ -87,8 +88,9 @@ static int ipcomp_tunnel_attach(struct xfrm_state *x)
struct net *net = xs_net(x);
int err = 0;
struct xfrm_state *t;
+ u32 mark = x->mark.v & x->mark.m;
- t = xfrm_state_lookup(net, (xfrm_address_t *)&x->id.daddr.a4,
+ t = xfrm_state_lookup(net, mark, (xfrm_address_t *)&x->id.daddr.a4,
x->props.saddr.a4, IPPROTO_IPIP, AF_INET);
if (!t) {
t = ipcomp_tunnel_create(x);
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c
index c2f300c..5ac8902 100644
--- a/net/ipv6/ah6.c
+++ b/net/ipv6/ah6.c
@@ -614,7 +614,7 @@ static void ah6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
type != ICMPV6_PKT_TOOBIG)
return;
- x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET6);
+ x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET6);
if (!x)
return;
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c
index 668a46b..ee9b93b 100644
--- a/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -365,7 +365,7 @@ static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
type != ICMPV6_PKT_TOOBIG)
return;
- x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr, esph->spi, IPPROTO_ESP, AF_INET6);
+ x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, esph->spi, IPPROTO_ESP, AF_INET6);
if (!x)
return;
printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%pI6\n",
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c
index a9fbb15..26f4ab9 100644
--- a/net/ipv6/ipcomp6.c
+++ b/net/ipv6/ipcomp6.c
@@ -64,7 +64,7 @@ static void ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
return;
spi = htonl(ntohs(ipcomph->cpi));
- x = xfrm_state_lookup(net, (xfrm_address_t *)&iph->daddr, spi, IPPROTO_COMP, AF_INET6);
+ x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, spi, IPPROTO_COMP, AF_INET6);
if (!x)
return;
@@ -92,6 +92,7 @@ static struct xfrm_state *ipcomp6_tunnel_create(struct xfrm_state *x)
t->props.family = AF_INET6;
t->props.mode = x->props.mode;
memcpy(t->props.saddr.a6, x->props.saddr.a6, sizeof(struct in6_addr));
+ memcpy(&t->mark, &x->mark, sizeof(t->mark));
if (xfrm_init_state(t))
goto error;
@@ -114,10 +115,11 @@ static int ipcomp6_tunnel_attach(struct xfrm_state *x)
int err = 0;
struct xfrm_state *t = NULL;
__be32 spi;
+ u32 mark = x->mark.m & x->mark.v;
spi = xfrm6_tunnel_spi_lookup(net, (xfrm_address_t *)&x->props.saddr);
if (spi)
- t = xfrm_state_lookup(net, (xfrm_address_t *)&x->id.daddr,
+ t = xfrm_state_lookup(net, mark, (xfrm_address_t *)&x->id.daddr,
spi, IPPROTO_IPV6, AF_INET6);
if (!t) {
t = ipcomp6_tunnel_create(x);
diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c
index 9084582..2bc98ed 100644
--- a/net/ipv6/xfrm6_input.c
+++ b/net/ipv6/xfrm6_input.c
@@ -101,7 +101,7 @@ int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr,
break;
}
- x = xfrm_state_lookup_byaddr(net, dst, src, proto, AF_INET6);
+ x = xfrm_state_lookup_byaddr(net, skb->mark, dst, src, proto, AF_INET6);
if (!x)
continue;
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 79d2c0f..4d652c8 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -45,6 +45,8 @@ static DECLARE_WAIT_QUEUE_HEAD(pfkey_table_wait);
static DEFINE_RWLOCK(pfkey_table_lock);
static atomic_t pfkey_table_users = ATOMIC_INIT(0);
+#define DUMMY_MARK 0
+static struct xfrm_kmark dummy_mark = {0, 0};
struct pfkey_sock {
/* struct sock must be the first member of struct pfkey_sock */
struct sock sk;
@@ -691,7 +693,7 @@ static struct xfrm_state *pfkey_xfrm_state_lookup(struct net *net, struct sadb_
if (!xaddr)
return NULL;
- return xfrm_state_lookup(net, xaddr, sa->sadb_sa_spi, proto, family);
+ return xfrm_state_lookup(net, DUMMY_MARK, xaddr, sa->sadb_sa_spi, proto, family);
}
#define PFKEY_ALIGN8(a) (1 + (((a) - 1) | (8 - 1)))
@@ -1360,7 +1362,7 @@ static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
}
if (hdr->sadb_msg_seq) {
- x = xfrm_find_acq_byseq(net, hdr->sadb_msg_seq);
+ x = xfrm_find_acq_byseq(net, DUMMY_MARK, hdr->sadb_msg_seq);
if (x && xfrm_addr_cmp(&x->id.daddr, xdaddr, family)) {
xfrm_state_put(x);
x = NULL;
@@ -1368,7 +1370,7 @@ static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
}
if (!x)
- x = xfrm_find_acq(net, mode, reqid, proto, xdaddr, xsaddr, 1, family);
+ x = xfrm_find_acq(net, &dummy_mark, mode, reqid, proto, xdaddr, xsaddr, 1, family);
if (x == NULL)
return -ENOENT;
@@ -1417,7 +1419,7 @@ static int pfkey_acquire(struct sock *sk, struct sk_buff *skb, struct sadb_msg *
if (hdr->sadb_msg_seq == 0 || hdr->sadb_msg_errno == 0)
return 0;
- x = xfrm_find_acq_byseq(net, hdr->sadb_msg_seq);
+ x = xfrm_find_acq_byseq(net, DUMMY_MARK, hdr->sadb_msg_seq);
if (x == NULL)
return 0;
@@ -2594,8 +2596,8 @@ static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h
return -EINVAL;
delete = (hdr->sadb_msg_type == SADB_X_SPDDELETE2);
- xp = xfrm_policy_byid(net, XFRM_POLICY_TYPE_MAIN, dir,
- pol->sadb_x_policy_id, delete, &err);
+ xp = xfrm_policy_byid(net, XFRM_POLICY_TYPE_MAIN,
+ dir, pol->sadb_x_policy_id, delete, &err);
if (xp == NULL)
return -ENOENT;
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
index e0009c1..45f1c98 100644
--- a/net/xfrm/xfrm_input.c
+++ b/net/xfrm/xfrm_input.c
@@ -152,7 +152,7 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
goto drop;
}
- x = xfrm_state_lookup(net, daddr, spi, nexthdr, family);
+ x = xfrm_state_lookup(net, skb->mark, daddr, spi, nexthdr, family);
if (x == NULL) {
XFRM_INC_STATS(net, LINUX_MIB_XFRMINNOSTATES);
xfrm_audit_state_notfound(skb, family, spi, seq);
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index b36cc34..fcf0d9f 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -665,7 +665,7 @@ xfrm_init_tempsel(struct xfrm_state *x, struct flowi *fl,
return 0;
}
-static struct xfrm_state *__xfrm_state_lookup(struct net *net, xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
+static struct xfrm_state *__xfrm_state_lookup(struct net *net, u32 mark, xfrm_address_t *daddr, __be32 spi, u8 proto, unsigned short family)
{
unsigned int h = xfrm_spi_hash(net, daddr, spi, proto, family);
struct xfrm_state *x;
@@ -685,7 +685,7 @@ static struct xfrm_state *__xfrm_state_lookup(struct net *net, xfrm_address_t *d
return NULL;
}
-static struct xfrm_state *__xfrm_state_lookup_byaddr(struct net *net, xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto, unsigned short family)
+static struct xfrm_state *__xfrm_state_lookup_byaddr(struct net *net, u32 mark, xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto, unsigned short family)
{
unsigned int h = xfrm_src_hash(net, daddr, saddr, family);
struct xfrm_state *x;
@@ -709,12 +709,14 @@ static inline struct xfrm_state *
__xfrm_state_locate(struct xfrm_state *x, int use_spi, int family)
{
struct net *net = xs_net(x);
+ u32 mark = x->mark.v & x->mark.m;
if (use_spi)
- return __xfrm_state_lookup(net, &x->id.daddr, x->id.spi,
- x->id.proto, family);
+ return __xfrm_state_lookup(net, mark, &x->id.daddr,
+ x->id.spi, x->id.proto, family);
else
- return __xfrm_state_lookup_byaddr(net, &x->id.daddr,
+ return __xfrm_state_lookup_byaddr(net, mark,
+ &x->id.daddr,
&x->props.saddr,
x->id.proto, family);
}
@@ -779,6 +781,7 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
int acquire_in_progress = 0;
int error = 0;
struct xfrm_state *best = NULL;
+ u32 mark = pol->mark.v & pol->mark.m;
to_put = NULL;
@@ -815,7 +818,7 @@ found:
x = best;
if (!x && !error && !acquire_in_progress) {
if (tmpl->id.spi &&
- (x0 = __xfrm_state_lookup(net, daddr, tmpl->id.spi,
+ (x0 = __xfrm_state_lookup(net, mark, daddr, tmpl->id.spi,
tmpl->id.proto, family)) != NULL) {
to_put = x0;
error = -EEXIST;
@@ -829,6 +832,7 @@ found:
/* Initialize temporary selector matching only
* to current session. */
xfrm_init_tempsel(x, fl, tmpl, daddr, saddr, family);
+ memcpy(&x->mark, &pol->mark, sizeof(x->mark));
error = security_xfrm_state_alloc_acquire(x, pol->security, fl->secid);
if (error) {
@@ -871,7 +875,7 @@ out:
}
struct xfrm_state *
-xfrm_stateonly_find(struct net *net,
+xfrm_stateonly_find(struct net *net, u32 mark,
xfrm_address_t *daddr, xfrm_address_t *saddr,
unsigned short family, u8 mode, u8 proto, u32 reqid)
{
@@ -967,7 +971,7 @@ void xfrm_state_insert(struct xfrm_state *x)
EXPORT_SYMBOL(xfrm_state_insert);
/* xfrm_state_lock is held */
-static struct xfrm_state *__find_acq_core(struct net *net, unsigned short family, u8 mode, u32 reqid, u8 proto, xfrm_address_t *daddr, xfrm_address_t *saddr, int create)
+static struct xfrm_state *__find_acq_core(struct net *net, struct xfrm_kmark *m, unsigned short family, u8 mode, u32 reqid, u8 proto, xfrm_address_t *daddr, xfrm_address_t *saddr, int create)
{
unsigned int h = xfrm_dst_hash(net, daddr, saddr, reqid, family);
struct hlist_node *entry;
@@ -1022,6 +1026,8 @@ static struct xfrm_state *__find_acq_core(struct net *net, unsigned short family
x->props.family = family;
x->props.mode = mode;
x->props.reqid = reqid;
+ x->mark.v = m->v;
+ x->mark.m = m->m;
x->lft.hard_add_expires_seconds = net->xfrm.sysctl_acq_expires;
xfrm_state_hold(x);
tasklet_hrtimer_start(&x->mtimer, ktime_set(net->xfrm.sysctl_acq_expires, 0), HRTIMER_MODE_REL);
@@ -1038,7 +1044,7 @@ static struct xfrm_state *__find_acq_core(struct net *net, unsigned short family
return x;
}
-static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 seq);
+static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq);
int xfrm_state_add(struct xfrm_state *x)
{
@@ -1046,6 +1052,7 @@ int xfrm_state_add(struct xfrm_state *x)
struct xfrm_state *x1, *to_put;
int family;
int err;
+ u32 mark = x->mark.v & x->mark.m;
int use_spi = xfrm_id_proto_match(x->id.proto, IPSEC_PROTO_ANY);
family = x->props.family;
@@ -1063,7 +1070,7 @@ int xfrm_state_add(struct xfrm_state *x)
}
if (use_spi && x->km.seq) {
- x1 = __xfrm_find_acq_byseq(net, x->km.seq);
+ x1 = __xfrm_find_acq_byseq(net, mark, x->km.seq);
if (x1 && ((x1->id.proto != x->id.proto) ||
xfrm_addr_cmp(&x1->id.daddr, &x->id.daddr, family))) {
to_put = x1;
@@ -1072,8 +1079,8 @@ int xfrm_state_add(struct xfrm_state *x)
}
if (use_spi && !x1)
- x1 = __find_acq_core(net, family, x->props.mode, x->props.reqid,
- x->id.proto,
+ x1 = __find_acq_core(net, &x->mark, family, x->props.mode,
+ x->props.reqid, x->id.proto,
&x->id.daddr, &x->props.saddr, 0);
__xfrm_state_bump_genids(x);
@@ -1147,6 +1154,8 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, int *errp)
goto error;
}
+ memcpy(&x->mark, &orig->mark, sizeof(x->mark));
+
err = xfrm_init_state(x);
if (err)
goto error;
@@ -1344,41 +1353,41 @@ int xfrm_state_check_expire(struct xfrm_state *x)
EXPORT_SYMBOL(xfrm_state_check_expire);
struct xfrm_state *
-xfrm_state_lookup(struct net *net, xfrm_address_t *daddr, __be32 spi, u8 proto,
- unsigned short family)
+xfrm_state_lookup(struct net *net, u32 mark, xfrm_address_t *daddr, __be32 spi,
+ u8 proto, unsigned short family)
{
struct xfrm_state *x;
spin_lock_bh(&xfrm_state_lock);
- x = __xfrm_state_lookup(net, daddr, spi, proto, family);
+ x = __xfrm_state_lookup(net, mark, daddr, spi, proto, family);
spin_unlock_bh(&xfrm_state_lock);
return x;
}
EXPORT_SYMBOL(xfrm_state_lookup);
struct xfrm_state *
-xfrm_state_lookup_byaddr(struct net *net,
+xfrm_state_lookup_byaddr(struct net *net, u32 mark,
xfrm_address_t *daddr, xfrm_address_t *saddr,
u8 proto, unsigned short family)
{
struct xfrm_state *x;
spin_lock_bh(&xfrm_state_lock);
- x = __xfrm_state_lookup_byaddr(net, daddr, saddr, proto, family);
+ x = __xfrm_state_lookup_byaddr(net, mark, daddr, saddr, proto, family);
spin_unlock_bh(&xfrm_state_lock);
return x;
}
EXPORT_SYMBOL(xfrm_state_lookup_byaddr);
struct xfrm_state *
-xfrm_find_acq(struct net *net, u8 mode, u32 reqid, u8 proto,
+xfrm_find_acq(struct net *net, struct xfrm_kmark *mark, u8 mode, u32 reqid, u8 proto,
xfrm_address_t *daddr, xfrm_address_t *saddr,
int create, unsigned short family)
{
struct xfrm_state *x;
spin_lock_bh(&xfrm_state_lock);
- x = __find_acq_core(net, family, mode, reqid, proto, daddr, saddr, create);
+ x = __find_acq_core(net, mark, family, mode, reqid, proto, daddr, saddr, create);
spin_unlock_bh(&xfrm_state_lock);
return x;
@@ -1425,7 +1434,7 @@ EXPORT_SYMBOL(xfrm_state_sort);
/* Silly enough, but I'm lazy to build resolution list */
-static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 seq)
+static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq)
{
int i;
@@ -1444,12 +1453,12 @@ static struct xfrm_state *__xfrm_find_acq_byseq(struct net *net, u32 seq)
return NULL;
}
-struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 seq)
+struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq)
{
struct xfrm_state *x;
spin_lock_bh(&xfrm_state_lock);
- x = __xfrm_find_acq_byseq(net, seq);
+ x = __xfrm_find_acq_byseq(net, mark, seq);
spin_unlock_bh(&xfrm_state_lock);
return x;
}
@@ -1476,6 +1485,7 @@ int xfrm_alloc_spi(struct xfrm_state *x, u32 low, u32 high)
int err = -ENOENT;
__be32 minspi = htonl(low);
__be32 maxspi = htonl(high);
+ u32 mark = x->mark.v & x->mark.m;
spin_lock_bh(&x->lock);
if (x->km.state == XFRM_STATE_DEAD)
@@ -1488,7 +1498,7 @@ int xfrm_alloc_spi(struct xfrm_state *x, u32 low, u32 high)
err = -ENOENT;
if (minspi == maxspi) {
- x0 = xfrm_state_lookup(net, &x->id.daddr, minspi, x->id.proto, x->props.family);
+ x0 = xfrm_state_lookup(net, mark, &x->id.daddr, minspi, x->id.proto, x->props.family);
if (x0) {
xfrm_state_put(x0);
goto unlock;
@@ -1498,7 +1508,7 @@ int xfrm_alloc_spi(struct xfrm_state *x, u32 low, u32 high)
u32 spi = 0;
for (h=0; h<high-low+1; h++) {
spi = low + net_random()%(high-low+1);
- x0 = xfrm_state_lookup(net, &x->id.daddr, htonl(spi), x->id.proto, x->props.family);
+ x0 = xfrm_state_lookup(net, mark, &x->id.daddr, htonl(spi), x->id.proto, x->props.family);
if (x0 == NULL) {
x->id.spi = htonl(spi);
break;
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 943c871..a2c9823 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -31,6 +31,9 @@
#include <linux/in6.h>
#endif
+#define DUMMY_MARK 0
+static struct xfrm_kmark dummy_mark = {0, 0};
+
static inline int aead_len(struct xfrm_algo_aead *alg)
{
return sizeof(*alg) + ((alg->alg_key_len + 7) / 8);
@@ -530,7 +533,7 @@ static struct xfrm_state *xfrm_user_state_lookup(struct net *net,
if (xfrm_id_proto_match(p->proto, IPSEC_PROTO_ANY)) {
err = -ESRCH;
- x = xfrm_state_lookup(net, &p->daddr, p->spi, p->proto, p->family);
+ x = xfrm_state_lookup(net, DUMMY_MARK, &p->daddr, p->spi, p->proto, p->family);
} else {
xfrm_address_t *saddr = NULL;
@@ -541,7 +544,7 @@ static struct xfrm_state *xfrm_user_state_lookup(struct net *net,
}
err = -ESRCH;
- x = xfrm_state_lookup_byaddr(net, &p->daddr, saddr,
+ x = xfrm_state_lookup_byaddr(net, DUMMY_MARK, &p->daddr, saddr,
p->proto, p->family);
}
@@ -958,7 +961,7 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
x = NULL;
if (p->info.seq) {
- x = xfrm_find_acq_byseq(net, p->info.seq);
+ x = xfrm_find_acq_byseq(net, DUMMY_MARK, p->info.seq);
if (x && xfrm_addr_cmp(&x->id.daddr, daddr, family)) {
xfrm_state_put(x);
x = NULL;
@@ -966,7 +969,7 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
}
if (!x)
- x = xfrm_find_acq(net, p->info.mode, p->info.reqid,
+ x = xfrm_find_acq(net, &dummy_mark, p->info.mode, p->info.reqid,
p->info.id.proto, daddr,
&p->info.saddr, 1,
family);
@@ -1595,7 +1598,7 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
if (r_skb == NULL)
return -ENOMEM;
- x = xfrm_state_lookup(net, &id->daddr, id->spi, id->proto, id->family);
+ x = xfrm_state_lookup(net, DUMMY_MARK, &id->daddr, id->spi, id->proto, id->family);
if (x == NULL) {
kfree_skb(r_skb);
return -ESRCH;
@@ -1637,7 +1640,7 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
if (!(nlh->nlmsg_flags&NLM_F_REPLACE))
return err;
- x = xfrm_state_lookup(net, &p->sa_id.daddr, p->sa_id.spi, p->sa_id.proto, p->sa_id.family);
+ x = xfrm_state_lookup(net, DUMMY_MARK, &p->sa_id.daddr, p->sa_id.spi, p->sa_id.proto, p->sa_id.family);
if (x == NULL)
return -ESRCH;
@@ -1760,7 +1763,7 @@ static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct xfrm_user_expire *ue = nlmsg_data(nlh);
struct xfrm_usersa_info *p = &ue->state;
- x = xfrm_state_lookup(net, &p->id.daddr, p->id.spi, p->id.proto, p->family);
+ x = xfrm_state_lookup(net, DUMMY_MARK, &p->id.daddr, p->id.spi, p->id.proto, p->family);
err = -ENOENT;
if (x == NULL)
--
1.6.0.4
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox