[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