On Friday 19 December 2014 22:14:11 Hanjun Guo wrote:
- I'm guessing that the algorithm is not what was originally intended here. Note that you can never have a child device that is more coherent than its parent. If you have a device that is marked coherent, and its parent is marked noncoherent,
^ I think you mean child here?
the latter should probably considered an override.
The _CCA method means the device and its child are memory coherency. I think you mean the same thing?
No. What I mean is that I'd expect that method to only refer to local coherency: you may have a hierarchy in which a device is coherent for DMA with its parent and therefore it is marked as coherent, but the parent is marked as noncoherent because it does not participate in the coherency domain of the grandparent device.
Coherency is always defined between two points in the system. Usually you only care about coherency between one device and the CPU's view of main memory, but the device itself may not understand the entire hierarchy and only contain the method to describe how it relates to its immediate parent or local NUMA node.
Arnd