kvm: libkvm: Add Supporting for in-kernel PIT model
PATCH 2/6 kvm: libkvm: Add Supporting for in-kernel PIT model
From 0e5d4fad7a6a917232d89afb58b960f6951990de Mon Sep 17 00:00:00 2001
From: Sheng Yang <[email protected]>
Date: Sun, 27 Jan 2008 11:25:29 +0800
Subject: [PATCH] kvm: libkvm: Add Supporting for in-kernel PIT model
--- kernel/Kbuild | 2 +- libkvm/kvm-common.h | 4 ++++ libkvm/libkvm-x86.c | 25 +++++++++++++++++++++++++ libkvm/libkvm.c | 5 +++++ 4 files changed, 35 insertions(+), 1 deletions(-)
kernel/Kbuild +1 -1
@@ -1,7 +1,7 @@ EXTRA_CFLAGS := -I$(src)/include -include $(src)/external-module-compat.h obj-m := kvm.o kvm-intel.o kvm-amd.o kvm-objs := kvm_main.o x86.o mmu.o x86_emulate.o anon_inodes.o irq.o i8259.o - lapic.o ioapic.o preempt.o + lapic.o ioapic.o preempt.o i8254.o kvm-intel-objs := vmx.o vmx-debug.o kvm-amd-objs := svm.o
libkvm/kvm-common.h +4 -0
@@ -47,6 +47,10 @@ struct kvm_context {int no_irqchip_creation;/// in-kernel irqchip status int irqchip_in_kernel; +/// do not create in-kernel pit if set +int no_pit_creation; +/// in-kernel pit status +int pit_in_kernel; };void init_slots (void );
libkvm/libkvm-x86.c +21 -0
@@ -144,6 +144,27 @@ int kvm_arch_create_default_phys_mem(kvm_context_t kvm,return 0 ; } +int kvm_create_pit (kvm_context_t kvm) +{ +#ifdef KVM_CAP_PIT +int r; + + kvm->pit_in_kernel =0 ; +if (!kvm->no_pit_creation) { + r =ioctl (kvm->fd,KVM_CHECK_EXTENSION ,KVM_CAP_PIT ); +if (r >0 ) { + r =ioctl (kvm->vm_fd,KVM_CREATE_PIT ); +if (r >=0 ) + kvm->pit_in_kernel =1 ; +else { +printf ("Create kernel PIC irqchip failed\n" ); +return r; + } + } + } +#endif +return 0 ; +}int kvm_arch_create (kvm_context_t kvm,unsigned long phys_mem_bytes,void **vm_mem)
@@ -154,6 +175,10 @@ int kvm_arch_create(kvm_context_t kvm, unsigned long
phys_mem_bytes,
if (r < 0)
return r;
+ r = kvm_create_pit(kvm);
+ if (r < 0)
+ return r;
+
return 0;
}
libkvm/libkvm.c +5 -0
@@ -271,6 +271,11 @@ void kvm_disable_irqchip_creation(kvm_context_t kvm) kvm->no_irqchip_creation =1 ; } +void kvm_disable_pit_creation (kvm_context_t kvm) +{ + kvm->no_pit_creation =1 ; +} +int kvm_create_vcpu (kvm_context_t kvm,int slot) {long mmap_size;
--
debian.1.5.3.7.1-dirty
From 0e5d4fad7a6a917232d89afb58b960f6951990de Mon Sep 17 00:00:00 2001
From: Sheng Yang <[email protected]>
Date: Sun, 27 Jan 2008 11:25:29 +0800
Subject: [PATCH] kvm: libkvm: Add Supporting for in-kernel PIT model
--- kernel/Kbuild | 2 +- libkvm/kvm-common.h | 4 ++++ libkvm/libkvm-x86.c | 25 +++++++++++++++++++++++++ libkvm/libkvm.c | 5 +++++ 4 files changed, 35 insertions(+), 1 deletions(-)
kernel/Kbuild +1 -1
@@ -1,7 +1,7 @@ EXTRA_CFLAGS := -I$(src)/include -include $(src)/external-module-compat.h obj-m := kvm.o kvm-intel.o kvm-amd.o kvm-objs := kvm_main.o x86.o mmu.o x86_emulate.o anon_inodes.o irq.o i8259.o \ - lapic.o ioapic.o preempt.o + lapic.o ioapic.o preempt.o i8254.o kvm-intel-objs := vmx.o vmx-debug.o kvm-amd-objs := svm.o
libkvm/kvm-common.h +4 -0
@@ -47,6 +47,10 @@ struct kvm_context {int no_irqchip_creation;/// in-kernel irqchip status int irqchip_in_kernel; +/// do not create in-kernel pit if set +int no_pit_creation; +/// in-kernel pit status +int pit_in_kernel; };void init_slots (void );
libkvm/libkvm-x86.c +25 -0
@@ -144,6 +144,27 @@ int kvm_arch_create_default_phys_mem(kvm_context_t kvm,return 0 ; } +int kvm_create_pit (kvm_context_t kvm) +{ +#ifdef KVM_CAP_PIT +int r; + + kvm->pit_in_kernel =0 ; +if (!kvm->no_pit_creation) { + r =ioctl (kvm->fd,KVM_CHECK_EXTENSION ,KVM_CAP_PIT ); +if (r >0 ) { + r =ioctl (kvm->vm_fd,KVM_CREATE_PIT ); +if (r >=0 ) + kvm->pit_in_kernel =1 ; +else { +printf ("Create kernel PIC irqchip failed\n" ); +return r; + } + } + } +#endif +return 0 ; +}int kvm_arch_create (kvm_context_t kvm,unsigned long phys_mem_bytes,void **vm_mem)
@@ -154,6 +175,10 @@ int kvm_arch_create(kvm_context_t kvm, unsigned long phys_mem_bytes,if (r <0 )return r; + r =kvm_create_pit (kvm); +if (r <0 ) +return r; +return 0 ; }
libkvm/libkvm.c +5 -0
@@ -271,6 +271,11 @@ void kvm_disable_irqchip_creation(kvm_context_t kvm) kvm->no_irqchip_creation =1 ; } +void kvm_disable_pit_creation (kvm_context_t kvm) +{ + kvm->no_pit_creation =1 ; +} +int kvm_create_vcpu (kvm_context_t kvm,int slot) {long mmap_size;
Signature · 1 line
debian.1.5.3.7.1-dirty
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel