Re: 6.0-CURRENT SNAP004 hangs on amr (patch)

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Fri, 29 Jul 2005 13:18:20 -0400
On Sunday 24 July 2005 07:16 pm, Joao Barros wrote:
> On 7/21/05, John Baldwin <jhb_at_freebsd.org> wrote:
> > On Thursday 21 July 2005 11:42 am, Mike Tancsa wrote:
> > > At 02:09 PM 13/07/2005, John Baldwin wrote:
> > > >On Wednesday 13 July 2005 09:38 am, Mike Tancsa wrote:
> > > > > At 04:28 PM 12/07/2005, John Baldwin wrote:
> > > > > >That does sort of help.  Can you try commenting out the call to
> > > > > >ioapic_setup_mixed_mode() in the sys/i386/i386/mptable.c file and
> > > > > > try booting with ACPI disabled (but APIC on) and see if it still
> > > > > > works ok?
> > > > >
> > > > > Yup,
> > > > >          Still boots just fine.
> > > >
> > > >Ok.  Back on 6, can you try editing sys/i386/i386/io_apic.c and in the
> > > >function ioapic_set_extint(), change the line that reads:
> > > >
> > > >         io->io_pins[pin].io_masked = 1;
> > > >
> > > >to set the masked variable to 0 instead?
> > >
> > > Yes, it works with and without ACPI!!
> >
> > Ok.  That change directly violates the ACPI standard. :(  I need to think
> > about this.  At the very least I can add a tunable for this.
>
> John,
>
> Would it be possible to have this in BETA2?

Can you try this patch?  You'll need to set hw.apic.enable_extint=1 in the 
loader via loader.conf or a manual set command:

--- //depot/vendor/freebsd/src/sys/i386/i386/io_apic.c	2005/04/14 18:01:23
+++ //depot/user/jhb/acpipci/i386/i386/io_apic.c	2005/07/28 22:12:23
_at__at_ -129,6 +130,12 _at__at_
 static int bsp_id, current_cluster, logical_clusters, next_ioapic_base;
 static u_int next_id, program_logical_dest;
 
+SYSCTL_NODE(_hw, OID_AUTO, apic, CTLFLAG_RD, 0, "APIC options");
+static int enable_extint;
+SYSCTL_INT(_hw_apic, OID_AUTO, enable_extint, CTLFLAG_RDTUN, &enable_extint, 
0,
+    "Enable the ExtINT pin in the first I/O APIC");
+TUNABLE_INT("hw.apic.enable_extint", &enable_extint);
+
 static __inline void
 _ioapic_eoi_source(struct intsrc *isrc)
 {
_at__at_ -680,7 +684,10 _at__at_
 		return (EINVAL);
 	io->io_pins[pin].io_bus = APIC_BUS_UNKNOWN;
 	io->io_pins[pin].io_vector = VECTOR_EXTINT;
-	io->io_pins[pin].io_masked = 1;
+	if (enable_extint)
+		io->io_pins[pin].io_masked = 0;
+	else
+		io->io_pins[pin].io_masked = 1;
 	io->io_pins[pin].io_edgetrigger = 1;
 	io->io_pins[pin].io_activehi = 1;
 	if (bootverbose)

-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Fri Jul 29 2005 - 15:45:57 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:40 UTC