lkml.org 
[lkml]   [2002]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH][RFC] per isr in_progress markers
On Sun, 8 Sep 2002, Ingo Molnar wrote:

> if we didnt disable the IRQ line then an additional interrupt would be
> triggered when [*] is done.

We should be safe from that since ->end() is called after the handler at
at that stage the irq line is still disabled due to us not ack'ing in
->ack()

> it could perhaps be handled the following way:
>
> disable IRQ line
> ack APIC
> -> call handler
> while (work_left) {
> ack interrupt on the card [*]
> enable IRQ line [**]
> [... full processing ...]
> }
>
> so after [**] is done we could accept new interrupts, and the amount of
> time we keep the irq line disabled should be small. Obviously this means
> driver level changes.

After looking at the code at bit more the following would still work for
level triggered via ioapic. Due to that specific irq line being
effectively disabled until we hit ->end.

desc->handler->ack();
action->handler()
while(work_to_do) {
ack_interrupt_on_card(); <-- unmask_irq_line in here too
do_isr_work();
}
...
desc->handler->end();

So it looks like your previous suggestion of driver modification still
stands, would it be safe then to do a real ack in the isr (for the ioapic
case)?

Zwane

--
function.linuxpower.ca

-
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 13:28    [W:0.089 / U:7.712 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site