Re: yenta_socket hangs sager laptop in kernel 2.4.6

Linus Torvalds (torvalds@transmeta.com)
Thu, 12 Jul 2001 17:38:49 -0700 (PDT)


Well, I think I've found the reason for your hang.

Your video card is also on irq11.

And I bet you don't have a driver that knows about it.

So let's run a thought experiment:
- enabling yenta enables the irq routing for "link 0x01", which is the
first IRQ input into the southbridge.
- some time later a vertical refresh happens
- the video card, that is also routed to link 0x01, raises the vertical
refresh irq.
- Linux has a irq handler for irq11, but no yenta state changes, so the
irq handler returns immediately without doing anything.
- the video card (being a PCI card) still raises the irq. Forever. Repeat.

Ho humm.. I'd love to test this out some way, but the video card does seem
to be physically routed to the same southbridge interupt pin, so while I
can move that interrupt around, the video card will always move with it.
So it wouldn't help, for example, to try to make pci-irq.c try to select
another irq line.

So you can try two things:
- if you have a BIOS setting for VGA interrupts, turn it OFF.
- if you don't (or you just think you're too manly to resort to BIOS
settings), you could try to add something like this as a hack to
yenta.c (somewhere in the init routines)

struct pci_dev * video;

video = pci_find_class(PCI_CLASS_DISPLAY_VGA, NULL);
if (video) {
char * base = ioremap(pci_resource_start(dev, 2), 4096);

/* Turn off interrupts for ATI Rage graphics card */
writel(0, base + 0x40);
}

Note, that "writel()" may or may not work. It's a guess from some rather
limited documentation, namely the header #defines of the XFree86 driver.

The above is a complete hack, and assumes that the only VGA-compatible
controller in the system is an ATI card. But if you can't find a VGA irq
enable thing in the BIOS setup, it might be worth trying.

Linus

-
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/