Netdev List
 help / color / mirror / Atom feed
* [PATCH 7/7] ieee802154: add LIST_PHY command support
From: Dmitry Eremin-Solenikov @ 2009-09-15 22:13 UTC (permalink / raw)
  To: David S. Miller; +Cc: linux-zigbee-devel, Sergey Lapin, netdev
In-Reply-To: <1253052785-26190-7-git-send-email-dbaryshkov@gmail.com>

Add nl802154 command to get information about PHY's present in
the system.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 include/linux/nl802154.h |    1 +
 net/ieee802154/Makefile  |    2 +-
 net/ieee802154/netlink.c |    4 +
 net/ieee802154/nl-phy.c  |  175 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 181 insertions(+), 1 deletions(-)
 create mode 100644 net/ieee802154/nl-phy.c

diff --git a/include/linux/nl802154.h b/include/linux/nl802154.h
index b7d9435..8707678 100644
--- a/include/linux/nl802154.h
+++ b/include/linux/nl802154.h
@@ -114,6 +114,7 @@ enum {
 	IEEE802154_RX_ENABLE_CONF, /* Not supported yet */
 
 	IEEE802154_LIST_IFACE,
+	IEEE802154_LIST_PHY,
 
 	__IEEE802154_CMD_MAX,
 };
diff --git a/net/ieee802154/Makefile b/net/ieee802154/Makefile
index 69af9f6..ce2d335 100644
--- a/net/ieee802154/Makefile
+++ b/net/ieee802154/Makefile
@@ -1,5 +1,5 @@
 obj-$(CONFIG_IEEE802154) +=	ieee802154.o af_802154.o
-ieee802154-y		:= netlink.o nl-mac.o nl_policy.o wpan-class.o
+ieee802154-y		:= netlink.o nl-mac.o nl-phy.o nl_policy.o wpan-class.o
 af_802154-y		:= af_ieee802154.o raw.o dgram.o
 
 ccflags-y += -Wall -DDEBUG
diff --git a/net/ieee802154/netlink.c b/net/ieee802154/netlink.c
index 5b738ec..8a22173 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/netlink.c
@@ -87,6 +87,10 @@ int __init ieee802154_nl_init(void)
 	if (rc)
 		goto fail;
 
+	rc = nl802154_phy_register();
+	if (rc)
+		goto fail;
+
 	return 0;
 
 fail:
diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c
new file mode 100644
index 0000000..e9edecc
--- /dev/null
+++ b/net/ieee802154/nl-phy.c
@@ -0,0 +1,175 @@
+/*
+ * Netlink inteface for IEEE 802.15.4 stack
+ *
+ * Copyright 2007, 2008 Siemens AG
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Written by:
+ * Sergey Lapin <slapin@ossfans.org>
+ * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+ * Maxim Osipov <maxim.osipov@siemens.com>
+ */
+
+#include <linux/kernel.h>
+#include <net/netlink.h>
+#include <net/genetlink.h>
+#include <net/wpan-phy.h>
+#include <linux/nl802154.h>
+
+#include "ieee802154.h"
+
+static int ieee802154_nl_fill_phy(struct sk_buff *msg, u32 pid,
+	u32 seq, int flags, struct wpan_phy *phy)
+{
+	void *hdr;
+
+	pr_debug("%s\n", __func__);
+
+	hdr = genlmsg_put(msg, 0, seq, &nl802154_family, flags,
+		IEEE802154_LIST_PHY);
+	if (!hdr)
+		goto out;
+
+	mutex_lock(&phy->pib_lock);
+	NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, wpan_phy_name(phy));
+
+	NLA_PUT_U8(msg, IEEE802154_ATTR_PAGE, phy->current_page);
+	NLA_PUT_U8(msg, IEEE802154_ATTR_CHANNEL, phy->current_channel);
+
+	mutex_unlock(&phy->pib_lock);
+	return genlmsg_end(msg, hdr);
+
+nla_put_failure:
+	mutex_unlock(&phy->pib_lock);
+	genlmsg_cancel(msg, hdr);
+out:
+	return -EMSGSIZE;
+}
+
+static int ieee802154_list_phy(struct sk_buff *skb,
+	struct genl_info *info)
+{
+	/* Request for interface name, index, type, IEEE address,
+	   PAN Id, short address */
+	struct sk_buff *msg;
+	struct wpan_phy *phy;
+	const char *name;
+	int rc = -ENOBUFS;
+
+	pr_debug("%s\n", __func__);
+
+	if (!info->attrs[IEEE802154_ATTR_DEV_NAME])
+		return -EINVAL;
+
+	name = nla_data(info->attrs[IEEE802154_ATTR_DEV_NAME]);
+	if (name[nla_len(info->attrs[IEEE802154_ATTR_DEV_NAME]) - 1] != '\0')
+		return -EINVAL; /* phy name should be null-terminated */
+
+
+	phy = wpan_phy_find(name);
+	if (!phy)
+		return -ENODEV;
+
+	msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
+	if (!msg)
+		goto out_dev;
+
+	rc = ieee802154_nl_fill_phy(msg, info->snd_pid, info->snd_seq,
+			0, phy);
+	if (rc < 0)
+		goto out_free;
+
+	wpan_phy_put(phy);
+
+	return genlmsg_unicast(msg, info->snd_pid);
+out_free:
+	nlmsg_free(msg);
+out_dev:
+	wpan_phy_put(phy);
+	return rc;
+
+}
+
+struct dump_phy_data {
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+	int idx, s_idx;
+};
+
+static int ieee802154_dump_phy_iter(struct wpan_phy *phy, void *_data)
+{
+	int rc;
+	struct dump_phy_data *data = _data;
+
+	pr_debug("%s\n", __func__);
+
+	if (data->idx++ < data->s_idx)
+		return 0;
+
+	rc = ieee802154_nl_fill_phy(data->skb,
+			NETLINK_CB(data->cb->skb).pid,
+			data->cb->nlh->nlmsg_seq,
+			NLM_F_MULTI,
+			phy);
+
+	if (rc < 0) {
+		data->idx--;
+		return rc;
+	}
+
+	return 0;
+}
+
+static int ieee802154_dump_phy(struct sk_buff *skb,
+	struct netlink_callback *cb)
+{
+	struct dump_phy_data data = {
+		.cb = cb,
+		.skb = skb,
+		.s_idx = cb->args[0],
+		.idx = 0,
+	};
+
+	pr_debug("%s\n", __func__);
+
+	wpan_phy_for_each(ieee802154_dump_phy_iter, &data);
+
+	cb->args[0] = data.idx;
+
+	return skb->len;
+}
+
+static struct genl_ops ieee802154_phy_ops[] = {
+	IEEE802154_DUMP(IEEE802154_LIST_PHY, ieee802154_list_phy,
+							ieee802154_dump_phy),
+};
+
+/*
+ * No need to unregister as family unregistration will do it.
+ */
+int nl802154_phy_register(void)
+{
+	int i;
+	int rc;
+
+	for (i = 0; i < ARRAY_SIZE(ieee802154_phy_ops); i++) {
+		rc = genl_register_ops(&nl802154_family,
+				&ieee802154_phy_ops[i]);
+		if (rc)
+			return rc;
+	}
+
+	return 0;
+}
-- 
1.6.3.3


^ permalink raw reply related

* Re: igb bandwidth allocation configuration
From: Simon Horman @ 2009-09-15 22:29 UTC (permalink / raw)
  To: Alexander Duyck
  Cc: Or Gerlitz, e1000-devel@lists.sourceforge.net,
	netdev@vger.kernel.org, Alexander Duyck, Kirsher, Jeffrey T
In-Reply-To: <4AAFD690.5040900@intel.com>

On Tue, Sep 15, 2009 at 11:01:52AM -0700, Alexander Duyck wrote:
> Or Gerlitz wrote:
> >If the rate limiter is exposed as a feature of the VF, it doesn't
> >matter who really enforces it, the "VF portion" of the HW or the
> >PF itself. I agree that if you have to program the PF for the rate
> >of a specific VF, then its more complex. Basically, I would expect
> >that a VF can be configured with <mac, vlad-id, priority, rate>
> >such that it can be done where the VF NIC is spawned, host kernel
> >or guest kernel.
> 
> Adding the rate limiter as a feature of the VF doesn't make much
> sense since the VF could be direct assigned to another OS for all we
> know so we won't have control over it from there.
> 
> The interface for all of this would make sense as part of a virtual
> ethernet switch control which is the way I am currently leaning on
> all this.  As such it is probably another thing we can bring up at
> the BOF session at the Linux Plumbers Conference.

Unfortunately I won't be able to make it to the BOF or Plumbers.
I look forward to hearing what is discussed.

> >I'm was asking/wondering if the Intel NICs have a rate limiter
> >(i.e one can program the VF such that its rate doesn't exceed XX
> >MB/s) or a "rate guarantee"  (i.e one can program the VF such that
> >its guaranteed it will get YY MB/s in case it wants to xmit at
> >least this bandwidth)
> 
> Based on the way I am reading the documentation I would say the all
> these registers do is guarantee a minimum percentage of the
> bandwidth. With these registers set you can repartition the traffic
> so that a percentage can be guaranteed to the PF/VFs if needed.  It
> works very similar to how DCB allows you to guarantee a certain
> amount of bandwidth for each of the traffic classes.  However any
> time the full tx bandwidth is not being used it will be reallocated
> to the other queues and then end up back in the default behavior.
> 
> The default behavior is to DMA descriptors from the rings in a round
> robin fashion.  Since this effectively guarantees that there will be
> packets being pulled off the rings I didn't really feel the
> necessity to add the additional overhead of doing this on a per
> PF/VF bandwidth basis.

My reading of the documentation is also that its a minimum percentage of
bandwidth. But after playing with the registers a bit it seems
that it is actually a ceiling expressed. And the percentage is of 1Gigabit,
regardless of the actual link speed.


^ permalink raw reply

* Re: [BUG 2.6.30+] e100 sometimes causes oops during resume
From: Graham, David @ 2009-09-15 22:54 UTC (permalink / raw)
  To: Karol Lewandowski, Rafael J. Wysocki
  Cc: e1000-devel@lists.sourceforge.net, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
In-Reply-To: <20090915120538.GA26806@bizet.domek.prywatny>

A v2.6.30..v2.6.31 diff shows that this is probably exposed by Rafael Wysocki's commit 6905b1f1, which now allows systems with e100 to sleep. If I understand correctly, it looks like these systems simply couldn't sleep before. Is that right Rafael?. I don't think its likely that the commit is a direct cause of the problem, but that the suspend/resume cycle now allows us to see another issue. Maybe e100 is leaking memory on suspend/resume cycles, or something else is leaking memory, or memory is becoming fragmented and the e100 driver is improperly requesting and being failed on an 'atomic' memory allocation  from a heavily fragmented memory map. Or something else.

So we ( Jesse Brandeburg & I ) have some ideas, and I am trying to get a symptom here. and going through the e100 memory allocation code looking for clues.

Dave

________________________________________
From: Karol Lewandowski [karol.k.lewandowski@gmail.com]
Sent: Tuesday, September 15, 2009 5:05 AM
To: e1000-devel@lists.sourceforge.net
Cc: linux-kernel@vger.kernel.org
Subject: [E1000-devel] [BUG 2.6.30+] e100 sometimes causes oops during resume

Hello,

I'm getting following oops sometimes during resume on my Thinkpad T21
(where "sometimes" means about 10/1 good/bad ratio):

ifconfig: page allocation failure. order:5, mode:0x8020
Pid: 26450, comm: ifconfig Not tainted 2.6.31-rc9-revert #13
Call Trace:
 [<c015c1cc>] ? __alloc_pages_nodemask+0x402/0x444
 [<c0104de7>] ? dma_generic_alloc_coherent+0x4a/0xab
 [<c0104d9d>] ? dma_generic_alloc_coherent+0x0/0xab
 [<c0298f5b>] ? e100_alloc_cbs+0xc7/0x174
 [<c0299fea>] ? e100_up+0x1b/0xf5
 [<c029a0db>] ? e100_open+0x17/0x41
 [<c02fb0bf>] ? dev_open+0x8f/0xc5
 [<c02fa879>] ? dev_change_flags+0xa2/0x155
 [<c03305b6>] ? devinet_ioctl+0x22a/0x51c
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c02ee61e>] ? sock_ioctl+0x1c0/0x1e4
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c017ef06>] ? vfs_ioctl+0x16/0x4a
 [<c017f7cd>] ? do_vfs_ioctl+0x48a/0x4c1
 [<c0167e07>] ? handle_mm_fault+0x1e0/0x42c
 [<c034bd9c>] ? do_page_fault+0x2ce/0x2e4
 [<c017f830>] ? sys_ioctl+0x2c/0x42
 [<c0102748>] ? sysenter_do_call+0x12/0x26
Mem-Info:
DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
Normal per-cpu:
CPU    0: hi:   90, btch:  15 usd:   9
Active_anon:10268 active_file:11642 inactive_anon:24589
 inactive_file:13029 unevictable:0 dirty:9 writeback:0 unstable:0
 free:894 slab:2149 mapped:3962 pagetables:449 bounce:0
DMA free:1076kB min:124kB low:152kB high:184kB active_anon:936kB inactive_anon:3388kB active_file:2776kB inactive_file:3080kB unevictable:0kB present:15868kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 238 238
Normal free:2500kB min:1908kB low:2384kB high:2860kB active_anon:40136kB inactive_anon:94968kB active_file:43792kB inactive_file:49036kB unevictable:0kB present:243776kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
DMA: 1*4kB 0*8kB 3*16kB 2*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1076kB
Normal: 415*4kB 65*8kB 18*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2500kB
29934 total pagecache pages
5112 pages in swap cache
Swap cache stats: add 104796, delete 99684, find 78817/93038
Free swap  = 457116kB
Total swap = 514040kB
65520 pages RAM
1667 pages reserved
11094 pages shared
56751 pages non-shared
ifconfig: page allocation failure. order:5, mode:0x8020
Pid: 26450, comm: ifconfig Not tainted 2.6.31-rc9-revert #13
Call Trace:
 [<c015c1cc>] ? __alloc_pages_nodemask+0x402/0x444
 [<c0104de7>] ? dma_generic_alloc_coherent+0x4a/0xab
 [<c0104d9d>] ? dma_generic_alloc_coherent+0x0/0xab
 [<c0298f5b>] ? e100_alloc_cbs+0xc7/0x174
 [<c0299fea>] ? e100_up+0x1b/0xf5
 [<c029a0db>] ? e100_open+0x17/0x41
 [<c02fb0bf>] ? dev_open+0x8f/0xc5
 [<c02fa879>] ? dev_change_flags+0xa2/0x155
 [<c03305b6>] ? devinet_ioctl+0x22a/0x51c
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c02ee61e>] ? sock_ioctl+0x1c0/0x1e4
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c017ef06>] ? vfs_ioctl+0x16/0x4a
 [<c017f7cd>] ? do_vfs_ioctl+0x48a/0x4c1
 [<c016a217>] ? unmap_region+0xa2/0xd1
 [<c016a289>] ? remove_vma+0x43/0x48
 [<c016ad7a>] ? do_munmap+0x20e/0x228
 [<c017f830>] ? sys_ioctl+0x2c/0x42
 [<c0102748>] ? sysenter_do_call+0x12/0x26
Mem-Info:
DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
Normal per-cpu:
CPU    0: hi:   90, btch:  15 usd:   8
Active_anon:10316 active_file:11612 inactive_anon:24605
 inactive_file:13025 unevictable:0 dirty:9 writeback:66 unstable:0
 free:864 slab:2149 mapped:3985 pagetables:462 bounce:0
DMA free:1076kB min:124kB low:152kB high:184kB active_anon:936kB inactive_anon:3388kB active_file:2776kB inactive_file:3080kB unevictable:0kB present:15868kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 238 238
Normal free:2380kB min:1908kB low:2384kB high:2860kB active_anon:40328kB inactive_anon:95032kB active_file:43672kB inactive_file:49020kB unevictable:0kB present:243776kB pages_scanned:128 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
DMA: 1*4kB 0*8kB 3*16kB 2*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1076kB
Normal: 415*4kB 60*8kB 15*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2380kB
29960 total pagecache pages
5172 pages in swap cache
Swap cache stats: add 104862, delete 99690, find 78819/93040
Free swap  = 456856kB
Total swap = 514040kB
65520 pages RAM
1667 pages reserved
11419 pages shared
56744 pages non-shared


This is caused by ifup scripts that try to bring interface up after
resume.  When I do so manually it doesn't produce error.  System seems
to behave normally despite that error.

This is on 2.6.31-rc9 (with unrelated patch reverted), 2.6.31-rc8
shown similiar behaviour. Neither 2.6.31 nor Linus' HEAD seems to
address this issue.


Hardware:

0:03.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 09)
        Subsystem: Intel Corporation EtherExpress PRO/100+ MiniPCI
        Flags: bus master, medium devsel, latency 66, IRQ 11
        Memory at e8120000 (32-bit, non-prefetchable) [size=4K]
        I/O ports at 1800 [size=64]
        Memory at e8100000 (32-bit, non-prefetchable) [size=128K]
        [virtual] Expansion ROM at 20100000 [disabled] [size=1M]
        Capabilities: [dc] Power Management version 2
        Kernel driver in use: e100

Full dmesg follows, including successful suspend-resume and oops (at
end) of unsuccessful one.


Linux version 2.6.31-rc9-revert (karol@wagner) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) #13 Mon Sep 7 21:16:17 CEST 2009
KERNEL supported cpus:
  Intel GenuineIntel
  AMD AuthenticAMD
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
 BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000000fff0000 (usable)
 BIOS-e820: 000000000fff0000 - 000000000fffec00 (ACPI data)
 BIOS-e820: 000000000fffec00 - 0000000010000000 (ACPI NVS)
 BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
DMI 2.3 present.
last_pfn = 0xfff0 max_arch_pfn = 0x100000
MTRR default type: uncachable
MTRR fixed ranges enabled:
  00000-9FFFF write-back
  A0000-BFFFF uncachable
  C0000-CBFFF write-protect
  CC000-DFFFF uncachable
  E0000-FFFFF write-protect
MTRR variable ranges enabled:
  0 base 000000000 mask FF0000000 write-back
  1 disabled
  2 disabled
  3 disabled
  4 disabled
  5 disabled
  6 disabled
  7 disabled
initial memory mapped : 0 - 00800000
init_memory_mapping: 0000000000000000-000000000fff0000
 0000000000 - 0000400000 page 4k
 0000400000 - 000fc00000 page 2M
 000fc00000 - 000fff0000 page 4k
kernel direct mapping tables up to fff0000 @ 7000-c000
ACPI: RSDP 000f7120 00014 (v00 PTLTD )
ACPI: RSDT 0fff4c5d 0002C (v01 PTLTD    RSDT   06041160  LTP 00000000)
ACPI: FACP 0fffeb65 00074 (v01 IBM    TP-T21   06041160      00000000)
ACPI: DSDT 0fff4c89 09EDC (v01 IBM    TP-T21   06041160 MSFT 0100000C)
ACPI: FACS 0ffff000 00040
ACPI: BOOT 0fffebd9 00027 (v01 PTLTD  $SBFTBL$ 06041160  LTP 00000001)
255MB LOWMEM available.
  mapped low ram: 0 - 0fff0000
  low ram: 0 - 0fff0000
  node 0 low ram: 00000000 - 0fff0000
  node 0 bootmap 00001000 - 00003000
(6 early reservations) ==> bootmem [0000000000 - 000fff0000]
  #0 [0000000000 - 0000001000]   BIOS data page ==> [0000000000 - 0000001000]
  #1 [0000100000 - 0000516940]    TEXT DATA BSS ==> [0000100000 - 0000516940]
  #2 [000009f800 - 0000100000]    BIOS reserved ==> [000009f800 - 0000100000]
  #3 [0000517000 - 00005190d9]              BRK ==> [0000517000 - 00005190d9]
  #4 [0000007000 - 0000008000]          PGTABLE ==> [0000007000 - 0000008000]
  #5 [0000001000 - 0000003000]          BOOTMAP ==> [0000001000 - 0000003000]
Zone PFN ranges:
  DMA      0x00000000 -> 0x00001000
  Normal   0x00001000 -> 0x0000fff0
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
    0: 0x00000000 -> 0x0000009f
    0: 0x00000100 -> 0x0000fff0
On node 0 totalpages: 65423
free_area_init_node: node 0, pgdat c0458514, node_mem_map c1000000
  DMA zone: 32 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 3967 pages, LIFO batch:0
  Normal zone: 480 pages used for memmap
  Normal zone: 60944 pages, LIFO batch:15
ACPI: PM-Timer IO Port: 0x1008
PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
Allocating PCI resources starting at 10000000 (gap: 10000000:eff80000)
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 64911
Kernel command line: root=/dev/sda2 resume=/dev/sda1 ro
PID hash table entries: 1024 (order: 10, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
Memory: 255100k/262080k available (2359k kernel code, 6468k reserved, 1086k data, 256k init, 0k highmem)
virtual kernel memory layout:
    fixmap  : 0xfffe5000 - 0xfffff000   ( 104 kB)
    vmalloc : 0xd07f0000 - 0xfffe3000   ( 759 MB)
    lowmem  : 0xc0000000 - 0xcfff0000   ( 255 MB)
      .init : 0xc045e000 - 0xc049e000   ( 256 kB)
      .data : 0xc034dc2b - 0xc045d720   (1086 kB)
      .text : 0xc0100000 - 0xc034dc2b   (2359 kB)
Checking if this processor honours the WP bit even in supervisor mode...Ok.
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:16
CPU 0 irqstacks, hard=c042b000 soft=c042c000
Fast TSC calibration using PIT
Detected 796.603 MHz processor.
Console: colour VGA+ 80x25
console [tty0] enabled
Calibrating delay loop (skipped), value calculated using timer frequency.. 1593.20 BogoMIPS (lpj=3186412)
Mount-cache hash table entries: 512
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
mce: CPU supports 5 MCE banks
Performance Counters:
no APIC, boot with the "lapic" boot parameter to force-enable it.
no hardware sampling interrupt available.
p6 PMU driver.
... version:                 0
... bit width:               32
... generic counters:        2
... value mask:              00000000ffffffff
... max period:              000000007fffffff
... fixed-purpose counters:  0
... counter mask:            0000000000000003
CPU: Intel Pentium III (Coppermine) stepping 0a
Checking 'hlt' instruction... OK.
ACPI: Core revision 20090521
ACPI: setting ELCR to 0200 (from 0800)
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfd94f, last bus=7
PCI: Using configuration type 1 for base access
bio: create slab <bio-0> at 0
ACPI: EC: Look up EC in DSDT
ACPI: Interpreter enabled
ACPI: (supports S0 S1 S3 S4 S5)
ACPI: Using PIC for interrupt routing
ACPI: EC: non-query interrupt received, switching to interrupt mode
ACPI: EC: GPE = 0x9, I/O: command/status = 0x66, data = 0x62
ACPI: EC: driver started in interrupt mode
ACPI: Power Resource [PSER] (off)
ACPI: Power Resource [PSIO] (on)
ACPI: ACPI Dock Station Driver: 3 docks/bays found
ACPI: PCI Root Bridge [PCI0] (0000:00)
pci 0000:00:00.0: reg 10 32bit mmio: [0xf8000000-0xfbffffff]
pci 0000:00:02.0: reg 10 32bit mmio: [0x50000000-0x50000fff]
pci 0000:00:02.0: supports D1 D2
pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:00:02.0: PME# disabled
pci 0000:00:02.1: reg 10 32bit mmio: [0x50100000-0x50100fff]
pci 0000:00:02.1: supports D1 D2
pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:00:02.1: PME# disabled
pci 0000:00:03.0: reg 10 32bit mmio: [0xe8120000-0xe8120fff]
pci 0000:00:03.0: reg 14 io port: [0x1800-0x183f]
pci 0000:00:03.0: reg 18 32bit mmio: [0xe8100000-0xe811ffff]
pci 0000:00:03.0: reg 30 32bit mmio: [0x000000-0x0fffff]
pci 0000:00:03.0: supports D1 D2
pci 0000:00:03.0: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:00:03.0: PME# disabled
pci 0000:00:03.1: reg 10 io port: [0x1840-0x1847]
pci 0000:00:03.1: reg 14 32bit mmio: [0xe8121000-0xe8121fff]
pci 0000:00:03.1: supports D1 D2
pci 0000:00:03.1: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:00:03.1: PME# disabled
pci 0000:00:05.0: reg 10 32bit mmio: [0xe8122000-0xe8122fff]
pci 0000:00:05.0: reg 14 32bit mmio: [0xe8000000-0xe80fffff]
pci 0000:00:05.0: supports D1 D2
pci 0000:00:07.1: reg 20 io port: [0x1850-0x185f]
pci 0000:00:07.2: reg 20 io port: [0x1860-0x187f]
pci 0000:00:07.3: quirk: region 1000-103f claimed by PIIX4 ACPI
pci 0000:00:07.3: quirk: region 1040-104f claimed by PIIX4 SMB
pci 0000:00:07.3: PIIX4 devres C PIO at 15e8-15ef
pci 0000:00:07.3: PIIX4 devres I PIO at 03f0-03f7
pci 0000:00:07.3: PIIX4 devres J PIO at 002e-002f
pci 0000:01:00.0: reg 10 32bit mmio: [0xf0000000-0xf7ffffff]
pci 0000:01:00.0: reg 30 32bit mmio: [0x000000-0x00ffff]
pci 0000:01:00.0: supports D1 D2
pci 0000:00:01.0: bridge 32bit mmio: [0xf0000000-0xf7ffffff]
pci_bus 0000:00: on NUMA node 0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11)
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: Using ACPI for IRQ routing
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp 00:00: mem resource (0x0-0x9ffff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xc0000-0xc3fff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xc4000-0xc7fff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xc8000-0xcbfff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xcc000-0xcffff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xd0000-0xcffff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xd4000-0xd3fff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xd8000-0xd7fff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xdc000-0xdbfff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xe0000-0xe3fff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xe4000-0xe7fff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xe8000-0xebfff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xec000-0xeffff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:00: mem resource (0xf0000-0xfffff) overlaps 0000:00:03.0 BAR 6 (0x0-0xfffff), disabling
pnp: PnP ACPI: found 15 devices
ACPI: ACPI bus type pnp unregistered
system 00:00: iomem range 0x100000-0xfffffff could not be reserved
system 00:00: iomem range 0xfff80000-0xffffffff has been reserved
system 00:02: ioport range 0x1000-0x103f has been reserved
system 00:02: ioport range 0x1040-0x104f has been reserved
system 00:02: ioport range 0xfe00-0xfe0f has been reserved
system 00:09: ioport range 0x15e0-0x15ef has been reserved
pci 0000:00:01.0: PCI bridge, secondary bus 0000:01
pci 0000:00:01.0:   IO window: disabled
pci 0000:00:01.0:   MEM window: 0xf0000000-0xf7ffffff
pci 0000:00:01.0:   PREFETCH window: 0x20000000-0x200fffff
pci 0000:00:02.0: CardBus bridge, secondary bus 0000:02
pci 0000:00:02.0:   IO window: 0x001400-0x0014ff
pci 0000:00:02.0:   IO window: 0x001c00-0x001cff
pci 0000:00:02.0:   PREFETCH window: 0x10000000-0x13ffffff
pci 0000:00:02.0:   MEM window: 0x14000000-0x17ffffff
pci 0000:00:02.1: CardBus bridge, secondary bus 0000:06
pci 0000:00:02.1:   IO window: 0x002000-0x0020ff
pci 0000:00:02.1:   IO window: 0x002400-0x0024ff
pci 0000:00:02.1:   PREFETCH window: 0x18000000-0x1bffffff
pci 0000:00:02.1:   MEM window: 0x1c000000-0x1fffffff
pci 0000:00:02.0: power state changed by ACPI to D0
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
pci 0000:00:02.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
pci 0000:00:02.1: power state changed by ACPI to D0
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
pci 0000:00:02.1: PCI INT B -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11
pci_bus 0000:00: resource 0 io:  [0x00-0xffff]
pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffff]
pci_bus 0000:01: resource 1 mem: [0xf0000000-0xf7ffffff]
pci_bus 0000:01: resource 2 pref mem [0x20000000-0x200fffff]
pci_bus 0000:02: resource 0 io:  [0x1400-0x14ff]
pci_bus 0000:02: resource 1 io:  [0x1c00-0x1cff]
pci_bus 0000:02: resource 2 pref mem [0x10000000-0x13ffffff]
pci_bus 0000:02: resource 3 mem: [0x14000000-0x17ffffff]
pci_bus 0000:06: resource 0 io:  [0x2000-0x20ff]
pci_bus 0000:06: resource 1 io:  [0x2400-0x24ff]
pci_bus 0000:06: resource 2 pref mem [0x18000000-0x1bffffff]
pci_bus 0000:06: resource 3 mem: [0x1c000000-0x1fffffff]
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
NET: Registered protocol family 1
Simple Boot Flag at 0x35 set to 0x1
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 498
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
pci 0000:00:00.0: Limiting direct PCI/PCI transfers
pci 0000:01:00.0: Boot video device
savagefb 0000:01:00.0: power state changed by ACPI to D0
savagefb 0000:01:00.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
savagefb: mapped io at d0880000
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
savagefb: mapped framebuffer at d0980000, pbase == f0000000
savagefb v0.4.0_2.6: 8064kB VRAM, using 800x600, 37.878kHz, 60Hz
Console: switching to colour frame buffer device 100x37
fb: S3 Savage/IX-MV frame buffer device
vga16fb: initializing
vga16fb: mapped to 0xc00a0000
fb1: VGA16 VGA frame buffer device
ACPI: AC Adapter [AC] (on-line)
input: Power Button as /class/input/input0
ACPI: Power Button [PWRF]
input: Lid Switch as /class/input/input1
ACPI: Lid Switch [LID]
input: Sleep Button as /class/input/input2
ACPI: Sleep Button [SLPB]
Marking TSC unstable due to TSC halts in idle
ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3])
processor LNXCPU:00: registered as cooling_device0
Switched to high resolution mode on CPU 0
ACPI: Processor [CPU0] (supports 8 throttling states)
thermal LNXTHERM:01: registered as thermal_zone0
ACPI: Thermal Zone [THM0] (44 C)
Linux agpgart interface v0.103
agpgart-intel 0000:00:00.0: Intel 440BX Chipset
agpgart-intel 0000:00:00.0: AGP aperture is 64M @ 0xf8000000
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial 00:0c: activated
00:0c: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
serial 0000:00:03.1: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11
parport_pc 00:0d: reported by Plug and Play ACPI
parport0: PC-style at 0x3bc, irq 7 [PCSPP,TRISTATE]
ACPI: Battery Slot [BAT0] (battery present)
brd: module loaded
loop: module loaded
ata_piix 0000:00:07.1: version 2.13
scsi0 : ata_piix
scsi1 : ata_piix
ata1: PATA max UDMA/33 cmd 0x1f0 ctl 0x3f6 bmdma 0x1850 irq 14
ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0x1858 irq 15
e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
e100 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: PME# disabled
e100: eth0: e100_probe: addr 0xe8120000, irq 11, MAC addr 00:10:a4:89:e8:84
PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
rtc_cmos 00:06: RTC can wake from S4
rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0
rtc0: alarms up to one month, y3k, 242 bytes nvram
device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com
cpuidle: using governor ladder
cpuidle: using governor menu
Advanced Linux Sound Architecture Driver Version 1.0.20.
input: AT Translated Set 2 keyboard as /class/input/input3
ALSA device list:
  No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
ata1.00: ATA-7: SAMSUNG HM060HC, YJ100-19, max UDMA/100
ata1.00: 117231408 sectors, multi 16: LBA48
ata1.00: configured for UDMA/33
scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG HM060HC  YJ10 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 117231408 512-byte logical blocks: (60.0 GB/55.8 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sda:
sd 0:0:0:0: Attached scsi generic sg0 type 0
 sda1 sda2 sda3 sda4
sd 0:0:0:0: [sda] Attached SCSI disk
Clocksource tsc unstable (delta = -117760284 ns)
IBM TrackPoint firmware: 0x0e, buttons: 3/3
input: TPPS/2 IBM TrackPoint as /class/input/input4
rtc_cmos 00:06: setting system clock to 2009-09-10 08:21:25 UTC (1252570885)
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with writeback data mode.
VFS: Mounted root (ext3 filesystem) readonly on device 8:2.
Freeing unused kernel memory: 256k freed
uhci_hcd: USB Universal Host Controller Interface driver
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
uhci_hcd 0000:00:07.2: UHCI Host Controller
uhci_hcd 0000:00:07.2: new USB bus registered, assigned bus number 1
uhci_hcd 0000:00:07.2: irq 11, io base 0x00001860
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: UHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.31-rc9-revert uhci_hcd
usb usb1: SerialNumber: 0000:00:07.2
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
yenta_cardbus 0000:00:02.0: CardBus bridge found [1014:0130]
yenta_cardbus 0000:00:02.0: Using INTVAL to route CSC interrupts to PCI
yenta_cardbus 0000:00:02.0: Routing CardBus interrupts to PCI
yenta_cardbus 0000:00:02.0: TI: mfunc 0x00001000, devctl 0x66
yenta_cardbus 0000:00:02.0: ISA IRQ mask 0x0438, PCI irq 11
yenta_cardbus 0000:00:02.0: Socket status: 30000006
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
ALSA sound/pci/cs46xx/cs46xx_lib.c:432: cs46xx: failure waiting for FIFO command to complete
input: PC Speaker as /class/input/input5
Non-volatile memory driver v1.3
thinkpad_acpi: ThinkPad ACPI Extras v0.23
thinkpad_acpi: http://ibm-acpi.sf.net/
thinkpad_acpi: ThinkPad BIOS KZET34WW (1.16 ), EC unknown
Registered led device: tpacpi::thinklight
Registered led device: tpacpi::power
Registered led device: tpacpi::standby
input: ThinkPad Extra Buttons as /class/input/input6
yenta_cardbus 0000:00:02.1: CardBus bridge found [1014:0130]
yenta_cardbus 0000:00:02.1: Using INTVAL to route CSC interrupts to PCI
yenta_cardbus 0000:00:02.1: Routing CardBus interrupts to PCI
yenta_cardbus 0000:00:02.1: TI: mfunc 0x00001000, devctl 0x66
yenta_cardbus 0000:00:02.1: ISA IRQ mask 0x0438, PCI irq 11
yenta_cardbus 0000:00:02.1: Socket status: 30000006
Adding 514040k swap on /dev/sda1.  Priority:-1 extents:1 across:514040k
EXT3 FS on sda2, internal journal
fuse init (API version 7.12)
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda3, internal journal
EXT3-fs: mounted filesystem with writeback data mode.
kjournald starting.  Commit interval 5 seconds
EXT3 FS on sda4, internal journal
EXT3-fs: mounted filesystem with writeback data mode.
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
lp0: using parport0 (interrupt-driven).
lp0: console ready
ppdev: user-space parallel port driver
[drm] Initialized drm 1.1.0 20060810
eth0: no IPv6 routers present
[drm] Initialized savage 2.4.1 20050313 for 0000:01:00.0 on minor 0
usb 1-1: new low speed USB device using uhci_hcd and address 2
usb 1-1: New USB device found, idVendor=046d, idProduct=c050
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: USB-PS/2 Optical Mouse
usb 1-1: Manufacturer: Logitech
usb 1-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver hiddev
input: Logitech USB-PS/2 Optical Mouse as /class/input/input7
generic-usb 0003:046D:C050.0001: input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1/input0
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PCI INT A disabled
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
ACPI handle has no context!
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
ALSA sound/pci/cs46xx/dsp_spos.c:1884: dsp_spos: SPIOWriteTask not responding
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.04 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
ACPI handle has no context!
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
ALSA sound/pci/cs46xx/dsp_spos.c:1884: dsp_spos: SPIOWriteTask not responding
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
ALSA sound/pci/cs46xx/cs46xx_lib.c:432: cs46xx: failure waiting for FIFO command to complete
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.02 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.06 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.06 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.02 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.05 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
udevd version 125 started
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.04 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.08 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
usb 1-1: reset low speed USB device using uhci_hcd and address 2
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present
usb 1-1: USB disconnect, address 2
Sound Fusion CS46xx 0000:00:05.0: PCI INT A disabled
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.02 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.05 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
sd 0:0:0:0: [sda] Synchronizing SCSI cache
sd 0:0:0:0: [sda] Stopping disk
parport_pc 00:0d: disabled
serial 00:0c: disabled
savagefb 0000:01:00.0: power state changed by ACPI to D3
uhci_hcd 0000:00:07.2: PCI INT D disabled
ACPI handle has no context!
e100 0000:00:03.0: PME# enabled
ACPI: Preparing to enter system sleep state S3
Back to C!
ACPI: Waking up from system sleep state S3
pci 0000:00:01.0: restoring config space at offset 0x9 (was 0xfff0, writing 0x20002000)
pci 0000:00:01.0: restoring config space at offset 0x7 (was 0x2a000f0, writing 0x22a000f0)
e100 0000:00:03.0: restoring config space at offset 0x1 (was 0x2900013, writing 0x2900017)
savagefb 0000:01:00.0: power state changed by ACPI to D0
e100 0000:00:03.0: PME# disabled
pci 0000:00:05.0: PME# disabled
uhci_hcd 0000:00:07.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, low) -> IRQ 11
usb usb1: root hub lost power or was reset
savagefb: probed videoram:  8192k
savagefb: Detected current MCLK value of 83045 kHz
savagefb: 1024x768 TFT LCD panel detected and active
savagefb: Limiting video mode to 1024x768
serial 00:0c: activated
parport_pc 00:0d: activated
sd 0:0:0:0: [sda] Starting disk
ata1.00: ACPI cmd ef/02:00:00:00:00:a0 succeeded
ata1.00: ACPI cmd f5/00:00:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:42:00:00:00:a0 filtered out
ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 filtered out
ata1.00: configured for UDMA/33
ata1.00: configured for UDMA/33
ata1: EH complete
Restarting tasks ... done.
Sound Fusion CS46xx 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) -> IRQ 11
ifconfig: page allocation failure. order:5, mode:0x8020
Pid: 26450, comm: ifconfig Not tainted 2.6.31-rc9-revert #13
Call Trace:
 [<c015c1cc>] ? __alloc_pages_nodemask+0x402/0x444
 [<c0104de7>] ? dma_generic_alloc_coherent+0x4a/0xab
 [<c0104d9d>] ? dma_generic_alloc_coherent+0x0/0xab
 [<c0298f5b>] ? e100_alloc_cbs+0xc7/0x174
 [<c0299fea>] ? e100_up+0x1b/0xf5
 [<c029a0db>] ? e100_open+0x17/0x41
 [<c02fb0bf>] ? dev_open+0x8f/0xc5
 [<c02fa879>] ? dev_change_flags+0xa2/0x155
 [<c03305b6>] ? devinet_ioctl+0x22a/0x51c
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c02ee61e>] ? sock_ioctl+0x1c0/0x1e4
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c017ef06>] ? vfs_ioctl+0x16/0x4a
 [<c017f7cd>] ? do_vfs_ioctl+0x48a/0x4c1
 [<c0167e07>] ? handle_mm_fault+0x1e0/0x42c
 [<c034bd9c>] ? do_page_fault+0x2ce/0x2e4
 [<c017f830>] ? sys_ioctl+0x2c/0x42
 [<c0102748>] ? sysenter_do_call+0x12/0x26
Mem-Info:
DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
Normal per-cpu:
CPU    0: hi:   90, btch:  15 usd:   9
Active_anon:10268 active_file:11642 inactive_anon:24589
 inactive_file:13029 unevictable:0 dirty:9 writeback:0 unstable:0
 free:894 slab:2149 mapped:3962 pagetables:449 bounce:0
DMA free:1076kB min:124kB low:152kB high:184kB active_anon:936kB inactive_anon:3388kB active_file:2776kB inactive_file:3080kB unevictable:0kB present:15868kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 238 238
Normal free:2500kB min:1908kB low:2384kB high:2860kB active_anon:40136kB inactive_anon:94968kB active_file:43792kB inactive_file:49036kB unevictable:0kB present:243776kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
DMA: 1*4kB 0*8kB 3*16kB 2*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1076kB
Normal: 415*4kB 65*8kB 18*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2500kB
29934 total pagecache pages
5112 pages in swap cache
Swap cache stats: add 104796, delete 99684, find 78817/93038
Free swap  = 457116kB
Total swap = 514040kB
65520 pages RAM
1667 pages reserved
11094 pages shared
56751 pages non-shared
ifconfig: page allocation failure. order:5, mode:0x8020
Pid: 26450, comm: ifconfig Not tainted 2.6.31-rc9-revert #13
Call Trace:
 [<c015c1cc>] ? __alloc_pages_nodemask+0x402/0x444
 [<c0104de7>] ? dma_generic_alloc_coherent+0x4a/0xab
 [<c0104d9d>] ? dma_generic_alloc_coherent+0x0/0xab
 [<c0298f5b>] ? e100_alloc_cbs+0xc7/0x174
 [<c0299fea>] ? e100_up+0x1b/0xf5
 [<c029a0db>] ? e100_open+0x17/0x41
 [<c02fb0bf>] ? dev_open+0x8f/0xc5
 [<c02fa879>] ? dev_change_flags+0xa2/0x155
 [<c03305b6>] ? devinet_ioctl+0x22a/0x51c
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c02ee61e>] ? sock_ioctl+0x1c0/0x1e4
 [<c02ee45e>] ? sock_ioctl+0x0/0x1e4
 [<c017ef06>] ? vfs_ioctl+0x16/0x4a
 [<c017f7cd>] ? do_vfs_ioctl+0x48a/0x4c1
 [<c016a217>] ? unmap_region+0xa2/0xd1
 [<c016a289>] ? remove_vma+0x43/0x48
 [<c016ad7a>] ? do_munmap+0x20e/0x228
 [<c017f830>] ? sys_ioctl+0x2c/0x42
 [<c0102748>] ? sysenter_do_call+0x12/0x26
Mem-Info:
DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
Normal per-cpu:
CPU    0: hi:   90, btch:  15 usd:   8
Active_anon:10316 active_file:11612 inactive_anon:24605
 inactive_file:13025 unevictable:0 dirty:9 writeback:66 unstable:0
 free:864 slab:2149 mapped:3985 pagetables:462 bounce:0
DMA free:1076kB min:124kB low:152kB high:184kB active_anon:936kB inactive_anon:3388kB active_file:2776kB inactive_file:3080kB unevictable:0kB present:15868kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 238 238
Normal free:2380kB min:1908kB low:2384kB high:2860kB active_anon:40328kB inactive_anon:95032kB active_file:43672kB inactive_file:49020kB unevictable:0kB present:243776kB pages_scanned:128 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
DMA: 1*4kB 0*8kB 3*16kB 2*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1076kB
Normal: 415*4kB 60*8kB 15*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2380kB
29960 total pagecache pages
5172 pages in swap cache
Swap cache stats: add 104862, delete 99690, find 78819/93040
Free swap  = 456856kB
Total swap = 514040kB
65520 pages RAM
1667 pages reserved
11419 pages shared
56744 pages non-shared
usb 1-1: new low speed USB device using uhci_hcd and address 3
usb 1-1: New USB device found, idVendor=046d, idProduct=c050
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: USB-PS/2 Optical Mouse
usb 1-1: Manufacturer: Logitech
usb 1-1: configuration #1 chosen from 1 choice
input: Logitech USB-PS/2 Optical Mouse as /class/input/input8
generic-usb 0003:046D:C050.0002: input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1/input0
e100 0000:00:03.0: firmware: using built-in firmware e100/d101s_ucode.bin
ADDRCONF(NETDEV_UP): eth0: link is not ready
e100: eth0 NIC Link is Up 100 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present


------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf

^ permalink raw reply

* Re: ipv4 regression in 2.6.31 ?
From: Stephen Hemminger @ 2009-09-15 22:57 UTC (permalink / raw)
  To: Jarek Poplawski, David Miller
  Cc: Stephan von Krawczynski, Eric Dumazet, linux-kernel, davem,
	Linux Netdev List
In-Reply-To: <20090915081354.GA10037@ff.dom.local>

On Tue, 15 Sep 2009 08:13:55 +0000
Jarek Poplawski <jarkao2@gmail.com> wrote:

> On 14-09-2009 18:31, Stephen Hemminger wrote:
> > On Mon, 14 Sep 2009 17:55:05 +0200
> > Stephan von Krawczynski <skraw@ithnet.com> wrote:
> > 
> >> On Mon, 14 Sep 2009 15:57:03 +0200
> >> Eric Dumazet <eric.dumazet@gmail.com> wrote:
> >>
> >>> Stephan von Krawczynski a A~(c)crit :
> >>>> Hello all,
> ...
> >>> rp_filter - INTEGER
> >>>         0 - No source validation.
> >>>         1 - Strict mode as defined in RFC3704 Strict Reverse Path
> >>>             Each incoming packet is tested against the FIB and if the interface
> >>>             is not the best reverse path the packet check will fail.
> >>>             By default failed packets are discarded.
> >>>         2 - Loose mode as defined in RFC3704 Loose Reverse Path
> >>>             Each incoming packet's source address is also tested against the FIB
> >>>             and if the source address is not reachable via any interface
> >>>             the packet check will fail.
> ...
> > RP filter did not work correctly in 2.6.30. The code added to to the loose
> > mode caused a bug; the rp_filter value was being computed as:
> >   rp_filter = interface_value & all_value;
> > So in order to get reverse path filter both would have to be set.
> > 
> > In 2.6.31 this was change to:
> >    rp_filter = max(interface_value, all_value);
> > 
> > This was the intended behaviour, if user asks all interfaces to have rp
> > filtering turned on, then set /proc/sys/net/ipv4/conf/all/rp_filter = 1
> > or to turn on just one interface, set it for just that interface.
> 
> Alas this max() formula handles also cases where both values are set
> and it doesn't look very natural/"user friendly" to me. Especially
> with something like this: all_value = 2; interface_value = 1
> Why would anybody care to bother with interface_value in such a case?
> 
> "All" suggests "default" in this context, so I'd rather expect
> something like:
>     rp_filter = interface_value ? : all_value;
> which gives "the inteded behaviour" too, plus more...
> 
> We'd only need to add e.g.:
>  0 - Default ("all") validation. (No source validation if "all" is 0).
>  3 - No source validation on this interface.

More values == more confusion.
I chose the maxconf() method to make rp_filter consistent with other
multi valued variables (arp_announce and arp_ignore).

--------
Subject: [PATCH] Document rp_filter behaviour

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/Documentation/networking/ip-sysctl.txt	2009-09-15 15:54:25.844934373 -0700
+++ b/Documentation/networking/ip-sysctl.txt	2009-09-15 15:55:40.709205883 -0700
@@ -744,6 +744,8 @@ rp_filter - INTEGER
 	Default value is 0. Note that some distributions enable it
 	in startup scripts.
 
+	The max value from conf/{all,interface}/rp_filter is used.
+
 arp_filter - BOOLEAN
 	1 - Allows you to have multiple network interfaces on the same
 	subnet, and have the ARPs for each interface be answered







-- 

^ permalink raw reply

* [PATCH] fix CONFIG_TCP_MD5SIG + CONFIG_PREEMPT timer BUG()
From: Robert Varga @ 2009-09-15 23:01 UTC (permalink / raw)
  To: netdev

Hi,

I have recently came across a preemption imbalance detected by:

<4>huh, entered ffffffff80644630 with preempt_count 00000102, exited with 00000101?
<0>------------[ cut here ]------------
<2>kernel BUG at /usr/src/linux/kernel/timer.c:664!
<0>invalid opcode: 0000 [1] PREEMPT SMP

with ffffffff80644630 being inet_twdr_hangman().

This appeared after I enabled CONFIG_TCP_MD5SIG and played with it a
bit, so I looked at what might have caused it.

One thing that struck me as strange is tcp_twsk_destructor(), as it
calls tcp_put_md5sig_pool() -- which entails a put_cpu(), causing the
detected imbalance. Found on 2.6.23.9, but 2.6.31 is affected as well,
as far as I can tell.

Signed-off-by: Robert Varga <nite@hq.alert.sk>
---

--- vanilla/net/ipv4/tcp_minisocks.c	2009-09-10 00:13:59.000000000 +0200
+++ patched/net/ipv4/tcp_minisocks.c	2009-09-16 00:48:15.904089024 +0200
@@ -363,7 +363,7 @@ void tcp_twsk_destructor(struct sock *sk
 #ifdef CONFIG_TCP_MD5SIG
 	struct tcp_timewait_sock *twsk = tcp_twsk(sk);
 	if (twsk->tw_md5_keylen)
-		tcp_put_md5sig_pool();
+		tcp_free_md5sig_pool();
 #endif
 }
 
-- 
Bye,
Robert Varga

Reality continues to ruin my life. -- Calvin

^ permalink raw reply

* Re: [PATCH 21/29] ioat2,3: dynamically resize descriptor ring
From: Dan Williams @ 2009-09-15 23:07 UTC (permalink / raw)
  To: Sosnowski, Maciej
  Cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org,
	netdev@vger.kernel.org
In-Reply-To: <129600E5E5FB004392DDC3FB599660D7B5548192@irsmsx504.ger.corp.intel.com>

On Mon, Sep 14, 2009 at 8:00 AM, Sosnowski, Maciej
<maciej.sosnowski@intel.com> wrote:
> Making the max_alloc_order a module parameter gives impression
> that it can be modified by an user, including making it larger than default.
> The default is however its maximum value, which may be confusing.
> Why not to use parameter only as the upper limit?

It is the upper limit.

The user can limit the upper size of the descriptor ring by setting
this to a value less than 16.  By default it is the maximum ring size
that the driver/hardware* supports.  Specifying values greater than 16
are not supported by the so we need enforce a ceiling at 16.

--
Dan

* We could support ring sizes larger than 1 << 16 but we would need to
extra logic to ensure that the pending count never exceeded 1 << 16.
Simpler I think to just limit the maximum ring size.

^ permalink raw reply

* Re: fanotify as syscalls
From: Linus Torvalds @ 2009-09-15 23:49 UTC (permalink / raw)
  To: Eric Paris
  Cc: Evgeniy Polyakov, Jamie Lokier, David Miller, linux-kernel,
	linux-fsdevel, netdev, viro, alan, hch
In-Reply-To: <1253051699.5213.18.camel@dhcp231-106.rdu.redhat.com>



On Tue, 15 Sep 2009, Eric Paris wrote:
> 
> I don't see what's gained using netlink.

I'm personally not a big believer in netlink. What's the point, really? If 
you are sending datagrams back-and-forth, go wild. But if it's more 
structured than that, netlink has no actual upsides as far as I can tell.

Same goes for sockets in this case, actually. What's the upside?

I'll throw out a couple of upsides of actual system calls, people can feel 
free to comment:

 - things like 'strace' _work_ and the traces make sense, and you 
   generally see what the app is trying to do from the traces (sure, it 
   takes some time for strace to learn new system calls, but even when it 
   only gives a system call number, it's never any worse than some 
   "made-up packet interface".

 - if you have a system call definition, it tends to be a much stricter 
   interface than "let's send some packets around with a network 
   interface".

 - No unnecessary infrastructure.

That said, maybe the netlink/socket people can argue for their 
standpoints.

(And btw, I still want to know what's so wonderful about fanotify that we 
would actually want yet-another-filesystem-notification-interface. So I'm 
not sayying that I'll take a system call interface. I just don't think 
that hiding interfaces behind some random packet interface is at all any 
better)

		Linus

^ permalink raw reply

* Re: fanotify as syscalls
From: Eric Paris @ 2009-09-16  1:26 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Evgeniy Polyakov, Jamie Lokier, David Miller, linux-kernel,
	linux-fsdevel, netdev, viro, alan, hch
In-Reply-To: <alpine.LFD.2.01.0909151643540.4950@localhost.localdomain>

On Tue, 2009-09-15 at 16:49 -0700, Linus Torvalds wrote:

> And btw, I still want to know what's so wonderful about fanotify that we 
> would actually want yet-another-filesystem-notification-interface. So I'm 
> not sayying that I'll take a system call interface.

The real thing that fanotify provides is an open fd with the event
rather than some arbitrary 'watch descriptor' that userspace must
somehow magically map back to data on disk.  This means that it could be
used to provide subtree notification, which inotify is completely
incapable of doing.  And it can be used to provide system wide
notification.  We all know who wants that.

It provides an extensible data format which allows growth impossible in
inotify.  I don't know if anyone remember the inotify patches which
wanted to overload the inotify cookie field for some other information,
but inotify information extension is not reasonable or backwards
compatible.

fanotify also allows userspace to make access decisions and cache those
in the kernel.  Useful for integrity checkers (anti-malware people) and
for hierarchical storage management people.

I've got private commitments for two very large anti malware companies,
both of which unprotect and hack syscall tables in their customer's
kernels, that they would like to move to an fanotify interface.  Both
Red Hat and Suse have expressed interest in these patches and have
contributed to the patch set.

The patch set is actually rather small (entire set of about 20 patches
is 1800 lines) as it builds on the fsnotify work already in 2.6.31 to
reuse code from inotify rather than reimplement the same things over and
over (like we previously had with inotify and dnotify)

Don't know what else to say.....

-Eric


^ permalink raw reply

* Re: [E1000-devel] [BUG 2.6.30+] e100 sometimes causes oops during resume
From: Karol Lewandowski @ 2009-09-16  1:44 UTC (permalink / raw)
  To: Graham, David
  Cc: Karol Lewandowski, Rafael J. Wysocki,
	linux-kernel@vger.kernel.org, e1000-devel@lists.sourceforge.net,
	netdev@vger.kernel.org
In-Reply-To: <13830B75AD5A2F42848F92269B11996F5BF592C3@orsmsx509.amr.corp.intel.com>

On Tue, Sep 15, 2009 at 03:54:20PM -0700, Graham, David wrote:

> A v2.6.30..v2.6.31 diff shows that this is probably exposed by
> Rafael Wysocki's commit 6905b1f1, which now allows systems with e100
> to sleep. If I understand correctly, it looks like these systems
> simply couldn't sleep before. Is that right Rafael?.

Probably true, but that wasn't the case for my (I guess
ACPI-controlled) system.


> I don't think its likely that the commit is a direct cause of the
> problem, but that the suspend/resume cycle now allows us to see
> another issue.

>From my (very limited) understanding commit message is at least in
conflict with patch body.

Precisely patch was supposed to "Fix this problem by ignoring the
return value of pci_set_power_state() in __e100_power_off()."

That patch is doing something rather different -- it returns 0, yes,
but it also ignores 'wake' bool as set by __e100_shutdown().  That
seems wrong to me.


--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2895,12 +2895,13 @@ static void __e100_shutdown(struct pci_dev *pdev, bool *enable_wake)
 
 static int __e100_power_off(struct pci_dev *pdev, bool wake)
 {
-       if (wake) {
+       if (wake)
                return pci_prepare_to_sleep(pdev);
-       } else {
-               pci_wake_from_d3(pdev, false);
-               return pci_set_power_state(pdev, PCI_D3hot);
-       }
+
+       pci_wake_from_d3(pdev, false);
+       pci_set_power_state(pdev, PCI_D3hot);
+
+       return 0;
 }


Correct patch would be that (hand-made), right?


+++ b/drivers/net/e100.c
@@ -2895,12 +2895,13 @@ static void __e100_shutdown(struct pci_dev *pdev, bool *enable_wake)
 
 static int __e100_power_off(struct pci_dev *pdev, bool wake)
 {
        if (wake) {
                return pci_prepare_to_sleep(pdev);
        } else {
                pci_wake_from_d3(pdev, false);
-               return pci_set_power_state(pdev, PCI_D3hot);
+               pci_set_power_state(pdev, PCI_D3hot);
        }
+
+       return 0;
 }

I can test, or rather -- start testing this tommorow, if this makes
sense to you.

Thanks.

^ permalink raw reply

* Re: Fwd: [RFC v3] net: Introduce recvmmsg socket syscall
From: Simon Horman @ 2009-09-16  4:53 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Nir Tzachar, Linux Networking Development Mailing List,
	Ziv Ayalon
In-Reply-To: <20090915205207.GI22743@ghostprotocols.net>

On Tue, Sep 15, 2009 at 05:52:07PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Tue, Sep 15, 2009 at 09:20:13PM +0300, Nir Tzachar escreveu:
> > >> Setup:
> > >> linux 2.6.29.2 with the third version of the patch, running on an
> > >> Intel Xeon X3220 2.4GHz quad core, with 4Gbyte of ram, running Ubuntu
> > >> 9.04
> > >
> > > Which NIC? 10 Gbit/s?
> > 
> > 1G. We do not care as much for throughput as we do about latency...
> 
> OK, but anyway the 10 Gbit/s cards I've briefly played with all
> exhibited lower latencies than all 1 gbit/s ones, in fact I've heard
> about people moving to 10 Gbit/s not for the bw, but for the lower
> latencies :-)

Hi Arnaldo,

Out of curiosity, is that using a 10Gbit card with
a 10Gbit link or a 1Gbit link?



^ permalink raw reply

* Your ID Was Selected.
From: British Telecom News @ 2009-09-16  5:09 UTC (permalink / raw)
  To: info

You are  given 1,000,000.00 Pounds by the British Telecom Promotion, Provide your Name,Address,Occupation

^ permalink raw reply

* Re: ipv4 regression in 2.6.31 ?
From: Jarek Poplawski @ 2009-09-16  5:23 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: David Miller, Stephan von Krawczynski, Eric Dumazet, linux-kernel,
	Linux Netdev List
In-Reply-To: <20090915155719.22bae41e@nehalam>

On Tue, Sep 15, 2009 at 03:57:19PM -0700, Stephen Hemminger wrote:
> On Tue, 15 Sep 2009 08:13:55 +0000
> Jarek Poplawski <jarkao2@gmail.com> wrote:
> 
> > On 14-09-2009 18:31, Stephen Hemminger wrote:
> > > On Mon, 14 Sep 2009 17:55:05 +0200
> > > Stephan von Krawczynski <skraw@ithnet.com> wrote:
> > > 
> > >> On Mon, 14 Sep 2009 15:57:03 +0200
> > >> Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > >>
> > >>> Stephan von Krawczynski a A~(c)crit :
> > >>>> Hello all,
> > ...
> > >>> rp_filter - INTEGER
> > >>>         0 - No source validation.
> > >>>         1 - Strict mode as defined in RFC3704 Strict Reverse Path
> > >>>             Each incoming packet is tested against the FIB and if the interface
> > >>>             is not the best reverse path the packet check will fail.
> > >>>             By default failed packets are discarded.
> > >>>         2 - Loose mode as defined in RFC3704 Loose Reverse Path
> > >>>             Each incoming packet's source address is also tested against the FIB
> > >>>             and if the source address is not reachable via any interface
> > >>>             the packet check will fail.
> > ...
> > > RP filter did not work correctly in 2.6.30. The code added to to the loose
> > > mode caused a bug; the rp_filter value was being computed as:
> > >   rp_filter = interface_value & all_value;
> > > So in order to get reverse path filter both would have to be set.
> > > 
> > > In 2.6.31 this was change to:
> > >    rp_filter = max(interface_value, all_value);
> > > 
> > > This was the intended behaviour, if user asks all interfaces to have rp
> > > filtering turned on, then set /proc/sys/net/ipv4/conf/all/rp_filter = 1
> > > or to turn on just one interface, set it for just that interface.
> > 
> > Alas this max() formula handles also cases where both values are set
> > and it doesn't look very natural/"user friendly" to me. Especially
> > with something like this: all_value = 2; interface_value = 1
> > Why would anybody care to bother with interface_value in such a case?
> > 
> > "All" suggests "default" in this context, so I'd rather expect
> > something like:
> >     rp_filter = interface_value ? : all_value;
> > which gives "the inteded behaviour" too, plus more...
> > 
> > We'd only need to add e.g.:
> >  0 - Default ("all") validation. (No source validation if "all" is 0).
> >  3 - No source validation on this interface.
> 
> More values == more confusion.
> I chose the maxconf() method to make rp_filter consistent with other
> multi valued variables (arp_announce and arp_ignore).

This additional value is not necessary (it'd give as superpowers).
Max seems logical to me only when values are sorted (especially if
max is the strictest).

Jarek P.

> 
> --------
> Subject: [PATCH] Document rp_filter behaviour
> 
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
> 
> 
> --- a/Documentation/networking/ip-sysctl.txt	2009-09-15 15:54:25.844934373 -0700
> +++ b/Documentation/networking/ip-sysctl.txt	2009-09-15 15:55:40.709205883 -0700
> @@ -744,6 +744,8 @@ rp_filter - INTEGER
>  	Default value is 0. Note that some distributions enable it
>  	in startup scripts.
>  
> +	The max value from conf/{all,interface}/rp_filter is used.
> +
>  arp_filter - BOOLEAN
>  	1 - Allows you to have multiple network interfaces on the same
>  	subnet, and have the ARPs for each interface be answered
> 
> 
> 
> 
> 
> 
> 
> -- 

^ permalink raw reply

* [Patch net-next]atl1e:fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
From: jie.yang @ 2009-09-16  6:21 UTC (permalink / raw)
  To: davem; +Cc: miles.lane, chris.snook, jcliburn, netdev, linux-kernel, Jie Yang


[   25.059969] WARNING: at lib/dma-debug.c:816 check_unmap+0x383/0x55c()
[   25.059976] Hardware name: 1000HE
[   25.059984] ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
    memory with wrong function [device address=0x0000000036b92802] 
    [size=90 bytes] [mapped as single] [unmapped as page]

use the wrong API when free dma. So when map dma use a flag to demostrate
whether it is 'pci_map_single' or 'pci_map_page'. When free the dma, check
the flags to select the right APIs('pci_unmap_single' or 'pci_unmap_page').
 
Signed-off-by: Jie Yang <jie.yang@atheros.com>
---
diff --git a/drivers/net/atl1e/atl1e.h b/drivers/net/atl1e/atl1e.h
index ba48220..d63be5c 100644
--- a/drivers/net/atl1e/atl1e.h
+++ b/drivers/net/atl1e/atl1e.h
@@ -377,10 +377,19 @@ struct atl1e_hw {
  */
 struct atl1e_tx_buffer {
    struct sk_buff *skb;
+   unsigned long flags;
+#define ATL1E_TX_PCIMAP_SINGLE     0x0001
+#define ATL1E_TX_PCIMAP_PAGE       0x0002
+#define ATL1E_TX_PCIMAP_TYPE_MASK  0x3
    u16 length;
    dma_addr_t dma;
 };
 
+#define ATL1E_SET_PCIMAP_TYPE(tx_buff, type) do {      \
+   ((tx_buff)->flags) &= ~ATL1E_TX_PCIMAP_TYPE_MASK;   \
+   ((tx_buff)->flags) |= (type);               \
+   } while (0)
+
 struct atl1e_rx_page {
    dma_addr_t  dma;    /* receive rage DMA address */
    u8      *addr;   /* receive rage virtual address */
diff --git a/drivers/net/atl1e/atl1e_main.c b/drivers/net/atl1e/atl1e_main.c
index 69b830f..955da73 100644
--- a/drivers/net/atl1e/atl1e_main.c
+++ b/drivers/net/atl1e/atl1e_main.c
@@ -635,7 +635,11 @@ static void atl1e_clean_tx_ring(struct atl1e_adapter *adapter)
    for (index = 0; index < ring_count; index++) {
        tx_buffer = &tx_ring->tx_buffer[index];
        if (tx_buffer->dma) {
-           pci_unmap_page(pdev, tx_buffer->dma,
+           if (tx_buffer->flags & ATL1E_TX_PCIMAP_SINGLE)
+               pci_unmap_single(pdev, tx_buffer->dma,
+                   tx_buffer->length, PCI_DMA_TODEVICE);
+           else if (tx_buffer->flags & ATL1E_TX_PCIMAP_PAGE)
+               pci_unmap_page(pdev, tx_buffer->dma,
                    tx_buffer->length, PCI_DMA_TODEVICE);
            tx_buffer->dma = 0;
        }
@@ -1220,7 +1224,11 @@ static bool atl1e_clean_tx_irq(struct atl1e_adapter *adapter)
    while (next_to_clean != hw_next_to_clean) {
        tx_buffer = &tx_ring->tx_buffer[next_to_clean];
        if (tx_buffer->dma) {
-           pci_unmap_page(adapter->pdev, tx_buffer->dma,
+           if (tx_buffer->flags & ATL1E_TX_PCIMAP_SINGLE)
+               pci_unmap_single(adapter->pdev, tx_buffer->dma,
+                   tx_buffer->length, PCI_DMA_TODEVICE);
+           else if (tx_buffer->flags & ATL1E_TX_PCIMAP_PAGE)
+               pci_unmap_page(adapter->pdev, tx_buffer->dma,
                    tx_buffer->length, PCI_DMA_TODEVICE);
            tx_buffer->dma = 0;
        }
@@ -1741,6 +1749,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
        tx_buffer->length = map_len;
        tx_buffer->dma = pci_map_single(adapter->pdev,
                    skb->data, hdr_len, PCI_DMA_TODEVICE);
+       ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE);
        mapped_len += map_len;
        use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
        use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
@@ -1766,6 +1775,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
        tx_buffer->dma =
            pci_map_single(adapter->pdev, skb->data + mapped_len,
                    map_len, PCI_DMA_TODEVICE);
+       ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE);
        mapped_len  += map_len;
        use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
        use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
@@ -1801,6 +1811,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
                        (i * MAX_TX_BUF_LEN),
                        tx_buffer->length,
                        PCI_DMA_TODEVICE);
+           ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_PAGE);
            use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
            use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
                    ((cpu_to_le32(tx_buffer->length) &

^ permalink raw reply related

* Re: [PATCH] pkt_sched: Fix qdisc_create on stab error handling
From: David Miller @ 2009-09-16  6:42 UTC (permalink / raw)
  To: jarkao2; +Cc: kaber, netdev
In-Reply-To: <20090915184651.GA8373@ami.dom.local>

From: Jarek Poplawski <jarkao2@gmail.com>
Date: Tue, 15 Sep 2009 20:46:51 +0200

> If qdisc_get_stab returns error in qdisc_create there is skipped qdisc
> ops->destroy, which is necessary because it's after ops->init at the
> moment, so memory leaks are quite probable.
> 
> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>

Applied, thanks a lot!

^ permalink raw reply

* Re: [GIT PULL 0/7] Small IEEE 802.15.4 updates
From: David Miller @ 2009-09-16  6:44 UTC (permalink / raw)
  To: dbaryshkov; +Cc: linux-zigbee-devel, slapin, netdev
In-Reply-To: <1253052785-26190-1-git-send-email-dbaryshkov@gmail.com>

From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Date: Wed, 16 Sep 2009 02:12:58 +0400

> Could you please pull small updates for IEEE 802.15.4 targeted
> into 2.6.32-rcX. Thank you.

I'm only taking bug fixes at this time, some of these changes are
feature patches.  You had months before the merge window to get this
kind of stuff to me.

Please resend only the bug fixes, thank you.

^ permalink raw reply

* Re: igb bandwidth allocation configuration
From: Or Gerlitz @ 2009-09-16  6:47 UTC (permalink / raw)
  To: Simon Horman
  Cc: Alexander Duyck, e1000-devel@lists.sourceforge.net, netdev,
	Alexander Duyck, Kirsher, Jeffrey T
In-Reply-To: <20090915222926.GA24467@verge.net.au>

Simon Horman wrote:
> My reading of the documentation is also that its a minimum percentage of bandwidth. But after playing with the registers a bit it seems that it is actually a ceiling expressed. And the percentage is of 1Gigabit, regardless of the actual link speed.
Hi,

Does the documentation you refer to is the 82576 one? if yes, can you 
send a pointer to the doc/section you refer to? also is there 82599 
(Niantic) documentation which is publicly avail and I can look at? 
specifically, I would love taking a look on the equivalent of the "Intel 
82576 SR-IOV Driver Companion Guide"


Or.


^ permalink raw reply

* Re: [PATCH] fix CONFIG_TCP_MD5SIG + CONFIG_PREEMPT timer BUG()
From: David Miller @ 2009-09-16  6:49 UTC (permalink / raw)
  To: nite; +Cc: netdev
In-Reply-To: <20090915230126.GA21539@hq.alert.sk>

From: Robert Varga <nite@hq.alert.sk>
Date: Wed, 16 Sep 2009 01:01:26 +0200

> Hi,
> 
> I have recently came across a preemption imbalance detected by:
> 
> <4>huh, entered ffffffff80644630 with preempt_count 00000102, exited with 00000101?
> <0>------------[ cut here ]------------
> <2>kernel BUG at /usr/src/linux/kernel/timer.c:664!
> <0>invalid opcode: 0000 [1] PREEMPT SMP
> 
> with ffffffff80644630 being inet_twdr_hangman().
> 
> This appeared after I enabled CONFIG_TCP_MD5SIG and played with it a
> bit, so I looked at what might have caused it.
> 
> One thing that struck me as strange is tcp_twsk_destructor(), as it
> calls tcp_put_md5sig_pool() -- which entails a put_cpu(), causing the
> detected imbalance. Found on 2.6.23.9, but 2.6.31 is affected as well,
> as far as I can tell.
> 
> Signed-off-by: Robert Varga <nite@hq.alert.sk>

Looks good, applied and queued up for stable.

Thanks!

^ permalink raw reply

* Re: [Patch net-next]atl1e:fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
From: David Miller @ 2009-09-16  6:57 UTC (permalink / raw)
  To: jie.yang; +Cc: miles.lane, chris.snook, jcliburn, netdev, linux-kernel
In-Reply-To: <12530821133392-git-send-email-jie.yang@atheros.com>

From: <jie.yang@atheros.com>
Date: Wed, 16 Sep 2009 14:21:53 +0800

> 
> [   25.059969] WARNING: at lib/dma-debug.c:816 check_unmap+0x383/0x55c()
> [   25.059976] Hardware name: 1000HE
> [   25.059984] ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
>     memory with wrong function [device address=0x0000000036b92802] 
>     [size=90 bytes] [mapped as single] [unmapped as page]
> 
> use the wrong API when free dma. So when map dma use a flag to demostrate
> whether it is 'pci_map_single' or 'pci_map_page'. When free the dma, check
> the flags to select the right APIs('pci_unmap_single' or 'pci_unmap_page').
>  
> Signed-off-by: Jie Yang <jie.yang@atheros.com>

An 'unsigned long' is an enormous type to use just to store
3 bits of information.  Use a u16 or similar to compact the
size of struct atl1e_tx_buffer

Also, it looks terribly ugle to define the flag macros, some with
three leading zeros in the hexadecimal values and one without.

Please make them consistent, thanks.

Generally, I see that this change was put together very hastily
and without very much care.

^ permalink raw reply

* Re: [PATCH] mlx4: Fix access to freed memory
From: David Miller @ 2009-09-16  7:00 UTC (permalink / raw)
  To: rdreier; +Cc: vgusev, jackm, rolandd, netdev
In-Reply-To: <adad45sf4nu.fsf@cisco.com>

From: Roland Dreier <rdreier@cisco.com>
Date: Tue, 15 Sep 2009 11:23:33 -0700

> 
>  > catas_reset() uses pointer to mlx4_priv, but mlx4_priv is not valid after
>  > call mlx4_restart_one().
>  > 
>  > Signed-off-by: Vitaliy Gusev <vgusev@openvz.org>
> 
> Good catch.  Dave, if you want me to take this, let me know, otherwise:
> 
> Acked-by: Roland Dreier <rolandd@cisco.com>

I've got it, thanks everyone.

^ permalink raw reply

* Re: [PATCH] RxRPC: Use uX/sX rather than uintX_t/intX_t types
From: David Miller @ 2009-09-16  7:01 UTC (permalink / raw)
  To: dhowells; +Cc: torvalds, akpm, linux-afs, netdev
In-Reply-To: <20090915101631.1051.70606.stgit@warthog.procyon.org.uk>

From: David Howells <dhowells@redhat.com>
Date: Tue, 15 Sep 2009 11:16:31 +0100

> Use uX rather than uintX_t types for consistency.
> 
> Signed-off-by: David Howells <dhowells@redhat.com>

Applied, thanks for fixing this up so quickly!

^ permalink raw reply

* Re: igb bandwidth allocation configuration
From: Simon Horman @ 2009-09-16  7:04 UTC (permalink / raw)
  To: Or Gerlitz
  Cc: Alexander Duyck, e1000-devel@lists.sourceforge.net, netdev,
	Alexander Duyck, Kirsher, Jeffrey T
In-Reply-To: <4AB08A00.40102@voltaire.com>

On Wed, Sep 16, 2009 at 09:47:28AM +0300, Or Gerlitz wrote:
> Simon Horman wrote:
> >My reading of the documentation is also that its a minimum percentage of bandwidth. But after playing with the registers a bit it seems that it is actually a ceiling expressed. And the percentage is of 1Gigabit, regardless of the actual link speed.
> Hi,
> 
> Does the documentation you refer to is the 82576 one? if yes, can
> you send a pointer to the doc/section you refer to?

Yes, its the 82576. I'm looking at the 82576 datasheet.  In particular
section 4.5.11.1.5.1 "Configuring Tx Bandwidth to VMs", although there are
also some other sections covering the topic in that document.

> also is there
> 82599 (Niantic) documentation which is publicly avail and I can look
> at? specifically, I would love taking a look on the equivalent of
> the "Intel 82576 SR-IOV Driver Companion Guide"

Sorry, I don't know anything about the 82599. But I am only working

with publicly available documentation.

^ permalink raw reply

* [Patch net-next]atl1e:fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
From: jie.yang @ 2009-09-16  7:23 UTC (permalink / raw)
  To: davem; +Cc: miles.lane, chris.snook, jcliburn, netdev, linux-kernel, Jie Yang

[   25.059969] WARNING: at lib/dma-debug.c:816 check_unmap+0x383/0x55c()
[   25.059976] Hardware name: 1000HE
[   25.059984] ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
     memory with wrong function [device address=0x0000000036b92802]
     [size=90 bytes] [mapped as single] [unmapped as page]

use the wrong API when free dma. So when map dma use a flag to 
demostrate whether it is 'pci_map_single' or 'pci_map_page'. When free 
the dma, check the flags to select the right APIs('pci_unmap_single' or 'pci_unmap_page').

set the flags type to u16  instead of unsigned long  on David's comments.

Signed-off-by: Jie Yang <jie.yang@atheros.com>
---

diff --git a/drivers/net/atl1e/atl1e.h b/drivers/net/atl1e/atl1e.h
index ba48220..490d3b3 100644
--- a/drivers/net/atl1e/atl1e.h
+++ b/drivers/net/atl1e/atl1e.h
@@ -377,10 +377,19 @@ struct atl1e_hw {
  */
 struct atl1e_tx_buffer {
    struct sk_buff *skb;
+   u16 flags;
+#define ATL1E_TX_PCIMAP_SINGLE     0x0001
+#define ATL1E_TX_PCIMAP_PAGE       0x0002
+#define ATL1E_TX_PCIMAP_TYPE_MASK  0x0003
    u16 length;
    dma_addr_t dma;
 };
 
+#define ATL1E_SET_PCIMAP_TYPE(tx_buff, type) do {      \
+   ((tx_buff)->flags) &= ~ATL1E_TX_PCIMAP_TYPE_MASK;   \
+   ((tx_buff)->flags) |= (type);               \
+   } while (0)
+
 struct atl1e_rx_page {
    dma_addr_t  dma;    /* receive rage DMA address */
    u8      *addr;   /* receive rage virtual address */
diff --git a/drivers/net/atl1e/atl1e_main.c b/drivers/net/atl1e/atl1e_main.c
index 69b830f..955da73 100644
--- a/drivers/net/atl1e/atl1e_main.c
+++ b/drivers/net/atl1e/atl1e_main.c
@@ -635,7 +635,11 @@ static void atl1e_clean_tx_ring(struct atl1e_adapter *adapter)
    for (index = 0; index < ring_count; index++) {
        tx_buffer = &tx_ring->tx_buffer[index];
        if (tx_buffer->dma) {
-           pci_unmap_page(pdev, tx_buffer->dma,
+           if (tx_buffer->flags & ATL1E_TX_PCIMAP_SINGLE)
+               pci_unmap_single(pdev, tx_buffer->dma,
+                   tx_buffer->length, PCI_DMA_TODEVICE);
+           else if (tx_buffer->flags & ATL1E_TX_PCIMAP_PAGE)
+               pci_unmap_page(pdev, tx_buffer->dma,
                    tx_buffer->length, PCI_DMA_TODEVICE);
            tx_buffer->dma = 0;
        }
@@ -1220,7 +1224,11 @@ static bool atl1e_clean_tx_irq(struct atl1e_adapter *adapter)
    while (next_to_clean != hw_next_to_clean) {
        tx_buffer = &tx_ring->tx_buffer[next_to_clean];
        if (tx_buffer->dma) {
-           pci_unmap_page(adapter->pdev, tx_buffer->dma,
+           if (tx_buffer->flags & ATL1E_TX_PCIMAP_SINGLE)
+               pci_unmap_single(adapter->pdev, tx_buffer->dma,
+                   tx_buffer->length, PCI_DMA_TODEVICE);
+           else if (tx_buffer->flags & ATL1E_TX_PCIMAP_PAGE)
+               pci_unmap_page(adapter->pdev, tx_buffer->dma,
                    tx_buffer->length, PCI_DMA_TODEVICE);
            tx_buffer->dma = 0;
        }
@@ -1741,6 +1749,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
        tx_buffer->length = map_len;
        tx_buffer->dma = pci_map_single(adapter->pdev,
                    skb->data, hdr_len, PCI_DMA_TODEVICE);
+       ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE);
        mapped_len += map_len;
        use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
        use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
@@ -1766,6 +1775,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
        tx_buffer->dma =
            pci_map_single(adapter->pdev, skb->data + mapped_len,
                    map_len, PCI_DMA_TODEVICE);
+       ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_SINGLE);
        mapped_len  += map_len;
        use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
        use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
@@ -1801,6 +1811,7 @@ static void atl1e_tx_map(struct atl1e_adapter *adapter,
                        (i * MAX_TX_BUF_LEN),
                        tx_buffer->length,
                        PCI_DMA_TODEVICE);
+           ATL1E_SET_PCIMAP_TYPE(tx_buffer, ATL1E_TX_PCIMAP_PAGE);
            use_tpd->buffer_addr = cpu_to_le64(tx_buffer->dma);
            use_tpd->word2 = (use_tpd->word2 & (~TPD_BUFLEN_MASK)) |
                    ((cpu_to_le32(tx_buffer->length) &

^ permalink raw reply related

* [PATCH] cpmac: fix compilation errors against undeclared BUS_ID_SIZE
From: Florian Fainelli @ 2009-09-16  7:44 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Ralf Baechle, linux-mips

Hi David,

This is relevant for 2.6.32-rc0, thanks !
--
From: Florian Fainelli <florian@openwrt.org>
Subject: [PATCH] cpmac: fix compilation errors against undeclared BUS_ID_SIZE

With the removal of BUS_ID_SIZE, cpmac was not fully
converted to use MII_BUS_ID_SIZE as it ought to. This
patch fixes the following cpmac build failure:
 CC      drivers/net/cpmac.o
drivers/net/cpmac.c: In function 'cpmac_start_xmit':
drivers/net/cpmac.c:563: warning: comparison of distinct pointer types lacks a cast
drivers/net/cpmac.c: In function 'cpmac_probe':
drivers/net/cpmac.c:1112: error: 'BUS_ID_SIZE' undeclared (first use in this function)
drivers/net/cpmac.c:1112: error: (Each undeclared identifier is reported only once
drivers/net/cpmac.c:1112: error: for each function it appears in.)

Reported-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Florian Fainelli <florian@openwrt.org>
---
diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c
index 3e3fab8..61f9da2 100644
--- a/drivers/net/cpmac.c
+++ b/drivers/net/cpmac.c
@@ -1109,7 +1109,7 @@ static int external_switch;
 static int __devinit cpmac_probe(struct platform_device *pdev)
 {
 	int rc, phy_id;
-	char mdio_bus_id[BUS_ID_SIZE];
+	char mdio_bus_id[MII_BUS_ID_SIZE];
 	struct resource *mem;
 	struct cpmac_priv *priv;
 	struct net_device *dev;
@@ -1118,7 +1118,7 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
 	pdata = pdev->dev.platform_data;
 
 	if (external_switch || dumb_switch) {
-		strncpy(mdio_bus_id, "0", BUS_ID_SIZE); /* fixed phys bus */
+		strncpy(mdio_bus_id, "0", MII_BUS_ID_SIZE); /* fixed phys bus */
 		phy_id = pdev->id;
 	} else {
 		for (phy_id = 0; phy_id < PHY_MAX_ADDR; phy_id++) {
@@ -1126,7 +1126,7 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
 				continue;
 			if (!cpmac_mii->phy_map[phy_id])
 				continue;
-			strncpy(mdio_bus_id, cpmac_mii->id, BUS_ID_SIZE);
+			strncpy(mdio_bus_id, cpmac_mii->id, MII_BUS_ID_SIZE);
 			break;
 		}
 	}
@@ -1167,7 +1167,7 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
 	priv->msg_enable = netif_msg_init(debug_level, 0xff);
 	memcpy(dev->dev_addr, pdata->dev_addr, sizeof(dev->dev_addr));
 
-	snprintf(priv->phy_name, BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id);
+	snprintf(priv->phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id);
 
 	priv->phy = phy_connect(dev, priv->phy_name, &cpmac_adjust_link, 0,
 						PHY_INTERFACE_MODE_MII);



^ permalink raw reply related

* Re: [Patch net-next]atl1e:fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
From: David Miller @ 2009-09-16  7:44 UTC (permalink / raw)
  To: jie.yang; +Cc: miles.lane, chris.snook, jcliburn, netdev, linux-kernel
In-Reply-To: <12530857843502-git-send-email-jie.yang@atheros.com>

From: <jie.yang@atheros.com>
Date: Wed, 16 Sep 2009 15:23:04 +0800

> [   25.059969] WARNING: at lib/dma-debug.c:816 check_unmap+0x383/0x55c()
> [   25.059976] Hardware name: 1000HE
> [   25.059984] ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
>      memory with wrong function [device address=0x0000000036b92802]
>      [size=90 bytes] [mapped as single] [unmapped as page]
> 
> use the wrong API when free dma. So when map dma use a flag to 
> demostrate whether it is 'pci_map_single' or 'pci_map_page'. When free 
> the dma, check the flags to select the right APIs('pci_unmap_single' or 'pci_unmap_page').
> 
> set the flags type to u16  instead of unsigned long  on David's comments.
> 
> Signed-off-by: Jie Yang <jie.yang@atheros.com>

Your email client has corrupted this patch (turning tab characters
into spaces, etc.) making it unusable.

^ permalink raw reply

* Re: fanotify as syscalls
From: Jamie Lokier @ 2009-09-16  7:52 UTC (permalink / raw)
  To: Eric Paris
  Cc: Linus Torvalds, Evgeniy Polyakov, David Miller, linux-kernel,
	linux-fsdevel, netdev, viro, alan, hch
In-Reply-To: <1253064391.5213.37.camel@dhcp231-106.rdu.redhat.com>

Eric Paris wrote:
> On Tue, 2009-09-15 at 16:49 -0700, Linus Torvalds wrote:
> > And btw, I still want to know what's so wonderful about fanotify that we 
> > would actually want yet-another-filesystem-notification-interface. So I'm 
> > not sayying that I'll take a system call interface.
> 
> The real thing that fanotify provides is an open fd with the event
> rather than some arbitrary 'watch descriptor' that userspace must
> somehow magically map back to data on disk.  This means that it could be
> used to provide subtree notification, which inotify is completely
> incapable of doing.

That's a bit of a spurious claim.

- fanotify does not provide subtree notification in it's
  present form.  When it is extended to do that, why wouldn't
  inotify be as well?  That's an fsnotify feature, common to both.

- fanotify does not provide notification at all for some events that
  you get with inotify.  It is not a superset, so you can't use
  fanotify to provide a subtree-capable equivalent to inotify.  What
  a mess when you need the combination of both features!

- fanotify requires you call readlink(/proc/fd/N) for every event to
  get the path.  It's not a particularly efficient way to get it,
  especially when an apps wants to know if it's something in it's
  region of interest but doesn't care about the actual path.
  When an apps knows it needs the map back to to path, why make it
  slow to get it?  That "extensible data format" is being
  underutilised...

- fanotify's descriptor may be race-prone as a way to get the subtree
  used for access, because any of the parent directories could have
  moved and even been deleted before the app calls
  readlink(/proc/fd/N).  I don't know if a _reliable_ way to track
  changes in a subtree can be built on it.  Maybe it can but it
  appears this hasn't been analysed.  It depends on
  readlink(/proc/fd/N)'s behaviour when the dentry's have been
  changed, among other things.

- Does the descriptor cause umount to fail when user does "do some
  stuff in baz; umount baz", or does it serialise nicely?  That's one
  of inotify's nice features - it doesn't cause umounts to fail.

> And it can be used to provide system wide notification.  We all know
> who wants that.

People who want to break out of chroot/namespace jails using the
conveniently provided open file descriptor? :-)

Seriously, what does system-wide fanotify do when run from a
chroot/namespace/cgroup, and a file outside them is accessed?

If the event is delivered with file desciptor, that's a security hole.
If it's not delivered, that sounds like working subtree support?

I'd expect anti-malware to want to be run inside VMs quite often...

Note that there's no such thing as "the real system root" any more.

> It provides an extensible data format which allows growth impossible in
> inotify.  I don't know if anyone remember the inotify patches which
> wanted to overload the inotify cookie field for some other information,
> but inotify information extension is not reasonable or backwards
> compatible.

I agree with this (although that's what flags are for -- see clone).

I don't have a problem with the next interface being fanotify (despite
arguing a lot); I just want to see the next one being useful for the
things I would otherwise be proposing my own yet-another-interface
for.  So we don't need a fourth one soon after the third due to
easily foreseen limitations.

> I've got private commitments for two very large anti malware companies,
> both of which unprotect and hack syscall tables in their customer's
> kernels, that they would like to move to an fanotify interface.  Both
> Red Hat and Suse have expressed interest in these patches and have
> contributed to the patch set.
> 
> The patch set is actually rather small (entire set of about 20 patches
> is 1800 lines) as it builds on the fsnotify work already in 2.6.31 to
> reuse code from inotify rather than reimplement the same things over and
> over (like we previously had with inotify and dnotify)

I don't have any problem with either of these, and _fs_notify
generally seems like an improvement.  I don't have a problem with
fanotify either.  For what it does, it's ok.

> Don't know what else to say.....

Answer questions about use-cases that you're not interested in?  Why
block them?  What about Evigny's request for an event without an open
fd - because he needs the pid information (inotify doesn't provide)
but not the fd?

Sorry to be so harsh.  I'm really trying to make sure we don't repeat
the mistakes of dnotify and inotify, and end up with a third interface
which also is too restrictive (because it's good enough for your
anti-malware and HSM customers) so that a fourth interface will be
needed soon after.

I'd like to be able to use it from some applications to accelerate
userspace caching of things (faster Make, faster Samba) without
penalising all other applications touching unrelated parts of the
filesystem.  The attitude "you can live with 10% slowdown" worries me.
I'm sure that can be fixed with a bit of care.

If the intention is to maintain fanotify and inotify side-by-side for
different uses (because fanotify returns open descriptors and blocks
the accessing process until acked), that's ok with me.  It makes
sense.  But then it's messy that neither offers a superset of the
other regarding which files and events are tracked.

If it's right that inotify has no room for extensibility (I'm not sure
about this), than it appears we already made a mess with dnotify and
inotify, so it would be a shame to repeat the same mistakes again.
Let's get the next one right, even it takes a bit longer, ok?

-- Jamie

^ permalink raw reply


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