Re: [RFT] major libata update

Linus Torvalds
2006-05-17T23:40:36Z

On Thu, 18 May 2006, OGAWA Hirofumi wrote:

> Linus Torvalds <torvalds@osdl.org> writes:
>
> > On Mon, 15 May 2006, Avuton Olrich wrote:
> >
> > diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
> > index 06dab00..49b9fea 100644
> > --- a/arch/i386/pci/irq.c
> > +++ b/arch/i386/pci/irq.c
> > @@ -880,6 +880,7 @@ static int pcibios_lookup_irq(struct pci
> > ((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask)) ) {
> > DBG(" -> got IRQ %d\n", irq);
> > msg = "Found";
> > + eisa_set_level_irq(irq);
> > } else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
> > DBG(" -> assigning IRQ %d", newirq);
> > if (r->set(pirq_router_dev, dev, pirq, newirq)) {
>
> I like it. I'd like to put this type stuff (fixes setting of 8259,
> APIC, chipset, etc.) into pci...

Andrew, can you put the one-liner into -mm and see if it gathers any
reports?

I think Neil already reported that it fixed a lost interrupt problem for
him, but I'm worried that it might result in interrupt storms for others.

In particular, I have this pretty strong memory that we tried to do
something like this a long time ago, and it caused problems at least
with the legacy ISA/ATA interrupts (irq 14/15).

On the other hand, my memory is pretty damn bad at times, and besides, I
hope that that "hardcoded" case just above it is the one that takes care
of the old ATA interrupts. This is one of those times when the only
guaranteed right thing to do would be to be bug-for-bug compatible with
whatever crud MS-Win does..

Linus