KVM: x86: Introduce a workqueue to deliver PIT timer interrupts
We really want to "kvm_set_irq" during the hrtimer callback, but that is risky because that is during interrupt context. Instead, offload the work to a workqueue, which is a bit safer and should provide most of the same functionality. Signed-off-by: Chris Lalancette <clalance@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:

committato da
Avi Kivity

parent
c37eda1384
commit
33572ac0ad
@@ -27,7 +27,7 @@ struct kvm_kpit_state {
|
||||
u32 speaker_data_on;
|
||||
struct mutex lock;
|
||||
struct kvm_pit *pit;
|
||||
raw_spinlock_t inject_lock;
|
||||
spinlock_t inject_lock;
|
||||
unsigned long irq_ack;
|
||||
struct kvm_irq_ack_notifier irq_ack_notifier;
|
||||
};
|
||||
@@ -40,6 +40,8 @@ struct kvm_pit {
|
||||
struct kvm_kpit_state pit_state;
|
||||
int irq_source_id;
|
||||
struct kvm_irq_mask_notifier mask_notifier;
|
||||
struct workqueue_struct *wq;
|
||||
struct work_struct expired;
|
||||
};
|
||||
|
||||
#define KVM_PIT_BASE_ADDRESS 0x40
|
||||
|
Fai riferimento in un nuovo problema
Block a user