qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Helge Konetzka <hk@zapateado.de>
Subject: [PATCH for-9.0 0/4] vga: fix assertion failure with 4- and 16-color modes
Date: Tue,  2 Apr 2024 13:34:02 +0200	[thread overview]
Message-ID: <20240402113408.18048-1-pbonzini@redhat.com> (raw)

These patches (the first three especially) fix an assertion failure
introduced by horizontal pel panning support in VGA.  The assertion
triggers with legacy 4- and 16-color modes, due to a mismatch between
the addresses visited by vga_draw_graphic() and the region that is
passed to memory_region_snapshot_and_clear_dirty().

Patches 1 and 2 reorganize the code so that the "bits" value
(used in turn to check if horizontal pel panning is taken into
account) is available where the dirty memory region is computed.

Patch 3 is the actual bug fix.

Patch 4 is a small optimization that would also hide the bug, by
treating pel panning as disabled in the common case where the
register is set to 8 (bit 3 is ignored in graphics mode).
This one could be suitable for QEMU 9.0 but is not necessary.

Patches 5 and 6 are larger cleanups and optimizations in how the dirty
memory region is computed.  This is enabled by the availability of "bits"
where the dirty memory region is computed; it is now possible for 8-
and 15-bit modes to skip the slow path and only read dirty bits for a
small part of VRAM.

Paolo Bonzini (6):
  vga: merge conditionals on shift control register
  vga: move computation of dirty memory region later
  vga: adjust dirty memory region if pel panning is active
  vga: do not treat horiz pel panning value of 8 as "enabled"
  vga: optimize computation of dirty memory region
  vga: move dirty memory region code together

 hw/display/vga.c     | 152 ++++++++++++++++++++-----------------------
 1 file changed, 71 insertions(+), 81 deletions(-)

-- 
2.44.0



             reply	other threads:[~2024-04-02 11:35 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-02 11:34 Paolo Bonzini [this message]
2024-04-02 11:34 ` [PATCH for-9.0 1/4] vga: merge conditionals on shift control register Paolo Bonzini
2024-04-02 11:40   ` Philippe Mathieu-Daudé
2024-04-02 11:34 ` [PATCH for-9.0 2/4] vga: move computation of dirty memory region later Paolo Bonzini
2024-04-02 11:41   ` Philippe Mathieu-Daudé
2024-04-02 11:34 ` [PATCH for-9.0 3/4] vga: adjust dirty memory region if pel panning is active Paolo Bonzini
2024-04-02 11:43   ` Philippe Mathieu-Daudé
2024-04-02 11:34 ` [PATCH for-9.0 4/4] vga: do not treat horiz pel panning value of 8 as "enabled" Paolo Bonzini
2024-04-02 11:34 ` [PATCH for-9.1 5/4] vga: optimize computation of dirty memory region Paolo Bonzini
2024-04-02 11:34 ` [PATCH for-9.1 6/4] vga: move dirty memory region code together Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240402113408.18048-1-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=hk@zapateado.de \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).