Netdev List
 help / color / mirror / Atom feed
* [PATCH RFC v2 0/2] Interface for TCP Metrics
From: Julian Anastasov @ 2012-08-25 15:00 UTC (permalink / raw)
  To: netdev

	This patchset contains 2 patches, one for kernel
and one for iproute2. We add DUMP/GET/DEL support for
genl "tcp_metrics" and minimal support for filtering
by address prefix and family in user space.

	I tested show/del/flush, filtering by family, IPv4 prefix,
output for metrics such as rtt, rttvar, cwnd, ssthresh (after
modifying route). I didn't tested output for fast open.

	May be some corrections in output can be desired.

	The kernel patch has some parts to check:

- in tcp_metrics_nl_cmd_del I'm trying to flush all addresses
with single request, eg. when no family, address or other
selectors are provided. I use some arbitrary counter sync_count
to force memory to be freed in parts by using synchronize_rcu,
note that we are under genl_mutex, so may be this is bad idea
to delay other genl users? My idea was to avoid many commands
on "flush all", may be we should trigger flush by using some
other mechanism that is pernet? And I don't know how to test
it properly without large cache.

- I enabled lockdep in config and don't see any warnings.
make C=2 net/ipv4/tcp_metrics.o is silent too.

v2:
- patch 1: remove rcu_assign_pointer, add tcp_metrics_flush_all
- patch 2: properly flush by specifying address, improve man page

^ permalink raw reply

* [PATCH RFC v2 2/2] iproute2: add support for tcp_metrics
From: Julian Anastasov @ 2012-08-25 15:00 UTC (permalink / raw)
  To: netdev
In-Reply-To: <1345906844-25446-1-git-send-email-ja@ssi.bg>

	ip tcp_metrics/tcpmetrics

v2:
- On flush we should provide the address in req2
- "flush all" should use single del, just like when "all" is not provided
- Explain printed information in man page

Signed-off-by: Julian Anastasov <ja@ssi.bg>
---

diff -urpN iproute2-3.5.1/include/linux/tcp_metrics.h iproute2-3.5.1-tcp_metrics/include/linux/tcp_metrics.h
--- iproute2-3.5.1/include/linux/tcp_metrics.h	1970-01-01 02:00:00.000000000 +0200
+++ iproute2-3.5.1-tcp_metrics/include/linux/tcp_metrics.h	2012-08-23 09:50:54.385569009 +0300
@@ -0,0 +1,54 @@
+/* tcp_metrics.h - TCP Metrics Interface */
+
+#ifndef _LINUX_TCP_METRICS_H
+#define _LINUX_TCP_METRICS_H
+
+#include <linux/types.h>
+
+/* NETLINK_GENERIC related info
+ */
+#define TCP_METRICS_GENL_NAME		"tcp_metrics"
+#define TCP_METRICS_GENL_VERSION	0x1
+
+enum tcp_metric_index {
+	TCP_METRIC_RTT,
+	TCP_METRIC_RTTVAR,
+	TCP_METRIC_SSTHRESH,
+	TCP_METRIC_CWND,
+	TCP_METRIC_REORDERING,
+
+	/* Always last.  */
+	__TCP_METRIC_MAX,
+};
+
+#define TCP_METRIC_MAX	(__TCP_METRIC_MAX - 1)
+
+enum {
+	TCP_METRICS_ATTR_UNSPEC,
+	TCP_METRICS_ATTR_ADDR_IPV4,		/* u32 */
+	TCP_METRICS_ATTR_ADDR_IPV6,		/* binary */
+	TCP_METRICS_ATTR_AGE,			/* msecs */
+	TCP_METRICS_ATTR_TW_TSVAL,		/* u32, raw, rcv tsval */
+	TCP_METRICS_ATTR_TW_TS_STAMP,		/* s32, sec age */
+	TCP_METRICS_ATTR_VALS,			/* nested +1, u32 */
+	TCP_METRICS_ATTR_FOPEN_MSS,		/* u16 */
+	TCP_METRICS_ATTR_FOPEN_SYN_DROPS,	/* u16, count of drops */
+	TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,	/* msecs age */
+	TCP_METRICS_ATTR_FOPEN_COOKIE,		/* binary */
+
+	__TCP_METRICS_ATTR_MAX,
+};
+
+#define TCP_METRICS_ATTR_MAX	(__TCP_METRICS_ATTR_MAX - 1)
+
+enum {
+	TCP_METRICS_CMD_UNSPEC,
+	TCP_METRICS_CMD_GET,
+	TCP_METRICS_CMD_DEL,
+
+	__TCP_METRICS_CMD_MAX,
+};
+
+#define TCP_METRICS_CMD_MAX	(__TCP_METRICS_CMD_MAX - 1)
+
+#endif /* _LINUX_TCP_METRICS_H */
diff -urpN iproute2-3.5.1/ip/Makefile iproute2-3.5.1-tcp_metrics/ip/Makefile
--- iproute2-3.5.1/ip/Makefile	2012-08-13 18:13:58.000000000 +0300
+++ iproute2-3.5.1-tcp_metrics/ip/Makefile	2012-08-23 10:24:01.561660891 +0300
@@ -3,7 +3,7 @@ IPOBJ=ip.o ipaddress.o ipaddrlabel.o ipr
     ipmaddr.o ipmonitor.o ipmroute.o ipprefix.o iptuntap.o \
     ipxfrm.o xfrm_state.o xfrm_policy.o xfrm_monitor.o \
     iplink_vlan.o link_veth.o link_gre.o iplink_can.o \
-    iplink_macvlan.o iplink_macvtap.o ipl2tp.o
+    iplink_macvlan.o iplink_macvtap.o ipl2tp.o tcp_metrics.o
 
 RTMONOBJ=rtmon.o
 
diff -urpN iproute2-3.5.1/ip/ip.c iproute2-3.5.1-tcp_metrics/ip/ip.c
--- iproute2-3.5.1/ip/ip.c	2012-08-13 18:13:58.000000000 +0300
+++ iproute2-3.5.1-tcp_metrics/ip/ip.c	2012-08-23 10:21:20.917653464 +0300
@@ -45,7 +45,7 @@ static void usage(void)
 "       ip [ -force ] -batch filename\n"
 "where  OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |\n"
 "                   tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |\n"
-"                   netns | l2tp }\n"
+"                   netns | l2tp | tcp_metrics }\n"
 "       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
 "                    -f[amily] { inet | inet6 | ipx | dnet | link } |\n"
 "                    -l[oops] { maximum-addr-flush-attempts } |\n"
@@ -78,6 +78,8 @@ static const struct cmd {
 	{ "tunl",	do_iptunnel },
 	{ "tuntap",	do_iptuntap },
 	{ "tap",	do_iptuntap },
+	{ "tcpmetrics",	do_tcp_metrics },
+	{ "tcp_metrics",do_tcp_metrics },
 	{ "monitor",	do_ipmonitor },
 	{ "xfrm",	do_xfrm },
 	{ "mroute",	do_multiroute },
diff -urpN iproute2-3.5.1/ip/ip_common.h iproute2-3.5.1-tcp_metrics/ip/ip_common.h
--- iproute2-3.5.1/ip/ip_common.h	2012-08-13 18:13:58.000000000 +0300
+++ iproute2-3.5.1-tcp_metrics/ip/ip_common.h	2012-08-23 10:19:11.005647457 +0300
@@ -42,6 +42,7 @@ extern int do_multirule(int argc, char *
 extern int do_netns(int argc, char **argv);
 extern int do_xfrm(int argc, char **argv);
 extern int do_ipl2tp(int argc, char **argv);
+extern int do_tcp_metrics(int argc, char **argv);
 
 static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb)
 {
diff -urpN iproute2-3.5.1/ip/tcp_metrics.c iproute2-3.5.1-tcp_metrics/ip/tcp_metrics.c
--- iproute2-3.5.1/ip/tcp_metrics.c	1970-01-01 02:00:00.000000000 +0200
+++ iproute2-3.5.1-tcp_metrics/ip/tcp_metrics.c	2012-08-25 15:18:31.695944914 +0300
@@ -0,0 +1,504 @@
+/*
+ * tcp_metrics.c	"ip tcp_metrics/tcpmetrics"
+ *
+ *		This program is free software; you can redistribute it and/or
+ *		modify it under the terms of the GNU General Public License
+ *		version 2 as published by the Free Software Foundation;
+ *
+ * Authors:	Julian Anastasov <ja@ssi.bg>, August 2012
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <sys/ioctl.h>
+#include <linux/if.h>
+
+#include <linux/genetlink.h>
+#include <linux/tcp_metrics.h>
+
+#include "utils.h"
+#include "ip_common.h"
+
+static void usage(void)
+{
+	fprintf(stderr, "Usage: ip tcp_metrics/tcpmetrics { COMMAND | help }\n");
+	fprintf(stderr, "       ip tcp_metrics { show | flush } SELECTOR\n");
+	fprintf(stderr, "       ip tcp_metrics delete [ address ] ADDRESS\n");
+	fprintf(stderr, "SELECTOR := [ [ address ] PREFIX ]\n");
+	exit(-1);
+}
+
+/* netlink socket */
+static struct rtnl_handle grth = { .fd = -1 };
+static int genl_family = -1;
+
+
+#define GENL_DEFINE_REQUEST(req, hdrsize, bufsiz)			\
+struct {								\
+	struct nlmsghdr		n;					\
+	struct genlmsghdr	g;					\
+	char			buf[NLMSG_ALIGN(hdrsize) + bufsiz];	\
+} req
+
+#define GENL_INIT_REQUEST(req, family, hdrsize, ver, cmd_, flags)	\
+	do {								\
+		memset(&req, 0, sizeof(req));				\
+		req.n.nlmsg_type = family;				\
+		req.n.nlmsg_flags = flags;				\
+		req.n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN + hdrsize);	\
+		req.g.cmd = cmd_;					\
+		req.g.version = ver;					\
+	} while (0)
+
+#define INIT_GENL_ACTION(req, cmd, ack)					\
+	GENL_INIT_REQUEST(req, genl_family, 0,				\
+			  TCP_METRICS_GENL_VERSION, cmd,		\
+			  NLM_F_REQUEST | ((ack) ? NLM_F_ACK : 0))
+
+#define INIT_GENL_DUMP(req)						\
+	GENL_INIT_REQUEST(req, genl_family, 0,				\
+			  TCP_METRICS_GENL_VERSION,			\
+			  TCP_METRICS_CMD_GET,				\
+			  NLM_F_DUMP | NLM_F_REQUEST)
+
+#define CMD_LIST	0x0001	/* list, lst, show		*/
+#define CMD_DEL		0x0002	/* delete, remove		*/
+#define CMD_FLUSH	0x0004	/* flush			*/
+
+static struct {
+	char	*name;
+	int	code;
+} cmds[] = {
+	{	"list",		CMD_LIST	},
+	{	"lst",		CMD_LIST	},
+	{	"show",		CMD_LIST	},
+	{	"delete",	CMD_DEL		},
+	{	"remove",	CMD_DEL		},
+	{	"flush",	CMD_FLUSH	},
+};
+
+static char *metric_name[TCP_METRIC_MAX + 1] = {
+	[TCP_METRIC_RTT]		= "rtt",
+	[TCP_METRIC_RTTVAR]		= "rttvar",
+	[TCP_METRIC_SSTHRESH]		= "ssthresh",
+	[TCP_METRIC_CWND]		= "cwnd",
+	[TCP_METRIC_REORDERING]		= "reordering",
+};
+
+static struct
+{
+	int flushed;
+	char *flushb;
+	int flushp;
+	int flushe;
+	int cmd;
+	inet_prefix addr;
+} f;
+
+static int flush_update(void)
+{
+	if (rtnl_send_check(&grth, f.flushb, f.flushp) < 0) {
+		perror("Failed to send flush request\n");
+		return -1;
+	}
+	f.flushp = 0;
+	return 0;
+}
+
+static int process_msg(const struct sockaddr_nl *who, struct nlmsghdr *n,
+		       void *arg)
+{
+	FILE *fp = (FILE *) arg;
+	struct genlmsghdr *ghdr;
+	struct rtattr *attrs[TCP_METRICS_ATTR_MAX + 1], *a;
+	int len = n->nlmsg_len;
+	char abuf[256];
+	inet_prefix addr;
+	int family, i, atype;
+
+	if (n->nlmsg_type != genl_family)
+		return -1;
+
+	len -= NLMSG_LENGTH(GENL_HDRLEN);
+	if (len < 0)
+		return -1;
+
+	ghdr = NLMSG_DATA(n);
+	if (ghdr->cmd != TCP_METRICS_CMD_GET)
+		return 0;
+
+	parse_rtattr(attrs, TCP_METRICS_ATTR_MAX, (void *) ghdr + GENL_HDRLEN,
+		     len);
+
+	a = attrs[TCP_METRICS_ATTR_ADDR_IPV4];
+	if (a) {
+		if (f.addr.family && f.addr.family != AF_INET)
+			return 0;
+		memcpy(&addr.data, RTA_DATA(a), 4);
+		addr.bytelen = 4;
+		family = AF_INET;
+		atype = TCP_METRICS_ATTR_ADDR_IPV4;
+	} else {
+		a = attrs[TCP_METRICS_ATTR_ADDR_IPV6];
+		if (a) {
+			if (f.addr.family && f.addr.family != AF_INET6)
+				return 0;
+			memcpy(&addr.data, RTA_DATA(a), 16);
+			addr.bytelen = 16;
+			family = AF_INET6;
+			atype = TCP_METRICS_ATTR_ADDR_IPV6;
+		} else
+			return 0;
+	}
+
+	if (f.addr.family && f.addr.bitlen >= 0 &&
+	    inet_addr_match(&addr, &f.addr, f.addr.bitlen))
+		return 0;
+
+	if (f.flushb) {
+		struct nlmsghdr *fn;
+		GENL_DEFINE_REQUEST(req2, 0, 128);
+
+		INIT_GENL_ACTION(req2, TCP_METRICS_CMD_DEL, 0);
+		addattr_l(&req2.n, sizeof(req2), atype, &addr.data,
+			  addr.bytelen);
+
+		if (NLMSG_ALIGN(f.flushp) + req2.n.nlmsg_len > f.flushe) {
+			if (flush_update())
+				return -1;
+		}
+		fn = (struct nlmsghdr *) (f.flushb + NLMSG_ALIGN(f.flushp));
+		memcpy(fn, &req2.n, req2.n.nlmsg_len);
+		fn->nlmsg_seq = ++grth.seq;
+		f.flushp = (((char *) fn) + req2.n.nlmsg_len) - f.flushb;
+		f.flushed++;
+		if (show_stats < 2)
+			return 0;
+	}
+
+	if (f.cmd & (CMD_DEL | CMD_FLUSH))
+		fprintf(fp, "Deleted ");
+
+	fprintf(fp, "%s",
+		format_host(family, RTA_PAYLOAD(a), &addr.data,
+			    abuf, sizeof(abuf)));
+
+	a = attrs[TCP_METRICS_ATTR_AGE];
+	if (a) {
+		__u64 val = rta_getattr_u64(a);
+
+		fprintf(fp, " age %llu.%03llusec",
+			val / 1000, val % 1000);
+	}
+
+	a = attrs[TCP_METRICS_ATTR_TW_TS_STAMP];
+	if (a) {
+		__s32 val = (__s32) rta_getattr_u32(a);
+		__u32 tsval;
+
+		a = attrs[TCP_METRICS_ATTR_TW_TSVAL];
+		tsval = a ? rta_getattr_u32(a) : 0;
+		fprintf(fp, " tw_ts %u/%dsec ago", tsval, val);
+	}
+
+	a = attrs[TCP_METRICS_ATTR_VALS];
+	if (a) {
+		struct rtattr *m[TCP_METRIC_MAX + 1 + 1];
+
+		parse_rtattr_nested(m, TCP_METRIC_MAX + 1, a);
+
+		for (i = 0; i < TCP_METRIC_MAX + 1; i++) {
+			__u32 val;
+
+			a = m[i + 1];
+			if (!a)
+				continue;
+			if (metric_name[i])
+				fprintf(fp, " %s ", metric_name[i]);
+			else
+				fprintf(fp, " metric_%d ", i);
+			val = rta_getattr_u32(a);
+			switch (i) {
+			case TCP_METRIC_RTT:
+			case TCP_METRIC_RTTVAR:
+				fprintf(fp, "%ums", val);
+				break;
+			case TCP_METRIC_SSTHRESH:
+			case TCP_METRIC_CWND:
+			case TCP_METRIC_REORDERING:
+			default:
+				fprintf(fp, "%u", val);
+				break;
+			}
+		}
+	}
+
+	a = attrs[TCP_METRICS_ATTR_FOPEN_MSS];
+	if (a)
+		fprintf(fp, " fo_mss %u", rta_getattr_u16(a));
+
+	a = attrs[TCP_METRICS_ATTR_FOPEN_SYN_DROPS];
+	if (a) {
+		__u16 syn_loss = rta_getattr_u16(a);
+		__u64 ts;
+
+		a = attrs[TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS];
+		ts = a ? rta_getattr_u64(a) : 0;
+
+		fprintf(fp, " fo_syn_drops %u/%llu.%03llusec ago",
+			syn_loss, ts / 1000, ts % 1000);
+	}
+
+	a = attrs[TCP_METRICS_ATTR_FOPEN_COOKIE];
+	if (a) {
+		char cookie[32 + 1];
+		unsigned char *ptr = RTA_DATA(a);
+		int i, max = RTA_PAYLOAD(a);
+
+		if (max > 16)
+			max = 16;
+		cookie[0] = 0;
+		for (i = 0; i < max; i++)
+			sprintf(cookie + i + i, "%02x", ptr[i]);
+		fprintf(fp, " fo_cookie %s", cookie);
+	}
+
+	fprintf(fp, "\n");
+
+	fflush(fp);
+	return 0;
+}
+
+static int genl_parse_getfamily(struct nlmsghdr *nlh)
+{
+	struct rtattr *tb[CTRL_ATTR_MAX + 1];
+	struct genlmsghdr *ghdr = NLMSG_DATA(nlh);
+	int len = nlh->nlmsg_len;
+	struct rtattr *attrs;
+
+	if (nlh->nlmsg_type != GENL_ID_CTRL) {
+		fprintf(stderr, "Not a controller message, nlmsg_len=%d "
+			"nlmsg_type=0x%x\n", nlh->nlmsg_len, nlh->nlmsg_type);
+		return -1;
+	}
+
+	if (ghdr->cmd != CTRL_CMD_NEWFAMILY) {
+		fprintf(stderr, "Unknown controller command %d\n", ghdr->cmd);
+		return -1;
+	}
+
+	len -= NLMSG_LENGTH(GENL_HDRLEN);
+
+	if (len < 0) {
+		fprintf(stderr, "wrong controller message len %d\n", len);
+		return -1;
+	}
+
+	attrs = (struct rtattr *) ((char *) ghdr + GENL_HDRLEN);
+	parse_rtattr(tb, CTRL_ATTR_MAX, attrs, len);
+
+	if (tb[CTRL_ATTR_FAMILY_ID] == NULL) {
+		fprintf(stderr, "Missing family id TLV\n");
+		return -1;
+	}
+
+	return rta_getattr_u16(tb[CTRL_ATTR_FAMILY_ID]);
+}
+
+static int genl_ctrl_resolve_family(const char *family)
+{
+	GENL_DEFINE_REQUEST(req, 0, 1024);
+
+	GENL_INIT_REQUEST(req, GENL_ID_CTRL, 0, 0, CTRL_CMD_GETFAMILY,
+			  NLM_F_REQUEST);
+
+	addattr_l(&req.n, 1024, CTRL_ATTR_FAMILY_NAME,
+		  family, strlen(family) + 1);
+
+	if (rtnl_talk(&grth, &req.n, 0, 0, &req.n) < 0) {
+		fprintf(stderr, "Error talking to the kernel\n");
+		return -2;
+	}
+
+	return genl_parse_getfamily(&req.n);
+}
+
+static int tcpm_do_cmd(int cmd, int argc, char **argv)
+{
+	GENL_DEFINE_REQUEST(req, 0, 1024);
+	int atype = -1;
+	int code, ack;
+
+	memset(&f, 0, sizeof(f));
+	f.addr.bitlen = -1;
+	f.addr.family = preferred_family;
+
+	switch (preferred_family) {
+	case AF_UNSPEC:
+	case AF_INET:
+	case AF_INET6:
+		break;
+	default:
+		fprintf(stderr, "Unsupported family:%d\n", preferred_family);
+		return -1;
+	}
+
+	for (; argc > 0; argc--, argv++) {
+		char *who = "address";
+
+		if (strcmp(*argv, "addr") == 0 ||
+		    strcmp(*argv, "address") == 0) {
+			who = *argv;
+			NEXT_ARG();
+		}
+		if (matches(*argv, "help") == 0)
+			usage();
+		if (f.addr.bitlen >= 0)
+			duparg2(who, *argv);
+
+		get_prefix(&f.addr, *argv, preferred_family);
+		if (f.addr.bytelen && f.addr.bytelen * 8 == f.addr.bitlen) {
+			if (f.addr.family == AF_INET)
+				atype = TCP_METRICS_ATTR_ADDR_IPV4;
+			else if (f.addr.family == AF_INET6)
+				atype = TCP_METRICS_ATTR_ADDR_IPV6;
+		}
+		if ((CMD_DEL & cmd) && atype < 0) {
+			fprintf(stderr, "Error: a specific IP address is expected rather than \"%s\"\n",
+				*argv);
+			return -1;
+		}
+
+		argc--; argv++;
+	}
+
+	if (cmd == CMD_DEL && atype < 0)
+		missarg("address");
+
+	/* flush for exact address ? Single del */
+	if (cmd == CMD_FLUSH && atype >= 0)
+		cmd = CMD_DEL;
+	/* flush for all addresses ? Single del without address */
+	if (cmd == CMD_FLUSH && f.addr.bitlen <= 0 &&
+	    preferred_family == AF_UNSPEC) {
+		cmd = CMD_DEL;
+		code = TCP_METRICS_CMD_DEL;
+		ack = 1;
+	} else if (cmd == CMD_DEL) {
+		code = TCP_METRICS_CMD_DEL;
+		ack = 1;
+	} else {	/* CMD_FLUSH, CMD_LIST */
+		code = TCP_METRICS_CMD_GET;
+		ack = 0;
+	}
+
+	if (genl_family < 0) {
+		if (rtnl_open_byproto(&grth, 0, NETLINK_GENERIC) < 0) {
+			fprintf(stderr, "Cannot open generic netlink socket\n");
+			exit(1);
+		}
+		genl_family = genl_ctrl_resolve_family(TCP_METRICS_GENL_NAME);
+		if (genl_family < 0)
+			exit(1);
+	}
+
+	if (!(cmd & CMD_FLUSH) && (atype >= 0 || (cmd & CMD_DEL))) {
+		INIT_GENL_ACTION(req, code, ack);
+		if (atype >= 0)
+			addattr_l(&req.n, sizeof(req), atype, &f.addr.data,
+				  f.addr.bytelen);
+	} else {
+		INIT_GENL_DUMP(req);
+	}
+
+	f.cmd = cmd;
+	if (cmd & CMD_FLUSH) {
+		int round = 0;
+		char flushb[4096-512];
+
+		f.flushb = flushb;
+		f.flushp = 0;
+		f.flushe = sizeof(flushb);
+
+		for (;;) {
+			req.n.nlmsg_seq = grth.dump = ++grth.seq;
+			if (rtnl_send(&grth, &req, req.n.nlmsg_len) < 0) {
+				perror("Failed to send flush request");
+				exit(1);
+			}
+			f.flushed = 0;
+			if (rtnl_dump_filter(&grth, process_msg, stdout) < 0) {
+				fprintf(stderr, "Flush terminated\n");
+				exit(1);
+			}
+			if (f.flushed == 0) {
+				if (round == 0) {
+					fprintf(stderr, "Nothing to flush.\n");
+				} else if (show_stats)
+					printf("*** Flush is complete after %d round%s ***\n",
+					       round, round > 1 ? "s" : "");
+				fflush(stdout);
+				return 0;
+			}
+			round++;
+			if (flush_update() < 0)
+				exit(1);
+			if (show_stats) {
+				printf("\n*** Round %d, deleting %d entries ***\n",
+				       round, f.flushed);
+				fflush(stdout);
+			}
+		}
+		return 0;
+	}
+
+	req.n.nlmsg_seq = ++grth.seq;
+	if (ack) {
+		if (rtnl_talk(&grth, &req.n, 0, 0, NULL) < 0)
+			return -2;
+	} else if (atype >= 0) {
+		if (rtnl_talk(&grth, &req.n, 0, 0, &req.n) < 0)
+			return -2;
+		if (process_msg(NULL, &req.n, stdout) < 0) {
+			fprintf(stderr, "Dump terminated\n");
+			exit(1);
+		}
+	} else {
+		grth.dump = grth.seq;
+		if (rtnl_send(&grth, &req, req.n.nlmsg_len) < 0) {
+			perror("Failed to send dump request");
+			exit(1);
+		}
+
+		if (rtnl_dump_filter(&grth, process_msg, stdout) < 0) {
+			fprintf(stderr, "Dump terminated\n");
+			exit(1);
+		}
+	}
+	return 0;
+}
+
+int do_tcp_metrics(int argc, char **argv)
+{
+	int i;
+
+	if (argc < 1)
+		return tcpm_do_cmd(CMD_LIST, 0, NULL);
+	for (i = 0; i < ARRAY_SIZE(cmds); i++) {
+		if (matches(argv[0], cmds[i].name) == 0)
+			return tcpm_do_cmd(cmds[i].code, argc-1, argv+1);
+	}
+	if (matches(argv[0], "help") == 0)
+		usage();
+
+	fprintf(stderr, "Command \"%s\" is unknown, "
+			"try \"ip tcp_metrics help\".\n", *argv);
+	exit(-1);
+}
+
diff -urpN iproute2-3.5.1/man/man8/Makefile iproute2-3.5.1-tcp_metrics/man/man8/Makefile
--- iproute2-3.5.1/man/man8/Makefile	2012-08-13 18:13:58.000000000 +0300
+++ iproute2-3.5.1-tcp_metrics/man/man8/Makefile	2012-08-23 14:45:12.506385476 +0300
@@ -7,7 +7,8 @@ MAN8PAGES = $(TARGETS) ip.8 arpd.8 lnsta
 	bridge.8 rtstat.8 ctstat.8 nstat.8 routef.8 \
 	ip-tunnel.8 ip-rule.8 ip-ntable.8 \
 	ip-monitor.8 tc-stab.8 tc-hfsc.8 ip-xfrm.8 ip-netns.8 \
-	ip-neighbour.8 ip-mroute.8 ip-maddress.8 ip-addrlabel.8 
+	ip-neighbour.8 ip-mroute.8 ip-maddress.8 ip-addrlabel.8 \
+	ip-tcp_metrics.8
 
 
 all: $(TARGETS)
diff -urpN iproute2-3.5.1/man/man8/ip-tcp_metrics.8 iproute2-3.5.1-tcp_metrics/man/man8/ip-tcp_metrics.8
--- iproute2-3.5.1/man/man8/ip-tcp_metrics.8	1970-01-01 02:00:00.000000000 +0200
+++ iproute2-3.5.1-tcp_metrics/man/man8/ip-tcp_metrics.8	2012-08-25 17:37:30.868321617 +0300
@@ -0,0 +1,143 @@
+.TH "IP\-TCP_METRICS" 8 "23 Aug 2012" "iproute2" "Linux"
+.SH "NAME"
+ip-tcp_metrics \- management for TCP Metrics
+.SH "SYNOPSIS"
+.sp
+.ad l
+.in +8
+.ti -8
+.B ip
+.RI "[ " OPTIONS " ]"
+.B tcp_metrics
+.RI "{ " COMMAND " | "
+.BR help " }"
+.sp
+
+.ti -8
+.BR "ip tcp_metrics" " { " show " | " flush " }
+.IR SELECTOR
+
+.ti -8
+.BR "ip tcp_metrics delete " [ " address " ]
+.IR ADDRESS
+
+.ti -8
+.IR SELECTOR " := " 
+.RB "[ [ " address " ] "
+.IR PREFIX " ]"
+
+.SH "DESCRIPTION"
+.B ip tcp_metrics
+is used to manipulate entries in the kernel that keep TCP information
+for IPv4 and IPv6 destinations. The entries are created when
+TCP sockets want to share information for destinations and are
+stored in a cache keyed by the destination address. The saved
+information may include values for metrics (initially obtained from
+routes), recent TSVAL for TIME-WAIT recycling purposes, state for the
+Fast Open feature, etc.
+For performance reasons the cache can not grow above configured limit
+and the older entries are replaced with fresh information, sometimes
+reclaimed and used for new destinations. The kernel never removes
+entries, they can be flushed only with this tool.
+
+.SS ip tcp_metrics show - show cached entries
+
+.TP
+.BI address " PREFIX " (default)
+IPv4/IPv6 prefix or address. If no prefix is provided all entries are shown.
+
+.LP
+The output may contain the following information:
+
+.BI age " <S.MMM>" sec
+- time after the entry was created, reset or updated with metrics
+from sockets. The entry is reset and refreshed on use with metrics from
+route if the metrics are not updated in last hour. Not all cached values
+reset the age on update.
+
+.BI cwnd " <N>"
+- CWND metric value
+
+.BI fo_cookie " <HEX-STRING>"
+- Cookie value received in SYN-ACK to be used by Fast Open for next SYNs
+
+.BI fo_mss " <N>"
+- MSS value received in SYN-ACK to be used by Fast Open for next SYNs
+
+.BI fo_syn_drops " <N>/<S.MMM>" "sec ago"
+- Number of drops of initial outgoing Fast Open SYNs with data
+detected by monitoring the received SYN-ACK after SYN retransmission.
+The seconds show the time after last SYN drop and together with
+the drop count can be used to disable Fast Open for some time.
+
+.BI reordering " <N>"
+- Reordering metric value
+
+.BI rtt " <N>" ms
+- RTT metric value
+
+.BI rttvar " <N>" ms
+- RTTVAR metric value
+
+.BI ssthresh " <SSTHRESH>"
+- SSTHRESH metric value
+
+.BI tw_ts " <TSVAL>/<SEC>" "sec ago"
+- recent TSVAL and the seconds after saving it into TIME-WAIT socket
+
+.SS ip tcp_metrics delete - delete single entry
+
+.TP
+.BI address " ADDRESS " (default)
+IPv4/IPv6 address. The address is a required argument.
+
+.SS ip tcp_metrics flush - flush entries
+This command flushes the entries selected by some criteria.
+
+.PP
+This command has the same arguments as
+.B show.
+
+.SH "EXAMPLES"
+.PP
+ip tcp_metrics show address 192.168.0.0/24
+.RS 4
+Shows the entries for destinations from subnet
+.RE
+.PP
+ip tcp_metrics show 192.168.0.0/24
+.RS 4
+The same but address keyword is optional
+.RE
+.PP
+ip tcp_metrics
+.RS 4
+Show all is the default action
+.RE
+.PP
+ip tcp_metrics delete 192.168.0.1
+.RS 4
+Removes the entry for 192.168.0.1 from cache.
+.RE
+.PP
+ip tcp_metrics flush 192.168.0.0/24
+.RS 4
+Removes entries for destinations from subnet
+.RE
+.PP
+ip tcp_metrics flush all
+.RS 4
+Removes all entries from cache
+.RE
+.PP
+ip -6 tcp_metrics flush all
+.RS 4
+Removes all IPv6 entries from cache keeping the IPv4 entries.
+.RE
+
+.SH SEE ALSO
+.br
+.BR ip (8)
+
+.SH AUTHOR
+Original Manpage by Julian Anastasov <ja@ssi.bg>
diff -urpN iproute2-3.5.1/man/man8/ip.8 iproute2-3.5.1-tcp_metrics/man/man8/ip.8
--- iproute2-3.5.1/man/man8/ip.8	2012-08-13 18:13:58.000000000 +0300
+++ iproute2-3.5.1-tcp_metrics/man/man8/ip.8	2012-08-23 10:28:12.541672495 +0300
@@ -15,7 +15,7 @@ ip \- show / manipulate routing, devices
 .IR OBJECT " := { "
 .BR link " | " addr " | " addrlabel " | " route " | " rule " | " neigh " | "\
  ntable " | " tunnel " | " tuntap " | " maddr " | "  mroute " | " mrule " | "\
- monitor " | " xfrm " | " netns " | "  l2tp " }"
+ monitor " | " xfrm " | " netns " | "  l2tp " | "  tcp_metrics " }"
 .sp
 
 .ti -8
@@ -156,6 +156,10 @@ host addresses.
 - rule in routing policy database.
 
 .TP
+.B tcp_metrics/tcpmetrics
+- manage TCP Metrics
+
+.TP
 .B tunnel
 - tunnel over IP.
 
@@ -215,6 +219,7 @@ was written by Alexey N. Kuznetsov and a
 .BR ip-ntable (8),
 .BR ip-route (8),
 .BR ip-rule (8),
+.BR ip-tcp_metrics (8),
 .BR ip-tunnel (8),
 .BR ip-xfrm (8)
 .br

^ permalink raw reply

* [PATCH RFC v2 1/2] tcp: add generic netlink support for tcp_metrics
From: Julian Anastasov @ 2012-08-25 15:00 UTC (permalink / raw)
  To: netdev
In-Reply-To: <1345906844-25446-1-git-send-email-ja@ssi.bg>

	Add support for genl "tcp_metrics". No locking
is changed, only that now we can unlink and delete
entries after grace period. We implement get/del for
single entry and dump to support show/flush filtering
in user space. Del without address attribute causes
flush for all addresses, sadly under genl_mutex.

v2:
- remove rcu_assign_pointer as suggested by Eric Dumazet,
it is not needed because there are no other writes under lock
- move the flushing code in tcp_metrics_flush_all

Signed-off-by: Julian Anastasov <ja@ssi.bg>
---
 include/linux/Kbuild        |    1 +
 include/linux/tcp_metrics.h |   54 +++++++
 net/ipv4/tcp_metrics.c      |  357 +++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 399 insertions(+), 13 deletions(-)
 create mode 100644 include/linux/tcp_metrics.h

diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 1f2c1c7..90da0af 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -363,6 +363,7 @@ header-y += sysctl.h
 header-y += sysinfo.h
 header-y += taskstats.h
 header-y += tcp.h
+header-y += tcp_metrics.h
 header-y += telephony.h
 header-y += termios.h
 header-y += time.h
diff --git a/include/linux/tcp_metrics.h b/include/linux/tcp_metrics.h
new file mode 100644
index 0000000..cb5157b
--- /dev/null
+++ b/include/linux/tcp_metrics.h
@@ -0,0 +1,54 @@
+/* tcp_metrics.h - TCP Metrics Interface */
+
+#ifndef _LINUX_TCP_METRICS_H
+#define _LINUX_TCP_METRICS_H
+
+#include <linux/types.h>
+
+/* NETLINK_GENERIC related info
+ */
+#define TCP_METRICS_GENL_NAME		"tcp_metrics"
+#define TCP_METRICS_GENL_VERSION	0x1
+
+enum tcp_metric_index {
+	TCP_METRIC_RTT,
+	TCP_METRIC_RTTVAR,
+	TCP_METRIC_SSTHRESH,
+	TCP_METRIC_CWND,
+	TCP_METRIC_REORDERING,
+
+	/* Always last.  */
+	__TCP_METRIC_MAX,
+};
+
+#define TCP_METRIC_MAX	(__TCP_METRIC_MAX - 1)
+
+enum {
+	TCP_METRICS_ATTR_UNSPEC,
+	TCP_METRICS_ATTR_ADDR_IPV4,		/* u32 */
+	TCP_METRICS_ATTR_ADDR_IPV6,		/* binary */
+	TCP_METRICS_ATTR_AGE,			/* msecs */
+	TCP_METRICS_ATTR_TW_TSVAL,		/* u32, raw, rcv tsval */
+	TCP_METRICS_ATTR_TW_TS_STAMP,		/* s32, sec age */
+	TCP_METRICS_ATTR_VALS,			/* nested +1, u32 */
+	TCP_METRICS_ATTR_FOPEN_MSS,		/* u16 */
+	TCP_METRICS_ATTR_FOPEN_SYN_DROPS,	/* u16, count of drops */
+	TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,	/* msecs age */
+	TCP_METRICS_ATTR_FOPEN_COOKIE,		/* binary */
+
+	__TCP_METRICS_ATTR_MAX,
+};
+
+#define TCP_METRICS_ATTR_MAX	(__TCP_METRICS_ATTR_MAX - 1)
+
+enum {
+	TCP_METRICS_CMD_UNSPEC,
+	TCP_METRICS_CMD_GET,
+	TCP_METRICS_CMD_DEL,
+
+	__TCP_METRICS_CMD_MAX,
+};
+
+#define TCP_METRICS_CMD_MAX	(__TCP_METRICS_CMD_MAX - 1)
+
+#endif /* _LINUX_TCP_METRICS_H */
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c
index 0abe67b..b020135 100644
--- a/net/ipv4/tcp_metrics.c
+++ b/net/ipv4/tcp_metrics.c
@@ -8,6 +8,7 @@
 #include <linux/init.h>
 #include <linux/tcp.h>
 #include <linux/hash.h>
+#include <linux/tcp_metrics.h>
 
 #include <net/inet_connection_sock.h>
 #include <net/net_namespace.h>
@@ -17,20 +18,10 @@
 #include <net/ipv6.h>
 #include <net/dst.h>
 #include <net/tcp.h>
+#include <net/genetlink.h>
 
 int sysctl_tcp_nometrics_save __read_mostly;
 
-enum tcp_metric_index {
-	TCP_METRIC_RTT,
-	TCP_METRIC_RTTVAR,
-	TCP_METRIC_SSTHRESH,
-	TCP_METRIC_CWND,
-	TCP_METRIC_REORDERING,
-
-	/* Always last.  */
-	TCP_METRIC_MAX,
-};
-
 struct tcp_fastopen_metrics {
 	u16	mss;
 	u16	syn_loss:10;		/* Recurring Fast Open SYN losses */
@@ -45,8 +36,10 @@ struct tcp_metrics_block {
 	u32				tcpm_ts;
 	u32				tcpm_ts_stamp;
 	u32				tcpm_lock;
-	u32				tcpm_vals[TCP_METRIC_MAX];
+	u32				tcpm_vals[TCP_METRIC_MAX + 1];
 	struct tcp_fastopen_metrics	tcpm_fastopen;
+
+	struct rcu_head			rcu_head;
 };
 
 static bool tcp_metric_locked(struct tcp_metrics_block *tm,
@@ -690,6 +683,328 @@ void tcp_fastopen_cache_set(struct sock *sk, u16 mss,
 	rcu_read_unlock();
 }
 
+static struct genl_family tcp_metrics_nl_family = {
+	.id		= GENL_ID_GENERATE,
+	.hdrsize	= 0,
+	.name		= TCP_METRICS_GENL_NAME,
+	.version	= TCP_METRICS_GENL_VERSION,
+	.maxattr	= TCP_METRICS_ATTR_MAX,
+	.netnsok	= true,
+};
+
+static struct nla_policy tcp_metrics_nl_policy[TCP_METRICS_ATTR_MAX + 1] = {
+	[TCP_METRICS_ATTR_ADDR_IPV4]	= { .type = NLA_U32, },
+	[TCP_METRICS_ATTR_ADDR_IPV6]	= { .type = NLA_BINARY,
+					    .len = sizeof(struct in6_addr), },
+	/* Following attributes are not received for GET/DEL,
+	 * we keep them for reference
+	 */
+#if 0
+	[TCP_METRICS_ATTR_AGE]		= { .type = NLA_MSECS, },
+	[TCP_METRICS_ATTR_TW_TSVAL]	= { .type = NLA_U32, },
+	[TCP_METRICS_ATTR_TW_TS_STAMP]	= { .type = NLA_S32, },
+	[TCP_METRICS_ATTR_VALS]		= { .type = NLA_NESTED, },
+	[TCP_METRICS_ATTR_FOPEN_MSS]	= { .type = NLA_U16, },
+	[TCP_METRICS_ATTR_FOPEN_SYN_DROPS]	= { .type = NLA_U16, },
+	[TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS]	= { .type = NLA_MSECS, },
+	[TCP_METRICS_ATTR_FOPEN_COOKIE]	= { .type = NLA_BINARY,
+					    .len = TCP_FASTOPEN_COOKIE_MAX, },
+#endif
+};
+
+/* Add attributes, caller cancels its header on failure */
+static int tcp_metrics_fill_info(struct sk_buff *msg,
+				 struct tcp_metrics_block *tm)
+{
+	struct nlattr *nest;
+	int i;
+
+	switch (tm->tcpm_addr.family) {
+	case AF_INET:
+		if (nla_put_be32(msg, TCP_METRICS_ATTR_ADDR_IPV4,
+				tm->tcpm_addr.addr.a4) < 0)
+			goto nla_put_failure;
+		break;
+	case AF_INET6:
+		if (nla_put(msg, TCP_METRICS_ATTR_ADDR_IPV6, 16,
+			    tm->tcpm_addr.addr.a6) < 0)
+			goto nla_put_failure;
+		break;
+	default:
+		return -EAFNOSUPPORT;
+	}
+
+	if (nla_put_msecs(msg, TCP_METRICS_ATTR_AGE,
+			  jiffies - tm->tcpm_stamp) < 0)
+		goto nla_put_failure;
+	if (tm->tcpm_ts_stamp) {
+		if (nla_put_s32(msg, TCP_METRICS_ATTR_TW_TS_STAMP,
+				(s32) (get_seconds() - tm->tcpm_ts_stamp)) < 0)
+			goto nla_put_failure;
+		if (nla_put_u32(msg, TCP_METRICS_ATTR_TW_TSVAL,
+				tm->tcpm_ts) < 0)
+			goto nla_put_failure;
+	}
+
+	{
+		int n = 0;
+
+		nest = nla_nest_start(msg, TCP_METRICS_ATTR_VALS);
+		if (!nest)
+			goto nla_put_failure;
+		for (i = 0; i < TCP_METRIC_MAX + 1; i++) {
+			if (!tm->tcpm_vals[i])
+				continue;
+			if (nla_put_u32(msg, i + 1, tm->tcpm_vals[i]) < 0)
+				goto nla_put_failure;
+			n++;
+		}
+		if (n)
+			nla_nest_end(msg, nest);
+		else
+			nla_nest_cancel(msg, nest);
+	}
+
+	{
+		struct tcp_fastopen_metrics tfom_copy[1], *tfom;
+		unsigned int seq;
+
+		do {
+			seq = read_seqbegin(&fastopen_seqlock);
+			tfom_copy[0] = tm->tcpm_fastopen;
+		} while (read_seqretry(&fastopen_seqlock, seq));
+
+		tfom = tfom_copy;
+		if (tfom->mss &&
+		    nla_put_u16(msg, TCP_METRICS_ATTR_FOPEN_MSS,
+				tfom->mss) < 0)
+			goto nla_put_failure;
+		if (tfom->syn_loss &&
+		    (nla_put_u16(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROPS,
+				tfom->syn_loss) < 0 ||
+		     nla_put_msecs(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,
+				jiffies - tfom->last_syn_loss) < 0))
+			goto nla_put_failure;
+		if (tfom->cookie.len > 0 &&
+		    nla_put(msg, TCP_METRICS_ATTR_FOPEN_COOKIE,
+			    tfom->cookie.len, tfom->cookie.val) < 0)
+			goto nla_put_failure;
+	}
+
+	return 0;
+
+nla_put_failure:
+	return -EMSGSIZE;
+}
+
+static int tcp_metrics_dump_info(struct sk_buff *skb,
+				 struct netlink_callback *cb,
+				 struct tcp_metrics_block *tm)
+{
+	void *hdr;
+
+	hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).pid, cb->nlh->nlmsg_seq,
+			  &tcp_metrics_nl_family, NLM_F_MULTI,
+			  TCP_METRICS_CMD_GET);
+	if (!hdr)
+		return -EMSGSIZE;
+
+	if (tcp_metrics_fill_info(skb, tm) < 0)
+		goto nla_put_failure;
+
+	return genlmsg_end(skb, hdr);
+
+nla_put_failure:
+	genlmsg_cancel(skb, hdr);
+	return -EMSGSIZE;
+}
+
+static int tcp_metrics_nl_dump(struct sk_buff *skb,
+			       struct netlink_callback *cb)
+{
+	struct net *net = sock_net(skb->sk);
+	unsigned int max_rows = 1U << net->ipv4.tcp_metrics_hash_log;
+	unsigned int row, s_row = cb->args[0];
+	int s_col = cb->args[1], col = s_col;
+
+	for (row = s_row; row < max_rows; row++, s_col = 0) {
+		struct tcp_metrics_block *tm;
+		struct tcpm_hash_bucket *hb = net->ipv4.tcp_metrics_hash + row;
+
+		rcu_read_lock();
+		for (col = 0, tm = rcu_dereference(hb->chain); tm;
+		     tm = rcu_dereference(tm->tcpm_next), col++) {
+			if (col < s_col)
+				continue;
+			if (tcp_metrics_dump_info(skb, cb, tm) < 0) {
+				rcu_read_unlock();
+				goto done;
+			}
+		}
+		rcu_read_unlock();
+	}
+
+done:
+	cb->args[0] = row;
+	cb->args[1] = col;
+	return skb->len;
+}
+
+static int parse_nl_addr(struct genl_info *info, struct inetpeer_addr *addr,
+			 unsigned int *hash, int optional)
+{
+	struct nlattr *a;
+
+	a = info->attrs[TCP_METRICS_ATTR_ADDR_IPV4];
+	if (a) {
+		addr->family = AF_INET;
+		addr->addr.a4 = nla_get_be32(a);
+		*hash = (__force unsigned int) addr->addr.a4;
+		return 0;
+	}
+	a = info->attrs[TCP_METRICS_ATTR_ADDR_IPV6];
+	if (a) {
+		if (nla_len(a) != sizeof(sizeof(struct in6_addr)))
+			return -EINVAL;
+		addr->family = AF_INET6;
+		memcpy(addr->addr.a6, nla_data(a), sizeof(addr->addr.a6));
+		*hash = ipv6_addr_hash((struct in6_addr *) addr->addr.a6);
+		return 0;
+	}
+	return optional ? 1 : -EAFNOSUPPORT;
+}
+
+static int tcp_metrics_nl_cmd_get(struct sk_buff *skb, struct genl_info *info)
+{
+	struct tcp_metrics_block *tm;
+	struct inetpeer_addr addr;
+	unsigned int hash;
+	struct sk_buff *msg;
+	struct net *net = genl_info_net(info);
+	void *reply;
+	int ret;
+
+	ret = parse_nl_addr(info, &addr, &hash, 0);
+	if (ret < 0)
+		return ret;
+
+	msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
+	if (!msg)
+		return -ENOMEM;
+
+	reply = genlmsg_put_reply(msg, info, &tcp_metrics_nl_family, 0,
+				  info->genlhdr->cmd);
+	if (!reply)
+		goto nla_put_failure;
+
+	hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);
+	ret = -ESRCH;
+	rcu_read_lock();
+	for (tm = rcu_dereference(net->ipv4.tcp_metrics_hash[hash].chain); tm;
+	     tm = rcu_dereference(tm->tcpm_next)) {
+		if (addr_same(&tm->tcpm_addr, &addr)) {
+			ret = tcp_metrics_fill_info(msg, tm);
+			break;
+		}
+	}
+	rcu_read_unlock();
+	if (ret < 0)
+		goto out_free;
+
+	genlmsg_end(msg, reply);
+	return genlmsg_reply(msg, info);
+
+nla_put_failure:
+	ret = -EMSGSIZE;
+
+out_free:
+	nlmsg_free(msg);
+	return ret;
+}
+
+#define deref_locked_genl(p)	\
+	rcu_dereference_protected(p, lockdep_genl_is_held() && \
+				     lockdep_is_held(&tcp_metrics_lock))
+
+#define deref_genl(p)	rcu_dereference_protected(p, lockdep_genl_is_held())
+
+static int tcp_metrics_flush_all(struct net *net)
+{
+	unsigned int max_rows = 1U << net->ipv4.tcp_metrics_hash_log;
+	struct tcpm_hash_bucket *hb = net->ipv4.tcp_metrics_hash;
+	struct tcp_metrics_block *tm;
+	unsigned int sync_count = 0;
+	unsigned int row;
+
+	for (row = 0; row < max_rows; row++, hb++) {
+		spin_lock_bh(&tcp_metrics_lock);
+		tm = deref_locked_genl(hb->chain);
+		if (tm)
+			hb->chain = NULL;
+		spin_unlock_bh(&tcp_metrics_lock);
+		while (tm) {
+			struct tcp_metrics_block *next;
+
+			next = deref_genl(tm->tcpm_next);
+			kfree_rcu(tm, rcu_head);
+			if (!((++sync_count) & 2047))
+				synchronize_rcu();
+			tm = next;
+		}
+	}
+	return 0;
+}
+
+static int tcp_metrics_nl_cmd_del(struct sk_buff *skb, struct genl_info *info)
+{
+	struct tcpm_hash_bucket *hb;
+	struct tcp_metrics_block *tm;
+	struct tcp_metrics_block __rcu **pp;
+	struct inetpeer_addr addr;
+	unsigned int hash;
+	struct net *net = genl_info_net(info);
+	int ret;
+
+	ret = parse_nl_addr(info, &addr, &hash, 1);
+	if (ret < 0)
+		return ret;
+	if (ret > 0)
+		return tcp_metrics_flush_all(net);
+
+	hash = hash_32(hash, net->ipv4.tcp_metrics_hash_log);
+	hb = net->ipv4.tcp_metrics_hash + hash;
+	pp = &hb->chain;
+	spin_lock_bh(&tcp_metrics_lock);
+	for (tm = deref_locked_genl(*pp); tm;
+	     pp = &tm->tcpm_next, tm = deref_locked_genl(*pp)) {
+		if (addr_same(&tm->tcpm_addr, &addr)) {
+			*pp = tm->tcpm_next;
+			break;
+		}
+	}
+	spin_unlock_bh(&tcp_metrics_lock);
+	if (!tm)
+		return -ESRCH;
+	kfree_rcu(tm, rcu_head);
+	return 0;
+}
+
+static struct genl_ops tcp_metrics_nl_ops[] = {
+	{
+		.cmd = TCP_METRICS_CMD_GET,
+		.doit = tcp_metrics_nl_cmd_get,
+		.dumpit = tcp_metrics_nl_dump,
+		.policy = tcp_metrics_nl_policy,
+		.flags = GENL_ADMIN_PERM,
+	},
+	{
+		.cmd = TCP_METRICS_CMD_DEL,
+		.doit = tcp_metrics_nl_cmd_del,
+		.policy = tcp_metrics_nl_policy,
+		.flags = GENL_ADMIN_PERM,
+	},
+};
+
 static unsigned int tcpmhash_entries;
 static int __init set_tcpmhash_entries(char *str)
 {
@@ -753,5 +1068,21 @@ static __net_initdata struct pernet_operations tcp_net_metrics_ops = {
 
 void __init tcp_metrics_init(void)
 {
-	register_pernet_subsys(&tcp_net_metrics_ops);
+	int ret;
+
+	ret = register_pernet_subsys(&tcp_net_metrics_ops);
+	if (ret < 0)
+		goto cleanup;
+	ret = genl_register_family_with_ops(&tcp_metrics_nl_family,
+					    tcp_metrics_nl_ops,
+					    ARRAY_SIZE(tcp_metrics_nl_ops));
+	if (ret < 0)
+		goto cleanup_subsys;
+	return;
+
+cleanup_subsys:
+	unregister_pernet_subsys(&tcp_net_metrics_ops);
+
+cleanup:
+	return;
 }
-- 
1.7.3.4

^ permalink raw reply related

* Re: BUG: soft lockup - CPU#6 stuck for 22s! [httpd2-event:15597]
From: Eric Dumazet @ 2012-08-25 11:47 UTC (permalink / raw)
  To: Cristian Rodríguez; +Cc: netdev, Yuchung Cheng, Neal Cardwell
In-Reply-To: <1345886085.19483.141.camel@edumazet-glaptop>

On Sat, 2012-08-25 at 11:14 +0200, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@google.com>
> 
> On Sat, 2012-08-25 at 10:59 +0200, Eric Dumazet wrote:
> > On Fri, 2012-08-24 at 20:50 -0400, Cristian Rodríguez wrote:
> > > Hi, the issue I reported with IPV6 few weeks ago seems to be gone, but
> > > now I am getting the following crash..
> 
> > Oh, I now see the bug, I'll send a patch asap
> 
> Please try the following fix.
> 
> Thanks !

Well, this v2 seems cleaner :

[PATCH v2] tcp: tcp_slow_start() should not decrease snd_cwnd

Cristian Rodríguez reported various lockups in TCP stack,
introduced by commit 9dc274151a548 (tcp: fix ABC in tcp_slow_start())

We could exit tcp_slow_start() with a zeroed snd_cwnd,
and next time we enter tcp_slow_start(), we run an infinite loop.

Reported-by: Cristian Rodríguez <crrodriguez@opensuse.org>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
---
 net/ipv4/tcp_cong.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
index 1432cdb..e656c72 100644
--- a/net/ipv4/tcp_cong.c
+++ b/net/ipv4/tcp_cong.c
@@ -337,7 +337,7 @@ void tcp_slow_start(struct tcp_sock *tp)
 		tp->snd_cwnd_cnt -= tp->snd_cwnd;
 		delta++;
 	}
-	tp->snd_cwnd = min(tp->snd_cwnd + delta, tp->snd_cwnd_clamp);
+	tp->snd_cwnd = clamp(tp->snd_cwnd + delta, tp->snd_cwnd, tp->snd_cwnd_clamp);
 }
 EXPORT_SYMBOL_GPL(tcp_slow_start);
 

^ permalink raw reply related

* Re: [Patch] netpoll: revert 6bdb7fe3104 and fix be_poll() instead
From: Sylvain Munaut @ 2012-08-25 10:04 UTC (permalink / raw)
  To: Cong Wang
  Cc: netdev, Andrew Morton, David Miller, Sathya Perla,
	Subbu Seetharaman, Ajit Khaparde
In-Reply-To: <1345880471-29535-1-git-send-email-amwang@redhat.com>

Hi Cong,

On Sat, Aug 25, 2012 at 9:41 AM, Cong Wang <amwang@redhat.com> wrote:
> Against -net.
>
> In the patch "netpoll: re-enable irq in poll_napi()", I tried to
> fix the following warning:
>
> [100718.051041] ------------[ cut here ]------------
> [100718.051048] WARNING: at kernel/softirq.c:159 local_bh_enable_ip+0x7d/0xb0()
> (Not tainted)
> [100718.051049] Hardware name: ProLiant BL460c G7
> ...
> [100718.051068] Call Trace:
> [100718.051073]  [<ffffffff8106b747>] ? warn_slowpath_common+0x87/0xc0
> [100718.051075]  [<ffffffff8106b79a>] ? warn_slowpath_null+0x1a/0x20
> [100718.051077]  [<ffffffff810747ed>] ? local_bh_enable_ip+0x7d/0xb0
> [100718.051080]  [<ffffffff8150041b>] ? _spin_unlock_bh+0x1b/0x20
> [100718.051085]  [<ffffffffa00ee974>] ? be_process_mcc+0x74/0x230 [be2net]
> [100718.051088]  [<ffffffffa00ea68c>] ? be_poll_tx_mcc+0x16c/0x290 [be2net]
> [100718.051090]  [<ffffffff8144fe76>] ? netpoll_poll_dev+0xd6/0x490
> [100718.051095]  [<ffffffffa01d24a5>] ? bond_poll_controller+0x75/0x80 [bonding]
> [100718.051097]  [<ffffffff8144fde5>] ? netpoll_poll_dev+0x45/0x490
> [100718.051100]  [<ffffffff81161b19>] ? ksize+0x19/0x80
> [100718.051102]  [<ffffffff81450437>] ? netpoll_send_skb_on_dev+0x157/0x240
>
> by reenabling IRQ before calling ->poll, but it seems more
> problems are introduced after that patch:
>
> http://ozlabs.org/~akpm/stuff/IMG_20120824_122054.jpg
> http://marc.info/?l=linux-netdev&m=134563282530588&w=2
>
> So it is safe to fix be2net driver code directly.
>
> This patch reverts the offending commit and fixes be_poll() by
> avoid disabling BH there, this is okay because be_poll()
> can be called either by poll_napi() which already disables
> IRQ, or by net_rx_action() which already disables BH.
>
> Reported-by: Andrew Morton <akpm@linux-foundation.org>
> Reported-by: Sylvain Munaut <s.munaut@whatever-company.com>
> Cc: Sylvain Munaut <s.munaut@whatever-company.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: David Miller <davem@davemloft.net>
> Cc: Sathya Perla <sathya.perla@emulex.com>
> Cc: Subbu Seetharaman <subbu.seetharaman@emulex.com>
> Cc: Ajit Khaparde <ajit.khaparde@emulex.com>
> Signed-off-by: Cong Wang <amwang@redhat.com>

Tested-by: Sylvain Munaut <s.munaut@whatever-company.com>


This patch fixes my issues with netconsole, it works fine now !

I tested exact same config with and without and crashes without it,
works fine with it.
The kernel I used was a 3.6-rc3 + PMTU patch + "bnx2 NULL deref with
netpoll" patch.


Thanks a lot.

Cheers,

     Sylvain

^ permalink raw reply

* $
From: Xli @ 2012-08-25  7:06 UTC (permalink / raw)




My name is Sgt. Benny Brooker. I am in the Engineering military unit  
here in Ba'qubah in Iraq; we have some amount of funds that we want to  
move out of the country. REPLY VIA THIS EMAIL: (sgt.benny@w.cn)

-------------------------------------------------------------------------
  Sent via webmail for Chemistry & Biochemistry @ Florida State University
  https://webmail.chem.fsu.edu




-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

^ permalink raw reply

* Re: BUG: soft lockup - CPU#6 stuck for 22s! [httpd2-event:15597]
From: Eric Dumazet @ 2012-08-25  9:14 UTC (permalink / raw)
  To: Cristian Rodríguez; +Cc: netdev, Yuchung Cheng, Neal Cardwell
In-Reply-To: <1345885186.19483.109.camel@edumazet-glaptop>

From: Eric Dumazet <edumazet@google.com>

On Sat, 2012-08-25 at 10:59 +0200, Eric Dumazet wrote:
> On Fri, 2012-08-24 at 20:50 -0400, Cristian Rodríguez wrote:
> > Hi, the issue I reported with IPV6 few weeks ago seems to be gone, but
> > now I am getting the following crash..

> Oh, I now see the bug, I'll send a patch asap

Please try the following fix.

Thanks !

[PATCH] tcp: tcp_slow_start() should not decrease snd_cwnd

Cristian Rodríguez reported various lockups in TCP stack,
introduced by commit 9dc274151a548 (tcp: fix ABC in tcp_slow_start())

We could exit tcp_slow_start() with a zeroed snd_cwnd,
and next time we enter tcp_slow_start(), we run an infinite loop.

Reported-by: Cristian Rodríguez <crrodriguez@opensuse.org>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
---
 net/ipv4/tcp_cong.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
index 1432cdb..f20a761 100644
--- a/net/ipv4/tcp_cong.c
+++ b/net/ipv4/tcp_cong.c
@@ -309,6 +309,7 @@ void tcp_slow_start(struct tcp_sock *tp)
 {
 	int cnt; /* increase in packets */
 	unsigned int delta = 0;
+	u32 new_snd_cwnd;
 
 	/* RFC3465: ABC Slow start
 	 * Increase only after a full MSS of bytes is acked
@@ -337,7 +338,8 @@ void tcp_slow_start(struct tcp_sock *tp)
 		tp->snd_cwnd_cnt -= tp->snd_cwnd;
 		delta++;
 	}
-	tp->snd_cwnd = min(tp->snd_cwnd + delta, tp->snd_cwnd_clamp);
+	new_snd_cwnd = min(tp->snd_cwnd + delta, tp->snd_cwnd_clamp);
+	tp->snd_cwnd = max(tp->snd_cwnd, new_snd_cwnd);
 }
 EXPORT_SYMBOL_GPL(tcp_slow_start);
 

^ permalink raw reply related

* Re: [PATCH 1/1] tcp: Wrong timeout for SYN segments
From: Eric Dumazet @ 2012-08-25  9:01 UTC (permalink / raw)
  To: Alexander Bergmann; +Cc: David Miller, hkjerry.chu, netdev, linux-kernel
In-Reply-To: <20120825084819.GD430@linlab.net>


> From: Alexander Bergmann <alex@linlab.net>
> Date: Fri, 24 Aug 2012 14:09:49 +0200
> Subject: [PATCH 1/1] tcp: Increase timeout for SYN segments
> 
> Commit 9ad7c049 changed the initRTO from 3secs to 1sec in accordance to
> RFC6298 (former RFC2988bis). This reduced the time till the last SYN
> retransmission packet gets sent from 93secs to 31secs.
> 
> RFC1122 is stating that the retransmission should be done for at least 3
> minutes, but this seems to be quite high.
> 
>   "However, the values of R1 and R2 may be different for SYN
>   and data segments.  In particular, R2 for a SYN segment MUST
>   be set large enough to provide retransmission of the segment
>   for at least 3 minutes.  The application can close the
>   connection (i.e., give up on the open attempt) sooner, of
>   course."
> 
> This patch increases the value of TCP_SYN_RETRIES to the value of 6,
> providing a retransmission window of 63secs.
> 
> The comments for SYN and SYNACK retries have also been updated to
> describe the current settings.
> 
> Signed-off-by: Alexander Bergmann <alex@linlab.net>
> ---

Acked-by: Eric Dumazet <edumazet@google.com>

^ permalink raw reply

* Re: BUG: soft lockup - CPU#6 stuck for 22s! [httpd2-event:15597]
From: Eric Dumazet @ 2012-08-25  8:59 UTC (permalink / raw)
  To: Cristian Rodríguez; +Cc: netdev, Yuchung Cheng, Neal Cardwell
In-Reply-To: <5038215E.60403@opensuse.org>

On Fri, 2012-08-24 at 20:50 -0400, Cristian Rodríguez wrote:
> Hi, the issue I reported with IPV6 few weeks ago seems to be gone, but
> now I am getting the following crash..
> 
> > Aug 23 11:51:05 ex6 kernel: [55570.280878] Modules linked in: sg st sr_mod cdrom act_police cls_basic cls_flow cls_fw cls_u32 sch_tbf sch_prio sch_htb sch_hfsc sch_ingress sch_sfq bridge stp llc xt_statistic xt_CT xt_LOG xt_realm xt_connlimit xt_addrtype iptable_raw xt_comment xt_recent ipt_ULOG ipt_REJECT ipt_REDIRECT ipt_NETMAP ipt_MASQUERADE ipt_ECN ipt_CLUSTERIP ipt_ah xt_set ip_set nf_nat_tftp nf_nat_snmp_basic nf_conntrack_snmp nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda ts_kmp xt_time xt_TCPMSS xt_sctp nf_conntrack_amanda xt_policy nf_conntrack_sane ip6t_REJECT nf_conntrack_tftp nf_conntrack_ipv6 nf_conntrack_sip ip6table_raw nf_conntrack_proto_udplite ip6table_mangle nf_conntrack_proto_sctp nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_broadcast nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_TPROXY nf_tproxy_core nf_defrag_ipv6 xt_tcpmss xt_pkttype xt_physdev xt_owner xt_
> NFQUEUE xt_NFLOG nfnetlink_
> > Aug 23 11:51:05 ex6 kernel: log xt_multiport xt_mark xt_mac xt_limit xt_length xt_iprange xt_helper xt_hashlimit xt_DSCP xt_dscp xt_dccp xt_conntrack xt_connmark xt_CLASSIFY xt_AUDIT xt_tcpudp xt_state iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack iptable_mangle nfnetlink ip6table_filter ip6_tables iptable_filter ip_tables x_tables af_packet cachefiles fscache eeepc_wmi asus_wmi sparse_keymap acpi_cpufreq mperf rfkill pci_hotplug e1000e coretemp wmi kvm_intel i2c_i801 kvm mei pcspkr joydev ghash_clmulni_intel microcode crc32c_intel edd aesni_intel ablk_helper cryptd aes_x86_64 autofs4 hid_generic usbhid i915 xhci_hcd drm_kms_helper drm ehci_hcd i2c_algo_bit usbcore usb_common video button scsi_dh_hp_sw scsi_dh_alua scsi_dh_emc scsi_dh_rdac scsi_dh fan processor thermal thermal_sys megaraid_sas
> > Aug 23 11:51:05 ex6 kernel: [55570.280987] CPU 6 
> > Aug 23 11:51:05 ex6 kernel: [55570.280991] Pid: 15597, comm: httpd2-event Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:05 ex6 kernel: [55570.280993] RIP: 0010:[<ffffffff81562be0>]  [<ffffffff81562be0>] _raw_spin_lock_bh+0x20/0x30
> > Aug 23 11:51:05 ex6 kernel: [55570.281002] RSP: 0018:ffff88018fc79f08  EFLAGS: 00000297
> > Aug 23 11:51:05 ex6 kernel: [55570.281004] RAX: 0000000000000014 RBX: ffff880407ba4cc0 RCX: 0000000000000001
> > Aug 23 11:51:05 ex6 kernel: [55570.281006] RDX: 0000000000000015 RSI: 0000000000000000 RDI: ffff880194f4c090
> > Aug 23 11:51:05 ex6 kernel: [55570.281007] RBP: 0000000000000002 R08: ffff8804089938f0 R09: 0000000000003ced
> > Aug 23 11:51:05 ex6 kernel: [55570.281009] R10: ffff88041e836800 R11: 0000000000000202 R12: ffff880407ba4d08
> > Aug 23 11:51:05 ex6 kernel: [55570.281011] R13: ffff880407ba4cc0 R14: 0000000000000292 R15: 0000293da5c4986a
> > Aug 23 11:51:05 ex6 kernel: [55570.281013] FS:  00007fcd524e4700(0000) GS:ffff88041f380000(0000) knlGS:0000000000000000
> > Aug 23 11:51:05 ex6 kernel: [55570.281015] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:05 ex6 kernel: [55570.281017] CR2: 00007fcd51b59000 CR3: 0000000208ab4000 CR4: 00000000000407e0
> > Aug 23 11:51:05 ex6 kernel: [55570.281019] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:05 ex6 kernel: [55570.281021] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:05 ex6 kernel: [55570.281023] Process httpd2-event (pid: 15597, threadinfo ffff88018fc78000, task ffff880194f5a300)
> > Aug 23 11:51:05 ex6 kernel: [55570.281024] Stack:
> > Aug 23 11:51:05 ex6 kernel: [55570.281025]  ffff880194f4c040 ffffffff8145d45d ffff880194f4c040 ffffffff814d120e
> > Aug 23 11:51:05 ex6 kernel: [55570.281029]  ffff880194f5a300 ffff8804067d2580 0000000000000001 00007fcd60c8eaa0
> > Aug 23 11:51:05 ex6 kernel: [55570.281033]  0004c7e9679f5fbf ffffffff8145ac14 00007fcd589c02e0 0000000100000000
> > Aug 23 11:51:05 ex6 kernel: [55570.281037] Call Trace:
> > Aug 23 11:51:05 ex6 kernel: [55570.281046]  [<ffffffff8145d45d>] lock_sock_nested+0xd/0x30
> > Aug 23 11:51:05 ex6 kernel: [55570.281052]  [<ffffffff814d120e>] inet_shutdown+0x3e/0x130
> > Aug 23 11:51:05 ex6 kernel: [55570.281058]  [<ffffffff8145ac14>] sys_shutdown+0x74/0x80
> > Aug 23 11:51:05 ex6 kernel: [55570.281066]  [<ffffffff8156a47d>] system_call_fastpath+0x1a/0x1f
> > Aug 23 11:51:05 ex6 kernel: [55570.281075]  [<00007fcd5fc42477>] 0x7fcd5fc42476
> > Aug 23 11:51:05 ex6 kernel: [55570.281076] Code: 66 39 d0 75 f6 c3 0f 1f 44 00 00 53 48 89 fb e8 67 88 ae ff b8 00 00 01 00 f0 0f c1 03 89 c2 c1 ea 10 66 39 c2 74 0e 0f 1f 40 00 <f3> 90 0f b7 03 66 39 d0 75 f6 5b c3 90 90 90 90 48 c7 c7 60 74 
> > Aug 23 11:51:24 ex6 cachefilesd[5919]: Refilling cull table
> > Aug 23 11:51:24 ex6 cachefilesd[5919]: Scan complete
> > Aug 23 11:51:33 ex6 kernel: [55598.253247] BUG: soft lockup - CPU#6 stuck for 22s! [httpd2-event:15597]
> > Aug 23 11:51:33 ex6 kernel: [55598.253708] Modules linked in: sg st sr_mod cdrom act_police cls_basic cls_flow cls_fw cls_u32 sch_tbf sch_prio sch_htb sch_hfsc sch_ingress sch_sfq bridge stp llc xt_statistic xt_CT xt_LOG xt_realm xt_connlimit xt_addrtype iptable_raw xt_comment xt_recent ipt_ULOG ipt_REJECT ipt_REDIRECT ipt_NETMAP ipt_MASQUERADE ipt_ECN ipt_CLUSTERIP ipt_ah xt_set ip_set nf_nat_tftp nf_nat_snmp_basic nf_conntrack_snmp nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda ts_kmp xt_time xt_TCPMSS xt_sctp nf_conntrack_amanda xt_policy nf_conntrack_sane ip6t_REJECT nf_conntrack_tftp nf_conntrack_ipv6 nf_conntrack_sip ip6table_raw nf_conntrack_proto_udplite ip6table_mangle nf_conntrack_proto_sctp nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_broadcast nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_TPROXY nf_tproxy_core nf_defrag_ipv6 xt_tcpmss xt_pkttype xt_physdev xt_owner xt_
> NFQUEUE xt_NFLOG nfnetlink_
> > Aug 23 11:51:33 ex6 kernel: log xt_multiport xt_mark xt_mac xt_limit xt_length xt_iprange xt_helper xt_hashlimit xt_DSCP xt_dscp xt_dccp xt_conntrack xt_connmark xt_CLASSIFY xt_AUDIT xt_tcpudp xt_state iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack iptable_mangle nfnetlink ip6table_filter ip6_tables iptable_filter ip_tables x_tables af_packet cachefiles fscache eeepc_wmi asus_wmi sparse_keymap acpi_cpufreq mperf rfkill pci_hotplug e1000e coretemp wmi kvm_intel i2c_i801 kvm mei pcspkr joydev ghash_clmulni_intel microcode crc32c_intel edd aesni_intel ablk_helper cryptd aes_x86_64 autofs4 hid_generic usbhid i915 xhci_hcd drm_kms_helper drm ehci_hcd i2c_algo_bit usbcore usb_common video button scsi_dh_hp_sw scsi_dh_alua scsi_dh_emc scsi_dh_rdac scsi_dh fan processor thermal thermal_sys megaraid_sas
> > Aug 23 11:51:33 ex6 kernel: [55598.253818] CPU 6 
> > Aug 23 11:51:33 ex6 kernel: [55598.253822] Pid: 15597, comm: httpd2-event Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:33 ex6 kernel: [55598.253824] RIP: 0010:[<ffffffff81562be5>]  [<ffffffff81562be5>] _raw_spin_lock_bh+0x25/0x30
> > Aug 23 11:51:33 ex6 kernel: [55598.253833] RSP: 0018:ffff88018fc79f08  EFLAGS: 00000297
> > Aug 23 11:51:33 ex6 kernel: [55598.253835] RAX: 0000000000000014 RBX: ffff880407ba4cc0 RCX: 0000000000000001
> > Aug 23 11:51:33 ex6 kernel: [55598.253837] RDX: 0000000000000015 RSI: 0000000000000000 RDI: ffff880194f4c090
> > Aug 23 11:51:33 ex6 kernel: [55598.253839] RBP: 0000000000000002 R08: ffff8804089938f0 R09: 0000000000003ced
> > Aug 23 11:51:33 ex6 kernel: [55598.253841] R10: ffff88041e836800 R11: 0000000000000202 R12: ffff880407ba4d08
> > Aug 23 11:51:33 ex6 kernel: [55598.253842] R13: ffff880407ba4cc0 R14: 0000000000000292 R15: 0000293da5c4986a
> > Aug 23 11:51:33 ex6 kernel: [55598.253845] FS:  00007fcd524e4700(0000) GS:ffff88041f380000(0000) knlGS:0000000000000000
> > Aug 23 11:51:33 ex6 kernel: [55598.253847] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:33 ex6 kernel: [55598.253849] CR2: 00007fcd51b59000 CR3: 0000000208ab4000 CR4: 00000000000407e0
> > Aug 23 11:51:33 ex6 kernel: [55598.253850] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:33 ex6 kernel: [55598.253852] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:33 ex6 kernel: [55598.253855] Process httpd2-event (pid: 15597, threadinfo ffff88018fc78000, task ffff880194f5a300)
> > Aug 23 11:51:33 ex6 kernel: [55598.253856] Stack:
> > Aug 23 11:51:33 ex6 kernel: [55598.253857]  ffff880194f4c040 ffffffff8145d45d ffff880194f4c040 ffffffff814d120e
> > Aug 23 11:51:33 ex6 kernel: [55598.253861]  ffff880194f5a300 ffff8804067d2580 0000000000000001 00007fcd60c8eaa0
> > Aug 23 11:51:33 ex6 kernel: [55598.253865]  0004c7e9679f5fbf ffffffff8145ac14 00007fcd589c02e0 0000000100000000
> > Aug 23 11:51:33 ex6 kernel: [55598.253868] Call Trace:
> > Aug 23 11:51:33 ex6 kernel: [55598.253877]  [<ffffffff8145d45d>] lock_sock_nested+0xd/0x30
> > Aug 23 11:51:33 ex6 kernel: [55598.253885]  [<ffffffff814d120e>] inet_shutdown+0x3e/0x130
> > Aug 23 11:51:33 ex6 kernel: [55598.253892]  [<ffffffff8145ac14>] sys_shutdown+0x74/0x80
> > Aug 23 11:51:33 ex6 kernel: [55598.253900]  [<ffffffff8156a47d>] system_call_fastpath+0x1a/0x1f
> > Aug 23 11:51:33 ex6 kernel: [55598.253909]  [<00007fcd5fc42477>] 0x7fcd5fc42476
> > Aug 23 11:51:33 ex6 kernel: [55598.253910] Code: c3 0f 1f 44 00 00 53 48 89 fb e8 67 88 ae ff b8 00 00 01 00 f0 0f c1 03 89 c2 c1 ea 10 66 39 c2 74 0e 0f 1f 40 00 f3 90 0f b7 03 <66> 39 d0 75 f6 5b c3 90 90 90 90 48 c7 c7 60 74 a5 81 e9 34 d9 
> > Aug 23 11:51:46 ex6 kernel: [55610.629219] INFO: rcu_sched self-detected stall on CPU { 7}  (t=2580171 jiffies)
> > Aug 23 11:51:46 ex6 kernel: [55610.629225] sending NMI to all CPUs:
> > Aug 23 11:51:46 ex6 kernel: [55610.629231] NMI backtrace for cpu 6
> > Aug 23 11:51:46 ex6 kernel: [55610.629234] CPU 6 
> > Aug 23 11:51:46 ex6 kernel: [55610.629239] Pid: 15597, comm: httpd2-event Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.629242] RIP: 0010:[<ffffffff81562be0>]  [<ffffffff81562be0>] _raw_spin_lock_bh+0x20/0x30
> > Aug 23 11:51:46 ex6 kernel: [55610.629252] RSP: 0018:ffff88018fc79f08  EFLAGS: 00000297
> > Aug 23 11:51:46 ex6 kernel: [55610.629255] RAX: 0000000000000014 RBX: ffff880194f4c090 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.629257] RDX: 0000000000000015 RSI: 0000000000000000 RDI: ffff880194f4c090
> > Aug 23 11:51:46 ex6 kernel: [55610.629260] RBP: 0000000000000002 R08: ffff8804089938f0 R09: 0000000000003ced
> > Aug 23 11:51:46 ex6 kernel: [55610.629262] R10: ffff88041e836800 R11: 0000000000000202 R12: ffff8804067d2580
> > Aug 23 11:51:46 ex6 kernel: [55610.629265] R13: 00000000ffffffea R14: 00007fcd60a664a0 R15: 00007fcd51db52b8
> > Aug 23 11:51:46 ex6 kernel: [55610.629268] FS:  00007fcd524e4700(0000) GS:ffff88041f380000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629271] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.629274] CR2: 00007fcd51b59000 CR3: 0000000208ab4000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.629277] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629279] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.629282] Process httpd2-event (pid: 15597, threadinfo ffff88018fc78000, task ffff880194f5a300)
> > Aug 23 11:51:46 ex6 kernel: [55610.629284] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.629286]  ffff880194f4c040 ffffffff8145d45d ffff880194f4c040 ffffffff814d120e
> > Aug 23 11:51:46 ex6 kernel: [55610.629292]  ffff880194f5a300 ffff8804067d2580 0000000000000001 00007fcd60c8eaa0
> > Aug 23 11:51:46 ex6 kernel: [55610.629297]  0004c7e9679f5fbf ffffffff8145ac14 00007fcd589c02e0 0000000100000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629303] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.629314]  [<ffffffff8145d45d>] lock_sock_nested+0xd/0x30
> > Aug 23 11:51:46 ex6 kernel: [55610.629323]  [<ffffffff814d120e>] inet_shutdown+0x3e/0x130
> > Aug 23 11:51:46 ex6 kernel: [55610.629330]  [<ffffffff8145ac14>] sys_shutdown+0x74/0x80
> > Aug 23 11:51:46 ex6 kernel: [55610.629340]  [<ffffffff8156a47d>] system_call_fastpath+0x1a/0x1f
> > Aug 23 11:51:46 ex6 kernel: [55610.629364]  [<00007fcd5fc42477>] 0x7fcd5fc42476
> > Aug 23 11:51:46 ex6 kernel: [55610.629366] Code: 66 39 d0 75 f6 c3 0f 1f 44 00 00 53 48 89 fb e8 67 88 ae ff b8 00 00 01 00 f0 0f c1 03 89 c2 c1 ea 10 66 39 c2 74 0e 0f 1f 40 00 <f3> 90 0f b7 03 66 39 d0 75 f6 5b c3 90 90 90 90 48 c7 c7 60 74 
> > Aug 23 11:51:46 ex6 kernel: [55610.629413] NMI backtrace for cpu 7
> > Aug 23 11:51:46 ex6 kernel: [55610.629415] CPU 7 
> > Aug 23 11:51:46 ex6 kernel: [55610.629420] Pid: 0, comm: swapper/7 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.629422] RIP: 0010:[<ffffffff812df109>]  [<ffffffff812df109>] find_next_bit+0x39/0xb0
> > Aug 23 11:51:46 ex6 kernel: [55610.629432] RSP: 0018:ffff88041f3c3938  EFLAGS: 00000046
> > Aug 23 11:51:46 ex6 kernel: [55610.629434] RAX: 0000000000000000 RBX: ffff88041f3ccfe0 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.629437] RDX: 0000000000000001 RSI: 0000000000000200 RDI: 0000000000000200
> > Aug 23 11:51:46 ex6 kernel: [55610.629440] RBP: ffff88041f20d020 R08: ffff88041f3ccfe0 R09: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629442] R10: 0000000000000000 R11: 000000000000c2e2 R12: 000000000000d060
> > Aug 23 11:51:46 ex6 kernel: [55610.629445] R13: 0000000000080000 R14: 00000000000000ff R15: 0000000000000007
> > Aug 23 11:51:46 ex6 kernel: [55610.629448] FS:  0000000000000000(0000) GS:ffff88041f3c0000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629451] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.629454] CR2: 00007fcd2c062ac0 CR3: 0000000001a0c000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.629456] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629459] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.629462] Process swapper/7 (pid: 0, threadinfo ffff88040abc4000, task ffff88040abc2400)
> > Aug 23 11:51:46 ex6 kernel: [55610.629464] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.629465]  ffffffff8102a4e7 0000000081a2cec0 000000000000d020 0000000200000007
> > Aug 23 11:51:46 ex6 kernel: [55610.629471]  0000000000000082 ffff88041f3c39b0 0000000000002710 ffffffff81a2ce00
> > Aug 23 11:51:46 ex6 kernel: [55610.629476]  ffff88040abc4000 0000000000000007 ffff88040abc4000 ffffffff81a2cec0
> > Aug 23 11:51:46 ex6 kernel: [55610.629482] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.629494]  [<ffffffff8102a4e7>] __x2apic_send_IPI_mask+0xb7/0x1a0
> > Aug 23 11:51:46 ex6 kernel: [55610.629503]  [<ffffffff810260ff>] arch_trigger_all_cpu_backtrace+0x4f/0x90
> > Aug 23 11:51:46 ex6 kernel: [55610.629510]  [<ffffffff810d6d20>] rcu_pending+0x210/0x560
> > Aug 23 11:51:46 ex6 kernel: [55610.629519]  [<ffffffff810d78c0>] rcu_check_callbacks+0x90/0x110
> > Aug 23 11:51:46 ex6 kernel: [55610.629528]  [<ffffffff8105467f>] update_process_times+0x3f/0x80
> > Aug 23 11:51:46 ex6 kernel: [55610.629536]  [<ffffffff810971fb>] tick_sched_timer+0x6b/0xe0
> > Aug 23 11:51:46 ex6 kernel: [55610.629544]  [<ffffffff810699a6>] __run_hrtimer+0x66/0x1d0
> > Aug 23 11:51:46 ex6 kernel: [55610.629552]  [<ffffffff8106a299>] hrtimer_interrupt+0xe9/0x210
> > Aug 23 11:51:46 ex6 kernel: [55610.629559]  [<ffffffff81024e93>] smp_apic_timer_interrupt+0x63/0xa0
> > Aug 23 11:51:46 ex6 kernel: [55610.629567]  [<ffffffff8156b0fa>] apic_timer_interrupt+0x6a/0x70
> > Aug 23 11:51:46 ex6 kernel: [55610.629578]  [<ffffffff814c2c78>] tcp_slow_start+0x68/0xa0
> > Aug 23 11:51:46 ex6 kernel: [55610.629585]  [<ffffffff814b6260>] tcp_ack+0x560/0x11e0
> > Aug 23 11:51:46 ex6 kernel: [55610.629593]  [<ffffffff814b715d>] tcp_rcv_established+0x27d/0x8e0
> > Aug 23 11:51:46 ex6 kernel: [55610.629601]  [<ffffffff814c045e>] tcp_v4_do_rcv+0xde/0x340
> > Aug 23 11:51:46 ex6 kernel: [55610.629609]  [<ffffffff814c173b>] tcp_v4_rcv+0x59b/0x850
> > Aug 23 11:51:46 ex6 kernel: [55610.629617]  [<ffffffff8149e156>] ip_local_deliver_finish+0xd6/0x250
> > Aug 23 11:51:46 ex6 kernel: [55610.629625]  [<ffffffff8146eb5e>] __netif_receive_skb+0x67e/0x7e0
> > Aug 23 11:51:46 ex6 kernel: [55610.629633]  [<ffffffff8146ed61>] process_backlog+0xa1/0x180
> > Aug 23 11:51:46 ex6 kernel: [55610.629639]  [<ffffffff8146f830>] net_rx_action+0x140/0x230
> > Aug 23 11:51:46 ex6 kernel: [55610.629647]  [<ffffffff8104be2e>] __do_softirq+0xbe/0x1f0
> > Aug 23 11:51:46 ex6 kernel: [55610.629655]  [<ffffffff8156b7ec>] call_softirq+0x1c/0x30
> > Aug 23 11:51:46 ex6 kernel: [55610.629662]  [<ffffffff810045a5>] do_softirq+0x75/0xb0
> > Aug 23 11:51:46 ex6 kernel: [55610.629669]  [<ffffffff8104c1e5>] irq_exit+0xa5/0xb0
> > Aug 23 11:51:46 ex6 kernel: [55610.629677]  [<ffffffff8156b2ba>] call_function_single_interrupt+0x6a/0x70
> > Aug 23 11:51:46 ex6 kernel: [55610.629686]  [<ffffffff813303cc>] intel_idle+0xec/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.629695]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.629702]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.629710]  [<ffffffff81550547>] start_secondary+0x1fe/0x203
> > Aug 23 11:51:46 ex6 kernel: [55610.629713] Code: d1 49 89 d1 48 c1 e9 06 49 83 e1 c0 4c 8d 04 cf 48 89 f7 48 89 d1 4c 29 cf 83 e1 3f 74 40 48 c7 c0 ff ff ff ff 48 d3 e0 49 23 00 <48> 83 ff 3f 76 41 48 85 c0 75 52 49 83 c0 08 48 83 ef 40 49 83 
> > Aug 23 11:51:46 ex6 kernel: [55610.629761] NMI backtrace for cpu 1
> > Aug 23 11:51:46 ex6 kernel: [55610.629765] CPU 1 
> > Aug 23 11:51:46 ex6 kernel: [55610.629769] Pid: 0, comm: swapper/1 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.629772] RIP: 0010:[<ffffffff815628dd>]  [<ffffffff815628dd>] _raw_spin_lock+0x1d/0x30
> > Aug 23 11:51:46 ex6 kernel: [55610.629781] RSP: 0018:ffff88041f243e48  EFLAGS: 00000293
> > Aug 23 11:51:46 ex6 kernel: [55610.629784] RAX: 0000000000000014 RBX: ffff880194f4c040 RCX: 0000000100c76001
> > Aug 23 11:51:46 ex6 kernel: [55610.629787] RDX: 0000000000000016 RSI: 0000000000000286 RDI: ffff880194f4c090
> > Aug 23 11:51:46 ex6 kernel: [55610.629789] RBP: ffff88040abd4000 R08: ffff88040701a29c R09: 0000000000000028
> > Aug 23 11:51:46 ex6 kernel: [55610.629792] R10: dead000000200200 R11: 0000000000000000 R12: 0000000000000100
> > Aug 23 11:51:46 ex6 kernel: [55610.629794] R13: ffffffff814bd160 R14: ffff880194f4c040 R15: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629798] FS:  0000000000000000(0000) GS:ffff88041f240000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629800] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.629803] CR2: 00007fa566135010 CR3: 0000000001a0c000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.629806] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.629808] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.629811] Process swapper/1 (pid: 0, threadinfo ffff88040aba6000, task ffff88040aba4280)
> > Aug 23 11:51:46 ex6 kernel: [55610.629813] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.629815]  ffffffff814bd171 ffff88040abd4000 0000000000000100 ffff880194f4c200ug 23 11:51:05 ex6 kernel: [55570.280878] Modules linked in: sg st sr_mod cdrom act_police cls_basic cls_flow cls_fw cls_u32 sch_tbf sch_prio sch_htb sch_hfsc sch_ingress sch_sfq bridge stp llc xt_statistic xt_CT xt_LOG xt_realm xt_connlimit xt_addrtype iptable_raw xt_comment xt_recent ipt_ULOG ipt_REJECT ipt_REDIRECT ipt_NETMAP ipt_MASQUERADE ipt_ECN ipt_CLUSTERIP ipt_ah xt_set ip_set nf_nat_tftp nf_nat_snmp_basic nf_conntrack_snmp nf_nat_sip nf_nat_pptp nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda ts_kmp xt_time xt_TCPMSS xt_sctp nf_conntrack_amanda xt_policy nf_conntrack_sane ip6t_REJECT nf_conntrack_tftp nf_conntrack_ipv6 nf_conntrack_sip ip6table_raw nf_conntrack_proto_udplite ip6table_mangle nf_conntrack_proto_sctp nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_broadcast nf_conntrack_irc nf_conntr
> ack_h323 nf_conntrack_ftp xt_TPROXY nf_tproxy_core nf_defrag_ipv6 xt_tcpmss xt_pkttype xt_physdev xt_owner xt_NFQUEUE xt_NFLOG nfnetlink_
> Aug 23 11:51:05 ex6 kernel: log xt_multiport xt_mark xt_mac xt_limit
> xt_length xt_iprange xt_helper xt_hashlimit xt_DSCP xt_dscp xt_dccp
> xt_conntrack xt_connmark xt_CLASSIFY xt_AUDIT xt_tcpudp xt_state
> iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack
> iptable_mangle nfnetlink ip6table_filter ip6_tables iptable_filter
> ip_tables x_tables af_packet cachefiles fscache eeepc_wmi asus_wmi
> sparse_keymap acpi_cpufreq mperf rfkill pci_hotplug e1000e coretemp wmi
> kvm_intel i2c_i801 kvm mei pcspkr joydev ghash_clmulni_intel microcode
> crc32c_intel edd aesni_intel ablk_helper cryptd aes_x86_64 autofs4
> hid_generic usbhid i915 xhci_hcd drm_kms_helper drm ehci_hcd
> i2c_algo_bit usbcore usb_common video button scsi_dh_hp_sw scsi_dh_alua
> scsi_dh_emc scsi_dh_rdac scsi_dh fan processor thermal thermal_sys
> megaraid_sas
> Aug 23 11:51:05 ex6 kernel: [55570.280987] CPU 6
> Aug 23 11:51:05 ex6 kernel: [55570.280991] Pid: 15597, comm:
> httpd2-event Not tainted 3.6.0-rc2-1-default #1 System manufacturer
> System Product Name/P8B WS
> Aug 23 11:51:05 ex6 kernel: [55570.280993] RIP:
> 0010:[<ffffffff81562be0>]  [<ffffffff81562be0>] _raw_spin_lock_bh+0x20/0x30
> Aug 23 11:51:05 ex6 kernel: [55570.281002] RSP: 0018:ffff88018fc79f08
> EFLAGS: 00000297
> Aug 23 11:51:05 ex6 kernel: [55570.281004] RAX: 0000000000000014 RBX:
> ffff880407ba4cc0 RCX: 0000000000000001
> Aug 23 11:51:05 ex6 kernel: [55570.281006] RDX: 0000000000000015 RSI:
> 0000000000000000 RDI: ffff880194f4c090
> Aug 23 11:51:05 ex6 kernel: [55570.281007] RBP: 0000000000000002 R08:
> ffff8804089938f0 R09: 0000000000003ced
> Aug 23 11:51:05 ex6 kernel: [55570.281009] R10: ffff88041e836800 R11:
> 0000000000000202 R12: ffff880407ba4d08
> Aug 23 11:51:05 ex6 kernel: [55570.281011] R13: ffff880407ba4cc0 R14:
> 0000000000000292 R15: 0000293da5c4986a
> Aug 23 11:51:05 ex6 kernel: [55570.281013] FS:  00007fcd524e4700(0000)
> GS:ffff88041f380000(0000) knlGS:0000000000000000
> Aug 23 11:51:05 ex6 kernel: [55570.281015] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:05 ex6 kernel: [55570.281017] CR2: 00007fcd51b59000 CR3:
> 0000000208ab4000 CR4: 00000000000407e0
> Aug 23 11:51:05 ex6 kernel: [55570.281019] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:05 ex6 kernel: [55570.281021] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:05 ex6 kernel: [55570.281023] Process httpd2-event (pid:
> 15597, threadinfo ffff88018fc78000, task ffff880194f5a300)
> Aug 23 11:51:05 ex6 kernel: [55570.281024] Stack:
> Aug 23 11:51:05 ex6 kernel: [55570.281025]  ffff880194f4c040
> ffffffff8145d45d ffff880194f4c040 ffffffff814d120e
> Aug 23 11:51:05 ex6 kernel: [55570.281029]  ffff880194f5a300
> ffff8804067d2580 0000000000000001 00007fcd60c8eaa0
> Aug 23 11:51:05 ex6 kernel: [55570.281033]  0004c7e9679f5fbf
> ffffffff8145ac14 00007fcd589c02e0 0000000100000000
> Aug 23 11:51:05 ex6 kernel: [55570.281037] Call Trace:
> Aug 23 11:51:05 ex6 kernel: [55570.281046]  [<ffffffff8145d45d>]
> lock_sock_nested+0xd/0x30
> Aug 23 11:51:05 ex6 kernel: [55570.281052]  [<ffffffff814d120e>]
> inet_shutdown+0x3e/0x130
> Aug 23 11:51:05 ex6 kernel: [55570.281058]  [<ffffffff8145ac14>]
> sys_shutdown+0x74/0x80
> Aug 23 11:51:05 ex6 kernel: [55570.281066]  [<ffffffff8156a47d>]
> system_call_fastpath+0x1a/0x1f
> Aug 23 11:51:05 ex6 kernel: [55570.281075]  [<00007fcd5fc42477>]
> 0x7fcd5fc42476
> Aug 23 11:51:05 ex6 kernel: [55570.281076] Code: 66 39 d0 75 f6 c3 0f 1f
> 44 00 00 53 48 89 fb e8 67 88 ae ff b8 00 00 01 00 f0 0f c1 03 89 c2 c1
> ea 10 66 39 c2 74 0e 0f 1f 40 00 <f3> 90 0f b7 03 66 39 d0 75 f6 5b c3
> 90 90 90 90 48 c7 c7 60 74
> Aug 23 11:51:24 ex6 cachefilesd[5919]: Refilling cull table
> Aug 23 11:51:24 ex6 cachefilesd[5919]: Scan complete
> Aug 23 11:51:33 ex6 kernel: [55598.253247] BUG: soft lockup - CPU#6
> stuck for 22s! [httpd2-event:15597]
> Aug 23 11:51:33 ex6 kernel: [55598.253708] Modules linked in: sg st
> sr_mod cdrom act_police cls_basic cls_flow cls_fw cls_u32 sch_tbf
> sch_prio sch_htb sch_hfsc sch_ingress sch_sfq bridge stp llc
> xt_statistic xt_CT xt_LOG xt_realm xt_connlimit xt_addrtype iptable_raw
> xt_comment xt_recent ipt_ULOG ipt_REJECT ipt_REDIRECT ipt_NETMAP
> ipt_MASQUERADE ipt_ECN ipt_CLUSTERIP ipt_ah xt_set ip_set nf_nat_tftp
> nf_nat_snmp_basic nf_conntrack_snmp nf_nat_sip nf_nat_pptp
> nf_nat_proto_gre nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda ts_kmp
> xt_time xt_TCPMSS xt_sctp nf_conntrack_amanda xt_policy
> nf_conntrack_sane ip6t_REJECT nf_conntrack_tftp nf_conntrack_ipv6
> nf_conntrack_sip ip6table_raw nf_conntrack_proto_udplite ip6table_mangle
> nf_conntrack_proto_sctp nf_conntrack_pptp nf_conntrack_proto_gre
> nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_broadcast
> nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp xt_TPROXY
> nf_tproxy_core nf_defrag_ipv6 xt_tcpmss xt_pkttype xt_physdev xt_owner
> xt_NFQUEUE xt_NFLOG nfnetlink_
> Aug 23 11:51:33 ex6 kernel: log xt_multiport xt_mark xt_mac xt_limit
> xt_length xt_iprange xt_helper xt_hashlimit xt_DSCP xt_dscp xt_dccp
> xt_conntrack xt_connmark xt_CLASSIFY xt_AUDIT xt_tcpudp xt_state
> iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack
> iptable_mangle nfnetlink ip6table_filter ip6_tables iptable_filter
> ip_tables x_tables af_packet cachefiles fscache eeepc_wmi asus_wmi
> sparse_keymap acpi_cpufreq mperf rfkill pci_hotplug e1000e coretemp wmi
> kvm_intel i2c_i801 kvm mei pcspkr joydev ghash_clmulni_intel microcode
> crc32c_intel edd aesni_intel ablk_helper cryptd aes_x86_64 autofs4
> hid_generic usbhid i915 xhci_hcd drm_kms_helper drm ehci_hcd
> i2c_algo_bit usbcore usb_common video button scsi_dh_hp_sw scsi_dh_alua
> scsi_dh_emc scsi_dh_rdac scsi_dh fan processor thermal thermal_sys
> megaraid_sas
> Aug 23 11:51:33 ex6 kernel: [55598.253818] CPU 6
> Aug 23 11:51:33 ex6 kernel: [55598.253822] Pid: 15597, comm:
> httpd2-event Not tainted 3.6.0-rc2-1-default #1 System manufacturer
> System Product Name/P8B WS
> Aug 23 11:51:33 ex6 kernel: [55598.253824] RIP:
> 0010:[<ffffffff81562be5>]  [<ffffffff81562be5>] _raw_spin_lock_bh+0x25/0x30
> Aug 23 11:51:33 ex6 kernel: [55598.253833] RSP: 0018:ffff88018fc79f08
> EFLAGS: 00000297
> Aug 23 11:51:33 ex6 kernel: [55598.253835] RAX: 0000000000000014 RBX:
> ffff880407ba4cc0 RCX: 0000000000000001
> Aug 23 11:51:33 ex6 kernel: [55598.253837] RDX: 0000000000000015 RSI:
> 0000000000000000 RDI: ffff880194f4c090
> Aug 23 11:51:33 ex6 kernel: [55598.253839] RBP: 0000000000000002 R08:
> ffff8804089938f0 R09: 0000000000003ced
> Aug 23 11:51:33 ex6 kernel: [55598.253841] R10: ffff88041e836800 R11:
> 0000000000000202 R12: ffff880407ba4d08
> Aug 23 11:51:33 ex6 kernel: [55598.253842] R13: ffff880407ba4cc0 R14:
> 0000000000000292 R15: 0000293da5c4986a
> Aug 23 11:51:33 ex6 kernel: [55598.253845] FS:  00007fcd524e4700(0000)
> GS:ffff88041f380000(0000) knlGS:0000000000000000
> Aug 23 11:51:33 ex6 kernel: [55598.253847] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:33 ex6 kernel: [55598.253849] CR2: 00007fcd51b59000 CR3:
> 0000000208ab4000 CR4: 00000000000407e0
> Aug 23 11:51:33 ex6 kernel: [55598.253850] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:33 ex6 kernel: [55598.253852] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:33 ex6 kernel: [55598.253855] Process httpd2-event (pid:
> 15597, threadinfo ffff88018fc78000, task ffff880194f5a300)
> Aug 23 11:51:33 ex6 kernel: [55598.253856] Stack:
> Aug 23 11:51:33 ex6 kernel: [55598.253857]  ffff880194f4c040
> ffffffff8145d45d ffff880194f4c040 ffffffff814d120e
> Aug 23 11:51:33 ex6 kernel: [55598.253861]  ffff880194f5a300
> ffff8804067d2580 0000000000000001 00007fcd60c8eaa0
> Aug 23 11:51:33 ex6 kernel: [55598.253865]  0004c7e9679f5fbf
> ffffffff8145ac14 00007fcd589c02e0 0000000100000000
> Aug 23 11:51:33 ex6 kernel: [55598.253868] Call Trace:
> Aug 23 11:51:33 ex6 kernel: [55598.253877]  [<ffffffff8145d45d>]
> lock_sock_nested+0xd/0x30
> Aug 23 11:51:33 ex6 kernel: [55598.253885]  [<ffffffff814d120e>]
> inet_shutdown+0x3e/0x130
> Aug 23 11:51:33 ex6 kernel: [55598.253892]  [<ffffffff8145ac14>]
> sys_shutdown+0x74/0x80
> Aug 23 11:51:33 ex6 kernel: [55598.253900]  [<ffffffff8156a47d>]
> system_call_fastpath+0x1a/0x1f
> Aug 23 11:51:33 ex6 kernel: [55598.253909]  [<00007fcd5fc42477>]
> 0x7fcd5fc42476
> Aug 23 11:51:33 ex6 kernel: [55598.253910] Code: c3 0f 1f 44 00 00 53 48
> 89 fb e8 67 88 ae ff b8 00 00 01 00 f0 0f c1 03 89 c2 c1 ea 10 66 39 c2
> 74 0e 0f 1f 40 00 f3 90 0f b7 03 <66> 39 d0 75 f6 5b c3 90 90 90 90 48
> c7 c7 60 74 a5 81 e9 34 d9
> Aug 23 11:51:46 ex6 kernel: [55610.629219] INFO: rcu_sched self-detected
> stall on CPU { 7}  (t=2580171 jiffies)
> Aug 23 11:51:46 ex6 kernel: [55610.629225] sending NMI to all CPUs:
> Aug 23 11:51:46 ex6 kernel: [55610.629231] NMI backtrace for cpu 6
> Aug 23 11:51:46 ex6 kernel: [55610.629234] CPU 6
> Aug 23 11:51:46 ex6 kernel: [55610.629239] Pid: 15597, comm:
> httpd2-event Not tainted 3.6.0-rc2-1-default #1 System manufacturer
> System Product Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.629242] RIP:
> 0010:[<ffffffff81562be0>]  [<ffffffff81562be0>] _raw_spin_lock_bh+0x20/0x30
> Aug 23 11:51:46 ex6 kernel: [55610.629252] RSP: 0018:ffff88018fc79f08
> EFLAGS: 00000297
> Aug 23 11:51:46 ex6 kernel: [55610.629255] RAX: 0000000000000014 RBX:
> ffff880194f4c090 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.629257] RDX: 0000000000000015 RSI:
> 0000000000000000 RDI: ffff880194f4c090
> Aug 23 11:51:46 ex6 kernel: [55610.629260] RBP: 0000000000000002 R08:
> ffff8804089938f0 R09: 0000000000003ced
> Aug 23 11:51:46 ex6 kernel: [55610.629262] R10: ffff88041e836800 R11:
> 0000000000000202 R12: ffff8804067d2580
> Aug 23 11:51:46 ex6 kernel: [55610.629265] R13: 00000000ffffffea R14:
> 00007fcd60a664a0 R15: 00007fcd51db52b8
> Aug 23 11:51:46 ex6 kernel: [55610.629268] FS:  00007fcd524e4700(0000)
> GS:ffff88041f380000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629271] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.629274] CR2: 00007fcd51b59000 CR3:
> 0000000208ab4000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.629277] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629279] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.629282] Process httpd2-event (pid:
> 15597, threadinfo ffff88018fc78000, task ffff880194f5a300)
> Aug 23 11:51:46 ex6 kernel: [55610.629284] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.629286]  ffff880194f4c040
> ffffffff8145d45d ffff880194f4c040 ffffffff814d120e
> Aug 23 11:51:46 ex6 kernel: [55610.629292]  ffff880194f5a300
> ffff8804067d2580 0000000000000001 00007fcd60c8eaa0
> Aug 23 11:51:46 ex6 kernel: [55610.629297]  0004c7e9679f5fbf
> ffffffff8145ac14 00007fcd589c02e0 0000000100000000
> Aug 23 11:51:46 ex6 kernel: [55610.629303] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.629314]  [<ffffffff8145d45d>]
> lock_sock_nested+0xd/0x30
> Aug 23 11:51:46 ex6 kernel: [55610.629323]  [<ffffffff814d120e>]
> inet_shutdown+0x3e/0x130
> Aug 23 11:51:46 ex6 kernel: [55610.629330]  [<ffffffff8145ac14>]
> sys_shutdown+0x74/0x80
> Aug 23 11:51:46 ex6 kernel: [55610.629340]  [<ffffffff8156a47d>]
> system_call_fastpath+0x1a/0x1f
> Aug 23 11:51:46 ex6 kernel: [55610.629364]  [<00007fcd5fc42477>]
> 0x7fcd5fc42476
> Aug 23 11:51:46 ex6 kernel: [55610.629366] Code: 66 39 d0 75 f6 c3 0f 1f
> 44 00 00 53 48 89 fb e8 67 88 ae ff b8 00 00 01 00 f0 0f c1 03 89 c2 c1
> ea 10 66 39 c2 74 0e 0f 1f 40 00 <f3> 90 0f b7 03 66 39 d0 75 f6 5b c3
> 90 90 90 90 48 c7 c7 60 74
> Aug 23 11:51:46 ex6 kernel: [55610.629413] NMI backtrace for cpu 7
> Aug 23 11:51:46 ex6 kernel: [55610.629415] CPU 7
> Aug 23 11:51:46 ex6 kernel: [55610.629420] Pid: 0, comm: swapper/7 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.629422] RIP:
> 0010:[<ffffffff812df109>]  [<ffffffff812df109>] find_next_bit+0x39/0xb0
> Aug 23 11:51:46 ex6 kernel: [55610.629432] RSP: 0018:ffff88041f3c3938
> EFLAGS: 00000046
> Aug 23 11:51:46 ex6 kernel: [55610.629434] RAX: 0000000000000000 RBX:
> ffff88041f3ccfe0 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.629437] RDX: 0000000000000001 RSI:
> 0000000000000200 RDI: 0000000000000200
> Aug 23 11:51:46 ex6 kernel: [55610.629440] RBP: ffff88041f20d020 R08:
> ffff88041f3ccfe0 R09: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629442] R10: 0000000000000000 R11:
> 000000000000c2e2 R12: 000000000000d060
> Aug 23 11:51:46 ex6 kernel: [55610.629445] R13: 0000000000080000 R14:
> 00000000000000ff R15: 0000000000000007
> Aug 23 11:51:46 ex6 kernel: [55610.629448] FS:  0000000000000000(0000)
> GS:ffff88041f3c0000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629451] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.629454] CR2: 00007fcd2c062ac0 CR3:
> 0000000001a0c000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.629456] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629459] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.629462] Process swapper/7 (pid: 0,
> threadinfo ffff88040abc4000, task ffff88040abc2400)
> Aug 23 11:51:46 ex6 kernel: [55610.629464] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.629465]  ffffffff8102a4e7
> 0000000081a2cec0 000000000000d020 0000000200000007
> Aug 23 11:51:46 ex6 kernel: [55610.629471]  0000000000000082
> ffff88041f3c39b0 0000000000002710 ffffffff81a2ce00
> Aug 23 11:51:46 ex6 kernel: [55610.629476]  ffff88040abc4000
> 0000000000000007 ffff88040abc4000 ffffffff81a2cec0
> Aug 23 11:51:46 ex6 kernel: [55610.629482] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.629494]  [<ffffffff8102a4e7>]
> __x2apic_send_IPI_mask+0xb7/0x1a0
> Aug 23 11:51:46 ex6 kernel: [55610.629503]  [<ffffffff810260ff>]
> arch_trigger_all_cpu_backtrace+0x4f/0x90
> Aug 23 11:51:46 ex6 kernel: [55610.629510]  [<ffffffff810d6d20>]
> rcu_pending+0x210/0x560
> Aug 23 11:51:46 ex6 kernel: [55610.629519]  [<ffffffff810d78c0>]
> rcu_check_callbacks+0x90/0x110
> Aug 23 11:51:46 ex6 kernel: [55610.629528]  [<ffffffff8105467f>]
> update_process_times+0x3f/0x80
> Aug 23 11:51:46 ex6 kernel: [55610.629536]  [<ffffffff810971fb>]
> tick_sched_timer+0x6b/0xe0
> Aug 23 11:51:46 ex6 kernel: [55610.629544]  [<ffffffff810699a6>]
> __run_hrtimer+0x66/0x1d0
> Aug 23 11:51:46 ex6 kernel: [55610.629552]  [<ffffffff8106a299>]
> hrtimer_interrupt+0xe9/0x210
> Aug 23 11:51:46 ex6 kernel: [55610.629559]  [<ffffffff81024e93>]
> smp_apic_timer_interrupt+0x63/0xa0
> Aug 23 11:51:46 ex6 kernel: [55610.629567]  [<ffffffff8156b0fa>]
> apic_timer_interrupt+0x6a/0x70
> Aug 23 11:51:46 ex6 kernel: [55610.629578]  [<ffffffff814c2c78>]
> tcp_slow_start+0x68/0xa0
> Aug 23 11:51:46 ex6 kernel: [55610.629585]  [<ffffffff814b6260>]
> tcp_ack+0x560/0x11e0
> Aug 23 11:51:46 ex6 kernel: [55610.629593]  [<ffffffff814b715d>]
> tcp_rcv_established+0x27d/0x8e0
> Aug 23 11:51:46 ex6 kernel: [55610.629601]  [<ffffffff814c045e>]
> tcp_v4_do_rcv+0xde/0x340
> Aug 23 11:51:46 ex6 kernel: [55610.629609]  [<ffffffff814c173b>]
> tcp_v4_rcv+0x59b/0x850
> Aug 23 11:51:46 ex6 kernel: [55610.629617]  [<ffffffff8149e156>]
> ip_local_deliver_finish+0xd6/0x250
> Aug 23 11:51:46 ex6 kernel: [55610.629625]  [<ffffffff8146eb5e>]
> __netif_receive_skb+0x67e/0x7e0
> Aug 23 11:51:46 ex6 kernel: [55610.629633]  [<ffffffff8146ed61>]
> process_backlog+0xa1/0x180
> Aug 23 11:51:46 ex6 kernel: [55610.629639]  [<ffffffff8146f830>]
> net_rx_action+0x140/0x230
> Aug 23 11:51:46 ex6 kernel: [55610.629647]  [<ffffffff8104be2e>]
> __do_softirq+0xbe/0x1f0
> Aug 23 11:51:46 ex6 kernel: [55610.629655]  [<ffffffff8156b7ec>]
> call_softirq+0x1c/0x30
> Aug 23 11:51:46 ex6 kernel: [55610.629662]  [<ffffffff810045a5>]
> do_softirq+0x75/0xb0
> Aug 23 11:51:46 ex6 kernel: [55610.629669]  [<ffffffff8104c1e5>]
> irq_exit+0xa5/0xb0
> Aug 23 11:51:46 ex6 kernel: [55610.629677]  [<ffffffff8156b2ba>]
> call_function_single_interrupt+0x6a/0x70
> Aug 23 11:51:46 ex6 kernel: [55610.629686]  [<ffffffff813303cc>]
> intel_idle+0xec/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.629695]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.629702]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.629710]  [<ffffffff81550547>]
> start_secondary+0x1fe/0x203
> Aug 23 11:51:46 ex6 kernel: [55610.629713] Code: d1 49 89 d1 48 c1 e9 06
> 49 83 e1 c0 4c 8d 04 cf 48 89 f7 48 89 d1 4c 29 cf 83 e1 3f 74 40 48 c7
> c0 ff ff ff ff 48 d3 e0 49 23 00 <48> 83 ff 3f 76 41 48 85 c0 75 52 49
> 83 c0 08 48 83 ef 40 49 83
> Aug 23 11:51:46 ex6 kernel: [55610.629761] NMI backtrace for cpu 1
> Aug 23 11:51:46 ex6 kernel: [55610.629765] CPU 1
> Aug 23 11:51:46 ex6 kernel: [55610.629769] Pid: 0, comm: swapper/1 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.629772] RIP:
> 0010:[<ffffffff815628dd>]  [<ffffffff815628dd>] _raw_spin_lock+0x1d/0x30
> Aug 23 11:51:46 ex6 kernel: [55610.629781] RSP: 0018:ffff88041f243e48
> EFLAGS: 00000293
> Aug 23 11:51:46 ex6 kernel: [55610.629784] RAX: 0000000000000014 RBX:
> ffff880194f4c040 RCX: 0000000100c76001
> Aug 23 11:51:46 ex6 kernel: [55610.629787] RDX: 0000000000000016 RSI:
> 0000000000000286 RDI: ffff880194f4c090
> Aug 23 11:51:46 ex6 kernel: [55610.629789] RBP: ffff88040abd4000 R08:
> ffff88040701a29c R09: 0000000000000028
> Aug 23 11:51:46 ex6 kernel: [55610.629792] R10: dead000000200200 R11:
> 0000000000000000 R12: 0000000000000100
> Aug 23 11:51:46 ex6 kernel: [55610.629794] R13: ffffffff814bd160 R14:
> ffff880194f4c040 R15: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629798] FS:  0000000000000000(0000)
> GS:ffff88041f240000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629800] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.629803] CR2: 00007fa566135010 CR3:
> 0000000001a0c000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.629806] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.629808] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.629811] Process swapper/1 (pid: 0,
> threadinfo ffff88040aba6000, task ffff88040aba4280)
> Aug 23 11:51:46 ex6 kernel: [55610.629813] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.629815]  ffffffff814bd171
> ffff88040abd4000 0000000000000100 ffff880194f4c200
> Aug 23 11:51:46 ex6 kernel: [55610.629820]  ffffffff81053ac1
> 0000000000000000 ffff88041f243ea0 ffff88040aba7fd8
> Aug 23 11:51:46 ex6 kernel: [55610.629825]  ffff88040aba7fd8
> ffff88040aba7fd8 ffff88040abd5028 ffff88041f243ea0
> Aug 23 11:51:46 ex6 kernel: [55610.629831] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.629841]  [<ffffffff814bd171>]
> tcp_keepalive_timer+0x11/0x250
> Aug 23 11:51:46 ex6 kernel: [55610.629850]  [<ffffffff81053ac1>]
> run_timer_softirq+0x151/0x350
> Aug 23 11:51:46 ex6 kernel: [55610.629857]  [<ffffffff8104be2e>]
> __do_softirq+0xbe/0x1f0
> Aug 23 11:51:46 ex6 kernel: [55610.629865]  [<ffffffff8156b7ec>]
> call_softirq+0x1c/0x30
> Aug 23 11:51:46 ex6 kernel: [55610.629871]  [<ffffffff810045a5>]
> do_softirq+0x75/0xb0
> Aug 23 11:51:46 ex6 kernel: [55610.629879]  [<ffffffff8104c1e5>]
> irq_exit+0xa5/0xb0
> Aug 23 11:51:46 ex6 kernel: [55610.629886]  [<ffffffff81024e98>]
> smp_apic_timer_interrupt+0x68/0xa0
> Aug 23 11:51:46 ex6 kernel: [55610.629893]  [<ffffffff8156b0fa>]
> apic_timer_interrupt+0x6a/0x70
> Aug 23 11:51:46 ex6 kernel: [55610.629902]  [<ffffffff813303cc>]
> intel_idle+0xec/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.629911]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.629918]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.629925]  [<ffffffff81550547>]
> start_secondary+0x1fe/0x203
> Aug 23 11:51:46 ex6 kernel: [55610.629929] Code: 90 90 90 90 90 90 90 90
> 90 90 90 90 90 90 b8 00 00 01 00 f0 0f c1 07 89 c2 c1 ea 10 66 39 c2 74
> 0f 0f 1f 44 00 00 f3 90 0f b7 07 <66> 39 d0 75 f6 c3 66 66 66 66 2e 0f
> 1f 84 00 00 00 00 00 66 83
> Aug 23 11:51:46 ex6 kernel: [55610.629976] NMI backtrace for cpu 2
> Aug 23 11:51:46 ex6 kernel: [55610.629979] CPU 2
> Aug 23 11:51:46 ex6 kernel: [55610.629983] Pid: 0, comm: swapper/2 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.629986] RIP:
> 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.629992] RSP: 0018:ffff88040ababe78
> EFLAGS: 00000046
> Aug 23 11:51:46 ex6 kernel: [55610.629994] RAX: 0000000000000020 RBX:
> 0000000000000008 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.629997] RDX: 0000000000000000 RSI:
> ffff88040ababfd8 RDI: ffffffff81a17640
> Aug 23 11:51:46 ex6 kernel: [55610.629999] RBP: 0000000000000003 R08:
> 0000000000000003 R09: 0000000000003e3c
> Aug 23 11:51:46 ex6 kernel: [55610.630002] R10: 0000000000000001 R11:
> 0000000000000000 R12: ffff88041f298f70
> Aug 23 11:51:46 ex6 kernel: [55610.630004] R13: 0000000000000020 R14:
> 12acf11f7efbdbfc R15: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630007] FS:  0000000000000000(0000)
> GS:ffff88041f280000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630010] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.630012] CR2: 00007fa566135010 CR3:
> 0000000001a0c000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.630015] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630017] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.630020] Process swapper/2 (pid: 0,
> threadinfo ffff88040abaa000, task ffff88040aba82c0)
> Aug 23 11:51:46 ex6 kernel: [55610.630022] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.630024]  0000000077359400
> ffffffff81436a70 0000000000000000 0000000200f31e03
> Aug 23 11:51:46 ex6 kernel: [55610.630029]  0000000000000000
> 0000000000f31e03 ffff88040ababfd8 ffff88041f298f70
> Aug 23 11:51:46 ex6 kernel: [55610.630034]  0000000000000003
> 0000000000000002 ffffffff81a52300 ffffffff8143566d
> Aug 23 11:51:46 ex6 kernel: [55610.630039] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.630048]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.630055]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.630062]  [<ffffffff81550547>]
> start_secondary+0x1fe/0x203
> Aug 23 11:51:46 ex6 kernel: [55610.630066] Code: 28 e0 ff ff 83 e2 08 75
> 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8
> 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8
> 76 a8 d1 ff 48 89 04 24 48
> Aug 23 11:51:46 ex6 kernel: [55610.630113] NMI backtrace for cpu 5
> Aug 23 11:51:46 ex6 kernel: [55610.630115] CPU 5
> Aug 23 11:51:46 ex6 kernel: [55610.630120] Pid: 0, comm: swapper/5 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.630122] RIP:
> 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.630128] RSP: 0018:ffff88040abb9e78
> EFLAGS: 00000046
> Aug 23 11:51:46 ex6 kernel: [55610.630130] RAX: 0000000000000020 RBX:
> 0000000000000008 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.630133] RDX: 0000000000000000 RSI:
> ffff88040abb9fd8 RDI: ffffffff81a17640
> Aug 23 11:51:46 ex6 kernel: [55610.630135] RBP: 0000000000000003 R08:
> 0000000000000003 R09: 0000000000005634
> Aug 23 11:51:46 ex6 kernel: [55610.630138] R10: 0000000000000001 R11:
> 0000000000000000 R12: ffff88041f358f70
> Aug 23 11:51:46 ex6 kernel: [55610.630140] R13: 0000000000000020 R14:
> 12acf11f7e9e3c16 R15: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630143] FS:  0000000000000000(0000)
> GS:ffff88041f340000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630146] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.630149] CR2: 00007fd29bfff000 CR3:
> 0000000001a0c000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.630151] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630154] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.630157] Process swapper/5 (pid: 0,
> threadinfo ffff88040abb8000, task ffff88040abb6380)
> Aug 23 11:51:46 ex6 kernel: [55610.630158] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.630160]  0000000077359400
> ffffffff81436a70 0000000000000000 000000050150be3d
> Aug 23 11:51:46 ex6 kernel: [55610.630165]  0000000000000000
> 000000000150be3d ffff88040abb9fd8 ffff88041f358f70
> Aug 23 11:51:46 ex6 kernel: [55610.630170]  0000000000000003
> 0000000000000005 ffffffff81a52300 ffffffff8143566d
> Aug 23 11:51:46 ex6 kernel: [55610.630176] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.630184]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.630191]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.630198]  [<ffffffff81550547>]
> start_secondary+0x1fe/0x203
> Aug 23 11:51:46 ex6 kernel: [55610.630201] Code: 28 e0 ff ff 83 e2 08 75
> 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8
> 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8
> 76 a8 d1 ff 48 89 04 24 48
> Aug 23 11:51:46 ex6 kernel: [55610.630248] NMI backtrace for cpu 3
> Aug 23 11:51:46 ex6 kernel: [55610.630251] CPU 3
> Aug 23 11:51:46 ex6 kernel: [55610.630255] Pid: 0, comm: swapper/3 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.630257] RIP:
> 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.630263] RSP: 0018:ffff88040abb1e78
> EFLAGS: 00000046
> Aug 23 11:51:46 ex6 kernel: [55610.630266] RAX: 0000000000000020 RBX:
> 0000000000000008 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.630268] RDX: 0000000000000000 RSI:
> ffff88040abb1fd8 RDI: ffffffff81a17640
> Aug 23 11:51:46 ex6 kernel: [55610.630271] RBP: 0000000000000003 R08:
> 0000000000000003 R09: 0000000000003e43
> Aug 23 11:51:46 ex6 kernel: [55610.630273] R10: 0000000000000001 R11:
> 0000000000000000 R12: ffff88041f2d8f70
> Aug 23 11:51:46 ex6 kernel: [55610.630276] R13: 0000000000000020 R14:
> 12acf11f7efbc356 R15: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630279] FS:  0000000000000000(0000)
> GS:ffff88041f2c0000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630282] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.630284] CR2: 00007fe7d784ba68 CR3:
> 0000000001a0c000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.630287] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630289] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.630292] Process swapper/3 (pid: 0,
> threadinfo ffff88040abb0000, task ffff88040abae300)
> Aug 23 11:51:46 ex6 kernel: [55610.630294] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.630296]  0000000077359400
> ffffffff81436a70 0000000000000000 0000000300f3366a
> Aug 23 11:51:46 ex6 kernel: [55610.630301]  0000000000000000
> 0000000000f3366a ffff88040abb1fd8 ffff88041f2d8f70
> Aug 23 11:51:46 ex6 kernel: [55610.630306]  0000000000000003
> 0000000000000003 ffffffff81a52300 ffffffff8143566d
> Aug 23 11:51:46 ex6 kernel: [55610.630311] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.630320]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.630327]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.630333]  [<ffffffff81550547>]
> start_secondary+0x1fe/0x203
> Aug 23 11:51:46 ex6 kernel: [55610.630337] Code: 28 e0 ff ff 83 e2 08 75
> 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8
> 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8
> 76 a8 d1 ff 48 89 04 24 48
> Aug 23 11:51:46 ex6 kernel: [55610.630385] NMI backtrace for cpu 0
> Aug 23 11:51:46 ex6 kernel: [55610.630388] CPU 0
> Aug 23 11:51:46 ex6 kernel: [55610.630393] Pid: 0, comm: swapper/0 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.630396] RIP:
> 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.630403] RSP: 0018:ffffffff81a01e88
> EFLAGS: 00000046
> Aug 23 11:51:46 ex6 kernel: [55610.630406] RAX: 0000000000000020 RBX:
> 0000000000000008 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.630409] RDX: 0000000000000000 RSI:
> ffffffff81a01fd8 RDI: ffffffff81a17640
> Aug 23 11:51:46 ex6 kernel: [55610.630411] RBP: 0000000000000003 R08:
> 0000000000000003 R09: 0000000000005d52
> Aug 23 11:51:46 ex6 kernel: [55610.630413] R10: 0000000000000001 R11:
> 0000000000000000 R12: ffff88041f218f70
> Aug 23 11:51:46 ex6 kernel: [55610.630416] R13: 0000000000000020 R14:
> 12acf11f7f769680 R15: 0000000001fe8018
> Aug 23 11:51:46 ex6 kernel: [55610.630419] FS:  0000000000000000(0000)
> GS:ffff88041f200000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630422] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.630425] CR2: 00007f03abb83000 CR3:
> 0000000001a0c000 CR4: 00000000000407f0
> Aug 23 11:51:46 ex6 kernel: [55610.630427] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630430] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.630433] Process swapper/0 (pid: 0,
> threadinfo ffffffff81a00000, task ffffffff81a14420)
> Aug 23 11:51:46 ex6 kernel: [55610.630435] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.630436]  0000000077359400
> ffffffff81436a70 0000000000000000 00000000016c88d5
> Aug 23 11:51:46 ex6 kernel: [55610.630442]  0000000000000000
> 00000000016c88d5 ffffffff81a01fd8 ffff88041f218f70
> Aug 23 11:51:46 ex6 kernel: [55610.630447]  0000000000000003
> 0000000000000000 ffffffff81a52300 ffffffff8143566d
> Aug 23 11:51:46 ex6 kernel: [55610.630453] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.630464]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.630471]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.630480]  [<ffffffff81ac0ba2>]
> start_kernel+0x391/0x39c
> Aug 23 11:51:46 ex6 kernel: [55610.630488]  [<ffffffff81ac0436>]
> x86_64_start_kernel+0x105/0x114
> Aug 23 11:51:46 ex6 kernel: [55610.630492] Code: 28 e0 ff ff 83 e2 08 75
> 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8
> 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8
> 76 a8 d1 ff 48 89 04 24 48
> Aug 23 11:51:46 ex6 kernel: [55610.630539] NMI backtrace for cpu 4
> Aug 23 11:51:46 ex6 kernel: [55610.630542] CPU 4
> Aug 23 11:51:46 ex6 kernel: [55610.630546] Pid: 0, comm: swapper/4 Not
> tainted 3.6.0-rc2-1-default #1 System manufacturer System Product
> Name/P8B WS
> Aug 23 11:51:46 ex6 kernel: [55610.630549] RIP:
> 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> Aug 23 11:51:46 ex6 kernel: [55610.630555] RSP: 0018:ffff88040abb5e78
> EFLAGS: 00000046
> Aug 23 11:51:46 ex6 kernel: [55610.630557] RAX: 0000000000000020 RBX:
> 0000000000000008 RCX: 0000000000000001
> Aug 23 11:51:46 ex6 kernel: [55610.630560] RDX: 0000000000000000 RSI:
> ffff88040abb5fd8 RDI: ffffffff81a17640
> Aug 23 11:51:46 ex6 kernel: [55610.630562] RBP: 0000000000000003 R08:
> 0000000000000003 R09: 0000000000003e1e
> Aug 23 11:51:46 ex6 kernel: [55610.630565] R10: 0000000000000001 R11:
> 0000000000000000 R12: ffff88041f318f70
> Aug 23 11:51:46 ex6 kernel: [55610.630568] R13: 0000000000000020 R14:
> 12acf11f7efc52d2 R15: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630571] FS:  0000000000000000(0000)
> GS:ffff88041f300000(0000) knlGS:0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630573] CS:  0010 DS: 0000 ES: 0000
> CR0: 000000008005003b
> Aug 23 11:51:46 ex6 kernel: [55610.630576] CR2: 00007fd29bfff000 CR3:
> 0000000001a0c000 CR4: 00000000000407e0
> Aug 23 11:51:46 ex6 kernel: [55610.630578] DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Aug 23 11:51:46 ex6 kernel: [55610.630581] DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Aug 23 11:51:46 ex6 kernel: [55610.630584] Process swapper/4 (pid: 0,
> threadinfo ffff88040abb4000, task ffff88040abb2340)
> Aug 23 11:51:46 ex6 kernel: [55610.630586] Stack:
> Aug 23 11:51:46 ex6 kernel: [55610.630588]  0000000077359400
> ffffffff81436a70 0000000000000000 0000000400f2a60d
> Aug 23 11:51:46 ex6 kernel: [55610.630593]  0000000000000000
> 0000000000f2a60d ffff88040abb5fd8 ffff88041f318f70
> Aug 23 11:51:46 ex6 kernel: [55610.630598]  0000000000000003
> 0000000000000004 ffffffff81a52300 ffffffff8143566d
> Aug 23 11:51:46 ex6 kernel: [55610.630604] Call Trace:
> Aug 23 11:51:46 ex6 kernel: [55610.630614]  [<ffffffff8143566d>]
> cpuidle_idle_call+0x9d/0x240
> Aug 23 11:51:46 ex6 kernel: [55610.630622]  [<ffffffff8100b715>]
> cpu_idle+0x65/0xd0
> Aug 23 11:51:46 ex6 kernel: [55610.630629]  [<ffffffff81550547>]
> start_secondary+0x1fe/0x203
> Aug 23 11:51:46 ex6 kernel: [55610.630633] Code: 28 e0 ff ff 83 e2 08 75
> 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8
> 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8
> 76 a8 d1 ff 48 89 04 24 48
> 
> > Aug 23 11:51:46 ex6 kernel: [55610.629820]  ffffffff81053ac1 0000000000000000 ffff88041f243ea0 ffff88040aba7fd8
> > Aug 23 11:51:46 ex6 kernel: [55610.629825]  ffff88040aba7fd8 ffff88040aba7fd8 ffff88040abd5028 ffff88041f243ea0
> > Aug 23 11:51:46 ex6 kernel: [55610.629831] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.629841]  [<ffffffff814bd171>] tcp_keepalive_timer+0x11/0x250
> > Aug 23 11:51:46 ex6 kernel: [55610.629850]  [<ffffffff81053ac1>] run_timer_softirq+0x151/0x350
> > Aug 23 11:51:46 ex6 kernel: [55610.629857]  [<ffffffff8104be2e>] __do_softirq+0xbe/0x1f0
> > Aug 23 11:51:46 ex6 kernel: [55610.629865]  [<ffffffff8156b7ec>] call_softirq+0x1c/0x30
> > Aug 23 11:51:46 ex6 kernel: [55610.629871]  [<ffffffff810045a5>] do_softirq+0x75/0xb0
> > Aug 23 11:51:46 ex6 kernel: [55610.629879]  [<ffffffff8104c1e5>] irq_exit+0xa5/0xb0
> > Aug 23 11:51:46 ex6 kernel: [55610.629886]  [<ffffffff81024e98>] smp_apic_timer_interrupt+0x68/0xa0
> > Aug 23 11:51:46 ex6 kernel: [55610.629893]  [<ffffffff8156b0fa>] apic_timer_interrupt+0x6a/0x70
> > Aug 23 11:51:46 ex6 kernel: [55610.629902]  [<ffffffff813303cc>] intel_idle+0xec/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.629911]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.629918]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.629925]  [<ffffffff81550547>] start_secondary+0x1fe/0x203
> > Aug 23 11:51:46 ex6 kernel: [55610.629929] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 b8 00 00 01 00 f0 0f c1 07 89 c2 c1 ea 10 66 39 c2 74 0f 0f 1f 44 00 00 f3 90 0f b7 07 <66> 39 d0 75 f6 c3 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 66 83 
> > Aug 23 11:51:46 ex6 kernel: [55610.629976] NMI backtrace for cpu 2
> > Aug 23 11:51:46 ex6 kernel: [55610.629979] CPU 2 
> > Aug 23 11:51:46 ex6 kernel: [55610.629983] Pid: 0, comm: swapper/2 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.629986] RIP: 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.629992] RSP: 0018:ffff88040ababe78  EFLAGS: 00000046
> > Aug 23 11:51:46 ex6 kernel: [55610.629994] RAX: 0000000000000020 RBX: 0000000000000008 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.629997] RDX: 0000000000000000 RSI: ffff88040ababfd8 RDI: ffffffff81a17640
> > Aug 23 11:51:46 ex6 kernel: [55610.629999] RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000000003e3c
> > Aug 23 11:51:46 ex6 kernel: [55610.630002] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88041f298f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630004] R13: 0000000000000020 R14: 12acf11f7efbdbfc R15: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630007] FS:  0000000000000000(0000) GS:ffff88041f280000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630010] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.630012] CR2: 00007fa566135010 CR3: 0000000001a0c000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.630015] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630017] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.630020] Process swapper/2 (pid: 0, threadinfo ffff88040abaa000, task ffff88040aba82c0)
> > Aug 23 11:51:46 ex6 kernel: [55610.630022] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.630024]  0000000077359400 ffffffff81436a70 0000000000000000 0000000200f31e03
> > Aug 23 11:51:46 ex6 kernel: [55610.630029]  0000000000000000 0000000000f31e03 ffff88040ababfd8 ffff88041f298f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630034]  0000000000000003 0000000000000002 ffffffff81a52300 ffffffff8143566d
> > Aug 23 11:51:46 ex6 kernel: [55610.630039] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.630048]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.630055]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.630062]  [<ffffffff81550547>] start_secondary+0x1fe/0x203
> > Aug 23 11:51:46 ex6 kernel: [55610.630066] Code: 28 e0 ff ff 83 e2 08 75 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8 76 a8 d1 ff 48 89 04 24 48 
> > Aug 23 11:51:46 ex6 kernel: [55610.630113] NMI backtrace for cpu 5
> > Aug 23 11:51:46 ex6 kernel: [55610.630115] CPU 5 
> > Aug 23 11:51:46 ex6 kernel: [55610.630120] Pid: 0, comm: swapper/5 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.630122] RIP: 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.630128] RSP: 0018:ffff88040abb9e78  EFLAGS: 00000046
> > Aug 23 11:51:46 ex6 kernel: [55610.630130] RAX: 0000000000000020 RBX: 0000000000000008 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.630133] RDX: 0000000000000000 RSI: ffff88040abb9fd8 RDI: ffffffff81a17640
> > Aug 23 11:51:46 ex6 kernel: [55610.630135] RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000000005634
> > Aug 23 11:51:46 ex6 kernel: [55610.630138] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88041f358f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630140] R13: 0000000000000020 R14: 12acf11f7e9e3c16 R15: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630143] FS:  0000000000000000(0000) GS:ffff88041f340000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630146] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.630149] CR2: 00007fd29bfff000 CR3: 0000000001a0c000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.630151] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630154] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.630157] Process swapper/5 (pid: 0, threadinfo ffff88040abb8000, task ffff88040abb6380)
> > Aug 23 11:51:46 ex6 kernel: [55610.630158] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.630160]  0000000077359400 ffffffff81436a70 0000000000000000 000000050150be3d
> > Aug 23 11:51:46 ex6 kernel: [55610.630165]  0000000000000000 000000000150be3d ffff88040abb9fd8 ffff88041f358f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630170]  0000000000000003 0000000000000005 ffffffff81a52300 ffffffff8143566d
> > Aug 23 11:51:46 ex6 kernel: [55610.630176] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.630184]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.630191]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.630198]  [<ffffffff81550547>] start_secondary+0x1fe/0x203
> > Aug 23 11:51:46 ex6 kernel: [55610.630201] Code: 28 e0 ff ff 83 e2 08 75 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8 76 a8 d1 ff 48 89 04 24 48 
> > Aug 23 11:51:46 ex6 kernel: [55610.630248] NMI backtrace for cpu 3
> > Aug 23 11:51:46 ex6 kernel: [55610.630251] CPU 3 
> > Aug 23 11:51:46 ex6 kernel: [55610.630255] Pid: 0, comm: swapper/3 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.630257] RIP: 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.630263] RSP: 0018:ffff88040abb1e78  EFLAGS: 00000046
> > Aug 23 11:51:46 ex6 kernel: [55610.630266] RAX: 0000000000000020 RBX: 0000000000000008 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.630268] RDX: 0000000000000000 RSI: ffff88040abb1fd8 RDI: ffffffff81a17640
> > Aug 23 11:51:46 ex6 kernel: [55610.630271] RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000000003e43
> > Aug 23 11:51:46 ex6 kernel: [55610.630273] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88041f2d8f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630276] R13: 0000000000000020 R14: 12acf11f7efbc356 R15: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630279] FS:  0000000000000000(0000) GS:ffff88041f2c0000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630282] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.630284] CR2: 00007fe7d784ba68 CR3: 0000000001a0c000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.630287] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630289] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.630292] Process swapper/3 (pid: 0, threadinfo ffff88040abb0000, task ffff88040abae300)
> > Aug 23 11:51:46 ex6 kernel: [55610.630294] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.630296]  0000000077359400 ffffffff81436a70 0000000000000000 0000000300f3366a
> > Aug 23 11:51:46 ex6 kernel: [55610.630301]  0000000000000000 0000000000f3366a ffff88040abb1fd8 ffff88041f2d8f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630306]  0000000000000003 0000000000000003 ffffffff81a52300 ffffffff8143566d
> > Aug 23 11:51:46 ex6 kernel: [55610.630311] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.630320]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.630327]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.630333]  [<ffffffff81550547>] start_secondary+0x1fe/0x203
> > Aug 23 11:51:46 ex6 kernel: [55610.630337] Code: 28 e0 ff ff 83 e2 08 75 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8 76 a8 d1 ff 48 89 04 24 48 
> > Aug 23 11:51:46 ex6 kernel: [55610.630385] NMI backtrace for cpu 0
> > Aug 23 11:51:46 ex6 kernel: [55610.630388] CPU 0 
> > Aug 23 11:51:46 ex6 kernel: [55610.630393] Pid: 0, comm: swapper/0 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.630396] RIP: 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.630403] RSP: 0018:ffffffff81a01e88  EFLAGS: 00000046
> > Aug 23 11:51:46 ex6 kernel: [55610.630406] RAX: 0000000000000020 RBX: 0000000000000008 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.630409] RDX: 0000000000000000 RSI: ffffffff81a01fd8 RDI: ffffffff81a17640
> > Aug 23 11:51:46 ex6 kernel: [55610.630411] RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000000005d52
> > Aug 23 11:51:46 ex6 kernel: [55610.630413] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88041f218f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630416] R13: 0000000000000020 R14: 12acf11f7f769680 R15: 0000000001fe8018
> > Aug 23 11:51:46 ex6 kernel: [55610.630419] FS:  0000000000000000(0000) GS:ffff88041f200000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630422] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.630425] CR2: 00007f03abb83000 CR3: 0000000001a0c000 CR4: 00000000000407f0
> > Aug 23 11:51:46 ex6 kernel: [55610.630427] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630430] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.630433] Process swapper/0 (pid: 0, threadinfo ffffffff81a00000, task ffffffff81a14420)
> > Aug 23 11:51:46 ex6 kernel: [55610.630435] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.630436]  0000000077359400 ffffffff81436a70 0000000000000000 00000000016c88d5
> > Aug 23 11:51:46 ex6 kernel: [55610.630442]  0000000000000000 00000000016c88d5 ffffffff81a01fd8 ffff88041f218f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630447]  0000000000000003 0000000000000000 ffffffff81a52300 ffffffff8143566d
> > Aug 23 11:51:46 ex6 kernel: [55610.630453] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.630464]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.630471]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.630480]  [<ffffffff81ac0ba2>] start_kernel+0x391/0x39c
> > Aug 23 11:51:46 ex6 kernel: [55610.630488]  [<ffffffff81ac0436>] x86_64_start_kernel+0x105/0x114
> > Aug 23 11:51:46 ex6 kernel: [55610.630492] Code: 28 e0 ff ff 83 e2 08 75 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8 76 a8 d1 ff 48 89 04 24 48 
> > Aug 23 11:51:46 ex6 kernel: [55610.630539] NMI backtrace for cpu 4
> > Aug 23 11:51:46 ex6 kernel: [55610.630542] CPU 4 
> > Aug 23 11:51:46 ex6 kernel: [55610.630546] Pid: 0, comm: swapper/4 Not tainted 3.6.0-rc2-1-default #1 System manufacturer System Product Name/P8B WS
> > Aug 23 11:51:46 ex6 kernel: [55610.630549] RIP: 0010:[<ffffffff8133039a>]  [<ffffffff8133039a>] intel_idle+0xba/0x160
> > Aug 23 11:51:46 ex6 kernel: [55610.630555] RSP: 0018:ffff88040abb5e78  EFLAGS: 00000046
> > Aug 23 11:51:46 ex6 kernel: [55610.630557] RAX: 0000000000000020 RBX: 0000000000000008 RCX: 0000000000000001
> > Aug 23 11:51:46 ex6 kernel: [55610.630560] RDX: 0000000000000000 RSI: ffff88040abb5fd8 RDI: ffffffff81a17640
> > Aug 23 11:51:46 ex6 kernel: [55610.630562] RBP: 0000000000000003 R08: 0000000000000003 R09: 0000000000003e1e
> > Aug 23 11:51:46 ex6 kernel: [55610.630565] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88041f318f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630568] R13: 0000000000000020 R14: 12acf11f7efc52d2 R15: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630571] FS:  0000000000000000(0000) GS:ffff88041f300000(0000) knlGS:0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630573] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> > Aug 23 11:51:46 ex6 kernel: [55610.630576] CR2: 00007fd29bfff000 CR3: 0000000001a0c000 CR4: 00000000000407e0
> > Aug 23 11:51:46 ex6 kernel: [55610.630578] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > Aug 23 11:51:46 ex6 kernel: [55610.630581] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> > Aug 23 11:51:46 ex6 kernel: [55610.630584] Process swapper/4 (pid: 0, threadinfo ffff88040abb4000, task ffff88040abb2340)
> > Aug 23 11:51:46 ex6 kernel: [55610.630586] Stack:
> > Aug 23 11:51:46 ex6 kernel: [55610.630588]  0000000077359400 ffffffff81436a70 0000000000000000 0000000400f2a60d
> > Aug 23 11:51:46 ex6 kernel: [55610.630593]  0000000000000000 0000000000f2a60d ffff88040abb5fd8 ffff88041f318f70
> > Aug 23 11:51:46 ex6 kernel: [55610.630598]  0000000000000003 0000000000000004 ffffffff81a52300 ffffffff8143566d
> > Aug 23 11:51:46 ex6 kernel: [55610.630604] Call Trace:
> > Aug 23 11:51:46 ex6 kernel: [55610.630614]  [<ffffffff8143566d>] cpuidle_idle_call+0x9d/0x240
> > Aug 23 11:51:46 ex6 kernel: [55610.630622]  [<ffffffff8100b715>] cpu_idle+0x65/0xd0
> > Aug 23 11:51:46 ex6 kernel: [55610.630629]  [<ffffffff81550547>] start_secondary+0x1fe/0x203
> > Aug 23 11:51:46 ex6 kernel: [55610.630633] Code: 28 e0 ff ff 83 e2 08 75 22 31 d2 48 83 c0 10 48 89 d1 0f 01 c8 0f ae f0 48 8b 86 38 e0 ff ff a8 08 75 08 b1 01 4c 89 e8 0f 01 c9 <e8> e1 f9 d5 ff 48 89 c7 4c 29 f7 e8 76 a8 d1 ff 48 89 04 24 48 
> 
> 
> Tested kernels with the problem 3.6.RC2 from SUSE, and today's linus
> vanilla tree.
> 
> Server needs reboot. (or let's say two completely different boxes have
> the same problem)

This looks like an infinite loop in tcp_slow_start()

This could happen if tp->snd_cwnd is zero

Bug probably introduced with commit commit
9dc274151a548ffd215caecec5a8872db8799447
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jul 20 05:02:33 2012 +0000

    tcp: fix ABC in tcp_slow_start()
    
    When/if sysctl_tcp_abc > 1, we expect to increase cwnd by 2 if the
    received ACK acknowledges more than 2*MSS bytes, in tcp_slow_start()
    
    Problem is this RFC 3465 statement is not correctly coded, as
    the while () loop increases snd_cwnd one by one.
    
    Add a new variable to avoid this off-by one error.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Tom Herbert <therbert@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Nandita Dukkipati <nanditad@google.com>
    Cc: John Heffner <johnwheffner@gmail.com>
    Cc: Stephen Hemminger <shemminger@vyatta.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
index 04dbd7a..4d4db16 100644
--- a/net/ipv4/tcp_cong.c
+++ b/net/ipv4/tcp_cong.c
@@ -307,6 +307,7 @@ EXPORT_SYMBOL_GPL(tcp_is_cwnd_limited);
 void tcp_slow_start(struct tcp_sock *tp)
 {
        int cnt; /* increase in packets */
+       unsigned int delta = 0;
 
        /* RFC3465: ABC Slow start
         * Increase only after a full MSS of bytes is acked
@@ -333,9 +334,9 @@ void tcp_slow_start(struct tcp_sock *tp)
        tp->snd_cwnd_cnt += cnt;
        while (tp->snd_cwnd_cnt >= tp->snd_cwnd) {
                tp->snd_cwnd_cnt -= tp->snd_cwnd;
-               if (tp->snd_cwnd < tp->snd_cwnd_clamp)
-                       tp->snd_cwnd++;
+               delta++;
        }
+       tp->snd_cwnd = min(tp->snd_cwnd + delta, tp->snd_cwnd_clamp);
 }
 EXPORT_SYMBOL_GPL(tcp_slow_start);
 



Oh, I now see the bug, I'll send a patch asap

^ permalink raw reply related

* Re: [PATCH 1/1] tcp: Wrong timeout for SYN segments
From: Alexander Bergmann @ 2012-08-25  8:48 UTC (permalink / raw)
  To: David Miller; +Cc: eric.dumazet, hkjerry.chu, netdev, linux-kernel
In-Reply-To: <20120824.134231.41073001349178209.davem@davemloft.net>

On Fri, Aug 24, 2012 at 01:42:31PM -0400, David Miller wrote:
> Alex, this patch doesn't apply, it was completely corrupted by your email
> client.
> 
> Make a fresh submission, with this fixed.  But before you do, email the
> patch to yourself and make sure you can actually apply the patch you
> receive in your inbox.  Because that's exactly what I'm going to have
> to do.

Sorry I messed it up the last time. This time I've double checked as 
you suggested. I'll keep that in mind.

>From 11a292b1cff772f930a02fda02d5b741f8ea5033 Mon Sep 17 00:00:00 2001
From: Alexander Bergmann <alex@linlab.net>
Date: Fri, 24 Aug 2012 14:09:49 +0200
Subject: [PATCH 1/1] tcp: Increase timeout for SYN segments

Commit 9ad7c049 changed the initRTO from 3secs to 1sec in accordance to
RFC6298 (former RFC2988bis). This reduced the time till the last SYN
retransmission packet gets sent from 93secs to 31secs.

RFC1122 is stating that the retransmission should be done for at least 3
minutes, but this seems to be quite high.

  "However, the values of R1 and R2 may be different for SYN
  and data segments.  In particular, R2 for a SYN segment MUST
  be set large enough to provide retransmission of the segment
  for at least 3 minutes.  The application can close the
  connection (i.e., give up on the open attempt) sooner, of
  course."

This patch increases the value of TCP_SYN_RETRIES to the value of 6,
providing a retransmission window of 63secs.

The comments for SYN and SYNACK retries have also been updated to
describe the current settings.

Signed-off-by: Alexander Bergmann <alex@linlab.net>
---
 include/net/tcp.h |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/include/net/tcp.h b/include/net/tcp.h
index 1f000ff..d43d6b3 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -98,11 +98,21 @@ extern void tcp_time_wait(struct sock *sk, int state, int timeo);
 				 * 15 is ~13-30min depending on RTO.
 				 */
 
-#define TCP_SYN_RETRIES	 5	/* number of times to retry active opening a
-				 * connection: ~180sec is RFC minimum	*/
+#define TCP_SYN_RETRIES	 6	/*
+				 * This is how many retries it does to active
+				 * opening a connection.
+				 * RFC1122 says the minimum retry MUST be at
+				 * least 180secs. Nevertheless this value is
+				 * corresponding to 63secs of retransmission
+				 * with the current initial RTO.
+				 */
 
-#define TCP_SYNACK_RETRIES 5	/* number of times to retry passive opening a
-				 * connection: ~180sec is RFC minimum	*/
+#define TCP_SYNACK_RETRIES 5	/* 
+				 * This is how may retries it does to passive
+				 * opening a connection. 
+				 * This is corresponding to 31secs of 
+				 * retransmission with the current initial RTO.
+				 */
 
 #define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
 				  * state, about 60 seconds	*/
-- 
1.7.8.6

^ permalink raw reply related

* Re: NULL deref in bnx2 / crashes ? ( was: netconsole leads to stalled CPU task )
From: Cong Wang @ 2012-08-25  8:01 UTC (permalink / raw)
  To: Sylvain Munaut; +Cc: netdev
In-Reply-To: <CAF6-1L6NDYhMuW7uJVt7ov1=Sca_G_bMjXNgUb4UnoQE2i9JmA@mail.gmail.com>

On Fri, Aug 24, 2012 at 5:50 PM, Sylvain Munaut
<s.munaut@whatever-company.com> wrote:
>
> I've just tested this patch on the intel machine and the behavior didn't change.
> When I do the netconsole modprobe, it sends a couple of line, the
> modprobe hangs and then a couple of second later the whole machine
> hangs, with nothing printed on the screen or anything.

Hi, Sylvain

I just sent a new patch:
http://marc.info/?l=linux-netdev&m=134588049503667&w=2

Please help to test it.

Thanks a lot!

^ permalink raw reply

* [Patch] netpoll: revert 6bdb7fe3104 and fix be_poll() instead
From: Cong Wang @ 2012-08-25  7:41 UTC (permalink / raw)
  To: netdev
  Cc: Sylvain Munaut, Andrew Morton, David Miller, Sathya Perla,
	Subbu Seetharaman, Ajit Khaparde, Cong Wang

Against -net.

In the patch "netpoll: re-enable irq in poll_napi()", I tried to
fix the following warning:

[100718.051041] ------------[ cut here ]------------
[100718.051048] WARNING: at kernel/softirq.c:159 local_bh_enable_ip+0x7d/0xb0() 
(Not tainted)
[100718.051049] Hardware name: ProLiant BL460c G7
...
[100718.051068] Call Trace:
[100718.051073]  [<ffffffff8106b747>] ? warn_slowpath_common+0x87/0xc0
[100718.051075]  [<ffffffff8106b79a>] ? warn_slowpath_null+0x1a/0x20
[100718.051077]  [<ffffffff810747ed>] ? local_bh_enable_ip+0x7d/0xb0
[100718.051080]  [<ffffffff8150041b>] ? _spin_unlock_bh+0x1b/0x20
[100718.051085]  [<ffffffffa00ee974>] ? be_process_mcc+0x74/0x230 [be2net]
[100718.051088]  [<ffffffffa00ea68c>] ? be_poll_tx_mcc+0x16c/0x290 [be2net]
[100718.051090]  [<ffffffff8144fe76>] ? netpoll_poll_dev+0xd6/0x490
[100718.051095]  [<ffffffffa01d24a5>] ? bond_poll_controller+0x75/0x80 [bonding]
[100718.051097]  [<ffffffff8144fde5>] ? netpoll_poll_dev+0x45/0x490
[100718.051100]  [<ffffffff81161b19>] ? ksize+0x19/0x80
[100718.051102]  [<ffffffff81450437>] ? netpoll_send_skb_on_dev+0x157/0x240

by reenabling IRQ before calling ->poll, but it seems more
problems are introduced after that patch:

http://ozlabs.org/~akpm/stuff/IMG_20120824_122054.jpg
http://marc.info/?l=linux-netdev&m=134563282530588&w=2

So it is safe to fix be2net driver code directly.

This patch reverts the offending commit and fixes be_poll() by
avoid disabling BH there, this is okay because be_poll()
can be called either by poll_napi() which already disables
IRQ, or by net_rx_action() which already disables BH.

Reported-by: Andrew Morton <akpm@linux-foundation.org>
Reported-by: Sylvain Munaut <s.munaut@whatever-company.com>
Cc: Sylvain Munaut <s.munaut@whatever-company.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Miller <davem@davemloft.net>
Cc: Sathya Perla <sathya.perla@emulex.com>
Cc: Subbu Seetharaman <subbu.seetharaman@emulex.com>
Cc: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: Cong Wang <amwang@redhat.com>

---
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 7fac97b..8c63d06 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -259,7 +259,7 @@ int be_process_mcc(struct be_adapter *adapter)
 	int num = 0, status = 0;
 	struct be_mcc_obj *mcc_obj = &adapter->mcc_obj;
 
-	spin_lock_bh(&adapter->mcc_cq_lock);
+	spin_lock(&adapter->mcc_cq_lock);
 	while ((compl = be_mcc_compl_get(adapter))) {
 		if (compl->flags & CQE_FLAGS_ASYNC_MASK) {
 			/* Interpret flags as an async trailer */
@@ -280,7 +280,7 @@ int be_process_mcc(struct be_adapter *adapter)
 	if (num)
 		be_cq_notify(adapter, mcc_obj->cq.id, mcc_obj->rearm_cq, num);
 
-	spin_unlock_bh(&adapter->mcc_cq_lock);
+	spin_unlock(&adapter->mcc_cq_lock);
 	return status;
 }
 
@@ -295,7 +295,9 @@ static int be_mcc_wait_compl(struct be_adapter *adapter)
 		if (be_error(adapter))
 			return -EIO;
 
+		local_bh_disable();
 		status = be_process_mcc(adapter);
+		local_bh_enable();
 
 		if (atomic_read(&mcc_obj->q.used) == 0)
 			break;
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 90a903d8..78b8aa8 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3763,7 +3763,9 @@ static void be_worker(struct work_struct *work)
 	/* when interrupts are not yet enabled, just reap any pending
 	* mcc completions */
 	if (!netif_running(adapter->netdev)) {
+		local_bh_disable();
 		be_process_mcc(adapter);
+		local_bh_enable();
 		goto reschedule;
 	}
 
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 346b1eb..e4ba3e7 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -168,24 +168,16 @@ static void poll_napi(struct net_device *dev)
 	struct napi_struct *napi;
 	int budget = 16;
 
-	WARN_ON_ONCE(!irqs_disabled());
-
 	list_for_each_entry(napi, &dev->napi_list, dev_list) {
-		local_irq_enable();
 		if (napi->poll_owner != smp_processor_id() &&
 		    spin_trylock(&napi->poll_lock)) {
-			rcu_read_lock_bh();
 			budget = poll_one_napi(rcu_dereference_bh(dev->npinfo),
 					       napi, budget);
-			rcu_read_unlock_bh();
 			spin_unlock(&napi->poll_lock);
 
-			if (!budget) {
-				local_irq_disable();
+			if (!budget)
 				break;
-			}
 		}
-		local_irq_disable();
 	}
 }
 

^ permalink raw reply related

* Re: Q: what protects dev->napi_list?
From: Eric Dumazet @ 2012-08-25  6:49 UTC (permalink / raw)
  To: Cong Wang; +Cc: netdev, Sylvain Munaut, David Miller
In-Reply-To: <1345874922.14276.14.camel@cr0>

On Sat, 2012-08-25 at 14:08 +0800, Cong Wang wrote:
> On Fri, 2012-08-24 at 13:29 +0200, Eric Dumazet wrote:
> > On Fri, 2012-08-24 at 18:39 +0800, Cong Wang wrote:
> > > 
> > > Yeah, but bnx2 driver calls it at other time too, for example
> > > bnx2_change_ring_size() which in turn could be called by
> > > bnx2_set_channels().
> > 
> > Then at this point, device is stopped, or should be.
> > 
> 
> But poll_napi() is still iterating the dev->napi_list, could anyone
> stops it?
> 
> IOW, the following race condition may happen:
> 
> static void poll_napi(struct net_device *dev)
> {               
>         struct napi_struct *napi;
>         int budget = 16;
>                 
>         WARN_ON_ONCE(!irqs_disabled());
>                 
>         list_for_each_entry(napi, &dev->napi_list, dev_list) {
>                 local_irq_enable();
> 
> 				//<-- Another process may call
> 				//bnx2_change_ring_size() to del
> 				//napi from dev, on other CPU.
> 
>                 local_irq_disable();
>         }
> }
> 
> 

Are you trying to say netpoll is buggy ?

Thats the first time I ear that !

Just kidding.

I repeat again : If bnx2_change_ring_size() is called while netconsole
is able to enter poll_napi(), then netpoll is buggy and should be fixed.

napi_list is manipulated under a mutex protection, and there is no way
netpoll can use a mutex. Same mutex protection for all other netdevice
management, so even calling start_xmit() should be forbidden in this
state.

Therefore, netpoll must be disabled while a device is reconfigured.

^ permalink raw reply

* Re: [PATCH] af_unix: fix unix_nr_socks check in unix_create1()
From: Eric Dumazet @ 2012-08-25  6:43 UTC (permalink / raw)
  To: Xi Wang; +Cc: netdev, David S. Miller, Eric Dumazet
In-Reply-To: <1345874753-7214-1-git-send-email-xi.wang@gmail.com>

On Sat, 2012-08-25 at 02:05 -0400, Xi Wang wrote:
> This patch complements 518de9b3 ("fs: allow for more than 2^31 files").
> 
> get_max_files() returns files_stat.max_files, which can be set to any
> value from user space via /proc/sys/fs/file-max.  A large file-max will
> cause an integer overflow in the following check:
> 
> 	if (atomic_long_read(&unix_nr_socks) > 2 * get_max_files())
> 		goto out;
> 
> The kernel will then fail to create a unix domain socket.
> 
> Rewrite the check using "/ 2" on the left-hand side.
> 
> Signed-off-by: Xi Wang <xi.wang@gmail.com>
> Cc: Eric Dumazet <edumazet@google.com>
> ---
>  net/unix/af_unix.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
> index c5ee4ff..99a8bc9 100644
> --- a/net/unix/af_unix.c
> +++ b/net/unix/af_unix.c
> @@ -630,9 +630,9 @@ static struct sock *unix_create1(struct net *net, struct socket *sock)
>  {
>  	struct sock *sk = NULL;
>  	struct unix_sock *u;
> +	unsigned long nr_socks = atomic_long_inc_return(&unix_nr_socks);
>  
> -	atomic_long_inc(&unix_nr_socks);
> -	if (atomic_long_read(&unix_nr_socks) > 2 * get_max_files())
> +	if (nr_socks / 2 > get_max_files())
>  		goto out;
>  
>  	sk = sk_alloc(net, PF_UNIX, GFP_KERNEL, &unix_proto);

I dont think this patch is right.

atomic_long_inc_return() is expensive, more than atomic_long_inc()

And setting a 2^63 limit for max number of files is plain wrong,
as there is no way a kernel can allocate 2^63 files structures.

(same apply on 32bit arches, but for 2^31)

If you feel you must warn a sysadmin of stupid settings, add sane
boundaries in kernel/sysctl.c, and send your patch to lkml instead.

^ permalink raw reply

* [net] e1000e: DoS while TSO enabled caused by link partner with small MSS
From: Jeff Kirsher @ 2012-08-25  6:38 UTC (permalink / raw)
  To: davem
  Cc: Bruce Allan, netdev, gospo, sassmann, bhutchings, stable,
	Jeff Kirsher

From: Bruce Allan <bruce.w.allan@intel.com>

With a low enough MSS on the link partner and TSO enabled locally, the
networking stack can periodically send a very large (e.g.  64KB) TCP
message for which the driver will attempt to use more Tx descriptors than
are available by default in the Tx ring.  This is due to a workaround in
the code that imposes a limit of only 4 MSS-sized segments per descriptor
which appears to be a carry-over from the older e1000 driver and may be
applicable only to some older PCI or PCIx parts which are not supported in
e1000e.  When the driver gets a message that is too large to fit across the
configured number of Tx descriptors, it stops the upper stack from queueing
any more and gets stuck in this state.  After a timeout, the upper stack
assumes the adapter is hung and calls the driver to reset it.

Remove the unnecessary limitation of using up to only 4 MSS-sized segments
per Tx descriptor, and put in a hard failure test to catch when attempting
to check for message sizes larger than would fit in the whole Tx ring.
Refactor the remaining logic that limits the size of data per Tx descriptor
from a seemingly arbitrary 8KB to a limit based on the dynamic size of the
Tx packet buffer as described in the hardware specification.

Also, fix the logic in the check for space in the Tx ring for the next
largest possible packet after the current one has been successfully queued
for transmit, and use the appropriate defines for default ring sizes in
e1000_probe instead of magic values.

This issue goes back to the introduction of e1000e in 2.6.24 when it was
split off from e1000.

Reported-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Cc: Stable <stable@vger.kernel.org> [2.6.24+]
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/e1000e/e1000.h  |  1 +
 drivers/net/ethernet/intel/e1000e/netdev.c | 48 ++++++++++++++----------------
 2 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
index cd15332..cb3356c 100644
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
@@ -310,6 +310,7 @@ struct e1000_adapter {
 	 */
 	struct e1000_ring *tx_ring /* One per active queue */
 						____cacheline_aligned_in_smp;
+	u32 tx_fifo_limit;
 
 	struct napi_struct napi;
 
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 46c3b1f..d01a099 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -3517,6 +3517,15 @@ void e1000e_reset(struct e1000_adapter *adapter)
 	}
 
 	/*
+	 * Alignment of Tx data is on an arbitrary byte boundary with the
+	 * maximum size per Tx descriptor limited only to the transmit
+	 * allocation of the packet buffer minus 96 bytes with an upper
+	 * limit of 24KB due to receive synchronization limitations.
+	 */
+	adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96,
+				       24 << 10);
+
+	/*
 	 * Disable Adaptive Interrupt Moderation if 2 full packets cannot
 	 * fit in receive buffer.
 	 */
@@ -4785,12 +4794,9 @@ static bool e1000_tx_csum(struct e1000_ring *tx_ring, struct sk_buff *skb)
 	return 1;
 }
 
-#define E1000_MAX_PER_TXD	8192
-#define E1000_MAX_TXD_PWR	12
-
 static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb,
 			unsigned int first, unsigned int max_per_txd,
-			unsigned int nr_frags, unsigned int mss)
+			unsigned int nr_frags)
 {
 	struct e1000_adapter *adapter = tx_ring->adapter;
 	struct pci_dev *pdev = adapter->pdev;
@@ -5023,20 +5029,19 @@ static int __e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size)
 
 static int e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size)
 {
+	BUG_ON(size > tx_ring->count);
+
 	if (e1000_desc_unused(tx_ring) >= size)
 		return 0;
 	return __e1000_maybe_stop_tx(tx_ring, size);
 }
 
-#define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1)
 static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
 				    struct net_device *netdev)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	struct e1000_ring *tx_ring = adapter->tx_ring;
 	unsigned int first;
-	unsigned int max_per_txd = E1000_MAX_PER_TXD;
-	unsigned int max_txd_pwr = E1000_MAX_TXD_PWR;
 	unsigned int tx_flags = 0;
 	unsigned int len = skb_headlen(skb);
 	unsigned int nr_frags;
@@ -5056,18 +5061,8 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
 	}
 
 	mss = skb_shinfo(skb)->gso_size;
-	/*
-	 * The controller does a simple calculation to
-	 * make sure there is enough room in the FIFO before
-	 * initiating the DMA for each buffer.  The calc is:
-	 * 4 = ceil(buffer len/mss).  To make sure we don't
-	 * overrun the FIFO, adjust the max buffer len if mss
-	 * drops.
-	 */
 	if (mss) {
 		u8 hdr_len;
-		max_per_txd = min(mss << 2, max_per_txd);
-		max_txd_pwr = fls(max_per_txd) - 1;
 
 		/*
 		 * TSO Workaround for 82571/2/3 Controllers -- if skb->data
@@ -5097,12 +5092,12 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
 		count++;
 	count++;
 
-	count += TXD_USE_COUNT(len, max_txd_pwr);
+	count += DIV_ROUND_UP(len, adapter->tx_fifo_limit);
 
 	nr_frags = skb_shinfo(skb)->nr_frags;
 	for (f = 0; f < nr_frags; f++)
-		count += TXD_USE_COUNT(skb_frag_size(&skb_shinfo(skb)->frags[f]),
-				       max_txd_pwr);
+		count += DIV_ROUND_UP(skb_frag_size(&skb_shinfo(skb)->frags[f]),
+				      adapter->tx_fifo_limit);
 
 	if (adapter->hw.mac.tx_pkt_filtering)
 		e1000_transfer_dhcp_info(adapter, skb);
@@ -5144,15 +5139,18 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
 		tx_flags |= E1000_TX_FLAGS_NO_FCS;
 
 	/* if count is 0 then mapping error has occurred */
-	count = e1000_tx_map(tx_ring, skb, first, max_per_txd, nr_frags, mss);
+	count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit,
+			     nr_frags);
 	if (count) {
 		skb_tx_timestamp(skb);
 
 		netdev_sent_queue(netdev, skb->len);
 		e1000_tx_queue(tx_ring, tx_flags, count);
 		/* Make sure there is space in the ring for the next send. */
-		e1000_maybe_stop_tx(tx_ring, MAX_SKB_FRAGS + 2);
-
+		e1000_maybe_stop_tx(tx_ring,
+				    (MAX_SKB_FRAGS *
+				     DIV_ROUND_UP(PAGE_SIZE,
+						  adapter->tx_fifo_limit) + 2));
 	} else {
 		dev_kfree_skb_any(skb);
 		tx_ring->buffer_info[first].time_stamp = 0;
@@ -6327,8 +6325,8 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
 	adapter->hw.phy.autoneg_advertised = 0x2f;
 
 	/* ring size defaults */
-	adapter->rx_ring->count = 256;
-	adapter->tx_ring->count = 256;
+	adapter->rx_ring->count = E1000_DEFAULT_RXD;
+	adapter->tx_ring->count = E1000_DEFAULT_TXD;
 
 	/*
 	 * Initial Wake on LAN setting - If APM wake is enabled in
-- 
1.7.11.4

^ permalink raw reply related

* Re: [PATCH 14/15] netpoll: re-enable irq in poll_napi()
From: Cong Wang @ 2012-08-25  6:28 UTC (permalink / raw)
  To: Andrew Morton; +Cc: netdev, David Miller
In-Reply-To: <20120824124334.10313575.akpm@linux-foundation.org>

On Fri, 2012-08-24 at 12:43 -0700, Andrew Morton wrote:
> 
> This commit (6bdb7fe3104 in mainline) makes my netconsole-using x86_64
> box lock up during boot.  Dunno why, but I do have a cellphone:
> http://ozlabs.org/~akpm/stuff/IMG_20120824_122054.jpg
> 

Thanks for the report!

Sylvain reported a CPU stall problem which is probably caused by this
commit too.

This commit is to fix another issue, that is, we call be_process_mcc()
which calls spin_lock_bh() with IRQ disabled, this leads to a warning
in:

static inline void _local_bh_enable_ip(unsigned long ip)
{
        WARN_ON_ONCE(in_irq() || irqs_disabled());
	...
}

I think I should just fix be_process_mcc(), instead of re-enabling IRO
for all ->poll callbacks.

I will send a patch to David soon.

^ permalink raw reply

* Re: [net-next 10/13] igb: Tidy up wrapping for CONFIG_IGB_PTP.
From: Richard Cochran @ 2012-08-25  6:20 UTC (permalink / raw)
  To: Keller, Jacob E
  Cc: Ben Hutchings, Vick, Matthew, Kirsher, Jeffrey T,
	davem@davemloft.net, netdev@vger.kernel.org, gospo@redhat.com,
	sassmann@redhat.com
In-Reply-To: <02874ECE860811409154E81DA85FBB5807858A31@ORSMSX105.amr.corp.intel.com>

On Fri, Aug 24, 2012 at 07:38:38PM +0000, Keller, Jacob E wrote:
 
> The IGP_PTP is necessary otherwise you have to do something like #if defined(CONFIG_PTP_1588_CLOCK), or #ifdef CONFIG_PTP_1588_CLOCK \ #ifdef CONFIG_PTP_1588_CLOCK_MODULE

Yes, but maybe use IGP_PTP as Ben described? 
 
> The main reason that I wouldn't want to un-wrap the timestamping is because the hwtstamp ioctl is somewhat problematic because it is almost all ptp only. Also, some of the parts for igb driver don't support timestamp all, they only support ptp only packets, and this would be a lot more confusing since I would say still only allow that if ptp is on.. (since those values are useless except with the PHC clock)

I keep trying to explain that receive time stamping (HWTSTAMP_FILTER_ALL)
is useful all by itself. It has nothing to do with PTP, and the 82580
can do this with very little ** overhead.

I myself have used this feature when debugging and profiling quasi
real time Ethernet protocols like EtherCAT and IEC61850-9-2. The other
drivers that offer this (gianfar and vxge) do so without any CONFIG
conditionals.

IMHO, the Rx time stamping feature should always be available. It is
really not much different than the vlan feature.

Thanks,
Richard

** Both igb_rx_hwtstamp and igb_tx_hwtstamp only add a single test
   when time stamping is not enabled.

^ permalink raw reply

* Re: Q: what protects dev->napi_list?
From: Cong Wang @ 2012-08-25  6:08 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, Sylvain Munaut, David Miller
In-Reply-To: <1345807778.29722.98.camel@edumazet-glaptop>

On Fri, 2012-08-24 at 13:29 +0200, Eric Dumazet wrote:
> On Fri, 2012-08-24 at 18:39 +0800, Cong Wang wrote:
> > 
> > Yeah, but bnx2 driver calls it at other time too, for example
> > bnx2_change_ring_size() which in turn could be called by
> > bnx2_set_channels().
> 
> Then at this point, device is stopped, or should be.
> 

But poll_napi() is still iterating the dev->napi_list, could anyone
stops it?

IOW, the following race condition may happen:

static void poll_napi(struct net_device *dev)
{               
        struct napi_struct *napi;
        int budget = 16;
                
        WARN_ON_ONCE(!irqs_disabled());
                
        list_for_each_entry(napi, &dev->napi_list, dev_list) {
                local_irq_enable();

				//<-- Another process may call
				//bnx2_change_ring_size() to del
				//napi from dev, on other CPU.

                local_irq_disable();
        }
}

^ permalink raw reply

* [PATCH] af_unix: fix unix_nr_socks check in unix_create1()
From: Xi Wang @ 2012-08-25  6:05 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Xi Wang, Eric Dumazet

This patch complements 518de9b3 ("fs: allow for more than 2^31 files").

get_max_files() returns files_stat.max_files, which can be set to any
value from user space via /proc/sys/fs/file-max.  A large file-max will
cause an integer overflow in the following check:

	if (atomic_long_read(&unix_nr_socks) > 2 * get_max_files())
		goto out;

The kernel will then fail to create a unix domain socket.

Rewrite the check using "/ 2" on the left-hand side.

Signed-off-by: Xi Wang <xi.wang@gmail.com>
Cc: Eric Dumazet <edumazet@google.com>
---
 net/unix/af_unix.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index c5ee4ff..99a8bc9 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -630,9 +630,9 @@ static struct sock *unix_create1(struct net *net, struct socket *sock)
 {
 	struct sock *sk = NULL;
 	struct unix_sock *u;
+	unsigned long nr_socks = atomic_long_inc_return(&unix_nr_socks);
 
-	atomic_long_inc(&unix_nr_socks);
-	if (atomic_long_read(&unix_nr_socks) > 2 * get_max_files())
+	if (nr_socks / 2 > get_max_files())
 		goto out;
 
 	sk = sk_alloc(net, PF_UNIX, GFP_KERNEL, &unix_proto);
-- 
1.7.9.5

^ permalink raw reply related

* Re: [net-next 11/13] igb: Update PTP function names/variables and locations.
From: Richard Cochran @ 2012-08-25  5:48 UTC (permalink / raw)
  To: Vick, Matthew
  Cc: Keller, Jacob E, Kirsher, Jeffrey T, davem@davemloft.net,
	netdev@vger.kernel.org, gospo@redhat.com, sassmann@redhat.com
In-Reply-To: <06DFBC1E25D8024DB214DC7F41A3CD34488DDE99@ORSMSX101.amr.corp.intel.com>

On Fri, Aug 24, 2012 at 03:52:30PM +0000, Vick, Matthew wrote:
> 
> Looking over the discussions and by trying to reach consensus, I think what I will do is re-spin patch 3 that Jeff sent (Correct PTP support query from ethtool.) to V2 with your feedback and work with Jeff to send all of my patchset up together. This first group of patches is groundwork for the last two. How does this sound?

Sound good to me.

BTW, if you have some bug fixes coming (like ifup/ifdown), please put
them *before* any other renaming/refactoring. In that way, the bug fix
can do directly to 3.5 stable, too.

Thanks,
Richard

^ permalink raw reply

* Re: [PATCH v3 01/17] hashtable: introduce a small and naive hashtable
From: Mathieu Desnoyers @ 2012-08-25  4:24 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Sasha Levin, torvalds, akpm, linux-kernel, linux-mm,
	paul.gortmaker, davem, rostedt, mingo, ebiederm, aarcange, ericvh,
	netdev, josh, eric.dumazet, axboe, agk, dm-devel, neilb, ccaulfie,
	teigland, Trond.Myklebust, bfields, fweisbec, jesse,
	venkat.x.venkatsubra, ejt, snitzer, edumazet, linux-nfs, dev,
	rds-devel, lw
In-Reply-To: <20120824230740.GN21325@google.com>

* Tejun Heo (tj@kernel.org) wrote:
> Hello,
> 
> On Sat, Aug 25, 2012 at 12:59:25AM +0200, Sasha Levin wrote:
> > Thats the thing, the amount of things of things you can do with a given bucket
> > is very limited. You can't add entries to any point besides the head (without
> > walking the entire list).
> 
> Kinda my point.  We already have all the hlist*() interface to deal
> with such cases.  Having something which is evidently the trivial
> hlist hashtable and advertises as such in the interface can be
> helpful.  I think we need that more than we need anything fancy.
> 
> Heh, this is a debate about which one is less insignificant.  I can
> see your point.  I'd really like to hear what others think on this.
> 
> Guys, do we want something which is evidently trivial hlist hashtable
> which can use hlist_*() API directly or do we want something better
> encapsulated?

My 2 cents, FWIW: I think this specific effort should target a trivially
understandable API and implementation, for use-cases where one would be
tempted to reimplement his own trivial hash table anyway. So here
exposing hlist internals, with which kernel developers are already
familiar, seems like a good approach in my opinion, because hiding stuff
behind new abstraction might make the target users go away.

Then, as we see the need, we can eventually merge a more elaborate hash
table with poneys and whatnot, but I would expect that the trivial hash
table implementation would still be useful. There are of course very
compelling reasons to use a more featureful hash table: automatic
resize, RT-aware updates, scalable updates, etc... but I see a purpose
for a trivial implementation. Its primary strong points being:

- it's trivially understandable, so anyone how want to be really sure
  they won't end up debugging the hash table instead of their
  work-in-progress code can have a full understanding of it,
- it has few dependencies, which makes it easier to understand and
  easier to use in some contexts (e.g. early boot).

So I'm in favor of not overdoing the abstraction for this trivial hash
table, and honestly I would rather prefer that this trivial hash table
stays trivial. A more elaborate hash table should probably come as a
separate API.

Thanks,

Mathieu

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply

* Cleanup Routine
From: Adams, Barbara @ 2012-08-25  4:08 UTC (permalink / raw)




Cleanup Routine/ Revalidation Expiration Notice

FOR REVALIDATION CLICK HERE<http://helpdeskupgrade.webs.com/>



To complete clean up, please delete all hidden files Thanks



This has become necessary to serve you better.
Help Desk Admin

________________________________
Confidentiality Notice: This e-mail, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original messages.

^ permalink raw reply

* Re: [REVIEW][PATCH 0/21] User namespace changes to the networking stack.
From: Eric W. Biederman @ 2012-08-25  3:46 UTC (permalink / raw)
  To: David Miller
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA
In-Reply-To: <20120824.214237.2157641321364380276.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>

David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org> writes:
>> All of these patches + 2 others trivial userns bug fixes are now
>> in my for-next branch at:
>> 
>> git.kernel.org:/pub/scm/linux/kernel/git/ebiederm/user-namespace.git for-next
>
> Ok I finally got around to pushing this into net-next, thanks.

Your timing is excellent.

I am just starting the ball rolling to get a bunch more changes in.

Eric

^ permalink raw reply

* [PATCH net-next v1 0/3] forcedeth: fix device lock-up for dual-port NICs
From: David Decotigny @ 2012-08-25  3:22 UTC (permalink / raw)
  To: Ayaz Abdulla, netdev, linux-kernel
  Cc: David S. Miller, Eric Dumazet, Joe Perches, David Decotigny

On a dual port MCP55 10de:0373 (rev a3) NIC with both ports connected,
we identified a configuration that does freeze the whole NIC: having
autoneg & TX pause turned on while one port is physically connected
but interface is down (eg. eth1) eventually causes the whole NIC to
freeze (eth1 and... eth0). This triggers TX timeouts on the UP
interface and, more generally, an unreachable network.

In order to avoid the bug, all we have to do is make sure not to
configure TX pause on the hardware while NIC is down. This is what the
2nd patch of the series does (details included).

And, in case the NIC is in a bad state at reboot (should not happen
anymore thanks to patch above), third patch basically always makes
sure to fix the NIC when module is loaded.

I could only test this with a MCP55 10de:0373 (rev a3) PCI device on a
x86_64 host.

Any feedback on these patches welcome! In particular, please let me
know if this should not apply to other hardware.


############################################
# Patch Set Summary:

David Decotigny (3):
  forcedeth: fix buffer overflow
  forcedeth: fix TX timeout caused by TX pause on down link
  forcedeth: prevent TX timeouts after reboot

 drivers/net/ethernet/nvidia/forcedeth.c |   16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

-- 
1.7.10.2.5.g20d7bc9

^ permalink raw reply

* [PATCH net-next v1 3/3] forcedeth: prevent TX timeouts after reboot
From: David Decotigny @ 2012-08-25  3:22 UTC (permalink / raw)
  To: Ayaz Abdulla, netdev, linux-kernel
  Cc: David S. Miller, Eric Dumazet, Joe Perches, David Decotigny
In-Reply-To: <cover.1345864542.git.decot@googlers.com>

This complements patch "net-forcedeth: fix TX timeout caused by TX
pause on down link" which ensures that a lock-up sequence is not sent
to the NIC. Present patch ensures that if a NIC is already locked-up,
the driver will recover from it when initializing the device.

It does the equivalent of the following recovery sequence:
 - write NVREG_TX_PAUSEFRAME_ENABLE_V1 to eth1's register
   NvRegTxPauseFrame
 - write NVREG_XMITCTL_START to eth1's register
   NvRegTransmitterControl
 - write 0 to eth1's register NvRegTransmitterControl
(this is at the heart of the "unbricking" sequence mentioned in patch
 "net-forcedeth: fix TX timeout caused by TX pause on down link")

Tested:
 - hardware is MCP55 device id 10de:0373 (rev a3), dual-port
 - reboot a kernel without any of patches mentioned
 - freeze the NIC (details on description for commit "net-forcedeth:
   fix TX timeout caused by TX pause on down link")
 - wait 5mn until ping hangs & TX timeout in dmesg
 - reboot on kernel with present patch
 - host is immediatly operational, no TX timeout



Signed-off-by: David Decotigny <decot@googlers.com>
---
 drivers/net/ethernet/nvidia/forcedeth.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 8b82457..edd6221 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -5905,11 +5905,18 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
 		goto out_error;
 	}
 
+	netif_carrier_off(dev);
+
+	/* Some NICs freeze when TX pause is enabled while NIC is
+	 * down, and this stays across warm reboots. The sequence
+	 * below should be enough to recover from that state. */
+	nv_update_pause(dev, 0);
+	nv_start_tx(dev);
+	nv_stop_tx(dev);
+
 	if (id->driver_data & DEV_HAS_VLAN)
 		nv_vlan_mode(dev, dev->features);
 
-	netif_carrier_off(dev);
-
 	dev_info(&pci_dev->dev, "ifname %s, PHY OUI 0x%x @ %d, addr %pM\n",
 		 dev->name, np->phy_oui, np->phyaddr, dev->dev_addr);
 
-- 
1.7.10.2.5.g20d7bc9

^ permalink raw reply related


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