KVM: do not register i8254 PIO regions until we are initialized
We currently publish the i8254 resources to the pio_bus before the devices are fully initialized. Since we hold the pit_lock, its probably not a real issue. But lets clean this up anyway. Reported-by: Avi Kivity <avi@redhat.com> Signed-off-by: Gregory Haskins <ghaskins@novell.com> Acked-by: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
d76685c4a0
commit
6b66ac1ae3
|
@ -604,15 +604,6 @@ struct kvm_pit *kvm_create_pit(struct kvm *kvm, u32 flags)
|
|||
mutex_lock(&pit->pit_state.lock);
|
||||
spin_lock_init(&pit->pit_state.inject_lock);
|
||||
|
||||
/* Initialize PIO device */
|
||||
kvm_iodevice_init(&pit->dev, &pit_dev_ops);
|
||||
kvm_io_bus_register_dev(&kvm->pio_bus, &pit->dev);
|
||||
|
||||
if (flags & KVM_PIT_SPEAKER_DUMMY) {
|
||||
kvm_iodevice_init(&pit->speaker_dev, &speaker_dev_ops);
|
||||
kvm_io_bus_register_dev(&kvm->pio_bus, &pit->speaker_dev);
|
||||
}
|
||||
|
||||
kvm->arch.vpit = pit;
|
||||
pit->kvm = kvm;
|
||||
|
||||
|
@ -631,6 +622,14 @@ struct kvm_pit *kvm_create_pit(struct kvm *kvm, u32 flags)
|
|||
pit->mask_notifier.func = pit_mask_notifer;
|
||||
kvm_register_irq_mask_notifier(kvm, 0, &pit->mask_notifier);
|
||||
|
||||
kvm_iodevice_init(&pit->dev, &pit_dev_ops);
|
||||
kvm_io_bus_register_dev(&kvm->pio_bus, &pit->dev);
|
||||
|
||||
if (flags & KVM_PIT_SPEAKER_DUMMY) {
|
||||
kvm_iodevice_init(&pit->speaker_dev, &speaker_dev_ops);
|
||||
kvm_io_bus_register_dev(&kvm->pio_bus, &pit->speaker_dev);
|
||||
}
|
||||
|
||||
return pit;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue