Skip to contentSkip to conversation

KVM: VMX: Clean up private memory slot allocation

PATCH In review Sheng Yang 2 participants 3 messages Nov 11, 2008 – Nov 14, 2008

Subsystems (3)
lore
Share & tools
lore

Sheng Yang

author
#0 lore raw

PATCH 1/1 KVM: VMX: Clean up private memory slot allocation

userspace_addr should be a meaningless value.
(Any suggestion on this "meaningless value"?)

---
 arch/x86/kvm/vmx.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
arch/x86/kvm/vmx.c +4 -0
index 8043352..640d11a 100644
@@ -2022,6 +2022,8 @@ static int alloc_apic_access_page(struct kvm *kvm)
 	kvm_userspace_mem.flags = 0;
 	kvm_userspace_mem.guest_phys_addr = 0xfee00000ULL;
 	kvm_userspace_mem.memory_size = PAGE_SIZE;
+	/* userspace_addr is invalid, make it unaligned */
+	kvm_userspace_mem.userspace_addr = PAGE_SIZE - 1;
 	r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
 	if (r)
 		goto out;
@@ -2044,6 +2046,8 @@ static int alloc_identity_pagetable(struct kvm *kvm)
 	kvm_userspace_mem.flags = 0;
 	kvm_userspace_mem.guest_phys_addr = VMX_EPT_IDENTITY_PAGETABLE_ADDR;
 	kvm_userspace_mem.memory_size = PAGE_SIZE;
+	/* userspace_addr is invalid, make it unaligned */
+	kvm_userspace_mem.userspace_addr = PAGE_SIZE - 1;
 	r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
 	if (r)
 		goto out;
Signature · 1 line
1.5.4.5
#1 lore raw
Quoted 2 lines · Sheng Yang

userspace_addr should be a meaningless value.

Perhaps in __kvm_set_memory_region(), if !user_alloc?

Why is it needed? Did you observe any problem?

Quoted 19 lines
arch/x86/kvm/vmx.c +4 -0
@@ -2022,6 +2022,8 @@ static int alloc_apic_access_page(struct kvm *kvm)
 	kvm_userspace_mem.flags = 0;
 	kvm_userspace_mem.guest_phys_addr = 0xfee00000ULL;
 	kvm_userspace_mem.memory_size = PAGE_SIZE;
+	/* userspace_addr is invalid, make it unaligned */
+	kvm_userspace_mem.userspace_addr = PAGE_SIZE - 1;
 	r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
 	if (r)
 		goto out;
@@ -2044,6 +2046,8 @@ static int alloc_identity_pagetable(struct kvm *kvm)
 	kvm_userspace_mem.flags = 0;
 	kvm_userspace_mem.guest_phys_addr = VMX_EPT_IDENTITY_PAGETABLE_ADDR;
 	kvm_userspace_mem.memory_size = PAGE_SIZE;
+	/* userspace_addr is invalid, make it unaligned */
+	kvm_userspace_mem.userspace_addr = PAGE_SIZE - 1;
 	r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
 	if (r)
 		goto out;
Signature · 1 line
error compiling committee.c: too many arguments to function
author
#2 lore raw
Quoted 6 lines · On Thursday 13 November 2008 20:27:13 Avi Kivity wrote:
Quoted 1 line · Sheng Yang

userspace_addr should be a meaningless value.

Perhaps in __kvm_set_memory_region(), if !user_alloc?

Why is it needed? Did you observe any problem?

A potential issue is kvm_userspace_mem.userspace_addr don't have value, so for the recent case, it won't show stably everytime... So I think it's a potential issue, to prevent further confusing on this (if necessary).

Signature · 2 lines
regards
Yang, Sheng
Quoted 19 lines
Quoted 19 lines
arch/x86/kvm/vmx.c +4 -0
@@ -2022,6 +2022,8 @@ static int alloc_apic_access_page(struct kvm *kvm)
 	kvm_userspace_mem.flags = 0;
 	kvm_userspace_mem.guest_phys_addr = 0xfee00000ULL;
 	kvm_userspace_mem.memory_size = PAGE_SIZE;
+	/* userspace_addr is invalid, make it unaligned */
+	kvm_userspace_mem.userspace_addr = PAGE_SIZE - 1;
 	r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
 	if (r)
 		goto out;
@@ -2044,6 +2046,8 @@ static int alloc_identity_pagetable(struct kvm
 *kvm) kvm_userspace_mem.flags = 0;
 	kvm_userspace_mem.guest_phys_addr = VMX_EPT_IDENTITY_PAGETABLE_ADDR;
 	kvm_userspace_mem.memory_size = PAGE_SIZE;
+	/* userspace_addr is invalid, make it unaligned */
+	kvm_userspace_mem.userspace_addr = PAGE_SIZE - 1;
 	r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
 	if (r)
 		goto out;