From owner-freebsd-hackers@FreeBSD.ORG Sun Oct 4 22:32:20 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88A771065670 for ; Sun, 4 Oct 2009 22:32:20 +0000 (UTC) (envelope-from mlfbsd@kanar.ci0.org) Received: from kanar.ci0.org (kanar.ci0.org [88.191.50.96]) by mx1.freebsd.org (Postfix) with ESMTP id 0E61B8FC29 for ; Sun, 4 Oct 2009 22:32:19 +0000 (UTC) Received: from kanar.ci0.org (pluxor@localhost [127.0.0.1]) by kanar.ci0.org (8.14.2/8.14.3) with ESMTP id n94MYXiZ073459; Mon, 5 Oct 2009 00:34:33 +0200 (CEST) (envelope-from mlfbsd@kanar.ci0.org) Received: (from mlfbsd@localhost) by kanar.ci0.org (8.14.2/8.14.3/Submit) id n94MYXEb073458; Mon, 5 Oct 2009 00:34:33 +0200 (CEST) (envelope-from mlfbsd) Date: Mon, 5 Oct 2009 00:34:33 +0200 From: Olivier Houchard To: Tom Judge Message-ID: <20091004223433.GA73189@ci0.org> References: <4AC106AA.9000305@tomjudge.com> <20090928202132.GA15236@ci0.org> <4AC16B5A.8090407@tomjudge.com> <20090929093825.GA26424@ci0.org> <4AC21F44.6060004@tomjudge.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4AC21F44.6060004@tomjudge.com> User-Agent: Mutt/1.4.2.1i X-Mailman-Approved-At: Mon, 05 Oct 2009 04:12:29 +0000 Cc: freebsd-hackers@freebsd.org Subject: Re: Help debugging: Fatal kernel mode data abort: 'External Linefetch Abort (P)' X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Oct 2009 22:32:20 -0000 > Hi Olivier, > > I have tried the patch and here are the boot results: > > > i80321: BAR0 = 20000004.00000000 BAR1 = 40000004.00000000 > i80219: BAR0 = 20000000.00000000 BAR1 = 40000000.00000000 > i80219: I/O Processor, acting as PCI host > i80321: SBDR = 0xa0000000 SBR0 = 0x00000018 SBR1 = 0x00000020 > i80321: BANK0 = 0x10000000 BANK1 = 0x10000000 > i80321: Reserve space for private devices (Inbound Window 1) > hi:0x00000000 lo:0x8000000c xlate:0x80000000 size:0x04000000 > i80321: RAM access (Inbound Window 2) > hi:0x00000000 lo:0xa000000c xlate:0xa0000000 size:0x20000000 > obio0 on iq0 > uart0: <16550 or compatible> on obio0 > uart0: [FILTER] > uart0: console (115200,n,8,1) > itimer0: on iq0 > iopwdog0: on iq0 > pcib0: on iq0 > pci0: on pcib0 > Device 1 routed to irq 27 > Device 2 routed to irq 30 > Device 3 routed to irq 29 > Device 5 routed to irq 30 > Device 5 routed to irq 29 > Device 5 routed to irq 27 > em0: port > 0xfe400000-0xfe40003f mem 0-0x1ffff,0x20000-0x3ffff irq 27 at device 1.0 > on pci0 > em0: Start: 0x00000000 > em0: End: 0x0001FFFF > em0: Size: 0x00020000 > Fatal kernel mode data abort: 'External Linefetch Abort (P)' > trapframe: 0xc00faad0 > FSR=00000406, FAR=Invalid, spsr=200000d3 > r0 =c00d0400, r1 =cd5bf000, r2 =00000010, r3 =0000000a > r4 =c317e008, r5 =cd5bf000, r6 =c00d0400, r7 =c130212c > r8 =c317e008, r9 =c0071180, r10=c317e000, r11=c00fab40 > r12=c00fab44, ssp=c00fab1c, slr=c106a96c, pc =c106a968 > > [thread pid 0 tid 100000 ] > Stopped at e1000_init_script_state_82541+0x24c: blx r7 > db> > > > > As you can see I added some debug to if_em.c as such: > > Index: sys/dev/e1000/if_em.c > =================================================================== > --- sys/dev/e1000/if_em.c (revision 197472) > +++ sys/dev/e1000/if_em.c (working copy) > @@ -2770,6 +2770,9 @@ > rman_get_bustag(adapter->memory); > adapter->osdep.mem_bus_space_handle = > rman_get_bushandle(adapter->memory); > + device_printf(dev,"Start: 0x%08lX\n", rman_get_start(adapter->memory)); > + device_printf(dev,"End: 0x%08lX\n", rman_get_end(adapter->memory)); > + device_printf(dev,"Size: 0x%08lX\n", rman_get_size(adapter->memory)); > adapter->hw.hw_addr = (u8 *)&adapter->osdep.mem_bus_space_handle; > > /* Only older adapters use IO mapping */ > > > But the memory mapping seems to be missing the most significant 0x8. > I fail to see how it happens. Could you printf the value of sc->sc_mem once set in i80321_pci_attach(), and if it appears to be 0, the value of i80321_softc->sc_owin[0].owin_xlate_lo at the different points it can be set ? Thanks a lot, Olivier