diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-02-17 09:00:41 -0500 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2010-03-01 10:36:12 -0500 |
commit | fa8273e9549b3cee2947d1aebe5242e7a25eb3de (patch) | |
tree | 4a9c8b38fe5a4a1a8d366f898afd47512dee1f36 /arch/x86/kvm/i8254.c | |
parent | e424e1918345ab17d3beb068b8745ab1706d0e1b (diff) |
KVM: Convert i8254/i8259 locks to raw_spinlocks
The i8254/i8259 locks need to be real spinlocks on preempt-rt. Convert
them to raw_spinlock. No change for !RT kernels.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/i8254.c')
-rw-r--r-- | arch/x86/kvm/i8254.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c index c9569f20dfba..294698b6daff 100644 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c | |||
@@ -242,11 +242,11 @@ static void kvm_pit_ack_irq(struct kvm_irq_ack_notifier *kian) | |||
242 | { | 242 | { |
243 | struct kvm_kpit_state *ps = container_of(kian, struct kvm_kpit_state, | 243 | struct kvm_kpit_state *ps = container_of(kian, struct kvm_kpit_state, |
244 | irq_ack_notifier); | 244 | irq_ack_notifier); |
245 | spin_lock(&ps->inject_lock); | 245 | raw_spin_lock(&ps->inject_lock); |
246 | if (atomic_dec_return(&ps->pit_timer.pending) < 0) | 246 | if (atomic_dec_return(&ps->pit_timer.pending) < 0) |
247 | atomic_inc(&ps->pit_timer.pending); | 247 | atomic_inc(&ps->pit_timer.pending); |
248 | ps->irq_ack = 1; | 248 | ps->irq_ack = 1; |
249 | spin_unlock(&ps->inject_lock); | 249 | raw_spin_unlock(&ps->inject_lock); |
250 | } | 250 | } |
251 | 251 | ||
252 | void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu) | 252 | void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu) |
@@ -624,7 +624,7 @@ struct kvm_pit *kvm_create_pit(struct kvm *kvm, u32 flags) | |||
624 | 624 | ||
625 | mutex_init(&pit->pit_state.lock); | 625 | mutex_init(&pit->pit_state.lock); |
626 | mutex_lock(&pit->pit_state.lock); | 626 | mutex_lock(&pit->pit_state.lock); |
627 | spin_lock_init(&pit->pit_state.inject_lock); | 627 | raw_spin_lock_init(&pit->pit_state.inject_lock); |
628 | 628 | ||
629 | kvm->arch.vpit = pit; | 629 | kvm->arch.vpit = pit; |
630 | pit->kvm = kvm; | 630 | pit->kvm = kvm; |
@@ -724,12 +724,12 @@ void kvm_inject_pit_timer_irqs(struct kvm_vcpu *vcpu) | |||
724 | /* Try to inject pending interrupts when | 724 | /* Try to inject pending interrupts when |
725 | * last one has been acked. | 725 | * last one has been acked. |
726 | */ | 726 | */ |
727 | spin_lock(&ps->inject_lock); | 727 | raw_spin_lock(&ps->inject_lock); |
728 | if (atomic_read(&ps->pit_timer.pending) && ps->irq_ack) { | 728 | if (atomic_read(&ps->pit_timer.pending) && ps->irq_ack) { |
729 | ps->irq_ack = 0; | 729 | ps->irq_ack = 0; |
730 | inject = 1; | 730 | inject = 1; |
731 | } | 731 | } |
732 | spin_unlock(&ps->inject_lock); | 732 | raw_spin_unlock(&ps->inject_lock); |
733 | if (inject) | 733 | if (inject) |
734 | __inject_pit_timer_intr(kvm); | 734 | __inject_pit_timer_intr(kvm); |
735 | } | 735 | } |