qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* Use of migrate_add_blocker() in qxl.c
@ 2021-07-10  6:51 Markus Armbruster
  0 siblings, 0 replies; only message in thread
From: Markus Armbruster @ 2021-07-10  6:51 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: qemu-devel

migrate_add_blocker() fails when running with --only-migratable, and
when migration is in progress.

qxl.c continues after migrate_add_blocker() fails:

        {
            /*
             * Windows 8 drivers place qxl commands in the vram
             * (instead of the ram) bar.  We can't live migrate such a
             * guest, so add a migration blocker in case we detect
             * this, to avoid triggering the assert in pre_save().
             *
             * https://cgit.freedesktop.org/spice/win32/qxl-wddm-dod/commit/?id=f6e099db39e7d0787f294d5fd0dce328b5210faa
             */
            void *msg = qxl_phys2virt(qxl, ext->cmd.data, ext->group_id);
            if (msg != NULL && (
                    msg < (void *)qxl->vga.vram_ptr ||
                    msg > ((void *)qxl->vga.vram_ptr + qxl->vga.vram_size))) {
                if (!qxl->migration_blocker) {
                    Error *local_err = NULL;
                    error_setg(&qxl->migration_blocker,
                               "qxl: guest bug: command not in ram bar");
                    migrate_add_blocker(qxl->migration_blocker, &local_err);
                    if (local_err) {
                        error_report_err(local_err);
                    }
                }
            }
        }

Why is this safe?  If the blocker is needed to prevent a crash, as the
comment says, then what prevents the crash when adding the blocker
fails?

Code goes back to

    commit 86dbcdd9c7590d06db89ca256c5eaf0b4aba8858
    Author: Gerd Hoffmann <kraxel@redhat.com>
    Date:   Mon Apr 10 13:31:31 2017 +0200

        qxl: add migration blocker to avoid pre-save assert

        Cc: 1635339@bugs.launchpad.net
        Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
        Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
        Message-id: 20170410113131.2585-1-kraxel@redhat.com



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-10  6:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-10  6:51 Use of migrate_add_blocker() in qxl.c Markus Armbruster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).