Re: Real-Time Preemption, -RT-2.6.12-final-V0.7.50-24

Ingo Molnar
2005-06-29T06:35:39Z

* Karsten Wiese <annabellesgarden@yahoo.de> wrote:

> looked at -50-33 now and wonder why is mask_IO_APIC_irq() called twice
> from __do_IRQ()? given a threaded interrupt: __do_IRQ() calls
> desc->handler->ack(irq). ack points to
> mask_and_ack_level_ioapic_irq(), which calls mask_IO_APIC_irq(irq).
> some lines later in __do_IRQ() desc->handler->disable(irq) is called.
> disable points to mask_IO_APIC_irq(), now being called a 2nd time. I
> think this 2nd call isn't necessary. Is there a difference between
> masking an interrupt line and disabling it? What am I missing?

you are not missing anything - but i found no easy way for the time
being to get rid of the second masking.

> Back at 2.6.12-rc5-RT-48-16 mask_and_ack_level_ioapic_irq() also
> contained the mask_IO_APIC_irq(irq) call and level interrupt-rates
> where fine. Some versions later it vanished there. Why was that?

i reorganized how redirection is being done, and i've implemented
auto-ACK for the i8259A, to reduce IRQ handling costs. One goal was to
avoid the masking of the interrupt line for the timer interrupt on
i8259A - but i think i'm going to revert that, it's causing too many
problems all around.

Ingo