Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Nov 2005 08:04:17 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-acpi@freebsd.org
Cc:        Timm Florian Gloger <timm.gloger@gmail.com>
Subject:   Re: System freezes when using ACPI
Message-ID:  <200511280804.18428.jhb@freebsd.org>
In-Reply-To: <19269e540511250555p18355d49u@mail.gmail.com>
References:  <19269e540511250555p18355d49u@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 25 November 2005 08:55 am, Timm Florian Gloger wrote:
> hey list,
>
> i installed a fresh 6.0 stable system on my machine.
>
> when using acpi the system freezes after less than 10 minutes.
> with disabled acpi there is no such problem and the system runs fine.
>
> i am new to freebsd so i dont know all the things which may influence
> the acpi driver to misbehave.
>
> i attached the outputs which are mentioned in the handbook.
>
> the system is:
>
> asus a7n8x deluxe rev 2.0 bios 1008
> amd athlon xp 3000+ fsb 400
> 1 gb ddr400 ram
> nforce 2 chipset (firewire disabled)
> sapphire radeon 9800 pro
>
> if there are any further information required to get the system work
> properly ...
>
> thanks
> timm

Try disabling APIC for now.  Your BIOS has a bug in that it tells us that t=
he=20
APIC-routed interrupts are active-hi polarity when in fact they are=20
active-low.  Unfortunately it seems that a few BIOSen have this bug. :(  Al=
l=20
PCI interrupts should be level-triggered active-low polarity.  You can also=
=20
try the following patch:

Index: acpi_pci_link.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /host/cvs/usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v
retrieving revision 1.48
diff -u -r1.48 acpi_pci_link.c
=2D-- acpi_pci_link.c	1 Nov 2005 22:44:07 -0000	1.48
+++ acpi_pci_link.c	28 Nov 2005 13:03:29 -0000
@@ -859,7 +859,18 @@
 			if (!link->l_routed &&
 			    PCI_INTERRUPT_VALID(link->l_irq)) {
 				link->l_routed =3D TRUE;
+				/*
+				 * Some BIOSen are broken and actually set
+				 * some interrupts to active-high with level
+				 * trigger.  Workaround this by hard-coding
+				 * active-low and level-trigger.
+				 */
+#if 0
 				acpi_config_intr(dev, resource);
+#else
+    				BUS_CONFIG_INTR(dev, link->l_irq,
+				    INTR_TRIGGER_LEVEL, INTR_POLARITY_LOW);
+#endif
 				pci_link_interrupt_weights[link->l_irq] +=3D
 				    link->l_references;
 			}


=2D-=20
John Baldwin <jhb@FreeBSD.org> =A0<>< =A0http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" =A0=3D =A0http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511280804.18428.jhb>