Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 Sep 2009 02:05:14 +0000
From:      Tom Judge <tom@tomjudge.com>
To:        Olivier Houchard <mlfbsd@ci0.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Help debugging: Fatal kernel mode data abort: 'External	Linefetch Abort (P)'
Message-ID:  <4AC16B5A.8090407@tomjudge.com>
In-Reply-To: <20090928202132.GA15236@ci0.org>
References:  <4AC106AA.9000305@tomjudge.com> <20090928202132.GA15236@ci0.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Olivier Houchard wrote:
> On Mon, Sep 28, 2009 at 06:55:38PM +0000, Tom Judge wrote:
>   
>> Hi,
>>
>> I am working on getting FreeBSD to boot on a new ARM based board, and am 
>> hitting this issue any time I load a driver for the PCI based devices on 
>> the board.
>>
>> My current code can be found here:
>>
>> http://www.tomjudge.com/tmp/em7210.patch
>>
>>     
>
> Hi Tom,
>
> My guess is, you should include std.i80219 instead of std.i80321 in std.em7210.
> If you do not, CPU_XSCALE_80219 won't be defined, and the 80321 code to
> check if the board is host or not will be used, and will wrongly assume 
> it is not, and thus won't map the PCI mem correctly.
>
>   
Hi Olivier,

I have switched out the std file and am now using std.i80219 but am 
still having issues.

I think the problems are the pci memory mappings in the controller devices.

On linux em0 gets mapped as  follows:

cd 0000\:00\:01.0/
# ls
class             device            local_cpus        subsystem_device
config            driver            resource          subsystem_vendor
detach_state      irq               rom               vendor
# cat resource
0x0000000080000000 0x000000008001ffff 0x0000000000000200
0x0000000080020000 0x000000008003ffff 0x0000000000000200
0x00000000fe000000 0x00000000fe00003f 0x0000000000000101
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000080040000 0x000000008005ffff 0x0000000000007200
#



Where as on FreeBSD I am seeing this:
em0: <Intel(R) PRO/1000 Network Connection 6.9.14> port 
0xfe400000-0xfe40003f mem 0-0x1ffff,0x20000-0x3ffff irq 29 at device 1.0 
on pci0

Seems that I am missing the 0x800 off the front of the PCI memory mappings.

I have confirmed this with the ata driver also and see the same issues.

Where should I be looking to fix this?

Thanks

Tom

 



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