From: Andrea Arcangeli <andrea@suse.de>
To: "David S. Miller" <davem@redhat.com>
Cc: mathijs@knoware.nl, jgarzik@mandrakesoft.com,
linux-kernel@vger.kernel.org, torvalds@transmeta.com
Subject: Re: [PATCH] fix loop with disabled tasklets
Date: Sat, 10 Nov 2001 16:03:01 +0100 [thread overview]
Message-ID: <20011110160301.B1381@athlon.random> (raw)
In-Reply-To: <20011110122141.B2C68231A4@brand.mmohlmann.demon.nl> <20011110.053720.55510115.davem@redhat.com>
In-Reply-To: <20011110.053720.55510115.davem@redhat.com>; from davem@redhat.com on Sat, Nov 10, 2001 at 05:37:20AM -0800
On Sat, Nov 10, 2001 at 05:37:20AM -0800, David S. Miller wrote:
> From: Mathijs Mohlmann <mathijs@knoware.nl>
> Date: Sat, 10 Nov 2001 13:21:56 +0100
>
> i'm not sure about the enable_tasklet bit. I think it will prevent
> people from calling tasklet_enable from within an interrupt handler. But then
> again, why do you want to do that? Thanx, velco and
>
> Any comments?
>
> I've been looking at this and I sent Andrea+Linus private mail on this
> to try and work out a fix.
>
> You can't simply stop enabling the softirq when you hit the "locked
> tasklet" condition. That could deadlock the tasklet.
>
> What really needs to happen is:
>
> 1) If tasklet is scheduled, but disabled, simply ignore it
> during tasklet processing. Do not resignal softirq.
> But do leave it on the pending lists.
>
> 2) When tasklet enable brings t->count back to zero and
> tasklet is found to be scheduled, signal a local softirq.
>
> To me, that would be the proper fix. But I still haven't heard back
> from Andrea or Linus yet :-)
just playing with the "softirq_raise" would be much simpler but I can
see only one problem: we don't know what cpu the tasklet is scheduled
into, so we don't know where to signal the local softirq.
So it seems to fix the looping problem of disabled tasklets we should
really dschedule the tasklet in tasklet_disable (and of course to forbid
it to be scheduled when disabled in tasklet_schedule) and later to
reschedule it in tasklet_enable.
The looping of disabled tasklets was intentional though, it's true as
you noted that if somebody disable a tasklet we'll keep wasting time on
it (ksofitrqd or not, we would waste time anyways at every irq etc..,
ksoftirqd just makes it visible with top which is a good thing rather
than having the overhead hided in the irq handler and in the scheduler),
but the idea was that by design disabled tasklets should remain disabled
for a little time.
Infact at the moment it's even impossible to remove a tasklet from the
queue if it remains disabled forever. tasklet_kill will deadlock on a
tasklet that is disabled.
Comments Linus?
Andrea
next prev parent reply other threads:[~2001-11-10 15:03 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-10 12:21 [PATCH] fix loop with disabled tasklets Mathijs Mohlmann
2001-11-10 13:37 ` David S. Miller
2001-11-10 15:03 ` Andrea Arcangeli [this message]
2001-11-10 15:29 ` Mathijs Mohlmann
2001-11-10 16:02 ` Alan Cox
2001-11-10 16:37 ` Andrea Arcangeli
2001-11-12 1:11 ` Andrea Arcangeli
2001-11-12 7:42 ` Mathijs Mohlmann
2001-11-12 7:59 ` David S. Miller
2001-11-12 14:03 ` Andrea Arcangeli
2001-11-12 13:57 ` Andrea Arcangeli
2001-11-12 8:03 ` David S. Miller
2001-11-12 14:04 ` Andrea Arcangeli
2001-11-12 14:20 ` Andrea Arcangeli
2001-11-12 17:10 ` Thorsten Kukuk
2001-11-12 19:03 ` Mathijs Mohlmann
2001-11-11 2:32 ` Mathijs Mohlmann
-- strict thread matches above, loose matches on Subject: below --
2001-11-11 15:56 Momchil Velikov
2001-11-12 7:46 ` Mathijs Mohlmann
2001-11-12 8:00 ` David S. Miller
2001-11-12 8:07 ` Momchil Velikov
2001-11-12 9:11 ` Mathijs Mohlmann
2001-11-12 9:41 ` Momchil Velikov
2001-11-12 9:54 ` Mathijs Mohlmann
2001-11-12 15:33 Petr Vandrovec
2001-11-12 14:48 ` Andrea Arcangeli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20011110160301.B1381@athlon.random \
--to=andrea@suse.de \
--cc=davem@redhat.com \
--cc=jgarzik@mandrakesoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathijs@knoware.nl \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox