PCI Express 64 bit Access in MPC8308

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PCI Express 64 bit Access in MPC8308

1,124 Views
rameshchandraka
Contributor III

Sir

We are using MPC8308 PCI Express x1 connected to  PCI express End device.

PCI express End Device having - 32 address bit Non Prefetchable & 64 address bit Prefetchable.

We are using Linux - 2.6.29 from LTIB.

Note: PCI express adresss is 64 bit nature.Not a data.

Problem

Auto enumeration has been completed properly for Both Region BAR 0 and BAR 2.

request_memory_region also completed properly

ioremap also completed properly.

But, When i started accessing the region using the address provided by ioremap.

KERENL IS CRASHING !

will the MMU of the linux kerenl (2.6.29 ) supports 64 address bit translation?

Pls suggest me

Regards

Ramesh

0 Kudos
2 Replies

718 Views
r8070z
NXP Employee
NXP Employee

The MPC8308 core MMU provides 32-bit physical address only. The MPC8308 internal 32-bit physical address is mapped to the 64-bit PCI address in Address Translation Window Unit (ATMU). The attributes of the outbound windows are controlled by the PEX_OWARn registers and the attributes of

the RC inbound windows are controlled by the PEX_RCIWARn registers, residing in the CSB bridge address space.

I.e. the core does not "know" 64-bit addrerss in the PCIe address space. It accesses to the region in the intenal 32-bit space which is mapped to the same size region in the 64-bit PCIe address space by ATMU.

I am not guru in Linux. As I know ioremap does not return "real' address but some like-address value which has to be used by special IOfunctions. "Remember, though, that the addresses returned from ioremap should not be dereferenced directly; instead, accessor functions provided by the kernel should be used."

"The proper way of getting at I/O memory is via a set of functions (defined via <asm/io.h>) provided for that purpose."


0 Kudos

718 Views
yusufalti333
Contributor IV

Hello r8070z‌,

I am having exactly the same issue on T1042. Kernel crash with machine check if I use Physical size larger than 4 GB for RC side. And also when I try to use lower than 4 GB, kernel is not crashing but PCIe is not sending data to EP. It's more like sending data to its own memory.

Can you help me about this ? Thanks.

0 Kudos