From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerone Young Subject: [PATCH 09 of 27] Move kvm_create_kernel_phys_mem to kvmctl-x86.c Date: Wed, 31 Oct 2007 12:05:14 -0500 Message-ID: <1d255ea8e5ed989683dd.1193850314@thinkpad> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-ppc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org To: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org # HG changeset patch # User Jerone Young # Date 1193849564 18000 # Node ID 1d255ea8e5ed989683dd75cec1324791a12e14a2 # Parent 179d9b30ab973e6676dcd0b6fa08e9635969d44c Move kvm_create_kernel_phys_mem to kvmctl-x86.c This patch moves kvm_create_kernel_phys_mem to x86 as this is the only arch that will be allocating memory for guest in the kernel (at least for older kvm versions). Signed-off-by: Jerone Young diff --git a/libkvm/libkvm-x86.c b/libkvm/libkvm-x86.c --- a/libkvm/libkvm-x86.c +++ b/libkvm/libkvm-x86.c @@ -268,3 +268,36 @@ int arch_kvm_create(kvm_context_t kvm, u return 0; } + +void *kvm_create_kernel_phys_mem(kvm_context_t kvm, unsigned long phys_start, + unsigned long len, int log, int writable) +{ + int r; + int prot = PROT_READ; + void *ptr; + struct kvm_memory_region memory = { + .memory_size = len, + .guest_phys_addr = phys_start, + .flags = log ? KVM_MEM_LOG_DIRTY_PAGES : 0, + }; + + memory.slot = get_free_slot(kvm); + r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &memory); + if (r == -1) { + fprintf(stderr, "create_kernel_phys_mem: %s", strerror(errno)); + return 0; + } + register_slot(memory.slot, memory.guest_phys_addr); + kvm_memory_region_save_params(kvm, &memory); + + if (writable) + prot |= PROT_WRITE; + + ptr = mmap(NULL, len, prot, MAP_SHARED, kvm->vm_fd, phys_start); + if (ptr == MAP_FAILED) { + fprintf(stderr, "create_kernel_phys_mem: %s", strerror(errno)); + return 0; + } + + return ptr; +} diff --git a/libkvm/libkvm-x86.h b/libkvm/libkvm-x86.h --- a/libkvm/libkvm-x86.h +++ b/libkvm/libkvm-x86.h @@ -23,4 +23,7 @@ int arch_kvm_create(kvm_context_t kvm, u int arch_kvm_create(kvm_context_t kvm, unsigned long phys_mem_bytes, void **vm_mem); +void *kvm_create_kernel_phys_mem(kvm_context_t kvm, unsigned long phys_start, + unsigned long len, int log, int writable); + #endif diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c --- a/libkvm/libkvm.c +++ b/libkvm/libkvm.c @@ -366,39 +366,6 @@ int kvm_create(kvm_context_t kvm, unsign return r; return 0; -} - -void *kvm_create_kernel_phys_mem(kvm_context_t kvm, unsigned long phys_start, - unsigned long len, int log, int writable) -{ - int r; - int prot = PROT_READ; - void *ptr; - struct kvm_memory_region memory = { - .memory_size = len, - .guest_phys_addr = phys_start, - .flags = log ? KVM_MEM_LOG_DIRTY_PAGES : 0, - }; - - memory.slot = get_free_slot(kvm); - r = ioctl(kvm->vm_fd, KVM_SET_MEMORY_REGION, &memory); - if (r == -1) { - fprintf(stderr, "create_kernel_phys_mem: %s", strerror(errno)); - return 0; - } - register_slot(memory.slot, memory.guest_phys_addr); - kvm_memory_region_save_params(kvm, &memory); - - if (writable) - prot |= PROT_WRITE; - - ptr = mmap(NULL, len, prot, MAP_SHARED, kvm->vm_fd, phys_start); - if (ptr == MAP_FAILED) { - fprintf(stderr, "create_kernel_phys_mem: %s", strerror(errno)); - return 0; - } - - return ptr; } #ifdef KVM_CAP_USER_MEMORY ------------------------------------------------------------------------- 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/