All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerone Young <jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Cc: kvm-ppc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: [PATCH 04 of 20] Move kvm_alloc_userspace_memory to libkvm-x86.c
Date: Fri, 02 Nov 2007 05:36:40 -0500	[thread overview]
Message-ID: <5ad14643e8eccb6aec15.1193999800@thinkpad> (raw)
In-Reply-To: <patchbomb.1193999796@thinkpad>

# HG changeset patch
# User Jerone Young <jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
# Date 1193997182 18000
# Node ID 5ad14643e8eccb6aec15a5b7779f9a026dd2d204
# Parent  dcf5d603165aad6e5276e3fdda81e1be2a6595ae
Move kvm_alloc_userspace_memory to libkvm-x86.c

This moves x86 specific function kvm_alloc_userspace_memory() out
of libkvm.c into libkvm-x86.c.

Signed-off-by: Jerone Young <jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>

diff --git a/libkvm/kvm-x86.h b/libkvm/kvm-x86.h
--- a/libkvm/kvm-x86.h
+++ b/libkvm/kvm-x86.h
@@ -28,4 +28,7 @@ int kvm_alloc_kernel_memory(kvm_context_
 int kvm_alloc_kernel_memory(kvm_context_t kvm, unsigned long memory,
 								void **vm_mem);
 
+int kvm_alloc_userspace_memory(kvm_context_t kvm, unsigned long memory,
+								void **vm_mem);
+
 #endif
diff --git a/libkvm/libkvm-x86.c b/libkvm/libkvm-x86.c
--- a/libkvm/libkvm-x86.c
+++ b/libkvm/libkvm-x86.c
@@ -1,6 +1,9 @@
 #include "libkvm.h"
 #include "kvm-x86.h"
 #include "kvm-context.h"
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <string.h>
 #include <unistd.h>
 #include <stropts.h>
 #include <sys/mman.h>
@@ -80,3 +83,107 @@ int kvm_alloc_kernel_memory(kvm_context_
 
 	return 0;
 }
+
+
+#ifdef KVM_CAP_USER_MEMORY
+
+int kvm_alloc_userspace_memory(kvm_context_t kvm, unsigned long memory,
+								void **vm_mem)
+{
+	unsigned long dosmem = 0xa0000;
+	unsigned long exmem = 0xc0000;
+	unsigned long pcimem = 0xe0000000;
+	int r;
+	int tss_ext;
+	struct kvm_userspace_memory_region low_memory = {
+		.memory_size = memory  < dosmem ? memory : dosmem,
+		.guest_phys_addr = 0,
+	};
+	struct kvm_userspace_memory_region extended_memory = {
+		.memory_size = memory < exmem ? 0 : memory - exmem,
+		.guest_phys_addr = exmem,
+	};
+	struct kvm_userspace_memory_region above_4g_memory = {
+		.memory_size = memory < pcimem ? 0 : memory - pcimem,
+		.guest_phys_addr = 0x100000000ULL,
+	};
+
+#ifdef KVM_CAP_SET_TSS_ADDR
+	tss_ext = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_SET_TSS_ADDR);
+#else
+	tss_ext = 0;
+#endif
+
+	if (memory >= pcimem) {
+		extended_memory.memory_size = pcimem - exmem;
+		*vm_mem = mmap(NULL, memory + 0x100000000ULL - pcimem,
+				PROT_READ|PROT_WRITE, MAP_ANONYMOUS |
+							MAP_SHARED, -1, 0);
+	}
+	else
+		*vm_mem = mmap(NULL, memory, PROT_READ|PROT_WRITE, MAP_ANONYMOUS
+							| MAP_SHARED, -1, 0);
+	if (*vm_mem == MAP_FAILED) {
+		fprintf(stderr, "kvm_alloc_userspace_memory: %s", strerror(errno));
+		return -1;
+	}
+
+	low_memory.userspace_addr = (unsigned long)*vm_mem;
+	low_memory.slot = get_free_slot(kvm);
+	/* 640K should be enough. */
+	r = ioctl(kvm->vm_fd, KVM_SET_USER_MEMORY_REGION, &low_memory);
+	if (r == -1) {
+		fprintf(stderr, "kvm_create_memory_region: %m\n");
+		return -1;
+	}
+	register_slot(low_memory.slot, low_memory.guest_phys_addr);
+
+	if (extended_memory.memory_size) {
+		r = munmap(*vm_mem + dosmem, exmem - dosmem);
+		if (r == -1) {
+			fprintf(stderr, "kvm_alloc_userspace_memory: %s",
+							strerror(errno));
+			return -1;
+		}
+		extended_memory.userspace_addr = (unsigned long)(*vm_mem + exmem);
+		if (tss_ext > 0)
+			extended_memory.slot = get_free_slot(kvm);
+		else
+			extended_memory.slot = 0;
+		r = ioctl(kvm->vm_fd, KVM_SET_USER_MEMORY_REGION, &extended_memory);
+		if (r == -1) {
+			fprintf(stderr, "kvm_create_memory_region: %m\n");
+			return -1;
+		}
+		register_slot(extended_memory.slot,
+			      extended_memory.guest_phys_addr);
+	}
+
+	if (above_4g_memory.memory_size) {
+		r = munmap(*vm_mem + pcimem, 0x100000000ULL - pcimem);
+		if (r == -1) {
+			fprintf(stderr, "kvm_alloc_userspace_memory: %s",
+							strerror(errno));
+			return -1;
+		}
+		above_4g_memory.userspace_addr = (unsigned long)(*vm_mem + 0x100000000ULL);
+		above_4g_memory.slot = get_free_slot(kvm);
+		r = ioctl(kvm->vm_fd, KVM_SET_USER_MEMORY_REGION, &above_4g_memory);
+		if (r == -1) {
+			fprintf(stderr, "kvm_create_memory_region: %m\n");
+			return -1;
+		}
+		register_slot(above_4g_memory.slot,
+			      above_4g_memory.guest_phys_addr);
+	}
+
+	kvm_userspace_memory_region_save_params(kvm, &low_memory);
+	kvm_userspace_memory_region_save_params(kvm, &extended_memory);
+	if (above_4g_memory.memory_size)
+		kvm_userspace_memory_region_save_params(kvm, &above_4g_memory);
+
+	return 0;
+}
+
+#endif
+
diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c
--- a/libkvm/libkvm.c
+++ b/libkvm/libkvm.c
@@ -319,108 +319,6 @@ int kvm_get_shadow_pages(kvm_context_t k
 	return -1;
 }
 
-
-#ifdef KVM_CAP_USER_MEMORY
-
-int kvm_alloc_userspace_memory(kvm_context_t kvm, unsigned long memory,
-								void **vm_mem)
-{
-	unsigned long dosmem = 0xa0000;
-	unsigned long exmem = 0xc0000;
-	unsigned long pcimem = 0xe0000000;
-	int r;
-	int tss_ext;
-	struct kvm_userspace_memory_region low_memory = {
-		.memory_size = memory  < dosmem ? memory : dosmem,
-		.guest_phys_addr = 0,
-	};
-	struct kvm_userspace_memory_region extended_memory = {
-		.memory_size = memory < exmem ? 0 : memory - exmem,
-		.guest_phys_addr = exmem,
-	};
-	struct kvm_userspace_memory_region above_4g_memory = {
-		.memory_size = memory < pcimem ? 0 : memory - pcimem,
-		.guest_phys_addr = 0x100000000ULL,
-	};
-
-#ifdef KVM_CAP_SET_TSS_ADDR
-	tss_ext = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_SET_TSS_ADDR);
-#else
-	tss_ext = 0;
-#endif
-
-	if (memory >= pcimem) {
-		extended_memory.memory_size = pcimem - exmem;
-		*vm_mem = mmap(NULL, memory + 0x100000000ULL - pcimem,
-				PROT_READ|PROT_WRITE, MAP_ANONYMOUS |
-							MAP_SHARED, -1, 0);
-	}
-	else
-		*vm_mem = mmap(NULL, memory, PROT_READ|PROT_WRITE, MAP_ANONYMOUS
-							| MAP_SHARED, -1, 0);
-	if (*vm_mem == MAP_FAILED) {
-		fprintf(stderr, "kvm_alloc_userspace_memory: %s", strerror(errno));
-		return -1;
-	}
-
-	low_memory.userspace_addr = (unsigned long)*vm_mem;
-	low_memory.slot = get_free_slot(kvm);
-	/* 640K should be enough. */
-	r = ioctl(kvm->vm_fd, KVM_SET_USER_MEMORY_REGION, &low_memory);
-	if (r == -1) {
-		fprintf(stderr, "kvm_create_memory_region: %m\n");
-		return -1;
-	}
-	register_slot(low_memory.slot, low_memory.guest_phys_addr);
-
-	if (extended_memory.memory_size) {
-		r = munmap(*vm_mem + dosmem, exmem - dosmem);
-		if (r == -1) {
-			fprintf(stderr, "kvm_alloc_userspace_memory: %s",
-							strerror(errno));
-			return -1;
-		}
-		extended_memory.userspace_addr = (unsigned long)(*vm_mem + exmem);
-		if (tss_ext > 0)
-			extended_memory.slot = get_free_slot(kvm);
-		else
-			extended_memory.slot = 0;
-		r = ioctl(kvm->vm_fd, KVM_SET_USER_MEMORY_REGION, &extended_memory);
-		if (r == -1) {
-			fprintf(stderr, "kvm_create_memory_region: %m\n");
-			return -1;
-		}
-		register_slot(extended_memory.slot,
-			      extended_memory.guest_phys_addr);
-	}
-
-	if (above_4g_memory.memory_size) {
-		r = munmap(*vm_mem + pcimem, 0x100000000ULL - pcimem);
-		if (r == -1) {
-			fprintf(stderr, "kvm_alloc_userspace_memory: %s",
-							strerror(errno));
-			return -1;
-		}
-		above_4g_memory.userspace_addr = (unsigned long)(*vm_mem + 0x100000000ULL);
-		above_4g_memory.slot = get_free_slot(kvm);
-		r = ioctl(kvm->vm_fd, KVM_SET_USER_MEMORY_REGION, &above_4g_memory);
-		if (r == -1) {
-			fprintf(stderr, "kvm_create_memory_region: %m\n");
-			return -1;
-		}
-		register_slot(above_4g_memory.slot,
-			      above_4g_memory.guest_phys_addr);
-	}
-
-	kvm_userspace_memory_region_save_params(kvm, &low_memory);
-	kvm_userspace_memory_region_save_params(kvm, &extended_memory);
-	if (above_4g_memory.memory_size)
-		kvm_userspace_memory_region_save_params(kvm, &above_4g_memory);
-
-	return 0;
-}
-
-#endif
 
 int kvm_create_vm(kvm_context_t kvm)
 {

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/

  parent reply	other threads:[~2007-11-02 10:36 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-02 10:36 [PATCH 00 of 20] [RESEND] Refactor libkvm code Phase 1 Jerone Young
2007-11-02 10:36 ` [PATCH 01 of 20] Move kvm_context to kvmctl.h Jerone Young
2007-11-02 17:28   ` [kvm-ppc-devel] " Hollis Blanchard
2007-11-02 17:42     ` Jerone Young
2007-11-02 10:36 ` [PATCH 02 of 20] Make static slot & kvm_memory region funcions public Jerone Young
2007-11-02 10:36 ` [PATCH 03 of 20] Move fuction kvm_alloc_kernel_memory to libkvm-x86.c Jerone Young
2007-11-02 10:36 ` Jerone Young [this message]
2007-11-02 10:36 ` [PATCH 05 of 20] Modify out arch specific code from kvm_create function Jerone Young
2007-11-02 10:36 ` [PATCH 06 of 20] Move kvm_create_kernel_phys_mem to libkvm-x86.c Jerone Young
2007-11-02 10:36 ` [PATCH 07 of 20] Move kvm_create_phys_mem " Jerone Young
2007-11-02 10:36 ` [PATCH 08 of 20] Move kvm_destroy_phys_mem " Jerone Young
2007-11-02 10:36 ` [PATCH 09 of 20] Move kvm_create_memory_alias & kvm_destroy_memory_alias " Jerone Young
2007-11-02 10:36 ` [PATCH 10 of 20] Move kvm_get & kmv_set_lapci functions " Jerone Young
2007-11-02 10:36 ` [PATCH 11 of 20] Make functions in libkvm.c nonstatic Jerone Young
2007-11-02 10:36 ` [PATCH 12 of 20] Move abi 10 functions to libkvm-x86.c Jerone Young
2007-11-02 10:36 ` [PATCH 13 of 20] Move msrs " Jerone Young
2007-11-02 10:36 ` [PATCH 14 of 20] Move print_seg & Move kvm_show_regs to kvmctl-x86.c Jerone Young
2007-11-02 10:36 ` [PATCH 15 of 20] Declare kvm_abi as a global variable in libkvm.h Jerone Young
2007-11-02 10:36 ` [PATCH 16 of 20] Move kvm_get_apic to libkvm-x86.c Jerone Young
2007-11-02 10:36 ` [PATCH 17 of 20] Move cr8 functions " Jerone Young
2007-11-02 10:36 ` [PATCH 18 of 20] Move kvm_setup_cpuid " Jerone Young
2007-11-02 10:36 ` [PATCH 19 of 20] Move kvm_show_code " Jerone Young
2007-11-02 10:36 ` [PATCH 20 of 20] Remove unsued inclusion of linux/kvm_parah.h in userspace libkvm.h Jerone Young

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=5ad14643e8eccb6aec15.1193999800@thinkpad \
    --to=jyoung5-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=kvm-ppc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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.