From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [RFC v5 00/86] Memory API Date: Thu, 21 Jul 2011 16:43:53 +0300 Message-ID: <4E282D19.1040506@redhat.com> References: <1311180636-17012-1-git-send-email-avi@redhat.com> <4E27132E.6080504@siemens.com> <4E2713C9.1030604@redhat.com> <4E274C06.40902@web.de> <4E27E52D.1090600@redhat.com> <4E282BDD.9010206@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([209.132.183.28]:51999 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750987Ab1GUNoA (ORCPT ); Thu, 21 Jul 2011 09:44:00 -0400 In-Reply-To: <4E282BDD.9010206@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: On 07/21/2011 04:38 PM, Jan Kiszka wrote: > On 2011-07-21 10:37, Avi Kivity wrote: > > On 07/21/2011 12:43 AM, Jan Kiszka wrote: > >> On 2011-07-20 19:43, Avi Kivity wrote: > >> > On 07/20/2011 08:41 PM, Jan Kiszka wrote: > >> >> On 2011-07-20 18:49, Avi Kivity wrote: > >> >> > New in this version: > >> >> > - more mindless conversions; I believe there are no longer any > >> >> destructive > >> >> > operations in the tree (IO_MEM_UNASSIGNED) > >> >> > - fix memory map generation bug (patch 13) > >> >> > - proper 440FX PAM/SMRAM and PCI holes > >> >> > > >> >> > >> >> This on top fixes standard VGA dirty logging: > >> > > >> > Both work for me without any patches. > >> > >> Impossible! ;) > >> > >> VGA frame buffer cannot work as no one enabled dirty logging for that > >> range so far. Try -vga std with vga=0x314 in the guest. > >> > > > > Right, actually booting into X showed that. But I don't understand how > > it worked before - my patches only change how vga_start_dirty_log() is > > implemented, not when/where it is called. > > To answer this question as well: You dropped all the vga_start_dirty_log > originally performed during PCI mapping. > Ah, I see it now, in vga_map(). Thanks. > >> @@ -1093,9 +1093,26 @@ void > >> memory_region_add_subregion_overlap(MemoryRegion *mr, > >> void memory_region_del_subregion(MemoryRegion *mr, > >> MemoryRegion *subregion) > >> { > >> + MemoryRegion *target_region; > >> + ram_addr_t base, offs; > >> + > >> assert(subregion->parent == mr); > >> subregion->parent = NULL; > >> QTAILQ_REMOVE(&mr->subregions, subregion, subregions_link); > >> + > >> + if (subregion->alias) { > >> + base = subregion->alias_offset; > >> + target_region = subregion->alias; > >> + } else { > >> + base = 0; > >> + target_region = subregion; > >> + } > >> + if (target_region->dirty_log_mask) { > >> + for (offs = 0; offs< subregion->size; offs += > >> TARGET_PAGE_SIZE) { > >> + memory_region_set_dirty(target_region, base + offs); > >> + } > >> + } > >> + > > > > The subregion may be partially or fully obstructed. This needs to be > > done at the FlatRange level (as_memory_range_del(), most likely). > > Makes some sense. I even wonder if this isn't a KVM deficit and should > be handled there when a logged region is unmapped. What do you mean? There is a known issue with kvm here, this is a just workaround. -- error compiling committee.c: too many arguments to function