[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Use of migrate_add_blocker() in qxl.c
|
From: |
Markus Armbruster |
|
Subject: |
Use of migrate_add_blocker() in qxl.c |
|
Date: |
Sat, 10 Jul 2021 08:51:20 +0200 |
|
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
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
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- Use of migrate_add_blocker() in qxl.c,
Markus Armbruster <=