usb/74989: (regression) Lost USB support between 5.2.1-RELEASE and 5.3-RELEASE on K7T266 Pro2.

John Baldwin jhb at freebsd.org
Fri Dec 2 13:11:54 GMT 2005


On Thursday 01 December 2005 04:34 pm, Julien Gabel wrote:
> >> I applied this patch, rebuild and installed the kernel, set the
> >> loader.conf directive `hint.apic.0.disabled' to "0" and reboot on the
> >> system.  Sadly, the same behaviour happened (as before), i.e. USB mouse
> >> simply hang, USB thumbdrive doesn't work, etc.
> >>
> >> The patch was applied on src/sys/dev/acpica/acpi_pci_link.c before your
> >> last commit on RELENG_6 (version 1.44.2.4, 2005/11/30 16:03:55).  Don't
> >> know if this may change something or not in this case.
> >
> > Well, I can't get to your dmesg's anymore.  If I understand correctly,
>
> Yes, sorry: the layout of the website was changed recently.  Here are
> the corresponding files (using RELENG_5 at this time):
>  http://www.thilelli.net/~jgabel/store/pub/PR/74989/

Ok, yours is a more odd case. :)  This is debatably a bug in your ASL, but I 
think we can work around it.  It is routing your USB interrupts to IRQ 10 but 
is not using a link device to do it, and it is not including an INTR_OVERRIDE 
entry in the MADT to change IRQ 10 from the default of edge/trigger to 
level/low.  The patch below forces all hard-wired PCI interrupts routed via 
ACPI to be level/low.  This patch should apply both to HEAD and 6.x and maybe 
5.x.

Index: acpi_pcib.c
===================================================================
RCS file: /host/cvs/usr/cvs/src/sys/dev/acpica/acpi_pcib.c,v
retrieving revision 1.58
diff -u -r1.58 acpi_pcib.c
--- acpi_pcib.c	7 Nov 2005 21:48:45 -0000	1.58
+++ acpi_pcib.c	2 Dec 2005 13:08:16 -0000
@@ -252,9 +252,11 @@
 	if (bootverbose)
 	    device_printf(pcib, "slot %d INT%c hardwired to IRQ %d\n",
 		pci_get_slot(dev), 'A' + pin, prt->SourceIndex);
-	if (prt->SourceIndex)
+	if (prt->SourceIndex) {
 	    interrupt = prt->SourceIndex;
-	else
+	    BUS_CONFIG_INTR(dev, interrupt, INTR_TRIGGER_LEVEL,
+		INTR_POLARITY_LOW);
+	} else
 	    device_printf(pcib, "error: invalid hard-wired IRQ of 0\n");
 	goto out;
     }

> More precisely, here is a little tab... to be more accurate (i hope):
>
> ---------------------------------------
>  USB support   |   ACPI   |   APIC    |
>                ------------------------
>
>                | on | off | on | off  |
>
> ---------------------------------------
> Did not boot(*)|    |  XX |    |  XX  |
> ---------------------------------------
> (*) The boot disk seems not be able to be used for the root mount, i.e.
> ufs:/dev/ad0s1a in my case.

If you could get a verbose dmesg for this case using a serial console I'd be 
interested in looking at that too.

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the freebsd-acpi mailing list