From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH 1/5] re-register whole area upon lfb unmap. Date: Wed, 17 Dec 2008 14:53:14 -0600 Message-ID: <494966BA.7000100@codemonkey.ws> References: <1229546822-11972-1-git-send-email-glommer@redhat.com> <1229546822-11972-2-git-send-email-glommer@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, avi@redhat.com, stefano.stabellini@eu.citrix.com, Ian.Jackson@eu.citrix.com To: Glauber Costa Return-path: Received: from ey-out-2122.google.com ([74.125.78.27]:46019 "EHLO ey-out-2122.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751318AbYLQUxX (ORCPT ); Wed, 17 Dec 2008 15:53:23 -0500 Received: by ey-out-2122.google.com with SMTP id 6so13308eyi.37 for ; Wed, 17 Dec 2008 12:53:22 -0800 (PST) In-Reply-To: <1229546822-11972-2-git-send-email-glommer@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Glauber Costa wrote: > set phys_offset correctly for the whole vga area when unmapping linear vram > (for vga optimization). We first register the old pieces as unassigned > memory, to make things easier for kvm (and possibly other slot based > implementations in the future). Replacing the region directly would > make the slot management significantly more complex. > This change worries me because it involves explicitly unassigning slots and then assigning a new, bigger slot. This is not necessary for TCG. It suggests to me that there's a bug in the kvm slot code and that we're changing QEMU to work around it. That will means there may be other places in the code that are completely valid, but exercise this bug. Or is this purely an optimization? Regards, Anthony Liguori > Signed-off-by: Glauber Costa > --- > hw/cirrus_vga.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c > index 83c5f40..6e81906 100644 > --- a/hw/cirrus_vga.c > +++ b/hw/cirrus_vga.c > @@ -2658,8 +2658,10 @@ static void map_linear_vram(CirrusVGAState *s) > vga_dirty_log_start((VGAState *)s); > } > else { > - cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x8000, s->vga_io_memory); > - cpu_register_physical_memory(isa_mem_base + 0xa8000, 0x8000, s->vga_io_memory); > + cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x8000, IO_MEM_UNASSIGNED); > + cpu_register_physical_memory(isa_mem_base + 0xa8000, 0x8000, IO_MEM_UNASSIGNED); > + > + cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x20000, s->vga_io_memory); > } > > } >