]> git.baikalelectronics.ru Git - kernel.git/commit
qxl: Make sure qxl_cursor memory is pinned
authorChristophe Fergeau <cfergeau@redhat.com>
Tue, 20 Nov 2018 16:20:04 +0000 (17:20 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 21 Nov 2018 08:12:46 +0000 (09:12 +0100)
commitcd6c2436f1afc4525be6dccb7d0607a0db69caff
tree6cff11e8bce594f84bf9ff9ff4bacf720e4abdee
parent2f6c8de17d24a5ceccb64225ac74f8a3d49bc29f
qxl: Make sure qxl_cursor memory is pinned

QEMU keeps a vram reference to the last QXLCursorCmd it received.
This QXLCursorCmd command points to a QXLCursor instance (stored in vram
too). However, while the QXLCursorCmd memory is pinned, the QXLCursor
memory is not.

When booting a recent Fedora to its login screen while monitoring the
QXLCursorCmd QEMU holds, it's possible to see the QXLCursor memory
becoming invalid shortly after boot. Pinning that memory ensures that
that QXLCursor memory is not going to be moved by the guest kernel.

Moving the pin/unpin to qxl_release_list_add()/qxl_release_free_list()
would be a more generic fix. However, doing this quickly exhausts QXL
video memory, so more fixing would be needed before this is workable.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20181120162004.22807-3-cfergeau@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
drivers/gpu/drm/qxl/qxl_display.c