From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [RFC v5 00/86] Memory API Date: Thu, 21 Jul 2011 16:19:13 +0200 Message-ID: <4E283561.9040801@siemens.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> <4E282D19.1040506@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: "qemu-devel@nongnu.org" , "kvm@vger.kernel.org" To: Avi Kivity Return-path: Received: from thoth.sbs.de ([192.35.17.2]:28102 "EHLO thoth.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751147Ab1GUOTX (ORCPT ); Thu, 21 Jul 2011 10:19:23 -0400 In-Reply-To: <4E282D19.1040506@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 2011-07-21 15:43, Avi Kivity wrote: >>>> @@ -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. Then the logic indeed belongs to kvm-all.c, not memory.c. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux