From owner-freebsd-current@FreeBSD.ORG Tue Mar 27 14:30:20 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 212051065670 for ; Tue, 27 Mar 2012 14:30:20 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigknife-pt.tunnel.tserv9.chi1.ipv6.he.net [IPv6:2001:470:1f10:75::2]) by mx1.freebsd.org (Postfix) with ESMTP id EA30D8FC17 for ; Tue, 27 Mar 2012 14:30:19 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 5A9F3B970; Tue, 27 Mar 2012 10:30:19 -0400 (EDT) From: John Baldwin To: Steve Kargl Date: Tue, 27 Mar 2012 10:28:41 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p10; KDE/4.5.5; amd64; ; ) References: <20120323222313.GA1331@troutmask.apl.washington.edu> <201203261617.50860.jhb@freebsd.org> <20120326204530.GA2789@troutmask.apl.washington.edu> In-Reply-To: <20120326204530.GA2789@troutmask.apl.washington.edu> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201203271028.41106.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Tue, 27 Mar 2012 10:30:19 -0400 (EDT) Cc: freebsd-current@freebsd.org Subject: Re: general protection fault panic X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Mar 2012 14:30:20 -0000 On Monday, March 26, 2012 4:45:30 pm Steve Kargl wrote: > On Mon, Mar 26, 2012 at 04:17:50PM -0400, John Baldwin wrote: > > On Monday, March 26, 2012 1:59:18 pm Steve Kargl wrote: > > > On Mon, Mar 26, 2012 at 01:53:25PM -0400, John Baldwin wrote: > > > > On Monday, March 26, 2012 1:41:55 pm Steve Kargl wrote: > > > > > On Mon, Mar 26, 2012 at 01:18:37PM -0400, John Baldwin wrote: > > > > > > On Monday, March 26, 2012 12:21:29 pm Steve Kargl wrote: > > > > > > > > > > > > You know your APIC ID is 0, so you should be able to find the IRQ for vector > > > > > > 51 from here in apic_idt_to_irq(): > > > > > > > > > > > > irq = lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS]; > > > > > > > > > > > > Your apic_id is 0, and APIC_IO_INTS is 48, so you should be able to do this > > > > > > in kgdb: > > > > > > > > > > > > p lapics[0].la_ioint_irqs[3] > > > > > > > > > > > > That should give you an index, and intr_lookup_source() just does an array > > > > > > lookup. However, I'd be curious to see what the assembly looks like > > > > > > (x/10i $rip at this frame). > > > > > > > > > > > > > > > > > > > > > (kgdb) p lapics[0].la_ioint_irqs[3] > > > > > $1 = 16 > > > > > (kgdb) frame 27 > > > > > #27 0xffffffff806dc186 in acpi_cpu_c1 () > > > > > at /usr/src/sys/amd64/acpica/acpi_machdep.c:97 > > > > > > > > Sorry, I meant down at the frame that faulted (frame 7 in this case). > > > > > > > > > > (kgdb) frame 7 > > > #7 0xffffffff80751232 in lapic_handle_intr (vector=51, > > > frame=0xffffff8000229a70) at /usr/src/sys/x86/x86/local_apic.c:777 > > > 777 { > > > (kgdb) x/10i $rip > > > 0xffffffff80751232 : stos %eax,%es:(%rdi) > > > 0xffffffff80751233 : (bad) > > > 0xffffffff80751234 : pop %rbp > > > 0xffffffff80751235 : pop %rsi > > > 0xffffffff80751236 : fsubr %st(3),%st > > > 0xffffffff80751238 : (bad) > > > 0xffffffff80751239 : or $0xac1ae6b3,%eax > > > 0xffffffff8075123e : out %eax,$0x19 > > > 0xffffffff80751240 : > > > jl 0xffffffff8075125e > > > 0xffffffff80751242 : adc %r12d,0xc6aa671(%rdi) > > > > Looks like the instruction pointer is busted. Try doing 'x/10i lapic_handle_intr'. > > I suspect you will not see 'lapic_handle_intr+2' as a valid instruction offset. :( > > > > I'm assuming you want this in frame 7 > > (kgdb) frame 7 > #7 0xffffffff80751232 in lapic_handle_intr (vector=51, > frame=0xffffff8000229a70) at /usr/src/sys/x86/x86/local_apic.c:777 > (kgdb) x/10i lapic_handle_intr > 0xffffffff80751230 : sbb $0xa7,%al > 0xffffffff80751232 : stos %eax,%es:(%rdi) > 0xffffffff80751233 : (bad) > 0xffffffff80751234 : pop %rbp > 0xffffffff80751235 : pop %rsi > 0xffffffff80751236 : fsubr %st(3),%st > 0xffffffff80751238 : (bad) > 0xffffffff80751239 : or $0xac1ae6b3,%eax > 0xffffffff8075123e : out %eax,$0x19 > 0xffffffff80751240 : > jl 0xffffffff8075125e Hmmm, odd. In this case the frame doesn't matter (global symbol). Are you sure you are using the correct kernel.debug file? -- John Baldwin