Luca Tettamanti wrote:> When the old value and new one are the same the emulator skips the> write; this is undesiderable when the destination is a MMIO area and the> write shall be performed regardless of the previous value. This> optimization breaks e.g. a Linux guest APIC compiled without> X86_GOOD_APIC.>> Remove the check and always perform the writeback stage in the> emulation.>>

Unfortunately, this kills Windows XP (first run with a guest crash, second with a host oops), so I reverted it. I'd guess some operation which doesn't need writeback ends up in the modified code. Previously, the check caused it to skip writeback, but now it writes back random memory, causing a crash.