vm_fault when accessing PCI address space
Olivier Houchard
mlfbsd at ci0.org
Sun May 22 18:03:46 UTC 2011
On Sat, May 21, 2011 at 01:34:02AM +0200, Damjan Marion wrote:
>
> Hi,
>
Hi Damjan,
> I'm made some progress on porting existing marvell orion ARM code
> to work on 88F5181L SoC which have embedded PCI controller.
>
> PCI driver detects resources and recognizes Atheros wlan card,
> however when driver tries to access 1st register with
> bus_space_write_4 vm_fault happens:
>
> vm_fault(0xc0e4f000, e8007000, 2, 0) -> 1
> Fatal kernel mode data abort: 'Translation Fault (S)'
> trapframe: 0xc0d3faa4
> FSR=00000005, FAR=e800704c, spsr=600000d3
> r0 =00000000, r1 =e8000000, r2 =0000704c, r3 =00000003
> r4 =c13cd000, r5 =c0c4bd60, r6 =c0bece04, r7 =c12dd000
> r8 =00000023, r9 =c0d074c8, r10=c0d3fba4, r11=c0d3fb00
> r12=00000000, ssp=c0d3faf0, slr=c095f830, pc =c0bece04
>
> [ thread pid 0 tid 100000 ]
> Stopped at generic_bs_w_4: str r3, [r1, r2]
>
> 0xe8000000 is PCI mem space. I can see that PCI driver (mv_pci.c) allocates this resource:
>
> pcib0: <Marvell Integrated PCI/PCI-E Controller> mem 0xf1030000-0xf1031fff irq 0 on fdtbus0
> pci0: <PCI bus> on pcib0
> mv_pcib_alloc_resource: start=0xe8000000 end=0xe800ffff count=0x00010000 flags=0x00
>
> What can be the reason for this vm_fault?
>
I don't know the Marvell, nor the FDT code, well, but you shouldn't access
to the PCI mem space using the physical address, so maybe something is missing
from the dts ?
Also, reading the mv code, there's this in mv_machdep.c :
if (fdt_pci_devmap(child, &fdt_devmap[i],
MV_PCIE_IO_BASE, MV_PCIE_MEM_BASE) != 0)
return (ENXIO);
but nothing equivalent for the PCI controller (as it seems the Orion has both
PCI and PCIe). So maybe it is lacking ?
Regards,
Olivier
More information about the freebsd-hackers
mailing list