All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] qemu-kvm: Couple in-kernel PIT enabling to in-kernel irqchip
@ 2012-02-06 11:21 Jan Kiszka
  0 siblings, 0 replies; only message in thread
From: Jan Kiszka @ 2012-02-06 11:21 UTC (permalink / raw)
  To: Avi Kivity, Marcelo Tosatti; +Cc: kvm

Upstream will not support disabling the in-kernel PIT separately. In
preparation of merging qemu-kvm, couple our KVM PIT to in-kernel irqchip
support as well. Leave the related command line option in place, just
issuing a warning that it has no function anymore.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 hw/i8254.c     |    6 +++---
 hw/pcspk.c     |    4 ++--
 kvm-all.c      |    2 --
 qemu-kvm-x86.c |   10 +++++-----
 qemu-kvm.h     |    1 -
 vl.c           |    5 ++---
 6 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/hw/i8254.c b/hw/i8254.c
index 7d060be..8b24867 100644
--- a/hw/i8254.c
+++ b/hw/i8254.c
@@ -475,7 +475,7 @@ void hpet_pit_disable(void)
 {
     PITChannelState *s = &pit_state.channels[0];
 
-    if (kvm_enabled() && kvm_pit_in_kernel()) {
+    if (kvm_enabled() && kvm_irqchip_in_kernel()) {
         if (kvm_has_pit_state2()) {
             kvm_hpet_disable_kpit();
         } else {
@@ -499,7 +499,7 @@ void hpet_pit_enable(void)
     PITState *pit = &pit_state;
     PITChannelState *s = &pit->channels[0];
 
-    if (kvm_enabled() && kvm_pit_in_kernel()) {
+    if (kvm_enabled() && kvm_irqchip_in_kernel()) {
         if (kvm_has_pit_state2()) {
             kvm_hpet_enable_kpit();
         } else {
@@ -529,7 +529,7 @@ static int pit_initfn(ISADevice *dev)
     PITChannelState *s;
 
 #ifdef CONFIG_KVM_PIT
-    if (kvm_enabled() && kvm_pit_in_kernel())
+    if (kvm_enabled() && kvm_irqchip_in_kernel())
         kvm_pit_init(pit);
     else {
 #endif
diff --git a/hw/pcspk.c b/hw/pcspk.c
index dc68cd7..c9f311d 100644
--- a/hw/pcspk.c
+++ b/hw/pcspk.c
@@ -57,7 +57,7 @@ static void kvm_get_pit_ch2(ISADevice *dev,
     struct PITState *pit = DO_UPCAST(struct PITState, dev, dev);
     struct kvm_pit_state pit_state;
 
-    if (kvm_enabled() && kvm_pit_in_kernel()) {
+    if (kvm_enabled() && kvm_irqchip_in_kernel()) {
         kvm_get_pit(kvm_state, &pit_state);
         pit->channels[2].mode = pit_state.channels[2].mode;
         pit->channels[2].count = pit_state.channels[2].count;
@@ -74,7 +74,7 @@ static void kvm_set_pit_ch2(ISADevice *dev,
 {
     struct PITState *pit = DO_UPCAST(struct PITState, dev, dev);
 
-    if (kvm_enabled() && kvm_pit_in_kernel()) {
+    if (kvm_enabled() && kvm_irqchip_in_kernel()) {
         inkernel_state->channels[2].mode = pit->channels[2].mode;
         inkernel_state->channels[2].count = pit->channels[2].count;
         inkernel_state->channels[2].count_load_time =
diff --git a/kvm-all.c b/kvm-all.c
index ed9222a..418410a 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -973,8 +973,6 @@ int kvm_init(void)
     s->pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2);
 #endif
 
-    s->pit_in_kernel = kvm_pit;
-
     ret = kvm_arch_init(s);
     if (ret < 0) {
         goto err;
diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index a7981b1..a0bfc23 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -27,7 +27,7 @@ static int kvm_create_pit(KVMState *s)
 {
     int r;
 
-    if (kvm_pit) {
+    if (kvm_irqchip) {
         r = kvm_vm_ioctl(s, KVM_CREATE_PIT);
         if (r < 0) {
             fprintf(stderr, "Create kernel PIC irqchip failed\n");
@@ -97,7 +97,7 @@ int kvm_set_lapic(CPUState *env, struct kvm_lapic_state *s)
 
 int kvm_get_pit(KVMState *s, struct kvm_pit_state *pit_state)
 {
-    if (!kvm_pit_in_kernel()) {
+    if (!kvm_irqchip_in_kernel()) {
         return 0;
     }
     return kvm_vm_ioctl(s, KVM_GET_PIT, pit_state);
@@ -105,7 +105,7 @@ int kvm_get_pit(KVMState *s, struct kvm_pit_state *pit_state)
 
 int kvm_set_pit(KVMState *s, struct kvm_pit_state *pit_state)
 {
-    if (!kvm_pit_in_kernel()) {
+    if (!kvm_irqchip_in_kernel()) {
         return 0;
     }
     return kvm_vm_ioctl(s, KVM_SET_PIT, pit_state);
@@ -113,7 +113,7 @@ int kvm_set_pit(KVMState *s, struct kvm_pit_state *pit_state)
 
 int kvm_get_pit2(KVMState *s, struct kvm_pit_state2 *ps2)
 {
-    if (!kvm_pit_in_kernel()) {
+    if (!kvm_irqchip_in_kernel()) {
         return 0;
     }
     return kvm_vm_ioctl(s, KVM_GET_PIT2, ps2);
@@ -121,7 +121,7 @@ int kvm_get_pit2(KVMState *s, struct kvm_pit_state2 *ps2)
 
 int kvm_set_pit2(KVMState *s, struct kvm_pit_state2 *ps2)
 {
-    if (!kvm_pit_in_kernel()) {
+    if (!kvm_irqchip_in_kernel()) {
         return 0;
     }
     return kvm_vm_ioctl(s, KVM_SET_PIT2, ps2);
diff --git a/qemu-kvm.h b/qemu-kvm.h
index 2bd5602..975b6fa 100644
--- a/qemu-kvm.h
+++ b/qemu-kvm.h
@@ -257,7 +257,6 @@ int kvm_arch_set_ioport_access(unsigned long start, unsigned long size,
                                bool enable);
 
 extern int kvm_irqchip;
-extern int kvm_pit;
 extern int kvm_pit_reinject;
 extern unsigned int kvm_shadow_memory;
 
diff --git a/vl.c b/vl.c
index 1048b22..49a4c97 100644
--- a/vl.c
+++ b/vl.c
@@ -2167,7 +2167,6 @@ static void free_and_trace(gpointer mem)
 
 #ifdef CONFIG_KVM_OPTIONS
 int kvm_irqchip = 1;
-int kvm_pit = 1;
 int kvm_pit_reinject = 1;
 #endif
 
@@ -2883,11 +2882,11 @@ int main(int argc, char **argv, char **envp)
 #ifdef CONFIG_KVM_OPTIONS
 	    case QEMU_OPTION_no_kvm_irqchip: {
 		kvm_irqchip = 0;
-		kvm_pit = 0;
 		break;
 	    }
 	    case QEMU_OPTION_no_kvm_pit: {
-		kvm_pit = 0;
+                fprintf(stderr, "Warning: KVM PIT can no longer be disabled "
+                                "separately.\n");
 		break;
 	    }
             case QEMU_OPTION_no_kvm_pit_reinjection: {
-- 
1.7.3.4

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-02-06 11:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-06 11:21 [PATCH] qemu-kvm: Couple in-kernel PIT enabling to in-kernel irqchip Jan Kiszka

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.