Netdev List
 help / color / mirror / Atom feed
* Re: [PATCHv2 3/9] macb: unify at91 and avr32 platform data
From: Peter Korsgaard @ 2011-03-17  9:22 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: avictor.za@gmail.com, Jamie Iles, plagnioj, linux-arm-kernel,
	nicolas.ferre, netdev
In-Reply-To: <20110317085835.GC29758@n2100.arm.linux.org.uk>

>>>>> "Russell" == Russell King <- ARM Linux <linux@arm.linux.org.uk>> writes:

Hi,

 >> That should probably be cleaned up as well then. Sharing platform_data
 >> structures between unrelated drivers seems like quite a mess to me.

 Russell> Why should every driver have a separate platform data structure?
 Russell> Is it right to end up with thousands of unique data structures each
 Russell> specific to a particular driver?  To me, that sounds like a headache
 Russell> waiting to happen.

Well, the point of the platform data is to provide driver specific
(E.G. not generic) data to the driver, so in general it will be
different for different hardware.

The current situation with 2 different structure defination depending on
arch, macro magic and 1 of these structures also used for a 2nd driver
isn't optimal.

But ok, I don't feel strongly about struct macb_platform_data also being
used for the old at91_ether driver, but it shouldn't be called
eth_platform_data as it isn't really a generic structure.

-- 
Bye, Peter Korsgaard

^ permalink raw reply

* Re: [PATCHv2 1/9] at91: provide macb clks with "pclk" and "hclk" name
From: Andrew Victor @ 2011-03-17  9:22 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: nicolas.ferre, Jamie Iles, plagnioj, linux-arm-kernel, netdev
In-Reply-To: <20110316083844.GA13262@n2100.arm.linux.org.uk>

hi Russell,

>> There is no reference to a "pclk" or "hclk" in the AT91 architecture.
>> So to avoid possible confusion, maybe create two "fake" clocks both
>> parented to "macb_clk", and add a comment they're only for
>> compatibility with the AVR32.
>
> It doesn't matter what's in the documentation.
>
> What matters more than conforming to documentation is keeping the drivers
> in a clean and maintainable state without throwing lots of ifdefs into
> them.

I'm not saying the drivers need ifdefs, they should request both
"pclk" and "hclk" as suggested.

What I was suggesting is the platform clock setup on AT91 as:
    macb_clk
        |
        +-- hclk
        +-- pclk

rather than:
    pclk
        |
        +-- hclk

Regards,
  Andrew Victor

^ permalink raw reply

* Re: [PATCHv2 3/9] macb: unify at91 and avr32 platform data
From: Russell King - ARM Linux @ 2011-03-17  8:58 UTC (permalink / raw)
  To: Peter Korsgaard
  Cc: avictor.za@gmail.com, Jamie Iles, plagnioj, linux-arm-kernel,
	nicolas.ferre, netdev
In-Reply-To: <871v26m8tf.fsf@macbook.be.48ers.dk>

On Thu, Mar 17, 2011 at 09:48:28AM +0100, Peter Korsgaard wrote:
> >>>>> "avictor" == avictor za@gmail com <avictor.za@gmail.com> writes:
> 
> Hi,
> 
>  >> How about at the same time renaming it to something a bit less
>  >> generic like macb_platform_data?
> 
>  avictor> The AT91RM9200 uses the same platform_data structure, but has a
>  avictor> different Ethernet peripheral (ie, not the MACB)
> 
>  avictor> The phy_irq_pin is used in the AT91RM9200 ethernet driver.
>  avictor> (drivers/net/arm/at91_ether.c)
> 
> That should probably be cleaned up as well then. Sharing platform_data
> structures between unrelated drivers seems like quite a mess to me.

Why should every driver have a separate platform data structure?
Is it right to end up with thousands of unique data structures each
specific to a particular driver?  To me, that sounds like a headache
waiting to happen.

^ permalink raw reply

* Re: [PATCHv2 3/9] macb: unify at91 and avr32 platform data
From: Peter Korsgaard @ 2011-03-17  8:48 UTC (permalink / raw)
  To: avictor.za@gmail.com
  Cc: Jamie Iles, netdev, plagnioj, nicolas.ferre, linux-arm-kernel
In-Reply-To: <AANLkTi=TiRnc0ceosH-P7fN7wKrLZE0MCJHQ30gM_Q9b@mail.gmail.com>

>>>>> "avictor" == avictor za@gmail com <avictor.za@gmail.com> writes:

Hi,

 >> How about at the same time renaming it to something a bit less
 >> generic like macb_platform_data?

 avictor> The AT91RM9200 uses the same platform_data structure, but has a
 avictor> different Ethernet peripheral (ie, not the MACB)

 avictor> The phy_irq_pin is used in the AT91RM9200 ethernet driver.
 avictor> (drivers/net/arm/at91_ether.c)

That should probably be cleaned up as well then. Sharing platform_data
structures between unrelated drivers seems like quite a mess to me.

-- 
Bye, Peter Korsgaard

^ permalink raw reply

* Re: [PATCHv2 3/9] macb: unify at91 and avr32 platform data
From: avictor.za @ 2011-03-17  8:43 UTC (permalink / raw)
  To: Peter Korsgaard
  Cc: Jamie Iles, netdev, plagnioj, nicolas.ferre, linux-arm-kernel
In-Reply-To: <87vczkmy94.fsf@macbook.be.48ers.dk>

hi,

>  Jamie> Both at91 and avr32 defines its own platform data structure for
>  Jamie> the macb driver and both share common structures though at91
>  Jamie> includes a currently unused phy_irq_pin.  Create a common
>  Jamie> eth_platform_data for macb that both at91 and avr32 can use.  In
>  Jamie> future we can use this to support other architectures that use the
>  Jamie> same IP block with the macb driver.
>
> How about at the same time renaming it to something a bit less generic
> like macb_platform_data?

The AT91RM9200 uses the same platform_data structure, but has a
different Ethernet peripheral (ie, not the MACB)

The phy_irq_pin is used in the AT91RM9200 ethernet driver.
(drivers/net/arm/at91_ether.c)


Regards,
  Andrew Victor

^ permalink raw reply

* Re: [PATCH] Add useful per-connection TCP stats for diagnosis purpose.
From: Eric Dumazet @ 2011-03-17  8:42 UTC (permalink / raw)
  To: H.K. Jerry Chu; +Cc: netdev
In-Reply-To: <1300349189-2731-1-git-send-email-hkchu@google.com>

Le jeudi 17 mars 2011 à 01:06 -0700, H.K. Jerry Chu a écrit :
> From: Jerry Chu <hkchu@google.com>
> 
> This patch add a number of very useful counters/stats (defined in
> tcp_stats.h) to help diagnosing TCP related problems.
> 
> create_time     - when the connection was created (in jiffies)
> total_inbytes   - total inbytes as consumed by the receiving apps.
> total_outbytes  - total outbytes sent down from the transmitting apps.
> 
> total_outdatasegs - total data carrying segments sent so far, including
> 		retransmitted ones.
> 
> total_xmit      - total accumulated time (usecs) when the connection
> 		has something to send.
> 
> total_retrans_time - total time (usecs, accumulated) the connection
> 		spends trying to recover lost packets. For each
> 		loss event the time is measured from the lost packet
> 		was first sent till the retransmitted packet was
> 		eventually ack'ed.
> 
> total_cwnd_limit - total time (usecs, excluding time spent on loss
>     		recovery) the xmit is stopped due to cwnd limited
> 
> total_swnd_limit - total time (usecs) theconnection is swnd limited
> 
> The following two counters are for listeners only:
> 
> accepted_reqs   - total # of accepted connection requests.
> listen_drops    - total # of dropped SYN reqs (SYN cookies excluded) due
>     		to listener's queue overflow.
> 
> total_retrans_time/total_retrans ratio gives a rough picture of how
> quickly in average the connection can recover from a pkt loss. E.g.,
> when the network is more congested, or the traffic contains mainly
> smaller RPC where tail drop often requires RTO to recover,
> the total_retrans_time/total_retrans ratio tends to be higher.
> 
> Currently the new counters/stats are exported through /proc/net/tcp.

Please dont. Use iproute2 instead.

> Some simple, abbreviated field names have been added to the output of
> /proc/net/tcp in order to allow backward/forward compatibility in the
> future. Obviously the new counters/stats can also be easily exported
> through other APIs.
> 

/proc/net/tcp is legacy. You should touch it eventually, but after
"other APIS" are done. It was the old way (quick but a bit ugly)



> Signed-off-by: H.K. Jerry Chu <hkchu@google.com>
> ---
>  include/linux/ktime.h    |    3 ++
>  include/linux/tcp.h      |    1 +
>  include/net/tcp_stats.h  |   65 ++++++++++++++++++++++++++++++++++++++++++++++
>  net/ipv4/tcp.c           |   30 ++++++++++++++++++---
>  net/ipv4/tcp_input.c     |   13 +++++++++
>  net/ipv4/tcp_ipv4.c      |   41 ++++++++++++++++++++++++++---
>  net/ipv4/tcp_minisocks.c |    9 ++++++
>  net/ipv4/tcp_output.c    |   47 +++++++++++++++++++++++++++++++--
>  net/ipv6/tcp_ipv6.c      |    8 +++++
>  9 files changed, 206 insertions(+), 11 deletions(-)
>  create mode 100644 include/net/tcp_stats.h
> 
> diff --git a/include/linux/ktime.h b/include/linux/ktime.h
> index e1ceaa9..e60e758 100644
> --- a/include/linux/ktime.h
> +++ b/include/linux/ktime.h
> @@ -333,6 +333,9 @@ extern void ktime_get_ts(struct timespec *ts);
>  /* Get the real (wall-) time in timespec format: */
>  #define ktime_get_real_ts(ts)	getnstimeofday(ts)

Hmm, this kind of changes are out of netdev scope and should be avoided

>  
> +#define ktime_since(a)		ktime_to_us(ktime_sub(ktime_get(), (a)))

us are implied in ktime_since() ? thats strange.

> +#define ktime_zero(a)		ktime_equal((a), ktime_set(0, 0))

ktime_zero() sounds like : "give me zero time" or "clear the ktime
field". 

> +
>  static inline ktime_t ns_to_ktime(u64 ns)
>  {
>  	static const ktime_t ktime_zero = { .tv64 = 0 };
> diff --git a/include/linux/tcp.h b/include/linux/tcp.h
> index e64f4c6..ea5cb5d 100644
> --- a/include/linux/tcp.h
> +++ b/include/linux/tcp.h
> @@ -460,6 +460,7 @@ struct tcp_sock {
>  	 * contains related tcp_cookie_transactions fields.
>  	 */
>  	struct tcp_cookie_values  *cookie_values;
> +	struct tcp_stats	*conn_stats;
>  };

Really, using separate cache lines to store some stats is expensive.
You should add counters in existing structure, to avoid additional cache
line dirties. Carefully placing stats in already dirtied cache lines.

You also should use native ktime_t infrastructure, to make the maths
really fast in fast path.

Only when stats are to be returned to user, you'll have to convert the
native timestamps to user exportable ones.

Quite frankly, using u64 fields allow nanosec resolution.

BTW, we probably could 'export' sk->sk_drops for TCP, like we do for
UDP.




^ permalink raw reply

* Re: build breakage due to br_multicast.c referencing ipv6_dev_get_saddr()
From: Eric Dumazet @ 2011-03-17  8:23 UTC (permalink / raw)
  To: Jan Beulich; +Cc: Stephen Hemminger, davem, bridge, netdev, linus.luessing
In-Reply-To: <4D81CDF6020000780003700B@vpn.id2.novell.com>

Le jeudi 17 mars 2011 à 08:01 +0000, Jan Beulich a écrit :
> >>> On 16.03.11 at 16:24, Stephen Hemminger <shemminger@linux-foundation.org>
> wrote:
> > On Wed, 16 Mar 2011 12:34:19 +0000
> > "Jan Beulich" <JBeulich@novell.com> wrote:
> > 
> >> With BRIDGE=y and IPV6=m commit
> >> fe29ec41aaa51902aebd63658dfb04fe6fea8be5 ("bridge: Use IPv6
> >> link-local address for multicast listener queries") causes the build to
> >> break.
> > 
> > Rather than continue with the config games, lets just make the necessary
> > ipv6 pieces accessible.
> 
> The below (however ugly it may look) seems to do the trick for me,
> for this particular symbol. Possibly other symbols need doing the
> same (didn't check which ones e.g. infiniband depends on), so
> some sort of abstraction might be desirable to make the whole
> thing look less ugly.

You should check how things are properly done with RCU, because you must
make sure the module unload wont delete text another cpu is using.

net code usually use synchronize_{rcu|net}() calls.


example :

net/ipv4/netfilter/nf_nat_sip.c

static void __exit nf_nat_sip_fini(void)
{
        rcu_assign_pointer(nf_nat_sip_hook, NULL);
        rcu_assign_pointer(nf_nat_sip_seq_adjust_hook, NULL);
        rcu_assign_pointer(nf_nat_sip_expect_hook, NULL);
        rcu_assign_pointer(nf_nat_sdp_addr_hook, NULL);
        rcu_assign_pointer(nf_nat_sdp_port_hook, NULL);
        rcu_assign_pointer(nf_nat_sdp_session_hook, NULL);
        rcu_assign_pointer(nf_nat_sdp_media_hook, NULL);
        synchronize_rcu();
}




^ permalink raw reply

* Re: Bug inkvm_set_irq
From: Michael S. Tsirkin @ 2011-03-17  8:21 UTC (permalink / raw)
  To: Jean-Philippe Menil; +Cc: netdev, kvm, virtualization
In-Reply-To: <4D81BF9E.5090503@univ-nantes.fr>

On Thu, Mar 17, 2011 at 09:00:30AM +0100, Jean-Philippe Menil wrote:
> >>Are you running a preemptible kernel?
> >>Does the following help at all?
> >>
> >>diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
> >>index 2ca4535..cdf51c9 100644
> >>--- a/virt/kvm/eventfd.c
> >>+++ b/virt/kvm/eventfd.c
> >>@@ -90,7 +90,7 @@ irqfd_shutdown(struct work_struct *work)
> >>   	 * We know no new events will be scheduled at this point, so block
> >>   	 * until all previously outstanding events have completed
> >>   	 */
> >>-	flush_work(&irqfd->inject);
> >>+	flush_work_sync(&irqfd->inject);
> >>
> >>   	/*
> >>   	 * It is now safe to release the object's resources
> >>
> >Hi,
> >
> >thanks for the response.
> >
> >root@ayrshire:~# zcat /proc/config.gz | grep -i preempt
> ># CONFIG_PREEMPT_RCU is not set
> >CONFIG_PREEMPT_NOTIFIERS=y
> >CONFIG_PREEMPT_NONE=y
> ># CONFIG_PREEMPT_VOLUNTARY is not set
> ># CONFIG_PREEMPT is not set
> >
> >It does not seem to be a preemptible kernel.
> >
> >I will test tour patch, and report the result.
> >
> >Regards.
> >
> Hi,
> 
> i reboot the host with the "flush_work_sync", yesterday at lunchtime.
> I haven't see "Eventfd bug detected" or  "Wakeup bug detected" until now.
> 
> The modification seem to do the trick.
> 
> So, if my understand is correct, flush_work flush the last irqfd,
> but in my case, antoher irqfd was still queued to a cpu?
> Is that right?
> 
> Regards.

Yes, it says:

 * flush_work - wait for a work to finish executing the last queueing instance
 * @work: the work to flush
 *
 * Wait until @work has finished execution.  This function considers
 * only the last queueing instance of @work.  If @work has been
 * enqueued across different CPUs on a non-reentrant workqueue or on
 * multiple workqueues, @work might still be executing on return on
 * some of the CPUs from earlier queueing.
 *
 * If @work was queued only on a non-reentrant, ordered or unbound
 * workqueue, @work is guaranteed to be idle on return if it hasn't
 * been requeued since flush started.

kvm uses the default workqueue which is non-reentrant.
Thanks to Gleb for the suggestion!

-- 
MST

^ permalink raw reply

* [PATCH] Add useful per-connection TCP stats for diagnosis purpose.
From: H.K. Jerry Chu @ 2011-03-17  8:06 UTC (permalink / raw)
  To: netdev; +Cc: Jerry Chu

From: Jerry Chu <hkchu@google.com>

This patch add a number of very useful counters/stats (defined in
tcp_stats.h) to help diagnosing TCP related problems.

create_time     - when the connection was created (in jiffies)
total_inbytes   - total inbytes as consumed by the receiving apps.
total_outbytes  - total outbytes sent down from the transmitting apps.

total_outdatasegs - total data carrying segments sent so far, including
		retransmitted ones.

total_xmit      - total accumulated time (usecs) when the connection
		has something to send.

total_retrans_time - total time (usecs, accumulated) the connection
		spends trying to recover lost packets. For each
		loss event the time is measured from the lost packet
		was first sent till the retransmitted packet was
		eventually ack'ed.

total_cwnd_limit - total time (usecs, excluding time spent on loss
    		recovery) the xmit is stopped due to cwnd limited

total_swnd_limit - total time (usecs) theconnection is swnd limited

The following two counters are for listeners only:

accepted_reqs   - total # of accepted connection requests.
listen_drops    - total # of dropped SYN reqs (SYN cookies excluded) due
    		to listener's queue overflow.

total_retrans_time/total_retrans ratio gives a rough picture of how
quickly in average the connection can recover from a pkt loss. E.g.,
when the network is more congested, or the traffic contains mainly
smaller RPC where tail drop often requires RTO to recover,
the total_retrans_time/total_retrans ratio tends to be higher.

Currently the new counters/stats are exported through /proc/net/tcp.
Some simple, abbreviated field names have been added to the output of
/proc/net/tcp in order to allow backward/forward compatibility in the
future. Obviously the new counters/stats can also be easily exported
through other APIs.

Signed-off-by: H.K. Jerry Chu <hkchu@google.com>
---
 include/linux/ktime.h    |    3 ++
 include/linux/tcp.h      |    1 +
 include/net/tcp_stats.h  |   65 ++++++++++++++++++++++++++++++++++++++++++++++
 net/ipv4/tcp.c           |   30 ++++++++++++++++++---
 net/ipv4/tcp_input.c     |   13 +++++++++
 net/ipv4/tcp_ipv4.c      |   41 ++++++++++++++++++++++++++---
 net/ipv4/tcp_minisocks.c |    9 ++++++
 net/ipv4/tcp_output.c    |   47 +++++++++++++++++++++++++++++++--
 net/ipv6/tcp_ipv6.c      |    8 +++++
 9 files changed, 206 insertions(+), 11 deletions(-)
 create mode 100644 include/net/tcp_stats.h

diff --git a/include/linux/ktime.h b/include/linux/ktime.h
index e1ceaa9..e60e758 100644
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -333,6 +333,9 @@ extern void ktime_get_ts(struct timespec *ts);
 /* Get the real (wall-) time in timespec format: */
 #define ktime_get_real_ts(ts)	getnstimeofday(ts)
 
+#define ktime_since(a)		ktime_to_us(ktime_sub(ktime_get(), (a)))
+#define ktime_zero(a)		ktime_equal((a), ktime_set(0, 0))
+
 static inline ktime_t ns_to_ktime(u64 ns)
 {
 	static const ktime_t ktime_zero = { .tv64 = 0 };
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index e64f4c6..ea5cb5d 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -460,6 +460,7 @@ struct tcp_sock {
 	 * contains related tcp_cookie_transactions fields.
 	 */
 	struct tcp_cookie_values  *cookie_values;
+	struct tcp_stats	*conn_stats;
 };
 
 static inline struct tcp_sock *tcp_sk(const struct sock *sk)
diff --git a/include/net/tcp_stats.h b/include/net/tcp_stats.h
new file mode 100644
index 0000000..f17cdac
--- /dev/null
+++ b/include/net/tcp_stats.h
@@ -0,0 +1,65 @@
+#ifndef	_TCP_STATS_H_
+#define	_TCP_STATS_H_
+
+#include <linux/types.h>
+#include <linux/ktime.h>
+
+/*
+ * The following is a list of per connection counters/stats:
+ *
+ * create_time - when the connection was created (in jiffies)
+ * total_inbytes - total inbytes as consumed by the receiving apps.
+ * total_outbytes - total outbytes sent down from the transmitting apps.
+ * total_outdatasegs - total data carrying segments sent so far,
+ *		including retransmitted ones.
+ * total_xmit - total accumulated time (usecs) when the connection has
+		something to send.
+ * total_retrans_time - total time (usecs, accumulated) the connection
+ *		spends trying to recover lost packets. For each	loss
+ *		event the time is measured from the lost packet was
+ *		first sent till the retransmitted packet was eventually
+ *		ack'ed.
+ * total_cwnd_limit - total time (usecs, excluding time spent on loss
+ *		recovery) the xmit is stopped due to cwnd limited
+ * total_swnd_limit - total time (usecs) theconnection is swnd limited
+ *
+ * The following two counters are for listeners only:
+ * accepted_reqs - total # of accepted connection requests.
+ * listen_drops - total # of dropped SYN reqs (SYN cookies excluded) due
+ *		to listener's queue overflow.
+ */
+
+#define	create_time		conn_stats->ts_create_time
+#define	total_inbytes		conn_stats->ts_total_inbytes
+#define	total_outbytes		conn_stats->ts_total_outbytes
+#define	total_outdatasegs	conn_stats->ts_total_outdatasegs
+#define	start_xmit		conn_stats->ts_start_xmit
+#define	total_xmit		conn_stats->ts_total_xmit
+#define	start_cwnd_limit	conn_stats->ts_start_cwnd_limit
+#define	total_cwnd_limit	conn_stats->ts_total_cwnd_limit
+#define	start_swnd_limit	conn_stats->ts_start_swnd_limit
+#define	total_swnd_limit	conn_stats->ts_total_swnd_limit
+#define	start_retrans		conn_stats->ts_start_retrans
+#define	total_retrans_time	conn_stats->ts_total_retrans_time
+#define	accepted_reqs		conn_stats->ts_total_inbytes
+#define	listen_drops		conn_stats->ts_total_outbytes
+/* # of dropped SYN reqs (SYN cookies excluded) due to q/q0 overflow */
+
+struct tcp_stats {
+	u64	ts_create_time;		/* in jiffies */
+	u64	ts_total_inbytes;
+	u64	ts_total_outbytes;
+	u64	ts_total_outdatasegs;
+	ktime_t	ts_start_xmit;
+	u64	ts_total_xmit;		/* in usecs */
+	ktime_t	ts_start_swnd_limit;
+	u64	ts_total_swnd_limit;	/* in usecs */
+	ktime_t	ts_start_cwnd_limit;
+	u64	ts_total_cwnd_limit;	/* in usecs */
+	ktime_t	ts_start_retrans;
+	u64	ts_total_retrans_time;	/* in usecs */
+};
+
+extern struct kmem_cache *tcp_statsp;
+
+#endif /* _TCP_STATS_H_ */
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index b22d450..9d0d582 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -273,6 +273,7 @@
 #include <net/ip.h>
 #include <net/netdma.h>
 #include <net/sock.h>
+#include <net/tcp_stats.h>
 
 #include <asm/uaccess.h>
 #include <asm/ioctls.h>
@@ -317,6 +318,10 @@ struct tcp_splice_state {
 int tcp_memory_pressure __read_mostly;
 EXPORT_SYMBOL(tcp_memory_pressure);
 
+/* Memory cache for TCP stats structure */
+struct kmem_cache *tcp_statsp __read_mostly;
+EXPORT_SYMBOL(tcp_statsp);
+
 void tcp_enter_memory_pressure(struct sock *sk)
 {
 	if (!tcp_memory_pressure) {
@@ -543,6 +548,12 @@ static inline void skb_entail(struct sock *sk, struct sk_buff *skb)
 	tcb->flags   = TCPHDR_ACK;
 	tcb->sacked  = 0;
 	skb_header_release(skb);
+
+	if (sk->sk_write_queue.qlen == 0) {
+		WARN_ON(!ktime_zero(tp->start_xmit));
+		tp->start_xmit = ktime_get();
+	}
+
 	tcp_add_write_queue_tail(sk, skb);
 	sk->sk_wmem_queued += skb->truesize;
 	sk_mem_charge(sk, skb->truesize);
@@ -860,8 +871,10 @@ wait_for_memory:
 	}
 
 out:
-	if (copied)
+	if (copied) {
 		tcp_push(sk, flags, mss_now, tp->nonagle);
+		tp->total_outbytes += copied;
+	}
 	return copied;
 
 do_error:
@@ -1108,8 +1121,10 @@ wait_for_memory:
 	}
 
 out:
-	if (copied)
+	if (copied) {
 		tcp_push(sk, flags, mss_now, tp->nonagle);
+		tp->total_outbytes += copied;
+	}
 	release_sock(sk);
 	return copied;
 
@@ -1387,8 +1402,10 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,
 	tcp_rcv_space_adjust(sk);
 
 	/* Clean up data we have read: This will do ACK frames. */
-	if (copied > 0)
+	if (copied > 0) {
+		tp->total_inbytes += copied;
 		tcp_cleanup_rbuf(sk, copied);
+	}
 	return copied;
 }
 EXPORT_SYMBOL(tcp_read_sock);
@@ -1768,7 +1785,8 @@ skip_copy:
 
 	/* Clean up data we have read: This will do ACK frames. */
 	tcp_cleanup_rbuf(sk, copied);
-
+	if (copied > 0)
+		tp->total_inbytes += copied;
 	release_sock(sk);
 	return copied;
 
@@ -2101,6 +2119,8 @@ int tcp_disconnect(struct sock *sk, int flags)
 	inet_csk_delack_init(sk);
 	tcp_init_send_head(sk);
 	memset(&tp->rx_opt, 0, sizeof(tp->rx_opt));
+	memset(tp->conn_stats, 0, sizeof(struct tcp_stats));
+	tp->create_time = get_jiffies_64();
 	__sk_dst_reset(sk);
 
 	WARN_ON(inet->inet_num && !icsk->icsk_bind_hash);
@@ -3314,4 +3334,6 @@ void __init tcp_init(void)
 	tcp_secret_primary = &tcp_secret_one;
 	tcp_secret_retiring = &tcp_secret_two;
 	tcp_secret_secondary = &tcp_secret_two;
+	tcp_statsp = kmem_cache_create("tcp_stats_cache",
+		sizeof(struct tcp_stats), 0,  SLAB_HWCACHE_ALIGN, NULL);
 }
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index da782e7..fa3d8e4 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -72,6 +72,7 @@
 #include <linux/ipsec.h>
 #include <asm/unaligned.h>
 #include <net/netdma.h>
+#include <net/tcp_stats.h>
 
 int sysctl_tcp_timestamps __read_mostly = 1;
 int sysctl_tcp_window_scaling __read_mostly = 1;
@@ -3688,9 +3689,21 @@ static int tcp_ack(struct sock *sk, struct sk_buff *skb, int flag)
 	if (!prior_packets)
 		goto no_queue;
 
+	if (!ktime_zero(tp->start_retrans) &&
+	    !before(tp->snd_una, tp->high_seq)) {
+		tp->total_retrans_time += ktime_since(tp->start_retrans);
+		tp->start_retrans = net_invalid_timestamp();
+	}
+
 	/* See if we can take anything off of the retransmit queue. */
 	flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una);
 
+	if (sk->sk_write_queue.qlen == 0 &&
+	    !ktime_zero(tp->start_xmit)) {
+		tp->total_xmit += ktime_since(tp->start_xmit);
+		tp->start_xmit = net_invalid_timestamp();
+	}
+
 	if (tp->frto_counter)
 		frto_cwnd = tcp_process_frto(sk, flag);
 	/* Guarantee sacktag reordering detection against wrap-arounds */
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index f7e6c2c..bb14df2 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -72,6 +72,7 @@
 #include <net/timewait_sock.h>
 #include <net/xfrm.h>
 #include <net/netdma.h>
+#include <net/tcp_stats.h>
 
 #include <linux/inet.h>
 #include <linux/ipv6.h>
@@ -1391,6 +1392,8 @@ drop_and_release:
 drop_and_free:
 	reqsk_free(req);
 drop:
+	if (!want_cookie)
+		tp->listen_drops++;
 	return 0;
 }
 EXPORT_SYMBOL(tcp_v4_conn_request);
@@ -1582,6 +1585,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
 				rsk = nsk;
 				goto reset;
 			}
+			tcp_sk(sk)->accepted_reqs++;
 			return 0;
 		}
 	} else
@@ -1830,6 +1834,13 @@ static int tcp_v4_init_sock(struct sock *sk)
 	struct inet_connection_sock *icsk = inet_csk(sk);
 	struct tcp_sock *tp = tcp_sk(sk);
 
+	tp->conn_stats = kmem_cache_alloc(tcp_statsp, GFP_KERNEL);
+	if (tp->conn_stats == NULL)
+		return -1;
+
+	memset(tp->conn_stats, 0, sizeof(struct tcp_stats));
+	tp->create_time = get_jiffies_64();
+
 	skb_queue_head_init(&tp->out_of_order_queue);
 	tcp_init_xmit_timers(sk);
 	tcp_prequeue_init(tp);
@@ -1937,7 +1948,10 @@ void tcp_v4_destroy_sock(struct sock *sk)
 			 tcp_cookie_values_release);
 		tp->cookie_values = NULL;
 	}
-
+	if (tp->conn_stats) {
+		kmem_cache_free(tcp_statsp, tp->conn_stats);
+		tp->conn_stats = NULL;
+	}
 	percpu_counter_dec(&tcp_sockets_allocated);
 }
 EXPORT_SYMBOL(tcp_v4_destroy_sock);
@@ -2390,6 +2404,8 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
 	__u16 destp = ntohs(inet->inet_dport);
 	__u16 srcp = ntohs(inet->inet_sport);
 	int rx_queue;
+	int len1;
+	unsigned long elapsed;
 
 	if (icsk->icsk_pending == ICSK_TIME_RETRANS) {
 		timer_active	= 1;
@@ -2413,8 +2429,10 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
 		 */
 		rx_queue = max_t(int, tp->rcv_nxt - tp->copied_seq, 0);
 
+	elapsed = (unsigned long)(get_jiffies_64() - tp->create_time);
+
 	seq_printf(f, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX "
-			"%08X %5d %8d %lu %d %p %lu %lu %u %u %d%n",
+			"%08X %5d %8d %lu %d %p %lu %lu %u %u %d %u %n",
 		i, src, srcp, dest, destp, sk->sk_state,
 		tp->write_seq - tp->snd_una,
 		rx_queue,
@@ -2430,7 +2448,20 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
 		(icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
 		tp->snd_cwnd,
 		tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh,
+		jiffies_to_msecs(elapsed)/1000,
 		len);
+
+	if (sk->sk_state == TCP_LISTEN)
+		seq_printf(f, "%llu %llu%n", tp->accepted_reqs,
+			tp->listen_drops, &len1);
+	else
+		seq_printf(f, "%llu %llu %llu %llu %llu/%u %llu %llu%n",
+			tp->total_inbytes, tp->total_outbytes,
+			tp->total_outdatasegs, tp->total_xmit/1000,
+			tp->total_retrans_time/1000, tp->total_retrans,
+			tp->total_swnd_limit/1000, tp->total_cwnd_limit/1000,
+			&len1);
+	*len += len1;
 }
 
 static void get_timewait4_sock(struct inet_timewait_sock *tw,
@@ -2455,7 +2486,7 @@ static void get_timewait4_sock(struct inet_timewait_sock *tw,
 		atomic_read(&tw->tw_refcnt), tw, len);
 }
 
-#define TMPSZ 150
+#define TMPSZ 160
 
 static int tcp4_seq_show(struct seq_file *seq, void *v)
 {
@@ -2466,7 +2497,9 @@ static int tcp4_seq_show(struct seq_file *seq, void *v)
 		seq_printf(seq, "%-*s\n", TMPSZ - 1,
 			   "  sl  local_address rem_address   st tx_queue "
 			   "rx_queue tr tm->when retrnsmt   uid  timeout "
-			   "inode");
+			   "inode - "
+			   "elps ib ob odsg xmt_bz rtrns_tm/rtrns "
+			   "swn_lmt cwn_lmt");
 		goto out;
 	}
 	st = seq->private;
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index 80b1f80..abc6e23 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -26,6 +26,7 @@
 #include <net/tcp.h>
 #include <net/inet_common.h>
 #include <net/xfrm.h>
+#include <net/tcp_stats.h>
 
 int sysctl_tcp_syncookies __read_mostly = 1;
 EXPORT_SYMBOL(sysctl_tcp_syncookies);
@@ -433,6 +434,14 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
 		struct tcp_sock *oldtp = tcp_sk(sk);
 		struct tcp_cookie_values *oldcvp = oldtp->cookie_values;
 
+		newtp->conn_stats = kmem_cache_alloc(tcp_statsp, GFP_ATOMIC);
+		if (newtp->conn_stats == NULL) {
+			sock_put(newsk);
+			return NULL;
+		}
+		memset(newtp->conn_stats, 0, sizeof(struct tcp_stats));
+		newtp->create_time = get_jiffies_64();
+
 		/* TCP Cookie Transactions require space for the cookie pair,
 		 * as it differs for each connection.  There is no need to
 		 * copy any s_data_payload stored at the original socket.
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index dfa5beb..ec846d3 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -35,6 +35,7 @@
  */
 
 #include <net/tcp.h>
+#include <net/tcp_stats.h>
 
 #include <linux/compiler.h>
 #include <linux/gfp.h>
@@ -826,6 +827,21 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
 	tcb = TCP_SKB_CB(skb);
 	memset(&opts, 0, sizeof(opts));
 
+	if (!ktime_zero(tp->start_cwnd_limit) ||
+	    !ktime_zero(tp->start_swnd_limit)) {
+		/* update total_xmit periodically */
+		WARN_ON(ktime_zero(tp->start_xmit));
+		tp->total_xmit += ktime_since(tp->start_xmit);
+		tp->start_xmit = ktime_get();
+	}
+	if (!ktime_zero(tp->start_cwnd_limit)) {
+		tp->total_cwnd_limit += ktime_since(tp->start_cwnd_limit);
+		tp->start_cwnd_limit = net_invalid_timestamp();
+	} else if (!ktime_zero(tp->start_swnd_limit)) {
+		tp->total_swnd_limit += ktime_since(tp->start_swnd_limit);
+		tp->start_swnd_limit = net_invalid_timestamp();
+	}
+
 	if (unlikely(tcb->flags & TCPHDR_SYN))
 		tcp_options_size = tcp_syn_options(sk, skb, &opts, &md5);
 	else
@@ -892,8 +908,10 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
 	if (likely(tcb->flags & TCPHDR_ACK))
 		tcp_event_ack_sent(sk, tcp_skb_pcount(skb));
 
-	if (skb->len != tcp_header_size)
+	if (skb->len != tcp_header_size) {
 		tcp_event_data_sent(tp, skb, sk);
+		tp->total_outdatasegs += tcp_skb_pcount(skb);
+	}
 
 	if (after(tcb->end_seq, tp->snd_nxt) || tcb->seq == tcb->end_seq)
 		TCP_ADD_STATS(sock_net(sk), TCP_MIB_OUTSEGS,
@@ -903,6 +921,9 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
 	if (likely(err <= 0))
 		return err;
 
+	if (ktime_zero(tp->start_retrans))
+		tp->start_retrans = ktime_get();
+
 	tcp_enter_cwr(sk, 1);
 
 	return net_xmit_eval(err);
@@ -1759,11 +1780,19 @@ static int tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
 		BUG_ON(!tso_segs);
 
 		cwnd_quota = tcp_cwnd_test(tp, skb);
-		if (!cwnd_quota)
+		if (!cwnd_quota) {
+			if (ktime_zero(tp->start_cwnd_limit) &&
+			    inet_csk(sk)->icsk_ca_state == TCP_CA_Open)
+				tp->start_cwnd_limit = ktime_get();
 			break;
+		}
 
-		if (unlikely(!tcp_snd_wnd_test(tp, skb, mss_now)))
+		if (unlikely(!tcp_snd_wnd_test(tp, skb, mss_now))) {
+			if (ktime_zero(tp->start_swnd_limit) &&
+			    inet_csk(sk)->icsk_ca_state == TCP_CA_Open)
+				tp->start_swnd_limit = ktime_get();
 			break;
+		}
 
 		if (tso_segs == 1) {
 			if (unlikely(!tcp_nagle_test(tp, skb, mss_now,
@@ -2134,6 +2163,18 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
 		}
 	}
 
+	if (ktime_zero(tp->start_retrans)) {
+		unsigned int since_last = jiffies_to_usecs(tcp_time_stamp
+		    - TCP_SKB_CB(skb)->when);
+
+		tp->start_cwnd_limit = net_invalid_timestamp();
+		tp->start_swnd_limit = net_invalid_timestamp();
+		/* Stop counting cwnd/swnd_limit when we get into retrans */
+		tp->start_retrans = ktime_get();
+		tp->start_retrans = ktime_sub_us(tp->start_retrans,
+		    since_last);
+	}
+
 	/* Make a copy, if the first transmission SKB clone we made
 	 * is still in somebody's hands, else make a clone.
 	 */
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 2b0c186..30db33a 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -61,6 +61,7 @@
 #include <net/timewait_sock.h>
 #include <net/netdma.h>
 #include <net/inet_common.h>
+#include <net/tcp_stats.h>
 
 #include <asm/uaccess.h>
 
@@ -1950,6 +1951,13 @@ static int tcp_v6_init_sock(struct sock *sk)
 	struct inet_connection_sock *icsk = inet_csk(sk);
 	struct tcp_sock *tp = tcp_sk(sk);
 
+	tp->conn_stats = kmem_cache_alloc(tcp_statsp, GFP_KERNEL);
+	if (tp->conn_stats == NULL)
+		return -1;
+
+	memset(tp->conn_stats, 0, sizeof(struct tcp_stats));
+	tp->create_time = get_jiffies_64();
+
 	skb_queue_head_init(&tp->out_of_order_queue);
 	tcp_init_xmit_timers(sk);
 	tcp_prequeue_init(tp);
-- 
1.7.3.1


^ permalink raw reply related

* Re: build breakage due to br_multicast.c referencing ipv6_dev_get_saddr()
From: Jan Beulich @ 2011-03-17  8:01 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: davem, bridge, netdev, linus.luessing
In-Reply-To: <20110316082441.45db3018@nehalam>

>>> On 16.03.11 at 16:24, Stephen Hemminger <shemminger@linux-foundation.org>
wrote:
> On Wed, 16 Mar 2011 12:34:19 +0000
> "Jan Beulich" <JBeulich@novell.com> wrote:
> 
>> With BRIDGE=y and IPV6=m commit
>> fe29ec41aaa51902aebd63658dfb04fe6fea8be5 ("bridge: Use IPv6
>> link-local address for multicast listener queries") causes the build to
>> break.
> 
> Rather than continue with the config games, lets just make the necessary
> ipv6 pieces accessible.

The below (however ugly it may look) seems to do the trick for me,
for this particular symbol. Possibly other symbols need doing the
same (didn't check which ones e.g. infiniband depends on), so
some sort of abstraction might be desirable to make the whole
thing look less ugly.

Jan

--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -78,7 +78,21 @@ extern struct inet6_ifaddr      *ipv6_ge
 						 struct net_device *dev,
 						 int strict);
 
-extern int			ipv6_dev_get_saddr(struct net *net,
+#ifdef CONFIG_IPV6_MODULE
+static inline int ipv6_dev_get_saddr_stub(struct net *net,
+					  struct net_device *dev,
+					  const struct in6_addr *daddr,
+					  unsigned int srcprefs,
+					  struct in6_addr *saddr)
+{
+	return -EPROTONOSUPPORT;
+}
+
+extern int			(*ipv6_dev_get_saddr)
+#else
+extern int			ipv6_dev_get_saddr
+#endif
+					      (struct net *net,
 					       struct net_device *dev,
 					       const struct in6_addr *daddr,
 					       unsigned int srcprefs,
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1119,9 +1119,14 @@ out:
 	return ret;
 }
 
-int ipv6_dev_get_saddr(struct net *net, struct net_device *dst_dev,
-		       const struct in6_addr *daddr, unsigned int prefs,
-		       struct in6_addr *saddr)
+#ifdef MODULE
+static int _ipv6_dev_get_saddr
+#else
+int ipv6_dev_get_saddr
+#endif
+	(struct net *net, struct net_device *dst_dev,
+	 const struct in6_addr *daddr, unsigned int prefs,
+	 struct in6_addr *saddr)
 {
 	struct ipv6_saddr_score scores[2],
 				*score = &scores[0], *hiscore = &scores[1];
@@ -1244,7 +1249,6 @@ try_nextdev:
 	in6_ifa_put(hiscore->ifa);
 	return 0;
 }
-EXPORT_SYMBOL(ipv6_dev_get_saddr);
 
 int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
 		    unsigned char banned_flags)
@@ -4720,6 +4724,10 @@ int __init addrconf_init(void)
 
 	ipv6_addr_label_rtnl_register();
 
+#ifdef MODULE
+	ipv6_dev_get_saddr = _ipv6_dev_get_saddr;
+#endif
+
 	return 0;
 errout:
 	rtnl_af_unregister(&inet6_ops);
@@ -4738,6 +4746,10 @@ void addrconf_cleanup(void)
 	struct net_device *dev;
 	int i;
 
+#ifdef MODULE
+	ipv6_dev_get_saddr = ipv6_dev_get_saddr_stub;
+#endif
+
 	unregister_netdevice_notifier(&ipv6_dev_notf);
 	unregister_pernet_subsys(&addrconf_ops);
 	ipv6_addr_label_cleanup();
--- a/net/ipv6/addrconf_core.c
+++ b/net/ipv6/addrconf_core.c
@@ -3,10 +3,17 @@
  * not configured or static.
  */
 
+#include <net/addrconf.h>
 #include <net/ipv6.h>
 
 #define IPV6_ADDR_SCOPE_TYPE(scope)	((scope) << 16)
 
+#ifdef CONFIG_IPV6_MODULE
+typeof(ipv6_dev_get_saddr) __read_mostly ipv6_dev_get_saddr
+	= ipv6_dev_get_saddr_stub;
+#endif
+EXPORT_SYMBOL_GPL(ipv6_dev_get_saddr);
+
 static inline unsigned ipv6_addr_scope2type(unsigned scope)
 {
 	switch(scope) {



^ permalink raw reply

* Re: Bug inkvm_set_irq
From: Jean-Philippe Menil @ 2011-03-17  8:00 UTC (permalink / raw)
  To: jean-philippe.menil; +Cc: Michael S. Tsirkin, netdev, kvm, virtualization
In-Reply-To: <4D7F7E82.4000600@univ-nantes.fr>

Le 15/03/2011 15:58, Jean-Philippe Menil a écrit :
> Le 15/03/2011 15:32, Michael S. Tsirkin a écrit :
>> On Thu, Mar 10, 2011 at 09:42:28AM +0100, Jean-Philippe Menil wrote:
>>> 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.
>> Are you running a preemptible kernel?
>> Does the following help at all?
>>
>> diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
>> index 2ca4535..cdf51c9 100644
>> --- a/virt/kvm/eventfd.c
>> +++ b/virt/kvm/eventfd.c
>> @@ -90,7 +90,7 @@ irqfd_shutdown(struct work_struct *work)
>>    	 * We know no new events will be scheduled at this point, so block
>>    	 * until all previously outstanding events have completed
>>    	 */
>> -	flush_work(&irqfd->inject);
>> +	flush_work_sync(&irqfd->inject);
>>
>>    	/*
>>    	 * It is now safe to release the object's resources
>>
> Hi,
>
> thanks for the response.
>
> root@ayrshire:~# zcat /proc/config.gz | grep -i preempt
> # CONFIG_PREEMPT_RCU is not set
> CONFIG_PREEMPT_NOTIFIERS=y
> CONFIG_PREEMPT_NONE=y
> # CONFIG_PREEMPT_VOLUNTARY is not set
> # CONFIG_PREEMPT is not set
>
> It does not seem to be a preemptible kernel.
>
> I will test tour patch, and report the result.
>
> Regards.
>
Hi,

i reboot the host with the "flush_work_sync", yesterday at lunchtime.
I haven't see "Eventfd bug detected" or  "Wakeup bug detected" until now.

The modification seem to do the trick.

So, if my understand is correct, flush_work flush the last irqfd, but in 
my case, antoher irqfd was still queued to a cpu?
Is that right?

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: build breakage due to br_multicast.c referencing ipv6_dev_get_saddr()
From: Jan Beulich @ 2011-03-17  7:57 UTC (permalink / raw)
  To: Brian Haley; +Cc: davem, shemminger, bridge, netdev, linus.luessing
In-Reply-To: <4D80F494.6050906@hp.com>

>>> On 16.03.11 at 18:34, Brian Haley <brian.haley@hp.com> wrote:
> On 03/16/2011 08:34 AM, Jan Beulich wrote:
>> With BRIDGE=y and IPV6=m commit
>> fe29ec41aaa51902aebd63658dfb04fe6fea8be5 ("bridge: Use IPv6
>> link-local address for multicast listener queries") causes the build to
>> break.
>> 
>> Similary, even if both are =m, but ipv6.ko got blacklisted (as is
>> happening in various SuSE distros when disabling IPv6), there's
>> a runtime problem since bridge.ko then won't load anymore due
>> to the missing symbol.
> 
> Load the ipv6 module with disable=1, which is why I added it :)

Indeed, I realized there is such an option only after I sent
that mail. Nevertheless, I think it is overkill to load a huge
module like this just to satisfy never actually used symbol
references.

In fact, just like it seems bogus to load ipv6.ko in a pure IPv4
environment, I think the opposite is also true: IPv4 support
should be in a module, and it should be possible to not load
it in a pure IPv6 environment.

Jan


^ permalink raw reply

* Re: build breakage due to br_multicast.c referencing ipv6_dev_get_saddr()
From: Jan Beulich @ 2011-03-17  7:53 UTC (permalink / raw)
  To: David Miller, shemminger; +Cc: bridge, netdev, linus.luessing
In-Reply-To: <20110316.104937.189702706.davem@davemloft.net>

>>> On 16.03.11 at 18:49, David Miller <davem@davemloft.net> wrote:
> From: Stephen Hemminger <shemminger@linux-foundation.org>
> Date: Wed, 16 Mar 2011 08:24:41 -0700
> 
>> On Wed, 16 Mar 2011 12:34:19 +0000
>> "Jan Beulich" <JBeulich@novell.com> wrote:
>> 
>>> With BRIDGE=y and IPV6=m commit
>>> fe29ec41aaa51902aebd63658dfb04fe6fea8be5 ("bridge: Use IPv6
>>> link-local address for multicast listener queries") causes the build to
>>> break.
>> 
>> Rather than continue with the config games, lets just make the necessary
>> ipv6 pieces accessible.
> 
> You can't Stephen, ipv6_dev_get_saddr() requires access to the actual ipv6
> device state, that means you have to pull in the entire ipv6 stack in 
> because
> there are dependencies all the way down into the routing code.
> 
> We added a Kconfig fix to cure this specific problem, which made it
> into 2.6.38-final, so I don't understand why Jan is even seeing this,
> it's supposed to force BRIDGE modular if IPV6 is modular:

Oh, sorry, I was still on -rc7.

Nevertheless, I don't think this is the right way to fix it (nor
in infiniband and possibly ip_vs as pointed out).

Jan

> commit dcbcdf22f500ac6e4ec06485341024739b9dc241
> Author: Randy Dunlap <randy.dunlap@oracle.com>
> Date:   Thu Mar 10 13:45:57 2011 -0800
> 
>     net: bridge builtin vs. ipv6 modular
>     
>     When configs BRIDGE=y and IPV6=m, this build error occurs:
>     
>     br_multicast.c:(.text+0xa3341): undefined reference to 
> `ipv6_dev_get_saddr'
>     
>     BRIDGE_IGMP_SNOOPING is boolean; if it were tristate, then adding
>     	depends on IPV6 || IPV6=n
>     to BRIDGE_IGMP_SNOOPING would be a good fix.  As it is currently,
>     making BRIDGE depend on the IPV6 config works.
>     
>     Reported-by: Patrick Schaaf <netdev@bof.de>
>     Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
>     Signed-off-by: David S. Miller <davem@davemloft.net>
> 
> diff --git a/net/bridge/Kconfig b/net/bridge/Kconfig
> index 9190ae4..6dee7bf 100644
> --- a/net/bridge/Kconfig
> +++ b/net/bridge/Kconfig
> @@ -6,6 +6,7 @@ config BRIDGE
>  	tristate "802.1d Ethernet Bridging"
>  	select LLC
>  	select STP
> +	depends on IPV6 || IPV6=n
>  	---help---
>  	  If you say Y here, then your Linux box will be able to act as an
>  	  Ethernet bridge, which means that the different Ethernet segments it




^ permalink raw reply

* [PATCH net-next-2.6] be2net: Support for FAT dump retrieval using ethtool --register-dump option
From: Somnath Kotur @ 2011-03-17  7:22 UTC (permalink / raw)
  To: netdev; +Cc: Somnath Kotur


Signed-off-by: Somnath Kotur <somnath.kotur@emulex.com>
---
 drivers/net/benet/be_cmds.c    |  107 ++++++++++++++++++++++++++++++++++++++++
 drivers/net/benet/be_cmds.h    |   21 ++++++++
 drivers/net/benet/be_ethtool.c |   21 ++++++++
 drivers/net/benet/be_hw.h      |    4 ++
 4 files changed, 153 insertions(+), 0 deletions(-)

diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c
index 5a4a87e..2aadf88 100644
--- a/drivers/net/benet/be_cmds.c
+++ b/drivers/net/benet/be_cmds.c
@@ -1186,6 +1186,113 @@ err:
 	return status;
 }
 
+/* Uses synchronous mcc */
+int be_cmd_get_reg_len(struct be_adapter *adapter, u32 *log_size)
+{
+	struct be_mcc_wrb *wrb;
+	struct be_cmd_req_get_fat *req;
+	int status;
+
+	spin_lock_bh(&adapter->mcc_lock);
+
+	wrb = wrb_from_mccq(adapter);
+	if (!wrb) {
+		status = -EBUSY;
+		goto err;
+	}
+	req = embedded_payload(wrb);
+
+	be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0,
+			OPCODE_COMMON_MANAGE_FAT);
+
+	be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
+		OPCODE_COMMON_MANAGE_FAT, sizeof(*req));
+	req->fat_operation = cpu_to_le32(QUERY_FAT);
+	status = be_mcc_notify_wait(adapter);
+	if (!status) {
+		struct be_cmd_resp_get_fat *resp = embedded_payload(wrb);
+		if (log_size && resp->log_size)
+			*log_size = le32_to_cpu(resp->log_size -
+					sizeof(u32));
+	}
+err:
+	spin_unlock_bh(&adapter->mcc_lock);
+	return status;
+}
+
+void be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf)
+{
+	struct be_dma_mem get_fat_cmd;
+	struct be_mcc_wrb *wrb;
+	struct be_cmd_req_get_fat *req;
+	struct be_sge *sge;
+	u32 offset = 0, total_size, buf_size, log_offset = sizeof(u32);
+	int status;
+
+	if (buf_len == 0)
+		return;
+
+	total_size = buf_len;
+
+	spin_lock_bh(&adapter->mcc_lock);
+
+	wrb = wrb_from_mccq(adapter);
+	if (!wrb) {
+		status = -EBUSY;
+		goto err;
+	}
+	while (total_size) {
+		buf_size = min(total_size, (u32)60*1024);
+		total_size -= buf_size;
+
+		get_fat_cmd.size = sizeof(struct be_cmd_req_get_fat) + buf_size;
+		get_fat_cmd.va = pci_alloc_consistent(adapter->pdev,
+					get_fat_cmd.size,
+					&get_fat_cmd.dma);
+		if (!get_fat_cmd.va) {
+			status = -ENOMEM;
+			dev_err(&adapter->pdev->dev,
+					"Memory allocation failure while retrieving FAT data\n");
+			goto err;
+		}
+		req = get_fat_cmd.va;
+		sge = nonembedded_sgl(wrb);
+
+		be_wrb_hdr_prepare(wrb, get_fat_cmd.size, false, 1,
+				OPCODE_COMMON_MANAGE_FAT);
+
+		be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
+				OPCODE_COMMON_MANAGE_FAT, get_fat_cmd.size);
+
+		sge->pa_hi = cpu_to_le32(upper_32_bits(get_fat_cmd.size));
+		sge->pa_lo = cpu_to_le32(get_fat_cmd.dma & 0xFFFFFFFF);
+		sge->len = cpu_to_le32(get_fat_cmd.size);
+
+		req->fat_operation = cpu_to_le32(RETRIEVE_FAT);
+		req->read_log_offset = cpu_to_le32(log_offset);
+		req->read_log_length = cpu_to_le32(buf_size);
+		req->data_buffer_size = cpu_to_le32(buf_size);
+
+		status = be_mcc_notify_wait(adapter);
+		if (!status) {
+			struct be_cmd_resp_get_fat *resp = get_fat_cmd.va;
+			memcpy(buf + offset,
+				resp->data_buffer,
+				resp->read_log_length);
+		}
+		pci_free_consistent(adapter->pdev, get_fat_cmd.size,
+				get_fat_cmd.va,
+				get_fat_cmd.dma);
+		if (status)
+			dev_err(&adapter->pdev->dev, "FAT Table Retrieve error\n");
+
+		offset += buf_size;
+		log_offset += buf_size;
+	}
+err:
+	spin_unlock_bh(&adapter->mcc_lock);
+}
+
 /* Uses Mbox */
 int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver)
 {
diff --git a/drivers/net/benet/be_cmds.h b/drivers/net/benet/be_cmds.h
index 4f254cf..3fb6e0a 100644
--- a/drivers/net/benet/be_cmds.h
+++ b/drivers/net/benet/be_cmds.h
@@ -186,6 +186,7 @@ struct be_mcc_mailbox {
 #define OPCODE_COMMON_NTWK_PMAC_ADD			59
 #define OPCODE_COMMON_NTWK_PMAC_DEL			60
 #define OPCODE_COMMON_FUNCTION_RESET			61
+#define OPCODE_COMMON_MANAGE_FAT			68
 #define OPCODE_COMMON_ENABLE_DISABLE_BEACON		69
 #define OPCODE_COMMON_GET_BEACON_STATE			70
 #define OPCODE_COMMON_READ_TRANSRECV_DATA		73
@@ -380,6 +381,24 @@ struct be_cmd_resp_cq_create {
 	u16 rsvd0;
 } __packed;
 
+struct be_cmd_req_get_fat {
+	struct be_cmd_req_hdr hdr;
+	u32 fat_operation;
+	u32 read_log_offset;
+	u32 read_log_length;
+	u32 data_buffer_size;
+	u32 data_buffer[1];
+} __packed;
+
+struct be_cmd_resp_get_fat {
+	struct be_cmd_resp_hdr hdr;
+	u32 log_size;
+	u32 read_log_length;
+	u32 rsvd[2];
+	u32 data_buffer[1];
+} __packed;
+
+
 /******************** Create MCCQ ***************************/
 /* Pseudo amap definition in which each bit of the actual structure is defined
  * as a byte: used to calculate offset/shift/mask of each field */
@@ -1148,4 +1167,6 @@ extern void be_detect_dump_ue(struct be_adapter *adapter);
 extern int be_cmd_get_die_temperature(struct be_adapter *adapter);
 extern int be_cmd_get_cntl_attributes(struct be_adapter *adapter);
 extern int be_cmd_check_native_mode(struct be_adapter *adapter);
+extern int be_cmd_get_reg_len(struct be_adapter *adapter, u32 *log_size);
+extern void be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf);
 
diff --git a/drivers/net/benet/be_ethtool.c b/drivers/net/benet/be_ethtool.c
index aac248f..575ac65 100644
--- a/drivers/net/benet/be_ethtool.c
+++ b/drivers/net/benet/be_ethtool.c
@@ -156,6 +156,25 @@ be_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
 }
 
 static int
+be_get_reg_len(struct net_device *netdev)
+{
+	struct be_adapter *adapter = netdev_priv(netdev);
+	u32 log_size = 0;
+
+	be_cmd_get_reg_len(adapter, &log_size);
+	return log_size;
+}
+
+static void
+be_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *buf)
+{
+	struct be_adapter *adapter = netdev_priv(netdev);
+
+	memset(buf, 0, regs->len);
+	be_cmd_get_regs(adapter, regs->len, buf);
+}
+
+static int
 be_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
 {
 	struct be_adapter *adapter = netdev_priv(netdev);
@@ -737,6 +756,8 @@ const struct ethtool_ops be_ethtool_ops = {
 	.phys_id = be_phys_id,
 	.get_sset_count = be_get_sset_count,
 	.get_ethtool_stats = be_get_ethtool_stats,
+	.get_regs_len = be_get_reg_len,
+	.get_regs = be_get_regs,
 	.flash_device = be_do_flash,
 	.self_test = be_self_test,
 };
diff --git a/drivers/net/benet/be_hw.h b/drivers/net/benet/be_hw.h
index d4344a0..53d658a 100644
--- a/drivers/net/benet/be_hw.h
+++ b/drivers/net/benet/be_hw.h
@@ -155,6 +155,10 @@
 /********** SRIOV VF PCICFG OFFSET ********/
 #define SRIOV_VF_PCICFG_OFFSET		(4096)
 
+/********** FAT TABLE  ********/
+#define RETRIEVE_FAT	0
+#define QUERY_FAT	1
+
 /* Flashrom related descriptors */
 #define IMAGE_TYPE_FIRMWARE		160
 #define IMAGE_TYPE_BOOTCODE		224
-- 
1.5.6.1


^ permalink raw reply related

* Re: TX from KVM guest virtio_net to vhost issues
From: Michael S. Tsirkin @ 2011-03-17  6:00 UTC (permalink / raw)
  To: Shirley Ma
  Cc: Rusty Russell, Tom Lendacky, Krishna Kumar2, David Miller, kvm,
	netdev, steved
In-Reply-To: <1300321214.3255.40.camel@localhost.localdomain>

On Wed, Mar 16, 2011 at 05:20:14PM -0700, Shirley Ma wrote:
> This patch doesn't seem to help guest TX queue overrun.

Just making sure: what exactly was tested?
You did combine this with a vhost-net and qemu patches, right?

-- 
MST

^ permalink raw reply

* Re: [PATCH] virtio: Avoid virtio_net TX queue over run
From: Michael S. Tsirkin @ 2011-03-17  5:05 UTC (permalink / raw)
  To: Shirley Ma; +Cc: Rusty Russell, David Miller, kvm, netdev
In-Reply-To: <1300320595.3255.29.camel@localhost.localdomain>

On Wed, Mar 16, 2011 at 05:09:55PM -0700, Shirley Ma wrote:
> This patch addresses small message size performance in a situation the
> KVM guest virtio_net TX queue overrun. This patch adds a new API in
> virtio_ring for ring capacity check; and remove KVM guest virtio_net TX
> queue send completion interrupts completely. The test has shown that 
> whenever the queue is overrun, it's much better to drop a few packets
> than stopping TX queue and waiting for host to notify the guest to wake
> up the TX queue again, the small messages size performance gain for
> single TCP_STREAM BW could be up to 200%-300% and better than bare
> metal, and no regression has been found in other situation.
> 
> Performance data for 10GbE,
> 
> KVM guest to local host:
> ------------------------
> Message size	2.6.38-rc8 	2.6.38-rc8+patch
> 1024		1770.61		4528.37
> 2048		2702.30		7110.95
> 4096		5256.84		10104.76
> 8192		7543.66		10945.93
> 16K		10500.47	10783.50
> 64K		13718.62	13640.80
> 
> KVM guest to remote host:
> --------------------------
> Message size	Bare Metal  2.6.38-rc8	2.6.38-rc8+patch
> 1024		1802.67		2381.41		5599.15	
> 2048		4317.87		4094.12		9241.86
> 4096		6266.15		5231.24		9321.87
> 8192		8409.17		7952.74		9265.45
> 16K		9351.63		8260.68		8310.29
> 64K		9347.94		9103.75		9094.38 
> 
> Thanks
> Shirley

Could you add CPU utilization data pls? I also wonder what does this do
to UDP?  Won't a lot of packets be dropped?

-- 
MST

^ permalink raw reply

* Re: [PATCH 2/2] virtio_net: remove send completion interrupts and avoid TX queue overrun through packet drop
From: Michael S. Tsirkin @ 2011-03-17  5:02 UTC (permalink / raw)
  To: Shirley Ma; +Cc: Rusty Russell, David Miller, kvm, netdev, Herbert Xu
In-Reply-To: <1300320775.3255.34.camel@localhost.localdomain>

On Wed, Mar 16, 2011 at 05:12:55PM -0700, Shirley Ma wrote:
> Signed-off-by: Shirley Ma <xma@us.ibm.com>
> ---
>  drivers/net/virtio_net.c |   39 ++++++++++++++++++++-------------------
>  1 files changed, 20 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 82dba5a..c603daa 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -23,6 +23,7 @@
>  #include <linux/module.h>
>  #include <linux/virtio.h>
>  #include <linux/virtio_net.h>
> +#include <linux/virtio_ring.h>
>  #include <linux/scatterlist.h>
>  #include <linux/if_vlan.h>
>  #include <linux/slab.h>
> @@ -509,19 +510,18 @@ again:
>  	return received;
>  }
>  
> -static unsigned int free_old_xmit_skbs(struct virtnet_info *vi)
> +static void free_old_xmit_skbs(struct virtnet_info *vi)
>  {
>  	struct sk_buff *skb;
> -	unsigned int len, tot_sgs = 0;
> +	unsigned int len;
>  
>  	while ((skb = virtqueue_get_buf(vi->svq, &len)) != NULL) {
>  		pr_debug("Sent skb %p\n", skb);
>  		vi->dev->stats.tx_bytes += skb->len;
>  		vi->dev->stats.tx_packets++;
> -		tot_sgs += skb_vnet_hdr(skb)->num_sg;
>  		dev_kfree_skb_any(skb);
>  	}
> -	return tot_sgs;
> +	return;
>  }
>  
>  static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb)
> @@ -574,11 +574,26 @@ static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb)
>  static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
>  {
>  	struct virtnet_info *vi = netdev_priv(dev);
> +	bool drop;
> +	bool indirect = virtio_has_feature(vi->vdev,
> +					   VIRTIO_RING_F_INDIRECT_DESC);
>  	int capacity;
>  
>  	/* Free up any pending old buffers before queueing new ones. */
>  	free_old_xmit_skbs(vi);
> -
> +	capacity = virtqueue_get_capacity(vi->svq);
> +
> +	/* Drop packet instead of stop queue for better performance */
> +	drop = (capacity == 0 && indirect) ||
> +	       ((capacity < MAX_SKB_FRAGS + 2) && !indirect);
> +	if (unlikely(drop)) {
> +		dev->stats.tx_fifo_errors++;
> +		dev_warn(&dev->dev, "Unexpected TX queue failure: %d\n",
> +			 capacity);
> +		dev->stats.tx_dropped++;
> +		kfree_skb(skb);
> +		return NETDEV_TX_OK;
> +	}
>  	/* Try to transmit */
>  	capacity = xmit_skb(vi, skb);

So, this just tries to make sure there's enough space for
max packet in the ring, if not - drop and return OK.
Why bother checking beforehand though?
If that's what we want to do, we can just call add_buf and see
if it fails?


> @@ -605,20 +620,6 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
>  	skb_orphan(skb);
>  	nf_reset(skb);
>  
> -	/* Apparently nice girls don't return TX_BUSY; stop the queue
> -	 * before it gets out of hand.  Naturally, this wastes entries. */
> -	if (capacity < 2+MAX_SKB_FRAGS) {
> -		netif_stop_queue(dev);
> -		if (unlikely(!virtqueue_enable_cb(vi->svq))) {
> -			/* More just got used, free them then recheck. */
> -			capacity += free_old_xmit_skbs(vi);
> -			if (capacity >= 2+MAX_SKB_FRAGS) {
> -				netif_start_queue(dev);
> -				virtqueue_disable_cb(vi->svq);
> -			}
> -		}
> -	}
> -
>  	return NETDEV_TX_OK;
>  }
>  
> 

^ permalink raw reply

* [PATCH v2] gianfar: Fall back to software tcp/udp checksum on older controllers
From: Alex Dubov @ 2011-03-17  3:57 UTC (permalink / raw)
  To: linux-kernel; +Cc: netdev, linuxppc-dev, davem, mlcreech

As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx,
older revisions of gianfar controllers will be unable to calculate a TCP/UDP
packet checksum for some alignments of the appropriate FCB. This patch checks
for FCB alignment on such controllers and falls back to software checksumming
if the alignment is known to be bad.

Signed-off-by: Alex Dubov <oakad@yahoo.com>
---
Can we, please, proceed with this patch?
The issue is badly annoying, breaking quite a few of the MPC8548 chips.

Changes for v2:
   - Make indentation slightly more consistent.
   - Replace bizarre switch-based condition with plain boring one.

 drivers/net/gianfar.c |   16 ++++++++++++++--
 drivers/net/gianfar.h |    1 +
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 5ed8f9f..3da19a5 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -950,6 +950,11 @@ static void gfar_detect_errata(struct gfar_private *priv)
 			(pvr == 0x80861010 && (mod & 0xfff9) == 0x80c0))
 		priv->errata |= GFAR_ERRATA_A002;
 
+	/* MPC8313 Rev < 2.0, MPC8548 rev 2.0 */
+	if ((pvr == 0x80850010 && mod == 0x80b0 && rev < 0x0020) ||
+			(pvr == 0x80210020 && mod == 0x8030 && rev == 0x0020))
+		priv->errata |= GFAR_ERRATA_12;
+
 	if (priv->errata)
 		dev_info(dev, "enabled errata workarounds, flags: 0x%x\n",
 			 priv->errata);
@@ -2156,8 +2161,15 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	/* Set up checksumming */
 	if (CHECKSUM_PARTIAL == skb->ip_summed) {
 		fcb = gfar_add_fcb(skb);
-		lstatus |= BD_LFLAG(TXBD_TOE);
-		gfar_tx_checksum(skb, fcb);
+		/* as specified by errata */
+		if (unlikely(gfar_has_errata(priv, GFAR_ERRATA_12)
+			     && ((unsigned long)fcb % 0x20) > 0x18)) {
+			__skb_pull(skb, GMAC_FCB_LEN);
+			skb_checksum_help(skb);
+		} else {
+			lstatus |= BD_LFLAG(TXBD_TOE);
+			gfar_tx_checksum(skb, fcb);
+		}
 	}
 
 	if (vlan_tx_tag_present(skb)) {
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index 54de413..ec5d595 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -1039,6 +1039,7 @@ enum gfar_errata {
 	GFAR_ERRATA_74		= 0x01,
 	GFAR_ERRATA_76		= 0x02,
 	GFAR_ERRATA_A002	= 0x04,
+	GFAR_ERRATA_12		= 0x08, /* a.k.a errata eTSEC49 */
 };
 
 /* Struct stolen almost completely (and shamelessly) from the FCC enet source
-- 
1.7.3.2

^ permalink raw reply related

* Re: [Bugme-new] [Bug 31232] New: /proc/sys/net/ipv6 has two neigh folders
From: Eric W. Biederman @ 2011-03-17  3:55 UTC (permalink / raw)
  To: Andrew Morton; +Cc: netdev, bugzilla-daemon, bugme-daemon, sunkan
In-Reply-To: <20110316152300.360f9240.akpm@linux-foundation.org>

Andrew Morton <akpm@linux-foundation.org> writes:

> (switched to email.  Please respond via emailed reply-to-all, not via the
> bugzilla web interface).
>
> On Wed, 16 Mar 2011 22:06:34 GMT
> bugzilla-daemon@bugzilla.kernel.org wrote:
>
>> https://bugzilla.kernel.org/show_bug.cgi?id=31232
>> 
>>            Summary: /proc/sys/net/ipv6 has two neigh folders
>>            Product: Networking
>>            Version: 2.5
>>     Kernel Version: 2.6.38
>>           Platform: All
>>         OS/Version: Linux
>>               Tree: Mainline
>>             Status: NEW
>>           Severity: low
>>           Priority: P1
>>          Component: IPV6
>>         AssignedTo: yoshfuji@linux-ipv6.org
>>         ReportedBy: sunkan@zappa.cx
>>         Regression: No
>> 
>> 
>> I noticed when looking for other things that there are two neigh folders in
>> /proc/sys/net/ipv6
>> 
>> Reverting this commit removes the extra neigh folder:
>> http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=bf36076a67db6d7423d09d861a072337866f0dd9
>> 
>> I don't know how to fix this.
>> I tried removing the ',' on the row '.child = empty,' (looking at the other
>> rows it did seem like a typo to me).
>> 
>> This did not change anything that I could see though.
>> 
>> Here is the commit I believe introduced the bug: 

Interesting.

This is definitely a bug.  I suspect it may be another symptom of the
bug I was trying to fix.  Something somewhere is messed up with the
neigh directory.

That extra neigh entry should serve as a mount point for any later neigh
entries that are registered, so the change should be fine.

I will see if I can make the time to look into this, as this new symptom
looks as nasty as the use after free problems I was seeing earlier.

Eric


>> --- a/net/ipv6/sysctl_net_ipv6.c
>> +++ b/net/ipv6/sysctl_net_ipv6.c
>> @@ -15,6 +15,8 @@
>>  #include <net/addrconf.h>
>>  #include <net/inet_frag.h>
>> 
>> +static struct ctl_table empty[1];
>> +
>>  static ctl_table ipv6_table_template[] = {
>>         {
>>                 .procname       = "route",
>> @@ -35,6 +37,12 @@ static ctl_table ipv6_table_template[] = {
>>                 .mode           = 0644,
>>                 .proc_handler   = proc_dointvec
>>         },
>> +       {
>> +               .procname       = "neigh",
>> +               .maxlen         = 0,
>> +               .mode           = 0555,
>> +               .child          = empty,
>> +       },
>>         { }
>>  };
>> 
>> @@ -152,7 +160,6 @@ static struct ctl_table_header *ip6_base;
>> 
>>  int ipv6_static_sysctl_register(void)
>>  {
>> -       static struct ctl_table empty[1];
>>         ip6_base = register_sysctl_paths(net_ipv6_ctl_path, empty);
>>         if (ip6_base == NULL)
>>                 return -ENOMEM;
>> 

^ permalink raw reply

* Re: TX from KVM guest virtio_net to vhost issues
From: Shirley Ma @ 2011-03-17  0:20 UTC (permalink / raw)
  To: Rusty Russell
  Cc: Michael S. Tsirkin, Tom Lendacky, Krishna Kumar2, David Miller,
	kvm, netdev, steved
In-Reply-To: <87d3ly2n81.fsf@rustcorp.com.au>

On Fri, 2011-03-11 at 16:49 +1030, Rusty Russell wrote:
> But if one side outruns the other, it does a lot of unnecessary work
> notifying/interrupting it over and over again before the host/guest
> gets
> a chance to shut notifications/interrupts off.  Hence the last_used
> publishing patch (Xen does this right, I screwed it up).
> 
> Long weekend here, and I'm otherwise committed.  But if noone has
> cleaned up that patch by early next week, I'll try to do so and see if
> we can make a real difference.

This patch doesn't seem to help guest TX queue overrun. I couldn't find
any other reason why the TX queue overrun, even I increased guest send
queue ring size to 1K, it didn't help at all. I sent out a dropping
packet approach for guest to avoid this for you to review. Small message
size performance has been dramatically increased with a few packet
drops. Most of the workload doesn't invoke the TX queue overrun, so I
don't see any regressions. 

With this patch, vhost side doesn't need to signal guest on TX path,
however for previous guest, we still need vhost to signal guest.

Please let me know if you have any other ideas to debug what causes
guest TX overrun.

Thanks
Shirley


^ permalink raw reply

* [PATCH 2/2] virtio_net: remove send completion interrupts and avoid TX queue overrun through packet drop
From: Shirley Ma @ 2011-03-17  0:12 UTC (permalink / raw)
  To: Michael S. Tsirkin, Rusty Russell; +Cc: David Miller, kvm, netdev

Signed-off-by: Shirley Ma <xma@us.ibm.com>
---
 drivers/net/virtio_net.c |   39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 82dba5a..c603daa 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -23,6 +23,7 @@
 #include <linux/module.h>
 #include <linux/virtio.h>
 #include <linux/virtio_net.h>
+#include <linux/virtio_ring.h>
 #include <linux/scatterlist.h>
 #include <linux/if_vlan.h>
 #include <linux/slab.h>
@@ -509,19 +510,18 @@ again:
 	return received;
 }
 
-static unsigned int free_old_xmit_skbs(struct virtnet_info *vi)
+static void free_old_xmit_skbs(struct virtnet_info *vi)
 {
 	struct sk_buff *skb;
-	unsigned int len, tot_sgs = 0;
+	unsigned int len;
 
 	while ((skb = virtqueue_get_buf(vi->svq, &len)) != NULL) {
 		pr_debug("Sent skb %p\n", skb);
 		vi->dev->stats.tx_bytes += skb->len;
 		vi->dev->stats.tx_packets++;
-		tot_sgs += skb_vnet_hdr(skb)->num_sg;
 		dev_kfree_skb_any(skb);
 	}
-	return tot_sgs;
+	return;
 }
 
 static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb)
@@ -574,11 +574,26 @@ static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb)
 static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
 	struct virtnet_info *vi = netdev_priv(dev);
+	bool drop;
+	bool indirect = virtio_has_feature(vi->vdev,
+					   VIRTIO_RING_F_INDIRECT_DESC);
 	int capacity;
 
 	/* Free up any pending old buffers before queueing new ones. */
 	free_old_xmit_skbs(vi);
-
+	capacity = virtqueue_get_capacity(vi->svq);
+
+	/* Drop packet instead of stop queue for better performance */
+	drop = (capacity == 0 && indirect) ||
+	       ((capacity < MAX_SKB_FRAGS + 2) && !indirect);
+	if (unlikely(drop)) {
+		dev->stats.tx_fifo_errors++;
+		dev_warn(&dev->dev, "Unexpected TX queue failure: %d\n",
+			 capacity);
+		dev->stats.tx_dropped++;
+		kfree_skb(skb);
+		return NETDEV_TX_OK;
+	}
 	/* Try to transmit */
 	capacity = xmit_skb(vi, skb);
 
@@ -605,20 +620,6 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
 	skb_orphan(skb);
 	nf_reset(skb);
 
-	/* Apparently nice girls don't return TX_BUSY; stop the queue
-	 * before it gets out of hand.  Naturally, this wastes entries. */
-	if (capacity < 2+MAX_SKB_FRAGS) {
-		netif_stop_queue(dev);
-		if (unlikely(!virtqueue_enable_cb(vi->svq))) {
-			/* More just got used, free them then recheck. */
-			capacity += free_old_xmit_skbs(vi);
-			if (capacity >= 2+MAX_SKB_FRAGS) {
-				netif_start_queue(dev);
-				virtqueue_disable_cb(vi->svq);
-			}
-		}
-	}
-
 	return NETDEV_TX_OK;
 }
 



^ permalink raw reply related

* [PATCH] virtio: Avoid virtio_net TX queue over run
From: Shirley Ma @ 2011-03-17  0:09 UTC (permalink / raw)
  To: Michael S. Tsirkin, Rusty Russell; +Cc: David Miller, kvm, netdev

This patch addresses small message size performance in a situation the
KVM guest virtio_net TX queue overrun. This patch adds a new API in
virtio_ring for ring capacity check; and remove KVM guest virtio_net TX
queue send completion interrupts completely. The test has shown that 
whenever the queue is overrun, it's much better to drop a few packets
than stopping TX queue and waiting for host to notify the guest to wake
up the TX queue again, the small messages size performance gain for
single TCP_STREAM BW could be up to 200%-300% and better than bare
metal, and no regression has been found in other situation.

Performance data for 10GbE,

KVM guest to local host:
------------------------
Message size	2.6.38-rc8 	2.6.38-rc8+patch
1024		1770.61		4528.37
2048		2702.30		7110.95
4096		5256.84		10104.76
8192		7543.66		10945.93
16K		10500.47	10783.50
64K		13718.62	13640.80

KVM guest to remote host:
--------------------------
Message size	Bare Metal  2.6.38-rc8	2.6.38-rc8+patch
1024		1802.67		2381.41		5599.15	
2048		4317.87		4094.12		9241.86
4096		6266.15		5231.24		9321.87
8192		8409.17		7952.74		9265.45
16K		9351.63		8260.68		8310.29
64K		9347.94		9103.75		9094.38 

Thanks
Shirley


^ permalink raw reply

* [PATCH 1/2]virtio_ring: Add capacity check API
From: Shirley Ma @ 2011-03-17  0:10 UTC (permalink / raw)
  To: Michael S. Tsirkin, Rusty Russell; +Cc: David Miller, kvm, netdev

Signed-off-by: Shirley Ma <xma@us.ibm.com>
---
 drivers/virtio/virtio_ring.c |    8 ++++++++
 include/linux/virtio.h       |    5 +++++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index cc2f73e..ef6d920 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -329,6 +329,14 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)
 }
 EXPORT_SYMBOL_GPL(virtqueue_get_buf);
 
+int virtqueue_get_capacity(struct virtqueue *_vq)
+{
+	struct vring_virtqueue *vq = to_vvq(_vq);
+
+	return vq->num_free;
+}
+EXPORT_SYMBOL_GPL(virtqueue_get_capacity);
+
 void virtqueue_disable_cb(struct virtqueue *_vq)
 {
 	struct vring_virtqueue *vq = to_vvq(_vq);
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index aff5b4f..6c7f519 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -42,6 +42,9 @@ struct virtqueue {
  *	vq: the struct virtqueue we're talking about.
  *	len: the length written into the buffer
  *	Returns NULL or the "data" token handed to add_buf.
+ * virtqueue_get_capacity: get the current capacity of the queue
+ *	vq: the struct virtqueue we're talking about.
+ *	Returns remaining capacity of the queue.
  * virtqueue_disable_cb: disable callbacks
  *	vq: the struct virtqueue we're talking about.
  *	Note that this is not necessarily synchronous, hence unreliable and only
@@ -82,6 +85,8 @@ void virtqueue_kick(struct virtqueue *vq);
 
 void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);
 
+int virtqueue_get_capacity(struct virtqueue *vq);
+
 void virtqueue_disable_cb(struct virtqueue *vq);
 
 bool virtqueue_enable_cb(struct virtqueue *vq);



^ permalink raw reply related

* Re: No iproute2 for 2.6.38
From: Stephen Hemminger @ 2011-03-17  0:04 UTC (permalink / raw)
  To: Sridhar Samudrala; +Cc: linux-kernel, netdev
In-Reply-To: <4D804EBD.4030904@us.ibm.com>

On Tue, 15 Mar 2011 22:46:37 -0700
Sridhar Samudrala <sri@us.ibm.com> wrote:

> On 3/15/2011 7:55 PM, Stephen Hemminger wrote:
> > I am not going to bother releasing for 2.6.38 the only changes
> > were later reverted.
> 2.6.38 includes support for macvlan/macvtap 'passthru' mode that allows 
> assigning
> SR-IOV VFs to a KVM guest via macvtap/virtio.
> It is not possible to support live migration using direct assignment of 
> VF's to a guest,
> but 'passthu' assignment makes this possible.
> 
> Enabling this feature requires the following patch to iproute2 that 
> allows creating macvlan
> device in 'passthru' mode.
>      http://patchwork.ozlabs.org/patch/69515/
> Looks like this patch is still marked as 'Awaiting upstream'.
> 
> Could you apply this patch and it would be great if a version of 
> iproute2 is released for 2.6.38.
> 
> Thanks
> Sridhar
> 

Sorry missed it applied to repository, still not sure worth a new release.


-- 

^ permalink raw reply

* Re: [Bugme-new] [Bug 31232] New: /proc/sys/net/ipv6 has two neigh folders
From: Andrew Morton @ 2011-03-16 22:23 UTC (permalink / raw)
  To: netdev; +Cc: bugzilla-daemon, bugme-daemon, Eric W. Biederman, sunkan
In-Reply-To: <bug-31232-10286@https.bugzilla.kernel.org/>


(switched to email.  Please respond via emailed reply-to-all, not via the
bugzilla web interface).

On Wed, 16 Mar 2011 22:06:34 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:

> https://bugzilla.kernel.org/show_bug.cgi?id=31232
> 
>            Summary: /proc/sys/net/ipv6 has two neigh folders
>            Product: Networking
>            Version: 2.5
>     Kernel Version: 2.6.38
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: low
>           Priority: P1
>          Component: IPV6
>         AssignedTo: yoshfuji@linux-ipv6.org
>         ReportedBy: sunkan@zappa.cx
>         Regression: No
> 
> 
> I noticed when looking for other things that there are two neigh folders in
> /proc/sys/net/ipv6
> 
> Reverting this commit removes the extra neigh folder:
> http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=bf36076a67db6d7423d09d861a072337866f0dd9
> 
> I don't know how to fix this.
> I tried removing the ',' on the row '.child = empty,' (looking at the other
> rows it did seem like a typo to me).
> 
> This did not change anything that I could see though.
> 
> Here is the commit I believe introduced the bug: 
> 
> --- a/net/ipv6/sysctl_net_ipv6.c
> +++ b/net/ipv6/sysctl_net_ipv6.c
> @@ -15,6 +15,8 @@
>  #include <net/addrconf.h>
>  #include <net/inet_frag.h>
> 
> +static struct ctl_table empty[1];
> +
>  static ctl_table ipv6_table_template[] = {
>         {
>                 .procname       = "route",
> @@ -35,6 +37,12 @@ static ctl_table ipv6_table_template[] = {
>                 .mode           = 0644,
>                 .proc_handler   = proc_dointvec
>         },
> +       {
> +               .procname       = "neigh",
> +               .maxlen         = 0,
> +               .mode           = 0555,
> +               .child          = empty,
> +       },
>         { }
>  };
> 
> @@ -152,7 +160,6 @@ static struct ctl_table_header *ip6_base;
> 
>  int ipv6_static_sysctl_register(void)
>  {
> -       static struct ctl_table empty[1];
>         ip6_base = register_sysctl_paths(net_ipv6_ctl_path, empty);
>         if (ip6_base == NULL)
>                 return -ENOMEM;
> 


^ permalink raw reply


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