* Re: [PATCH] tcp: mark tcp_congestion_ops read_mostly
From: David Miller @ 2011-03-10 8:40 UTC (permalink / raw)
To: shemminger; +Cc: dada1, netdev
In-Reply-To: <20110309160220.1a2db73e@nehalam>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Wed, 9 Mar 2011 16:02:20 -0800
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Applied, thanks Stephen.
^ permalink raw reply
* Re: Bug inkvm_set_irq
From: Jean-Philippe Menil @ 2011-03-10 8:42 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: netdev, kvm, virtualization
In-Reply-To: <20110309135918.GA31019@redhat.com>
Le 09/03/2011 14:59, Michael S. Tsirkin a écrit :
> On Wed, Mar 09, 2011 at 02:12:58PM +0100, Jean-Philippe Menil wrote:
>> Le 09/03/2011 14:00, Michael S. Tsirkin a écrit :
>>> On Wed, Mar 09, 2011 at 01:28:43PM +0100, Jean-Philippe Menil wrote:
>>>> Le 08/03/2011 12:13, Michael S. Tsirkin a écrit :
>>>>> On Fri, Mar 04, 2011 at 10:39:05AM +0100, Jean-Philippe Menil wrote:
>>>>>> Yes, it's a 2.6.37.2 kernel.
>>>>> OK, here's a debugging patch.
>>>>> Please run with slab debugging as previously until you see
>>>>> 'eventfd bug detected!' in dmesg or until there is a crash.
>>>>> It might be also useful to enable timestampts on printk with
>>>>> Symbol: PRINTK_TIME [=y]
>>>>> │ Type : boolean
>>>>> │ Prompt: Show timing information on printks
>>>>>
>>>>> once you see the error, please upload the
>>>>> full dmesg output somewhere to we can track what
>>>>> goes on.
>>>>>
>>>>> Hopefully there won't be an oops this time which
>>>>> should make it easier for you to test (no need to
>>>>> reboot).
>>>>>
>>>>>
>>>>> diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
>>>>> index c1f1e3c..3cb679b 100644
>>>>> --- a/virt/kvm/eventfd.c
>>>>> +++ b/virt/kvm/eventfd.c
>>>>> @@ -32,6 +32,7 @@
>>>>> #include<linux/eventfd.h>
>>>>> #include<linux/kernel.h>
>>>>> #include<linux/slab.h>
>>>>> +#include<linux/nmi.h>
>>>>>
>>>>> #include "iodev.h"
>>>>>
>>>>> @@ -43,6 +44,8 @@
>>>>> * --------------------------------------------------------------------
>>>>> */
>>>>>
>>>>> +#define KVM_BAD_PTR ((void*)(long)(0x6b6b6b6b6b6b6b6bull))
>>>>> +
>>>>> struct _irqfd {
>>>>> struct kvm *kvm;
>>>>> struct eventfd_ctx *eventfd;
>>>>> @@ -61,6 +64,13 @@ irqfd_inject(struct work_struct *work)
>>>>> {
>>>>> struct _irqfd *irqfd = container_of(work, struct _irqfd, inject);
>>>>> struct kvm *kvm = irqfd->kvm;
>>>>> + if (kvm == KVM_BAD_PTR) {
>>>>> + printk(KERN_ERR "Eventfd bug detected!\n");
>>>>> + printk(KERN_ERR "%s(work=%p,irqfd=%p,kvm=%p,gsi=%d)\n", __func__,
>>>>> + work, irqfd, kvm, irqfd->gsi);
>>>>> + trigger_all_cpu_backtrace();
>>>>> + return;
>>>>> + }
>>>>>
>>>>> kvm_set_irq(kvm, KVM_USERSPACE_IRQ_SOURCE_ID, irqfd->gsi, 1);
>>>>> kvm_set_irq(kvm, KVM_USERSPACE_IRQ_SOURCE_ID, irqfd->gsi, 0);
>>>>> @@ -75,6 +85,8 @@ irqfd_shutdown(struct work_struct *work)
>>>>> struct _irqfd *irqfd = container_of(work, struct _irqfd, shutdown);
>>>>> u64 cnt;
>>>>>
>>>>> + printk(KERN_ERR "%s(work=%p,irqfd=%p,kvm=%p, gsi=%d)\n", __func__,
>>>>> + work, irqfd, irqfd->kvm, irqfd->gsi);
>>>>> /*
>>>>> * Synchronize with the wait-queue and unhook ourselves to prevent
>>>>> * further events.
>>>>> @@ -91,6 +103,8 @@ irqfd_shutdown(struct work_struct *work)
>>>>> * It is now safe to release the object's resources
>>>>> */
>>>>> eventfd_ctx_put(irqfd->eventfd);
>>>>> + printk(KERN_ERR "kfree at %s(work=%p,irqfd=%p)\n", __func__,
>>>>> + work, irqfd);
>>>>> kfree(irqfd);
>>>>> }
>>>>>
>>>>> @@ -111,6 +125,8 @@ static void
>>>>> irqfd_deactivate(struct _irqfd *irqfd)
>>>>> {
>>>>> BUG_ON(!irqfd_is_active(irqfd));
>>>>> + printk(KERN_ERR "%s(irqfd=%p,kvm=%p, gsi=%d)\n", __func__,
>>>>> + irqfd, irqfd->kvm, irqfd->gsi);
>>>>>
>>>>> list_del_init(&irqfd->list);
>>>>>
>>>>> @@ -178,6 +194,8 @@ kvm_irqfd_assign(struct kvm *kvm, int fd, int gsi)
>>>>>
>>>>> irqfd->kvm = kvm;
>>>>> irqfd->gsi = gsi;
>>>>> + printk(KERN_ERR "%s(irqfd=%p,kvm=%p, gsi=%d)\n", __func__,
>>>>> + irqfd, kvm, gsi);
>>>>> INIT_LIST_HEAD(&irqfd->list);
>>>>> INIT_WORK(&irqfd->inject, irqfd_inject);
>>>>> INIT_WORK(&irqfd->shutdown, irqfd_shutdown);
>>>>> @@ -264,6 +282,8 @@ kvm_irqfd_deassign(struct kvm *kvm, int fd, int gsi)
>>>>> struct _irqfd *irqfd, *tmp;
>>>>> struct eventfd_ctx *eventfd;
>>>>>
>>>>> + printk(KERN_ERR "%s(kvm=%p, gsi=%d)\n", __func__,
>>>>> + kvm, gsi);
>>>>> eventfd = eventfd_ctx_fdget(fd);
>>>>> if (IS_ERR(eventfd))
>>>>> return PTR_ERR(eventfd);
>>>>> @@ -305,6 +325,7 @@ void
>>>>> kvm_irqfd_release(struct kvm *kvm)
>>>>> {
>>>>> struct _irqfd *irqfd, *tmp;
>>>>> + printk(KERN_ERR "%s(kvm=%p)\n", __func__, kvm);
>>>>>
>>>>> spin_lock_irq(&kvm->irqfds.lock);
>>>>>
>>>>> --
>>>>> To unsubscribe from this list: send the line "unsubscribe netdev" in
>>>>> the body of a message to majordomo@vger.kernel.org
>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>> Hi,
>>>>
>>>> I boot the host with the patched kernel yesterday.
>>>> No crach until now, but two "Eventfd bug detected!" in the log at
>>>> "Mar 9 02:04:31" and "Mar 9 02:15:17"
>>>> You can find part of the log at the following adress:
>>>> http://filex.univ-nantes.fr/get?k=jL4Fe7yfSMN57toAH7V
>>>>
>>>> It a split file of the kern.log (1,4G), so if you need another part
>>>> of the log, let me know.
>>>>
>>>> Thanks for all.
>>>>
>>>> Regards.
>>> Downloading, it's big :)
>>> What about some 1000 lines before and after Eventfd bug detected! line?
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>> Yes, sorry about that.
>> I could have split my log into a smaller file.
>>
>> I was a little afraid of not transmit enough informations, and i was
>> a bit wide.
>> I hope you can find usefull trace anyway.
>>
>> Regards.
>
> OK, use after free.
>
>
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.593681]
> kvm_irqfd_assign(irqfd=ffff88045e8d6230,kvm=ffff88085151c000, gsi=26)
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.605359]
> kvm_irqfd_deassign(kvm=ffff88085151c000, gsi=26)
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.605388]
> irqfd_deactivate(irqfd=ffff88045e8d6230,kvm=ffff88085151c000, gsi=26)
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.605461]
> irqfd_shutdown(work=ffff88045e8d62b0,irqfd=ffff88045e8d6230,kvm=ffff88085151c000,
> gsi=26)
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.605509]
> kfree at irqfd_shutdown(work=ffff88045e8d62b0,irqfd=ffff88045e8d6230)
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.605588]
> Eventfd bug detected!
> Mar 9 02:15:17 ayrshire.u06.univ-nantes.prive kernel: [37461.605612]
> irqfd_inject(work=ffff88045e8d6290,irqfd=ffff88045e8d6230,kvm=6b6b6b6b6b6b6b6b,gsi=1802201963)
>
>
> and 1802201963 is also 6b6b6b6b.
>
>
> I suspect that somehow, we get an event from eventfd even
> though we did eventfd_ctx_remove_wait_queue.
> Could you please try the following patch on top?
> When you see Eventfd bug or Wakeup bug, paste some
> last lines.
> For the full log file - better compress with xz.
>
>
> diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
> index 3cb679b..63aeba5 100644
> --- a/virt/kvm/eventfd.c
> +++ b/virt/kvm/eventfd.c
> @@ -92,6 +92,8 @@ irqfd_shutdown(struct work_struct *work)
> * further events.
> */
> eventfd_ctx_remove_wait_queue(irqfd->eventfd,&irqfd->wait,&cnt);
> + printk(KERN_ERR "remove wq at %s(work=%p,irqfd=%p)\n", __func__,
> + work, irqfd);
>
> /*
> * We know no new events will be scheduled at this point, so block
> @@ -142,6 +144,13 @@ irqfd_wakeup(wait_queue_t *wait, unsigned mode, int sync, void *key)
> struct _irqfd *irqfd = container_of(wait, struct _irqfd, wait);
> unsigned long flags = (unsigned long)key;
>
> + if (irqfd->kvm == KVM_BAD_PTR) {
> + printk(KERN_ERR "Wakeup bug detected! flags 0x%lx\n", flags);
> + printk(KERN_ERR "%s(work=%p,irqfd=%p,kvm=%p,gsi=%d)\n", __func__,
> + &irqfd->inject, irqfd, irqfd->kvm, irqfd->gsi);
> + trigger_all_cpu_backtrace();
> + return 0;
> + }
> if (flags& POLLIN)
> /* An event has been signaled, inject an interrupt */
> schedule_work(&irqfd->inject);
> @@ -153,6 +162,9 @@ irqfd_wakeup(wait_queue_t *wait, unsigned mode, int sync, void *key)
>
> spin_lock_irqsave(&kvm->irqfds.lock, flags);
>
> + printk(KERN_ERR "%s(work=%p,irqfd=%p,kvm=%p,gsi=%d,active=%d)\n", __func__,
> + &irqfd->inject, irqfd, irqfd->kvm, irqfd->gsi,
> + irqfd_is_active(irqfd));
> /*
> * We must check if someone deactivated the irqfd before
> * we could acquire the irqfds.lock since the item is
>
Hi,
I noted seven "Eventfd bug detected" events during the night, and only
one Wakeup event:
fifth.ah:Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel:
[44867.105868] Eventfd bug detected!
first.ad:Mar 10 01:08:15 ayrshire.u06.univ-nantes.prive kernel:
[34729.771260] Eventfd bug detected!
fourth.ad:Mar 10 02:54:41 ayrshire.u06.univ-nantes.prive kernel:
[41115.140873] Eventfd bug detected!
second.ab:Mar 10 02:41:55 ayrshire.u06.univ-nantes.prive kernel:
[40348.967192] Eventfd bug detected!
seventh.ab:Mar 10 07:52:29 ayrshire.u06.univ-nantes.prive kernel:
[58983.145646] Eventfd bug detected!
sixth.ab:Mar 10 05:19:54 ayrshire.u06.univ-nantes.prive kernel:
[49828.785558] Eventfd bug detected!
third.ae:Mar 10 02:54:07 ayrshire.u06.univ-nantes.prive kernel:
[41081.638633] Eventfd bug detected!
grep -i wakeup *
seventh.ab:Mar 10 07:52:29 ayrshire.u06.univ-nantes.prive kernel:
[58983.154161] [<ffffffffa02cbf96>] vhost_poll_wakeup+0x16/0x20 [vhost_net
Here is a trace, for the thirst event:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.101747]
irqfd_deactivate(irqfd=ffff88042e0b5e00,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.101873]
irqfd_shutdown(work=ffff88042e0b5e80,irqfd=ffff88042e0b5e00,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.101928]
remove wq at irqfd_shutdown(work=ffff88042e0b5e80,irqfd=ffff88042e0b5e00)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.101990]
kfree at irqfd_shutdown(work=ffff88042e0b5e80,irqfd=ffff88042e0b5e00)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.102381]
kvm_irqfd_assign(irqfd=ffff88080f7aa818,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.103796]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.103833]
irqfd_deactivate(irqfd=ffff88080f7aa818,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.103904]
irqfd_shutdown(work=ffff88080f7aa898,irqfd=ffff88080f7aa818,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.103958]
remove wq at irqfd_shutdown(work=ffff88080f7aa898,irqfd=ffff88080f7aa818)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104023]
kfree at irqfd_shutdown(work=ffff88080f7aa898,irqfd=ffff88080f7aa818)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104311]
kvm_irqfd_assign(irqfd=ffff88081a190b78,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104511]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104549]
irqfd_deactivate(irqfd=ffff88081a190b78,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104614]
irqfd_shutdown(work=ffff88081a190bf8,irqfd=ffff88081a190b78,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104667]
remove wq at irqfd_shutdown(work=ffff88081a190bf8,irqfd=ffff88081a190b78)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104715]
kfree at irqfd_shutdown(work=ffff88081a190bf8,irqfd=ffff88081a190b78)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.104911]
kvm_irqfd_assign(irqfd=ffff880853b8caa0,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.105868]
Eventfd bug detected!
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.105901]
irqfd_inject(work=ffff88042e0b5e60,irqfd=ffff88042e0b5e00,kvm=6b6b6b6b6b6b6b6b,gsi=1802201963)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.105951]
sending NMI to all CPUs:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.105961]
NMI backtrace for cpu 0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.105986] CPU 0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.105992]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106557]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106581]
Pid: 10, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106644]
RIP: 0010:[<ffffffff8105fa4b>] [<ffffffff8105fa4b>]
default_send_IPI_mask_sequence_phys+0xbb/0xe0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106706]
RSP: 0018:ffff88045fcb1d50 EFLAGS: 00000046
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106735]
RAX: ffff88087fc00000 RBX: 0000000000000002 RCX: 0000000000000008
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106767]
RDX: 0000000000000001 RSI: 0000000000000020 RDI: 0000000000000020
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106799]
RBP: ffff88045fcb1d90 R08: ffffffff8159faf0 R09: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106831]
R10: 0000000000000000 R11: 0000000000000006 R12: 000000000000c620
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106863]
R13: ffffffff8159faf0 R14: 0000000000000400 R15: 0000000000000286
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106896]
FS: 00007f66f7754720(0000) GS:ffff88007f800000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106944]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.106973]
CR2: 0000000000e64048 CR3: 000000045ea45000 CR4: 00000000000006f0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.107005]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.107037]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.107070]
Process kworker/0:1 (pid: 10, threadinfo ffff88045fcb0000, task
ffff88045fcaae70)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.107117] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.107138]
ffffffff00000000 0000000000000000 ffff88045fcb1d70 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
6b6b6b6b6b6b6b6b ffff88007f814e00 ffffffff81008ba0 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
ffff88045fcb1da0 ffffffff81062c12 ffff88045fcb1dc0 ffffffff8105fb3c
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81008ba0>] ? irqfd_inject+0x0/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81062c12>] physflat_send_IPI_all+0x12/0x20
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff8105fb3c>] arch_trigger_all_cpu_backtrace+0x3c/0x70
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81008c2f>] irqfd_inject+0x8f/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a971b>] process_one_work+0x11b/0x450
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a9e97>] worker_thread+0x157/0x410
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81078519>] ? __wake_up_common+0x59/0x90
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a9d40>] ? worker_thread+0x0/0x410
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810ad8f6>] kthread+0x96/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81041c64>] kernel_thread_helper+0x4/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810ad860>] ? kthread+0x0/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81041c60>] ? kernel_thread_helper+0x0/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
Code: 83 fb 02 44 89 f0 0f 45 c3 89 04 25 00 c3 5f ff eb 9e 4c 89 ff 57
9d 66 66 90 66 90 48 83 c4 18 5b 41 5c 41 5d 41 5e 41 5f c9 c3 <48> 8b
05 4e fb 53 00 48 89 55 c8 89 4d c0 ff 90 58 01 00 00 48
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81008ba0>] ? irqfd_inject+0x0/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81062c12>] physflat_send_IPI_all+0x12/0x20
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff8105fb3c>] arch_trigger_all_cpu_backtrace+0x3c/0x70
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81008c2f>] irqfd_inject+0x8f/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a971b>] process_one_work+0x11b/0x450
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a9e97>] worker_thread+0x157/0x410
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81078519>] ? __wake_up_common+0x59/0x90
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a9d40>] ? worker_thread+0x0/0x410
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810ad8f6>] kthread+0x96/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81041c64>] kernel_thread_helper+0x4/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810ad860>] ? kthread+0x0/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81041c60>] ? kernel_thread_helper+0x0/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
Pid: 10, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff8105fa4b>] ? default_send_IPI_mask_sequence_phys+0xbb/0xe0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
<<EOE>> [<ffffffff81008ba0>] ? irqfd_inject+0x0/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81062c12>] physflat_send_IPI_all+0x12/0x20
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff8105fb3c>] arch_trigger_all_cpu_backtrace+0x3c/0x70
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81008c2f>] irqfd_inject+0x8f/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a971b>] process_one_work+0x11b/0x450
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a9e97>] worker_thread+0x157/0x410
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81078519>] ? __wake_up_common+0x59/0x90
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810a9d40>] ? worker_thread+0x0/0x410
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810ad8f6>] kthread+0x96/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81041c64>] kernel_thread_helper+0x4/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff810ad860>] ? kthread+0x0/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108011]
[<ffffffff81041c60>] ? kernel_thread_helper+0x0/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110243]
NMI backtrace for cpu 3
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110272] CPU 3
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110280]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110882]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110906]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110970]
RIP: 0010:[<ffffffff81066716>] [<ffffffff81066716>]
native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111030]
RSP: 0018:ffff88045fcd3ea8 EFLAGS: 00000246
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111059]
RAX: 0000000000000000 RBX: 0000000000000003 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111091]
RDX: 0000000000000000 RSI: ffff88045fcd3ee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111123]
RBP: ffff88045fcd3ea8 R08: 0000000000000000 R09: 0000000000000001
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111155]
R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111186]
R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111220]
FS: 00007fb1eafc6740(0000) GS:ffff88087fc40000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111268]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111297]
CR2: 00007ff12a981de0 CR3: 000000045569f000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111329]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111362]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111395]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fcd2000, task
ffff88045fcca820)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111442] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111463]
ffff88045fcd3ec8 ffffffff8104a016 ffff88045fcd3ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111515]
ffff88045fcd3ef8 ffffffff8104a168 ffff88045fcd3ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111566]
ffff88045fcd2010 ffffffff8159faf0 ffff88045fcd3f28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111618]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111648]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111680]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111712]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111745]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111774]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3
0f 1f 84 00 00 00 00 00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111982]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112007]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112038]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112069]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112099]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112131]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112176]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112198]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112238]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112272]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112303]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112332]
[<ffffffff81066716>] ? native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112361]
<<EOE>> [<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112399]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112430]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112460]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112024]
NMI backtrace for cpu 2
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112024] CPU 2
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112024]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
RIP: 0010:[<ffffffff81066716>] [<ffffffff81066716>]
native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
RSP: 0018:ffff88045fcc5ea8 EFLAGS: 00000246
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
RDX: 0000000000000000 RSI: ffff88045fcc5ee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
RBP: ffff88045fcc5ea8 R08: 0000000000000000 R09: 0000000000000001
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
R13: 0000000000000002 R14: 0000000000000000 R15: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
FS: 00007f66f7754720(0000) GS:ffff88007f840000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
CR2: 00007f241ad1f0b8 CR3: 000000045ea45000 CR4: 00000000000006f0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fcc4000, task
ffff88045fcb87e0)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
ffff88045fcc5ec8 ffffffff8104a016 ffff88045fcc5ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
ffff88045fcc5ef8 ffffffff8104a168 ffff88045fcc5ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
ffff88045fcc4010 ffffffff8159faf0 ffff88045fcc5f28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3
0f 1f 84 00 00 00 00 00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff81066716>] ? native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
<<EOE>> [<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112616]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
NMI backtrace for cpu 1
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285] CPU 1
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Pid: 0, comm: kworker/0:0 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
RIP: 0010:[<ffffffff81066716>] [<ffffffff81066716>]
native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
RSP: 0018:ffff88045fcb3ea8 EFLAGS: 00000246
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
RDX: 0000000000000000 RSI: ffff88045fcb3ee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
RBP: ffff88045fcb3ea8 R08: 0000000000000000 R09: ffff88087fc0e408
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
R10: 000028ce70db0d2f R11: 0000000000000001 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
R13: 0000000000000001 R14: 0000000000000000 R15: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
FS: 00007fb8e1893710(0000) GS:ffff88087fc00000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
CR2: 00007f241aca71a0 CR3: 000000045ed50000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Process kworker/0:0 (pid: 0, threadinfo ffff88045fcb2000, task
ffff88045fcaa7a0)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
ffff88045fcb3ec8 ffffffff8104a016 ffff88045fcb3ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
ffff88045fcb3ef8 ffffffff8104a168 ffff88045fcb3ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
ffff88045fcb2010 ffffffff8159faf0 ffff88045fcb3f28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3
0f 1f 84 00 00 00 00 00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
<<EOE>> [<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112285]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
RAX: 0000000000000000 RBX: 0000000000000005 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
RDX: 0000000000000000 RSI: ffff88045fd11ee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
ffff88045fd11ef8 ffffffff8104a168 ffff88045fd11ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
ffff88045fd10010 ffffffff8159faf0 ffff88045fd11f28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.110896]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3
0f 1f 84 00 00 00 00 00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119695]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119695]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119695]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119695]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119985]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119985]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119985]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.119985]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120119]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120164]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
CR2: 00007f241ad1f0b8 CR3: 000000045ed50000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fd00000, task
ffff88045fcd8860)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
ffff88045fd01ec8 ffffffff8104a016 ffff88045fd01ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
ffff88045fd01ef8 ffffffff8104a168 ffff88045fd01ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
ffff88045fd00010 ffffffff8159faf0 ffff88045fd01f28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.112018]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.123585]
NMI backtrace for cpu 7
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.124502]
RAX: 0000000000000000 RBX: 0000000000000007 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.125007]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.125206] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
RIP: 0010:[<ffffffff81066716>] [<ffffffff81066716>]
native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
RSP: 0018:ffff88045fd23ea8 EFLAGS: 00000246
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
RAX: 0000000000000000 RBX: 0000000000000006 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
RDX: 0000000000000000 RSI: ffff88045fd23ee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
RBP: ffff88045fd23ea8 R08: 0000000000000000 R09: ffff88007f8ce408
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
ffff88045fd23ec8 ffffffff8104a016 ffff88045fd23ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108015]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
R10: 000028ce766a74a3 R11: 0000000000000001 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
R13: 0000000000000009 R14: 0000000000000000 R15: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
FS: 00007fa0cb316710(0000) GS:ffff88087fd00000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
CR2: 0000000000e64048 CR3: 000000045ea45000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fd6e000, task
ffff88045fd669a0)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
ffff88045fd6fec8 ffffffff8104a016 ffff88045fd6fee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
ffff88045fd6fef8 ffffffff8104a168 ffff88045fd6fee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
ffff88045fd6e010 ffffffff8159faf0 ffff88045fd6ff28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3
0f 1f 84 00 00 00 00 00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff81066716>] ? native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
<<EOE>> [<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.126621]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
NMI backtrace for cpu 11
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
CPU 11
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
RIP: 0010:[<ffffffff81066716>] [<ffffffff81066716>]
native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
RSP: 0018:ffff88045fd8fea8 EFLAGS: 00000246
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
RAX: 0000000000000000 RBX: 000000000000000b RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
RDX: 0000000000000000 RSI: ffff88045fd8fee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
RBP: ffff88045fd8fea8 R08: 0000000000000000 R09: ffff88087fd4e408
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
R10: 000028ce71c3578e R11: 0000000000000001 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
R13: 000000000000000b R14: 0000000000000000 R15: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
FS: 00007fa0ce156740(0000) GS:ffff88087fd40000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
CR2: 00007f2421c3eae0 CR3: 000000045ea45000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fd8e000, task
ffff88045fd86a20)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
ffff88045fd8fec8 ffffffff8104a016 ffff88045fd8fee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
ffff88045fd8fef8 ffffffff8104a168 ffff88045fd8fee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
ffff88045fd8e010 ffffffff8159faf0 ffff88045fd8ff28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3
0f 1f 84 00 00 00 00 00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff81066716>] ? native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
<<EOE>> [<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.111333]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
NMI backtrace for cpu 8
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010] CPU 8
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus
hfs minix ntfs vfat msdos fat jfs reiserfs ext4 jbd2 crc16 ext3 jbd
vhost_net macvtap macvlan tun veth powernow_k8 mperf cpufreq_userspace
cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table
cpufreq_conservative fuse xt_physdev ip6t_LOG ip6table_filter ip6_tables
ipt_LOG xt_multiport xt_limit xt_tcpudp xt_state iptable_filter
ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4
nf_defrag_ipv4 8021q bridge stp ext2 mbcache dm_round_robin dm_multipath
nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 snd_pcm snd_timer snd
soundcore snd_page_alloc shpchp i2c_nforce2 tpm_tis tpm pci_hotplug
psmouse evdev i2c_core tpm_bios dcdbas pcspkr joydev ghes serio_raw
processor thermal_sys hed button xfs exportfs dm_mod sg sr_mod cdrom
usbhid hid usb_storage ses sd_mod enclosure lpfc scsi_transport_fc
ohci_hcd scsi_tgt megaraid_sas scsi_mod bnx2 ehci_hcd [last unloaded:
scsi_wait_sca
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: n]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Dell Inc. PowerEdge M605/0K543T
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
RIP: 0010:[<ffffffff81066716>] [<ffffffff81066716>]
native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
RSP: 0018:ffff88045fd63ea8 EFLAGS: 00000246
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
RAX: 0000000000000000 RBX: 0000000000000008 RCX: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
RDX: 0000000000000000 RSI: ffff88045fd63ee4 RDI: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
RBP: ffff88045fd63ea8 R08: 0000000000000000 R09: ffff88007f90e408
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
R13: 0000000000000008 R14: 0000000000000000 R15: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
FS: 00007fb8e0891710(0000) GS:ffff88007f900000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
CR2: 0000000000e63f28 CR3: 000000045ed50000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fd62000, task
ffff88045fd34960)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
ffff88045fd63ec8 ffffffff8104a016 ffff88045fd63ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
ffff88045fd63ef8 ffffffff8104a168 ffff88045fd63ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
ffff88045fd62010 ffffffff8159faf0 ffff88045fd63f28
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136088]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136098]
irqfd_deactivate(irqfd=ffff880853b8caa0,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
Code: 00 00 00 00 00 55 48 89 e5 fa c9 c3 66 0f 1f 84 00 00 00 00 00 55
48 89 e5 fb c9 c3 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 fb f4 <c9> c3 0f
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136661]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136665]
irqfd_deactivate(irqfd=ffff880810a21e00,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136702]
irqfd_shutdown(work=ffff880810a21e80,irqfd=ffff880810a21e00,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136709]
remove wq at irqfd_shutdown(work=ffff880810a21e80,irqfd=ffff880810a21e00)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136715]
kfree at irqfd_shutdown(work=ffff880810a21e80,irqfd=ffff880810a21e00)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010] 1f
84 00 00 00
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136910]
kvm_irqfd_assign(irqfd=ffff880853b8caa0,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010] 00
00 55 48 89 e5 f4 c9 c3 66 0f 1f 84
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
[<ffffffff8104a168>] c1e_idle+0x58/0x120
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.108010]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136975]
Pid: 0, comm: kworker/0:1 Not tainted 2.6.37.2-patchjp-110308-c+ #17
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136975]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136975]
<NMI> [<ffffffff8104a786>] ? show_regs+0x26/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136975]
[<ffffffff8105fde1>] nmi_watchdog_tick+0x191/0x1b0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136975]
[<ffffffff813be5f0>] nmi+0x20/0x30
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.136975]
[<ffffffff81066716>] ? native_safe_halt+0x6/0x10
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
FS: 00007f2787814700(0000) GS:ffff88007f940000(0000) knlGS:0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
CR2: 0000000000e63f28 CR3: 000000045ea45000 CR4: 00000000000006e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
Process kworker/0:1 (pid: 0, threadinfo ffff88045fd80000, task
ffff88045fd769e0)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004] Stack:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
ffff88045fd81ec8 ffffffff8104a016 ffff88045fd81ee4 ffffffff8159faf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
ffff88045fd81ef8 ffffffff8104a168 ffff88045fd81ee8 00000000810b3255
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
ffff88045fd80010 ffffffff8159faf0 ffff88045fd81f28 ffffffff8104003b
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
Call Trace:
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff8104a016>] default_idle+0x46/0xa0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff8104003b>] cpu_idle+0x6b/0xf0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff81042ef1>] do_nmi+0x1c1/0x2e0
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.120004]
[<ffffffff813b7247>] start_secondary+0x1b9/0x1be
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.148658]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.148687]
irqfd_deactivate(irqfd=ffff880853b8caa0,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.148759]
irqfd_shutdown(work=ffff880853b8cb20,irqfd=ffff880853b8caa0,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.148814]
remove wq at irqfd_shutdown(work=ffff880853b8cb20,irqfd=ffff880853b8caa0)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.148862]
kfree at irqfd_shutdown(work=ffff880853b8cb20,irqfd=ffff880853b8caa0)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149086]
kvm_irqfd_assign(irqfd=ffff88081a190b78,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149379]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=48)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149416]
irqfd_deactivate(irqfd=ffff88045efd3740,kvm=ffff8804542d0000, gsi=48)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149540]
irqfd_shutdown(work=ffff88045efd37c0,irqfd=ffff88045efd3740,kvm=ffff8804542d0000,
gsi=48)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149594]
remove wq at irqfd_shutdown(work=ffff88045efd37c0,irqfd=ffff88045efd3740)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149643]
kfree at irqfd_shutdown(work=ffff88045efd37c0,irqfd=ffff88045efd3740)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.149922]
kvm_irqfd_assign(irqfd=ffff88080f7aa818,kvm=ffff8804542d0000, gsi=48)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.171869]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.171907]
irqfd_deactivate(irqfd=ffff88081a190b78,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.171989]
irqfd_shutdown(work=ffff88081a190bf8,irqfd=ffff88081a190b78,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172111]
remove wq at irqfd_shutdown(work=ffff88081a190bf8,irqfd=ffff88081a190b78)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172160]
kfree at irqfd_shutdown(work=ffff88081a190bf8,irqfd=ffff88081a190b78)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172493]
kvm_irqfd_assign(irqfd=ffff88083b062308,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172672]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172710]
irqfd_deactivate(irqfd=ffff88083b062308,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172782]
irqfd_shutdown(work=ffff88083b062388,irqfd=ffff88083b062308,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172836]
remove wq at irqfd_shutdown(work=ffff88083b062388,irqfd=ffff88083b062308)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.172884]
kfree at irqfd_shutdown(work=ffff88083b062388,irqfd=ffff88083b062308)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.173074]
kvm_irqfd_assign(irqfd=ffff88081a190230,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.175303]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.175339]
irqfd_deactivate(irqfd=ffff88081a190230,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.175466]
irqfd_shutdown(work=ffff88081a1902b0,irqfd=ffff88081a190230,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.175521]
remove wq at irqfd_shutdown(work=ffff88081a1902b0,irqfd=ffff88081a190230)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.175569]
kfree at irqfd_shutdown(work=ffff88081a1902b0,irqfd=ffff88081a190230)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.175769]
kvm_irqfd_assign(irqfd=ffff88045eabb668,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.176002]
kvm_irqfd_deassign(kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.176058]
irqfd_deactivate(irqfd=ffff88045eabb668,kvm=ffff8804542d0000, gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.176122]
irqfd_shutdown(work=ffff88045eabb6e8,irqfd=ffff88045eabb668,kvm=ffff8804542d0000,
gsi=24)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.176177]
remove wq at irqfd_shutdown(work=ffff88045eabb6e8,irqfd=ffff88045eabb668)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.176225]
kfree at irqfd_shutdown(work=ffff88045eabb6e8,irqfd=ffff88045eabb668)
Mar 10 03:57:13 ayrshire.u06.univ-nantes.prive kernel: [44867.176427]
kvm_irqfd_assign(irqfd=ffff88045ed96c50,kvm=ffff8804542d0000, gsi=24
You can find all the trace at the following adress:
http://filex.univ-nantes.fr/get?k=R94kna5sckVmdvCoKsn
It's a tar.gz of seven file, from 100k to 200k each ;)
Again, thanks a lot for the time you spent on this.
Regards.
--
Jean-Philippe Menil - Pôle réseau Service IRTS
DSI Université de Nantes
jean-philippe.menil@univ-nantes.fr
Tel : 02.53.48.49.27 - Fax : 02.53.48.49.09
^ permalink raw reply
* Re: [PATCH] Make CUBIC Hystart more robust to RTT variations
From: Lucas Nussbaum @ 2011-03-10 8:54 UTC (permalink / raw)
To: Bill Fink
Cc: Stephen Hemminger, Injong Rhee, David Miller, xiyou wangcong,
netdev, sangtae ha
In-Reply-To: <20110310021751.2f5fb8bc.billfink@mindspring.com>
On 10/03/11 at 02:17 -0500, Bill Fink wrote:
> On Wed, 9 Mar 2011, Stephen Hemminger wrote:
>
> > Bill what is the HZ in your kernel config.
> > I am concerned hystart doesn't work well with HZ=100
>
> HZ=1000
>
> But I did have tcp_timestamps disabled. Should I re-run
> the tests with tcp_timestamps enabled?
I ran my tests with timestamps enabled and HZ=250. If you have the
opportunity to run tests in the same config, it would be great. The
HZ=250 vs HZ=1000 difference could explain why it's working.
However, enabling or disabling timestamps shouldn't make a difference,
since the hystart code doesn't use TCP_CONG_RTT_STAMP.
--
| Lucas Nussbaum MCF Université Nancy 2 |
| lucas.nussbaum@loria.fr LORIA / AlGorille |
| http://www.loria.fr/~lnussbau/ +33 3 54 95 86 19 |
^ permalink raw reply
* how to utilize multi tx queue to send packet?
From: zhou rui @ 2011-03-10 9:44 UTC (permalink / raw)
To: netdev, johann.baudy
hi
I am doing some test according to the
website:http://wiki.ipxwarzone.com/index.php5?title=Linux_packet_mmap
use packet_mmap tx_ring to send packet.
I modified the sample code "packetmmap.c" to make it send packets have
different outer ip.
so that with the help of RSS, I can achieve higher throughput.
but one thing I saw at the tx side, is that all the packets are sent
via the same tx_queue,which is conflict with what I saw at the rx
side.
any idea to make it sent packets via different tx_queues? (spread
across the tx_queues)
thanks
jon
^ permalink raw reply
* Re: [PATCH v2] net: don't allow CAP_NET_ADMIN to load non-netdev kernel modules
From: Vasiliy Kulikov @ 2011-03-10 9:49 UTC (permalink / raw)
To: James Morris
Cc: David Miller, mjt, linux-kernel, arnd, mirqus, netdev, bhutchings,
kuznet, pekkas, yoshfuji, kaber, eric.dumazet, therbert, xiaosuo,
jesse, kees.cook, eugene, dan.j.rosenberg
In-Reply-To: <alpine.LRH.2.00.1103100953330.4485@tundra.namei.org>
James,
On Thu, Mar 10, 2011 at 09:53 +1100, James Morris wrote:
> I can submit it via my tree.
Thank you!
--
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments
^ permalink raw reply
* Re: [PATCH net-next 0/7] tg3: Cleanups
From: David Miller @ 2011-03-10 9:57 UTC (permalink / raw)
To: mcarlson; +Cc: netdev, stable
In-Reply-To: <1299725905-8498-1-git-send-email-mcarlson@broadcom.com>
From: "Matt Carlson" <mcarlson@broadcom.com>
Date: Wed, 9 Mar 2011 18:58:18 -0800
> This patchset adds a 5719 workaround, VPD RODATA checksum verification,
> and some code cleanups
Looks good, all applied, thanks.
^ permalink raw reply
* [PATCH 0/8] macb: add support for Cadence GEM
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
This patch series extends the Atmel MACB driver to support the Cadence
GEM (Gigabit Ethernet MAC) to support 10/100 operation. The GEM is
based on the MACB block but has a few moved registers and bitfields.
This patch series attempts to use the MACB accessors where block
functionallity is identical and only overrides to GEM specific
acccessors when needed.
This has been runtested on a board with a Cadence GEM and compile tested
for all at91 configurations and a number of avr32 configurations.
Jamie Iles (8):
macb: unify at91 and avr32 platform data
macb: detect hclk presence from platform data
macb: convert printk to pr_ and friends
macb: initial support for Cadence GEM
macb: handle HW address registers for GEM devices
macb: support higher rate GEM MDIO clock divisors
macb: support statistics for GEM devices
macb: support data bus widths > 32 bits
arch/arm/mach-at91/at572d940hf_devices.c | 6 +-
arch/arm/mach-at91/at91cap9_devices.c | 6 +-
arch/arm/mach-at91/at91rm9200_devices.c | 6 +-
arch/arm/mach-at91/at91sam9260_devices.c | 6 +-
arch/arm/mach-at91/at91sam9263_devices.c | 6 +-
arch/arm/mach-at91/at91sam9g45_devices.c | 6 +-
arch/arm/mach-at91/board-1arm.c | 2 +-
arch/arm/mach-at91/board-afeb-9260v1.c | 2 +-
arch/arm/mach-at91/board-at572d940hf_ek.c | 2 +-
arch/arm/mach-at91/board-cam60.c | 2 +-
arch/arm/mach-at91/board-cap9adk.c | 2 +-
arch/arm/mach-at91/board-carmeva.c | 2 +-
arch/arm/mach-at91/board-cpu9krea.c | 2 +-
arch/arm/mach-at91/board-cpuat91.c | 2 +-
arch/arm/mach-at91/board-csb337.c | 2 +-
arch/arm/mach-at91/board-csb637.c | 2 +-
arch/arm/mach-at91/board-eb9200.c | 2 +-
arch/arm/mach-at91/board-ecbat91.c | 2 +-
arch/arm/mach-at91/board-eco920.c | 2 +-
arch/arm/mach-at91/board-foxg20.c | 2 +-
arch/arm/mach-at91/board-gsia18s.c | 2 +-
arch/arm/mach-at91/board-kafa.c | 2 +-
arch/arm/mach-at91/board-kb9202.c | 2 +-
arch/arm/mach-at91/board-neocore926.c | 2 +-
arch/arm/mach-at91/board-pcontrol-g20.c | 2 +-
arch/arm/mach-at91/board-picotux200.c | 2 +-
arch/arm/mach-at91/board-qil-a9260.c | 2 +-
arch/arm/mach-at91/board-rm9200dk.c | 2 +-
arch/arm/mach-at91/board-rm9200ek.c | 2 +-
arch/arm/mach-at91/board-sam9-l9260.c | 2 +-
arch/arm/mach-at91/board-sam9260ek.c | 2 +-
arch/arm/mach-at91/board-sam9263ek.c | 2 +-
arch/arm/mach-at91/board-sam9g20ek.c | 2 +-
arch/arm/mach-at91/board-sam9m10g45ek.c | 2 +-
arch/arm/mach-at91/board-snapper9260.c | 2 +-
arch/arm/mach-at91/board-stamp9g20.c | 2 +-
arch/arm/mach-at91/board-usb-a9260.c | 2 +-
arch/arm/mach-at91/board-usb-a9263.c | 2 +-
arch/arm/mach-at91/board-yl-9200.c | 2 +-
arch/arm/mach-at91/include/mach/board.h | 14 +-
arch/avr32/mach-at32ap/at32ap700x.c | 2 +
arch/avr32/mach-at32ap/include/mach/board.h | 5 +-
drivers/net/Kconfig | 8 +-
drivers/net/macb.c | 294 +++++++++++++++++++--------
drivers/net/macb.h | 90 ++++++++-
include/linux/platform_data/macb.h | 17 ++
46 files changed, 381 insertions(+), 151 deletions(-)
create mode 100644 include/linux/platform_data/macb.h
--
1.7.4
^ permalink raw reply
* [PATCH 1/8] macb: unify at91 and avr32 platform data
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
Both at91 and avr32 defines its own platform data structure for
the macb driver and both share common structures though at91
includes a currently unused phy_irq_pin. Create a common
eth_platform_data for macb that both at91 and avr32 can use. In
future we can use this to support other architectures that use the
same IP block with the macb driver.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
arch/arm/mach-at91/at572d940hf_devices.c | 6 +++---
arch/arm/mach-at91/at91cap9_devices.c | 6 +++---
arch/arm/mach-at91/at91rm9200_devices.c | 6 +++---
arch/arm/mach-at91/at91sam9260_devices.c | 6 +++---
arch/arm/mach-at91/at91sam9263_devices.c | 6 +++---
arch/arm/mach-at91/at91sam9g45_devices.c | 6 +++---
arch/arm/mach-at91/board-1arm.c | 2 +-
arch/arm/mach-at91/board-afeb-9260v1.c | 2 +-
arch/arm/mach-at91/board-at572d940hf_ek.c | 2 +-
arch/arm/mach-at91/board-cam60.c | 2 +-
arch/arm/mach-at91/board-cap9adk.c | 2 +-
arch/arm/mach-at91/board-carmeva.c | 2 +-
arch/arm/mach-at91/board-cpu9krea.c | 2 +-
arch/arm/mach-at91/board-cpuat91.c | 2 +-
arch/arm/mach-at91/board-csb337.c | 2 +-
arch/arm/mach-at91/board-csb637.c | 2 +-
arch/arm/mach-at91/board-eb9200.c | 2 +-
arch/arm/mach-at91/board-ecbat91.c | 2 +-
arch/arm/mach-at91/board-eco920.c | 2 +-
arch/arm/mach-at91/board-foxg20.c | 2 +-
arch/arm/mach-at91/board-gsia18s.c | 2 +-
arch/arm/mach-at91/board-kafa.c | 2 +-
arch/arm/mach-at91/board-kb9202.c | 2 +-
arch/arm/mach-at91/board-neocore926.c | 2 +-
arch/arm/mach-at91/board-pcontrol-g20.c | 2 +-
arch/arm/mach-at91/board-picotux200.c | 2 +-
arch/arm/mach-at91/board-qil-a9260.c | 2 +-
arch/arm/mach-at91/board-rm9200dk.c | 2 +-
arch/arm/mach-at91/board-rm9200ek.c | 2 +-
arch/arm/mach-at91/board-sam9-l9260.c | 2 +-
arch/arm/mach-at91/board-sam9260ek.c | 2 +-
arch/arm/mach-at91/board-sam9263ek.c | 2 +-
arch/arm/mach-at91/board-sam9g20ek.c | 2 +-
arch/arm/mach-at91/board-sam9m10g45ek.c | 2 +-
arch/arm/mach-at91/board-snapper9260.c | 2 +-
arch/arm/mach-at91/board-stamp9g20.c | 2 +-
arch/arm/mach-at91/board-usb-a9260.c | 2 +-
arch/arm/mach-at91/board-usb-a9263.c | 2 +-
arch/arm/mach-at91/board-yl-9200.c | 2 +-
arch/arm/mach-at91/include/mach/board.h | 14 ++------------
arch/avr32/mach-at32ap/include/mach/board.h | 5 +----
drivers/net/macb.c | 4 +---
include/linux/platform_data/macb.h | 10 ++++++++++
43 files changed, 65 insertions(+), 70 deletions(-)
create mode 100644 include/linux/platform_data/macb.h
diff --git a/arch/arm/mach-at91/at572d940hf_devices.c b/arch/arm/mach-at91/at572d940hf_devices.c
index 0fc20a2..6e1b9a3 100644
--- a/arch/arm/mach-at91/at572d940hf_devices.c
+++ b/arch/arm/mach-at91/at572d940hf_devices.c
@@ -140,7 +140,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {}
#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
static u64 eth_dmamask = DMA_BIT_MASK(32);
-static struct at91_eth_data eth_data;
+static struct eth_platform_data eth_data;
static struct resource eth_resources[] = {
[0] = {
@@ -167,7 +167,7 @@ static struct platform_device at572d940hf_eth_device = {
.num_resources = ARRAY_SIZE(eth_resources),
};
-void __init at91_add_device_eth(struct at91_eth_data *data)
+void __init at91_add_device_eth(struct eth_platform_data *data)
{
if (!data)
return;
@@ -196,7 +196,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)
platform_device_register(&at572d940hf_eth_device);
}
#else
-void __init at91_add_device_eth(struct at91_eth_data *data) {}
+void __init at91_add_device_eth(struct eth_platform_data *data) {}
#endif
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c
index d1f775e..e041743 100644
--- a/arch/arm/mach-at91/at91cap9_devices.c
+++ b/arch/arm/mach-at91/at91cap9_devices.c
@@ -198,7 +198,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {}
#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
static u64 eth_dmamask = DMA_BIT_MASK(32);
-static struct at91_eth_data eth_data;
+static struct eth_platform_data eth_data;
static struct resource eth_resources[] = {
[0] = {
@@ -225,7 +225,7 @@ static struct platform_device at91cap9_eth_device = {
.num_resources = ARRAY_SIZE(eth_resources),
};
-void __init at91_add_device_eth(struct at91_eth_data *data)
+void __init at91_add_device_eth(struct eth_platform_data *data)
{
if (!data)
return;
@@ -262,7 +262,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)
platform_device_register(&at91cap9_eth_device);
}
#else
-void __init at91_add_device_eth(struct at91_eth_data *data) {}
+void __init at91_add_device_eth(struct eth_platform_data *data) {}
#endif
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
index 7b53922..5f873d5 100644
--- a/arch/arm/mach-at91/at91rm9200_devices.c
+++ b/arch/arm/mach-at91/at91rm9200_devices.c
@@ -127,7 +127,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {}
#if defined(CONFIG_ARM_AT91_ETHER) || defined(CONFIG_ARM_AT91_ETHER_MODULE)
static u64 eth_dmamask = DMA_BIT_MASK(32);
-static struct at91_eth_data eth_data;
+static struct eth_platform_data eth_data;
static struct resource eth_resources[] = {
[0] = {
@@ -154,7 +154,7 @@ static struct platform_device at91rm9200_eth_device = {
.num_resources = ARRAY_SIZE(eth_resources),
};
-void __init at91_add_device_eth(struct at91_eth_data *data)
+void __init at91_add_device_eth(struct eth_platform_data *data)
{
if (!data)
return;
@@ -191,7 +191,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)
platform_device_register(&at91rm9200_eth_device);
}
#else
-void __init at91_add_device_eth(struct at91_eth_data *data) {}
+void __init at91_add_device_eth(struct eth_platform_data *data) {}
#endif
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index 07eb7b0..e172b46 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -128,7 +128,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {}
#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
static u64 eth_dmamask = DMA_BIT_MASK(32);
-static struct at91_eth_data eth_data;
+static struct eth_platform_data eth_data;
static struct resource eth_resources[] = {
[0] = {
@@ -155,7 +155,7 @@ static struct platform_device at91sam9260_eth_device = {
.num_resources = ARRAY_SIZE(eth_resources),
};
-void __init at91_add_device_eth(struct at91_eth_data *data)
+void __init at91_add_device_eth(struct eth_platform_data *data)
{
if (!data)
return;
@@ -192,7 +192,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)
platform_device_register(&at91sam9260_eth_device);
}
#else
-void __init at91_add_device_eth(struct at91_eth_data *data) {}
+void __init at91_add_device_eth(struct eth_platform_data *data) {}
#endif
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
index fb5c23a..416613c 100644
--- a/arch/arm/mach-at91/at91sam9263_devices.c
+++ b/arch/arm/mach-at91/at91sam9263_devices.c
@@ -138,7 +138,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {}
#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
static u64 eth_dmamask = DMA_BIT_MASK(32);
-static struct at91_eth_data eth_data;
+static struct eth_platform_data eth_data;
static struct resource eth_resources[] = {
[0] = {
@@ -165,7 +165,7 @@ static struct platform_device at91sam9263_eth_device = {
.num_resources = ARRAY_SIZE(eth_resources),
};
-void __init at91_add_device_eth(struct at91_eth_data *data)
+void __init at91_add_device_eth(struct eth_platform_data *data)
{
if (!data)
return;
@@ -202,7 +202,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)
platform_device_register(&at91sam9263_eth_device);
}
#else
-void __init at91_add_device_eth(struct at91_eth_data *data) {}
+void __init at91_add_device_eth(struct eth_platform_data *data) {}
#endif
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index 1e8f275..0867343 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -283,7 +283,7 @@ void __init at91_add_device_usba(struct usba_platform_data *data) {}
#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
static u64 eth_dmamask = DMA_BIT_MASK(32);
-static struct at91_eth_data eth_data;
+static struct eth_platform_data eth_data;
static struct resource eth_resources[] = {
[0] = {
@@ -310,7 +310,7 @@ static struct platform_device at91sam9g45_eth_device = {
.num_resources = ARRAY_SIZE(eth_resources),
};
-void __init at91_add_device_eth(struct at91_eth_data *data)
+void __init at91_add_device_eth(struct eth_platform_data *data)
{
if (!data)
return;
@@ -347,7 +347,7 @@ void __init at91_add_device_eth(struct at91_eth_data *data)
platform_device_register(&at91sam9g45_eth_device);
}
#else
-void __init at91_add_device_eth(struct at91_eth_data *data) {}
+void __init at91_add_device_eth(struct eth_platform_data *data) {}
#endif
diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c
index 8a3fc84..1961d1e 100644
--- a/arch/arm/mach-at91/board-1arm.c
+++ b/arch/arm/mach-at91/board-1arm.c
@@ -64,7 +64,7 @@ static void __init onearm_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata onearm_eth_data = {
+static struct eth_platform_data __initdata onearm_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c
index cba7f77..8943ff3 100644
--- a/arch/arm/mach-at91/board-afeb-9260v1.c
+++ b/arch/arm/mach-at91/board-afeb-9260v1.c
@@ -109,7 +109,7 @@ static struct spi_board_info afeb9260_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata afeb9260_macb_data = {
+static struct eth_platform_data __initdata afeb9260_macb_data = {
.phy_irq_pin = AT91_PIN_PA9,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-at572d940hf_ek.c b/arch/arm/mach-at91/board-at572d940hf_ek.c
index 3929f1c..a17d8e7 100644
--- a/arch/arm/mach-at91/board-at572d940hf_ek.c
+++ b/arch/arm/mach-at91/board-at572d940hf_ek.c
@@ -104,7 +104,7 @@ static struct at91_mmc_data __initdata eb_mmc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata eb_eth_data = {
+static struct eth_platform_data __initdata eb_eth_data = {
.phy_irq_pin = AT91_PIN_PB25,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
index b54e3e6..8cc6bfc 100644
--- a/arch/arm/mach-at91/board-cam60.c
+++ b/arch/arm/mach-at91/board-cam60.c
@@ -121,7 +121,7 @@ static struct spi_board_info cam60_spi_devices[] __initdata = {
/*
* MACB Ethernet device
*/
-static struct __initdata at91_eth_data cam60_macb_data = {
+static struct __initdata eth_platform_data cam60_macb_data = {
.phy_irq_pin = AT91_PIN_PB5,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c
index e727444..8f9bc88 100644
--- a/arch/arm/mach-at91/board-cap9adk.c
+++ b/arch/arm/mach-at91/board-cap9adk.c
@@ -158,7 +158,7 @@ static struct at91_mmc_data __initdata cap9adk_mmc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata cap9adk_macb_data = {
+static struct eth_platform_data __initdata cap9adk_macb_data = {
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c
index 2e74a19..dbc9061 100644
--- a/arch/arm/mach-at91/board-carmeva.c
+++ b/arch/arm/mach-at91/board-carmeva.c
@@ -62,7 +62,7 @@ static void __init carmeva_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata carmeva_eth_data = {
+static struct eth_platform_data __initdata carmeva_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c
index 3838594..a7d0843 100644
--- a/arch/arm/mach-at91/board-cpu9krea.c
+++ b/arch/arm/mach-at91/board-cpu9krea.c
@@ -104,7 +104,7 @@ static struct at91_udc_data __initdata cpu9krea_udc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata cpu9krea_macb_data = {
+static struct eth_platform_data __initdata cpu9krea_macb_data = {
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c
index 2f4dd8c..52909f0 100644
--- a/arch/arm/mach-at91/board-cpuat91.c
+++ b/arch/arm/mach-at91/board-cpuat91.c
@@ -83,7 +83,7 @@ static void __init cpuat91_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata cpuat91_eth_data = {
+static struct eth_platform_data __initdata cpuat91_eth_data = {
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c
index 464839d..7e062fa 100644
--- a/arch/arm/mach-at91/board-csb337.c
+++ b/arch/arm/mach-at91/board-csb337.c
@@ -63,7 +63,7 @@ static void __init csb337_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata csb337_eth_data = {
+static struct eth_platform_data __initdata csb337_eth_data = {
.phy_irq_pin = AT91_PIN_PC2,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c
index 431688c..fb8456e 100644
--- a/arch/arm/mach-at91/board-csb637.c
+++ b/arch/arm/mach-at91/board-csb637.c
@@ -57,7 +57,7 @@ static void __init csb637_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata csb637_eth_data = {
+static struct eth_platform_data __initdata csb637_eth_data = {
.phy_irq_pin = AT91_PIN_PC0,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c
index 6cf6566..ac71845 100644
--- a/arch/arm/mach-at91/board-eb9200.c
+++ b/arch/arm/mach-at91/board-eb9200.c
@@ -65,7 +65,7 @@ static void __init eb9200_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata eb9200_eth_data = {
+static struct eth_platform_data __initdata eb9200_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c
index de2fd04..aa8fb2a 100644
--- a/arch/arm/mach-at91/board-ecbat91.c
+++ b/arch/arm/mach-at91/board-ecbat91.c
@@ -65,7 +65,7 @@ static void __init ecb_at91init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata ecb_at91eth_data = {
+static struct eth_platform_data __initdata ecb_at91eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c
index a158a0c..a1e9173 100644
--- a/arch/arm/mach-at91/board-eco920.c
+++ b/arch/arm/mach-at91/board-eco920.c
@@ -47,7 +47,7 @@ static void __init eco920_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata eco920_eth_data = {
+static struct eth_platform_data __initdata eco920_eth_data = {
.phy_irq_pin = AT91_PIN_PC2,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c
index dfc7dfe..b7630b9 100644
--- a/arch/arm/mach-at91/board-foxg20.c
+++ b/arch/arm/mach-at91/board-foxg20.c
@@ -141,7 +141,7 @@ static struct spi_board_info foxg20_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata foxg20_macb_data = {
+static struct eth_platform_data __initdata foxg20_macb_data = {
.phy_irq_pin = AT91_PIN_PA7,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c
index bc28136..0405b17 100644
--- a/arch/arm/mach-at91/board-gsia18s.c
+++ b/arch/arm/mach-at91/board-gsia18s.c
@@ -98,7 +98,7 @@ static struct at91_udc_data __initdata udc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata macb_data = {
+static struct eth_platform_data __initdata macb_data = {
.phy_irq_pin = AT91_PIN_PA28,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c
index d2e1f4e..f45fc82 100644
--- a/arch/arm/mach-at91/board-kafa.c
+++ b/arch/arm/mach-at91/board-kafa.c
@@ -62,7 +62,7 @@ static void __init kafa_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata kafa_eth_data = {
+static struct eth_platform_data __initdata kafa_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
index a13d206..88a40c2 100644
--- a/arch/arm/mach-at91/board-kb9202.c
+++ b/arch/arm/mach-at91/board-kb9202.c
@@ -71,7 +71,7 @@ static void __init kb9202_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata kb9202_eth_data = {
+static struct eth_platform_data __initdata kb9202_eth_data = {
.phy_irq_pin = AT91_PIN_PB29,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
index fe5f1d4..97890d8 100644
--- a/arch/arm/mach-at91/board-neocore926.c
+++ b/arch/arm/mach-at91/board-neocore926.c
@@ -161,7 +161,7 @@ static struct at91_mmc_data __initdata neocore926_mmc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata neocore926_macb_data = {
+static struct eth_platform_data __initdata neocore926_macb_data = {
.phy_irq_pin = AT91_PIN_PE31,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c
index feb6578..03e8286 100644
--- a/arch/arm/mach-at91/board-pcontrol-g20.c
+++ b/arch/arm/mach-at91/board-pcontrol-g20.c
@@ -129,7 +129,7 @@ static struct at91_udc_data __initdata pcontrol_g20_udc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata macb_data = {
+static struct eth_platform_data __initdata macb_data = {
.phy_irq_pin = AT91_PIN_PA28,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c
index 55dad3a..3f3cd9c 100644
--- a/arch/arm/mach-at91/board-picotux200.c
+++ b/arch/arm/mach-at91/board-picotux200.c
@@ -65,7 +65,7 @@ static void __init picotux200_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata picotux200_eth_data = {
+static struct eth_platform_data __initdata picotux200_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c
index 69d15a8..165e43e 100644
--- a/arch/arm/mach-at91/board-qil-a9260.c
+++ b/arch/arm/mach-at91/board-qil-a9260.c
@@ -110,7 +110,7 @@ static struct spi_board_info ek_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PA31,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c
index 4c1047c..c31cdda 100644
--- a/arch/arm/mach-at91/board-rm9200dk.c
+++ b/arch/arm/mach-at91/board-rm9200dk.c
@@ -70,7 +70,7 @@ static void __init dk_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata dk_eth_data = {
+static struct eth_platform_data __initdata dk_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c
index 9df1be8..0fe93aa 100644
--- a/arch/arm/mach-at91/board-rm9200ek.c
+++ b/arch/arm/mach-at91/board-rm9200ek.c
@@ -70,7 +70,7 @@ static void __init ek_init_irq(void)
at91rm9200_init_interrupts(NULL);
}
-static struct at91_eth_data __initdata ek_eth_data = {
+static struct eth_platform_data __initdata ek_eth_data = {
.phy_irq_pin = AT91_PIN_PC4,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
index 25a26be..145884d 100644
--- a/arch/arm/mach-at91/board-sam9-l9260.c
+++ b/arch/arm/mach-at91/board-sam9-l9260.c
@@ -115,7 +115,7 @@ static struct spi_board_info ek_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PA7,
.is_rmii = 0,
};
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c
index de1816e..fcaedf5 100644
--- a/arch/arm/mach-at91/board-sam9260ek.c
+++ b/arch/arm/mach-at91/board-sam9260ek.c
@@ -156,7 +156,7 @@ static struct spi_board_info ek_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PA7,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
index bfe490d..4f799a4 100644
--- a/arch/arm/mach-at91/board-sam9263ek.c
+++ b/arch/arm/mach-at91/board-sam9263ek.c
@@ -163,7 +163,7 @@ static struct at91_mmc_data __initdata ek_mmc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PE31,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
index ca8198b..d54b3e6 100644
--- a/arch/arm/mach-at91/board-sam9g20ek.c
+++ b/arch/arm/mach-at91/board-sam9g20ek.c
@@ -128,7 +128,7 @@ static struct spi_board_info ek_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PA7,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
index 6c999db..7df85eb 100644
--- a/arch/arm/mach-at91/board-sam9m10g45ek.c
+++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
@@ -120,7 +120,7 @@ static struct mci_platform_data __initdata mci1_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PD5,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c
index 17f7d9b..6902e7d 100644
--- a/arch/arm/mach-at91/board-snapper9260.c
+++ b/arch/arm/mach-at91/board-snapper9260.c
@@ -70,7 +70,7 @@ static struct at91_udc_data __initdata snapper9260_udc_data = {
.vbus_polled = 1,
};
-static struct at91_eth_data snapper9260_macb_data = {
+static struct eth_platform_data snapper9260_macb_data = {
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c
index f8902b1..9a7c586 100644
--- a/arch/arm/mach-at91/board-stamp9g20.c
+++ b/arch/arm/mach-at91/board-stamp9g20.c
@@ -163,7 +163,7 @@ static struct at91_udc_data __initdata stamp9g20evb_udc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata macb_data = {
+static struct eth_platform_data __initdata macb_data = {
.phy_irq_pin = AT91_PIN_PA28,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-usb-a9260.c b/arch/arm/mach-at91/board-usb-a9260.c
index 07784ba..c756389 100644
--- a/arch/arm/mach-at91/board-usb-a9260.c
+++ b/arch/arm/mach-at91/board-usb-a9260.c
@@ -84,7 +84,7 @@ static struct at91_udc_data __initdata ek_udc_data = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PA31,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-usb-a9263.c b/arch/arm/mach-at91/board-usb-a9263.c
index b614508..e6c260d 100644
--- a/arch/arm/mach-at91/board-usb-a9263.c
+++ b/arch/arm/mach-at91/board-usb-a9263.c
@@ -97,7 +97,7 @@ static struct spi_board_info ek_spi_devices[] = {
/*
* MACB Ethernet device
*/
-static struct at91_eth_data __initdata ek_macb_data = {
+static struct eth_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PE31,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c
index e0f0080..102dfc1 100644
--- a/arch/arm/mach-at91/board-yl-9200.c
+++ b/arch/arm/mach-at91/board-yl-9200.c
@@ -112,7 +112,7 @@ static struct gpio_led yl9200_leds[] = {
/*
* Ethernet
*/
-static struct at91_eth_data __initdata yl9200_eth_data = {
+static struct eth_platform_data __initdata yl9200_eth_data = {
.phy_irq_pin = AT91_PIN_PB28,
.is_rmii = 1,
};
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index 2b499eb..d970420 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -40,6 +40,7 @@
#include <linux/atmel-mci.h>
#include <sound/atmel-ac97c.h>
#include <linux/serial.h>
+#include <linux/platform_data/macb.h>
/* USB Device */
struct at91_udc_data {
@@ -81,18 +82,7 @@ extern void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data)
/* atmel-mci platform config */
extern void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data);
- /* Ethernet (EMAC & MACB) */
-struct at91_eth_data {
- u32 phy_mask;
- u8 phy_irq_pin; /* PHY IRQ */
- u8 is_rmii; /* using RMII interface? */
-};
-extern void __init at91_add_device_eth(struct at91_eth_data *data);
-
-#if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91SAM9G20) || defined(CONFIG_ARCH_AT91CAP9) \
- || defined(CONFIG_ARCH_AT91SAM9G45) || defined(CONFIG_ARCH_AT572D940HF)
-#define eth_platform_data at91_eth_data
-#endif
+extern void __init at91_add_device_eth(struct eth_platform_data *data);
/* USB Host */
struct at91_usbh_data {
diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h
index 6174020..3d79356 100644
--- a/arch/avr32/mach-at32ap/include/mach/board.h
+++ b/arch/avr32/mach-at32ap/include/mach/board.h
@@ -6,6 +6,7 @@
#include <linux/types.h>
#include <linux/serial.h>
+#include <linux/platform_data/macb.h>
#define GPIO_PIN_NONE (-1)
@@ -41,10 +42,6 @@ struct atmel_uart_data {
void at32_map_usart(unsigned int hw_id, unsigned int line, int flags);
struct platform_device *at32_add_device_usart(unsigned int id);
-struct eth_platform_data {
- u32 phy_mask;
- u8 is_rmii;
-};
struct platform_device *
at32_add_device_eth(unsigned int id, struct eth_platform_data *data);
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 79ccb54..bfd3601 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -18,12 +18,10 @@
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/dma-mapping.h>
+#include <linux/platform_data/macb.h>
#include <linux/platform_device.h>
#include <linux/phy.h>
-#include <mach/board.h>
-#include <mach/cpu.h>
-
#include "macb.h"
#define RX_BUFFER_SIZE 128
diff --git a/include/linux/platform_data/macb.h b/include/linux/platform_data/macb.h
new file mode 100644
index 0000000..beddfd3
--- /dev/null
+++ b/include/linux/platform_data/macb.h
@@ -0,0 +1,10 @@
+#ifndef __MACB_PDATA_H__
+#define __MACB_PDATA_H__
+
+struct eth_platform_data {
+ u32 phy_mask;
+ u8 phy_irq_pin; /* PHY IRQ */
+ u8 is_rmii; /* using RMII interface? */
+};
+
+#endif /* __MACB_PDATA_H__ */
--
1.7.4
^ permalink raw reply related
* [PATCH 2/8] macb: detect hclk presence from platform data
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
Rather than detecting whether we need to do a clk_get() and enable on
the "hclk" based on the kernel configuration, add an extra field to the
platform data. This makes it cleaner to add more supported
architectures without lots of ifdeffery.
This requires that all instantiations of the device have platform data
defined but that is the case currently anyway.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
arch/avr32/mach-at32ap/at32ap700x.c | 2 +
drivers/net/macb.c | 77 ++++++++++++++++++-----------------
include/linux/platform_data/macb.h | 1 +
3 files changed, 43 insertions(+), 37 deletions(-)
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index 2747cde..2abcafd 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -1088,6 +1088,8 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
struct platform_device *pdev;
u32 pin_mask;
+ data->have_hclk = 1;
+
switch (id) {
case 0:
pdev = &macb0_device;
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index bfd3601..ae98fee 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -246,9 +246,7 @@ static int macb_mii_init(struct macb *bp)
bp->mii_bus->parent = &bp->dev->dev;
pdata = bp->pdev->dev.platform_data;
- if (pdata)
- bp->mii_bus->phy_mask = pdata->phy_mask;
-
+ bp->mii_bus->phy_mask = pdata->phy_mask;
bp->mii_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
if (!bp->mii_bus->irq) {
err = -ENOMEM;
@@ -1103,9 +1101,14 @@ static const struct net_device_ops macb_netdev_ops = {
#endif
};
+#ifdef CONFIG_ARCH_AT91
+#define PCLK_NAME "macb_clk"
+#else /* CONFIG_ARCH_AT91 */
+#define PCLK_NAME "pclk"
+#endif
+
static int __init macb_probe(struct platform_device *pdev)
{
- struct eth_platform_data *pdata;
struct resource *regs;
struct net_device *dev;
struct macb *bp;
@@ -1113,6 +1116,7 @@ static int __init macb_probe(struct platform_device *pdev)
unsigned long pclk_hz;
u32 config;
int err = -ENXIO;
+ struct eth_platform_data *pdata;
regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!regs) {
@@ -1120,6 +1124,13 @@ static int __init macb_probe(struct platform_device *pdev)
goto err_out;
}
+ err = -EINVAL;
+ pdata = dev_get_platdata(&pdev->dev);
+ if (!pdata) {
+ dev_err(&pdev->dev, "no platform data present\n");
+ goto err_out;
+ }
+
err = -ENOMEM;
dev = alloc_etherdev(sizeof(*bp));
if (!dev) {
@@ -1138,28 +1149,22 @@ static int __init macb_probe(struct platform_device *pdev)
spin_lock_init(&bp->lock);
-#if defined(CONFIG_ARCH_AT91)
- bp->pclk = clk_get(&pdev->dev, "macb_clk");
+ bp->pclk = clk_get(&pdev->dev, PCLK_NAME);
if (IS_ERR(bp->pclk)) {
dev_err(&pdev->dev, "failed to get macb_clk\n");
goto err_out_free_dev;
}
clk_enable(bp->pclk);
-#else
- bp->pclk = clk_get(&pdev->dev, "pclk");
- if (IS_ERR(bp->pclk)) {
- dev_err(&pdev->dev, "failed to get pclk\n");
- goto err_out_free_dev;
- }
- bp->hclk = clk_get(&pdev->dev, "hclk");
- if (IS_ERR(bp->hclk)) {
- dev_err(&pdev->dev, "failed to get hclk\n");
- goto err_out_put_pclk;
+
+ if (pdata->have_hclk) {
+ bp->hclk = clk_get(&pdev->dev, "hclk");
+ if (IS_ERR(bp->hclk)) {
+ dev_err(&pdev->dev, "failed to get hclk\n");
+ goto err_out_put_pclk;
+ }
+ clk_enable(bp->hclk);
}
- clk_enable(bp->pclk);
- clk_enable(bp->hclk);
-#endif
bp->regs = ioremap(regs->start, regs->end - regs->start + 1);
if (!bp->regs) {
@@ -1197,9 +1202,8 @@ static int __init macb_probe(struct platform_device *pdev)
macb_writel(bp, NCFGR, config);
macb_get_hwaddr(bp);
- pdata = pdev->dev.platform_data;
- if (pdata && pdata->is_rmii)
+ if (pdata->is_rmii)
#if defined(CONFIG_ARCH_AT91)
macb_writel(bp, USRIO, (MACB_BIT(RMII) | MACB_BIT(CLKEN)) );
#else
@@ -1243,14 +1247,12 @@ err_out_free_irq:
err_out_iounmap:
iounmap(bp->regs);
err_out_disable_clocks:
-#ifndef CONFIG_ARCH_AT91
- clk_disable(bp->hclk);
- clk_put(bp->hclk);
-#endif
+ if (pdata->have_hclk) {
+ clk_disable(bp->hclk);
+ clk_put(bp->hclk);
+ }
clk_disable(bp->pclk);
-#ifndef CONFIG_ARCH_AT91
err_out_put_pclk:
-#endif
clk_put(bp->pclk);
err_out_free_dev:
free_netdev(dev);
@@ -1263,6 +1265,7 @@ static int __exit macb_remove(struct platform_device *pdev)
{
struct net_device *dev;
struct macb *bp;
+ struct eth_platform_data *pdata = dev_get_platdata(&pdev->dev);
dev = platform_get_drvdata(pdev);
@@ -1276,10 +1279,10 @@ static int __exit macb_remove(struct platform_device *pdev)
unregister_netdev(dev);
free_irq(dev->irq, dev);
iounmap(bp->regs);
-#ifndef CONFIG_ARCH_AT91
- clk_disable(bp->hclk);
- clk_put(bp->hclk);
-#endif
+ if (pdata->have_hclk) {
+ clk_disable(bp->hclk);
+ clk_put(bp->hclk);
+ }
clk_disable(bp->pclk);
clk_put(bp->pclk);
free_netdev(dev);
@@ -1294,12 +1297,12 @@ static int macb_suspend(struct platform_device *pdev, pm_message_t state)
{
struct net_device *netdev = platform_get_drvdata(pdev);
struct macb *bp = netdev_priv(netdev);
+ struct eth_platform_data *pdata = dev_get_platdata(&pdev->dev);
netif_device_detach(netdev);
-#ifndef CONFIG_ARCH_AT91
- clk_disable(bp->hclk);
-#endif
+ if (pdata->have_hclk)
+ clk_disable(bp->hclk);
clk_disable(bp->pclk);
return 0;
@@ -1309,11 +1312,11 @@ static int macb_resume(struct platform_device *pdev)
{
struct net_device *netdev = platform_get_drvdata(pdev);
struct macb *bp = netdev_priv(netdev);
+ struct eth_platform_data *pdata = dev_get_platdata(&pdev->dev);
clk_enable(bp->pclk);
-#ifndef CONFIG_ARCH_AT91
- clk_enable(bp->hclk);
-#endif
+ if (pdata->have_hclk)
+ clk_enable(bp->hclk);
netif_device_attach(netdev);
diff --git a/include/linux/platform_data/macb.h b/include/linux/platform_data/macb.h
index beddfd3..ae18579 100644
--- a/include/linux/platform_data/macb.h
+++ b/include/linux/platform_data/macb.h
@@ -5,6 +5,7 @@ struct eth_platform_data {
u32 phy_mask;
u8 phy_irq_pin; /* PHY IRQ */
u8 is_rmii; /* using RMII interface? */
+ int have_hclk; /* have hclk as well as pclk */
};
#endif /* __MACB_PDATA_H__ */
--
1.7.4
^ permalink raw reply related
* [PATCH 3/8] macb: convert printk to pr_ and friends
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
macb is already using the dev_dbg() and friends helpers so use pr_foo()
along with a pr_fmt() definition to make the printing a little cleaner.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/macb.c | 34 +++++++++++++++++-----------------
1 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index ae98fee..5d676ad 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -8,6 +8,7 @@
* published by the Free Software Foundation.
*/
+#define pr_fmt(fmt) "macb: " fmt
#include <linux/clk.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
@@ -175,11 +176,11 @@ static void macb_handle_link_change(struct net_device *dev)
if (status_change) {
if (phydev->link)
- printk(KERN_INFO "%s: link up (%d/%s)\n",
+ pr_info("%s: link up (%d/%s)\n",
dev->name, phydev->speed,
DUPLEX_FULL == phydev->duplex ? "Full":"Half");
else
- printk(KERN_INFO "%s: link down\n", dev->name);
+ pr_info("%s: link down\n", dev->name);
}
}
@@ -193,7 +194,7 @@ static int macb_mii_probe(struct net_device *dev)
phydev = phy_find_first(bp->mii_bus);
if (!phydev) {
- printk (KERN_ERR "%s: no PHY found\n", dev->name);
+ pr_err("%s: no PHY found\n", dev->name);
return -1;
}
@@ -206,7 +207,7 @@ static int macb_mii_probe(struct net_device *dev)
PHY_INTERFACE_MODE_RMII :
PHY_INTERFACE_MODE_MII);
if (ret) {
- printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
+ pr_err("%s: Could not attach to PHY\n", dev->name);
return ret;
}
@@ -303,7 +304,7 @@ static void macb_tx(struct macb *bp)
if (status & (MACB_BIT(UND) | MACB_BIT(TSR_RLE))) {
int i;
- printk(KERN_ERR "%s: TX %s, resetting buffers\n",
+ pr_err("%s: TX %s, resetting buffers\n",
bp->dev->name, status & MACB_BIT(UND) ?
"underrun" : "retry limit exceeded");
@@ -574,10 +575,11 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
if (status & MACB_BIT(HRESP)) {
/*
- * TODO: Reset the hardware, and maybe move the printk
- * to a lower-priority context as well (work queue?)
+ * TODO: Reset the hardware, and maybe move the
+ * pr_err to a lower-priority context as well (work
+ * queue?)
*/
- printk(KERN_ERR "%s: DMA bus error: HRESP not OK\n",
+ pr_err("%s: DMA bus error: HRESP not OK\n",
dev->name);
}
@@ -950,9 +952,8 @@ static int macb_open(struct net_device *dev)
err = macb_alloc_consistent(bp);
if (err) {
- printk(KERN_ERR
- "%s: Unable to allocate DMA memory (error %d)\n",
- dev->name, err);
+ pr_err("%s: Unable to allocate DMA memory (error %d)\n",
+ dev->name, err);
return err;
}
@@ -1177,9 +1178,8 @@ static int __init macb_probe(struct platform_device *pdev)
err = request_irq(dev->irq, macb_interrupt, IRQF_SAMPLE_RANDOM,
dev->name, dev);
if (err) {
- printk(KERN_ERR
- "%s: Unable to request IRQ %d (error %d)\n",
- dev->name, dev->irq, err);
+ pr_err("%s: Unable to request IRQ %d (error %d)\n",
+ dev->name, dev->irq, err);
goto err_out_iounmap;
}
@@ -1230,11 +1230,11 @@ static int __init macb_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, dev);
- printk(KERN_INFO "%s: Atmel MACB at 0x%08lx irq %d (%pM)\n",
- dev->name, dev->base_addr, dev->irq, dev->dev_addr);
+ pr_info("%s: Atmel MACB at 0x%08lx irq %d (%pM)\n",
+ dev->name, dev->base_addr, dev->irq, dev->dev_addr);
phydev = bp->phy_dev;
- printk(KERN_INFO "%s: attached PHY driver [%s] "
+ pr_info("%s: attached PHY driver [%s] "
"(mii_bus:phy_addr=%s, irq=%d)\n", dev->name,
phydev->drv->name, dev_name(&phydev->dev), phydev->irq);
--
1.7.4
^ permalink raw reply related
* [PATCH 4/8] macb: initial support for Cadence GEM
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
The Cadence GEM is based on the MACB Ethernet controller but has a few
small changes with regards to register and bitfield placement. This
patch adds a new platform driver for gem which sets allows the driver to
tell at runtime whether it is targetting a GEM device.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/Kconfig | 8 ++++--
drivers/net/macb.c | 53 ++++++++++++++++++++++++++++++++++++++++++--------
drivers/net/macb.h | 18 +++++++++++++++++
3 files changed, 67 insertions(+), 12 deletions(-)
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 6bd5caa..6de335a 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -223,12 +223,14 @@ menuconfig NET_ETHERNET
if NET_ETHERNET
config MACB
- tristate "Atmel MACB support"
+ tristate "Cadence MACB/GEM support"
depends on HAVE_NET_MACB
select PHYLIB
help
- The Atmel MACB ethernet interface is found on many AT32 and AT91
- parts. Say Y to include support for the MACB chip.
+ The Cadence MACB ethernet interface is found on many Atmel AT32 and
+ AT91 parts. This driver also supports the Cadence GEM (Gigabit
+ Ethernet MAC found in some ARM SoC devices). Note: the Gigabit mode
+ is not yet supported. Say Y to include support for the MACB/GEM chip.
To compile this driver as a module, choose M here: the module
will be called macb.
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 5d676ad..204afa6 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -1,5 +1,5 @@
/*
- * Atmel MACB Ethernet Controller driver
+ * Cadence MACB/GEM Ethernet Controller driver
*
* Copyright (C) 2004-2006 Atmel Corporation
*
@@ -7,7 +7,6 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
-
#define pr_fmt(fmt) "macb: " fmt
#include <linux/clk.h>
#include <linux/module.h>
@@ -1108,7 +1107,7 @@ static const struct net_device_ops macb_netdev_ops = {
#define PCLK_NAME "pclk"
#endif
-static int __init macb_probe(struct platform_device *pdev)
+static int __macb_probe(struct platform_device *pdev, int is_gem)
{
struct resource *regs;
struct net_device *dev;
@@ -1147,6 +1146,7 @@ static int __init macb_probe(struct platform_device *pdev)
bp = netdev_priv(dev);
bp->pdev = pdev;
bp->dev = dev;
+ bp->is_gem = is_gem;
spin_lock_init(&bp->lock);
@@ -1230,8 +1230,9 @@ static int __init macb_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, dev);
- pr_info("%s: Atmel MACB at 0x%08lx irq %d (%pM)\n",
- dev->name, dev->base_addr, dev->irq, dev->dev_addr);
+ pr_info("%s: Cadence %s at 0x%08lx irq %d (%pM)\n",
+ dev->name, bp->is_gem ? "GEM" : "MACB", dev->base_addr,
+ dev->irq, dev->dev_addr);
phydev = bp->phy_dev;
pr_info("%s: attached PHY driver [%s] "
@@ -1261,7 +1262,17 @@ err_out:
return err;
}
-static int __exit macb_remove(struct platform_device *pdev)
+static int __devinit macb_probe(struct platform_device *pdev)
+{
+ return __macb_probe(pdev, 0);
+}
+
+static int __devinit gem_probe(struct platform_device *pdev)
+{
+ return __macb_probe(pdev, 1);
+}
+
+static int __devexit macb_remove(struct platform_device *pdev)
{
struct net_device *dev;
struct macb *bp;
@@ -1328,7 +1339,8 @@ static int macb_resume(struct platform_device *pdev)
#endif
static struct platform_driver macb_driver = {
- .remove = __exit_p(macb_remove),
+ .probe = macb_probe,
+ .remove = __devexit_p(macb_remove),
.suspend = macb_suspend,
.resume = macb_resume,
.driver = {
@@ -1337,20 +1349,43 @@ static struct platform_driver macb_driver = {
},
};
+static struct platform_driver gem_driver = {
+ .probe = gem_probe,
+ .remove = __devexit_p(macb_remove),
+ .suspend = macb_suspend,
+ .resume = macb_resume,
+ .driver = {
+ .name = "gem",
+ .owner = THIS_MODULE,
+ },
+};
+
static int __init macb_init(void)
{
- return platform_driver_probe(&macb_driver, macb_probe);
+ int ret;
+
+ ret = platform_driver_register(&macb_driver);
+ if (ret)
+ return ret;
+
+ ret = platform_driver_register(&gem_driver);
+ if (ret)
+ platform_driver_unregister(&macb_driver);
+
+ return ret;
+
}
static void __exit macb_exit(void)
{
platform_driver_unregister(&macb_driver);
+ platform_driver_unregister(&gem_driver);
}
module_init(macb_init);
module_exit(macb_exit);
MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("Atmel MACB Ethernet driver");
+MODULE_DESCRIPTION("Cadence MACB/GEM Ethernet driver");
MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>");
MODULE_ALIAS("platform:macb");
diff --git a/drivers/net/macb.h b/drivers/net/macb.h
index d3212f6..f838615 100644
--- a/drivers/net/macb.h
+++ b/drivers/net/macb.h
@@ -254,11 +254,28 @@
<< MACB_##name##_OFFSET)) \
| MACB_BF(name,value))
+#define GEM_BIT(name) \
+ (1 << GEM_##name##_OFFSET)
+#define GEM_BF(name,value) \
+ (((value) & ((1 << GEM_##name##_SIZE) - 1)) \
+ << GEM_##name##_OFFSET)
+#define GEM_BFEXT(name,value)\
+ (((value) >> GEM_##name##_OFFSET) \
+ & ((1 << GEM_##name##_SIZE) - 1))
+#define GEM_BFINS(name,value,old) \
+ (((old) & ~(((1 << GEM_##name##_SIZE) - 1) \
+ << GEM_##name##_OFFSET)) \
+ | GEM_BF(name,value))
+
/* Register access macros */
#define macb_readl(port,reg) \
__raw_readl((port)->regs + MACB_##reg)
#define macb_writel(port,reg,value) \
__raw_writel((value), (port)->regs + MACB_##reg)
+#define gem_readl(port,reg) \
+ __raw_readl((port)->regs + GEM_##reg)
+#define gem_writel(port,reg,value) \
+ __raw_writel((value), (port)->regs + GEM_##reg)
struct dma_desc {
u32 addr;
@@ -360,6 +377,7 @@ struct macb_stats {
struct macb {
void __iomem *regs;
+ int is_gem;
unsigned int rx_tail;
struct dma_desc *rx_ring;
--
1.7.4
^ permalink raw reply related
* [PATCH 6/8] macb: support higher rate GEM MDIO clock divisors
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
GEM devices support larger clock divisors and have a different
range of divisors. Program the MDIO clock divisors based on the
device type.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/macb.c | 49 ++++++++++++++++++++++++++++++++++++++++---------
drivers/net/macb.h | 11 +++++++++++
2 files changed, 51 insertions(+), 9 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 2541e3b..dbc6e7ea 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -801,7 +801,8 @@ static void macb_init_hw(struct macb *bp)
macb_reset_hw(bp);
__macb_set_hwaddr(bp);
- config = macb_readl(bp, NCFGR) & MACB_BF(CLK, -1L);
+ config = bp->is_gem ? macb_readl(bp, NCFGR) & GEM_BF(CLK, -1L) :
+ macb_readl(bp, NCFGR) & MACB_BF(CLK, -1L);
config |= MACB_BIT(PAE); /* PAuse Enable */
config |= MACB_BIT(DRFCS); /* Discard Rx FCS */
config |= MACB_BIT(BIG); /* Receive oversized frames */
@@ -1118,6 +1119,42 @@ static const struct net_device_ops macb_netdev_ops = {
#define PCLK_NAME "pclk"
#endif
+static u32 macb_mdc_clk_div(unsigned long pclk_hz)
+{
+ u32 config;
+
+ if (pclk_hz <= 20000000)
+ config = MACB_BF(CLK, MACB_CLK_DIV8);
+ else if (pclk_hz <= 40000000)
+ config = MACB_BF(CLK, MACB_CLK_DIV16);
+ else if (pclk_hz <= 80000000)
+ config = MACB_BF(CLK, MACB_CLK_DIV32);
+ else
+ config = MACB_BF(CLK, MACB_CLK_DIV64);
+
+ return config;
+}
+
+static u32 gem_mdc_clk_div(unsigned long pclk_hz)
+{
+ u32 config;
+
+ if (pclk_hz <= 20000000)
+ config = GEM_BF(CLK, GEM_CLK_DIV8);
+ else if (pclk_hz <= 40000000)
+ config = GEM_BF(CLK, GEM_CLK_DIV16);
+ else if (pclk_hz <= 80000000)
+ config = GEM_BF(CLK, GEM_CLK_DIV32);
+ else if (pclk_hz <= 120000000)
+ config = GEM_BF(CLK, GEM_CLK_DIV48);
+ else if (pclk_hz <= 160000000)
+ config = GEM_BF(CLK, GEM_CLK_DIV64);
+ else
+ config = GEM_BF(CLK, GEM_CLK_DIV96);
+
+ return config;
+}
+
static int __macb_probe(struct platform_device *pdev, int is_gem)
{
struct resource *regs;
@@ -1202,14 +1239,8 @@ static int __macb_probe(struct platform_device *pdev, int is_gem)
/* Set MII management clock divider */
pclk_hz = clk_get_rate(bp->pclk);
- if (pclk_hz <= 20000000)
- config = MACB_BF(CLK, MACB_CLK_DIV8);
- else if (pclk_hz <= 40000000)
- config = MACB_BF(CLK, MACB_CLK_DIV16);
- else if (pclk_hz <= 80000000)
- config = MACB_BF(CLK, MACB_CLK_DIV32);
- else
- config = MACB_BF(CLK, MACB_CLK_DIV64);
+ config = bp->is_gem ? gem_mdc_clk_div(pclk_hz) :
+ macb_mdc_clk_div(pclk_hz);
macb_writel(bp, NCFGR, config);
macb_get_hwaddr(bp);
diff --git a/drivers/net/macb.h b/drivers/net/macb.h
index 6248af6..4cd1e41 100644
--- a/drivers/net/macb.h
+++ b/drivers/net/macb.h
@@ -130,6 +130,9 @@
#define MACB_IRXFCS_OFFSET 19
#define MACB_IRXFCS_SIZE 1
+/* GEM specific NCFGR bitfields. */
+#define GEM_CLK_OFFSET 18
+#define GEM_CLK_SIZE 3
/* Bitfields in NSR */
#define MACB_NSR_LINK_OFFSET 0
#define MACB_NSR_LINK_SIZE 1
@@ -238,6 +241,14 @@
#define MACB_CLK_DIV32 2
#define MACB_CLK_DIV64 3
+/* GEM specific constants for CLK. */
+#define GEM_CLK_DIV8 0
+#define GEM_CLK_DIV16 1
+#define GEM_CLK_DIV32 2
+#define GEM_CLK_DIV48 3
+#define GEM_CLK_DIV64 4
+#define GEM_CLK_DIV96 5
+
/* Constants for MAN register */
#define MACB_MAN_SOF 1
#define MACB_MAN_WRITE 1
--
1.7.4
^ permalink raw reply related
* [PATCH 7/8] macb: support statistics for GEM devices
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
GEM devices have a different number of statistics registers and they
are at a different offset to MACB devices. Make the statistics
collection method dependent on device type.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/macb.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++--
drivers/net/macb.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 107 insertions(+), 4 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index dbc6e7ea..2965405 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -291,8 +291,8 @@ err_out:
static void macb_update_stats(struct macb *bp)
{
u32 __iomem *reg = bp->regs + MACB_PFR;
- u32 *p = &bp->hw_stats.rx_pause_frames;
- u32 *end = &bp->hw_stats.tx_pause_frames + 1;
+ u32 *p = &bp->hw_stats.macb.rx_pause_frames;
+ u32 *end = &bp->hw_stats.macb.tx_pause_frames + 1;
WARN_ON((unsigned long)(end - p - 1) != (MACB_TPF - MACB_PFR) / 4);
@@ -1002,11 +1002,62 @@ static int macb_close(struct net_device *dev)
return 0;
}
+static void gem_update_stats(struct macb *bp)
+{
+ u32 __iomem *reg = bp->regs + GEM_OTX;
+ u32 *p = &bp->hw_stats.gem.tx_octets_31_0;
+ u32 *end = &bp->hw_stats.gem.rx_udp_checksum_errors + 1;
+
+ for (; p < end; p++, reg++)
+ *p += __raw_readl(reg);
+}
+
+static struct net_device_stats *gem_get_stats(struct macb *bp)
+{
+ struct gem_stats *hwstat = &bp->hw_stats.gem;
+ struct net_device_stats *nstat = &bp->stats;
+
+ gem_update_stats(bp);
+
+ nstat->rx_errors = (hwstat->rx_frame_check_sequence_errors +
+ hwstat->rx_alignment_errors +
+ hwstat->rx_resource_errors +
+ hwstat->rx_overruns +
+ hwstat->rx_oversize_frames +
+ hwstat->rx_jabbers +
+ hwstat->rx_undersized_frames +
+ hwstat->rx_length_field_frame_errors);
+ nstat->tx_errors = (hwstat->tx_late_collisions +
+ hwstat->tx_excessive_collisions +
+ hwstat->tx_underrun +
+ hwstat->tx_carrier_sense_errors);
+ nstat->multicast = hwstat->rx_multicast_frames;
+ nstat->collisions = (hwstat->tx_single_collision_frames +
+ hwstat->tx_multiple_collision_frames +
+ hwstat->tx_excessive_collisions);
+ nstat->rx_length_errors = (hwstat->rx_oversize_frames +
+ hwstat->rx_jabbers +
+ hwstat->rx_undersized_frames +
+ hwstat->rx_length_field_frame_errors);
+ nstat->rx_over_errors = hwstat->rx_resource_errors;
+ nstat->rx_crc_errors = hwstat->rx_frame_check_sequence_errors;
+ nstat->rx_frame_errors = hwstat->rx_alignment_errors;
+ nstat->rx_fifo_errors = hwstat->rx_overruns;
+ nstat->tx_aborted_errors = hwstat->tx_excessive_collisions;
+ nstat->tx_carrier_errors = hwstat->tx_carrier_sense_errors;
+ nstat->tx_fifo_errors = hwstat->tx_underrun;
+
+ return nstat;
+}
+
static struct net_device_stats *macb_get_stats(struct net_device *dev)
{
struct macb *bp = netdev_priv(dev);
struct net_device_stats *nstat = &bp->stats;
- struct macb_stats *hwstat = &bp->hw_stats;
+ struct macb_stats *hwstat = &bp->hw_stats.macb;
+
+ if (bp->is_gem)
+ return gem_get_stats(bp);
/* read stats from hardware */
macb_update_stats(bp);
diff --git a/drivers/net/macb.h b/drivers/net/macb.h
index 4cd1e41..bc2e2c0 100644
--- a/drivers/net/macb.h
+++ b/drivers/net/macb.h
@@ -63,6 +63,7 @@
/* GEM register offsets. */
#define GEM_SA1B 0x0088
#define GEM_SA1T 0x008C
+#define GEM_OTX 0x0100
/* Bitfields in NCR */
#define MACB_LB_OFFSET 0
@@ -390,6 +391,54 @@ struct macb_stats {
u32 tx_pause_frames;
};
+struct gem_stats {
+ u32 tx_octets_31_0;
+ u32 tx_octets_47_32;
+ u32 tx_frames;
+ u32 tx_broadcast_frames;
+ u32 tx_multicast_frames;
+ u32 tx_pause_frames;
+ u32 tx_64_byte_frames;
+ u32 tx_65_127_byte_frames;
+ u32 tx_128_255_byte_frames;
+ u32 tx_256_511_byte_frames;
+ u32 tx_512_1023_byte_frames;
+ u32 tx_1024_1518_byte_frames;
+ u32 tx_greater_than_1518_byte_frames;
+ u32 tx_underrun;
+ u32 tx_single_collision_frames;
+ u32 tx_multiple_collision_frames;
+ u32 tx_excessive_collisions;
+ u32 tx_late_collisions;
+ u32 tx_deferred_frames;
+ u32 tx_carrier_sense_errors;
+ u32 rx_octets_31_0;
+ u32 rx_octets_47_32;
+ u32 rx_frames;
+ u32 rx_broadcast_frames;
+ u32 rx_multicast_frames;
+ u32 rx_pause_frames;
+ u32 rx_64_byte_frames;
+ u32 rx_65_127_byte_frames;
+ u32 rx_128_255_byte_frames;
+ u32 rx_256_511_byte_frames;
+ u32 rx_512_1023_byte_frames;
+ u32 rx_1024_1518_byte_frames;
+ u32 rx_greater_than_1518_byte_frames;
+ u32 rx_undersized_frames;
+ u32 rx_oversize_frames;
+ u32 rx_jabbers;
+ u32 rx_frame_check_sequence_errors;
+ u32 rx_length_field_frame_errors;
+ u32 rx_symbol_errors;
+ u32 rx_alignment_errors;
+ u32 rx_resource_errors;
+ u32 rx_overruns;
+ u32 rx_ip_header_checksum_errors;
+ u32 rx_tcp_checksum_errors;
+ u32 rx_udp_checksum_errors;
+};
+
struct macb {
void __iomem *regs;
int is_gem;
@@ -409,7 +458,10 @@ struct macb {
struct net_device *dev;
struct napi_struct napi;
struct net_device_stats stats;
- struct macb_stats hw_stats;
+ union {
+ struct macb_stats macb;
+ struct gem_stats gem;
+ } hw_stats;
dma_addr_t rx_ring_dma;
dma_addr_t tx_ring_dma;
--
1.7.4
^ permalink raw reply related
* [PATCH 5/8] macb: handle HW address registers for GEM devices
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
GEM has it's hardware address registers in a different location
to MACB so we need to make this conditional on type.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/macb.c | 19 +++++++++++++++----
drivers/net/macb.h | 4 ++++
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 204afa6..2541e3b 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -57,9 +57,15 @@ static void __macb_set_hwaddr(struct macb *bp)
u16 top;
bottom = cpu_to_le32(*((u32 *)bp->dev->dev_addr));
- macb_writel(bp, SA1B, bottom);
top = cpu_to_le16(*((u16 *)(bp->dev->dev_addr + 4)));
- macb_writel(bp, SA1T, top);
+
+ if (!bp->is_gem) {
+ macb_writel(bp, SA1B, bottom);
+ macb_writel(bp, SA1T, top);
+ } else {
+ gem_writel(bp, SA1B, bottom);
+ gem_writel(bp, SA1T, top);
+ }
}
static void __init macb_get_hwaddr(struct macb *bp)
@@ -68,8 +74,13 @@ static void __init macb_get_hwaddr(struct macb *bp)
u16 top;
u8 addr[6];
- bottom = macb_readl(bp, SA1B);
- top = macb_readl(bp, SA1T);
+ if (!bp->is_gem) {
+ bottom = macb_readl(bp, SA1B);
+ top = macb_readl(bp, SA1T);
+ } else {
+ bottom = gem_readl(bp, SA1B);
+ top = gem_readl(bp, SA1T);
+ }
addr[0] = bottom & 0xff;
addr[1] = (bottom >> 8) & 0xff;
diff --git a/drivers/net/macb.h b/drivers/net/macb.h
index f838615..6248af6 100644
--- a/drivers/net/macb.h
+++ b/drivers/net/macb.h
@@ -60,6 +60,10 @@
#define MACB_USRIO 0x00c0
#define MACB_WOL 0x00c4
+/* GEM register offsets. */
+#define GEM_SA1B 0x0088
+#define GEM_SA1T 0x008C
+
/* Bitfields in NCR */
#define MACB_LB_OFFSET 0
#define MACB_LB_SIZE 1
--
1.7.4
^ permalink raw reply related
* [PATCH 8/8] macb: support data bus widths > 32 bits
From: Jamie Iles @ 2011-03-10 10:10 UTC (permalink / raw)
To: netdev, linux-arm-kernel; +Cc: nicolas.ferre, Jamie Iles
In-Reply-To: <1299751843-9743-1-git-send-email-jamie@jamieiles.com>
Some GEM implementations may support data bus widths up to 128 bits.
Allow the platform data to specify the data bus width and let the driver
program it up.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/macb.c | 5 +++++
drivers/net/macb.h | 3 +++
include/linux/platform_data/macb.h | 6 ++++++
3 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 2965405..6ecbd69 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -797,6 +797,7 @@ static void macb_reset_hw(struct macb *bp)
static void macb_init_hw(struct macb *bp)
{
u32 config;
+ struct eth_platform_data *pdata = dev_get_platdata(&bp->pdev->dev);
macb_reset_hw(bp);
__macb_set_hwaddr(bp);
@@ -810,6 +811,8 @@ static void macb_init_hw(struct macb *bp)
config |= MACB_BIT(CAF); /* Copy All Frames */
if (!(bp->dev->flags & IFF_BROADCAST))
config |= MACB_BIT(NBC); /* No BroadCast */
+ if (bp->is_gem)
+ config |= GEM_BF(DBW, pdata->dbw); /* Data bus width. */
macb_writel(bp, NCFGR, config);
/* Initialize TX and RX buffers */
@@ -1292,6 +1295,8 @@ static int __macb_probe(struct platform_device *pdev, int is_gem)
pclk_hz = clk_get_rate(bp->pclk);
config = bp->is_gem ? gem_mdc_clk_div(pclk_hz) :
macb_mdc_clk_div(pclk_hz);
+ if (bp->is_gem)
+ config |= GEM_BF(DBW, pdata->dbw); /* Data bus width. */
macb_writel(bp, NCFGR, config);
macb_get_hwaddr(bp);
diff --git a/drivers/net/macb.h b/drivers/net/macb.h
index bc2e2c0..cd63c1b 100644
--- a/drivers/net/macb.h
+++ b/drivers/net/macb.h
@@ -134,6 +134,9 @@
/* GEM specific NCFGR bitfields. */
#define GEM_CLK_OFFSET 18
#define GEM_CLK_SIZE 3
+#define GEM_DBW_OFFSET 21
+#define GEM_DBW_SIZE 2
+
/* Bitfields in NSR */
#define MACB_NSR_LINK_OFFSET 0
#define MACB_NSR_LINK_SIZE 1
diff --git a/include/linux/platform_data/macb.h b/include/linux/platform_data/macb.h
index ae18579..d11bfab 100644
--- a/include/linux/platform_data/macb.h
+++ b/include/linux/platform_data/macb.h
@@ -1,11 +1,17 @@
#ifndef __MACB_PDATA_H__
#define __MACB_PDATA_H__
+/* Constants for data bus width. */
+#define MACB_DBW32 0
+#define MACB_DBW64 1
+#define MACB_DBW128 2
+
struct eth_platform_data {
u32 phy_mask;
u8 phy_irq_pin; /* PHY IRQ */
u8 is_rmii; /* using RMII interface? */
int have_hclk; /* have hclk as well as pclk */
+ u8 dbw; /* Data bus width. */
};
#endif /* __MACB_PDATA_H__ */
--
1.7.4
^ permalink raw reply related
* Re: [PATCH 2/8] macb: detect hclk presence from platform data
From: Russell King - ARM Linux @ 2011-03-10 10:15 UTC (permalink / raw)
To: Jamie Iles; +Cc: netdev, linux-arm-kernel, nicolas.ferre
In-Reply-To: <1299751843-9743-3-git-send-email-jamie@jamieiles.com>
On Thu, Mar 10, 2011 at 10:10:37AM +0000, Jamie Iles wrote:
> Rather than detecting whether we need to do a clk_get() and enable on
> the "hclk" based on the kernel configuration, add an extra field to the
> platform data. This makes it cleaner to add more supported
> architectures without lots of ifdeffery.
Why not have the platform provide a dummy hclk if no real hclk exists?
^ permalink raw reply
* 2.6.38-rc8 build failure - bridge vs. ipv6
From: Patrick Schaaf @ 2011-03-10 10:19 UTC (permalink / raw)
To: netdev; +Cc: davem
Hi all,
I see a build / link failure:
net/built-in.o: In function `br_ip6_multicast_alloc_query':
/usr/src/linux-2.6.38-rc8/net/bridge/br_multicast.c:448: undefined
reference to `ipv6_dev_get_saddr'
This happens with bridging build-in and ipv6 modular.
The call to ipv6_dev_get_saddr was introduced there between 2.6.38-rc6
and 2.6.38-rc8, the -rc6 built just fine with the same .config
I work around it by making bridge build modular, but you might want to
fix it properly before releasing 2.6.38.
best regards
Patrick
^ permalink raw reply
* 2.6.38-rc8 build failure - bridge vs. ipv6
From: Patrick Schaaf @ 2011-03-10 10:07 UTC (permalink / raw)
To: netdev; +Cc: davem
Hi all,
I see a build / link failure:
net/built-in.o: In function `br_ip6_multicast_alloc_query':
/usr/src/linux-2.6.38-rc8/net/bridge/br_multicast.c:448: undefined
reference to `ipv6_dev_get_saddr'
This happens with bridging build-in and ipv6 modular.
The call to ipv6_dev_get_saddr was introduced there between 2.6.38-rc6
and 2.6.38-rc8, the -rc6 built just fine with the same .config
I work around it by making bridge build modular, but you might want to
fix it properly before releasing 2.6.38.
best regards
Patrick
^ permalink raw reply
* Re: [PATCH 2/8] macb: detect hclk presence from platform data
From: Jamie Iles @ 2011-03-10 11:41 UTC (permalink / raw)
To: Russell King - ARM Linux
Cc: Jamie Iles, netdev, linux-arm-kernel, nicolas.ferre
In-Reply-To: <20110310101554.GD11273@n2100.arm.linux.org.uk>
On Thu, Mar 10, 2011 at 10:15:54AM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 10, 2011 at 10:10:37AM +0000, Jamie Iles wrote:
> > Rather than detecting whether we need to do a clk_get() and enable on
> > the "hclk" based on the kernel configuration, add an extra field to the
> > platform data. This makes it cleaner to add more supported
> > architectures without lots of ifdeffery.
>
> Why not have the platform provide a dummy hclk if no real hclk exists?
Yes, that would be much better. In that case, this patch can be
replaced with the two below. I'll repost the series with the other
patches refreshed, but I'd like someone with AT91 knowledge to check
that at91_clock_associate() is doing what I think it is first.
This also means that the driver doesn't need a conditional on ARCH_AT91
for the pclk name.
Jamie
>From 11dc6ca059e848295db8c0c534ece196e8f9ff37 Mon Sep 17 00:00:00 2001
From: Jamie Iles <jamie@jamieiles.com>
Date: Thu, 10 Mar 2011 11:11:20 +0000
Subject: [PATCH 1/2] at91: provide pclk and hclk for macb ethernet devices
AT91 has a "macb_pclk" which is used to control the clock to the
Ethernet controller, but this is a different name to the AVR32
devices that use "pclk". Associate the clock with the names "pclk"
and "hclk" and the macb driver doesn't need to handle the two
architectures differently.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
arch/arm/mach-at91/at572d940hf_devices.c | 3 +++
arch/arm/mach-at91/at91cap9_devices.c | 3 +++
arch/arm/mach-at91/at91rm9200_devices.c | 3 +++
arch/arm/mach-at91/at91sam9260_devices.c | 3 +++
arch/arm/mach-at91/at91sam9263_devices.c | 3 +++
arch/arm/mach-at91/at91sam9g45_devices.c | 3 +++
6 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-at91/at572d940hf_devices.c b/arch/arm/mach-at91/at572d940hf_devices.c
index 6e1b9a3..9234b4e 100644
--- a/arch/arm/mach-at91/at572d940hf_devices.c
+++ b/arch/arm/mach-at91/at572d940hf_devices.c
@@ -192,6 +192,9 @@ void __init at91_add_device_eth(struct eth_platform_data *data)
at91_set_A_periph(AT91_PIN_PA13, 0); /* EMDIO */
at91_set_A_periph(AT91_PIN_PA14, 0); /* EMDC */
+ at91_clock_associate("macb_clk", &at572d940hf_eth_device.dev, "pclk");
+ at91_clock_associate("macb_clk", &at572d940hf_eth_device.dev, "hclk");
+
eth_data = *data;
platform_device_register(&at572d940hf_eth_device);
}
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c
index e041743..5c57885 100644
--- a/arch/arm/mach-at91/at91cap9_devices.c
+++ b/arch/arm/mach-at91/at91cap9_devices.c
@@ -258,6 +258,9 @@ void __init at91_add_device_eth(struct eth_platform_data *data)
at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */
}
+ at91_clock_associate("macb_clk", &at91cap9_eth_device.dev, "pclk");
+ at91_clock_associate("macb_clk", &at91cap9_eth_device.dev, "hclk");
+
eth_data = *data;
platform_device_register(&at91cap9_eth_device);
}
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
index 5f873d5..e7b8ec3 100644
--- a/arch/arm/mach-at91/at91rm9200_devices.c
+++ b/arch/arm/mach-at91/at91rm9200_devices.c
@@ -187,6 +187,9 @@ void __init at91_add_device_eth(struct eth_platform_data *data)
at91_set_B_periph(AT91_PIN_PB12, 0); /* ETX2 */
}
+ at91_clock_associate("macb_clk", &at91rm9200_eth_device.dev, "pclk");
+ at91_clock_associate("macb_clk", &at91rm9200_eth_device.dev, "hclk");
+
eth_data = *data;
platform_device_register(&at91rm9200_eth_device);
}
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index e172b46..9ff8592 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -188,6 +188,9 @@ void __init at91_add_device_eth(struct eth_platform_data *data)
at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */
}
+ at91_clock_associate("macb_clk", &at91sam9260_eth_device.dev, "pclk");
+ at91_clock_associate("macb_clk", &at91sam9260_eth_device.dev, "hclk");
+
eth_data = *data;
platform_device_register(&at91sam9260_eth_device);
}
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
index 416613c..46560e9 100644
--- a/arch/arm/mach-at91/at91sam9263_devices.c
+++ b/arch/arm/mach-at91/at91sam9263_devices.c
@@ -198,6 +198,9 @@ void __init at91_add_device_eth(struct eth_platform_data *data)
at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */
}
+ at91_clock_associate("macb_clk", &at91sam9263_eth_device.dev, "pclk");
+ at91_clock_associate("macb_clk", &at91sam9263_eth_device.dev, "hclk");
+
eth_data = *data;
platform_device_register(&at91sam9263_eth_device);
}
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index 0867343..ab46ae7 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -343,6 +343,9 @@ void __init at91_add_device_eth(struct eth_platform_data *data)
at91_set_B_periph(AT91_PIN_PA27, 0); /* ETXER */
}
+ at91_clock_associate("macb_clk", &at91sam9g45_eth_device.dev, "pclk");
+ at91_clock_associate("macb_clk", &at91sam9g45_eth_device.dev, "hclk");
+
eth_data = *data;
platform_device_register(&at91sam9g45_eth_device);
}
--
1.7.4
>From 7dfd4a15bbb0b5c14be44ebc54c3038423086418 Mon Sep 17 00:00:00 2001
From: Jamie Iles <jamie@jamieiles.com>
Date: Tue, 8 Mar 2011 20:19:23 +0000
Subject: [PATCH 2/2] macb: remove conditional clk handling
AT91 now provides both "pclk" and "hclk" aliases for the the macb
device so we can use the same clk handling paths for both AT91 and
AVR32.
Signed-off-by: Jamie Iles <jamie@jamieiles.com>
---
drivers/net/macb.c | 27 +++------------------------
1 files changed, 3 insertions(+), 24 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index bfd3601..8e6d8e3 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -246,9 +246,7 @@ static int macb_mii_init(struct macb *bp)
bp->mii_bus->parent = &bp->dev->dev;
pdata = bp->pdev->dev.platform_data;
- if (pdata)
- bp->mii_bus->phy_mask = pdata->phy_mask;
-
+ bp->mii_bus->phy_mask = pdata->phy_mask;
bp->mii_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
if (!bp->mii_bus->irq) {
err = -ENOMEM;
@@ -1138,28 +1136,19 @@ static int __init macb_probe(struct platform_device *pdev)
spin_lock_init(&bp->lock);
-#if defined(CONFIG_ARCH_AT91)
- bp->pclk = clk_get(&pdev->dev, "macb_clk");
+ bp->pclk = clk_get(&pdev->dev, "pclk");
if (IS_ERR(bp->pclk)) {
dev_err(&pdev->dev, "failed to get macb_clk\n");
goto err_out_free_dev;
}
clk_enable(bp->pclk);
-#else
- bp->pclk = clk_get(&pdev->dev, "pclk");
- if (IS_ERR(bp->pclk)) {
- dev_err(&pdev->dev, "failed to get pclk\n");
- goto err_out_free_dev;
- }
+
bp->hclk = clk_get(&pdev->dev, "hclk");
if (IS_ERR(bp->hclk)) {
dev_err(&pdev->dev, "failed to get hclk\n");
goto err_out_put_pclk;
}
-
- clk_enable(bp->pclk);
clk_enable(bp->hclk);
-#endif
bp->regs = ioremap(regs->start, regs->end - regs->start + 1);
if (!bp->regs) {
@@ -1243,14 +1232,10 @@ err_out_free_irq:
err_out_iounmap:
iounmap(bp->regs);
err_out_disable_clocks:
-#ifndef CONFIG_ARCH_AT91
clk_disable(bp->hclk);
clk_put(bp->hclk);
-#endif
clk_disable(bp->pclk);
-#ifndef CONFIG_ARCH_AT91
err_out_put_pclk:
-#endif
clk_put(bp->pclk);
err_out_free_dev:
free_netdev(dev);
@@ -1276,10 +1261,8 @@ static int __exit macb_remove(struct platform_device *pdev)
unregister_netdev(dev);
free_irq(dev->irq, dev);
iounmap(bp->regs);
-#ifndef CONFIG_ARCH_AT91
clk_disable(bp->hclk);
clk_put(bp->hclk);
-#endif
clk_disable(bp->pclk);
clk_put(bp->pclk);
free_netdev(dev);
@@ -1297,9 +1280,7 @@ static int macb_suspend(struct platform_device *pdev, pm_message_t state)
netif_device_detach(netdev);
-#ifndef CONFIG_ARCH_AT91
clk_disable(bp->hclk);
-#endif
clk_disable(bp->pclk);
return 0;
@@ -1311,9 +1292,7 @@ static int macb_resume(struct platform_device *pdev)
struct macb *bp = netdev_priv(netdev);
clk_enable(bp->pclk);
-#ifndef CONFIG_ARCH_AT91
clk_enable(bp->hclk);
-#endif
netif_device_attach(netdev);
--
1.7.4
^ permalink raw reply related
* Re: [PATCH 2/8] macb: detect hclk presence from platform data
From: Jamie Iles @ 2011-03-10 11:45 UTC (permalink / raw)
To: Jamie Iles
Cc: Russell King - ARM Linux, netdev, linux-arm-kernel, nicolas.ferre
In-Reply-To: <20110310114137.GC6198@pulham.picochip.com>
On Thu, Mar 10, 2011 at 11:41:37AM +0000, Jamie Iles wrote:
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index bfd3601..8e6d8e3 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -246,9 +246,7 @@ static int macb_mii_init(struct macb *bp)
> bp->mii_bus->parent = &bp->dev->dev;
> pdata = bp->pdev->dev.platform_data;
>
> - if (pdata)
> - bp->mii_bus->phy_mask = pdata->phy_mask;
> -
> + bp->mii_bus->phy_mask = pdata->phy_mask;
> bp->mii_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL);
> if (!bp->mii_bus->irq) {
> err = -ENOMEM;
Doh, too hasty. That hunk shouldn't be there now. I'll fix that up for
next time.
Jamie
^ permalink raw reply
* Re: Mass udp flow reboot linux with RealTek RTL-8169 Gigabit
From: Francois Romieu @ 2011-03-10 12:08 UTC (permalink / raw)
To: Seblu; +Cc: Eric Dumazet, lkml, netdev, Ivan Vecera
In-Reply-To: <AANLkTim6tt4yC+1VQ3AtDMf1KKLRqf5kErpipqNSbQkX@mail.gmail.com>
Seblu <seblu@seblu.net> :
[...]
> I catched the following trace during my previous torture session.
> Maybe it can help.
It's the usual r8169 TX timeout watchdog.
[...]
> > Can you apply the two attached patches on top of the previous ones and
> > give it a try ? The debug should not be too verbose if things are stationary
> > enough.
> 2.6.38-rc7 with your 2 previous patch change the game. No reboot. No
> strange message in dmesg.
?
"strange message" as :
[ ] netdev watchdog messages
[ ] 0001 0001 0001 0001 (or similar) message
[ ] net_ratelimit message
> But some sent packets are lost from some host. Example:
[...]
> This is maybe normal under stress, card discard packet after all.
It seems so. 0.08% packet loss. 10 ~ 20kpps (right ?). Sample at 0.1 Hz (ping).
[...]
> I've a serial cable and a second computer, but my first computer
> doesn't have a com port. Is it then possible?
Hardly. Forget it for now.
> Do you need more test?
1. 2.6.38-rc7 without the patches
2. 2.6.38-rc7 with the r8169.c driver of 2.6.38-rc5, without the patches
3. current setup + pktgen. Lower the packet size as long as it increases
the sender's pps.
I do not understand why the bug would be gone if it was in the r8169
proper.
--
Ueimor
^ permalink raw reply
* Re: [PATCH 1/8] macb: unify at91 and avr32 platform data
From: Nicolas Ferre @ 2011-03-10 13:06 UTC (permalink / raw)
To: Jamie Iles; +Cc: netdev, linux-arm-kernel
In-Reply-To: <1299751843-9743-2-git-send-email-jamie@jamieiles.com>
On 3/10/2011 11:10 AM, Jamie Iles :
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -18,12 +18,10 @@
> #include <linux/netdevice.h>
> #include <linux/etherdevice.h>
> #include <linux/dma-mapping.h>
> +#include <linux/platform_data/macb.h>
> #include <linux/platform_device.h>
> #include <linux/phy.h>
>
> -#include <mach/board.h>
> -#include <mach/cpu.h>
I did not bouble check but do we need no more cpu_is_ macros?
> -
> #include "macb.h"
>
> #define RX_BUFFER_SIZE 128
--
Nicolas Ferre
^ permalink raw reply
* Re: [PATCH 1/8] macb: unify at91 and avr32 platform data
From: Jamie Iles @ 2011-03-10 13:17 UTC (permalink / raw)
To: Nicolas Ferre; +Cc: Jamie Iles, netdev, linux-arm-kernel
In-Reply-To: <4D78CCBC.2010807@atmel.com>
On Thu, Mar 10, 2011 at 02:06:04PM +0100, Nicolas Ferre wrote:
> On 3/10/2011 11:10 AM, Jamie Iles :
> > --- a/drivers/net/macb.c
> > +++ b/drivers/net/macb.c
> > @@ -18,12 +18,10 @@
> > #include <linux/netdevice.h>
> > #include <linux/etherdevice.h>
> > #include <linux/dma-mapping.h>
> > +#include <linux/platform_data/macb.h>
> > #include <linux/platform_device.h>
> > #include <linux/phy.h>
> >
> > -#include <mach/board.h>
> > -#include <mach/cpu.h>
>
> I did not bouble check but do we need no more cpu_is_ macros?
No, I couldn't see any in there and it builds for all of the AT91
targets and all of the AVR32 ones that I tried. I can't see any macros
in there that are likely to use cpu_is_* internally either.
Jamie
^ permalink raw reply
* Re: [PATCH] Make CUBIC Hystart more robust to RTT variations
From: Injong Rhee @ 2011-03-10 14:37 UTC (permalink / raw)
To: Bill Fink
Cc: Lucas Nussbaum, Stephen Hemminger, David Miller, xiyou.wangcong,
netdev, sangtae.ha
In-Reply-To: <20110310002458.5a94f563.billfink@mindspring.com>
This is a good example why I think the problem is in implementation. The
original idea is sound. The tests where Lucas report problems in (fat
pipes with only a small # of flows) are the ones where hystart should
perform very well. If you have many flows, then leaving slow start early
(even if by mistake) can be easily covered by cubic growth function in
congestion avoidance.
We need to look into the issue of Hz setting, other implementation
issues, and run more extensive tests.
On 3/10/11 12:24 AM, Bill Fink wrote:
> On Wed, 9 Mar 2011, Lucas Nussbaum wrote:
>
>> On 08/03/11 at 20:30 -0500, Injong Rhee wrote:
>>> Now, both tools can be wrong. But that is not catastrophic since
>>> congestion avoidance can kick in to save the day. In a pipe where no
>>> other flows are competing, then exiting slow start too early can
>>> slow things down as the window can be still too small. But that is
>>> in fact when delays are most reliable. So those tests that say bad
>>> performance with hystart are in fact, where hystart is supposed to
>>> perform well.
>> Hi,
>>
>> In my setup, there is no congestion at all (except the buffer bloat).
>> Without Hystart, transferring 8 Gb of data takes 9s, with CUBIC exiting
>> slow start at ~2000 packets.
>> With Hystart, transferring 8 Gb of data takes 19s, with CUBIC exiting
>> slow start at ~20 packets.
>> I don't think that this is "hystart performing well". We could just as
>> well remove slow start completely, and only do congestion avoidance,
>> then.
>>
>> While I see the value in Hystart, it's clear that there are some flaws
>> in the current implementation. It probably makes sense to disable
>> hystart by default until those problems are fixed.
> Here are some tests I performed across real networks, where
> congestion is generally not an issue, with a 2.6.35 kernel on
> the transmit side.
>
> 8 GB transfer across an 18 ms RTT path with autotuning and hystart:
>
> i7test7% nuttcp -n8g -i1 192.168.1.23
> 517.9375 MB / 1.00 sec = 4344.6096 Mbps 0 retrans
> 688.4375 MB / 1.00 sec = 5775.1998 Mbps 0 retrans
> 692.9375 MB / 1.00 sec = 5812.7462 Mbps 0 retrans
> 698.0625 MB / 1.00 sec = 5855.8078 Mbps 0 retrans
> 699.8750 MB / 1.00 sec = 5871.0123 Mbps 0 retrans
> 710.5625 MB / 1.00 sec = 5960.5707 Mbps 0 retrans
> 728.8125 MB / 1.00 sec = 6113.7652 Mbps 0 retrans
> 751.3750 MB / 1.00 sec = 6302.9210 Mbps 0 retrans
> 783.8750 MB / 1.00 sec = 6575.6201 Mbps 0 retrans
> 825.1875 MB / 1.00 sec = 6921.8145 Mbps 0 retrans
> 875.4375 MB / 1.00 sec = 7343.9811 Mbps 0 retrans
>
> 8192.0000 MB / 11.26 sec = 6102.4718 Mbps 11 %TX 28 %RX 0 retrans 18.92 msRTT
>
> Ramps up quickly to a little under 6 Gbps, then increases more
> slowly to 7+ Gbps, with no TCP retransmissions.
>
> 8 GB transfer across an 18 ms RTT path with 40 MB socket buffer and hystart:
>
> i7test7% nuttcp -n8g -w40m -i1 192.168.1.23
> 970.0625 MB / 1.00 sec = 8136.8475 Mbps 0 retrans
> 1181.1875 MB / 1.00 sec = 9909.0045 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9908.6369 Mbps 0 retrans
> 1181.3125 MB / 1.00 sec = 9909.8747 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9909.0531 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9908.8153 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9909.0729 Mbps 0 retrans
>
> 8192.0000 MB / 7.13 sec = 9633.5814 Mbps 17 %TX 42 %RX 0 retrans 18.91 msRTT
>
> Quickly ramps up to full 10-GigE line rate, with no TCP retrans.
>
> 8 GB transfer across an 18 ms RTT path with autotuning and no hystart:
>
> i7test7% nuttcp -n8g -i1 192.168.1.23
> 845.4375 MB / 1.00 sec = 7091.5828 Mbps 0 retrans
> 1181.3125 MB / 1.00 sec = 9910.0134 Mbps 0 retrans
> 1181.0625 MB / 1.00 sec = 9907.1830 Mbps 0 retrans
> 1181.4375 MB / 1.00 sec = 9910.8936 Mbps 0 retrans
> 1181.1875 MB / 1.00 sec = 9908.1721 Mbps 0 retrans
> 1181.3125 MB / 1.00 sec = 9909.5774 Mbps 0 retrans
> 1181.1875 MB / 1.00 sec = 9908.6874 Mbps 0 retrans
>
> 8192.0000 MB / 7.25 sec = 9484.4524 Mbps 18 %TX 41 %RX 0 retrans 18.92 msRTT
>
> Also quickly ramps up to full 10-GigE line rate, with no TCP retrans.
>
> 8 GB transfer across an 18 ms RTT path with 40 MB socket buffer and no hystart:
>
> i7test7% nuttcp -n8g -w40m -i1 192.168.1.23
> 969.8750 MB / 1.00 sec = 8135.6571 Mbps 0 retrans
> 1181.3125 MB / 1.00 sec = 9909.3990 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9908.9342 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9909.4098 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9908.8252 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9909.0630 Mbps 0 retrans
> 1181.2500 MB / 1.00 sec = 9909.3504 Mbps 0 retrans
>
> 8192.0000 MB / 7.15 sec = 9611.8053 Mbps 18 %TX 42 %RX 0 retrans 18.95 msRTT
>
> Basically the same as the case with 40 MB socket buffer and hystart enabled.
>
> Now trying the same type of tests across an 80 ms RTT path.
>
> 8 GB transfer across an 80 ms RTT path with autotuning and hystart:
>
> i7test7% nuttcp -n8g -i1 192.168.1.18
> 11.3125 MB / 1.00 sec = 94.8954 Mbps 0 retrans
> 441.5625 MB / 1.00 sec = 3704.1021 Mbps 0 retrans
> 687.3750 MB / 1.00 sec = 5765.8657 Mbps 0 retrans
> 715.5625 MB / 1.00 sec = 6002.6273 Mbps 0 retrans
> 709.9375 MB / 1.00 sec = 5955.5958 Mbps 0 retrans
> 691.3125 MB / 1.00 sec = 5799.0626 Mbps 0 retrans
> 718.6250 MB / 1.00 sec = 6028.3538 Mbps 0 retrans
> 718.0000 MB / 1.00 sec = 6023.0205 Mbps 0 retrans
> 704.0000 MB / 1.00 sec = 5905.5387 Mbps 0 retrans
> 733.3125 MB / 1.00 sec = 6151.4096 Mbps 0 retrans
> 738.8750 MB / 1.00 sec = 6198.2381 Mbps 0 retrans
> 731.8750 MB / 1.00 sec = 6139.3695 Mbps 0 retrans
>
> 8192.0000 MB / 12.85 sec = 5348.9677 Mbps 10 %TX 23 %RX 0 retrans 80.81 msRTT
>
> Similar to the 20 ms RTT path, but achieving somewhat lower
> performance levels, presumably due to the larger RTT. Ramps
> up fairly quickly to a little under 6 Gbps, then increases
> more slowly to 6+ Gbps, with no TCP retransmissions.
>
> 8 GB transfer across an 80 ms RTT path with 100 MB socket buffer and hystart:
>
> i7test7% nuttcp -n8g -w100m -i1 192.168.1.18
> 103.9375 MB / 1.00 sec = 871.8378 Mbps 0 retrans
> 1086.5625 MB / 1.00 sec = 9114.6102 Mbps 0 retrans
> 1106.6875 MB / 1.00 sec = 9283.5583 Mbps 0 retrans
> 1109.3125 MB / 1.00 sec = 9305.5226 Mbps 0 retrans
> 1111.1875 MB / 1.00 sec = 9321.9596 Mbps 0 retrans
> 1112.8125 MB / 1.00 sec = 9334.8452 Mbps 0 retrans
> 1113.6875 MB / 1.00 sec = 9341.6620 Mbps 0 retrans
> 1120.2500 MB / 1.00 sec = 9398.0054 Mbps 0 retrans
>
> 8192.0000 MB / 8.37 sec = 8207.2049 Mbps 16 %TX 38 %RX 0 retrans 80.81 msRTT
>
> Quickly ramps up to 9+ Gbps and then slowly increases further,
> with no TCP retrans.
>
> 8 GB transfer across an 80 ms RTT path with autotuning and no hystart:
>
> i7test7% nuttcp -n8g -i1 192.168.1.18
> 11.2500 MB / 1.00 sec = 94.3703 Mbps 0 retrans
> 519.0625 MB / 1.00 sec = 4354.1596 Mbps 0 retrans
> 861.2500 MB / 1.00 sec = 7224.7970 Mbps 0 retrans
> 871.0000 MB / 1.00 sec = 7306.4191 Mbps 0 retrans
> 860.7500 MB / 1.00 sec = 7220.4438 Mbps 0 retrans
> 869.0625 MB / 1.00 sec = 7290.3340 Mbps 0 retrans
> 863.4375 MB / 1.00 sec = 7242.7707 Mbps 0 retrans
> 860.4375 MB / 1.00 sec = 7218.0606 Mbps 0 retrans
> 875.5000 MB / 1.00 sec = 7344.3071 Mbps 0 retrans
> 863.1875 MB / 1.00 sec = 7240.8257 Mbps 0 retrans
>
> 8192.0000 MB / 10.98 sec = 6259.4379 Mbps 12 %TX 27 %RX 0 retrans 80.81 msRTT
>
> Ramps up quickly to 7+ Gbps, then appears to stabilize at that
> level, with no TCP retransmissions. Performance is somewhat
> better than with autotuning enabled, but less than using a
> manually set 100 MB socket buffer.
>
> 8 GB transfer across an 80 ms RTT path with 100 MB socket buffer and no hystart:
>
> i7test7% nuttcp -n8g -w100m -i1 192.168.1.18
> 102.8750 MB / 1.00 sec = 862.9487 Mbps 0 retrans
> 522.8750 MB / 1.00 sec = 4386.2811 Mbps 414 retrans
> 881.5625 MB / 1.00 sec = 7394.6534 Mbps 0 retrans
> 1164.3125 MB / 1.00 sec = 9766.6682 Mbps 0 retrans
> 1170.5625 MB / 1.00 sec = 9819.7042 Mbps 0 retrans
> 1166.8125 MB / 1.00 sec = 9788.2067 Mbps 0 retrans
> 1159.8750 MB / 1.00 sec = 9729.1530 Mbps 0 retrans
> 811.1250 MB / 1.00 sec = 6804.8017 Mbps 21 retrans
> 73.2500 MB / 1.00 sec = 614.4674 Mbps 0 retrans
> 884.6250 MB / 1.00 sec = 7420.2900 Mbps 0 retrans
>
> 8192.0000 MB / 10.34 sec = 6647.9394 Mbps 13 %TX 31 %RX 435 retrans 80.81 msRTT
>
> Disabling hystart on a large RTT path does not seem to play nice with
> a manually specified socket buffer, resulting in TCP retransmissions
> that limit the effective network performance.
>
> This is a repeatable but extremely variable phenomenon.
>
> i7test7% nuttcp -n8g -w100m -i1 192.168.1.18
> 103.7500 MB / 1.00 sec = 870.3015 Mbps 0 retrans
> 1146.3750 MB / 1.00 sec = 9616.4520 Mbps 0 retrans
> 1175.9375 MB / 1.00 sec = 9864.6070 Mbps 0 retrans
> 615.6875 MB / 1.00 sec = 5164.7353 Mbps 21 retrans
> 139.2500 MB / 1.00 sec = 1168.1253 Mbps 0 retrans
> 1090.0625 MB / 1.00 sec = 9143.8053 Mbps 0 retrans
> 1170.4375 MB / 1.00 sec = 9818.6654 Mbps 0 retrans
> 1174.5625 MB / 1.00 sec = 9852.8754 Mbps 0 retrans
> 1174.8750 MB / 1.00 sec = 9855.6052 Mbps 0 retrans
>
> 8192.0000 MB / 9.42 sec = 7292.9879 Mbps 14 %TX 34 %RX 21 retrans 80.81 msRTT
>
> And:
>
> i7test7% nuttcp -n8g -w100m -i1 192.168.1.18
> 102.8125 MB / 1.00 sec = 862.4227 Mbps 0 retrans
> 1148.4375 MB / 1.00 sec = 9633.6860 Mbps 0 retrans
> 1177.4375 MB / 1.00 sec = 9877.3086 Mbps 0 retrans
> 1168.1250 MB / 1.00 sec = 9798.9133 Mbps 11 retrans
> 133.1250 MB / 1.00 sec = 1116.7457 Mbps 0 retrans
> 479.8750 MB / 1.00 sec = 4025.4631 Mbps 0 retrans
> 1150.6875 MB / 1.00 sec = 9652.4830 Mbps 0 retrans
> 1177.3125 MB / 1.00 sec = 9876.0624 Mbps 0 retrans
> 1177.3750 MB / 1.00 sec = 9876.0139 Mbps 0 retrans
> 320.2500 MB / 1.00 sec = 2686.6452 Mbps 19 retrans
> 64.9375 MB / 1.00 sec = 544.7363 Mbps 0 retrans
> 73.6250 MB / 1.00 sec = 617.6113 Mbps 0 retrans
>
> 8192.0000 MB / 12.39 sec = 5545.7570 Mbps 12 %TX 26 %RX 30 retrans 80.80 msRTT
>
> Re-enabling hystart immediately gives a clean test with no TCP retrans.
>
> i7test7% nuttcp -n8g -w100m -i1 192.168.1.18
> 103.8750 MB / 1.00 sec = 871.3353 Mbps 0 retrans
> 1086.7500 MB / 1.00 sec = 9116.4474 Mbps 0 retrans
> 1105.8125 MB / 1.00 sec = 9276.2276 Mbps 0 retrans
> 1109.4375 MB / 1.00 sec = 9306.5339 Mbps 0 retrans
> 1111.3125 MB / 1.00 sec = 9322.5327 Mbps 0 retrans
> 1111.3750 MB / 1.00 sec = 9322.8053 Mbps 0 retrans
> 1113.7500 MB / 1.00 sec = 9342.8962 Mbps 0 retrans
> 1120.3125 MB / 1.00 sec = 9397.5711 Mbps 0 retrans
>
> 8192.0000 MB / 8.38 sec = 8204.8394 Mbps 16 %TX 39 %RX 0 retrans 80.80 msRTT
>
> -Bill
^ permalink raw reply
* Re: Network performance with small packets - continued
From: Tom Lendacky @ 2011-03-10 15:23 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Shirley Ma, Rusty Russell, Krishna Kumar2, David Miller, kvm,
netdev, steved
In-Reply-To: <20110310065457.GA22820@redhat.com>
On Thursday, March 10, 2011 12:54:58 am Michael S. Tsirkin wrote:
> On Wed, Mar 09, 2011 at 05:25:11PM -0600, Tom Lendacky wrote:
> > As for which CPU the interrupt gets pinned to, that doesn't matter - see
> > below.
>
> So what hurts us the most is that the IRQ jumps between the VCPUs?
Yes, it appears that allowing the IRQ to run on more than one vCPU hurts.
Without the publish last used index patch, vhost keeps injecting an irq for
every received packet until the guest eventually turns off notifications.
Because the irq injections end up overlapping we get contention on the
irq_desc_lock_class lock. Here are some results using the "baseline" setup
with irqbalance running.
Txn Rate: 107,714.53 Txn/Sec, Pkt Rate: 214,006 Pkts/Sec
Exits: 121,050.45 Exits/Sec
TxCPU: 9.61% RxCPU: 99.45%
Virtio1-input Interrupts/Sec (CPU0/CPU1): 13,975/0
Virtio1-output Interrupts/Sec (CPU0/CPU1): 0/0
About a 24% increase over baseline. Irqbalance essentially pinned the virtio
irq to CPU0 preventing the irq lock contention and resulting in nice gains.
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ 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