LS1012ARDB - PCIe IO Coherency

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

LS1012ARDB - PCIe IO Coherency

1,911 次查看
bvermeul
Contributor I

First some context:
I am connecting an AMD Radeon GPU to the LS1012ARDB's mini PCIe slot in order to get it working with linux.

The GPU is visible on the PCIe bus, enumerates, gets it's BAR's assigned, and is recognized by the driver.

However, when it tries to get the GPU to write to a specific memory location, it fails.

Reading the reference manual (LS1012ARM.pdf, page 1237, section 25.1) it says the following:

The PCI Express controller as instantiated on this chip does not support hardware coherency. All incoming PCI Express transactions are made non IO-coherent.

Does this mean that when a PCIe device writes something into main memory, the caches aren't updated? If not, what does it mean? ARM - Cache coherency fundamentals seems to imply this.

Regards,

Bas Vermeulen

标签 (1)
0 项奖励
2 回复数

1,483 次查看
ufedor
NXP Employee
NXP Employee

For inbound requests received by the PEX controller, it is downstream EP’s job to ensure the correct “No Snoop” bit setting for all the inbound request TLPs. The hardware coherency of all inbound requests is managed by SMMU. (Please consider that LS1012A does not possess SMMU).


The default SMMU driver in Linux depends on hardware for coherent signals. The SMMU is not configured to enforce coherency by default. When the link partner sends us memory requests targeting non-CCSR space (above 0x0100_0000) with TLP header’s NO_SNOOP = 0, we will treat the transactions as hardware coherency required.  

0 项奖励

1,483 次查看
shuangjunzhu
NXP Employee
NXP Employee

Hi Ufedor,

Could you please point out how I could change the behavior of "default SMMU driver" to enforce coherency? Because we could not know whether the partner's request's NO_SNOOP is zero, but we want to make it always coherency?

Thanks,

Jeff

0 项奖励