* Re: [PATCH v4 7/8] Display current tcp memory allocation in kmem cgroup
From: Glauber Costa @ 2011-10-03 12:26 UTC (permalink / raw)
To: Kirill A. Shutemov
Cc: linux-kernel, paul, lizf, kamezawa.hiroyu, ebiederm, davem,
gthelen, netdev, linux-mm, avagin
In-Reply-To: <20111003122511.GA29982@shutemov.name>
On 10/03/2011 04:25 PM, Kirill A. Shutemov wrote:
> On Mon, Oct 03, 2011 at 04:19:18PM +0400, Glauber Costa wrote:
>> On 10/03/2011 04:14 PM, Kirill A. Shutemov wrote:
>>> On Mon, Oct 03, 2011 at 02:18:42PM +0400, Glauber Costa wrote:
>>>> This patch introduces kmem.tcp_current_memory file, living in the
>>>> kmem_cgroup filesystem. It is a simple read-only file that displays the
>>>> amount of kernel memory currently consumed by the cgroup.
>>>>
>>>> Signed-off-by: Glauber Costa<glommer@parallels.com>
>>>> CC: David S. Miller<davem@davemloft.net>
>>>> CC: Hiroyouki Kamezawa<kamezawa.hiroyu@jp.fujitsu.com>
>>>> CC: Eric W. Biederman<ebiederm@xmission.com>
>>>> ---
>>>> Documentation/cgroups/memory.txt | 1 +
>>>> mm/memcontrol.c | 11 +++++++++++
>>>> 2 files changed, 12 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
>>>> index 1ffde3e..f5a539d 100644
>>>> --- a/Documentation/cgroups/memory.txt
>>>> +++ b/Documentation/cgroups/memory.txt
>>>> @@ -79,6 +79,7 @@ Brief summary of control files.
>>>> memory.independent_kmem_limit # select whether or not kernel memory limits are
>>>> independent of user limits
>>>> memory.kmem.tcp.max_memory # set/show hard limit for tcp buf memory
>>>> + memory.kmem.tcp.current_memory # show current tcp buf memory allocation
>>>
>>> Both are in pages, right?
>>> Shouldn't it be scaled to bytes and named uniform with other memcg file?
>>> memory.kmem.tcp.limit_in_bytes/usage_in_bytes.
>>>
>> You are absolutely correct.
>> Since the internal tcp comparison works, I just ended up never noticing
>> this.
>
> Should we have failcnt and max_usage_in_bytes for tcp as well?
>
Well, we get a fail count from the tracer anyway, so I don't really see
a need for that. I see value in having it for the slab allocation
itself, but since this only controls the memory pressure framework, I
think we can live without it.
That said, this is not a strong opinion. I can add it if you'd prefer.
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* Re: [PATCH v4 7/8] Display current tcp memory allocation in kmem cgroup
From: Glauber Costa @ 2011-10-03 12:36 UTC (permalink / raw)
To: Kirill A. Shutemov
Cc: linux-kernel, paul, lizf, kamezawa.hiroyu, ebiederm, davem,
gthelen, netdev, linux-mm, avagin
In-Reply-To: <20111003123620.GA30018@shutemov.name>
On 10/03/2011 04:36 PM, Kirill A. Shutemov wrote:
> On Mon, Oct 03, 2011 at 04:26:41PM +0400, Glauber Costa wrote:
>> On 10/03/2011 04:25 PM, Kirill A. Shutemov wrote:
>>> On Mon, Oct 03, 2011 at 04:19:18PM +0400, Glauber Costa wrote:
>>>> On 10/03/2011 04:14 PM, Kirill A. Shutemov wrote:
>>>>> On Mon, Oct 03, 2011 at 02:18:42PM +0400, Glauber Costa wrote:
>>>>>> This patch introduces kmem.tcp_current_memory file, living in the
>>>>>> kmem_cgroup filesystem. It is a simple read-only file that displays the
>>>>>> amount of kernel memory currently consumed by the cgroup.
>>>>>>
>>>>>> Signed-off-by: Glauber Costa<glommer@parallels.com>
>>>>>> CC: David S. Miller<davem@davemloft.net>
>>>>>> CC: Hiroyouki Kamezawa<kamezawa.hiroyu@jp.fujitsu.com>
>>>>>> CC: Eric W. Biederman<ebiederm@xmission.com>
>>>>>> ---
>>>>>> Documentation/cgroups/memory.txt | 1 +
>>>>>> mm/memcontrol.c | 11 +++++++++++
>>>>>> 2 files changed, 12 insertions(+), 0 deletions(-)
>>>>>>
>>>>>> diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
>>>>>> index 1ffde3e..f5a539d 100644
>>>>>> --- a/Documentation/cgroups/memory.txt
>>>>>> +++ b/Documentation/cgroups/memory.txt
>>>>>> @@ -79,6 +79,7 @@ Brief summary of control files.
>>>>>> memory.independent_kmem_limit # select whether or not kernel memory limits are
>>>>>> independent of user limits
>>>>>> memory.kmem.tcp.max_memory # set/show hard limit for tcp buf memory
>>>>>> + memory.kmem.tcp.current_memory # show current tcp buf memory allocation
>>>>>
>>>>> Both are in pages, right?
>>>>> Shouldn't it be scaled to bytes and named uniform with other memcg file?
>>>>> memory.kmem.tcp.limit_in_bytes/usage_in_bytes.
>>>>>
>>>> You are absolutely correct.
>>>> Since the internal tcp comparison works, I just ended up never noticing
>>>> this.
>>>
>>> Should we have failcnt and max_usage_in_bytes for tcp as well?
>>>
>>
>> Well, we get a fail count from the tracer anyway, so I don't really see
>> a need for that. I see value in having it for the slab allocation
>> itself, but since this only controls the memory pressure framework, I
>> think we can live without it.
>>
>> That said, this is not a strong opinion. I can add it if you'd prefer.
>
> It's good for userspace to have the same set of files for all domains:
> - memory;
> - memory.memsw;
> - memory.kmem;
> - memory.kmem.tcp;
> - etc.
> Userspace can reuse code for handling them in this case.
>
Fine.
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* Re: [PATCH v4 7/8] Display current tcp memory allocation in kmem cgroup
From: Kirill A. Shutemov @ 2011-10-03 12:36 UTC (permalink / raw)
To: Glauber Costa
Cc: linux-kernel, paul, lizf, kamezawa.hiroyu, ebiederm, davem,
gthelen, netdev, linux-mm, avagin
In-Reply-To: <4E89AA01.3000803@parallels.com>
On Mon, Oct 03, 2011 at 04:26:41PM +0400, Glauber Costa wrote:
> On 10/03/2011 04:25 PM, Kirill A. Shutemov wrote:
> > On Mon, Oct 03, 2011 at 04:19:18PM +0400, Glauber Costa wrote:
> >> On 10/03/2011 04:14 PM, Kirill A. Shutemov wrote:
> >>> On Mon, Oct 03, 2011 at 02:18:42PM +0400, Glauber Costa wrote:
> >>>> This patch introduces kmem.tcp_current_memory file, living in the
> >>>> kmem_cgroup filesystem. It is a simple read-only file that displays the
> >>>> amount of kernel memory currently consumed by the cgroup.
> >>>>
> >>>> Signed-off-by: Glauber Costa<glommer@parallels.com>
> >>>> CC: David S. Miller<davem@davemloft.net>
> >>>> CC: Hiroyouki Kamezawa<kamezawa.hiroyu@jp.fujitsu.com>
> >>>> CC: Eric W. Biederman<ebiederm@xmission.com>
> >>>> ---
> >>>> Documentation/cgroups/memory.txt | 1 +
> >>>> mm/memcontrol.c | 11 +++++++++++
> >>>> 2 files changed, 12 insertions(+), 0 deletions(-)
> >>>>
> >>>> diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
> >>>> index 1ffde3e..f5a539d 100644
> >>>> --- a/Documentation/cgroups/memory.txt
> >>>> +++ b/Documentation/cgroups/memory.txt
> >>>> @@ -79,6 +79,7 @@ Brief summary of control files.
> >>>> memory.independent_kmem_limit # select whether or not kernel memory limits are
> >>>> independent of user limits
> >>>> memory.kmem.tcp.max_memory # set/show hard limit for tcp buf memory
> >>>> + memory.kmem.tcp.current_memory # show current tcp buf memory allocation
> >>>
> >>> Both are in pages, right?
> >>> Shouldn't it be scaled to bytes and named uniform with other memcg file?
> >>> memory.kmem.tcp.limit_in_bytes/usage_in_bytes.
> >>>
> >> You are absolutely correct.
> >> Since the internal tcp comparison works, I just ended up never noticing
> >> this.
> >
> > Should we have failcnt and max_usage_in_bytes for tcp as well?
> >
>
> Well, we get a fail count from the tracer anyway, so I don't really see
> a need for that. I see value in having it for the slab allocation
> itself, but since this only controls the memory pressure framework, I
> think we can live without it.
>
> That said, this is not a strong opinion. I can add it if you'd prefer.
It's good for userspace to have the same set of files for all domains:
- memory;
- memory.memsw;
- memory.kmem;
- memory.kmem.tcp;
- etc.
Userspace can reuse code for handling them in this case.
--
Kirill A. Shutemov
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* [PATCH net-next-2.6] be2net: Add 60 second delay to allow FAT dump completion on recovery from EEH
From: Somnath Kotur @ 2011-10-03 18:10 UTC (permalink / raw)
To: netdev, davem; +Cc: Somnath Kotur
Add 60s delay before timeout on polling Bit 31 so that FAT dump can
complete when reset occurs.
Signed-off-by: Somnath Kotur <somnath.kotur@emulex.com>
---
drivers/net/ethernet/emulex/benet/be_cmds.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 38c9222..6e7b521 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -416,7 +416,7 @@ int be_cmd_POST(struct be_adapter *adapter)
} else {
return 0;
}
- } while (timeout < 40);
+ } while (timeout < 60);
dev_err(dev, "POST timeout; stage=0x%x\n", stage);
return -1;
--
1.5.6.1
^ permalink raw reply related
* [PATCH] SELinux: Fix RCU deref check warning in sel_netport_insert()
From: David Howells @ 2011-10-03 13:58 UTC (permalink / raw)
To: selinux; +Cc: netdev, dhowells
Fix the following bug in sel_netport_insert() where rcu_dereference() should
be rcu_dereference_protected() as sel_netport_lock is held.
===================================================
[ INFO: suspicious rcu_dereference_check() usage. ]
---------------------------------------------------
security/selinux/netport.c:127 invoked rcu_dereference_check() without protection!
other info that might help us debug this:
rcu_scheduler_active = 1, debug_locks = 0
1 lock held by ossec-rootcheck/3323:
#0: (sel_netport_lock){+.....}, at: [<ffffffff8117d775>] sel_netport_sid+0xbb/0x226
stack backtrace:
Pid: 3323, comm: ossec-rootcheck Not tainted 3.1.0-rc8-fsdevel+ #1095
Call Trace:
[<ffffffff8105cfb7>] lockdep_rcu_dereference+0xa7/0xb0
[<ffffffff8117d871>] sel_netport_sid+0x1b7/0x226
[<ffffffff8117d6ba>] ? sel_netport_avc_callback+0xbc/0xbc
[<ffffffff8117556c>] selinux_socket_bind+0x115/0x230
[<ffffffff810a5388>] ? might_fault+0x4e/0x9e
[<ffffffff810a53d1>] ? might_fault+0x97/0x9e
[<ffffffff81171cf4>] security_socket_bind+0x11/0x13
[<ffffffff812ba967>] sys_bind+0x56/0x95
[<ffffffff81380dac>] ? sysret_check+0x27/0x62
[<ffffffff8105b767>] ? trace_hardirqs_on_caller+0x11e/0x155
[<ffffffff81076fcd>] ? audit_syscall_entry+0x17b/0x1ae
[<ffffffff811b5eae>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[<ffffffff81380d7b>] system_call_fastpath+0x16/0x1b
Signed-off-by: David Howells <dhowells@redhat.com>
---
security/selinux/netport.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/security/selinux/netport.c b/security/selinux/netport.c
index 0b62bd1..39e2138 100644
--- a/security/selinux/netport.c
+++ b/security/selinux/netport.c
@@ -123,7 +123,9 @@ static void sel_netport_insert(struct sel_netport *port)
if (sel_netport_hash[idx].size == SEL_NETPORT_HASH_BKT_LIMIT) {
struct sel_netport *tail;
tail = list_entry(
- rcu_dereference(sel_netport_hash[idx].list.prev),
+ rcu_dereference_protected(
+ sel_netport_hash[idx].list.prev,
+ spin_is_locked(&sel_netport_lock)),
struct sel_netport, list);
list_del_rcu(&tail->list);
kfree_rcu(tail, rcu);
^ permalink raw reply related
* Re: [PATCH] mlx4_en: fix transmit of packages when blue frame is enabled
From: Thadeu Lima de Souza Cascardo @ 2011-10-03 14:37 UTC (permalink / raw)
To: Yevgeny Petrilin; +Cc: netdev@vger.kernel.org
In-Reply-To: <953B660C027164448AE903364AC447D2235D9A8C@MTLDAG02.mtl.com>
On Sun, Oct 02, 2011 at 08:58:21AM +0000, Yevgeny Petrilin wrote:
>
> > With the addition of Blue Frame support in the network driver for mlx4, the doorbell is not written in the path where blue frame is enabled and the package follows some characteristics.
> >
> > The consequence of that is that ICMP ECHO requests, for example, were not transmitted by the device. A ping flood, for example, would make the
> > watchdog dispatch, because the ring was full and transmissions have timed out.
> >
> > After this fix, I could ping two systems using mlx4_en (both with the fix).
> >
> > Signed-off-by: Thadeu Lima de Souza Cascardo
> > <cascardo@linux.vnet.ibm.com>
> > Cc: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
> > ---
> > drivers/net/ethernet/mellanox/mlx4/en_tx.c | 5 +++--
> > 1 files changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> > b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> > index 6e03de0..270da80 100644
> > --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> > +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> > @@ -811,10 +811,11 @@ netdev_tx_t mlx4_en_xmit(struct sk_buff *skb,
> > struct net_device *dev)
> > * before setting ownership of this descriptor to HW */
> > wmb();
> > tx_desc->ctrl.owner_opcode = op_own;
> > - wmb();
> > - writel(ring->doorbell_qpn, ring->bf.uar->map + MLX4_SEND_DOORBELL);
> > }
> >
> > + wmb();
> > + writel(ring->doorbell_qpn, ring->bf.uar->map + MLX4_SEND_DOORBELL);
> > +
> > /* Poll CQ here */
> > mlx4_en_xmit_poll(priv, tx_ind);
> >
> > --
> > 1.7.4.4
>
> What this patch does is ringing the doorbell unconditionally, whether blue flame is used or not.
> The whole idea, is to copy the data to the blueflame register and have the HW take the data from there and save the memory access to the work queue entry.
> In this patch you do both, copy the data to the register, and then still the HW accesses the memory to take it.
> For some reason Blue flame is not working on your system and we need to understand why, I'll be glad to work with you to debug it.
> Anyway, this patch is not the solution (even that it works on your systems) for the problem.
>
> Yevgeny
Hello, Yevgeny.
We use a MT26448 (lspci -v output bellow) on a POWER7. Any other
information, tests or debug patches you want me to try, just tell me.
I expected this was really not the proper fix, but thought it would be
better to send it than just guess. Any clues what the problem might be?
Perhaps, we would have to disable blue frame for this particular device?
Regards,
Cascardo.
---
lspci output
0006:01:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
---
lspci -v output
0006:01:00.0 0200: 15b3:6750 (rev b0)
Subsystem: 1014:0416
Flags: bus master, fast devsel, latency 0, IRQ 31
Memory at 3da47be00000 (64-bit, non-prefetchable) [size=1M]
Memory at 3da47c000000 (64-bit, prefetchable) [size=32M]
Expansion ROM at 3da47bf00000 [disabled] [size=1M]
Capabilities: [40] Power Management version 3
Capabilities: [48] Vital Product Data
Capabilities: [9c] MSI-X: Enable+ Count=128 Masked-
Capabilities: [60] Express Endpoint, MSI 00
Capabilities: [100] Alternative Routing-ID Interpretation (ARI)
Capabilities: [148] Device Serial Number 00-02-c9-03-00-0f-50-be
Kernel driver in use: mlx4_core
Kernel modules: mlx4_en, mlx4_core
---
^ permalink raw reply
* [PATCH net-next] RPS: Ensure that an expired hardware filter can be re-added later
From: Ben Hutchings @ 2011-10-03 14:42 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-net-drivers, Amir Vadai
Amir Vadai wrote:
> When a stream is paused, and its rule is expired while it is paused,
> no new rule will be configured to the HW when traffic resume.
[...]
> - When stream was resumed, traffic was steered again by RSS, and
> because current-cpu was equal to desired-cpu, ndo_rx_flow_steer
> wasn't called and no rule was configured to the HW.
Fix this by setting the flow's current CPU only in the table for the
newly selected RX queue.
Reported-and-tested-by: Amir Vadai <amirv@dev.mellanox.co.il>
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
---
net/core/dev.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 7f4486e..70ecb86 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2670,10 +2670,7 @@ static struct rps_dev_flow *
set_rps_cpu(struct net_device *dev, struct sk_buff *skb,
struct rps_dev_flow *rflow, u16 next_cpu)
{
- u16 tcpu;
-
- tcpu = rflow->cpu = next_cpu;
- if (tcpu != RPS_NO_CPU) {
+ if (next_cpu != RPS_NO_CPU) {
#ifdef CONFIG_RFS_ACCEL
struct netdev_rx_queue *rxqueue;
struct rps_dev_flow_table *flow_table;
@@ -2701,16 +2698,16 @@ set_rps_cpu(struct net_device *dev, struct sk_buff *skb,
goto out;
old_rflow = rflow;
rflow = &flow_table->flows[flow_id];
- rflow->cpu = next_cpu;
rflow->filter = rc;
if (old_rflow->filter == rflow->filter)
old_rflow->filter = RPS_NO_FILTER;
out:
#endif
rflow->last_qtail =
- per_cpu(softnet_data, tcpu).input_queue_head;
+ per_cpu(softnet_data, next_cpu).input_queue_head;
}
+ rflow->cpu = next_cpu;
return rflow;
}
--
1.7.4.4
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply related
* RE: [PATCH] mlx4_en: fix transmit of packages when blue frame is enabled
From: Yevgeny Petrilin @ 2011-10-03 14:56 UTC (permalink / raw)
To: Thadeu Lima de Souza Cascardo
Cc: netdev@vger.kernel.org, Eli Cohen, eli@dev.mellanox.co.il
In-Reply-To: <20111003143721.GA3596@oc1711230544.ibm.com>
> Hello, Yevgeny.
>
> We use a MT26448 (lspci -v output bellow) on a POWER7. Any other
> information, tests or debug patches you want me to try, just tell me.
>
> I expected this was really not the proper fix, but thought it would be
> better to send it than just guess. Any clues what the problem might be?
> Perhaps, we would have to disable blue frame for this particular device?
>
> Regards,
> Cascardo.
>
> ---
> lspci output
> 0006:01:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
> ---
> lspci -v output
> 0006:01:00.0 0200: 15b3:6750 (rev b0)
> Subsystem: 1014:0416
> Flags: bus master, fast devsel, latency 0, IRQ 31
> Memory at 3da47be00000 (64-bit, non-prefetchable) [size=1M]
> Memory at 3da47c000000 (64-bit, prefetchable) [size=32M]
> Expansion ROM at 3da47bf00000 [disabled] [size=1M]
> Capabilities: [40] Power Management version 3
> Capabilities: [48] Vital Product Data
> Capabilities: [9c] MSI-X: Enable+ Count=128 Masked-
> Capabilities: [60] Express Endpoint, MSI 00
> Capabilities: [100] Alternative Routing-ID Interpretation (ARI)
> Capabilities: [148] Device Serial Number 00-02-c9-03-00-0f-50-be
> Kernel driver in use: mlx4_core
> Kernel modules: mlx4_en, mlx4_core
> ---
Cascardo,
Can you also send me the output of ethtool -i?
It seems that there is a problem with write combining on Power processors, we will check this issue.
Yevgeny
^ permalink raw reply
* Re: [PATCH v4 3/8] foundations of per-cgroup memory pressure controlling.
From: Andrew Vagin @ 2011-10-03 15:13 UTC (permalink / raw)
To: Glauber Costa
Cc: linux-kernel, paul, lizf, kamezawa.hiroyu, ebiederm, davem,
gthelen, netdev, linux-mm, kirill
In-Reply-To: <1317637123-18306-4-git-send-email-glommer@parallels.com>
I have some compilation issues:
[root@ws-qual linux-2.6]# make -j 32
CHK include/linux/version.h
CHK include/generated/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CHK kernel/config_data.h
CHK include/linux/version.h
Building modules, stage 2.
MODPOST 78 modules
Kernel: arch/x86/boot/bzImage is ready (#127)
ERROR: "memory_pressure_tcp" [net/ipv6/ipv6.ko] undefined!
ERROR: "tcp_sysctl_mem" [net/ipv6/ipv6.ko] undefined!
ERROR: "memory_allocated_tcp" [net/ipv6/ipv6.ko] undefined!
ERROR: "tcp_enter_memory_pressure" [net/ipv6/ipv6.ko] undefined!
ERROR: "sockets_allocated_tcp" [net/ipv6/ipv6.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
I compile ipv6 as module.
mm/memcontrol.c
I think you forgot export some functions.
On Mon, Oct 03, 2011 at 02:18:38PM +0400, Glauber Costa wrote:
> This patch converts struct sock fields memory_pressure,
> memory_allocated, sockets_allocated, and sysctl_mem (now prot_mem)
> to function pointers, receiving a struct mem_cgroup parameter.
>
> enter_memory_pressure is kept the same, since all its callers
> have socket a context, and the kmem_cgroup can be derived from
> the socket itself.
>
> To keep things working, the patch convert all users of those fields
> to use acessor functions.
>
> In my benchmarks I didn't see a significant performance difference
> with this patch applied compared to a baseline (around 1 % diff, thus
> inside error margin).
>
> Signed-off-by: Glauber Costa <glommer@parallels.com>
> CC: David S. Miller <davem@davemloft.net>
> CC: Hiroyouki Kamezawa <kamezawa.hiroyu@jp.fujitsu.com>
> CC: Eric W. Biederman <ebiederm@xmission.com>
> ---
> crypto/af_alg.c | 7 ++-
> include/linux/memcontrol.h | 29 +++++++++++-
> include/net/sock.h | 112 +++++++++++++++++++++++++++++++++++++++++--
> include/net/tcp.h | 11 +++--
> include/net/udp.h | 3 +-
> include/trace/events/sock.h | 10 ++--
> mm/memcontrol.c | 45 +++++++++++++++++-
> net/core/sock.c | 62 ++++++++++++++----------
> net/decnet/af_decnet.c | 21 +++++++-
> net/ipv4/proc.c | 7 ++-
> net/ipv4/tcp.c | 27 +++++++++-
> net/ipv4/tcp_input.c | 12 ++--
> net/ipv4/tcp_ipv4.c | 12 ++--
> net/ipv4/tcp_output.c | 2 +-
> net/ipv4/tcp_timer.c | 2 +-
> net/ipv4/udp.c | 20 ++++++--
> net/ipv6/tcp_ipv6.c | 10 ++--
> net/ipv6/udp.c | 4 +-
> net/sctp/socket.c | 35 ++++++++++---
> 19 files changed, 345 insertions(+), 86 deletions(-)
>
> diff --git a/crypto/af_alg.c b/crypto/af_alg.c
> index ac33d5f..9f41324 100644
> --- a/crypto/af_alg.c
> +++ b/crypto/af_alg.c
> @@ -29,10 +29,15 @@ struct alg_type_list {
>
> static atomic_long_t alg_memory_allocated;
>
> +static atomic_long_t *memory_allocated_alg(struct mem_cgroup *memcg)
> +{
> + return &alg_memory_allocated;
> +}
> +
> static struct proto alg_proto = {
> .name = "ALG",
> .owner = THIS_MODULE,
> - .memory_allocated = &alg_memory_allocated,
> + .memory_allocated = memory_allocated_alg,
> .obj_size = sizeof(struct alg_sock),
> };
>
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index 2cb9226..d0b973c 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -380,6 +380,10 @@ static inline
> void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx)
> {
> }
> +static inline struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
> +{
> + return NULL;
> +}
> #endif /* CONFIG_CGROUP_MEM_CONT */
>
> #if !defined(CONFIG_CGROUP_MEM_RES_CTLR) || !defined(CONFIG_DEBUG_VM)
> @@ -397,11 +401,34 @@ mem_cgroup_print_bad_page(struct page *page)
>
> #ifdef CONFIG_INET
> struct sock;
> +struct proto;
> #ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
> void sock_update_memcg(struct sock *sk);
> void sock_release_memcg(struct sock *sk);
> -
> +void memcg_sock_mem_alloc(struct mem_cgroup *mem, struct proto *prot,
> + int amt, int *parent_failure);
> +void memcg_sock_mem_free(struct mem_cgroup *mem, struct proto *prot, int amt);
> +void memcg_sockets_allocated_dec(struct mem_cgroup *mem, struct proto *prot);
> +void memcg_sockets_allocated_inc(struct mem_cgroup *mem, struct proto *prot);
> #else
> +/* memcontrol includes sockets.h, that includes memcontrol.h ... */
> +static inline void memcg_sock_mem_alloc(struct mem_cgroup *mem,
> + struct proto *prot, int amt,
> + int *parent_failure)
> +{
> +}
> +static inline void memcg_sock_mem_free(struct mem_cgroup *mem,
> + struct proto *prot, int amt)
> +{
> +}
> +static inline void memcg_sockets_allocated_dec(struct mem_cgroup *mem,
> + struct proto *prot)
> +{
> +}
> +static inline void memcg_sockets_allocated_inc(struct mem_cgroup *mem,
> + struct proto *prot)
> +{
> +}
> static inline void sock_update_memcg(struct sock *sk)
> {
> }
> diff --git a/include/net/sock.h b/include/net/sock.h
> index afe1467..c6983cf 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -54,6 +54,7 @@
> #include <linux/security.h>
> #include <linux/slab.h>
> #include <linux/uaccess.h>
> +#include <linux/cgroup.h>
>
> #include <linux/filter.h>
> #include <linux/rculist_nulls.h>
> @@ -168,6 +169,8 @@ struct sock_common {
> /* public: */
> };
>
> +struct mem_cgroup;
> +
> /**
> * struct sock - network layer representation of sockets
> * @__sk_common: shared layout with inet_timewait_sock
> @@ -786,18 +789,32 @@ struct proto {
> unsigned int inuse_idx;
> #endif
>
> + /*
> + * per-cgroup memory tracking:
> + *
> + * The following functions track memory consumption of network buffers
> + * by cgroup (kmem_cgroup) for the current protocol. As of the rest
> + * of the fields in this structure, not all protocols are required
> + * to implement them. Protocols that don't want to do per-cgroup
> + * memory pressure management, can just assume the root cgroup is used.
> + *
> + */
> /* Memory pressure */
> void (*enter_memory_pressure)(struct sock *sk);
> - atomic_long_t *memory_allocated; /* Current allocated memory. */
> - struct percpu_counter *sockets_allocated; /* Current number of sockets. */
> + /* Pointer to the current memory allocation of this cgroup. */
> + atomic_long_t *(*memory_allocated)(struct mem_cgroup *memcg);
> + /* Pointer to the current number of sockets in this cgroup. */
> + struct percpu_counter *(*sockets_allocated)(struct mem_cgroup *memcg);
> /*
> - * Pressure flag: try to collapse.
> + * Per cgroup pointer to the pressure flag: try to collapse.
> * Technical note: it is used by multiple contexts non atomically.
> * All the __sk_mem_schedule() is of this nature: accounting
> * is strict, actions are advisory and have some latency.
> */
> - int *memory_pressure;
> - long *sysctl_mem;
> + int *(*memory_pressure)(struct mem_cgroup *memcg);
> + /* Pointer to the per-cgroup version of the the sysctl_mem field */
> + long *(*prot_mem)(struct mem_cgroup *memcg);
> +
> int *sysctl_wmem;
> int *sysctl_rmem;
> int max_header;
> @@ -856,6 +873,91 @@ static inline void sk_refcnt_debug_release(const struct sock *sk)
> #define sk_refcnt_debug_release(sk) do { } while (0)
> #endif /* SOCK_REFCNT_DEBUG */
>
> +#include <linux/memcontrol.h>
> +static inline int *sk_memory_pressure(struct sock *sk)
> +{
> + int *ret = NULL;
> + if (sk->sk_prot->memory_pressure)
> + ret = sk->sk_prot->memory_pressure(sk->sk_cgrp);
> + return ret;
> +}
> +
> +static inline long sk_prot_mem(struct sock *sk, int index)
> +{
> + long *prot = sk->sk_prot->prot_mem(sk->sk_cgrp);
> + return prot[index];
> +}
> +
> +static inline long
> +sk_memory_allocated(struct sock *sk)
> +{
> + struct proto *prot = sk->sk_prot;
> + struct mem_cgroup *cg = sk->sk_cgrp;
> +
> + return atomic_long_read(prot->memory_allocated(cg));
> +}
> +
> +static inline long
> +sk_memory_allocated_add(struct sock *sk, int amt, int *parent_failure)
> +{
> + struct proto *prot = sk->sk_prot;
> + struct mem_cgroup *cg = sk->sk_cgrp;
> + long allocated;
> +
> + allocated = atomic_long_add_return(amt, prot->memory_allocated(cg));
> + memcg_sock_mem_alloc(cg, prot, amt, parent_failure);
> + return allocated;
> +}
> +
> +static inline void
> +sk_memory_allocated_sub(struct sock *sk, int amt)
> +{
> + struct proto *prot = sk->sk_prot;
> + struct mem_cgroup *cg = sk->sk_cgrp;
> +
> + atomic_long_sub(amt, prot->memory_allocated(cg));
> + memcg_sock_mem_free(cg, prot, amt);
> +}
> +
> +static inline void sk_sockets_allocated_dec(struct sock *sk)
> +{
> + struct proto *prot = sk->sk_prot;
> + struct mem_cgroup *cg = sk->sk_cgrp;
> +
> + percpu_counter_dec(prot->sockets_allocated(cg));
> + memcg_sockets_allocated_dec(cg, prot);
> +}
> +
> +static inline void sk_sockets_allocated_inc(struct sock *sk)
> +{
> + struct proto *prot = sk->sk_prot;
> + struct mem_cgroup *cg = sk->sk_cgrp;
> +
> + percpu_counter_inc(prot->sockets_allocated(cg));
> + memcg_sockets_allocated_inc(cg, prot);
> +}
> +
> +static inline int
> +sk_sockets_allocated_read_positive(struct sock *sk)
> +{
> + struct proto *prot = sk->sk_prot;
> + struct mem_cgroup *cg = sk->sk_cgrp;
> +
> + return percpu_counter_sum_positive(prot->sockets_allocated(cg));
> +}
> +
> +static inline int
> +kcg_sockets_allocated_sum_positive(struct proto *prot, struct mem_cgroup *cg)
> +{
> + return percpu_counter_sum_positive(prot->sockets_allocated(cg));
> +}
> +
> +static inline long
> +kcg_memory_allocated(struct proto *prot, struct mem_cgroup *cg)
> +{
> + return atomic_long_read(prot->memory_allocated(cg));
> +}
> +
>
> #ifdef CONFIG_PROC_FS
> /* Called with local bh disabled */
> diff --git a/include/net/tcp.h b/include/net/tcp.h
> index 149a415..2200694 100644
> --- a/include/net/tcp.h
> +++ b/include/net/tcp.h
> @@ -45,6 +45,7 @@
> #include <net/dst.h>
>
> #include <linux/seq_file.h>
> +#include <linux/memcontrol.h>
>
> extern struct inet_hashinfo tcp_hashinfo;
>
> @@ -253,9 +254,11 @@ extern int sysctl_tcp_cookie_size;
> extern int sysctl_tcp_thin_linear_timeouts;
> extern int sysctl_tcp_thin_dupack;
>
> -extern atomic_long_t tcp_memory_allocated;
> -extern struct percpu_counter tcp_sockets_allocated;
> -extern int tcp_memory_pressure;
> +struct mem_cgroup;
> +extern long *tcp_sysctl_mem(struct mem_cgroup *memcg);
> +struct percpu_counter *sockets_allocated_tcp(struct mem_cgroup *memcg);
> +int *memory_pressure_tcp(struct mem_cgroup *memcg);
> +atomic_long_t *memory_allocated_tcp(struct mem_cgroup *memcg);
>
> /*
> * The next routines deal with comparing 32 bit unsigned ints
> @@ -286,7 +289,7 @@ static inline bool tcp_too_many_orphans(struct sock *sk, int shift)
> }
>
> if (sk->sk_wmem_queued > SOCK_MIN_SNDBUF &&
> - atomic_long_read(&tcp_memory_allocated) > sysctl_tcp_mem[2])
> + sk_memory_allocated(sk) > sk_prot_mem(sk, 2))
> return true;
> return false;
> }
> diff --git a/include/net/udp.h b/include/net/udp.h
> index 67ea6fc..b96ed51 100644
> --- a/include/net/udp.h
> +++ b/include/net/udp.h
> @@ -105,7 +105,8 @@ static inline struct udp_hslot *udp_hashslot2(struct udp_table *table,
>
> extern struct proto udp_prot;
>
> -extern atomic_long_t udp_memory_allocated;
> +atomic_long_t *memory_allocated_udp(struct mem_cgroup *memcg);
> +long *udp_sysctl_mem(struct mem_cgroup *memcg);
>
> /* sysctl variables for udp */
> extern long sysctl_udp_mem[3];
> diff --git a/include/trace/events/sock.h b/include/trace/events/sock.h
> index 779abb9..12a6083 100644
> --- a/include/trace/events/sock.h
> +++ b/include/trace/events/sock.h
> @@ -37,7 +37,7 @@ TRACE_EVENT(sock_exceed_buf_limit,
>
> TP_STRUCT__entry(
> __array(char, name, 32)
> - __field(long *, sysctl_mem)
> + __field(long *, prot_mem)
> __field(long, allocated)
> __field(int, sysctl_rmem)
> __field(int, rmem_alloc)
> @@ -45,7 +45,7 @@ TRACE_EVENT(sock_exceed_buf_limit,
>
> TP_fast_assign(
> strncpy(__entry->name, prot->name, 32);
> - __entry->sysctl_mem = prot->sysctl_mem;
> + __entry->prot_mem = sk->sk_prot->prot_mem(sk->sk_cgrp);
> __entry->allocated = allocated;
> __entry->sysctl_rmem = prot->sysctl_rmem[0];
> __entry->rmem_alloc = atomic_read(&sk->sk_rmem_alloc);
> @@ -54,9 +54,9 @@ TRACE_EVENT(sock_exceed_buf_limit,
> TP_printk("proto:%s sysctl_mem=%ld,%ld,%ld allocated=%ld "
> "sysctl_rmem=%d rmem_alloc=%d",
> __entry->name,
> - __entry->sysctl_mem[0],
> - __entry->sysctl_mem[1],
> - __entry->sysctl_mem[2],
> + __entry->prot_mem[0],
> + __entry->prot_mem[1],
> + __entry->prot_mem[2],
> __entry->allocated,
> __entry->sysctl_rmem,
> __entry->rmem_alloc)
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 08a520e..1586332 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -339,6 +339,7 @@ struct mem_cgroup {
> spinlock_t pcp_counter_lock;
> };
>
> +static struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *mem);
> /* Writing them here to avoid exposing memcg's inner layout */
> #ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
> #ifdef CONFIG_INET
> @@ -369,6 +370,49 @@ void sock_release_memcg(struct sock *sk)
> {
> cgroup_release_and_wakeup_rmdir(mem_cgroup_css(sk->sk_cgrp));
> }
> +
> +void memcg_sock_mem_alloc(struct mem_cgroup *mem, struct proto *prot,
> + int amt, int *parent_failure)
> +{
> + mem = parent_mem_cgroup(mem);
> + for (; mem != NULL; mem = parent_mem_cgroup(mem)) {
> + long alloc;
> + long *prot_mem = prot->prot_mem(mem);
> + /*
> + * Large nestings are not the common case, and stopping in the
> + * middle would be complicated enough, that we bill it all the
> + * way through the root, and if needed, unbill everything later
> + */
> + alloc = atomic_long_add_return(amt,
> + prot->memory_allocated(mem));
> + *parent_failure |= (alloc > prot_mem[2]);
> + }
> +}
> +EXPORT_SYMBOL(memcg_sock_mem_alloc);
> +
> +void memcg_sock_mem_free(struct mem_cgroup *mem, struct proto *prot, int amt)
> +{
> + mem = parent_mem_cgroup(mem);
> + for (; mem != NULL; mem = parent_mem_cgroup(mem))
> + atomic_long_sub(amt, prot->memory_allocated(mem));
> +}
> +EXPORT_SYMBOL(memcg_sock_mem_free);
> +
> +void memcg_sockets_allocated_dec(struct mem_cgroup *mem, struct proto *prot)
> +{
> + mem = parent_mem_cgroup(mem);
> + for (; mem; mem = parent_mem_cgroup(mem))
> + percpu_counter_dec(prot->sockets_allocated(mem));
> +}
> +EXPORT_SYMBOL(memcg_sockets_allocated_dec);
> +
> +void memcg_sockets_allocated_inc(struct mem_cgroup *mem, struct proto *prot)
> +{
> + mem = parent_mem_cgroup(mem);
> + for (; mem; mem = parent_mem_cgroup(mem))
> + percpu_counter_inc(prot->sockets_allocated(mem));
> +}
> +EXPORT_SYMBOL(memcg_sockets_allocated_inc);
> #endif /* CONFIG_INET */
> #endif /* CONFIG_CGROUP_MEM_RES_CTLR_KMEM */
>
> @@ -454,7 +498,6 @@ enum mem_type {
>
> static void mem_cgroup_get(struct mem_cgroup *mem);
> static void mem_cgroup_put(struct mem_cgroup *mem);
> -static struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *mem);
> static void drain_all_stock_async(struct mem_cgroup *mem);
>
> static struct mem_cgroup_per_zone *
> diff --git a/net/core/sock.c b/net/core/sock.c
> index 5426ba0..6e3ace7 100644
> --- a/net/core/sock.c
> +++ b/net/core/sock.c
> @@ -1293,7 +1293,7 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
> newsk->sk_wq = NULL;
>
> if (newsk->sk_prot->sockets_allocated)
> - percpu_counter_inc(newsk->sk_prot->sockets_allocated);
> + sk_sockets_allocated_inc(newsk);
>
> if (sock_flag(newsk, SOCK_TIMESTAMP) ||
> sock_flag(newsk, SOCK_TIMESTAMPING_RX_SOFTWARE))
> @@ -1684,30 +1684,33 @@ int __sk_mem_schedule(struct sock *sk, int size, int kind)
> struct proto *prot = sk->sk_prot;
> int amt = sk_mem_pages(size);
> long allocated;
> + int *memory_pressure;
> + int parent_failure = 0;
>
> sk->sk_forward_alloc += amt * SK_MEM_QUANTUM;
> - allocated = atomic_long_add_return(amt, prot->memory_allocated);
> +
> + memory_pressure = sk_memory_pressure(sk);
> + allocated = sk_memory_allocated_add(sk, amt, &parent_failure);
> +
> + /* Over hard limit (we, or our parents) */
> + if (parent_failure || (allocated > sk_prot_mem(sk, 2)))
> + goto suppress_allocation;
>
> /* Under limit. */
> - if (allocated <= prot->sysctl_mem[0]) {
> - if (prot->memory_pressure && *prot->memory_pressure)
> - *prot->memory_pressure = 0;
> - return 1;
> - }
> + if (allocated <= sk_prot_mem(sk, 0))
> + if (memory_pressure && *memory_pressure)
> + *memory_pressure = 0;
>
> /* Under pressure. */
> - if (allocated > prot->sysctl_mem[1])
> + if (allocated > sk_prot_mem(sk, 1))
> if (prot->enter_memory_pressure)
> prot->enter_memory_pressure(sk);
>
> - /* Over hard limit. */
> - if (allocated > prot->sysctl_mem[2])
> - goto suppress_allocation;
> -
> /* guarantee minimum buffer size under pressure */
> if (kind == SK_MEM_RECV) {
> if (atomic_read(&sk->sk_rmem_alloc) < prot->sysctl_rmem[0])
> return 1;
> +
> } else { /* SK_MEM_SEND */
> if (sk->sk_type == SOCK_STREAM) {
> if (sk->sk_wmem_queued < prot->sysctl_wmem[0])
> @@ -1717,13 +1720,13 @@ int __sk_mem_schedule(struct sock *sk, int size, int kind)
> return 1;
> }
>
> - if (prot->memory_pressure) {
> + if (memory_pressure) {
> int alloc;
>
> - if (!*prot->memory_pressure)
> + if (!*memory_pressure)
> return 1;
> - alloc = percpu_counter_read_positive(prot->sockets_allocated);
> - if (prot->sysctl_mem[2] > alloc *
> + alloc = sk_sockets_allocated_read_positive(sk);
> + if (sk_prot_mem(sk, 2) > alloc *
> sk_mem_pages(sk->sk_wmem_queued +
> atomic_read(&sk->sk_rmem_alloc) +
> sk->sk_forward_alloc))
> @@ -1746,7 +1749,9 @@ suppress_allocation:
>
> /* Alas. Undo changes. */
> sk->sk_forward_alloc -= amt * SK_MEM_QUANTUM;
> - atomic_long_sub(amt, prot->memory_allocated);
> +
> + sk_memory_allocated_sub(sk, amt);
> +
> return 0;
> }
> EXPORT_SYMBOL(__sk_mem_schedule);
> @@ -1757,15 +1762,15 @@ EXPORT_SYMBOL(__sk_mem_schedule);
> */
> void __sk_mem_reclaim(struct sock *sk)
> {
> - struct proto *prot = sk->sk_prot;
> + int *memory_pressure = sk_memory_pressure(sk);
>
> - atomic_long_sub(sk->sk_forward_alloc >> SK_MEM_QUANTUM_SHIFT,
> - prot->memory_allocated);
> + sk_memory_allocated_sub(sk,
> + sk->sk_forward_alloc >> SK_MEM_QUANTUM_SHIFT);
> sk->sk_forward_alloc &= SK_MEM_QUANTUM - 1;
>
> - if (prot->memory_pressure && *prot->memory_pressure &&
> - (atomic_long_read(prot->memory_allocated) < prot->sysctl_mem[0]))
> - *prot->memory_pressure = 0;
> + if (memory_pressure && *memory_pressure &&
> + (sk_memory_allocated(sk) < sk_prot_mem(sk, 0)))
> + *memory_pressure = 0;
> }
> EXPORT_SYMBOL(__sk_mem_reclaim);
>
> @@ -2484,13 +2489,20 @@ static char proto_method_implemented(const void *method)
>
> static void proto_seq_printf(struct seq_file *seq, struct proto *proto)
> {
> + struct mem_cgroup *cg = mem_cgroup_from_task(current);
> + int *memory_pressure = NULL;
> +
> + if (proto->memory_pressure)
> + memory_pressure = proto->memory_pressure(cg);
> +
> seq_printf(seq, "%-9s %4u %6d %6ld %-3s %6u %-3s %-10s "
> "%2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c %2c\n",
> proto->name,
> proto->obj_size,
> sock_prot_inuse_get(seq_file_net(seq), proto),
> - proto->memory_allocated != NULL ? atomic_long_read(proto->memory_allocated) : -1L,
> - proto->memory_pressure != NULL ? *proto->memory_pressure ? "yes" : "no" : "NI",
> + proto->memory_allocated != NULL ?
> + kcg_memory_allocated(proto, cg) : -1L,
> + memory_pressure != NULL ? *memory_pressure ? "yes" : "no" : "NI",
> proto->max_header,
> proto->slab == NULL ? "no" : "yes",
> module_name(proto->owner),
> diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
> index 19acd00..39f83b4 100644
> --- a/net/decnet/af_decnet.c
> +++ b/net/decnet/af_decnet.c
> @@ -458,13 +458,28 @@ static void dn_enter_memory_pressure(struct sock *sk)
> }
> }
>
> +static atomic_long_t *memory_allocated_dn(struct mem_cgroup *memcg)
> +{
> + return &decnet_memory_allocated;
> +}
> +
> +static int *memory_pressure_dn(struct mem_cgroup *memcg)
> +{
> + return &dn_memory_pressure;
> +}
> +
> +static long *dn_sysctl_mem(struct mem_cgroup *memcg)
> +{
> + return sysctl_decnet_mem;
> +}
> +
> static struct proto dn_proto = {
> .name = "NSP",
> .owner = THIS_MODULE,
> .enter_memory_pressure = dn_enter_memory_pressure,
> - .memory_pressure = &dn_memory_pressure,
> - .memory_allocated = &decnet_memory_allocated,
> - .sysctl_mem = sysctl_decnet_mem,
> + .memory_pressure = memory_pressure_dn,
> + .memory_allocated = memory_allocated_dn,
> + .prot_mem = dn_sysctl_mem,
> .sysctl_wmem = sysctl_decnet_wmem,
> .sysctl_rmem = sysctl_decnet_rmem,
> .max_header = DN_MAX_NSP_DATA_HEADER + 64,
> diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c
> index b14ec7d..ba56702 100644
> --- a/net/ipv4/proc.c
> +++ b/net/ipv4/proc.c
> @@ -52,20 +52,21 @@ static int sockstat_seq_show(struct seq_file *seq, void *v)
> {
> struct net *net = seq->private;
> int orphans, sockets;
> + struct mem_cgroup *cg = mem_cgroup_from_task(current);
>
> local_bh_disable();
> orphans = percpu_counter_sum_positive(&tcp_orphan_count);
> - sockets = percpu_counter_sum_positive(&tcp_sockets_allocated);
> + sockets = kcg_sockets_allocated_sum_positive(&tcp_prot, cg);
> local_bh_enable();
>
> socket_seq_show(seq);
> seq_printf(seq, "TCP: inuse %d orphan %d tw %d alloc %d mem %ld\n",
> sock_prot_inuse_get(net, &tcp_prot), orphans,
> tcp_death_row.tw_count, sockets,
> - atomic_long_read(&tcp_memory_allocated));
> + kcg_memory_allocated(&tcp_prot, cg));
> seq_printf(seq, "UDP: inuse %d mem %ld\n",
> sock_prot_inuse_get(net, &udp_prot),
> - atomic_long_read(&udp_memory_allocated));
> + kcg_memory_allocated(&udp_prot, cg));
> seq_printf(seq, "UDPLITE: inuse %d\n",
> sock_prot_inuse_get(net, &udplite_prot));
> seq_printf(seq, "RAW: inuse %d\n",
> diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
> index 46febca..ca82b90 100644
> --- a/net/ipv4/tcp.c
> +++ b/net/ipv4/tcp.c
> @@ -291,13 +291,11 @@ EXPORT_SYMBOL(sysctl_tcp_rmem);
> EXPORT_SYMBOL(sysctl_tcp_wmem);
>
> atomic_long_t tcp_memory_allocated; /* Current allocated memory. */
> -EXPORT_SYMBOL(tcp_memory_allocated);
>
> /*
> * Current number of TCP sockets.
> */
> struct percpu_counter tcp_sockets_allocated;
> -EXPORT_SYMBOL(tcp_sockets_allocated);
>
> /*
> * TCP splice context
> @@ -315,7 +313,18 @@ struct tcp_splice_state {
> * is strict, actions are advisory and have some latency.
> */
> int tcp_memory_pressure __read_mostly;
> -EXPORT_SYMBOL(tcp_memory_pressure);
> +
> +int *memory_pressure_tcp(struct mem_cgroup *memcg)
> +{
> + return &tcp_memory_pressure;
> +}
> +EXPORT_SYMBOL(memory_pressure_tcp);
> +
> +struct percpu_counter *sockets_allocated_tcp(struct mem_cgroup *memcg)
> +{
> + return &tcp_sockets_allocated;
> +}
> +EXPORT_SYMBOL(sockets_allocated_tcp);
>
> void tcp_enter_memory_pressure(struct sock *sk)
> {
> @@ -326,6 +335,18 @@ void tcp_enter_memory_pressure(struct sock *sk)
> }
> EXPORT_SYMBOL(tcp_enter_memory_pressure);
>
> +long *tcp_sysctl_mem(struct mem_cgroup *memcg)
> +{
> + return sysctl_tcp_mem;
> +}
> +EXPORT_SYMBOL(tcp_sysctl_mem);
> +
> +atomic_long_t *memory_allocated_tcp(struct mem_cgroup *memcg)
> +{
> + return &tcp_memory_allocated;
> +}
> +EXPORT_SYMBOL(memory_allocated_tcp);
> +
> /* Convert seconds to retransmits based on initial and max timeout */
> static u8 secs_to_retrans(int seconds, int timeout, int rto_max)
> {
> diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> index ea0d218..3f17423 100644
> --- a/net/ipv4/tcp_input.c
> +++ b/net/ipv4/tcp_input.c
> @@ -316,7 +316,7 @@ static void tcp_grow_window(struct sock *sk, struct sk_buff *skb)
> /* Check #1 */
> if (tp->rcv_ssthresh < tp->window_clamp &&
> (int)tp->rcv_ssthresh < tcp_space(sk) &&
> - !tcp_memory_pressure) {
> + !sk_memory_pressure(sk)) {
> int incr;
>
> /* Check #2. Increase window, if skb with such overhead
> @@ -398,8 +398,8 @@ static void tcp_clamp_window(struct sock *sk)
>
> if (sk->sk_rcvbuf < sysctl_tcp_rmem[2] &&
> !(sk->sk_userlocks & SOCK_RCVBUF_LOCK) &&
> - !tcp_memory_pressure &&
> - atomic_long_read(&tcp_memory_allocated) < sysctl_tcp_mem[0]) {
> + !sk_memory_pressure(sk) &&
> + sk_memory_allocated(sk) < sk_prot_mem(sk, 0)) {
> sk->sk_rcvbuf = min(atomic_read(&sk->sk_rmem_alloc),
> sysctl_tcp_rmem[2]);
> }
> @@ -4806,7 +4806,7 @@ static int tcp_prune_queue(struct sock *sk)
>
> if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
> tcp_clamp_window(sk);
> - else if (tcp_memory_pressure)
> + else if (sk_memory_pressure(sk))
> tp->rcv_ssthresh = min(tp->rcv_ssthresh, 4U * tp->advmss);
>
> tcp_collapse_ofo_queue(sk);
> @@ -4872,11 +4872,11 @@ static int tcp_should_expand_sndbuf(struct sock *sk)
> return 0;
>
> /* If we are under global TCP memory pressure, do not expand. */
> - if (tcp_memory_pressure)
> + if (sk_memory_pressure(sk))
> return 0;
>
> /* If we are under soft global TCP memory pressure, do not expand. */
> - if (atomic_long_read(&tcp_memory_allocated) >= sysctl_tcp_mem[0])
> + if (sk_memory_allocated(sk) >= sk_prot_mem(sk, 0))
> return 0;
>
> /* If we filled the congestion window, do not expand. */
> diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
> index 1c12b8e..cbb0d5e 100644
> --- a/net/ipv4/tcp_ipv4.c
> +++ b/net/ipv4/tcp_ipv4.c
> @@ -1901,7 +1901,7 @@ static int tcp_v4_init_sock(struct sock *sk)
> sk->sk_rcvbuf = sysctl_tcp_rmem[1];
>
> local_bh_disable();
> - percpu_counter_inc(&tcp_sockets_allocated);
> + sk_sockets_allocated_inc(sk);
> local_bh_enable();
>
> return 0;
> @@ -1957,7 +1957,7 @@ void tcp_v4_destroy_sock(struct sock *sk)
> tp->cookie_values = NULL;
> }
>
> - percpu_counter_dec(&tcp_sockets_allocated);
> + sk_sockets_allocated_dec(sk);
> }
> EXPORT_SYMBOL(tcp_v4_destroy_sock);
>
> @@ -2598,11 +2598,11 @@ struct proto tcp_prot = {
> .unhash = inet_unhash,
> .get_port = inet_csk_get_port,
> .enter_memory_pressure = tcp_enter_memory_pressure,
> - .sockets_allocated = &tcp_sockets_allocated,
> + .memory_pressure = memory_pressure_tcp,
> + .sockets_allocated = sockets_allocated_tcp,
> .orphan_count = &tcp_orphan_count,
> - .memory_allocated = &tcp_memory_allocated,
> - .memory_pressure = &tcp_memory_pressure,
> - .sysctl_mem = sysctl_tcp_mem,
> + .memory_allocated = memory_allocated_tcp,
> + .prot_mem = tcp_sysctl_mem,
> .sysctl_wmem = sysctl_tcp_wmem,
> .sysctl_rmem = sysctl_tcp_rmem,
> .max_header = MAX_TCP_HEADER,
> diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
> index 882e0b0..06aeb31 100644
> --- a/net/ipv4/tcp_output.c
> +++ b/net/ipv4/tcp_output.c
> @@ -1912,7 +1912,7 @@ u32 __tcp_select_window(struct sock *sk)
> if (free_space < (full_space >> 1)) {
> icsk->icsk_ack.quick = 0;
>
> - if (tcp_memory_pressure)
> + if (sk_memory_pressure(sk))
> tp->rcv_ssthresh = min(tp->rcv_ssthresh,
> 4U * tp->advmss);
>
> diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
> index ecd44b0..2c67617 100644
> --- a/net/ipv4/tcp_timer.c
> +++ b/net/ipv4/tcp_timer.c
> @@ -261,7 +261,7 @@ static void tcp_delack_timer(unsigned long data)
> }
>
> out:
> - if (tcp_memory_pressure)
> + if (sk_memory_pressure(sk))
> sk_mem_reclaim(sk);
> out_unlock:
> bh_unlock_sock(sk);
> diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
> index 1b5a193..f8d72ce 100644
> --- a/net/ipv4/udp.c
> +++ b/net/ipv4/udp.c
> @@ -120,9 +120,6 @@ EXPORT_SYMBOL(sysctl_udp_rmem_min);
> int sysctl_udp_wmem_min __read_mostly;
> EXPORT_SYMBOL(sysctl_udp_wmem_min);
>
> -atomic_long_t udp_memory_allocated;
> -EXPORT_SYMBOL(udp_memory_allocated);
> -
> #define MAX_UDP_PORTS 65536
> #define PORTS_PER_CHAIN (MAX_UDP_PORTS / UDP_HTABLE_SIZE_MIN)
>
> @@ -1918,6 +1915,19 @@ unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait)
> }
> EXPORT_SYMBOL(udp_poll);
>
> +static atomic_long_t udp_memory_allocated;
> +atomic_long_t *memory_allocated_udp(struct mem_cgroup *memcg)
> +{
> + return &udp_memory_allocated;
> +}
> +EXPORT_SYMBOL(memory_allocated_udp);
> +
> +long *udp_sysctl_mem(struct mem_cgroup *memcg)
> +{
> + return sysctl_udp_mem;
> +}
> +EXPORT_SYMBOL(udp_sysctl_mem);
> +
> struct proto udp_prot = {
> .name = "UDP",
> .owner = THIS_MODULE,
> @@ -1936,8 +1946,8 @@ struct proto udp_prot = {
> .unhash = udp_lib_unhash,
> .rehash = udp_v4_rehash,
> .get_port = udp_v4_get_port,
> - .memory_allocated = &udp_memory_allocated,
> - .sysctl_mem = sysctl_udp_mem,
> + .memory_allocated = &memory_allocated_udp,
> + .prot_mem = udp_sysctl_mem,
> .sysctl_wmem = &sysctl_udp_wmem_min,
> .sysctl_rmem = &sysctl_udp_rmem_min,
> .obj_size = sizeof(struct udp_sock),
> diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
> index d1fb63f..807797a 100644
> --- a/net/ipv6/tcp_ipv6.c
> +++ b/net/ipv6/tcp_ipv6.c
> @@ -2012,7 +2012,7 @@ static int tcp_v6_init_sock(struct sock *sk)
> sk->sk_rcvbuf = sysctl_tcp_rmem[1];
>
> local_bh_disable();
> - percpu_counter_inc(&tcp_sockets_allocated);
> + sk_sockets_allocated_inc(sk);
> local_bh_enable();
>
> return 0;
> @@ -2221,11 +2221,11 @@ struct proto tcpv6_prot = {
> .unhash = inet_unhash,
> .get_port = inet_csk_get_port,
> .enter_memory_pressure = tcp_enter_memory_pressure,
> - .sockets_allocated = &tcp_sockets_allocated,
> - .memory_allocated = &tcp_memory_allocated,
> - .memory_pressure = &tcp_memory_pressure,
> + .sockets_allocated = sockets_allocated_tcp,
> + .memory_allocated = memory_allocated_tcp,
> + .memory_pressure = memory_pressure_tcp,
> .orphan_count = &tcp_orphan_count,
> - .sysctl_mem = sysctl_tcp_mem,
> + .prot_mem = tcp_sysctl_mem,
> .sysctl_wmem = sysctl_tcp_wmem,
> .sysctl_rmem = sysctl_tcp_rmem,
> .max_header = MAX_TCP_HEADER,
> diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
> index 29213b5..ef4b5b3 100644
> --- a/net/ipv6/udp.c
> +++ b/net/ipv6/udp.c
> @@ -1465,8 +1465,8 @@ struct proto udpv6_prot = {
> .unhash = udp_lib_unhash,
> .rehash = udp_v6_rehash,
> .get_port = udp_v6_get_port,
> - .memory_allocated = &udp_memory_allocated,
> - .sysctl_mem = sysctl_udp_mem,
> + .memory_allocated = memory_allocated_udp,
> + .prot_mem = udp_sysctl_mem,
> .sysctl_wmem = &sysctl_udp_wmem_min,
> .sysctl_rmem = &sysctl_udp_rmem_min,
> .obj_size = sizeof(struct udp6_sock),
> diff --git a/net/sctp/socket.c b/net/sctp/socket.c
> index 836aa63..62eb178 100644
> --- a/net/sctp/socket.c
> +++ b/net/sctp/socket.c
> @@ -119,11 +119,30 @@ static int sctp_memory_pressure;
> static atomic_long_t sctp_memory_allocated;
> struct percpu_counter sctp_sockets_allocated;
>
> +static long *sctp_sysctl_mem(struct mem_cgroup *memcg)
> +{
> + return sysctl_sctp_mem;
> +}
> +
> static void sctp_enter_memory_pressure(struct sock *sk)
> {
> sctp_memory_pressure = 1;
> }
>
> +static int *memory_pressure_sctp(struct mem_cgroup *memcg)
> +{
> + return &sctp_memory_pressure;
> +}
> +
> +static atomic_long_t *memory_allocated_sctp(struct mem_cgroup *memcg)
> +{
> + return &sctp_memory_allocated;
> +}
> +
> +static struct percpu_counter *sockets_allocated_sctp(struct mem_cgroup *memcg)
> +{
> + return &sctp_sockets_allocated;
> +}
>
> /* Get the sndbuf space available at the time on the association. */
> static inline int sctp_wspace(struct sctp_association *asoc)
> @@ -6831,13 +6850,13 @@ struct proto sctp_prot = {
> .unhash = sctp_unhash,
> .get_port = sctp_get_port,
> .obj_size = sizeof(struct sctp_sock),
> - .sysctl_mem = sysctl_sctp_mem,
> + .prot_mem = sctp_sysctl_mem,
> .sysctl_rmem = sysctl_sctp_rmem,
> .sysctl_wmem = sysctl_sctp_wmem,
> - .memory_pressure = &sctp_memory_pressure,
> + .memory_pressure = memory_pressure_sctp,
> .enter_memory_pressure = sctp_enter_memory_pressure,
> - .memory_allocated = &sctp_memory_allocated,
> - .sockets_allocated = &sctp_sockets_allocated,
> + .memory_allocated = memory_allocated_sctp,
> + .sockets_allocated = sockets_allocated_sctp,
> };
>
> #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
> @@ -6863,12 +6882,12 @@ struct proto sctpv6_prot = {
> .unhash = sctp_unhash,
> .get_port = sctp_get_port,
> .obj_size = sizeof(struct sctp6_sock),
> - .sysctl_mem = sysctl_sctp_mem,
> + .prot_mem = sctp_sysctl_mem,
> .sysctl_rmem = sysctl_sctp_rmem,
> .sysctl_wmem = sysctl_sctp_wmem,
> - .memory_pressure = &sctp_memory_pressure,
> + .memory_pressure = memory_pressure_sctp,
> .enter_memory_pressure = sctp_enter_memory_pressure,
> - .memory_allocated = &sctp_memory_allocated,
> - .sockets_allocated = &sctp_sockets_allocated,
> + .memory_allocated = memory_allocated_sctp,
> + .sockets_allocated = sockets_allocated_sctp,
> };
> #endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */
> --
> 1.7.6
>
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* [iproute2 PATCH 02/11] Fix file descriptor leak on error in rtnl_hash_initialize()
From: Thomas Jarosch @ 2011-10-03 15:22 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
lib/rt_names.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/lib/rt_names.c b/lib/rt_names.c
index 30d43cd..a290021 100644
--- a/lib/rt_names.c
+++ b/lib/rt_names.c
@@ -54,6 +54,7 @@ rtnl_hash_initialize(char *file, struct rtnl_hash_entry **hash, int size)
sscanf(p, "%d %s #", &id, namebuf) != 2) {
fprintf(stderr, "Database %s is corrupted at %s\n",
file, p);
+ fclose(fp);
return;
}
@@ -91,6 +92,7 @@ static void rtnl_tab_initialize(char *file, char **tab, int size)
sscanf(p, "%d %s #", &id, namebuf) != 2) {
fprintf(stderr, "Database %s is corrupted at %s\n",
file, p);
+ fclose(fp);
return;
}
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 01/11] Fix pipe I/O stream descriptor leak in init_service_resolver()
From: Thomas Jarosch @ 2011-10-03 15:22 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
misc/ss.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/misc/ss.c b/misc/ss.c
index 1597ff9..f62d371 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -518,6 +518,7 @@ void init_service_resolver(void)
}
}
}
+ pclose(fp);
}
}
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 03/11] Fix wrong comparison in cmp_print_eopt()
From: Thomas Jarosch @ 2011-10-03 15:22 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
tc/em_cmp.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tc/em_cmp.c b/tc/em_cmp.c
index 6addce0..3e6d00e 100644
--- a/tc/em_cmp.c
+++ b/tc/em_cmp.c
@@ -155,7 +155,7 @@ static int cmp_print_eopt(FILE *fd, struct tcf_ematch_hdr *hdr, void *data,
fprintf(fd, "u8 ");
else if (cmp->align == TCF_EM_ALIGN_U16)
fprintf(fd, "u16 ");
- else if (cmp->align == TCF_EM_ALIGN_U16)
+ else if (cmp->align == TCF_EM_ALIGN_U32)
fprintf(fd, "u32 ");
fprintf(fd, "at %d layer %d ", cmp->off, cmp->layer);
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 04/11] Fix wrong sanity check in choke_parse_opt()
From: Thomas Jarosch @ 2011-10-03 15:23 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
tc/q_choke.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tc/q_choke.c b/tc/q_choke.c
index 6e54cb7..04a864f 100644
--- a/tc/q_choke.c
+++ b/tc/q_choke.c
@@ -122,7 +122,7 @@ static int choke_parse_opt(struct qdisc_util *qu, int argc, char **argv,
return -1;
}
- if (opt.qth_min > opt.qth_min) {
+ if (opt.qth_min >= opt.qth_max) {
fprintf(stderr, "\"min\" is not smaller than \"max\"\n");
return -1;
}
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 08/11] Fix file descriptor leak on error in read_viftable()
From: Thomas Jarosch @ 2011-10-03 15:24 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
ip/ipmroute.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/ip/ipmroute.c b/ip/ipmroute.c
index a4389f5..f033349 100644
--- a/ip/ipmroute.c
+++ b/ip/ipmroute.c
@@ -58,9 +58,10 @@ static void read_viftable(void)
if (!fp)
return;
- if (!fgets(buf, sizeof(buf), fp))
+ if (!fgets(buf, sizeof(buf), fp)) {
+ fclose(fp);
return;
-
+ }
while (fgets(buf, sizeof(buf), fp)) {
int vifi;
char dev[256];
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 06/11] Add missing closedir() call in do_show()
From: Thomas Jarosch @ 2011-10-03 15:23 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
ip/iptuntap.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/ip/iptuntap.c b/ip/iptuntap.c
index 588926c..29f2777 100644
--- a/ip/iptuntap.c
+++ b/ip/iptuntap.c
@@ -298,6 +298,7 @@ static int do_show(int argc, char **argv)
printf(" group %ld", group);
printf("\n");
}
+ closedir(dir);
return 0;
}
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 11/11] Fix file descriptor leak on error in read_igmp()
From: Thomas Jarosch @ 2011-10-03 15:24 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
ip/ipmaddr.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
index 5a52c85..3ae9478 100644
--- a/ip/ipmaddr.c
+++ b/ip/ipmaddr.c
@@ -128,8 +128,10 @@ void read_igmp(struct ma_info **result_p)
if (!fp)
return;
memset(&m, 0, sizeof(m));
- if (!fgets(buf, sizeof(buf), fp))
+ if (!fgets(buf, sizeof(buf), fp)) {
+ fclose(fp);
return;
+ }
m.addr.family = AF_INET;
m.addr.bitlen = 32;
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 10/11] Fix file descriptor leak in do_tunnels_list()
From: Thomas Jarosch @ 2011-10-03 15:24 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
ip/iptunnel.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/ip/iptunnel.c b/ip/iptunnel.c
index f038f0a..3d41a27 100644
--- a/ip/iptunnel.c
+++ b/ip/iptunnel.c
@@ -411,6 +411,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
if (!fgets(buf, sizeof(buf), fp) ||
!fgets(buf, sizeof(buf), fp)) {
fprintf(stderr, "/proc/net/dev read error\n");
+ fclose(fp);
return -1;
}
@@ -421,6 +422,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
if ((ptr = strchr(buf, ':')) == NULL ||
(*ptr++ = 0, sscanf(buf, "%s", name) != 1)) {
fprintf(stderr, "Wrong format of /proc/net/dev. Sorry.\n");
+ fclose(fp);
return -1;
}
if (sscanf(ptr, "%ld%ld%ld%ld%ld%ld%ld%*d%ld%ld%ld%ld%ld%ld%ld",
@@ -462,6 +464,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
}
printf("\n");
}
+ fclose(fp);
return 0;
}
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 07/11] Fix file descriptor leak on error in iproute_flush_cache()
From: Thomas Jarosch @ 2011-10-03 15:23 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
ip/iproute.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/ip/iproute.c b/ip/iproute.c
index 21e1a4b..15b36e8 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -1057,6 +1057,7 @@ static int iproute_flush_cache(void)
if ((write (flush_fd, (void *)buffer, len)) < len) {
fprintf (stderr, "Cannot flush routing cache\n");
+ close(flush_fd);
return -1;
}
close(flush_fd);
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 09/11] Fix file descriptor leak on error in read_mroute_list()
From: Thomas Jarosch @ 2011-10-03 15:24 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
ip/ipmroute.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/ip/ipmroute.c b/ip/ipmroute.c
index f033349..945727d 100644
--- a/ip/ipmroute.c
+++ b/ip/ipmroute.c
@@ -85,8 +85,10 @@ static void read_mroute_list(FILE *ofp)
if (!fp)
return;
- if (!fgets(buf, sizeof(buf), fp))
+ if (!fgets(buf, sizeof(buf), fp)) {
+ fclose(fp);
return;
+ }
while (fgets(buf, sizeof(buf), fp)) {
inet_prefix maddr, msrc;
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 05/11] Fix memory leak of lname variable in get_target_name()
From: Thomas Jarosch @ 2011-10-03 15:23 UTC (permalink / raw)
To: netdev
Detected by cppcheck.
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
---
tc/m_ipt.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/tc/m_ipt.c b/tc/m_ipt.c
index 99d9965..a73d400 100644
--- a/tc/m_ipt.c
+++ b/tc/m_ipt.c
@@ -281,6 +281,7 @@ get_target_name(const char *name)
fputs(dlerror(), stderr);
printf("\n");
free(new_name);
+ free(lname);
return NULL;
}
}
@@ -297,6 +298,7 @@ get_target_name(const char *name)
fprintf(stderr, "\n");
dlclose(handle);
free(new_name);
+ free(lname);
return NULL;
}
}
@@ -304,6 +306,7 @@ get_target_name(const char *name)
}
free(new_name);
+ free(lname);
return m;
}
--
1.7.4.4
^ permalink raw reply related
* [iproute2 PATCH 00/11] QA check with cppcheck
From: Thomas Jarosch @ 2011-10-03 15:21 UTC (permalink / raw)
To: netdev
Hi there,
I've given iproute2 a good run with the free
cppcheck static code analysis tool.
(http://cppcheck.sourceforge.net/)
Following are eleven patches correcting minor
resource leaks and two real bugs.
Cheers,
Thomas
Thomas Jarosch (11):
Fix pipe I/O stream descriptor leak in init_service_resolver()
Fix file descriptor leak on error in rtnl_hash_initialize()
Fix wrong comparison in cmp_print_eopt()
Fix wrong sanity check in choke_parse_opt()
Fix memory leak of lname variable in get_target_name()
Add missing closedir() call in do_show()
Fix file descriptor leak on error in iproute_flush_cache()
Fix file descriptor leak on error in read_viftable()
Fix file descriptor leak on error in read_mroute_list()
Fix file descriptor leak in do_tunnels_list()
Fix file descriptor leak on error in read_igmp()
ip/ipmaddr.c | 4 +++-
ip/ipmroute.c | 9 ++++++---
ip/iproute.c | 1 +
ip/iptunnel.c | 3 +++
ip/iptuntap.c | 1 +
lib/rt_names.c | 2 ++
misc/ss.c | 1 +
tc/em_cmp.c | 2 +-
tc/m_ipt.c | 3 +++
tc/q_choke.c | 2 +-
10 files changed, 22 insertions(+), 6 deletions(-)
--
1.7.4.4
^ permalink raw reply
* Re: big picture UDP/IP performance question re 2.6.18 -> 2.6.32
From: starlight @ 2011-10-03 15:25 UTC (permalink / raw)
To: Eric Dumazet
Cc: linux-kernel, netdev, Willy Tarreau, Peter Zijlstra,
Stephen Hemminger
[-- Attachment #1: Type: text/plain, Size: 1868 bytes --]
Ran 'nohalt' and 'poll=idle' tests and they
were a complete bust. 'nohalt' gave slightly
better performance with 2.6.18(rhel) and
slightly worse performance with 2.6.39.27.
'poll=idle' improved 2.6.39.27 by 2.7%,
which is nowhere near good enough to have
servers running at full power--about double
idle power according to the UPS. 'poll=idle'
did cause the idle-loop to show up in 'perf'
at the top of the list consuming 45% of the
CPU. So the one thing it does is permit one
to see exactly how much absolute CPU is
consumed by each component during test runs
rather than providing a relative number.
I've come to the conclusion that Eric is right
and the primary issue is an increase in the
cost of scheduler context switches. Have
been watching this number and it has held
pretty close to 200k/sec under all scenarios
and kernel versions, so it has to be
a longer code-path, bigger cache pressure
or both in the scheduler. Sadly this makes
newer kernels a no-go for us.
At 07:47 AM 10/2/2011 -0700, Stephen Hemminger wrote:
>Try disabling PCI DMA remapping. The additional
>overhead of setting up IO mapping can be a
>performance buzz kill. Try CONGIG_DMAR=n
I decided to skip this. Can't see how it
will make more than a percent or two
difference since the problem is not the
network stack.
At 09:21 AM 10/2/2011 +0200, Eric Dumazet wrote:
>On new kernels, you can check if your udp sockets
>drops frames because of rcvbuffer being full (cat
>/proc/net/udp, check last column 'drops')
Zero, of course. This info is also
shown lumped in the 'netstat -s'
"packet receive errors" counter.
Have been watching it all along.
>To check if softirq processing hit some limits :
>cat /proc/net/softnet_stat
Zero drops. Some noise-level squeezing.
Nice stat! Wish I had known about this
four or five years ago.
>Please send full "dmesg" output
Attached.
[-- Attachment #2: dmesg_c6_263904.txt --]
[-- Type: text/plain, Size: 65129 bytes --]
Linux version 2.6.39.4 (x@x) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #1 SMP Sat Oct 1 21:11:47 EDT 2011
Command line: ro root=/dev/vg00/lv06 console=ttyS2,115200 hugepages=4096 nohalt
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009dc00 (usable)
BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000d7e80000 (usable)
BIOS-e820: 00000000d7e8e000 - 00000000d7e90000 type 9
BIOS-e820: 00000000d7e90000 - 00000000d7eb4000 (ACPI data)
BIOS-e820: 00000000d7eb4000 - 00000000d7ee0000 (ACPI NVS)
BIOS-e820: 00000000d7ee0000 - 00000000d8000000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000428000000 (usable)
NX (Execute Disable) protection: active
DMI present.
DMI: Supermicro H8DG6/H8DGi/H8DG6/H8DGi, BIOS 1.0 09/09/10
e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
No AGP bridge found
last_pfn = 0x428000 max_arch_pfn = 0x400000000
MTRR default type: uncachable
MTRR fixed ranges enabled:
00000-9FFFF write-back
A0000-EFFFF uncachable
F0000-FFFFF write-protect
MTRR variable ranges enabled:
0 base 000000000000 mask FFFF80000000 write-back
1 base 000080000000 mask FFFFC0000000 write-back
2 base 0000C0000000 mask FFFFF0000000 write-back
3 base 0000D0000000 mask FFFFF8000000 write-back
4 disabled
5 disabled
6 disabled
7 disabled
TOM2: 0000000428000000 aka 17024M
x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
e820 update range: 00000000d8000000 - 0000000100000000 (usable) ==> (reserved)
last_pfn = 0xd7e80 max_arch_pfn = 0x400000000
found SMP MP-table at [ffff8800000ff780] ff780
initial memory mapped : 0 - 20000000
Base memory trampoline at [ffff880000098000] 98000 size 20480
Using GB pages for direct mapping
init_memory_mapping: 0000000000000000-00000000d7e80000
0000000000 - 00c0000000 page 1G
00c0000000 - 00d7e00000 page 2M
00d7e00000 - 00d7e80000 page 4k
kernel direct mapping tables up to d7e80000 @ d7e7d000-d7e80000
init_memory_mapping: 0000000100000000-0000000428000000
0100000000 - 0400000000 page 1G
0400000000 - 0428000000 page 2M
kernel direct mapping tables up to 428000000 @ 427ffe000-428000000
RAMDISK: 37451000 - 37ff0000
ACPI: RSDP 00000000000fa320 00024 (v02 ACPIAM)
ACPI: XSDT 00000000d7e90100 00084 (v01 SMCI 20100909 MSFT 00000097)
ACPI: FACP 00000000d7e90290 000F4 (v03 090910 FACP2028 20100909 MSFT 00000097)
ACPI: DSDT 00000000d7e90670 06E54 (v01 1BC11 1BC11000 00000000 INTL 20051117)
ACPI: FACS 00000000d7eb4000 00040
ACPI: APIC 00000000d7e90390 00118 (v01 090910 APIC2028 20100909 MSFT 00000097)
ACPI: MCFG 00000000d7e904b0 0003C (v01 090910 OEMMCFG 20100909 MSFT 00000097)
ACPI: OEMB 00000000d7eb4040 000BC (v01 090910 OEMB2028 20100909 MSFT 00000097)
ACPI: HPET 00000000d7e9a670 00038 (v01 090910 OEMHPET 20100909 MSFT 00000097)
ACPI: SRAT 00000000d7e9a6b0 00190 (v02 AMD F10 00000001 AMD 00000001)
ACPI: SLIT 00000000d7e9a840 00030 (v01 AMD F10 00000001 AMD 00000001)
ACPI: SSDT 00000000d7e9a870 01E48 (v01 A M I POWERNOW 00000001 AMD 00000001)
ACPI: EINJ 00000000d7e9c6c0 00130 (v01 AMIER AMI_EINJ 20100909 MSFT 00000097)
ACPI: BERT 00000000d7e9c850 00030 (v01 AMIER AMI_BERT 20100909 MSFT 00000097)
ACPI: ERST 00000000d7e9c880 001B0 (v01 AMIER AMI_ERST 20100909 MSFT 00000097)
ACPI: HEST 00000000d7e9ca30 000A8 (v01 AMIER ABC_HEST 20100909 MSFT 00000097)
ACPI: Local APIC address 0xfee00000
SRAT: PXM 0 -> APIC 0x10 -> Node 0
SRAT: PXM 0 -> APIC 0x11 -> Node 0
SRAT: PXM 0 -> APIC 0x12 -> Node 0
SRAT: PXM 0 -> APIC 0x13 -> Node 0
SRAT: PXM 0 -> APIC 0x14 -> Node 0
SRAT: PXM 0 -> APIC 0x15 -> Node 0
SRAT: PXM 1 -> APIC 0x16 -> Node 1
SRAT: PXM 1 -> APIC 0x17 -> Node 1
SRAT: PXM 1 -> APIC 0x18 -> Node 1
SRAT: PXM 1 -> APIC 0x19 -> Node 1
SRAT: PXM 1 -> APIC 0x1a -> Node 1
SRAT: PXM 1 -> APIC 0x1b -> Node 1
SRAT: Node 0 PXM 0 0-a0000
SRAT: Node 0 PXM 0 100000-d8000000
SRAT: Node 0 PXM 0 100000000-228000000
SRAT: Node 1 PXM 1 228000000-428000000
NUMA: Initialized distance table, cnt=2
NUMA: Node 0 [0,a0000) + [100000,d8000000) -> [0,d8000000)
NUMA: Node 0 [0,d8000000) + [100000000,228000000) -> [0,228000000)
NUMA: Allocated memnodemap from 427fffec0 - 428000000
NUMA: Using 27 for the hash shift.
Initmem setup node 0 0000000000000000-0000000228000000
NODE_DATA [0000000227fd9000 - 0000000227ffffff]
Initmem setup node 1 0000000228000000-0000000428000000
NODE_DATA [0000000427fd7000 - 0000000427ffdfff]
[ffffea00078c0000-ffffea00079fffff] potential offnode page_structs
[ffffea0000000000-ffffea00079fffff] PMD -> [ffff88021fe00000-ffff880226ffffff] on node 0
[ffffea0007a00000-ffffea000e9fffff] PMD -> [ffff88041f600000-ffff8804265fffff] on node 1
Zone PFN ranges:
DMA 0x00000010 -> 0x00001000
DMA32 0x00001000 -> 0x00100000
Normal 0x00100000 -> 0x00428000
Movable zone start PFN for each node
early_node_map[4] active PFN ranges
0: 0x00000010 -> 0x0000009d
0: 0x00000100 -> 0x000d7e80
0: 0x00100000 -> 0x00228000
1: 0x00228000 -> 0x00428000
On node 0 totalpages: 2096653
DMA zone: 56 pages used for memmap
DMA zone: 5 pages reserved
DMA zone: 3920 pages, LIFO batch:0
DMA32 zone: 14280 pages used for memmap
DMA32 zone: 865976 pages, LIFO batch:31
Normal zone: 16576 pages used for memmap
Normal zone: 1195840 pages, LIFO batch:31
On node 1 totalpages: 2097152
Normal zone: 28672 pages used for memmap
Normal zone: 2068480 pages, LIFO batch:31
ACPI: PM-Timer IO Port: 0x808
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x10] enabled)
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x11] enabled)
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x12] enabled)
ACPI: LAPIC (acpi_id[0x04] lapic_id[0x13] enabled)
ACPI: LAPIC (acpi_id[0x05] lapic_id[0x14] enabled)
ACPI: LAPIC (acpi_id[0x06] lapic_id[0x15] enabled)
ACPI: LAPIC (acpi_id[0x07] lapic_id[0x16] enabled)
ACPI: LAPIC (acpi_id[0x08] lapic_id[0x17] enabled)
ACPI: LAPIC (acpi_id[0x09] lapic_id[0x18] enabled)
ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x19] enabled)
ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x1a] enabled)
ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x1b] enabled)
ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x8c] disabled)
ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x8d] disabled)
ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x8e] disabled)
ACPI: LAPIC (acpi_id[0x10] lapic_id[0x8f] disabled)
ACPI: LAPIC (acpi_id[0x11] lapic_id[0x90] disabled)
ACPI: LAPIC (acpi_id[0x12] lapic_id[0x91] disabled)
ACPI: LAPIC (acpi_id[0x13] lapic_id[0x92] disabled)
ACPI: LAPIC (acpi_id[0x14] lapic_id[0x93] disabled)
ACPI: LAPIC (acpi_id[0x15] lapic_id[0x94] disabled)
ACPI: LAPIC (acpi_id[0x16] lapic_id[0x95] disabled)
ACPI: LAPIC (acpi_id[0x17] lapic_id[0x96] disabled)
ACPI: LAPIC (acpi_id[0x18] lapic_id[0x97] disabled)
ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x00] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 0, version 33, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Using ACPI (MADT) for SMP configuration information
ACPI: HPET id: 0x8300 base: 0xfed00000
SMP: Allowing 24 CPUs, 12 hotplug CPUs
nr_irqs_gsi: 40
Allocating PCI resources starting at f0000000 (gap: f0000000:fe00000)
Booting paravirtualized kernel on bare hardware
setup_percpu: NR_CPUS:4096 nr_cpumask_bits:24 nr_cpu_ids:24 nr_node_ids:2
PERCPU: Embedded 29 pages/cpu @ffff880227c00000 s89280 r8192 d21312 u131072
pcpu-alloc: s89280 r8192 d21312 u131072 alloc=1*2097152
pcpu-alloc: [0] 00 01 02 03 04 05 12 14 16 18 20 22 -- -- -- --
pcpu-alloc: [1] 06 07 08 09 10 11 13 15 17 19 21 23 -- -- -- --
Built 2 zonelists in Zone order, mobility grouping on. Total pages: 4134216
Policy zone: Normal
Kernel command line: ro root=/dev/vg00/lv06 console=ttyS2,115200 hugepages=4096 nohalt
PID hash table entries: 4096 (order: 3, 32768 bytes)
Checking aperture...
No AGP bridge found
Node 0: aperture @ 4000000 size 32 MB
Aperture pointing to e820 RAM. Ignoring.
Your BIOS doesn't leave a aperture memory hole
Please enable the IOMMU option in the BIOS setup
This costs you 64 MB of RAM
Mapping aperture over 65536 KB of RAM @ c0000000
Memory: 16381060k/17432576k available (4511k kernel code, 657356k absent, 394160k reserved, 7763k data, 1476k init)
Hierarchical RCU implementation.
RCU-based detection of stalled CPUs is disabled.
NR_IRQS:262400 nr_irqs:872 16
Extended CMOS year: 2000
Console: colour VGA+ 80x25
console [ttyS2] enabled
hpet clockevent registered
Fast TSC calibration using PIT
Detected 2200.130 MHz processor.
Calibrating delay loop (skipped), value calculated using timer frequency.. 4400.26 BogoMIPS (lpj=2200130)
pid_max: default: 32768 minimum: 301
Security Framework initialized
Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes)
Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes)
Mount-cache hash table entries: 256
tseg: 00d7f00000
CPU: Physical Processor ID: 0
CPU: Processor Core ID: 0
mce: CPU supports 6 MCE banks
ACPI: Core revision 20110316
ftrace: allocating 17729 entries in 70 pages
Setting APIC routing to physical flat
..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
CPU0: AMD Opteron(tm) Processor 6174 stepping 01
Performance Events: AMD PMU driver.
... version: 0
... bit width: 48
... generic registers: 4
... value mask: 0000ffffffffffff
... max period: 00007fffffffffff
... fixed-purpose events: 0
... event mask: 000000000000000f
Booting Node 0, Processors #1
smpboot cpu 1: start_ip = 98000
#2
smpboot cpu 2: start_ip = 98000
#3
smpboot cpu 3: start_ip = 98000
#4
smpboot cpu 4: start_ip = 98000
#5
smpboot cpu 5: start_ip = 98000
Ok.
Booting Node 1, Processors #6
smpboot cpu 6: start_ip = 98000
#7
smpboot cpu 7: start_ip = 98000
#8
smpboot cpu 8: start_ip = 98000
#9
smpboot cpu 9: start_ip = 98000
#10
smpboot cpu 10: start_ip = 98000
#11
smpboot cpu 11: start_ip = 98000
Brought up 12 CPUs
Total of 12 processors activated (52804.99 BogoMIPS).
devtmpfs: initialized
print_constraints: dummy:
NET: Registered protocol family 16
node 0 link 3: io port [5000, efff]
TOM: 00000000d8000000 aka 3456M
Fam 10h mmconf [e0000000, efffffff]
node 0 link 3: mmio [db000000, dfffffff]
node 0 link 3: mmio [a0000, bffff]
node 0 link 3: mmio [f0000000, ffffffff]
TOM2: 0000000428000000 aka 17024M
bus: [00, 0c] on node 0 link 3
bus: 00 index 0 [io 0x0000-0xffff]
bus: 00 index 1 [mem 0xd8000000-0xdfffffff]
bus: 00 index 2 [mem 0x000a0000-0x000bffff]
bus: 00 index 3 [mem 0xf0000000-0xffffffff]
bus: 00 index 4 [mem 0x428000000-0xfcffffffff]
Extended Config Space enabled on 2 nodes
ACPI: bus type pci registered
PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
PCI: Using configuration type 1 for base access
bio: create slab <bio-0> at 0
ACPI: EC: Look up EC in DSDT
\_SB_:_OSC evaluation returned wrong type
_OSC request data:1 7
ACPI: Executed 4 blocks of module-level executable AML code
ACPI: Interpreter enabled
ACPI: (supports S0 S1 S5)
ACPI: Using IOAPIC for interrupt routing
ACPI: No dock devices found.
PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-0c])
pci_root PNP0A08:00: host bridge window [io 0x0000-0x03af]
pci_root PNP0A08:00: host bridge window [io 0x03e0-0x0cf7]
pci_root PNP0A08:00: host bridge window [io 0x03b0-0x03bb]
pci_root PNP0A08:00: host bridge window [io 0x03c0-0x03df]
pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff]
pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff]
pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000dffff]
pci_root PNP0A08:00: host bridge window [mem 0xde000000-0xdfffffff]
pci_root PNP0A08:00: host bridge window [mem 0xdb000000-0xddffffff]
pci_root PNP0A08:00: host bridge window [mem 0xfed40000-0xfed44fff]
pci 0000:00:00.0: [1002:5a10] type 0 class 0x000600
pci 0000:00:02.0: [1002:5a16] type 1 class 0x000604
pci 0000:00:02.0: PME# supported from D0 D3hot D3cold
pci 0000:00:02.0: PME# disabled
pci 0000:00:04.0: [1002:5a18] type 1 class 0x000604
pci 0000:00:04.0: PME# supported from D0 D3hot D3cold
pci 0000:00:04.0: PME# disabled
pci 0000:00:0b.0: [1002:5a1f] type 1 class 0x000604
pci 0000:00:0b.0: PME# supported from D0 D3hot D3cold
pci 0000:00:0b.0: PME# disabled
pci 0000:00:0c.0: [1002:5a20] type 1 class 0x000604
pci 0000:00:0c.0: PME# supported from D0 D3hot D3cold
pci 0000:00:0c.0: PME# disabled
pci 0000:00:0d.0: [1002:5a1e] type 1 class 0x000604
pci 0000:00:0d.0: PME# supported from D0 D3hot D3cold
pci 0000:00:0d.0: PME# disabled
pci 0000:00:11.0: [1002:4390] type 0 class 0x000101
pci 0000:00:11.0: reg 10: [io 0x9000-0x9007]
pci 0000:00:11.0: reg 14: [io 0x8000-0x8003]
pci 0000:00:11.0: reg 18: [io 0x7000-0x7007]
pci 0000:00:11.0: reg 1c: [io 0x6000-0x6003]
pci 0000:00:11.0: reg 20: [io 0x5000-0x500f]
pci 0000:00:11.0: reg 24: [mem 0xdf6f8400-0xdf6f87ff]
pci 0000:00:11.0: set SATA to AHCI mode
pci 0000:00:12.0: [1002:4397] type 0 class 0x000c03
pci 0000:00:12.0: reg 10: [mem 0xdf6f7000-0xdf6f7fff]
pci 0000:00:12.1: [1002:4398] type 0 class 0x000c03
pci 0000:00:12.1: reg 10: [mem 0xdf6f6000-0xdf6f6fff]
pci 0000:00:12.2: [1002:4396] type 0 class 0x000c03
pci 0000:00:12.2: reg 10: [mem 0xdf6f8800-0xdf6f88ff]
pci 0000:00:12.2: supports D1 D2
pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot
pci 0000:00:12.2: PME# disabled
pci 0000:00:13.0: [1002:4397] type 0 class 0x000c03
pci 0000:00:13.0: reg 10: [mem 0xdf6fa000-0xdf6fafff]
pci 0000:00:13.1: [1002:4398] type 0 class 0x000c03
pci 0000:00:13.1: reg 10: [mem 0xdf6f9000-0xdf6f9fff]
pci 0000:00:13.2: [1002:4396] type 0 class 0x000c03
pci 0000:00:13.2: reg 10: [mem 0xdf6f8c00-0xdf6f8cff]
pci 0000:00:13.2: supports D1 D2
pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot
pci 0000:00:13.2: PME# disabled
pci 0000:00:14.0: [1002:4385] type 0 class 0x000c05
pci 0000:00:14.1: [1002:439c] type 0 class 0x000101
pci 0000:00:14.1: reg 10: [io 0x0000-0x0007]
pci 0000:00:14.1: reg 14: [io 0x0000-0x0003]
pci 0000:00:14.1: reg 18: [io 0x0000-0x0007]
pci 0000:00:14.1: reg 1c: [io 0x0000-0x0003]
pci 0000:00:14.1: reg 20: [io 0xff00-0xff0f]
pci 0000:00:14.3: [1002:439d] type 0 class 0x000601
pci 0000:00:14.4: [1002:4384] type 1 class 0x000604
pci 0000:00:14.5: [1002:4399] type 0 class 0x000c03
pci 0000:00:14.5: reg 10: [mem 0xdf6fb000-0xdf6fbfff]
pci 0000:00:18.0: [1022:1200] type 0 class 0x000600
pci 0000:00:18.1: [1022:1201] type 0 class 0x000600
pci 0000:00:18.2: [1022:1202] type 0 class 0x000600
pci 0000:00:18.3: [1022:1203] type 0 class 0x000600
pci 0000:00:18.4: [1022:1204] type 0 class 0x000600
pci 0000:00:19.0: [1022:1200] type 0 class 0x000600
pci 0000:00:19.1: [1022:1201] type 0 class 0x000600
pci 0000:00:19.2: [1022:1202] type 0 class 0x000600
pci 0000:00:19.3: [1022:1203] type 0 class 0x000600
pci 0000:00:19.4: [1022:1204] type 0 class 0x000600
pci 0000:09:00.0: [111d:8018] type 1 class 0x000604
pci 0000:09:00.0: PME# supported from D0 D3hot D3cold
pci 0000:09:00.0: PME# disabled
pci 0000:00:02.0: PCI bridge to [bus 09-0c]
pci 0000:00:02.0: bridge window [io 0xd000-0xefff]
pci 0000:00:02.0: bridge window [mem 0xdfe00000-0xdfffffff]
pci 0000:00:02.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:0a:02.0: [111d:8018] type 1 class 0x000604
pci 0000:0a:02.0: PME# supported from D0 D3hot D3cold
pci 0000:0a:02.0: PME# disabled
pci 0000:0a:04.0: [111d:8018] type 1 class 0x000604
pci 0000:0a:04.0: PME# supported from D0 D3hot D3cold
pci 0000:0a:04.0: PME# disabled
pci 0000:09:00.0: PCI bridge to [bus 0a-0c]
pci 0000:09:00.0: bridge window [io 0xd000-0xefff]
pci 0000:09:00.0: bridge window [mem 0xdfe00000-0xdfffffff]
pci 0000:09:00.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:0c:00.0: [8086:10bc] type 0 class 0x000200
pci 0000:0c:00.0: reg 10: [mem 0xdffe0000-0xdfffffff]
pci 0000:0c:00.0: reg 14: [mem 0xdffc0000-0xdffdffff]
pci 0000:0c:00.0: reg 18: [io 0xe800-0xe81f]
pci 0000:0c:00.0: reg 30: [mem 0xdffa0000-0xdffbffff pref]
pci 0000:0c:00.0: PME# supported from D0 D3hot D3cold
pci 0000:0c:00.0: PME# disabled
pci 0000:0c:00.1: [8086:10bc] type 0 class 0x000200
pci 0000:0c:00.1: reg 10: [mem 0xdff80000-0xdff9ffff]
pci 0000:0c:00.1: reg 14: [mem 0xdff60000-0xdff7ffff]
pci 0000:0c:00.1: reg 18: [io 0xe400-0xe41f]
pci 0000:0c:00.1: reg 30: [mem 0xdff40000-0xdff5ffff pref]
pci 0000:0c:00.1: PME# supported from D0 D3hot D3cold
pci 0000:0c:00.1: PME# disabled
pci 0000:0c:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force'
pci 0000:0a:02.0: PCI bridge to [bus 0c-0c]
pci 0000:0a:02.0: bridge window [io 0xe000-0xefff]
pci 0000:0a:02.0: bridge window [mem 0xdff00000-0xdfffffff]
pci 0000:0a:02.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:0b:00.0: [8086:10bc] type 0 class 0x000200
pci 0000:0b:00.0: reg 10: [mem 0xdfee0000-0xdfefffff]
pci 0000:0b:00.0: reg 14: [mem 0xdfec0000-0xdfedffff]
pci 0000:0b:00.0: reg 18: [io 0xd800-0xd81f]
pci 0000:0b:00.0: reg 30: [mem 0xdfea0000-0xdfebffff pref]
pci 0000:0b:00.0: PME# supported from D0 D3hot
pci 0000:0b:00.0: PME# disabled
pci 0000:0b:00.1: [8086:10bc] type 0 class 0x000200
pci 0000:0b:00.1: reg 10: [mem 0xdfe80000-0xdfe9ffff]
pci 0000:0b:00.1: reg 14: [mem 0xdfe60000-0xdfe7ffff]
pci 0000:0b:00.1: reg 18: [io 0xd400-0xd41f]
pci 0000:0b:00.1: reg 30: [mem 0xdfe40000-0xdfe5ffff pref]
pci 0000:0b:00.1: PME# supported from D0 D3hot
pci 0000:0b:00.1: PME# disabled
pci 0000:0b:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force'
pci 0000:0a:04.0: PCI bridge to [bus 0b-0b]
pci 0000:0a:04.0: bridge window [io 0xd000-0xdfff]
pci 0000:0a:04.0: bridge window [mem 0xdfe00000-0xdfefffff]
pci 0000:0a:04.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:08:00.0: [8086:105e] type 0 class 0x000200
pci 0000:08:00.0: reg 10: [mem 0xdfde0000-0xdfdfffff]
pci 0000:08:00.0: reg 14: [mem 0xdfdc0000-0xdfddffff]
pci 0000:08:00.0: reg 18: [io 0xc800-0xc81f]
pci 0000:08:00.0: reg 30: [mem 0xdfda0000-0xdfdbffff pref]
pci 0000:08:00.0: PME# supported from D0 D3hot D3cold
pci 0000:08:00.0: PME# disabled
pci 0000:08:00.1: [8086:105e] type 0 class 0x000200
pci 0000:08:00.1: reg 10: [mem 0xdfd80000-0xdfd9ffff]
pci 0000:08:00.1: reg 14: [mem 0xdfd60000-0xdfd7ffff]
pci 0000:08:00.1: reg 18: [io 0xc400-0xc41f]
pci 0000:08:00.1: reg 30: [mem 0xdfd40000-0xdfd5ffff pref]
pci 0000:08:00.1: PME# supported from D0 D3hot D3cold
pci 0000:08:00.1: PME# disabled
pci 0000:08:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force'
pci 0000:00:04.0: PCI bridge to [bus 08-08]
pci 0000:00:04.0: bridge window [io 0xc000-0xcfff]
pci 0000:00:04.0: bridge window [mem 0xdfd00000-0xdfdfffff]
pci 0000:00:04.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:04:00.0: [111d:806a] type 1 class 0x000604
pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
pci 0000:04:00.0: PME# disabled
pci 0000:00:0b.0: PCI bridge to [bus 04-07]
pci 0000:00:0b.0: bridge window [io 0xf000-0x0000] (disabled)
pci 0000:00:0b.0: bridge window [mem 0xdf900000-0xdfcfffff]
pci 0000:00:0b.0: bridge window [mem 0xdc000000-0xddffffff 64bit pref]
pci 0000:05:02.0: [111d:806a] type 1 class 0x000604
pci 0000:05:02.0: PME# supported from D0 D3hot D3cold
pci 0000:05:02.0: PME# disabled
pci 0000:05:04.0: [111d:806a] type 1 class 0x000604
pci 0000:05:04.0: PME# supported from D0 D3hot D3cold
pci 0000:05:04.0: PME# disabled
pci 0000:04:00.0: PCI bridge to [bus 05-07]
pci 0000:04:00.0: bridge window [io 0xf000-0x0000] (disabled)
pci 0000:04:00.0: bridge window [mem 0xdf900000-0xdfcfffff]
pci 0000:04:00.0: bridge window [mem 0xdc000000-0xddffffff 64bit pref]
pci 0000:07:00.0: [14c1:0008] type 0 class 0x000200
pci 0000:07:00.0: reg 10: [mem 0xdd000000-0xddffffff 64bit pref]
pci 0000:07:00.0: reg 18: [mem 0xdfc00000-0xdfcfffff 64bit]
pci 0000:07:00.0: reg 30: [mem 0xdfb80000-0xdfbfffff pref]
pci 0000:05:02.0: PCI bridge to [bus 07-07]
pci 0000:05:02.0: bridge window [io 0xf000-0x0000] (disabled)
pci 0000:05:02.0: bridge window [mem 0xdfb00000-0xdfcfffff]
pci 0000:05:02.0: bridge window [mem 0xdd000000-0xddffffff 64bit pref]
pci 0000:06:00.0: [14c1:0008] type 0 class 0x000200
pci 0000:06:00.0: reg 10: [mem 0xdc000000-0xdcffffff 64bit pref]
pci 0000:06:00.0: reg 18: [mem 0xdfa00000-0xdfafffff 64bit]
pci 0000:06:00.0: reg 30: [mem 0xdf980000-0xdf9fffff pref]
pci 0000:05:04.0: PCI bridge to [bus 06-06]
pci 0000:05:04.0: bridge window [io 0xf000-0x0000] (disabled)
pci 0000:05:04.0: bridge window [mem 0xdf900000-0xdfafffff]
pci 0000:05:04.0: bridge window [mem 0xdc000000-0xdcffffff 64bit pref]
pci 0000:03:00.0: [1000:0072] type 0 class 0x000107
pci 0000:03:00.0: reg 10: [io 0xb000-0xb0ff]
pci 0000:03:00.0: reg 14: [mem 0xdf83c000-0xdf83ffff 64bit]
pci 0000:03:00.0: reg 1c: [mem 0xdf840000-0xdf87ffff 64bit]
pci 0000:03:00.0: reg 30: [mem 0xdf880000-0xdf8fffff pref]
pci 0000:03:00.0: supports D1 D2
pci 0000:00:0c.0: PCI bridge to [bus 03-03]
pci 0000:00:0c.0: bridge window [io 0xb000-0xbfff]
pci 0000:00:0c.0: bridge window [mem 0xdf800000-0xdf8fffff]
pci 0000:00:0c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:02:00.0: [8086:10c9] type 0 class 0x000200
pci 0000:02:00.0: reg 10: [mem 0xdf7e0000-0xdf7fffff]
pci 0000:02:00.0: reg 14: [mem 0xdf7c0000-0xdf7dffff]
pci 0000:02:00.0: reg 18: [io 0xa800-0xa81f]
pci 0000:02:00.0: reg 1c: [mem 0xdf79c000-0xdf79ffff]
pci 0000:02:00.0: reg 30: [mem 0xdf7a0000-0xdf7bffff pref]
pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
pci 0000:02:00.0: PME# disabled
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: [8086:10c9] type 0 class 0x000200
pci 0000:02:00.1: reg 10: [mem 0xdf760000-0xdf77ffff]
pci 0000:02:00.1: reg 14: [mem 0xdf740000-0xdf75ffff]
pci 0000:02:00.1: reg 18: [io 0xa400-0xa41f]
pci 0000:02:00.1: reg 1c: [mem 0xdf71c000-0xdf71ffff]
pci 0000:02:00.1: reg 30: [mem 0xdf720000-0xdf73ffff pref]
pci 0000:02:00.1: PME# supported from D0 D3hot D3cold
pci 0000:02:00.1: PME# disabled
pci 0000:02:00.1: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:00:0d.0: PCI bridge to [bus 02-02]
pci 0000:00:0d.0: bridge window [io 0xa000-0xafff]
pci 0000:00:0d.0: bridge window [mem 0xdf700000-0xdf7fffff]
pci 0000:00:0d.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
pci 0000:01:04.0: [102b:0532] type 0 class 0x000300
pci 0000:01:04.0: reg 10: [mem 0xdb000000-0xdbffffff pref]
pci 0000:01:04.0: reg 14: [mem 0xde7fc000-0xde7fffff]
pci 0000:01:04.0: reg 18: [mem 0xde800000-0xdeffffff]
pci 0000:00:14.4: PCI bridge to [bus 01-01] (subtractive decode)
pci 0000:00:14.4: bridge window [io 0xf000-0x0000] (disabled)
pci 0000:00:14.4: bridge window [mem 0xde700000-0xdeffffff]
pci 0000:00:14.4: bridge window [mem 0xdb000000-0xdbffffff pref]
pci 0000:00:14.4: bridge window [io 0x0000-0x03af] (subtractive decode)
pci 0000:00:14.4: bridge window [io 0x03e0-0x0cf7] (subtractive decode)
pci 0000:00:14.4: bridge window [io 0x03b0-0x03bb] (subtractive decode)
pci 0000:00:14.4: bridge window [io 0x03c0-0x03df] (subtractive decode)
pci 0000:00:14.4: bridge window [io 0x0d00-0xffff] (subtractive decode)
pci 0000:00:14.4: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
pci 0000:00:14.4: bridge window [mem 0x000d0000-0x000dffff] (subtractive decode)
pci 0000:00:14.4: bridge window [mem 0xde000000-0xdfffffff] (subtractive decode)
pci 0000:00:14.4: bridge window [mem 0xdb000000-0xddffffff] (subtractive decode)
pci 0000:00:14.4: bridge window [mem 0xfed40000-0xfed44fff] (subtractive decode)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PC02._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PC04._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PC0B._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0PC._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PC0C._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PC0D._PRT]
pci0000:00: Requesting ACPI _OSC control (0x1d)
pci0000:00: ACPI _OSC control (0x1d) granted
ACPI: PCI Interrupt Link [LNKA] (IRQs 4 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 4 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 4 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 4 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 4 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKF] (IRQs 4 7 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKG] (IRQs 4 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 4 7 10 11 12 14 15) *0, disabled.
vgaarb: device added: PCI:0000:01:04.0,decodes=io+mem,owns=io+mem,locks=none
vgaarb: loaded
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
PCI: pci_cache_line_size set to 64 bytes
reserve RAM buffer: 000000000009dc00 - 000000000009ffff
reserve RAM buffer: 00000000d7e80000 - 00000000d7ffffff
NetLabel: Initializing
NetLabel: domain hash size = 128
NetLabel: protocols = UNLABELED CIPSOv4
NetLabel: unlabeled traffic allowed by default
hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0
hpet0: 4 comparators, 32-bit 14.318180 MHz counter
Switching to clocksource hpet
Switched to NOHz mode on CPU #0
Switched to NOHz mode on CPU #6
Switched to NOHz mode on CPU #1
Switched to NOHz mode on CPU #8
Switched to NOHz mode on CPU #5
Switched to NOHz mode on CPU #3
Switched to NOHz mode on CPU #7
Switched to NOHz mode on CPU #4
Switched to NOHz mode on CPU #2
Switched to NOHz mode on CPU #9
Switched to NOHz mode on CPU #10
Switched to NOHz mode on CPU #11
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp 00:00: [bus 00-0c]
pnp 00:00: [io 0x0cf8-0x0cff]
pnp 00:00: [io 0x0000-0x03af window]
pnp 00:00: [io 0x03e0-0x0cf7 window]
pnp 00:00: [io 0x03b0-0x03bb window]
pnp 00:00: [io 0x03c0-0x03df window]
pnp 00:00: [io 0x0d00-0xffff window]
pnp 00:00: [mem 0x000a0000-0x000bffff window]
pnp 00:00: [mem 0x000d0000-0x000dffff window]
pnp 00:00: [mem 0xde000000-0xdfffffff window]
pnp 00:00: [mem 0xdb000000-0xddffffff window]
pnp 00:00: [mem 0xfed40000-0xfed44fff]
pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active)
pnp 00:01: [mem 0x00000000-0xffffffffffffffff disabled]
pnp 00:01: [mem 0x00000000-0xffffffffffffffff disabled]
system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:02: [mem 0x00000000-0xffffffffffffffff disabled]
system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:03: [dma 4]
pnp 00:03: [io 0x0000-0x000f]
pnp 00:03: [io 0x0081-0x0083]
pnp 00:03: [io 0x0087]
pnp 00:03: [io 0x0089-0x008b]
pnp 00:03: [io 0x008f]
pnp 00:03: [io 0x00c0-0x00df]
pnp 00:03: Plug and Play ACPI device, IDs PNP0200 (active)
pnp 00:04: [io 0x0070-0x0071]
pnp 00:04: [irq 8]
pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active)
pnp 00:05: [io 0x0061]
pnp 00:05: Plug and Play ACPI device, IDs PNP0800 (active)
pnp 00:06: [io 0x00f0-0x00ff]
pnp 00:06: [irq 13]
pnp 00:06: Plug and Play ACPI device, IDs PNP0c04 (active)
pnp 00:07: [mem 0xfed00000-0xfed003ff]
pnp 00:07: Plug and Play ACPI device, IDs PNP0103 (active)
pnp 00:08: [io 0x0060]
pnp 00:08: [io 0x0064]
pnp 00:08: [mem 0xfec00000-0xfec00fff]
pnp 00:08: [mem 0xfee00000-0xfee00fff]
system 00:08: [mem 0xfec00000-0xfec00fff] could not be reserved
system 00:08: [mem 0xfee00000-0xfee00fff] has been reserved
system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:09: [io 0x0010-0x001f]
pnp 00:09: [io 0x0022-0x003f]
pnp 00:09: [io 0x0062-0x0063]
pnp 00:09: [io 0x0065-0x006f]
pnp 00:09: [io 0x0072-0x007f]
pnp 00:09: [io 0x0080]
pnp 00:09: [io 0x0084-0x0086]
pnp 00:09: [io 0x0088]
pnp 00:09: [io 0x008c-0x008e]
pnp 00:09: [io 0x0090-0x009f]
pnp 00:09: [io 0x00a2-0x00bf]
pnp 00:09: [io 0x00b1]
pnp 00:09: [io 0x00e0-0x00ef]
pnp 00:09: [io 0x0ca2-0x0ca3]
pnp 00:09: [io 0x0550-0x0551]
pnp 00:09: [io 0x04d0-0x04d1]
pnp 00:09: [io 0x040b]
pnp 00:09: [io 0x04d6]
pnp 00:09: [io 0x0c00-0x0c01]
pnp 00:09: [io 0x0c14]
pnp 00:09: [io 0x0c50-0x0c51]
pnp 00:09: [io 0x0c52]
pnp 00:09: [io 0x0c6c]
pnp 00:09: [io 0x0c6f]
pnp 00:09: [io 0x0cd0-0x0cd1]
pnp 00:09: [io 0x0cd2-0x0cd3]
pnp 00:09: [io 0x0cd4-0x0cd5]
pnp 00:09: [io 0x0cd6-0x0cd7]
pnp 00:09: [io 0x0cd8-0x0cdf]
pnp 00:09: [io 0x0800-0x089f]
pnp 00:09: [io 0x0000-0xffffffffffffffff disabled]
pnp 00:09: [io 0x0b00-0x0b0f]
pnp 00:09: [io 0x0b20-0x0b3f]
pnp 00:09: [io 0x0900-0x090f]
pnp 00:09: [io 0x0910-0x091f]
pnp 00:09: [io 0xfe00-0xfefe]
pnp 00:09: [io 0x0060]
pnp 00:09: [io 0x0064]
pnp 00:09: [mem 0xffb80000-0xffbfffff]
pnp 00:09: [mem 0xfec10000-0xfec1001f]
system 00:09: [io 0x0ca2-0x0ca3] has been reserved
system 00:09: [io 0x0550-0x0551] has been reserved
system 00:09: [io 0x04d0-0x04d1] has been reserved
system 00:09: [io 0x040b] has been reserved
system 00:09: [io 0x04d6] has been reserved
system 00:09: [io 0x0c00-0x0c01] has been reserved
system 00:09: [io 0x0c14] has been reserved
system 00:09: [io 0x0c50-0x0c51] has been reserved
system 00:09: [io 0x0c52] has been reserved
system 00:09: [io 0x0c6c] has been reserved
system 00:09: [io 0x0c6f] has been reserved
system 00:09: [io 0x0cd0-0x0cd1] has been reserved
system 00:09: [io 0x0cd2-0x0cd3] has been reserved
system 00:09: [io 0x0cd4-0x0cd5] has been reserved
system 00:09: [io 0x0cd6-0x0cd7] has been reserved
system 00:09: [io 0x0cd8-0x0cdf] has been reserved
system 00:09: [io 0x0800-0x089f] has been reserved
system 00:09: [io 0x0b00-0x0b0f] has been reserved
system 00:09: [io 0x0b20-0x0b3f] has been reserved
system 00:09: [io 0x0900-0x090f] has been reserved
system 00:09: [io 0x0910-0x091f] has been reserved
system 00:09: [io 0xfe00-0xfefe] has been reserved
system 00:09: [mem 0xffb80000-0xffbfffff] has been reserved
system 00:09: [mem 0xfec10000-0xfec1001f] has been reserved
system 00:09: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:0a: [io 0x03f8-0x03ff]
pnp 00:0a: [irq 4]
pnp 00:0a: [dma 0 disabled]
pnp 00:0a: Plug and Play ACPI device, IDs PNP0501 (active)
pnp 00:0b: [io 0x02f8-0x02ff]
pnp 00:0b: [irq 3]
pnp 00:0b: [dma 0 disabled]
pnp 00:0b: Plug and Play ACPI device, IDs PNP0501 (active)
pnp 00:0c: [io 0x0000-0xffffffffffffffff disabled]
pnp 00:0c: [io 0x0a00-0x0a0f]
pnp 00:0c: [io 0x0a10-0x0a1f]
system 00:0c: [io 0x0a00-0x0a0f] has been reserved
system 00:0c: [io 0x0a10-0x0a1f] has been reserved
system 00:0c: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:0d: [io 0x03e8-0x03ef]
pnp 00:0d: [irq 7]
pnp 00:0d: [dma 0 disabled]
pnp 00:0d: Plug and Play ACPI device, IDs PNP0501 (active)
pnp 00:0e: [io 0x164e-0x164f]
pnp 00:0e: [io 0x0000-0xffffffffffffffff disabled]
system 00:0e: [io 0x164e-0x164f] has been reserved
system 00:0e: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:0f: [mem 0xe0000000-0xefffffff]
system 00:0f: [mem 0xe0000000-0xefffffff] has been reserved
system 00:0f: Plug and Play ACPI device, IDs PNP0c02 (active)
pnp 00:10: [mem 0x000c0000-0x000cffff]
pnp 00:10: [mem 0x000e0000-0x000fffff]
pnp 00:10: [mem 0xfec00000-0xffffffff]
system 00:10: [mem 0x000c0000-0x000cffff] has been reserved
system 00:10: [mem 0x000e0000-0x000fffff] could not be reserved
system 00:10: [mem 0xfec00000-0xffffffff] could not be reserved
system 00:10: Plug and Play ACPI device, IDs PNP0c01 (active)
pnp: PnP ACPI: found 17 devices
ACPI: ACPI bus type pnp unregistered
pci 0000:0a:02.0: PCI bridge to [bus 0c-0c]
pci 0000:0a:02.0: bridge window [io 0xe000-0xefff]
pci 0000:0a:02.0: bridge window [mem 0xdff00000-0xdfffffff]
pci 0000:0a:02.0: bridge window [mem pref disabled]
pci 0000:0a:04.0: PCI bridge to [bus 0b-0b]
pci 0000:0a:04.0: bridge window [io 0xd000-0xdfff]
pci 0000:0a:04.0: bridge window [mem 0xdfe00000-0xdfefffff]
pci 0000:0a:04.0: bridge window [mem pref disabled]
pci 0000:09:00.0: PCI bridge to [bus 0a-0c]
pci 0000:09:00.0: bridge window [io 0xd000-0xefff]
pci 0000:09:00.0: bridge window [mem 0xdfe00000-0xdfffffff]
pci 0000:09:00.0: bridge window [mem pref disabled]
pci 0000:00:02.0: PCI bridge to [bus 09-0c]
pci 0000:00:02.0: bridge window [io 0xd000-0xefff]
pci 0000:00:02.0: bridge window [mem 0xdfe00000-0xdfffffff]
pci 0000:00:02.0: bridge window [mem pref disabled]
pci 0000:00:04.0: PCI bridge to [bus 08-08]
pci 0000:00:04.0: bridge window [io 0xc000-0xcfff]
pci 0000:00:04.0: bridge window [mem 0xdfd00000-0xdfdfffff]
pci 0000:00:04.0: bridge window [mem pref disabled]
pci 0000:05:02.0: PCI bridge to [bus 07-07]
pci 0000:05:02.0: bridge window [io disabled]
pci 0000:05:02.0: bridge window [mem 0xdfb00000-0xdfcfffff]
pci 0000:05:02.0: bridge window [mem 0xdd000000-0xddffffff 64bit pref]
pci 0000:05:04.0: PCI bridge to [bus 06-06]
pci 0000:05:04.0: bridge window [io disabled]
pci 0000:05:04.0: bridge window [mem 0xdf900000-0xdfafffff]
pci 0000:05:04.0: bridge window [mem 0xdc000000-0xdcffffff 64bit pref]
pci 0000:04:00.0: PCI bridge to [bus 05-07]
pci 0000:04:00.0: bridge window [io disabled]
pci 0000:04:00.0: bridge window [mem 0xdf900000-0xdfcfffff]
pci 0000:04:00.0: bridge window [mem 0xdc000000-0xddffffff 64bit pref]
pci 0000:00:0b.0: PCI bridge to [bus 04-07]
pci 0000:00:0b.0: bridge window [io disabled]
pci 0000:00:0b.0: bridge window [mem 0xdf900000-0xdfcfffff]
pci 0000:00:0b.0: bridge window [mem 0xdc000000-0xddffffff 64bit pref]
pci 0000:00:0c.0: PCI bridge to [bus 03-03]
pci 0000:00:0c.0: bridge window [io 0xb000-0xbfff]
pci 0000:00:0c.0: bridge window [mem 0xdf800000-0xdf8fffff]
pci 0000:00:0c.0: bridge window [mem pref disabled]
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: BAR 7: can't assign mem (size 0x20000)
pci 0000:02:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.0: BAR 10: can't assign mem (size 0x20000)
pci 0000:02:00.1: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: reg 184: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: BAR 7: can't assign mem (size 0x20000)
pci 0000:02:00.1: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: reg 190: [mem 0x00000000-0x00003fff 64bit]
pci 0000:02:00.1: BAR 10: can't assign mem (size 0x20000)
pci 0000:00:0d.0: PCI bridge to [bus 02-02]
pci 0000:00:0d.0: bridge window [io 0xa000-0xafff]
pci 0000:00:0d.0: bridge window [mem 0xdf700000-0xdf7fffff]
pci 0000:00:0d.0: bridge window [mem pref disabled]
pci 0000:00:14.4: PCI bridge to [bus 01-01]
pci 0000:00:14.4: bridge window [io disabled]
pci 0000:00:14.4: bridge window [mem 0xde700000-0xdeffffff]
pci 0000:00:14.4: bridge window [mem 0xdb000000-0xdbffffff pref]
pci 0000:00:02.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
pci 0000:00:02.0: setting latency timer to 64
pci 0000:09:00.0: setting latency timer to 64
pci 0000:0a:02.0: setting latency timer to 64
pci 0000:0a:04.0: setting latency timer to 64
pci 0000:00:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
pci 0000:00:04.0: setting latency timer to 64
pci 0000:00:0b.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
pci 0000:00:0b.0: setting latency timer to 64
pci 0000:04:00.0: setting latency timer to 64
pci 0000:05:02.0: setting latency timer to 64
pci 0000:05:04.0: setting latency timer to 64
pci 0000:00:0c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
pci 0000:00:0c.0: setting latency timer to 64
pci 0000:00:0d.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
pci 0000:00:0d.0: setting latency timer to 64
pci_bus 0000:00: resource 4 [io 0x0000-0x03af]
pci_bus 0000:00: resource 5 [io 0x03e0-0x0cf7]
pci_bus 0000:00: resource 6 [io 0x03b0-0x03bb]
pci_bus 0000:00: resource 7 [io 0x03c0-0x03df]
pci_bus 0000:00: resource 8 [io 0x0d00-0xffff]
pci_bus 0000:00: resource 9 [mem 0x000a0000-0x000bffff]
pci_bus 0000:00: resource 10 [mem 0x000d0000-0x000dffff]
pci_bus 0000:00: resource 11 [mem 0xde000000-0xdfffffff]
pci_bus 0000:00: resource 12 [mem 0xdb000000-0xddffffff]
pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed44fff]
pci_bus 0000:09: resource 0 [io 0xd000-0xefff]
pci_bus 0000:09: resource 1 [mem 0xdfe00000-0xdfffffff]
pci_bus 0000:0a: resource 0 [io 0xd000-0xefff]
pci_bus 0000:0a: resource 1 [mem 0xdfe00000-0xdfffffff]
pci_bus 0000:0c: resource 0 [io 0xe000-0xefff]
pci_bus 0000:0c: resource 1 [mem 0xdff00000-0xdfffffff]
pci_bus 0000:0b: resource 0 [io 0xd000-0xdfff]
pci_bus 0000:0b: resource 1 [mem 0xdfe00000-0xdfefffff]
pci_bus 0000:08: resource 0 [io 0xc000-0xcfff]
pci_bus 0000:08: resource 1 [mem 0xdfd00000-0xdfdfffff]
pci_bus 0000:04: resource 1 [mem 0xdf900000-0xdfcfffff]
pci_bus 0000:04: resource 2 [mem 0xdc000000-0xddffffff 64bit pref]
pci_bus 0000:05: resource 1 [mem 0xdf900000-0xdfcfffff]
pci_bus 0000:05: resource 2 [mem 0xdc000000-0xddffffff 64bit pref]
pci_bus 0000:07: resource 1 [mem 0xdfb00000-0xdfcfffff]
pci_bus 0000:07: resource 2 [mem 0xdd000000-0xddffffff 64bit pref]
pci_bus 0000:06: resource 1 [mem 0xdf900000-0xdfafffff]
pci_bus 0000:06: resource 2 [mem 0xdc000000-0xdcffffff 64bit pref]
pci_bus 0000:03: resource 0 [io 0xb000-0xbfff]
pci_bus 0000:03: resource 1 [mem 0xdf800000-0xdf8fffff]
pci_bus 0000:02: resource 0 [io 0xa000-0xafff]
pci_bus 0000:02: resource 1 [mem 0xdf700000-0xdf7fffff]
pci_bus 0000:01: resource 1 [mem 0xde700000-0xdeffffff]
pci_bus 0000:01: resource 2 [mem 0xdb000000-0xdbffffff pref]
pci_bus 0000:01: resource 4 [io 0x0000-0x03af]
pci_bus 0000:01: resource 5 [io 0x03e0-0x0cf7]
pci_bus 0000:01: resource 6 [io 0x03b0-0x03bb]
pci_bus 0000:01: resource 7 [io 0x03c0-0x03df]
pci_bus 0000:01: resource 8 [io 0x0d00-0xffff]
pci_bus 0000:01: resource 9 [mem 0x000a0000-0x000bffff]
pci_bus 0000:01: resource 10 [mem 0x000d0000-0x000dffff]
pci_bus 0000:01: resource 11 [mem 0xde000000-0xdfffffff]
pci_bus 0000:01: resource 12 [mem 0xdb000000-0xddffffff]
pci_bus 0000:01: resource 13 [mem 0xfed40000-0xfed44fff]
NET: Registered protocol family 2
IP route cache hash table entries: 524288 (order: 10, 4194304 bytes)
TCP established hash table entries: 524288 (order: 11, 8388608 bytes)
TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
TCP: Hash tables configured (established 524288 bind 65536)
TCP reno registered
UDP hash table entries: 8192 (order: 6, 262144 bytes)
UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes)
NET: Registered protocol family 1
pci 0000:01:04.0: Boot video device
PCI: CLS 64 bytes, default 64
Trying to unpack rootfs image as initramfs...
Freeing initrd memory: 11900k freed
PCI-DMA: Disabling AGP.
PCI-DMA: aperture base @ c0000000 size 65536 KB
PCI-DMA: using GART IOMMU.
PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
HugeTLB registered 2 MB page size, pre-allocated 4096 pages
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
msgmni has been set to 32146
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
pcieport 0000:00:02.0: setting latency timer to 64
pcieport 0000:00:02.0: irq 40 for MSI/MSI-X
pcieport 0000:00:04.0: setting latency timer to 64
pcieport 0000:00:04.0: irq 41 for MSI/MSI-X
pcieport 0000:00:0b.0: setting latency timer to 64
pcieport 0000:00:0b.0: irq 42 for MSI/MSI-X
pcieport 0000:00:0c.0: setting latency timer to 64
pcieport 0000:00:0c.0: irq 43 for MSI/MSI-X
pcieport 0000:00:0d.0: setting latency timer to 64
pcieport 0000:00:0d.0: irq 44 for MSI/MSI-X
pcieport 0000:09:00.0: setting latency timer to 64
pcieport 0000:0a:02.0: setting latency timer to 64
pcieport 0000:0a:02.0: irq 45 for MSI/MSI-X
pcieport 0000:0a:04.0: setting latency timer to 64
pcieport 0000:0a:04.0: irq 46 for MSI/MSI-X
pcieport 0000:04:00.0: setting latency timer to 64
pcieport 0000:05:02.0: setting latency timer to 64
pcieport 0000:05:02.0: irq 47 for MSI/MSI-X
pcieport 0000:05:04.0: setting latency timer to 64
pcieport 0000:05:04.0: irq 48 for MSI/MSI-X
pcieport 0000:00:02.0: Signaling PME through PCIe PME interrupt
pcieport 0000:09:00.0: Signaling PME through PCIe PME interrupt
pcieport 0000:0a:02.0: Signaling PME through PCIe PME interrupt
pci 0000:0c:00.0: Signaling PME through PCIe PME interrupt
pci 0000:0c:00.1: Signaling PME through PCIe PME interrupt
pcieport 0000:0a:04.0: Signaling PME through PCIe PME interrupt
pci 0000:0b:00.0: Signaling PME through PCIe PME interrupt
pci 0000:0b:00.1: Signaling PME through PCIe PME interrupt
pcie_pme 0000:00:02.0:pcie01: service driver pcie_pme loaded
pcieport 0000:00:04.0: Signaling PME through PCIe PME interrupt
pci 0000:08:00.0: Signaling PME through PCIe PME interrupt
pci 0000:08:00.1: Signaling PME through PCIe PME interrupt
pcie_pme 0000:00:04.0:pcie01: service driver pcie_pme loaded
pcieport 0000:00:0b.0: Signaling PME through PCIe PME interrupt
pcieport 0000:04:00.0: Signaling PME through PCIe PME interrupt
pcieport 0000:05:02.0: Signaling PME through PCIe PME interrupt
pci 0000:07:00.0: Signaling PME through PCIe PME interrupt
pcieport 0000:05:04.0: Signaling PME through PCIe PME interrupt
pci 0000:06:00.0: Signaling PME through PCIe PME interrupt
pcie_pme 0000:00:0b.0:pcie01: service driver pcie_pme loaded
pcieport 0000:00:0c.0: Signaling PME through PCIe PME interrupt
pci 0000:03:00.0: Signaling PME through PCIe PME interrupt
pcie_pme 0000:00:0c.0:pcie01: service driver pcie_pme loaded
pcieport 0000:00:0d.0: Signaling PME through PCIe PME interrupt
pci 0000:02:00.0: Signaling PME through PCIe PME interrupt
pci 0000:02:00.1: Signaling PME through PCIe PME interrupt
pcie_pme 0000:00:0d.0:pcie01: service driver pcie_pme loaded
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
pciehp: PCI Express Hot Plug Controller Driver version: 0.4
acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input0
ACPI: Power Button [PWRB]
input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
ACPI: Power Button [PWRF]
ACPI: acpi_idle registered with cpuidle
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
Refined TSC clocksource calibration: 2200.025 MHz.
Switching to clocksource tsc
serial8250: ttyS2 at I/O 0x3e8 (irq = 7) is a 16550A
00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:0b: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:0d: ttyS2 at I/O 0x3e8 (irq = 7) is a 16550A
Non-volatile memory driver v1.3
Linux agpgart interface v0.103
brd: module loaded
loop: module loaded
Fixed MDIO Bus: probed
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci_hcd 0000:00:12.2: PCI INT B -> GSI 17 (level, low) -> IRQ 17
ehci_hcd 0000:00:12.2: EHCI Host Controller
ehci_hcd 0000:00:12.2: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:12.2: applying AMD SB700/SB800/Hudson-2/3 EHCI dummy qh workaround
ehci_hcd 0000:00:12.2: debug port 1
ehci_hcd 0000:00:12.2: irq 17, io mem 0xdf6f8800
ehci_hcd 0000:00:12.2: USB 2.0 started, EHCI 1.00
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.39.4 ehci_hcd
usb usb1: SerialNumber: 0000:00:12.2
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 6 ports detected
ehci_hcd 0000:00:13.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
ehci_hcd 0000:00:13.2: EHCI Host Controller
ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 2
ehci_hcd 0000:00:13.2: applying AMD SB700/SB800/Hudson-2/3 EHCI dummy qh workaround
ehci_hcd 0000:00:13.2: debug port 1
ehci_hcd 0000:00:13.2: irq 19, io mem 0xdf6f8c00
ehci_hcd 0000:00:13.2: USB 2.0 started, EHCI 1.00
usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: EHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.39.4 ehci_hcd
usb usb2: SerialNumber: 0000:00:13.2
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 6 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci_hcd 0000:00:12.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
ohci_hcd 0000:00:12.0: OHCI Host Controller
ohci_hcd 0000:00:12.0: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:12.0: irq 16, io mem 0xdf6f7000
usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: OHCI Host Controller
usb usb3: Manufacturer: Linux 2.6.39.4 ohci_hcd
usb usb3: SerialNumber: 0000:00:12.0
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 3 ports detected
ohci_hcd 0000:00:12.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16
ohci_hcd 0000:00:12.1: OHCI Host Controller
ohci_hcd 0000:00:12.1: new USB bus registered, assigned bus number 4
ohci_hcd 0000:00:12.1: irq 16, io mem 0xdf6f6000
usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb4: Product: OHCI Host Controller
usb usb4: Manufacturer: Linux 2.6.39.4 ohci_hcd
usb usb4: SerialNumber: 0000:00:12.1
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 3 ports detected
ohci_hcd 0000:00:13.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
ohci_hcd 0000:00:13.0: OHCI Host Controller
ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 5
ohci_hcd 0000:00:13.0: irq 18, io mem 0xdf6fa000
usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb5: Product: OHCI Host Controller
usb usb5: Manufacturer: Linux 2.6.39.4 ohci_hcd
usb usb5: SerialNumber: 0000:00:13.0
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 3 ports detected
ohci_hcd 0000:00:13.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18
ohci_hcd 0000:00:13.1: OHCI Host Controller
ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 6
ohci_hcd 0000:00:13.1: irq 18, io mem 0xdf6f9000
usb usb6: New USB device found, idVendor=1d6b, idProduct=0001
usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb6: Product: OHCI Host Controller
usb usb6: Manufacturer: Linux 2.6.39.4 ohci_hcd
usb usb6: SerialNumber: 0000:00:13.1
hub 6-0:1.0: USB hub found
hub 6-0:1.0: 3 ports detected
ohci_hcd 0000:00:14.5: PCI INT C -> GSI 18 (level, low) -> IRQ 18
ohci_hcd 0000:00:14.5: OHCI Host Controller
ohci_hcd 0000:00:14.5: new USB bus registered, assigned bus number 7
ohci_hcd 0000:00:14.5: irq 18, io mem 0xdf6fb000
usb usb7: New USB device found, idVendor=1d6b, idProduct=0001
usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb7: Product: OHCI Host Controller
usb usb7: Manufacturer: Linux 2.6.39.4 ohci_hcd
usb usb7: SerialNumber: 0000:00:14.5
hub 7-0:1.0: USB hub found
hub 7-0:1.0: 2 ports detected
uhci_hcd: USB Universal Host Controller Interface driver
i8042: PNP: No PS/2 controller found. Probing ports directly.
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mousedev: PS/2 mouse device common for all mice
rtc_cmos 00:04: RTC can wake from S4
rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
cpuidle: using governor ladder
cpuidle: using governor menu
EFI Variables Facility v0.08 2004-May-17
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 17
Registering the dns_resolver key type
registered taskstats version 1
IMA: No TPM chip found, activating TPM-bypass!
rtc_cmos 00:04: setting system clock to 2011-10-03 09:10:37 UTC (1317633037)
Initializing network drop monitor service
Freeing unused kernel memory: 1476k freed
Write protecting the kernel read-only data: 10240k
Freeing unused kernel memory: 1612k freed
Freeing unused kernel memory: 1928k freed
dracut: dracut-004-33.2.el6_0
device-mapper: uevent: version 1.0.3
device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com
udev: starting version 147
udevd (160): /proc/160/oom_adj is deprecated, please use /proc/160/oom_score_adj instead.
dracut: Starting plymouth daemon
mpt2sas version 08.100.00.00 loaded
scsi0 : Fusion MPT SAS Host
mpt2sas 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
mpt2sas 0000:03:00.0: setting latency timer to 64
mpt2sas0: 64 BIT PCI BUS DMA ADDRESSING SUPPORTED, total mem (16463928 kB)
mpt2sas 0000:03:00.0: irq 49 for MSI/MSI-X
mpt2sas0: PCI-MSI-X enabled: IRQ 49
mpt2sas0: iomem(0x00000000df83c000), mapped(0xffffc90001878000), size(16384)
mpt2sas0: ioport(0x000000000000b000), size(256)
usb 7-1: new full speed USB device number 2 using ohci_hcd
mpt2sas0: sending diag reset !!
usb 7-1: New USB device found, idVendor=0557, idProduct=2221
usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 7-1: Product: Hermon USB hidmouse Device
usb 7-1: Manufacturer: Winbond Electronics Corp
input: Winbond Electronics Corp Hermon USB hidmouse Device as /devices/pci0000:00/0000:00:14.5/usb7/7-1/7-1:1.0/input/input2
generic-usb 0003:0557:2221.0001: input,hidraw0: USB HID v1.00 Mouse [Winbond Electronics Corp Hermon USB hidmouse Device] on usb-0000:00:14.5-1/input0
input: Winbond Electronics Corp Hermon USB hidmouse Device as /devices/pci0000:00/0000:00:14.5/usb7/7-1/7-1:1.1/input/input3
generic-usb 0003:0557:2221.0002: input,hidraw1: USB HID v1.00 Keyboard [Winbond Electronics Corp Hermon USB hidmouse Device] on usb-0000:00:14.5-1/input1
mpt2sas0: diag reset: SUCCESS
mpt2sas0: Allocated physical memory: size(6835 kB)
mpt2sas0: Current Controller Queue Depth(3034), Max Controller Queue Depth(3167)
mpt2sas0: Scatter Gather Elements per IO(128)
mpt2sas0: LSISAS2008: FWVersion(02.00.50.00), ChipRevision(0x02), BiosVersion(07.01.01.00)
mpt2sas0: Protocol=(Initiator,Target), Capabilities=(Raid,TLR,EEDP,Snapshot Buffer,Diag Trace Buffer,Task Set Full,NCQ)
mpt2sas0: sending port enable !!
mpt2sas0: host_add: handle(0x0001), sas_addr(0x50030480003a2760), phys(8)
mpt2sas0: port enable: SUCCESS
scsi 0:0:0:0: Direct-Access ATA WDC WD3000HLFS-0 4V02 PQ: 0 ANSI: 5
scsi 0:0:0:0: SATA: handle(0x0009), sas_addr(0x4433221100000000), phy(0), device_name(0x4ee0500161d7561b)
scsi 0:0:0:0: SATA: enclosure_logical_id(0x50030480003a2760), slot(0)
scsi 0:0:0:0: atapi(n), ncq(y), asyn_notify(n), smart(y), fua(y), sw_preserve(y)
scsi 0:0:0:0: qdepth(32), tagged(1), simple(0), ordered(0), scsi_level(6), cmd_que(1)
scsi 0:0:1:0: Direct-Access ATA WDC WD20EARS-00S 0A80 PQ: 0 ANSI: 5
scsi 0:0:1:0: SATA: handle(0x000a), sas_addr(0x4433221104000000), phy(4), device_name(0x4ee2500145735934)
scsi 0:0:1:0: SATA: enclosure_logical_id(0x50030480003a2760), slot(4)
scsi 0:0:1:0: atapi(n), ncq(y), asyn_notify(n), smart(y), fua(y), sw_preserve(y)
scsi 0:0:1:0: qdepth(32), tagged(1), simple(0), ordered(0), scsi_level(6), cmd_que(1)
ahci 0000:00:11.0: version 3.0
ahci 0000:00:11.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
ahci 0000:00:11.0: AHCI 0001.0100 32 slots 4 ports 3 Gbps 0xf impl SATA mode
ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part ccc
scsi1 : ahci
scsi2 : ahci
scsi3 : ahci
scsi4 : ahci
ata1: SATA max UDMA/133 abar m1024@0xdf6f8400 port 0xdf6f8500 irq 22
ata2: SATA max UDMA/133 abar m1024@0xdf6f8400 port 0xdf6f8580 irq 22
ata3: SATA max UDMA/133 abar m1024@0xdf6f8400 port 0xdf6f8600 irq 22
ata4: SATA max UDMA/133 abar m1024@0xdf6f8400 port 0xdf6f8680 irq 22
ata3: SATA link down (SStatus 0 SControl 300)
ata2: SATA link down (SStatus 0 SControl 300)
ata1: SATA link down (SStatus 0 SControl 300)
ata4: SATA link down (SStatus 0 SControl 300)
pata_atiixp 0000:00:14.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16
pata_atiixp 0000:00:14.1: setting latency timer to 64
scsi5 : pata_atiixp
scsi6 : pata_atiixp
ata5: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xff00 irq 14
ata6: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xff08 irq 15
sd 0:0:1:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
sd 0:0:0:0: [sda] 586072368 512-byte logical blocks: (300 GB/279 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 73 00 00 08
sd 0:0:1:0: [sdb] Write Protect is off
sd 0:0:1:0: [sdb] Mode Sense: 73 00 00 08
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2 sda3
sd 0:0:0:0: [sda] Attached SCSI disk
sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 >
sd 0:0:1:0: [sdb] Attached SCSI disk
dracut: Scanning devices sda2 sdb2 sdb5 sdb7 for LVM volume groups
dracut: Reading all physical volumes. This may take a while...
dracut: Found volume group "vg02" using metadata type lvm2
dracut: Found volume group "vg01" using metadata type lvm2
dracut: Found volume group "vg09" using metadata type lvm2
dracut: Found volume group "vg00" using metadata type lvm2
dracut: 1 logical volume(s) in volume group "vg02" now active
dracut: 1 logical volume(s) in volume group "vg01" now active
dracut: 3 logical volume(s) in volume group "vg09" now active
dracut: 4 logical volume(s) in volume group "vg00" now active
EXT4-fs (dm-8): mounted filesystem with ordered data mode. Opts: (null)
dracut: Mounted root filesystem /dev/mapper/vg00-lv06
dracut: Loading SELinux policy
dracut: /sbin/load_policy: Can't load policy: No such device
dracut: Switching root
udev: starting version 147
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 0:0:1:0: Attached scsi generic sg1 type 0
piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0
MCE: In-kernel MCE decoding enabled.
EDAC MC: Ver: 2.1.0 Oct 1 2011
AMD64 EDAC driver v3.4.0
EDAC amd64: DRAM ECC enabled.
EDAC amd64: F10h detected (node 0).
EDAC MC: DCT0 chip selects:
EDAC amd64: MC: 0: 1024MB 1: 1024MB
EDAC amd64: MC: 2: 1024MB 3: 1024MB
EDAC amd64: MC: 4: 0MB 5: 0MB
EDAC amd64: MC: 6: 0MB 7: 0MB
EDAC MC: DCT1 chip selects:
EDAC amd64: MC: 0: 1024MB 1: 1024MB
EDAC amd64: MC: 2: 1024MB 3: 1024MB
EDAC amd64: MC: 4: 0MB 5: 0MB
EDAC amd64: MC: 6: 0MB 7: 0MB
EDAC amd64: using x8 syndromes.
EDAC amd64: MCT channel count: 2
EDAC amd64: CS0: Unbuffered DDR3 RAM
EDAC amd64: CS1: Unbuffered DDR3 RAM
EDAC amd64: CS2: Unbuffered DDR3 RAM
EDAC amd64: CS3: Unbuffered DDR3 RAM
EDAC MC0: Giving out device to 'amd64_edac' 'F10h': DEV 0000:00:18.2
EDAC amd64: DRAM ECC enabled.
EDAC amd64: F10h detected (node 1).
EDAC MC: DCT0 chip selects:
EDAC amd64: MC: 0: 1024MB 1: 1024MB
EDAC amd64: MC: 2: 1024MB 3: 1024MB
EDAC amd64: MC: 4: 0MB 5: 0MB
EDAC amd64: MC: 6: 0MB 7: 0MB
EDAC MC: DCT1 chip selects:
EDAC amd64: MC: 0: 1024MB 1: 1024MB
EDAC amd64: MC: 2: 1024MB 3: 1024MB
EDAC amd64: MC: 4: 0MB 5: 0MB
EDAC amd64: MC: 6: 0MB 7: 0MB
EDAC amd64: using x8 syndromes.
EDAC amd64: MCT channel count: 2
EDAC amd64: CS0: Unbuffered DDR3 RAM
EDAC amd64: CS1: Unbuffered DDR3 RAM
EDAC amd64: CS2: Unbuffered DDR3 RAM
EDAC amd64: CS3: Unbuffered DDR3 RAM
EDAC MC1: Giving out device to 'amd64_edac' 'F10h': DEV 0000:00:19.2
EDAC PCI0: Giving out device to module 'amd64_edac' controller 'EDAC PCI controller': DEV '0000:00:18.2' (POLLED)
input: PC Speaker as /devices/platform/pcspkr/input/input4
EXT4-fs (dm-8): re-mounted. Opts: (null)
EXT3-fs: barriers not enabled
kjournald starting. Commit interval 5 seconds
EXT3-fs (sda1): using internal journal
EXT3-fs (sda1): mounted filesystem with ordered data mode
EXT3-fs: barriers not enabled
kjournald starting. Commit interval 5 seconds
EXT3-fs (dm-7): using internal journal
EXT3-fs (dm-7): mounted filesystem with ordered data mode
EXT4-fs (dm-0): warning: maximal mount count reached, running e2fsck is recommended
EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: journal_async_commit,commit=60,stripe=64
e1000e: Intel(R) PRO/1000 Network Driver - 1.6.2-NAPI
e1000e: Copyright(c) 1999 - 2011 Intel Corporation.
e1000e 0000:0c:00.0: Disabling ASPM L1
e1000e 0000:0c:00.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
e1000e 0000:0c:00.0: setting latency timer to 64
e1000e 0000:0c:00.0: irq 50 for MSI/MSI-X
e1000e 0000:0c:00.0: eth0: (PCI Express:2.5GT/s:Width x4) 00:15:17:bf:06:61
e1000e 0000:0c:00.0: eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:0c:00.0: eth0: MAC: 1, PHY: 4, PBA No: D64202-004
e1000e 0000:0c:00.1: Disabling ASPM L1
e1000e 0000:0c:00.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16
e1000e 0000:0c:00.1: setting latency timer to 64
e1000e 0000:0c:00.1: irq 51 for MSI/MSI-X
e1000e 0000:0c:00.1: eth1: (PCI Express:2.5GT/s:Width x4) 00:15:17:bf:06:60
e1000e 0000:0c:00.1: eth1: Intel(R) PRO/1000 Network Connection
e1000e 0000:0c:00.1: eth1: MAC: 1, PHY: 4, PBA No: D64202-004
e1000e 0000:0b:00.0: Disabling ASPM L1
e1000e 0000:0b:00.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
e1000e 0000:0b:00.0: setting latency timer to 64
e1000e 0000:0b:00.0: irq 52 for MSI/MSI-X
e1000e 0000:0b:00.0: eth2: (PCI Express:2.5GT/s:Width x4) 00:15:17:bf:06:63
e1000e 0000:0b:00.0: eth2: Intel(R) PRO/1000 Network Connection
e1000e 0000:0b:00.0: eth2: MAC: 1, PHY: 4, PBA No: D64202-004
e1000e 0000:0b:00.1: Disabling ASPM L1
e1000e 0000:0b:00.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18
e1000e 0000:0b:00.1: setting latency timer to 64
e1000e 0000:0b:00.1: irq 53 for MSI/MSI-X
e1000e 0000:0b:00.1: eth3: (PCI Express:2.5GT/s:Width x4) 00:15:17:bf:06:62
e1000e 0000:0b:00.1: eth3: Intel(R) PRO/1000 Network Connection
e1000e 0000:0b:00.1: eth3: MAC: 1, PHY: 4, PBA No: D64202-004
e1000e 0000:08:00.0: Disabling ASPM L1
e1000e 0000:08:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
e1000e 0000:08:00.0: setting latency timer to 64
e1000e 0000:08:00.0: irq 54 for MSI/MSI-X
e1000e 0000:08:00.0: eth4: (PCI Express:2.5GT/s:Width x4) 00:15:17:8b:94:18
e1000e 0000:08:00.0: eth4: Intel(R) PRO/1000 Network Connection
e1000e 0000:08:00.0: eth4: MAC: 1, PHY: 4, PBA No: D50868-003
e1000e 0000:08:00.1: Disabling ASPM L1
e1000e 0000:08:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
e1000e 0000:08:00.1: setting latency timer to 64
e1000e 0000:08:00.1: irq 55 for MSI/MSI-X
e1000e 0000:08:00.1: eth5: (PCI Express:2.5GT/s:Width x4) 00:15:17:8b:94:19
e1000e 0000:08:00.1: eth5: Intel(R) PRO/1000 Network Connection
e1000e 0000:08:00.1: eth5: MAC: 1, PHY: 4, PBA No: D50868-003
dca service started, version 1.12.1
igb: Unknown parameter `IntMode'
myri10ge: Version 1.5.2-1.459
myri10ge 0000:07:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
myri10ge 0000:07:00.0: setting latency timer to 64
myri10ge 0000:07:00.0: Not enabling ECRC on non-root port 0000:05:02.0
myri10ge 0000:07:00.0: irq 56 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 57 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 58 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 59 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 60 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 61 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 62 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 63 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 56 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 57 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 58 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 59 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 60 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 61 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 62 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 63 for MSI/MSI-X
myri10ge 0000:07:00.0: 8 MSI-X IRQs, tx bndry 4096, fw myri10ge_rss_eth_z8e.dat, WC Enabled
myri10ge 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
myri10ge 0000:06:00.0: setting latency timer to 64
myri10ge 0000:06:00.0: Not enabling ECRC on non-root port 0000:05:04.0
myri10ge 0000:06:00.0: irq 56 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 57 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 58 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 59 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 60 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 61 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 62 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 63 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 56 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 57 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 58 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 59 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 60 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 61 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 62 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 63 for MSI/MSI-X
myri10ge 0000:06:00.0: 8 MSI-X IRQs, tx bndry 4096, fw myri10ge_rss_eth_z8e.dat, WC Enabled
NET: Registered protocol family 10
e1000e 0000:0c:00.0: irq 50 for MSI/MSI-X
e1000e 0000:0c:00.0: irq 50 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth0: link is not ready
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
e1000e 0000:0c:00.1: irq 51 for MSI/MSI-X
e1000e 0000:0c:00.1: irq 51 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth1: link is not ready
e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
e1000e 0000:0b:00.0: irq 52 for MSI/MSI-X
e1000e 0000:0b:00.0: irq 52 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth2: link is not ready
eth0: no IPv6 routers present
e1000e 0000:0b:00.1: irq 53 for MSI/MSI-X
e1000e 0000:0b:00.1: irq 53 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth3: link is not ready
e1000e: eth2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
e1000e: eth3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
eth1: no IPv6 routers present
e1000e 0000:08:00.0: irq 54 for MSI/MSI-X
e1000e 0000:08:00.0: irq 54 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth4: link is not ready
e1000e: eth4 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
e1000e 0000:08:00.1: irq 55 for MSI/MSI-X
e1000e 0000:08:00.1: irq 55 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth5: link is not ready
e1000e: eth5 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
ADDRCONF(NETDEV_CHANGE): eth5: link becomes ready
eth2: no IPv6 routers present
eth3: no IPv6 routers present
myri10ge 0000:07:00.0: irq 56 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 57 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 58 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 59 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 60 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 61 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 62 for MSI/MSI-X
myri10ge 0000:07:00.0: irq 63 for MSI/MSI-X
myri10ge 0000:07:00.0: eth6: link down
myri10ge 0000:06:00.0: irq 64 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 65 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 66 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 67 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 68 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 69 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 70 for MSI/MSI-X
myri10ge 0000:06:00.0: irq 71 for MSI/MSI-X
myri10ge 0000:06:00.0: eth7: link down
eth6: no IPv6 routers present
eth7: no IPv6 routers present
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000e: eth2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000e: eth3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000e: eth4 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
e1000e: eth5 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
EXT3-fs: barriers not enabled
kjournald starting. Commit interval 5 seconds
EXT3-fs (dm-5): using internal journal
EXT3-fs (dm-5): mounted filesystem with ordered data mode
^ permalink raw reply
* Re: __pskb_pull_tail oops from 2.6.35
From: Dave Jones @ 2011-10-03 16:13 UTC (permalink / raw)
To: Eric Dumazet; +Cc: David Miller, netdev
In-Reply-To: <1317155839.2472.5.camel@edumazet-laptop>
On Tue, Sep 27, 2011 at 10:37:19PM +0200, Eric Dumazet wrote:
> > > > It looks like it died in put_page..
> > > >
> > > > <1>[ 262.574991] IP: [<ffffffff810dca57>] put_page+0x10/0x7c
> > > >
> > > > which is only called in one place..
> > > >
> > > > 1267 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
> > > > 1268 if (skb_shinfo(skb)->frags[i].size <= eat) {
> > > > 1269 put_page(skb_shinfo(skb)->frags[i].page);
> > > > 1270 eat -= skb_shinfo(skb)->frags[i].size;
> > > > 1271 } else {
> > >
> > > That's a pretty serious corruption, all frag array entries from 0 to
> > > nr_frags should have valid, non-NULL page pointers.
> > >
> > > Maybe a LRO/GRO bug? There were a couple of those.
> >
> > I'll see if I can talk him into trying a self-built kernel, as we're not
> > rebasing f14 at this point in its life-cycle. If it turns out to still affect
> > 3.x, I'll bring it up again.
>
> This could be a struct skb_shared_info -> nr_frags corruption
>
> (Something was overflowing skb head and overflowing very beginning of
> skb_shared_info in rare circumstances)
>
> We had such bug in the past, I cant remember details right now.
Just to close this discussion, the user reported that he built a 3.1.0rc7 kernel,
and couldn't reproduce this bug any more, so it was something that got fixed
that didn't make it to the longterm stable releases.
Dave
^ permalink raw reply
* Re: [PATCH net-next] RPS: Ensure that an expired hardware filter can be re-added later
From: David Miller @ 2011-10-03 16:14 UTC (permalink / raw)
To: bhutchings; +Cc: netdev, linux-net-drivers, amirv
In-Reply-To: <1317652966.2847.0.camel@bwh-desktop>
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Mon, 03 Oct 2011 15:42:46 +0100
> Amir Vadai wrote:
>> When a stream is paused, and its rule is expired while it is paused,
>> no new rule will be configured to the HW when traffic resume.
> [...]
>> - When stream was resumed, traffic was steered again by RSS, and
>> because current-cpu was equal to desired-cpu, ndo_rx_flow_steer
>> wasn't called and no rule was configured to the HW.
>
> Fix this by setting the flow's current CPU only in the table for the
> newly selected RX queue.
>
> Reported-and-tested-by: Amir Vadai <amirv@dev.mellanox.co.il>
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Applied, thanks.
^ permalink raw reply
* Re: [PATCH net-next-2.6] be2net: Add 60 second delay to allow FAT dump completion on recovery from EEH
From: David Miller @ 2011-10-03 16:15 UTC (permalink / raw)
To: somnath.kotur; +Cc: netdev
In-Reply-To: <5bb8f639-e754-4e08-8b7b-9830a57e4826@exht2.ad.emulex.com>
From: Somnath Kotur <somnath.kotur@Emulex.Com>
Date: Mon, 3 Oct 2011 23:40:57 +0530
> Add 60s delay before timeout on polling Bit 31 so that FAT dump can
> complete when reset occurs.
>
> Signed-off-by: Somnath Kotur <somnath.kotur@emulex.com>
Applied.
^ 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