[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <m1wsyp6700.fsf@ebiederm.dsl.xmission.com>
Date: Wed, 30 May 2007 20:50:55 -0600
From: ebiederm@...ssion.com (Eric W. Biederman)
To: "Siddha, Suresh B" <suresh.b.siddha@...el.com>
Cc: mingo@...e.hu, ak@...e.de, akpm@...ux-foundation.org,
linux-kernel@...r.kernel.org, "Zou, Nanhai" <nanhai.zou@...el.com>,
"Mallick, Asit K" <asit.k.mallick@...el.com>,
"Packard, Keith" <keith.packard@...el.com>
Subject: Re: [patch] x86_64, irq: check remote IRR bit before migrating level triggered irq
"Siddha, Suresh B" <suresh.b.siddha@...el.com> writes:
> Eric,
>
> On Fri, May 18, 2007 at 07:40:53AM -0700, Eric W. Biederman wrote:
>> Still in any of those I don't see a problem with switching to edge
>> triggered mode and then back again. Either Remote IRR will keep
>> it's current state or it will be cleared. Remote IRR should not
>> get set (when it was clear) by such a procedure because that
>> would mess up the normal interrupt enable sequence that happens
>> on boot. So I'm pretty certain toggling the edge bit is harmless
>> and it may actually clear Remote IRR for us.
> ...
>>
>> I think going more the way that this code has gone on arch/i386 with
>> real functions is preferable.
>
> There is an issue with this suggestion. We have an inflight
> EOI broadcast msg to this IOAPIC (that got delayed but still alive) and
> that can cause problem if we use edge and back to level to reset remote IRR bit.
>
> If the vector number stays same during irq migration and if we reset remote
> IRR bit using the above method(edge and then back to level) during
> irq migration, then we have a problem. A new interrupt arriving on a new
> cpu will set the remote IRR bit and now the old inflight EOI broadcast
> reaches IOAPIC RTE(resetting the remote IRR bit, because the vector in the
> broadcast msg is same), while the kernel code still assumes that the remote
> IRR bit is still set. This will lead to more problems and issues.
Ok. I will agree that if the level->edge->level switch does not reset
Remote_IRR and the EOI arrives in that window. We have another condition
in which Remote_IRR can get stuck on.
Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists