kern/121558: Supermicro X7SB4 Fatal trap 12 when ACPI disabled

Leon Kos leon.kos at lecad.uni-lj.si
Tue Mar 11 13:45:52 UTC 2008


mptable output of the system is located at:
http://www.lecad.uni-lj.si/~leon/other/x7sb4/mptable.txt

I could not change version in BIOS. Processor option supported by BIOS are 
shown in http://www.lecad.uni-lj.si/~leon/other/x7sb4/img_1638.jpg

I have added
options     INVARIANTS
options     INVARIANT_SUPPORT
options     DIAGNOSTIC

and now GENERIC shows the following trace when ACPI disabled:
http://www.lecad.uni-lj.si/~leon/other/x7sb4/img_1639.jpg
http://www.lecad.uni-lj.si/~leon/other/x7sb4/img_1640.jpg
http://www.lecad.uni-lj.si/~leon/other/x7sb4/img_1641.jpg


Forcing single core in BIOS helps when running ACPI disabled.
Toggling other BIOS options like C1 Enhanced Mode or Speed Step
does not.


Kind regards!

Leon Kos, CAD lab, Mech.Eng., University of Ljubljana, Slovenia
(http://www.lecad.uni-lj.si/~leon)


On Tue, 11 Mar 2008, Dan Lukes wrote:

> The following reply was made to PR kern/121558; it has been noted by GNATS.
>
> From: Dan Lukes <dan at obluda.cz>
> To: Leon Kos <begunje at gmail.com>
> Cc: jhb at freebsd.org, volker at vwsoft.com, bug-followup at freebsd.org
> Subject: Re: kern/121558: Supermicro X7SB4 Fatal trap 12 when ACPI disabled
> Date: Tue, 11 Mar 2008 11:53:23 +0100
>
> > ioapic_get_vector(0,13) at ioapic_get_vector+0x0a
> > mptable_pci_route_interrupt_handler(c009de3d,c1020890) at mptable_pci_route_interrupt_handler+0x35
>
> The function implementation:
>
>   ------------------
> > ioapic_get_vector(void *cookie, u_int pin)
> > {
> >         struct ioapic *io;
> >
> >         io = (struct ioapic *)cookie;
> >         if (pin >= io->io_numintr)
> ...
>   ------------------
>
>
> E.g. the ioapic_get_vector seems to be called with NULL cookie which is
> used as a valid pointer a dereferenced - exactly as I fabulate in
> previous email.
>
> The function implementation:
>
>   ------------------
> > mptable_pci_route_interrupt_handler(u_char *entry, void *arg)
> > {
> > ...
> >         /* Make sure the APIC maps to a known APIC. */
> >         KASSERT(ioapics[intr->dst_apic_id] != NULL,
> >             ("No I/O APIC %d to route interrupt to", intr->dst_apic_id));
> > ...
> >         vector = ioapic_get_vector(ioapics[intr->dst_apic_id],
> >             intr->dst_apic_int);
>   ------------------
>
> 	As your kernel is compiled without INVARIANTS the KASSERT test become
> void and ioapic_get_vector may be called with NULL causing the abend later.
>
> 	It's because the intr->dst_apic_id point to APIC that doesn't exist
> (you can run kernel with INVARIANTS to display the dst_apic_id in question).
>
> 	Please note the MPTABLE generated by BIOS MAY change also when ACPI is
> (de)activated in BIOS. You may try to boot with ACPI enabled in BIOS but
> disabled in OS. It may (or may not) help to you.
>
> 	It may be problem with MPTABLE itself (eg. not in FreeBSD) or with it's
> parsing (e.g. in FreeBSD). MPTABLE is generated by BIOS. Look into BIOS
> if MPTABLE version can be set then use 1.4. Especially dont use "auto"
> as version even such option present.
>
> 	The output of mptable command may help to us.
>
> 							Dan
> _______________________________________________
> freebsd-acpi at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi
> To unsubscribe, send any mail to "freebsd-acpi-unsubscribe at freebsd.org"
>


More information about the freebsd-acpi mailing list