From: Will Deacon <will.deacon@arm.com>
To: kvm@vger.kernel.org
Cc: penberg@kernel.org, marc.zyngier@arm.com,
c.dall@virtualopensystems.com, matt@ozlabs.org,
peter.maydell@linaro.org, michael@ellerman.id.au,
levinsasha928@gmail.com, kvmarm@lists.cs.columbia.edu,
Will Deacon <will.deacon@arm.com>
Subject: [PATCH v2 5/8] kvm tools: keep track of registered memory banks in struct kvm
Date: Thu, 22 Nov 2012 15:58:14 +0000 [thread overview]
Message-ID: <1353599897-15656-6-git-send-email-will.deacon@arm.com> (raw)
In-Reply-To: <1353599897-15656-1-git-send-email-will.deacon@arm.com>
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 <will.deacon@arm.com>
---
tools/kvm/include/kvm/kvm.h | 8 ++++++++
tools/kvm/kvm.c | 23 ++++++++++++++++++++++-
2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h
index cf959ea..9b4a9a4 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;
+ u64 guest_phys_addr;
+ void *host_addr;
+ u64 size;
+};
+
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;
bool nmi_disabled;
diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c
index b283171..1a10ec0 100644
--- a/tools/kvm/kvm.c
+++ b/tools/kvm/kvm.c
@@ -6,7 +6,9 @@
#include "kvm/kvm-cpu.h"
#include "kvm/kvm-ipc.h"
+#include <linux/kernel.h>
#include <linux/kvm.h>
+#include <linux/list.h>
#include <linux/err.h>
#include <sys/un.h>
@@ -133,9 +135,16 @@ struct kvm *kvm__new(void)
int kvm__exit(struct kvm *kvm)
{
+ struct kvm_mem_bank *bank, *tmp;
+
kvm__arch_delete_ram(kvm);
- free(kvm);
+ list_for_each_entry_safe(bank, tmp, &kvm->mem_banks, list) {
+ list_del(&bank->list);
+ free(bank);
+ }
+
+ free(kvm);
return 0;
}
core_exit(kvm__exit);
@@ -148,8 +157,18 @@ core_exit(kvm__exit);
int kvm__register_mem(struct kvm *kvm, u64 guest_phys, u64 size, void *userspace_addr)
{
struct kvm_userspace_memory_region mem;
+ struct kvm_mem_bank *bank;
int ret;
+ bank = malloc(sizeof(*bank));
+ if (!bank)
+ return -ENOMEM;
+
+ INIT_LIST_HEAD(&bank->list);
+ bank->guest_phys_addr = guest_phys;
+ bank->host_addr = userspace_addr;
+ bank->size = size;
+
mem = (struct kvm_userspace_memory_region) {
.slot = kvm->mem_slots++,
.guest_phys_addr = guest_phys,
@@ -161,6 +180,7 @@ int kvm__register_mem(struct kvm *kvm, u64 guest_phys, u64 size, void *userspace
if (ret < 0)
return -errno;
+ list_add(&bank->list, &kvm->mem_banks);
return 0;
}
@@ -245,6 +265,7 @@ int kvm__init(struct kvm *kvm)
kvm__arch_init(kvm, kvm->cfg.hugetlbfs_path, kvm->cfg.ram_size);
+ INIT_LIST_HEAD(&kvm->mem_banks);
kvm__init_ram(kvm);
if (!kvm->cfg.firmware_filename) {
--
1.8.0
next prev parent reply other threads:[~2012-11-22 18:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-22 15:58 [PATCH v2 0/8] kvm tools: add support for ARMv7 processors Will Deacon
2012-11-22 15:58 ` [PATCH v2 1/8] rbtree: include linux/compiler.h for definition of __always_inline Will Deacon
2012-11-22 18:44 ` Sasha Levin
2012-11-23 14:36 ` Will Deacon
2012-11-22 15:58 ` [PATCH v2 2/8] kvm tools: don't bother including linux/compiler.h Will Deacon
2012-11-22 15:58 ` [PATCH v2 3/8] kvm tools: balloon: add dummy set_size_vq implementation Will Deacon
2012-11-22 15:58 ` [PATCH v2 4/8] kvm tools: add generic device registration mechanism Will Deacon
2012-11-22 15:58 ` Will Deacon [this message]
2012-11-22 15:58 ` [PATCH v2 6/8] kvm tools: teach guest_flat_to_host about memory banks starting above 0 Will Deacon
2012-11-22 15:58 ` [PATCH v2 7/8] kvm tools: provide a mechanism for translating host to guest addresses Will Deacon
2012-11-22 15:58 ` [PATCH v2 8/8] kvm tools: add support for ARMv7 processors Will Deacon
2012-11-22 16:13 ` Peter Maydell
2012-11-22 16:22 ` Will Deacon
2012-11-23 11:22 ` [PATCH v2 0/8] " Pekka Enberg
2012-11-23 14:38 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1353599897-15656-6-git-send-email-will.deacon@arm.com \
--to=will.deacon@arm.com \
--cc=c.dall@virtualopensystems.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=levinsasha928@gmail.com \
--cc=marc.zyngier@arm.com \
--cc=matt@ozlabs.org \
--cc=michael@ellerman.id.au \
--cc=penberg@kernel.org \
--cc=peter.maydell@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.