Visible to Intel only — GUID: evv1685725221417
Ixiasoft
Visible to Intel only — GUID: evv1685725221417
Ixiasoft
3.1.7. 1131793: Stores might prevent progress of an exclusive loop
Description
If stores are included in a loop with a load and store exclusive sequence, then they might prevent the exclusive sequence from passing.
Conditions
- A loop including a load and store exclusive instruction is executed.
- The loop contains additional store instructions before the load exclusive, or after the store exclusive, which get executed every time around the loop, including when the loop is re-executed because the store exclusive is failing.
- The additional store instructions are at least two stores to the same cache line, and both stores are cacheable. The stores can be to a different cache line from the load and store exclusive.
- The stores must either:
- Not allocate into the cache. This means that they are memory marked as either Cacheable No Write-Allocate or Transient, or that the stores are non-temporal.
- Be to the same cache line as an address that is being repeatedly read by another core.
Impact
The store exclusive sequence might continually fail, causing a software livelock. Interrupts can still be taken so the OS or hypervisor can break out of the loop.
Workaround
Non-allocating stores are not expected in typical exclusive loops. Such loops should be rewritten to use allocating stores. If the address being stored to is likely to be polled by another core, then the stores should be moved outside of the exclusive loop.
Category
Category C