All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 net-next] net: systemport: Support 64bit statistics
@ 2017-08-03 23:07 Jianming.qiao
  2017-08-03 23:16 ` Stephen Hemminger
  2017-08-07  4:21 ` David Miller
  0 siblings, 2 replies; 6+ messages in thread
From: Jianming.qiao @ 2017-08-03 23:07 UTC (permalink / raw)
  To: f.fainelli, davem, eric.dumazet, netdev

When using Broadcom Systemport device in 32bit Platform, ifconfig can
only report up to 4G tx,rx status, which will be wrapped to 0 when the
number of incoming or outgoing packets exceeds 4G, only taking
around 2 hours in busy network environment (such as streaming).
Therefore, it makes hard for network diagnostic tool to get reliable
statistical result, so the patch is used to add 64bit support for
Broadcom Systemport device in 32bit Platform.

This patch provides 64bit statistics capability on both ethtool and ifconfig.

Signed-off-by: Jianming.qiao <kiki-good@hotmail.com>
---
 drivers/net/ethernet/broadcom/bcmsysport.c | 78 +++++++++++++++++++++++-------
 drivers/net/ethernet/broadcom/bcmsysport.h | 21 ++++++++
 2 files changed, 82 insertions(+), 17 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index 5333601..bf9ca3c 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -201,10 +201,10 @@ static int bcm_sysport_set_features(struct net_device *dev,
  */
 static const struct bcm_sysport_stats bcm_sysport_gstrings_stats[] = {
 	/* general stats */
-	STAT_NETDEV(rx_packets),
-	STAT_NETDEV(tx_packets),
-	STAT_NETDEV(rx_bytes),
-	STAT_NETDEV(tx_bytes),
+	STAT_NETDEV64(rx_packets),
+	STAT_NETDEV64(tx_packets),
+	STAT_NETDEV64(rx_bytes),
+	STAT_NETDEV64(tx_bytes),
 	STAT_NETDEV(rx_errors),
 	STAT_NETDEV(tx_errors),
 	STAT_NETDEV(rx_dropped),
@@ -316,6 +316,7 @@ static inline bool bcm_sysport_lite_stat_valid(enum bcm_sysport_stat_type type)
 {
 	switch (type) {
 	case BCM_SYSPORT_STAT_NETDEV:
+	case BCM_SYSPORT_STAT_NETDEV64:
 	case BCM_SYSPORT_STAT_RXCHK:
 	case BCM_SYSPORT_STAT_RBUF:
 	case BCM_SYSPORT_STAT_SOFT:
@@ -398,6 +399,7 @@ static void bcm_sysport_update_mib_counters(struct bcm_sysport_priv *priv)
 		s = &bcm_sysport_gstrings_stats[i];
 		switch (s->type) {
 		case BCM_SYSPORT_STAT_NETDEV:
+		case BCM_SYSPORT_STAT_NETDEV64:
 		case BCM_SYSPORT_STAT_SOFT:
 			continue;
 		case BCM_SYSPORT_STAT_MIB_RX:
@@ -434,7 +436,10 @@ static void bcm_sysport_get_stats(struct net_device *dev,
 				  struct ethtool_stats *stats, u64 *data)
 {
 	struct bcm_sysport_priv *priv = netdev_priv(dev);
+	struct bcm_sysport_stats64 *stats64 = &priv->stats64;
+	struct u64_stats_sync *syncp = &priv->syncp;
 	struct bcm_sysport_tx_ring *ring;
+	unsigned int start;
 	int i, j;
 
 	if (netif_running(dev))
@@ -447,10 +452,20 @@ static void bcm_sysport_get_stats(struct net_device *dev,
 		s = &bcm_sysport_gstrings_stats[i];
 		if (s->type == BCM_SYSPORT_STAT_NETDEV)
 			p = (char *)&dev->stats;
+		else if (s->type == BCM_SYSPORT_STAT_NETDEV64)
+			p = (char *)stats64;
 		else
 			p = (char *)priv;
+
 		p += s->stat_offset;
-		data[j] = *(unsigned long *)p;
+
+		if (s->stat_sizeof == sizeof(u64))
+			do {
+				start = u64_stats_fetch_begin_irq(syncp);
+				data[i] = *(u64 *)p;
+			} while (u64_stats_fetch_retry_irq(syncp, start));
+		else
+			data[i] = *(u32 *)p;
 		j++;
 	}
 
@@ -662,6 +677,7 @@ static int bcm_sysport_alloc_rx_bufs(struct bcm_sysport_priv *priv)
 static unsigned int bcm_sysport_desc_rx(struct bcm_sysport_priv *priv,
 					unsigned int budget)
 {
+	struct bcm_sysport_stats64 *stats64 = &priv->stats64;
 	struct net_device *ndev = priv->netdev;
 	unsigned int processed = 0, to_process;
 	struct bcm_sysport_cb *cb;
@@ -765,6 +781,10 @@ static unsigned int bcm_sysport_desc_rx(struct bcm_sysport_priv *priv,
 		skb->protocol = eth_type_trans(skb, ndev);
 		ndev->stats.rx_packets++;
 		ndev->stats.rx_bytes += len;
+		u64_stats_update_begin(&priv->syncp);
+		stats64->rx_packets++;
+		stats64->rx_bytes += len;
+		u64_stats_update_end(&priv->syncp);
 
 		napi_gro_receive(&priv->napi, skb);
 next:
@@ -787,17 +807,15 @@ static void bcm_sysport_tx_reclaim_one(struct bcm_sysport_tx_ring *ring,
 	struct device *kdev = &priv->pdev->dev;
 
 	if (cb->skb) {
-		ring->bytes += cb->skb->len;
 		*bytes_compl += cb->skb->len;
 		dma_unmap_single(kdev, dma_unmap_addr(cb, dma_addr),
 				 dma_unmap_len(cb, dma_len),
 				 DMA_TO_DEVICE);
-		ring->packets++;
 		(*pkts_compl)++;
 		bcm_sysport_free_cb(cb);
 	/* SKB fragment */
 	} else if (dma_unmap_addr(cb, dma_addr)) {
-		ring->bytes += dma_unmap_len(cb, dma_len);
+		*bytes_compl += dma_unmap_len(cb, dma_len);
 		dma_unmap_page(kdev, dma_unmap_addr(cb, dma_addr),
 			       dma_unmap_len(cb, dma_len), DMA_TO_DEVICE);
 		dma_unmap_addr_set(cb, dma_addr, 0);
@@ -808,9 +826,9 @@ static void bcm_sysport_tx_reclaim_one(struct bcm_sysport_tx_ring *ring,
 static unsigned int __bcm_sysport_tx_reclaim(struct bcm_sysport_priv *priv,
 					     struct bcm_sysport_tx_ring *ring)
 {
-	struct net_device *ndev = priv->netdev;
 	unsigned int c_index, last_c_index, last_tx_cn, num_tx_cbs;
 	unsigned int pkts_compl = 0, bytes_compl = 0;
+	struct net_device *ndev = priv->netdev;
 	struct bcm_sysport_cb *cb;
 	u32 hw_ind;
 
@@ -849,6 +867,11 @@ static unsigned int __bcm_sysport_tx_reclaim(struct bcm_sysport_priv *priv,
 		last_c_index &= (num_tx_cbs - 1);
 	}
 
+	u64_stats_update_begin(&priv->syncp);
+	ring->packets += pkts_compl;
+	ring->bytes += bytes_compl;
+	u64_stats_update_end(&priv->syncp);
+
 	ring->c_index = c_index;
 
 	netif_dbg(priv, tx_done, ndev,
@@ -1671,22 +1694,41 @@ static int bcm_sysport_change_mac(struct net_device *dev, void *p)
 	return 0;
 }
 
-static struct net_device_stats *bcm_sysport_get_nstats(struct net_device *dev)
+static void bcm_sysport_get_stats64(struct net_device *dev,
+				    struct rtnl_link_stats64 *stats)
 {
 	struct bcm_sysport_priv *priv = netdev_priv(dev);
-	unsigned long tx_bytes = 0, tx_packets = 0;
+	struct bcm_sysport_stats64 *stats64 = &priv->stats64;
 	struct bcm_sysport_tx_ring *ring;
+	u64 tx_packets = 0, tx_bytes = 0;
+	unsigned int start;
 	unsigned int q;
 
+	netdev_stats_to_stats64(stats, &dev->stats);
+
 	for (q = 0; q < dev->num_tx_queues; q++) {
 		ring = &priv->tx_rings[q];
-		tx_bytes += ring->bytes;
-		tx_packets += ring->packets;
+		do {
+			start = u64_stats_fetch_begin_irq(&priv->syncp);
+			tx_bytes = ring->bytes;
+			tx_packets = ring->packets;
+		} while (u64_stats_fetch_retry_irq(&priv->syncp, start));
+
+		stats->tx_bytes += tx_bytes;
+		stats->tx_packets += tx_packets;
 	}
 
-	dev->stats.tx_bytes = tx_bytes;
-	dev->stats.tx_packets = tx_packets;
-	return &dev->stats;
+	/* lockless update tx_bytes and tx_packets */
+	u64_stats_update_begin(&priv->syncp);
+	stats64->tx_bytes = stats->tx_bytes;
+	stats64->tx_packets = stats->tx_packets;
+	u64_stats_update_end(&priv->syncp);
+
+	do {
+		start = u64_stats_fetch_begin_irq(&priv->syncp);
+		stats->rx_packets = stats64->rx_packets;
+		stats->rx_bytes = stats64->rx_bytes;
+	} while (u64_stats_fetch_retry_irq(&priv->syncp, start));
 }
 
 static void bcm_sysport_netif_start(struct net_device *dev)
@@ -1950,7 +1992,7 @@ static int bcm_sysport_stop(struct net_device *dev)
 #ifdef CONFIG_NET_POLL_CONTROLLER
 	.ndo_poll_controller	= bcm_sysport_poll_controller,
 #endif
-	.ndo_get_stats		= bcm_sysport_get_nstats,
+	.ndo_get_stats64	= bcm_sysport_get_stats64,
 };
 
 #define REV_FMT	"v%2x.%02x"
@@ -2098,6 +2140,8 @@ static int bcm_sysport_probe(struct platform_device *pdev)
 	/* libphy will adjust the link state accordingly */
 	netif_carrier_off(dev);
 
+	u64_stats_init(&priv->syncp);
+
 	ret = register_netdev(dev);
 	if (ret) {
 		dev_err(&pdev->dev, "failed to register net_device\n");
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.h b/drivers/net/ethernet/broadcom/bcmsysport.h
index 77a51c1..80b4fff 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.h
+++ b/drivers/net/ethernet/broadcom/bcmsysport.h
@@ -603,6 +603,7 @@ struct bcm_sysport_mib {
 /* HW maintains a large list of counters */
 enum bcm_sysport_stat_type {
 	BCM_SYSPORT_STAT_NETDEV = -1,
+	BCM_SYSPORT_STAT_NETDEV64,
 	BCM_SYSPORT_STAT_MIB_RX,
 	BCM_SYSPORT_STAT_MIB_TX,
 	BCM_SYSPORT_STAT_RUNT,
@@ -619,6 +620,13 @@ enum bcm_sysport_stat_type {
 	.type = BCM_SYSPORT_STAT_NETDEV, \
 }
 
+#define STAT_NETDEV64(m) { \
+	.stat_string = __stringify(m), \
+	.stat_sizeof = sizeof(((struct bcm_sysport_stats64 *)0)->m), \
+	.stat_offset = offsetof(struct bcm_sysport_stats64, m), \
+	.type = BCM_SYSPORT_STAT_NETDEV64, \
+}
+
 #define STAT_MIB(str, m, _type) { \
 	.stat_string = str, \
 	.stat_sizeof = sizeof(((struct bcm_sysport_priv *)0)->m), \
@@ -659,6 +667,14 @@ struct bcm_sysport_stats {
 	u16 reg_offset;
 };
 
+struct bcm_sysport_stats64 {
+	/* 64bit stats on 32bit/64bit Machine */
+	u64	rx_packets;
+	u64	rx_bytes;
+	u64	tx_packets;
+	u64	tx_bytes;
+};
+
 /* Software house keeping helper structure */
 struct bcm_sysport_cb {
 	struct sk_buff	*skb;		/* SKB for RX packets */
@@ -743,5 +759,10 @@ struct bcm_sysport_priv {
 
 	/* Ethtool */
 	u32			msg_enable;
+
+	struct bcm_sysport_stats64	stats64;
+
+	/* For atomic update generic 64bit value on 32bit Machine */
+	struct u64_stats_sync	syncp;
 };
 #endif /* __BCM_SYSPORT_H */
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 net-next] net: systemport: Support 64bit statistics
  2017-08-03 23:07 [PATCH v7 net-next] net: systemport: Support 64bit statistics Jianming.qiao
@ 2017-08-03 23:16 ` Stephen Hemminger
  2017-08-03 23:20   ` Florian Fainelli
  2017-08-07  4:21 ` David Miller
  1 sibling, 1 reply; 6+ messages in thread
From: Stephen Hemminger @ 2017-08-03 23:16 UTC (permalink / raw)
  To: Jianming.qiao; +Cc: f.fainelli, davem, eric.dumazet, netdev

On Fri,  4 Aug 2017 00:07:45 +0100
"Jianming.qiao" <jqiaoulk@gmail.com> wrote:

>  static const struct bcm_sysport_stats bcm_sysport_gstrings_stats[] = {
>  	/* general stats */
> -	STAT_NETDEV(rx_packets),
> -	STAT_NETDEV(tx_packets),
> -	STAT_NETDEV(rx_bytes),
> -	STAT_NETDEV(tx_bytes),
> +	STAT_NETDEV64(rx_packets),
> +	STAT_NETDEV64(tx_packets),
> +	STAT_NETDEV64(rx_bytes),
> +	STAT_NETDEV64(tx_bytes),
>  	STAT_NETDEV(rx_errors),

Please don't duplicate regular statistics (ie netdev) into ethtool.
It is a needless duplication.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 net-next] net: systemport: Support 64bit statistics
  2017-08-03 23:16 ` Stephen Hemminger
@ 2017-08-03 23:20   ` Florian Fainelli
  2017-08-03 23:45     ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2017-08-03 23:20 UTC (permalink / raw)
  To: Stephen Hemminger, Jianming.qiao; +Cc: davem, eric.dumazet, netdev

On 08/03/2017 04:16 PM, Stephen Hemminger wrote:
> On Fri,  4 Aug 2017 00:07:45 +0100
> "Jianming.qiao" <jqiaoulk@gmail.com> wrote:
> 
>>  static const struct bcm_sysport_stats bcm_sysport_gstrings_stats[] = {
>>  	/* general stats */
>> -	STAT_NETDEV(rx_packets),
>> -	STAT_NETDEV(tx_packets),
>> -	STAT_NETDEV(rx_bytes),
>> -	STAT_NETDEV(tx_bytes),
>> +	STAT_NETDEV64(rx_packets),
>> +	STAT_NETDEV64(tx_packets),
>> +	STAT_NETDEV64(rx_bytes),
>> +	STAT_NETDEV64(tx_bytes),
>>  	STAT_NETDEV(rx_errors),
> 
> Please don't duplicate regular statistics (ie netdev) into ethtool.
> It is a needless duplication.

Agreed, but these are there already and this driver's ethtool::get_stats
is an user ABI of some sort, is not it?
-- 
Florian

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 net-next] net: systemport: Support 64bit statistics
  2017-08-03 23:20   ` Florian Fainelli
@ 2017-08-03 23:45     ` David Miller
  0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2017-08-03 23:45 UTC (permalink / raw)
  To: f.fainelli; +Cc: stephen, jqiaoulk, eric.dumazet, netdev

From: Florian Fainelli <f.fainelli@gmail.com>
Date: Thu, 3 Aug 2017 16:20:04 -0700

> On 08/03/2017 04:16 PM, Stephen Hemminger wrote:
>> On Fri,  4 Aug 2017 00:07:45 +0100
>> "Jianming.qiao" <jqiaoulk@gmail.com> wrote:
>> 
>>>  static const struct bcm_sysport_stats bcm_sysport_gstrings_stats[] = {
>>>  	/* general stats */
>>> -	STAT_NETDEV(rx_packets),
>>> -	STAT_NETDEV(tx_packets),
>>> -	STAT_NETDEV(rx_bytes),
>>> -	STAT_NETDEV(tx_bytes),
>>> +	STAT_NETDEV64(rx_packets),
>>> +	STAT_NETDEV64(tx_packets),
>>> +	STAT_NETDEV64(rx_bytes),
>>> +	STAT_NETDEV64(tx_bytes),
>>>  	STAT_NETDEV(rx_errors),
>> 
>> Please don't duplicate regular statistics (ie netdev) into ethtool.
>> It is a needless duplication.
> 
> Agreed, but these are there already and this driver's ethtool::get_stats
> is an user ABI of some sort, is not it?

Agreed, they have to stay at this point.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 net-next] net: systemport: Support 64bit statistics
  2017-08-03 23:07 [PATCH v7 net-next] net: systemport: Support 64bit statistics Jianming.qiao
  2017-08-03 23:16 ` Stephen Hemminger
@ 2017-08-07  4:21 ` David Miller
  2017-08-18 23:27   ` Florian Fainelli
  1 sibling, 1 reply; 6+ messages in thread
From: David Miller @ 2017-08-07  4:21 UTC (permalink / raw)
  To: jqiaoulk; +Cc: f.fainelli, eric.dumazet, netdev

From: "Jianming.qiao" <jqiaoulk@gmail.com>
Date: Fri,  4 Aug 2017 00:07:45 +0100

> When using Broadcom Systemport device in 32bit Platform, ifconfig can
> only report up to 4G tx,rx status, which will be wrapped to 0 when the
> number of incoming or outgoing packets exceeds 4G, only taking
> around 2 hours in busy network environment (such as streaming).
> Therefore, it makes hard for network diagnostic tool to get reliable
> statistical result, so the patch is used to add 64bit support for
> Broadcom Systemport device in 32bit Platform.
> 
> This patch provides 64bit statistics capability on both ethtool and ifconfig.
> 
> Signed-off-by: Jianming.qiao <kiki-good@hotmail.com>

Applied, thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v7 net-next] net: systemport: Support 64bit statistics
  2017-08-07  4:21 ` David Miller
@ 2017-08-18 23:27   ` Florian Fainelli
  0 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2017-08-18 23:27 UTC (permalink / raw)
  To: David Miller, jqiaoulk; +Cc: eric.dumazet, netdev

On 08/06/2017 09:21 PM, David Miller wrote:
> From: "Jianming.qiao" <jqiaoulk@gmail.com>
> Date: Fri,  4 Aug 2017 00:07:45 +0100
> 
>> When using Broadcom Systemport device in 32bit Platform, ifconfig can
>> only report up to 4G tx,rx status, which will be wrapped to 0 when the
>> number of incoming or outgoing packets exceeds 4G, only taking
>> around 2 hours in busy network environment (such as streaming).
>> Therefore, it makes hard for network diagnostic tool to get reliable
>> statistical result, so the patch is used to add 64bit support for
>> Broadcom Systemport device in 32bit Platform.
>>
>> This patch provides 64bit statistics capability on both ethtool and ifconfig.
>>
>> Signed-off-by: Jianming.qiao <kiki-good@hotmail.com>
> 
> Applied, thanks.
> 

Kiki, I don't know how you tested that, but I keep hitting deadlocks
with that patch, I don't have time to debug this at the moment and I
still need to add the debugging that Eric suggested in another, but it
does not take long to reproduce:

# ethtool -K eth0 rx on
Cannot get device udp-fragmentation-offload settings: Operation not
supported


^C

[  283.457657] INFO: rcu_sched self-detected stall on CPU
[  283.458658] INFO: rcu_sched detected stalls on CPUs/tasks:
[  283.458669]  0-...: (21000 ticks this GP) idle=eba/140000000000001/0
softirq=3159/3159 fqs=5246
[  283.458671]  (detected by 3, t=21002 jiffies, g=736, c=735, q=52)
[  283.458682] Sending NMI from CPU 3 to CPUs 0:
[  283.487596]  0-...: (21000 ticks this GP) idle=eba/140000000000001/0
softirq=3159/3159 fqs=5247
[  283.496399]   (t=21031 jiffies g=736 c=735 q=52)
[  293.459258] rcu_sched kthread starved for 9244 jiffies! g736 c735
f0x0 RCU_GP_DOING_FQS(4) ->state=0x0
[  293.459259] NMI backtrace for cpu 0
[  293.459266] CPU: 0 PID: 1489 Comm: ethtool Not tainted
4.13.0-rc5-01160-g6e42b0004c6c-dirty #13
[  293.459269] Hardware name: Broadcom STB (Flattened Device Tree)
[  293.459301] [<c0211720>] (unwind_backtrace) from [<c020c50c>]
(show_stack+0x10/0x14)
[  293.459313] [<c020c50c>] (show_stack) from [<c0979460>]
(dump_stack+0x84/0x98)
[  293.459327] [<c0979460>] (dump_stack) from [<c097f678>]
(nmi_cpu_backtrace+0x11c/0x120)
[  293.459336] [<c097f678>] (nmi_cpu_backtrace) from [<c097f754>]
(nmi_trigger_cpumask_backtrace+0xd8/0x124)
[  293.459347] [<c097f754>] (nmi_trigger_cpumask_backtrace) from
[<c0283c88>] (rcu_dump_cpu_stacks+0xa0/0xd0)
[  293.459355] [<c0283c88>] (rcu_dump_cpu_stacks) from [<c028337c>]
(rcu_check_callbacks+0x7b4/0x930)
[  293.459364] [<c028337c>] (rcu_check_callbacks) from [<c02888cc>]
(update_process_times+0x34/0x5c)
[  293.459374] [<c02888cc>] (update_process_times) from [<c029a744>]
(tick_sched_timer+0x40/0x9c)
[  293.459383] [<c029a744>] (tick_sched_timer) from [<c02899cc>]
(__hrtimer_run_queues+0x168/0x328)
[  293.459389] [<c02899cc>] (__hrtimer_run_queues) from [<c0289dc4>]
(hrtimer_interrupt+0xa4/0x1f8)
[  293.459400] [<c0289dc4>] (hrtimer_interrupt) from [<c07edcb4>]
(arch_timer_handler_virt+0x28/0x30)
[  293.459409] [<c07edcb4>] (arch_timer_handler_virt) from [<c02728fc>]
(handle_percpu_devid_irq+0x88/0x23c)
[  293.459418] [<c02728fc>] (handle_percpu_devid_irq) from [<c026d64c>]
(generic_handle_irq+0x24/0x34)
[  293.459426] [<c026d64c>] (generic_handle_irq) from [<c026db8c>]
(__handle_domain_irq+0x5c/0xb4)
[  293.459433] [<c026db8c>] (__handle_domain_irq) from [<c020148c>]
(gic_handle_irq+0x48/0x8c)
[  293.459438] [<c020148c>] (gic_handle_irq) from [<c020d1b8>]
(__irq_svc+0x58/0x74)
[  293.459442] Exception stack(0xee3d1be0 to 0xee3d1c28)
[  293.459447] 1be0: edbe11a4 00000008 00681daf edbd6010 ee392800
edbe10e4 edbe10e4 ee392800
[  293.459451] 1c00: 00000000 c1803c48 00000000 00000002 00000000
ee3d1c30 00000000 c06e00a8
[  293.459454] 1c20: 20070013 ffffffff
[  293.459463] [<c020d1b8>] (__irq_svc) from [<c06e00a8>]
(bcm_sysport_get_stats64+0x94/0x104)
[  293.459474] [<c06e00a8>] (bcm_sysport_get_stats64) from [<c084a408>]
(dev_get_stats+0x38/0xac)
[  293.459485] [<c084a408>] (dev_get_stats) from [<c0863fc8>]
(rtnl_fill_stats+0x30/0x118)
[  293.459493] [<c0863fc8>] (rtnl_fill_stats) from [<c08645e8>]
(rtnl_fill_ifinfo+0x538/0xdc8)
[  293.459502] [<c08645e8>] (rtnl_fill_ifinfo) from [<c0868e30>]
(rtmsg_ifinfo_build_skb+0x6c/0xd8)
[  293.459507] [<c0868e30>] (rtmsg_ifinfo_build_skb) from [<c0868eb0>]
(rtmsg_ifinfo_event.part.6+0x14/0x44)
[  293.459512] [<c0868eb0>] (rtmsg_ifinfo_event.part.6) from
[<c0868f78>] (rtnetlink_event+0x70/0x7c)
[  293.459520] [<c0868f78>] (rtnetlink_event) from [<c0241778>]
(notifier_call_chain+0x44/0x84)
[  293.459527] [<c0241778>] (notifier_call_chain) from [<c0241918>]
(raw_notifier_call_chain+0x18/0x20)
[  293.459535] [<c0241918>] (raw_notifier_call_chain) from [<c084aef4>]
(netdev_features_change+0x28/0x44)
[  293.459542] [<c084aef4>] (netdev_features_change) from [<c08593e4>]
(dev_ethtool+0x404/0x28e0)
[  293.459551] [<c08593e4>] (dev_ethtool) from [<c0871910>]
(dev_ioctl+0x5c0/0x8a4)
[  293.459561] [<c0871910>] (dev_ioctl) from [<c0355a5c>]
(do_vfs_ioctl+0xac/0x7e4)
[  293.459569] [<c0355a5c>] (do_vfs_ioctl) from [<c03561c8>]
(SyS_ioctl+0x34/0x5c)
[  293.459576] [<c03561c8>] (SyS_ioctl) from [<c0208540>]
(ret_fast_syscall+0x0/0x34)
[  293.776281] rcu_sched       S    0     8      2 0x00000000
[  293.781794] [<c098eda4>] (__schedule) from [<c098f2f0>]
(schedule+0x44/0x9c)
[  293.788863] [<c098f2f0>] (schedule) from [<c0992984>]
(schedule_timeout+0x1c8/0x36c)
[  293.796627] [<c0992984>] (schedule_timeout) from [<c0281d8c>]
(rcu_gp_kthread+0x6bc/0xf7c)
[  293.804919] [<c0281d8c>] (rcu_gp_kthread) from [<c0240060>]
(kthread+0x128/0x158)
[  293.812423] [<c0240060>] (kthread) from [<c02085e8>]
(ret_from_fork+0x14/0x2c)

[  346.462654] INFO: rcu_sched self-detected stall on CPU
[  346.463655] INFO: rcu_sched detected stalls on CPUs/tasks:
[  346.463664]  0-...: (74005 ticks this GP) idle=eba/140000000000001/0
softirq=3159/3159 fqs=18231
[  346.463666]  (detected by 1, t=84007 jiffies, g=736, c=735, q=64)
[  346.463673] Sending NMI from CPU 1 to CPUs 0:
[  346.492658]  0-...: (74005 ticks this GP) idle=eba/140000000000001/0
softirq=3159/3159 fqs=18231
[  346.501547]   (t=84044 jiffies g=736 c=735 q=64)

-- 
Florian

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-08-18 23:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-03 23:07 [PATCH v7 net-next] net: systemport: Support 64bit statistics Jianming.qiao
2017-08-03 23:16 ` Stephen Hemminger
2017-08-03 23:20   ` Florian Fainelli
2017-08-03 23:45     ` David Miller
2017-08-07  4:21 ` David Miller
2017-08-18 23:27   ` Florian Fainelli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.