* 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: 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: 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: [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
* [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: 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
* 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® 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-12, 2009. Register now!
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® 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-12, 2009. Register now!
http://p.sf.net/sfu/devconf
^ permalink raw reply
* 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
* [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
* [PATCH 6/7] nl802154: split away MAC commands implementation
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-6-git-send-email-dbaryshkov@gmail.com>
Move all mac-related stuff to separate file so that ieee802154/netlink.c
contains only generic code.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
net/ieee802154/Makefile | 2 +-
net/ieee802154/ieee802154.h | 48 +++
net/ieee802154/netlink.c | 605 +-------------------------------
net/ieee802154/{netlink.c => nl-mac.c} | 117 ++-----
4 files changed, 81 insertions(+), 691 deletions(-)
create mode 100644 net/ieee802154/ieee802154.h
copy net/ieee802154/{netlink.c => nl-mac.c} (86%)
diff --git a/net/ieee802154/Makefile b/net/ieee802154/Makefile
index 42b1f0d..69af9f6 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_policy.o wpan-class.o
+ieee802154-y := netlink.o nl-mac.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/ieee802154.h b/net/ieee802154/ieee802154.h
new file mode 100644
index 0000000..0790eb0
--- /dev/null
+++ b/net/ieee802154/ieee802154.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 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.
+ *
+ */
+#ifndef IEEE_802154_LOCAL_H
+#define IEEE_802154_LOCAL_H
+
+int __init ieee802154_nl_init(void);
+void __exit ieee802154_nl_exit(void);
+
+#define IEEE802154_OP(_cmd, _func) \
+ { \
+ .cmd = _cmd, \
+ .policy = ieee802154_policy, \
+ .doit = _func, \
+ .dumpit = NULL, \
+ .flags = GENL_ADMIN_PERM, \
+ }
+
+#define IEEE802154_DUMP(_cmd, _func, _dump) \
+ { \
+ .cmd = _cmd, \
+ .policy = ieee802154_policy, \
+ .doit = _func, \
+ .dumpit = _dump, \
+ }
+
+struct sk_buff *ieee802154_nl_create(int flags, u8 req);
+int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group);
+
+extern struct genl_family nl802154_family;
+int nl802154_mac_register(void);
+int nl802154_phy_register(void);
+
+#endif
diff --git a/net/ieee802154/netlink.c b/net/ieee802154/netlink.c
index 0fadd6b..5b738ec 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/netlink.c
@@ -23,21 +23,15 @@
*/
#include <linux/kernel.h>
-#include <linux/if_arp.h>
-#include <linux/netdevice.h>
-#include <net/netlink.h>
#include <net/genetlink.h>
-#include <net/sock.h>
#include <linux/nl802154.h>
-#include <net/af_ieee802154.h>
-#include <net/nl802154.h>
-#include <net/ieee802154.h>
-#include <net/ieee802154_netdev.h>
+
+#include "ieee802154.h"
static unsigned int ieee802154_seq_num;
static DEFINE_SPINLOCK(ieee802154_seq_lock);
-static struct genl_family ieee802154_coordinator_family = {
+struct genl_family nl802154_family = {
.id = GENL_ID_GENERATE,
.hdrsize = 0,
.name = IEEE802154_NL_NAME,
@@ -45,16 +39,8 @@ static struct genl_family ieee802154_coordinator_family = {
.maxattr = IEEE802154_ATTR_MAX,
};
-static struct genl_multicast_group ieee802154_coord_mcgrp = {
- .name = IEEE802154_MCAST_COORD_NAME,
-};
-
-static struct genl_multicast_group ieee802154_beacon_mcgrp = {
- .name = IEEE802154_MCAST_BEACON_NAME,
-};
-
/* Requests to userspace */
-static struct sk_buff *ieee802154_nl_create(int flags, u8 req)
+struct sk_buff *ieee802154_nl_create(int flags, u8 req)
{
void *hdr;
struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
@@ -65,7 +51,7 @@ static struct sk_buff *ieee802154_nl_create(int flags, u8 req)
spin_lock_irqsave(&ieee802154_seq_lock, f);
hdr = genlmsg_put(msg, 0, ieee802154_seq_num++,
- &ieee802154_coordinator_family, flags, req);
+ &nl802154_family, flags, req);
spin_unlock_irqrestore(&ieee802154_seq_lock, f);
if (!hdr) {
nlmsg_free(msg);
@@ -75,7 +61,7 @@ static struct sk_buff *ieee802154_nl_create(int flags, u8 req)
return msg;
}
-static int ieee802154_nl_finish(struct sk_buff *msg)
+int ieee802154_nl_mcast(struct sk_buff *msg, unsigned int group)
{
/* XXX: nlh is right at the start of msg */
void *hdr = genlmsg_data(NLMSG_DATA(msg->data));
@@ -83,602 +69,33 @@ static int ieee802154_nl_finish(struct sk_buff *msg)
if (genlmsg_end(msg, hdr) < 0)
goto out;
- return genlmsg_multicast(msg, 0, ieee802154_coord_mcgrp.id,
- GFP_ATOMIC);
+ return genlmsg_multicast(msg, 0, group, GFP_ATOMIC);
out:
nlmsg_free(msg);
return -ENOBUFS;
}
-int ieee802154_nl_assoc_indic(struct net_device *dev,
- struct ieee802154_addr *addr, u8 cap)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- if (addr->addr_type != IEEE802154_ADDR_LONG) {
- pr_err("%s: received non-long source address!\n", __func__);
- return -EINVAL;
- }
-
- msg = ieee802154_nl_create(0, IEEE802154_ASSOCIATE_INDIC);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
-
- NLA_PUT(msg, IEEE802154_ATTR_SRC_HW_ADDR, IEEE802154_ADDR_LEN,
- addr->hwaddr);
-
- NLA_PUT_U8(msg, IEEE802154_ATTR_CAPABILITY, cap);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_assoc_indic);
-
-int ieee802154_nl_assoc_confirm(struct net_device *dev, u16 short_addr,
- u8 status)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- msg = ieee802154_nl_create(0, IEEE802154_ASSOCIATE_CONF);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
-
- NLA_PUT_U16(msg, IEEE802154_ATTR_SHORT_ADDR, short_addr);
- NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_assoc_confirm);
-
-int ieee802154_nl_disassoc_indic(struct net_device *dev,
- struct ieee802154_addr *addr, u8 reason)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- msg = ieee802154_nl_create(0, IEEE802154_DISASSOCIATE_INDIC);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
-
- if (addr->addr_type == IEEE802154_ADDR_LONG)
- NLA_PUT(msg, IEEE802154_ATTR_SRC_HW_ADDR, IEEE802154_ADDR_LEN,
- addr->hwaddr);
- else
- NLA_PUT_U16(msg, IEEE802154_ATTR_SRC_SHORT_ADDR,
- addr->short_addr);
-
- NLA_PUT_U8(msg, IEEE802154_ATTR_REASON, reason);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_disassoc_indic);
-
-int ieee802154_nl_disassoc_confirm(struct net_device *dev, u8 status)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- msg = ieee802154_nl_create(0, IEEE802154_DISASSOCIATE_CONF);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
-
- NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_disassoc_confirm);
-
-int ieee802154_nl_beacon_indic(struct net_device *dev,
- u16 panid, u16 coord_addr)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- msg = ieee802154_nl_create(0, IEEE802154_BEACON_NOTIFY_INDIC);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
- NLA_PUT_U16(msg, IEEE802154_ATTR_COORD_SHORT_ADDR, coord_addr);
- NLA_PUT_U16(msg, IEEE802154_ATTR_COORD_PAN_ID, panid);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_beacon_indic);
-
-int ieee802154_nl_scan_confirm(struct net_device *dev,
- u8 status, u8 scan_type, u32 unscanned, u8 page,
- u8 *edl/* , struct list_head *pan_desc_list */)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- msg = ieee802154_nl_create(0, IEEE802154_SCAN_CONF);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
-
- NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
- NLA_PUT_U8(msg, IEEE802154_ATTR_SCAN_TYPE, scan_type);
- NLA_PUT_U32(msg, IEEE802154_ATTR_CHANNELS, unscanned);
- NLA_PUT_U8(msg, IEEE802154_ATTR_PAGE, page);
-
- if (edl)
- NLA_PUT(msg, IEEE802154_ATTR_ED_LIST, 27, edl);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_scan_confirm);
-
-int ieee802154_nl_start_confirm(struct net_device *dev, u8 status)
-{
- struct sk_buff *msg;
-
- pr_debug("%s\n", __func__);
-
- msg = ieee802154_nl_create(0, IEEE802154_START_CONF);
- if (!msg)
- return -ENOBUFS;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
-
- NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
-
- return ieee802154_nl_finish(msg);
-
-nla_put_failure:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-EXPORT_SYMBOL(ieee802154_nl_start_confirm);
-
-static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 pid,
- u32 seq, int flags, struct net_device *dev)
-{
- void *hdr;
-
- pr_debug("%s\n", __func__);
-
- hdr = genlmsg_put(msg, 0, seq, &ieee802154_coordinator_family, flags,
- IEEE802154_LIST_IFACE);
- if (!hdr)
- goto out;
-
- NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, dev->name);
- NLA_PUT_U32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex);
-
- NLA_PUT(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
- dev->dev_addr);
- NLA_PUT_U16(msg, IEEE802154_ATTR_SHORT_ADDR,
- ieee802154_mlme_ops(dev)->get_short_addr(dev));
- NLA_PUT_U16(msg, IEEE802154_ATTR_PAN_ID,
- ieee802154_mlme_ops(dev)->get_pan_id(dev));
- return genlmsg_end(msg, hdr);
-
-nla_put_failure:
- genlmsg_cancel(msg, hdr);
-out:
- return -EMSGSIZE;
-}
-
-/* Requests from userspace */
-static struct net_device *ieee802154_nl_get_dev(struct genl_info *info)
-{
- struct net_device *dev;
-
- if (info->attrs[IEEE802154_ATTR_DEV_NAME]) {
- char name[IFNAMSIZ + 1];
- nla_strlcpy(name, info->attrs[IEEE802154_ATTR_DEV_NAME],
- sizeof(name));
- dev = dev_get_by_name(&init_net, name);
- } else if (info->attrs[IEEE802154_ATTR_DEV_INDEX])
- dev = dev_get_by_index(&init_net,
- nla_get_u32(info->attrs[IEEE802154_ATTR_DEV_INDEX]));
- else
- return NULL;
-
- if (!dev)
- return NULL;
-
- if (dev->type != ARPHRD_IEEE802154) {
- dev_put(dev);
- return NULL;
- }
-
- return dev;
-}
-
-static int ieee802154_associate_req(struct sk_buff *skb,
- struct genl_info *info)
-{
- struct net_device *dev;
- struct ieee802154_addr addr;
- u8 page;
- int ret = -EINVAL;
-
- if (!info->attrs[IEEE802154_ATTR_CHANNEL] ||
- !info->attrs[IEEE802154_ATTR_COORD_PAN_ID] ||
- (!info->attrs[IEEE802154_ATTR_COORD_HW_ADDR] &&
- !info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR]) ||
- !info->attrs[IEEE802154_ATTR_CAPABILITY])
- return -EINVAL;
-
- dev = ieee802154_nl_get_dev(info);
- if (!dev)
- return -ENODEV;
-
- if (info->attrs[IEEE802154_ATTR_COORD_HW_ADDR]) {
- addr.addr_type = IEEE802154_ADDR_LONG;
- nla_memcpy(addr.hwaddr,
- info->attrs[IEEE802154_ATTR_COORD_HW_ADDR],
- IEEE802154_ADDR_LEN);
- } else {
- addr.addr_type = IEEE802154_ADDR_SHORT;
- addr.short_addr = nla_get_u16(
- info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR]);
- }
- addr.pan_id = nla_get_u16(info->attrs[IEEE802154_ATTR_COORD_PAN_ID]);
-
- if (info->attrs[IEEE802154_ATTR_PAGE])
- page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
- else
- page = 0;
-
- ret = ieee802154_mlme_ops(dev)->assoc_req(dev, &addr,
- nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]),
- page,
- nla_get_u8(info->attrs[IEEE802154_ATTR_CAPABILITY]));
-
- dev_put(dev);
- return ret;
-}
-
-static int ieee802154_associate_resp(struct sk_buff *skb,
- struct genl_info *info)
-{
- struct net_device *dev;
- struct ieee802154_addr addr;
- int ret = -EINVAL;
-
- if (!info->attrs[IEEE802154_ATTR_STATUS] ||
- !info->attrs[IEEE802154_ATTR_DEST_HW_ADDR] ||
- !info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR])
- return -EINVAL;
-
- dev = ieee802154_nl_get_dev(info);
- if (!dev)
- return -ENODEV;
-
- addr.addr_type = IEEE802154_ADDR_LONG;
- nla_memcpy(addr.hwaddr, info->attrs[IEEE802154_ATTR_DEST_HW_ADDR],
- IEEE802154_ADDR_LEN);
- addr.pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
-
-
- ret = ieee802154_mlme_ops(dev)->assoc_resp(dev, &addr,
- nla_get_u16(info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]),
- nla_get_u8(info->attrs[IEEE802154_ATTR_STATUS]));
-
- dev_put(dev);
- return ret;
-}
-
-static int ieee802154_disassociate_req(struct sk_buff *skb,
- struct genl_info *info)
-{
- struct net_device *dev;
- struct ieee802154_addr addr;
- int ret = -EINVAL;
-
- if ((!info->attrs[IEEE802154_ATTR_DEST_HW_ADDR] &&
- !info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]) ||
- !info->attrs[IEEE802154_ATTR_REASON])
- return -EINVAL;
-
- dev = ieee802154_nl_get_dev(info);
- if (!dev)
- return -ENODEV;
-
- if (info->attrs[IEEE802154_ATTR_DEST_HW_ADDR]) {
- addr.addr_type = IEEE802154_ADDR_LONG;
- nla_memcpy(addr.hwaddr,
- info->attrs[IEEE802154_ATTR_DEST_HW_ADDR],
- IEEE802154_ADDR_LEN);
- } else {
- addr.addr_type = IEEE802154_ADDR_SHORT;
- addr.short_addr = nla_get_u16(
- info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]);
- }
- addr.pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
-
- ret = ieee802154_mlme_ops(dev)->disassoc_req(dev, &addr,
- nla_get_u8(info->attrs[IEEE802154_ATTR_REASON]));
-
- dev_put(dev);
- return ret;
-}
-
-/*
- * PANid, channel, beacon_order = 15, superframe_order = 15,
- * PAN_coordinator, battery_life_extension = 0,
- * coord_realignment = 0, security_enable = 0
-*/
-static int ieee802154_start_req(struct sk_buff *skb, struct genl_info *info)
-{
- struct net_device *dev;
- struct ieee802154_addr addr;
-
- u8 channel, bcn_ord, sf_ord;
- u8 page;
- int pan_coord, blx, coord_realign;
- int ret;
-
- if (!info->attrs[IEEE802154_ATTR_COORD_PAN_ID] ||
- !info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR] ||
- !info->attrs[IEEE802154_ATTR_CHANNEL] ||
- !info->attrs[IEEE802154_ATTR_BCN_ORD] ||
- !info->attrs[IEEE802154_ATTR_SF_ORD] ||
- !info->attrs[IEEE802154_ATTR_PAN_COORD] ||
- !info->attrs[IEEE802154_ATTR_BAT_EXT] ||
- !info->attrs[IEEE802154_ATTR_COORD_REALIGN]
- )
- return -EINVAL;
-
- dev = ieee802154_nl_get_dev(info);
- if (!dev)
- return -ENODEV;
-
- addr.addr_type = IEEE802154_ADDR_SHORT;
- addr.short_addr = nla_get_u16(
- info->attrs[IEEE802154_ATTR_COORD_SHORT_ADDR]);
- addr.pan_id = nla_get_u16(info->attrs[IEEE802154_ATTR_COORD_PAN_ID]);
-
- channel = nla_get_u8(info->attrs[IEEE802154_ATTR_CHANNEL]);
- bcn_ord = nla_get_u8(info->attrs[IEEE802154_ATTR_BCN_ORD]);
- sf_ord = nla_get_u8(info->attrs[IEEE802154_ATTR_SF_ORD]);
- pan_coord = nla_get_u8(info->attrs[IEEE802154_ATTR_PAN_COORD]);
- blx = nla_get_u8(info->attrs[IEEE802154_ATTR_BAT_EXT]);
- coord_realign = nla_get_u8(info->attrs[IEEE802154_ATTR_COORD_REALIGN]);
-
- if (info->attrs[IEEE802154_ATTR_PAGE])
- page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
- else
- page = 0;
-
-
- if (addr.short_addr == IEEE802154_ADDR_BROADCAST) {
- ieee802154_nl_start_confirm(dev, IEEE802154_NO_SHORT_ADDRESS);
- dev_put(dev);
- return -EINVAL;
- }
-
- ret = ieee802154_mlme_ops(dev)->start_req(dev, &addr, channel, page,
- bcn_ord, sf_ord, pan_coord, blx, coord_realign);
-
- dev_put(dev);
- return ret;
-}
-
-static int ieee802154_scan_req(struct sk_buff *skb, struct genl_info *info)
-{
- struct net_device *dev;
- int ret;
- u8 type;
- u32 channels;
- u8 duration;
- u8 page;
-
- if (!info->attrs[IEEE802154_ATTR_SCAN_TYPE] ||
- !info->attrs[IEEE802154_ATTR_CHANNELS] ||
- !info->attrs[IEEE802154_ATTR_DURATION])
- return -EINVAL;
-
- dev = ieee802154_nl_get_dev(info);
- if (!dev)
- return -ENODEV;
-
- type = nla_get_u8(info->attrs[IEEE802154_ATTR_SCAN_TYPE]);
- channels = nla_get_u32(info->attrs[IEEE802154_ATTR_CHANNELS]);
- duration = nla_get_u8(info->attrs[IEEE802154_ATTR_DURATION]);
-
- if (info->attrs[IEEE802154_ATTR_PAGE])
- page = nla_get_u8(info->attrs[IEEE802154_ATTR_PAGE]);
- else
- page = 0;
-
-
- ret = ieee802154_mlme_ops(dev)->scan_req(dev, type, channels, page,
- duration);
-
- dev_put(dev);
- return ret;
-}
-
-static int ieee802154_list_iface(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 net_device *dev = NULL;
- int rc = -ENOBUFS;
-
- pr_debug("%s\n", __func__);
-
- dev = ieee802154_nl_get_dev(info);
- if (!dev)
- return -ENODEV;
-
- msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
- if (!msg)
- goto out_dev;
-
- rc = ieee802154_nl_fill_iface(msg, info->snd_pid, info->snd_seq,
- 0, dev);
- if (rc < 0)
- goto out_free;
-
- dev_put(dev);
-
- return genlmsg_unicast(&init_net, msg, info->snd_pid);
-out_free:
- nlmsg_free(msg);
-out_dev:
- dev_put(dev);
- return rc;
-
-}
-
-static int ieee802154_dump_iface(struct sk_buff *skb,
- struct netlink_callback *cb)
-{
- struct net *net = sock_net(skb->sk);
- struct net_device *dev;
- int idx;
- int s_idx = cb->args[0];
-
- pr_debug("%s\n", __func__);
-
- idx = 0;
- for_each_netdev(net, dev) {
- if (idx < s_idx || (dev->type != ARPHRD_IEEE802154))
- goto cont;
-
- if (ieee802154_nl_fill_iface(skb, NETLINK_CB(cb->skb).pid,
- cb->nlh->nlmsg_seq, NLM_F_MULTI, dev) < 0)
- break;
-cont:
- idx++;
- }
- cb->args[0] = idx;
-
- return skb->len;
-}
-
-#define IEEE802154_OP(_cmd, _func) \
- { \
- .cmd = _cmd, \
- .policy = ieee802154_policy, \
- .doit = _func, \
- .dumpit = NULL, \
- .flags = GENL_ADMIN_PERM, \
- }
-
-#define IEEE802154_DUMP(_cmd, _func, _dump) \
- { \
- .cmd = _cmd, \
- .policy = ieee802154_policy, \
- .doit = _func, \
- .dumpit = _dump, \
- }
-
-static struct genl_ops ieee802154_coordinator_ops[] = {
- IEEE802154_OP(IEEE802154_ASSOCIATE_REQ, ieee802154_associate_req),
- IEEE802154_OP(IEEE802154_ASSOCIATE_RESP, ieee802154_associate_resp),
- IEEE802154_OP(IEEE802154_DISASSOCIATE_REQ, ieee802154_disassociate_req),
- IEEE802154_OP(IEEE802154_SCAN_REQ, ieee802154_scan_req),
- IEEE802154_OP(IEEE802154_START_REQ, ieee802154_start_req),
- IEEE802154_DUMP(IEEE802154_LIST_IFACE, ieee802154_list_iface,
- ieee802154_dump_iface),
-};
-
int __init ieee802154_nl_init(void)
{
int rc;
- int i;
- rc = genl_register_family(&ieee802154_coordinator_family);
+ rc = genl_register_family(&nl802154_family);
if (rc)
goto fail;
- rc = genl_register_mc_group(&ieee802154_coordinator_family,
- &ieee802154_coord_mcgrp);
+ rc = nl802154_mac_register();
if (rc)
goto fail;
- rc = genl_register_mc_group(&ieee802154_coordinator_family,
- &ieee802154_beacon_mcgrp);
- if (rc)
- goto fail;
-
-
- for (i = 0; i < ARRAY_SIZE(ieee802154_coordinator_ops); i++) {
- rc = genl_register_ops(&ieee802154_coordinator_family,
- &ieee802154_coordinator_ops[i]);
- if (rc)
- goto fail;
- }
-
return 0;
fail:
- genl_unregister_family(&ieee802154_coordinator_family);
+ genl_unregister_family(&nl802154_family);
return rc;
}
void __exit ieee802154_nl_exit(void)
{
- genl_unregister_family(&ieee802154_coordinator_family);
+ genl_unregister_family(&nl802154_family);
}
diff --git a/net/ieee802154/netlink.c b/net/ieee802154/nl-mac.c
similarity index 86%
copy from net/ieee802154/netlink.c
copy to net/ieee802154/nl-mac.c
index 0fadd6b..eda506a 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/nl-mac.c
@@ -34,16 +34,7 @@
#include <net/ieee802154.h>
#include <net/ieee802154_netdev.h>
-static unsigned int ieee802154_seq_num;
-static DEFINE_SPINLOCK(ieee802154_seq_lock);
-
-static struct genl_family ieee802154_coordinator_family = {
- .id = GENL_ID_GENERATE,
- .hdrsize = 0,
- .name = IEEE802154_NL_NAME,
- .version = 1,
- .maxattr = IEEE802154_ATTR_MAX,
-};
+#include "ieee802154.h"
static struct genl_multicast_group ieee802154_coord_mcgrp = {
.name = IEEE802154_MCAST_COORD_NAME,
@@ -53,43 +44,6 @@ static struct genl_multicast_group ieee802154_beacon_mcgrp = {
.name = IEEE802154_MCAST_BEACON_NAME,
};
-/* Requests to userspace */
-static struct sk_buff *ieee802154_nl_create(int flags, u8 req)
-{
- void *hdr;
- struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
- unsigned long f;
-
- if (!msg)
- return NULL;
-
- spin_lock_irqsave(&ieee802154_seq_lock, f);
- hdr = genlmsg_put(msg, 0, ieee802154_seq_num++,
- &ieee802154_coordinator_family, flags, req);
- spin_unlock_irqrestore(&ieee802154_seq_lock, f);
- if (!hdr) {
- nlmsg_free(msg);
- return NULL;
- }
-
- return msg;
-}
-
-static int ieee802154_nl_finish(struct sk_buff *msg)
-{
- /* XXX: nlh is right at the start of msg */
- void *hdr = genlmsg_data(NLMSG_DATA(msg->data));
-
- if (genlmsg_end(msg, hdr) < 0)
- goto out;
-
- return genlmsg_multicast(msg, 0, ieee802154_coord_mcgrp.id,
- GFP_ATOMIC);
-out:
- nlmsg_free(msg);
- return -ENOBUFS;
-}
-
int ieee802154_nl_assoc_indic(struct net_device *dev,
struct ieee802154_addr *addr, u8 cap)
{
@@ -116,7 +70,7 @@ int ieee802154_nl_assoc_indic(struct net_device *dev,
NLA_PUT_U8(msg, IEEE802154_ATTR_CAPABILITY, cap);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -143,7 +97,7 @@ int ieee802154_nl_assoc_confirm(struct net_device *dev, u16 short_addr,
NLA_PUT_U16(msg, IEEE802154_ATTR_SHORT_ADDR, short_addr);
NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -176,7 +130,7 @@ int ieee802154_nl_disassoc_indic(struct net_device *dev,
NLA_PUT_U8(msg, IEEE802154_ATTR_REASON, reason);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -201,7 +155,7 @@ int ieee802154_nl_disassoc_confirm(struct net_device *dev, u8 status)
NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -227,7 +181,7 @@ int ieee802154_nl_beacon_indic(struct net_device *dev,
NLA_PUT_U16(msg, IEEE802154_ATTR_COORD_SHORT_ADDR, coord_addr);
NLA_PUT_U16(msg, IEEE802154_ATTR_COORD_PAN_ID, panid);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -260,7 +214,7 @@ int ieee802154_nl_scan_confirm(struct net_device *dev,
if (edl)
NLA_PUT(msg, IEEE802154_ATTR_ED_LIST, 27, edl);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -285,7 +239,7 @@ int ieee802154_nl_start_confirm(struct net_device *dev, u8 status)
NLA_PUT_U8(msg, IEEE802154_ATTR_STATUS, status);
- return ieee802154_nl_finish(msg);
+ return ieee802154_nl_mcast(msg, ieee802154_coord_mcgrp.id);
nla_put_failure:
nlmsg_free(msg);
@@ -300,7 +254,7 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 pid,
pr_debug("%s\n", __func__);
- hdr = genlmsg_put(msg, 0, seq, &ieee802154_coordinator_family, flags,
+ hdr = genlmsg_put(msg, 0, seq, &nl802154_family, flags,
IEEE802154_LIST_IFACE);
if (!hdr)
goto out;
@@ -581,7 +535,7 @@ static int ieee802154_list_iface(struct sk_buff *skb,
dev_put(dev);
- return genlmsg_unicast(&init_net, msg, info->snd_pid);
+ return genlmsg_unicast(msg, info->snd_pid);
out_free:
nlmsg_free(msg);
out_dev:
@@ -616,23 +570,6 @@ cont:
return skb->len;
}
-#define IEEE802154_OP(_cmd, _func) \
- { \
- .cmd = _cmd, \
- .policy = ieee802154_policy, \
- .doit = _func, \
- .dumpit = NULL, \
- .flags = GENL_ADMIN_PERM, \
- }
-
-#define IEEE802154_DUMP(_cmd, _func, _dump) \
- { \
- .cmd = _cmd, \
- .policy = ieee802154_policy, \
- .doit = _func, \
- .dumpit = _dump, \
- }
-
static struct genl_ops ieee802154_coordinator_ops[] = {
IEEE802154_OP(IEEE802154_ASSOCIATE_REQ, ieee802154_associate_req),
IEEE802154_OP(IEEE802154_ASSOCIATE_RESP, ieee802154_associate_resp),
@@ -643,42 +580,30 @@ static struct genl_ops ieee802154_coordinator_ops[] = {
ieee802154_dump_iface),
};
-int __init ieee802154_nl_init(void)
+/*
+ * No need to unregister as family unregistration will do it.
+ */
+int nl802154_mac_register(void)
{
- int rc;
int i;
+ int rc;
- rc = genl_register_family(&ieee802154_coordinator_family);
- if (rc)
- goto fail;
-
- rc = genl_register_mc_group(&ieee802154_coordinator_family,
+ rc = genl_register_mc_group(&nl802154_family,
&ieee802154_coord_mcgrp);
if (rc)
- goto fail;
+ return rc;
- rc = genl_register_mc_group(&ieee802154_coordinator_family,
+ rc = genl_register_mc_group(&nl802154_family,
&ieee802154_beacon_mcgrp);
if (rc)
- goto fail;
-
+ return rc;
for (i = 0; i < ARRAY_SIZE(ieee802154_coordinator_ops); i++) {
- rc = genl_register_ops(&ieee802154_coordinator_family,
+ rc = genl_register_ops(&nl802154_family,
&ieee802154_coordinator_ops[i]);
if (rc)
- goto fail;
+ return rc;
}
return 0;
-
-fail:
- genl_unregister_family(&ieee802154_coordinator_family);
- return rc;
}
-
-void __exit ieee802154_nl_exit(void)
-{
- genl_unregister_family(&ieee802154_coordinator_family);
-}
-
--
1.6.3.3
^ permalink raw reply related
* [PATCH 4/7] ieee802154: add wpan-phy iteration functions
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-4-git-send-email-dbaryshkov@gmail.com>
Add API to iterate over the wpan-phy instances.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
include/net/wpan-phy.h | 2 ++
net/ieee802154/wpan-class.c | 25 +++++++++++++++++++++++++
2 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/include/net/wpan-phy.h b/include/net/wpan-phy.h
index 5e803a0..3367dd9 100644
--- a/include/net/wpan-phy.h
+++ b/include/net/wpan-phy.h
@@ -48,6 +48,8 @@ struct wpan_phy *wpan_phy_alloc(size_t priv_size);
int wpan_phy_register(struct device *parent, struct wpan_phy *phy);
void wpan_phy_unregister(struct wpan_phy *phy);
void wpan_phy_free(struct wpan_phy *phy);
+/* Same semantics as for class_for_each_device */
+int wpan_phy_for_each(int (*fn)(struct wpan_phy *phy, void *data), void *data);
static inline void *wpan_phy_priv(struct wpan_phy *phy)
{
diff --git a/net/ieee802154/wpan-class.c b/net/ieee802154/wpan-class.c
index f306604..0cec138 100644
--- a/net/ieee802154/wpan-class.c
+++ b/net/ieee802154/wpan-class.c
@@ -91,6 +91,31 @@ struct wpan_phy *wpan_phy_find(const char *str)
}
EXPORT_SYMBOL(wpan_phy_find);
+struct wpan_phy_iter_data {
+ int (*fn)(struct wpan_phy *phy, void *data);
+ void *data;
+};
+
+static int wpan_phy_iter(struct device *dev, void *_data)
+{
+ struct wpan_phy_iter_data *wpid = _data;
+ struct wpan_phy *phy = container_of(dev, struct wpan_phy, dev);
+ return wpid->fn(phy, wpid->data);
+}
+
+int wpan_phy_for_each(int (*fn)(struct wpan_phy *phy, void *data),
+ void *data)
+{
+ struct wpan_phy_iter_data wpid = {
+ .fn = fn,
+ .data = data,
+ };
+
+ return class_for_each_device(&wpan_phy_class, NULL,
+ &wpid, wpan_phy_iter);
+}
+EXPORT_SYMBOL(wpan_phy_for_each);
+
static int wpan_phy_idx_valid(int idx)
{
return idx >= 0;
--
1.6.3.3
^ permalink raw reply related
* [PATCH 5/7] ieee802154: merge nl802154 and wpan-class in single module
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-5-git-send-email-dbaryshkov@gmail.com>
There is no real need to have ieee802154 interfaces separate
into several small modules, as neither of them has it's own use.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
net/ieee802154/Makefile | 4 ++--
net/ieee802154/netlink.c | 9 ++-------
net/ieee802154/wpan-class.c | 23 ++++++++++++++++++++---
3 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/net/ieee802154/Makefile b/net/ieee802154/Makefile
index 4068a9f..42b1f0d 100644
--- a/net/ieee802154/Makefile
+++ b/net/ieee802154/Makefile
@@ -1,5 +1,5 @@
-obj-$(CONFIG_IEEE802154) += nl802154.o af_802154.o wpan-class.o
-nl802154-y := netlink.o nl_policy.o
+obj-$(CONFIG_IEEE802154) += ieee802154.o af_802154.o
+ieee802154-y := netlink.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 ca767bd..0fadd6b 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/netlink.c
@@ -643,7 +643,7 @@ static struct genl_ops ieee802154_coordinator_ops[] = {
ieee802154_dump_iface),
};
-static int __init ieee802154_nl_init(void)
+int __init ieee802154_nl_init(void)
{
int rc;
int i;
@@ -676,14 +676,9 @@ fail:
genl_unregister_family(&ieee802154_coordinator_family);
return rc;
}
-module_init(ieee802154_nl_init);
-static void __exit ieee802154_nl_exit(void)
+void __exit ieee802154_nl_exit(void)
{
genl_unregister_family(&ieee802154_coordinator_family);
}
-module_exit(ieee802154_nl_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("ieee 802.15.4 configuration interface");
diff --git a/net/ieee802154/wpan-class.c b/net/ieee802154/wpan-class.c
index 0cec138..f8479c6 100644
--- a/net/ieee802154/wpan-class.c
+++ b/net/ieee802154/wpan-class.c
@@ -22,6 +22,8 @@
#include <net/wpan-phy.h>
+#include "ieee802154.h"
+
#define MASTER_SHOW_COMPLEX(name, format_string, args...) \
static ssize_t name ## _show(struct device *dev, \
struct device_attribute *attr, char *buf) \
@@ -169,16 +171,31 @@ EXPORT_SYMBOL(wpan_phy_free);
static int __init wpan_phy_class_init(void)
{
- return class_register(&wpan_phy_class);
+ int rc;
+ rc = class_register(&wpan_phy_class);
+ if (rc)
+ goto err;
+
+ rc = ieee802154_nl_init();
+ if (rc)
+ goto err_nl;
+
+ return 0;
+err_nl:
+ class_unregister(&wpan_phy_class);
+err:
+ return rc;
}
-subsys_initcall(wpan_phy_class_init);
+module_init(wpan_phy_class_init);
static void __exit wpan_phy_class_exit(void)
{
+ ieee802154_nl_exit();
class_unregister(&wpan_phy_class);
}
module_exit(wpan_phy_class_exit);
-MODULE_DESCRIPTION("IEEE 802.15.4 device class");
MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("IEEE 802.15.4 configuration interface");
+MODULE_AUTHOR("Dmitry Eremin-Solenikov");
--
1.6.3.3
^ permalink raw reply related
* [PATCH 3/7] ieee802154: add a helper to put the wpan_phy device
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-3-git-send-email-dbaryshkov@gmail.com>
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
include/net/wpan-phy.h | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/include/net/wpan-phy.h b/include/net/wpan-phy.h
index 547b1e2..5e803a0 100644
--- a/include/net/wpan-phy.h
+++ b/include/net/wpan-phy.h
@@ -56,6 +56,12 @@ static inline void *wpan_phy_priv(struct wpan_phy *phy)
}
struct wpan_phy *wpan_phy_find(const char *str);
+
+static inline void wpan_phy_put(struct wpan_phy *phy)
+{
+ put_device(&phy->dev);
+}
+
static inline const char *wpan_phy_name(struct wpan_phy *phy)
{
return dev_name(&phy->dev);
--
1.6.3.3
^ permalink raw reply related
* [PATCH 2/7] ieee802154: add locking for seq numbers
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-2-git-send-email-dbaryshkov@gmail.com>
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
net/ieee802154/netlink.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/net/ieee802154/netlink.c b/net/ieee802154/netlink.c
index 2106ecb..ca767bd 100644
--- a/net/ieee802154/netlink.c
+++ b/net/ieee802154/netlink.c
@@ -35,6 +35,7 @@
#include <net/ieee802154_netdev.h>
static unsigned int ieee802154_seq_num;
+static DEFINE_SPINLOCK(ieee802154_seq_lock);
static struct genl_family ieee802154_coordinator_family = {
.id = GENL_ID_GENERATE,
@@ -57,12 +58,15 @@ static struct sk_buff *ieee802154_nl_create(int flags, u8 req)
{
void *hdr;
struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC);
+ unsigned long f;
if (!msg)
return NULL;
+ spin_lock_irqsave(&ieee802154_seq_lock, f);
hdr = genlmsg_put(msg, 0, ieee802154_seq_num++,
&ieee802154_coordinator_family, flags, req);
+ spin_unlock_irqrestore(&ieee802154_seq_lock, f);
if (!hdr) {
nlmsg_free(msg);
return NULL;
--
1.6.3.3
^ permalink raw reply related
* [PATCH 1/7] af_ieee802154: setsockopt optlen arg isn't __user
From: Dmitry Eremin-Solenikov @ 2009-09-15 22:12 UTC (permalink / raw)
To: David S. Miller; +Cc: linux-zigbee-devel, Sergey Lapin, netdev
In-Reply-To: <1253052785-26190-1-git-send-email-dbaryshkov@gmail.com>
Remove __user annotation from optlen arg as it's bogus.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
net/ieee802154/dgram.c | 2 +-
net/ieee802154/raw.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c
index 77ae685..51593a4 100644
--- a/net/ieee802154/dgram.c
+++ b/net/ieee802154/dgram.c
@@ -414,7 +414,7 @@ static int dgram_getsockopt(struct sock *sk, int level, int optname,
}
static int dgram_setsockopt(struct sock *sk, int level, int optname,
- char __user *optval, int __user optlen)
+ char __user *optval, int optlen)
{
struct dgram_sock *ro = dgram_sk(sk);
int val;
diff --git a/net/ieee802154/raw.c b/net/ieee802154/raw.c
index 4681501..1319885 100644
--- a/net/ieee802154/raw.c
+++ b/net/ieee802154/raw.c
@@ -244,7 +244,7 @@ static int raw_getsockopt(struct sock *sk, int level, int optname,
}
static int raw_setsockopt(struct sock *sk, int level, int optname,
- char __user *optval, int __user optlen)
+ char __user *optval, int optlen)
{
return -EOPNOTSUPP;
}
--
1.6.3.3
^ permalink raw reply related
* [GIT PULL 0/7] Small IEEE 802.15.4 updates
From: Dmitry Eremin-Solenikov @ 2009-09-15 22:12 UTC (permalink / raw)
To: David S. Miller; +Cc: linux-zigbee-devel, Sergey Lapin, netdev
Hi, Dave,
Could you please pull small updates for IEEE 802.15.4 targeted
into 2.6.32-rcX. Thank you.
The following changes since commit 4142e0d1def2c0176c27fd2e810243045a62eb6d:
Linus Torvalds (1):
Merge branch 'osync_cleanup' of git://git.kernel.org/.../jack/linux-fs-2.6
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan.git for-next
Dmitry Eremin-Solenikov (7):
af_ieee802154: setsockopt optlen arg isn't __user
ieee802154: add locking for seq numbers
ieee802154: add a helper to put the wpan_phy device
ieee802154: add wpan-phy iteration functions
ieee802154: merge nl802154 and wpan-class in single module
nl802154: split away MAC commands implementation
ieee802154: add LIST_PHY command support
include/linux/nl802154.h | 1 +
include/net/wpan-phy.h | 8 +
net/ieee802154/Makefile | 4 +-
net/ieee802154/dgram.c | 2 +-
net/ieee802154/ieee802154.h | 48 ++++
net/ieee802154/netlink.c | 616 ++-----------------------------------------
net/ieee802154/nl-mac.c | 609 ++++++++++++++++++++++++++++++++++++++++++
net/ieee802154/nl-phy.c | 175 ++++++++++++
net/ieee802154/raw.c | 2 +-
net/ieee802154/wpan-class.c | 48 ++++-
10 files changed, 908 insertions(+), 605 deletions(-)
create mode 100644 net/ieee802154/ieee802154.h
create mode 100644 net/ieee802154/nl-mac.c
create mode 100644 net/ieee802154/nl-phy.c
--
With best wishes
Dmitry
^ permalink raw reply
* Re: [PATCHv5 3/3] vhost_net: a kernel-level virtio server
From: Gregory Haskins @ 2009-09-15 21:55 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Avi Kivity, Ira W. Snyder, netdev, virtualization, kvm,
linux-kernel, mingo, linux-mm, akpm, hpa, Rusty Russell, s.hetze,
alacrityvm-devel
In-Reply-To: <20090915213854.GE27954@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2304 bytes --]
Michael S. Tsirkin wrote:
> On Tue, Sep 15, 2009 at 05:39:27PM -0400, Gregory Haskins wrote:
>> Michael S. Tsirkin wrote:
>>> On Tue, Sep 15, 2009 at 04:43:58PM -0400, Gregory Haskins wrote:
>>>> Michael S. Tsirkin wrote:
>>>>> On Tue, Sep 15, 2009 at 04:08:23PM -0400, Gregory Haskins wrote:
>>>>>> No, what I mean is how do you surface multiple ethernet and consoles to
>>>>>> the guests? For Ira's case, I think he needs at minimum at least one of
>>>>>> each, and he mentioned possibly having two unique ethernets at one point.
>>>>>>
>>>>>> His slave boards surface themselves as PCI devices to the x86
>>>>>> host. So how do you use that to make multiple vhost-based devices (say
>>>>>> two virtio-nets, and a virtio-console) communicate across the transport?
>>>>>>
>>>>>> There are multiple ways to do this, but what I am saying is that
>>>>>> whatever is conceived will start to look eerily like a vbus-connector,
>>>>>> since this is one of its primary purposes ;)
>>>>> Can't all this be in userspace?
>>>> Can you outline your proposal?
>>>>
>>>> -Greg
>>>>
>>> Userspace in x86 maps a PCI region, uses it for communication with ppc?
>>>
>> And what do you propose this communication to look like?
>
> Who cares? Implement vbus protocol there if you like.
>
Exactly. My point is that you need something like a vbus protocol there. ;)
Here is the protocol I run over PCI in AlacrityVM:
http://git.kernel.org/?p=linux/kernel/git/ghaskins/alacrityvm/linux-2.6.git;a=blob;f=include/linux/vbus_pci.h;h=fe337590e644017392e4c9d9236150adb2333729;hb=ded8ce2005a85c174ba93ee26f8d67049ef11025
And I guess to your point, yes the protocol can technically be in
userspace (outside of whatever you need for the in-kernel portion of the
communication transport, if any.
The vbus-connector design does not specify where the protocol needs to
take place, per se. Note, however, for performance reasons some parts
of the protocol may want to be in the kernel (such as DEVCALL and
SHMSIGNAL). It is for this reason that I just run all of it there,
because IMO its simpler than splitting it up. The slow path stuff just
rides on infrastructure that I need for fast-path anyway, so it doesn't
really cost me anything additional.
Kind Regards,
-Greg
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 267 bytes --]
^ permalink raw reply
* Re: fanotify as syscalls
From: Eric Paris @ 2009-09-15 21:54 UTC (permalink / raw)
To: Evgeniy Polyakov
Cc: Jamie Lokier, David Miller, linux-kernel, linux-fsdevel, netdev,
viro, alan, hch, torvalds
In-Reply-To: <20090915201620.GB32192@ioremap.net>
On Wed, 2009-09-16 at 00:16 +0400, Evgeniy Polyakov wrote:
> On Mon, Sep 14, 2009 at 03:08:15PM -0400, Eric Paris (eparis@redhat.com) wrote:
> > Just this week I got another request to look at syscalls. So I did, I
> > haven't prototyped it, but I can do it with syscalls, they would look
> > like this:
> >
> > int fanotify_init(int flags, int f_flags, __u64 mask, unsigned int priority);
>
> ...
>
> > Are there demands that I convert to syscalls? Do I really gain anything
> > using 9 new inextensible syscalls over socket(), bind(), and 8
> > setsockopt() calls?
>
> In my personal opinion sockets are way much simpler and obvious than
> syscalls. Also one should not edit hundred of arch-dependant headers
> conflicting with other pity syscallers.
>
> But implementing af_fanotify opens a door for zillions of other
> af_something which can be implemented using existing infrastructure
> namely netlink will solve likely 99% of potential usage cases.
>
> And frankly I did not find it way too convincing that using netlink is
> impossible in your scenario if some things will be simplified, namely
> event merging.
Nothing's impossible, but is netlink a square peg for this round hole?
One of the great benefits of netlink, the attribute matching and
filtering, although possibly useful isn't some panacea as we have to do
that well before netlink to have anything like decent performance.
Imagine every single fs event creating an skb and sending it with
netlink only to have most of them dropped.
The only other benefit to netlink that I know of is the reasonable,
easy, and clean addition of information later in time with backwards
compatibility as needed. That's really cool, I admit, but with the
limited amount of additional info that users have wanted out of inotify
I think my data type extensibility should be enough.
> Moreover you can implement a pool of working threads and
> postpone all the work to them and appropriate event queues, which will
> allow to use rlimits for the listeners and open files 'kind of' on
> behalf of those processes.
I'm sorry, I don't userstand. I don't see how worker threads help
anything here. Can you explain what you are thinking?
> But it is quite diferent from the approach you selected and which is
> more obvious indeed. So if you ask a question whether fanotify should
> use sockets or syscalls, I would prefer sockets
I've heard someone else off list say this as well. I'm not certain why.
I actually spent the day yesterday and have fanotify working over 5 new
syscalls (good thing I wrote the code with separate back and and front
ends for just this purpose) And I really don't hate it. I think 3
might be enough.
fanotify_init() ---- very much like inotify_init
fanotify_modify_mark_at() --- like inotify_add_watch and rm_watch
fanotify_modify_mark_fd() --- same but with an fd instead of a path
fanotify_response() --- userspace tells the kernel what to do if requested/allowed
(could probably be done using write() to the fanotify fd)
fanotify_exclude() --- a horrid syscall which might be better as an ioctl since it isn't strongly typed....
If there is a strong need for syscalls I'm ready and willing. I'd love
to hear Linus say socket+setsockopt() is a merge blocker and I have to
go to syscalls if he sees it that way. If davem and friends say I'm not
networky enough to use socket()+setsockopt() I guess I have to look at
netlink (which I'm still not convinced buys us anything vs the crazy
complexity) or go with syscalls. I'm perfectly willing to admit this is
a /dev+ioctl type interface only implemented on socket+setsockopt(). If
that's a no go, someone say it now please.
> but I still recommend
> to rethink your decision to move away from netlink to be 100% sure that
> it will not solve your needs.
I don't see what's gained using netlink. I am already reusing the
fsnotify code to do all my queuing. Someone help me understand the
benefit of netlink and help me understand how we can reasonably meet the
needs and I'll try to prototype it.
1) fd's must be opened in the recv process
2) reliability, if loss must know on the send side
^ permalink raw reply
* [PATCH -next] ssb/sdio: fix printk format warnings
From: Randy Dunlap @ 2009-09-15 21:52 UTC (permalink / raw)
To: linux-mmc, Michael Buesch; +Cc: netdev, akpm
From: Randy Dunlap <randy.dunlap@oracle.com>
Fix printk format warnings:
drivers/ssb/sdio.c:336: warning: format '%u' expects type 'unsigned int', but argument 7 has type 'size_t'
drivers/ssb/sdio.c:443: warning: format '%u' expects type 'unsigned int', but argument 7 has type 'size_t'
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
---
drivers/ssb/sdio.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- linux-next-20090914.orig/drivers/ssb/sdio.c
+++ linux-next-20090914/drivers/ssb/sdio.c
@@ -333,7 +333,7 @@ static void ssb_sdio_block_read(struct s
goto out;
err_out:
- dev_dbg(ssb_sdio_dev(bus), "%04X:%04X (width=%u, len=%u), error %d\n",
+ dev_dbg(ssb_sdio_dev(bus), "%04X:%04X (width=%u, len=%zu), error %d\n",
bus->sdio_sbaddr >> 16, offset, reg_width, saved_count, error);
out:
sdio_release_host(bus->host_sdio);
@@ -440,7 +440,7 @@ static void ssb_sdio_block_write(struct
goto out;
err_out:
- dev_dbg(ssb_sdio_dev(bus), "%04X:%04X (width=%u, len=%u), error %d\n",
+ dev_dbg(ssb_sdio_dev(bus), "%04X:%04X (width=%u, len=%zu), error %d\n",
bus->sdio_sbaddr >> 16, offset, reg_width, saved_count, error);
out:
sdio_release_host(bus->host_sdio);
---
~Randy
LPC 2009, Sept. 23-25, Portland, Oregon
http://linuxplumbersconf.org/2009/
^ permalink raw reply
* Re: [PATCHv5 3/3] vhost_net: a kernel-level virtio server
From: Gregory Haskins @ 2009-09-15 21:39 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Avi Kivity, Ira W. Snyder, netdev, virtualization, kvm,
linux-kernel, mingo, linux-mm, akpm, hpa, Rusty Russell, s.hetze,
alacrityvm-devel
In-Reply-To: <20090915212545.GC27954@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 1112 bytes --]
Michael S. Tsirkin wrote:
> On Tue, Sep 15, 2009 at 04:43:58PM -0400, Gregory Haskins wrote:
>> Michael S. Tsirkin wrote:
>>> On Tue, Sep 15, 2009 at 04:08:23PM -0400, Gregory Haskins wrote:
>>>> No, what I mean is how do you surface multiple ethernet and consoles to
>>>> the guests? For Ira's case, I think he needs at minimum at least one of
>>>> each, and he mentioned possibly having two unique ethernets at one point.
>>>>
>>>> His slave boards surface themselves as PCI devices to the x86
>>>> host. So how do you use that to make multiple vhost-based devices (say
>>>> two virtio-nets, and a virtio-console) communicate across the transport?
>>>>
>>>> There are multiple ways to do this, but what I am saying is that
>>>> whatever is conceived will start to look eerily like a vbus-connector,
>>>> since this is one of its primary purposes ;)
>>> Can't all this be in userspace?
>> Can you outline your proposal?
>>
>> -Greg
>>
>
> Userspace in x86 maps a PCI region, uses it for communication with ppc?
>
And what do you propose this communication to look like?
-Greg
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 267 bytes --]
^ permalink raw reply
* Re: [PATCHv5 3/3] vhost_net: a kernel-level virtio server
From: Michael S. Tsirkin @ 2009-09-15 21:38 UTC (permalink / raw)
To: Gregory Haskins
Cc: Avi Kivity, Ira W. Snyder, netdev, virtualization, kvm,
linux-kernel, mingo, linux-mm, akpm, hpa, Rusty Russell, s.hetze,
alacrityvm-devel
In-Reply-To: <4AB0098F.9030207@gmail.com>
On Tue, Sep 15, 2009 at 05:39:27PM -0400, Gregory Haskins wrote:
> Michael S. Tsirkin wrote:
> > On Tue, Sep 15, 2009 at 04:43:58PM -0400, Gregory Haskins wrote:
> >> Michael S. Tsirkin wrote:
> >>> On Tue, Sep 15, 2009 at 04:08:23PM -0400, Gregory Haskins wrote:
> >>>> No, what I mean is how do you surface multiple ethernet and consoles to
> >>>> the guests? For Ira's case, I think he needs at minimum at least one of
> >>>> each, and he mentioned possibly having two unique ethernets at one point.
> >>>>
> >>>> His slave boards surface themselves as PCI devices to the x86
> >>>> host. So how do you use that to make multiple vhost-based devices (say
> >>>> two virtio-nets, and a virtio-console) communicate across the transport?
> >>>>
> >>>> There are multiple ways to do this, but what I am saying is that
> >>>> whatever is conceived will start to look eerily like a vbus-connector,
> >>>> since this is one of its primary purposes ;)
> >>> Can't all this be in userspace?
> >> Can you outline your proposal?
> >>
> >> -Greg
> >>
> >
> > Userspace in x86 maps a PCI region, uses it for communication with ppc?
> >
>
> And what do you propose this communication to look like?
Who cares? Implement vbus protocol there if you like.
> -Greg
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* Re: [PATCHv5 3/3] vhost_net: a kernel-level virtio server
From: Michael S. Tsirkin @ 2009-09-15 21:25 UTC (permalink / raw)
To: Gregory Haskins
Cc: Avi Kivity, Ira W. Snyder, netdev, virtualization, kvm,
linux-kernel, mingo, linux-mm, akpm, hpa, Rusty Russell, s.hetze,
alacrityvm-devel
In-Reply-To: <4AAFFC8E.9010404@gmail.com>
On Tue, Sep 15, 2009 at 04:43:58PM -0400, Gregory Haskins wrote:
> Michael S. Tsirkin wrote:
> > On Tue, Sep 15, 2009 at 04:08:23PM -0400, Gregory Haskins wrote:
> >> No, what I mean is how do you surface multiple ethernet and consoles to
> >> the guests? For Ira's case, I think he needs at minimum at least one of
> >> each, and he mentioned possibly having two unique ethernets at one point.
> >>
> >> His slave boards surface themselves as PCI devices to the x86
> >> host. So how do you use that to make multiple vhost-based devices (say
> >> two virtio-nets, and a virtio-console) communicate across the transport?
> >>
> >> There are multiple ways to do this, but what I am saying is that
> >> whatever is conceived will start to look eerily like a vbus-connector,
> >> since this is one of its primary purposes ;)
> >
> > Can't all this be in userspace?
>
> Can you outline your proposal?
>
> -Greg
>
Userspace in x86 maps a PCI region, uses it for communication with ppc?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* Re: [PATCH 0/5] Phonet: basic routing support
From: David Miller @ 2009-09-15 21:22 UTC (permalink / raw)
To: remi; +Cc: netdev
In-Reply-To: <a9972d3fe3d2bf09387bee7827b571c0@chewa.net>
From: Rémi Denis-Courmont <remi@remlab.net>
Date: Tue, 15 Sep 2009 13:30:19 +0200
> I am not sure if feature patches are still allowed. If not, I can just
> repost this at a more convenient time.
Please resend these when net-next-2.6 opens back up.
Thank you.
^ permalink raw reply
* Re: alloc skb based on a given data buffer
From: David Miller @ 2009-09-15 21:16 UTC (permalink / raw)
To: johannes-cdvu00un1VgdHxzADdlk8Q
Cc: yi.zhu-ral2JQCrhuEAvxtiuMwx3w, mel-wPRd99KPJ+uzQB+pC5nmwQ,
reinette.chatre-ral2JQCrhuEAvxtiuMwx3w,
elendil-EIBgga6/0yRmR6Xm/wNWPw,
Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ,
linville-2XuSBdqkA4R54TAoqtyWWQ, penberg-bbCR+/B0CizivPeTLB3BmA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA,
ipw3945-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
cl-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
assaf.krauss-ral2JQCrhuEAvxtiuMwx3w,
mohamed.abbas-ral2JQCrhuEAvxtiuMwx3w,
netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1253028631.23427.55.camel-YfaajirXv2244ywRPIzf9A@public.gmane.org>
From: Johannes Berg <johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org>
Date: Tue, 15 Sep 2009 08:30:31 -0700
> Hold, mac80211 can't cope with that at this point for sw crypto and
> possibly other things.
Then it should skb_linearize() at input, or similar.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: UDP regression with packets rates < 10k per sec
From: Eric Dumazet @ 2009-09-15 19:02 UTC (permalink / raw)
To: Christoph Lameter; +Cc: netdev
In-Reply-To: <alpine.DEB.1.10.0909151550200.3340@V090114053VZO-1>
Christoph Lameter a écrit :
> On Tue, 15 Sep 2009, Eric Dumazet wrote:
>
>> Once I understood my 2.6.31 kernel had much more features than 2.6.22 and that I tuned
>> it to :
>>
>> - Let cpu run at full speed (3GHz instead of 2GHz) : before tuning, 2.6.31 was
>> using "ondemand" governor and my cpus were running at 2GHz, while they where
>> running at 3GHz on my 2.6.22 config
>
> My kernel did not have support for any governors compiled in.
>
>> - Dont let cpus enter C2/C3 wait states (idle=mwait)
>
> Ok. Trying idle=mwait.
>
>> - Correctly affine cpu to ethX irq (2.6.22 was running ethX irq on one cpu, while
>> on 2.6.31, irqs were distributed to all online cpus)
>
> Interrupts of both 2.6.22 and 2.6.31 go to cpu 0. Does it matter for
> loopback?
No of course, loopback triggers softirq on the local cpu, no special setup
to respect.
>
>> Then, your mcast test gives same results, at 10pps, 100pps, 1000pps, 10000pps
>
> loopback via mcast -Ln1 -r <rate>
>
> 10pps 100pps 1000pps 10000pps
> 2.6.22(32bit) 7.36 7.28 7.15 7.16
> 2.6.31(64bit) 9.28 10.27 9.70 9.79
>
> What a difference. Now the initial latency rampup for 2.6.31 is gone. So
> even w/o governors the kernel does something to increase the latencies.
>
> We sacrificed 2 - 3 microseconds per message to kernel features, bloat and
> 64 bitness?
Well, I dont know, I mainly use 32bits kernel, but yes, using 64bits has a cost,
since skbs for example are bigger, sockets are bigger, so we touch more cache lines
per transaction...
You could precisely compute number of cycles per transaction, with "perf" tools
(only on 2.6.31), between 64bit and 32bit kernels, benching 100000 pps for example
and counting number of perf counter irqs per second
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox