Intel® 80219 General Purpose PCI Processor
Core Errata
10.Aborted Store that Hits the Data Cache May Mark Writeback Data As Dirty
Problem: | When there is an aborted store that hits clean data in the data cache (data in an aligned four word |
| range, that has not been modified from the core, since it was last loaded in from memory or |
| cleaned), the data in the array is not modified (the store is blocked), but the dirty bit is set. |
| When the line is then aged out of the data cache or explicitly cleaned, the data in that four word |
| range is evicted to external memory, even though it has never been changed. In normal operation, |
| this is nothing more than an extra store on the bus, that writes the same data to memory as is |
| already there. |
Here is the boundary condition where this might be visible:
1.a cache line is loaded into the cache at address A
2.another master externally modifies address A
3.a core store instruction attempts to modify A, hits the cache, aborts because of MMU permissions, and is backed out of the cache. That line should not be marked dirty, but because of this errata is marked as dirty.
4.the cache line at A then ages out or is explicitly cleaned. The original data from location A is evicted to external memory, overwriting the data written by the external master.
This only happens when software is allowing an external master to modify memory, that is, writeback or
Workaround: For this shared memory region, mark it as
Status: NoFix.
16 | Specification Update |