lkml.org 
[lkml]   [2004]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [patch] Real-Time Preemption, -RT-2.6.9-mm1-V0.6.8

* Mark_H_Johnson@raytheon.com <Mark_H_Johnson@raytheon.com> wrote:

> This build appears to run OK and then in the middle of the real time
> tests stops doing useful work (during network test).

weird, the deadlock detector did not trigger, although it is a clear
circular deadlock:

R ksoftirqd/0/ 3 [dffe8020, 105] blocked on: [dfcafc20] {r:0,a:-1,&((sk)->sk_lock.slock)}
.. held by: rcp/ 4791 [d84bd910, 118]
... acquired at: ip_send_reply+0x12b/0x250

D rcp/ 4791 [d84bd910, 118] blocked on: [c03cb900] {r:0,a:-1,ptype_lock}
.. held by: ksoftirqd/0/ 3 [dffe8020, 105]
... acquired at: netif_receive_skb+0xae/0x330

i.e. ksoftirqd blocked on rcp and rcp blocked on ksoftirqd, cleanly
deadlocking each other.

anyway, does the patch below, ontop of -V0.6.8, fix this type of hang?

Ingo

--- linux/net/core/dev.c.orig
+++ linux/net/core/dev.c
@@ -1916,7 +1916,9 @@ static void net_rx_action(struct softirq
dev = list_entry(queue->poll_list.next,
struct net_device, poll_list);

+ rcu_read_lock_read(&ptype_lock);
if (dev->quota <= 0 || dev->poll(dev, &budget)) {
+ rcu_read_unlock_read(&ptype_lock);
local_irq_disable();
list_del(&dev->poll_list);
list_add_tail(&dev->poll_list, &queue->poll_list);
@@ -1926,6 +1928,7 @@ static void net_rx_action(struct softirq
dev->quota = dev->weight;
} else {
dev_put(dev);
+ rcu_read_unlock_read(&ptype_lock);
local_irq_disable();
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 14:07    [W:0.056 / U:0.072 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site