[pve-devel] [PATCH qemu] add backport for windows console crash
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Apr 24 14:58:33 CEST 2019
Am 4/8/19 um 3:55 PM schrieb Dominik Csapak:
> fixes an occasional crash when users go to the console of a windows vm
>
So, with the 3.0.1 release this is obsolete, as there it's already
included:
https://git.proxmox.com/?p=mirror_qemu.git;a=commitdiff;h=a89fe6c329799e47aaa1663650f076b28808e186
Next time please point to the upstream commit, `git cherry-pick -x` would
do all the work for you. While one can find this out, including it saves time
and you already had the info :-)
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> debian/patches/extra/0019-vga-catch-depth-0.patch | 68 +++++++++++++++++++++++
> debian/patches/series | 1 +
> 2 files changed, 69 insertions(+)
> create mode 100644 debian/patches/extra/0019-vga-catch-depth-0.patch
>
> diff --git a/debian/patches/extra/0019-vga-catch-depth-0.patch b/debian/patches/extra/0019-vga-catch-depth-0.patch
> new file mode 100644
> index 0000000..00108c2
> --- /dev/null
> +++ b/debian/patches/extra/0019-vga-catch-depth-0.patch
> @@ -0,0 +1,68 @@
> +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
> +From: Gerd Hoffmann <kraxel at redhat.com>
> +Date: Mon, 14 May 2018 12:31:17 +0200
> +Subject: [PATCH] vga: catch depth 0
> +
> +depth == 0 is used to indicate 256 color modes. Our region calculation
> +goes wrong in that case. So detect that and just take the safe code
> +path we already have for the wraparound case.
> +
> +While being at it also catch depth == 15 (where our region size
> +calculation goes wrong too). And make the comment more verbose,
> +explaining what is going on here.
> +
> +Without this windows guest install might trigger an assert due to trying
> +to check dirty bitmap outside the snapshot region.
> +
> +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1575541
> +Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> +Message-id: 20180514103117.21059-1-kraxel at redhat.com
> +---
> + hw/display/vga.c | 23 ++++++++++++++++++-----
> + 1 file changed, 18 insertions(+), 5 deletions(-)
> +
> +diff --git a/hw/display/vga.c b/hw/display/vga.c
> +index 72181330b8..a7794f6d1f 100644
> +--- a/hw/display/vga.c
> ++++ b/hw/display/vga.c
> +@@ -1480,13 +1480,28 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
> +
> + s->get_resolution(s, &width, &height);
> + disp_width = width;
> ++ depth = s->get_bpp(s);
> +
> + region_start = (s->start_addr * 4);
> + region_end = region_start + (ram_addr_t)s->line_offset * height;
> +- region_end += width * s->get_bpp(s) / 8; /* scanline length */
> ++ region_end += width * depth / 8; /* scanline length */
> + region_end -= s->line_offset;
> +- if (region_end > s->vbe_size) {
> +- /* wraps around (can happen with cirrus vbe modes) */
> ++ if (region_end > s->vbe_size || depth == 0 || depth == 15) {
> ++ /*
> ++ * We land here on:
> ++ * - wraps around (can happen with cirrus vbe modes)
> ++ * - depth == 0 (256 color palette video mode)
> ++ * - depth == 15
> ++ *
> ++ * Take the safe and slow route:
> ++ * - create a dirty bitmap snapshot for all vga memory.
> ++ * - force shadowing (so all vga memory access goes
> ++ * through vga_read_*() helpers).
> ++ *
> ++ * Given this affects only vga features which are pretty much
> ++ * unused by modern guests there should be no performance
> ++ * impact.
> ++ */
> + region_start = 0;
> + region_end = s->vbe_size;
> + force_shadow = true;
> +@@ -1520,8 +1535,6 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
> + }
> + }
> +
> +- depth = s->get_bpp(s);
> +-
> + /*
> + * Check whether we can share the surface with the backend
> + * or whether we need a shadow surface. We share native
> diff --git a/debian/patches/series b/debian/patches/series
> index 13e927c..fda0928 100644
> --- a/debian/patches/series
> +++ b/debian/patches/series
> @@ -54,3 +54,4 @@ extra/0015-pvrdma-add-uar_read-routine.patch
> extra/0016-pvrdma-check-number-of-pages-when-creating-rings.patch
> extra/0017-pvrdma-check-return-value-from-pvrdma_idx_ring_has_-.patch
> extra/0018-lsi53c895a-check-message-length-value-is-valid.patch
> +extra/0019-vga-catch-depth-0.patch
>
More information about the pve-devel
mailing list