From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mabkf-0002Iz-C4 for qemu-devel@nongnu.org; Mon, 10 Aug 2009 16:45:53 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mabka-0002G1-Sv for qemu-devel@nongnu.org; Mon, 10 Aug 2009 16:45:52 -0400 Received: from [199.232.76.173] (port=49813 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mabka-0002Ft-Df for qemu-devel@nongnu.org; Mon, 10 Aug 2009 16:45:48 -0400 Received: from mail-pz0-f196.google.com ([209.85.222.196]:61421) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MabkZ-0002Cm-Sb for qemu-devel@nongnu.org; Mon, 10 Aug 2009 16:45:48 -0400 Received: by pzk34 with SMTP id 34so3069511pzk.4 for ; Mon, 10 Aug 2009 13:45:45 -0700 (PDT) MIME-Version: 1.0 Date: Mon, 10 Aug 2009 13:45:45 -0700 Message-ID: <6c407d800908101345v46fe6e01ie3f3eb863e324852@mail.gmail.com> From: aflist2@gmail.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] cirrus vga output corrupts on windows 98 after commit 2bec46dc97571a3c34b18fe4ca198e7bfbdca41f List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org hello, when i run windows 98 with cirrus graphics, a corrupted version of the boot graphic appears and the vm freezes. a picture of the screen is at http://i31.tinypic.com/23sd5dd.jpg according to git-bisect, this is the commit that breaks it: http://git.savannah.gnu.org/cgit/qemu.git/commit/?id=2bec46dc97571a3c34b18fe4ca198e7bfbdca41f vga optimization Hypervisors like KVM perform badly while doing mmio on a loop, because it'll generate an exit on each access. This is the case with VGA, which results in very bad performance. In this patch, we map the linear frame buffer as RAM, make sure it has dirty region tracking enabled, and then just let the region to be written. notes: * after this commit, it behaves as if i have less video ram. smaller available modes, in less color depth. i have not found any software that can display windows 98 detected video ram in 16 colors mode, so i can't say how much the broken version finds. the working version detects 4MB. * qemu's window is resized to the correct resolution selected before graphic corruption. * i can reproduce this bug on latest git, 0.11.0-rc1, and 0.10.6. 0.9.1 is unaffected. * anything greater than 640x480x16 colors freezes