You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description
Loads and stores to MMIO regions have special meanings. Flexus assumes loads are idempotent (i.e., not destructive). However, this is not correct; reading an MMIO value might clear its value and make QEMU go into the wrong path.
Steps to Reproduce
Run data caching image with 2 cores
There will be ldr w2, [x2] instruction doing a read from address 0x80_0001_0000, which is in an MMIO region
Expected Behavior
Flexus should not attempt to read the value because it might be destructive, and resync with QEMU afterwards.
Actual Behavior
Flexus reads the value which clears it. QEMU gets wrong data from the load and gives a validation error
Also, a small bug for stores; there are 2 MMIO regions (<0x4000_0000 and >0x40_0000_0000). Currently, Flexus discards the stores only to the first MMIO region. It should also discard stores to the second MMIO region. Fix: 47b8e03
P.S. The starting location of the high MMIO region depends on the RAM configuration. For any RAM below 256GB the location starts at 0x40_0000_0000, so we hardcoded that value. However, if there is an image with larger RAM, we need to correct it.
Description
Loads and stores to MMIO regions have special meanings. Flexus assumes loads are idempotent (i.e., not destructive). However, this is not correct; reading an MMIO value might clear its value and make QEMU go into the wrong path.
Steps to Reproduce
Run data caching image with 2 cores
There will be ldr w2, [x2] instruction doing a read from address 0x80_0001_0000, which is in an MMIO region
Expected Behavior
Flexus should not attempt to read the value because it might be destructive, and resync with QEMU afterwards.
Actual Behavior
Flexus reads the value which clears it. QEMU gets wrong data from the load and gives a validation error
Fix: c700de3
The text was updated successfully, but these errors were encountered: