On 3/9/22 17:11, David Woodhouse wrote:
That's OK, as the pending events are in the shared_info and vcpu_info regions which we have explicitly declared exempt from dirty tracking. Userspace must always consider them dirty any time an interrupt (which includes timers) might be delivered, so it has to migrate that memory in the final sync, after serializing the vCPU state. In the local APIC delivery mode, the actual interrupt is injected as an MSI, so userspace needs to read the timer state before the local APIC state.
Please document this. It's not obvious from the fact that they're not dirty-tracked.
Paolo