Date: Tue, 2 May 2006 19:00:35 GMT From: John Baldwin <jhb@freebsd.org> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/91408 : [irq] ata(4) failure: SETFEATURES SET TRANSFER MODE semaphore timeout !! DANGER Will Robinson !! Message-ID: <200605021900.k42J0Zax079531@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/91408; it has been noted by GNATS.
From: John Baldwin <jhb@freebsd.org>
To: Eugene Grosbein <eugen@kuzbass.ru>
Cc: Eugene Grosbein <eugen@grosbein.pp.ru>, bug-followup@freebsd.org,
lightsquid@logvinov.com
Subject: Re: kern/91408 : [irq] ata(4) failure: SETFEATURES SET TRANSFER MODE semaphore timeout !! DANGER Will Robinson !!
Date: Tue, 2 May 2006 14:59:16 -0400
On Monday 01 May 2006 23:37, Eugene Grosbein wrote:
> John Baldwin wrote:
> > Well, all the IRQs are the same and none of the interrupts were changed to
> > be edge triggered or anything like that, so it's not a problem with
> > interrupt routing. If the interrupt routing were busted, the IRQ numbers
> > would be different. All the pci_link devices do is help the OS figure out
> > which IRQ number a device uses. If those numbers are all the same, then
> > interrupt routing is not the issue.
>
> And if it's not interrupt routing problem, what else pci_link affects to?
That's all pci_link effects. :( One thing you can try is to turn
off the code to disable each of the links during boot. Something like
this:
Index: acpi_pci_link.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v
retrieving revision 1.53
diff -u -r1.53 acpi_pci_link.c
--- acpi_pci_link.c 6 Jan 2006 16:14:32 -0000 1.53
+++ acpi_pci_link.c 2 May 2006 18:58:47 -0000
@@ -517,6 +517,7 @@
for (i = 0; i < sc->pl_num_links; i++)
sc->pl_links[i].l_initial_irq = sc->pl_links[i].l_irq;
+#if 0
/*
* Try to disable this link. If successful, set the current IRQ to
* zero and flags to indicate this link is not routed. If we can't
@@ -528,13 +529,16 @@
for (i = 0; i < sc->pl_num_links; i++)
sc->pl_links[i].l_irq = PCI_INVALID_IRQ;
else
+#endif
for (i = 0; i < sc->pl_num_links; i++)
if (PCI_INTERRUPT_VALID(sc->pl_links[i].l_irq))
sc->pl_links[i].l_routed = TRUE;
+#if 0
if (bootverbose) {
device_printf(dev, "Links after disable:\n");
acpi_pci_link_dump(sc);
}
+#endif
ACPI_SERIAL_END(pci_link);
return (0);
fail:
--
John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200605021900.k42J0Zax079531>
