存在这样一种现象:
设备往系统MEMORY中写数据,“认为”该笔数据写完之后,触发中断
中断函数处理该笔数据,但事实上,系统MEMORY中的数据,可能是STALE的
导致该问题的原因,
第一,写数据是POST的
第二,写的过程可能会被DELAY
第三,一旦有DELAY,就可能导致中断先于数据写先到
方法一:
dummy read
在ISR中加一个device read,因为有transaction ordering, 所以,读返回之前,写数据必定写完了
方法二:
MSI
transaction ordering保证写数据先于MSI写完成
从transaction ordering角度考虑问题的时候,就必须保证,他们有同样的TC(VC)
即使保证了TC(VC)的相同,也必须不使用relax ordering