How to flush write buffer when memory attribute is normal_nc


I am working on access pcie bar in armv8-a cpu(cortex-A5x) powered soc. Right now, I encounter an issue about (maybe) coherent issue.

When I write data(4 bytes aligned) to pcie bar with ioremap_wc, there is some incorrect data. And it is correct if write data twice. Or I make use of the ioremap which means device_nGnRE attribute.

When I read the armv8 arm, it say that the write of normal_nc is visible for all the observers. I am not sure if the cache maintenance should work. I want to know what is the best practice in these senario. Is there something like flush write buffer helping me flushing data to pcie bar? 

There is no coherent between arm cpu and pcie. 


More questions in this forum