Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Mar 2008 11:30:07 GMT
From:      Dan Lukes <dan@obluda.cz>
To:        freebsd-acpi@FreeBSD.org
Subject:   Re: kern/121558: Supermicro X7SB4 Fatal trap 12 when ACPI disabled
Message-ID:  <200803111130.m2BBU7GV014923@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/121558; it has been noted by GNATS.

From: Dan Lukes <dan@obluda.cz>
To: Leon Kos <begunje@gmail.com>
Cc: jhb@freebsd.org, volker@vwsoft.com, bug-followup@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



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