On 19/10/20 20:15, Ben Gardon wrote: > When getting the dirty log, we > follow the following steps: > 1. Atomically get and clear an unsigned long of the dirty bitmap > 2. For each GFN in the range of pages covered by the unsigned long mask: > 3. Clear the dirty or writable bit on the SPTE > 4. Copy the mask of dirty pages to be returned to userspace > > If we mark the page as dirty in the dirty bitmap in step 3, we'll > report the page as dirty twice - once in this dirty log call, and > again in the next one. This can lead to unexpected behavior: > 1. Pause all vCPUs > 2. Get the dirty log <--- Returns all pages dirtied before the vCPUs were paused > 3. Get the dirty log again <--- Unexpectedly returns a non-zero number > of dirty pages even though no pages were actually dirtied Got it, that might also fail the dirty_log_test. Thanks! Paolo