From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: Re: [RFC PATCH 13/16] kvm tools: keep track of registered memory banks in struct kvm Date: Mon, 12 Nov 2012 23:37:38 -0500 Message-ID: <50A1CE92.6060803@gmail.com> References: <1352721450-11340-1-git-send-email-will.deacon@arm.com> <1352721450-11340-14-git-send-email-will.deacon@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, penberg@kernel.org, marc.zyngier@arm.com, c.dall@virtualopensystems.com, matt.evans@arm.com, peter.maydell@linaro.org To: Will Deacon Return-path: Received: from mail-vc0-f174.google.com ([209.85.220.174]:65078 "EHLO mail-vc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752481Ab2KMEiA (ORCPT ); Mon, 12 Nov 2012 23:38:00 -0500 Received: by mail-vc0-f174.google.com with SMTP id fk26so6967076vcb.19 for ; Mon, 12 Nov 2012 20:37:59 -0800 (PST) In-Reply-To: <1352721450-11340-14-git-send-email-will.deacon@arm.com> Sender: kvm-owner@vger.kernel.org List-ID: On 11/12/2012 06:57 AM, Will Deacon wrote: > When registering memory banks for a guest, it is useful to keep the > range information around for translating between guest and host address > spaces. > > This patch adds a list of kvm_mem_bank structures to struct kvm, which > is updated when a new bank is registered. > > Signed-off-by: Will Deacon > --- > tools/kvm/include/kvm/kvm.h | 8 ++++++++ > tools/kvm/kvm.c | 23 ++++++++++++++++++++++- > 2 files changed, 30 insertions(+), 1 deletions(-) > > diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h > index cf959ea..96dd81b 100644 > --- a/tools/kvm/include/kvm/kvm.h > +++ b/tools/kvm/include/kvm/kvm.h > @@ -35,6 +35,13 @@ struct kvm_ext { > int code; > }; > > +struct kvm_mem_bank { > + struct list_head list; > + unsigned long guest_phys_addr; > + void *host_addr; > + unsigned long size; > +}; Can we just reuse struct kvm_userspace_memory_region here? We're also using different data types for guest_phys_addr and size than whats in kvm_userspace_memory_region - that can't be good. > struct kvm { > struct kvm_arch arch; > struct kvm_config cfg; > @@ -49,6 +56,7 @@ struct kvm { > u64 ram_size; > void *ram_start; > u64 ram_pagesize; > + struct list_head mem_banks; These memory banks actually look like a perfect example to use our augmented interval rb-tree, can we switch them to use it, or is it a list on purpose? Thanks, Sasha