• A
    ui/console: ensure graphic updates don't race with TCG vCPUs · 8bb93c6f
    Alex Bennée 提交于
    Commit 8d04fb55..
    
      tcg: drop global lock during TCG code execution
    
    ..broke the assumption that updates to the GUI couldn't happen at the
    same time as TCG vCPUs where running. As a result the TCG vCPU could
    still be updating a directly mapped frame-buffer while the display
    side was updating. This would cause artefacts to appear when the
    update code assumed that memory block hadn't changed.
    
    The simplest solution is to ensure the two things can't happen at the
    same time like the old BQL locking scheme. Here we use the solution
    introduced for MTTCG and schedule the update as async_safe_work when
    we know no vCPUs can be running.
    Reported-by: NMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
    Message-id: 20170315144825.3108-1-alex.bennee@linaro.org
    Cc: BALATON Zoltan <balaton@eik.bme.hu>
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
    
    [ kraxel: updated comment clarifying the display adapters are buggy
              and this is a temporary workaround ]
    Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
    8bb93c6f
console.c 60.8 KB