2011年9月13日 星期二

2.6.35 cache operation

pci_dma_sync_single_for_device
dma_sync_single_for_device
dma_sync_single_range_for_device
__dma_single_cpu_to_dev
___dma_single_cpu_to_dev
dmac_map_area = cpu_cache.dma_map_area
v6_dma_map_area

if (DMA_FROM_DEVICE) v6_dma_inv_range
v6_dma_clean_range



pci_dma_sync_single_for_cpu
dma_sync_single_for_cpu
dma_sync_single_range_for_cpu
__dma_single_dev_to_cpu
___dma_single_dev_to_cpu
dmac_unmap_area = cpu_cache.dma_unmap_area
v6_dma_unmap_area
if(!DMA_TO_DEVICE) v6_dma_inv_range



  • ...for_cpu
    • FROM_DEVICE: inv
    • TO_DEVICE: N/A
    • BIDIRECTIONAL: inv
  • ...for_device
    • FROM_DEVICE: inv, clean
    • TO_DEVICE: clean
    • BIDIRECTIONAL: clean

Linux term/arm's cache op
v6_dma_inv_range ==> inv
v6_dma_clean_range ==> clean
v6_dma_flush_range ==> clean+inv

沒有留言: