KVM: Split IOAPIC reset function and export for kernel RESET
Signed-off-by: Yaozu (Eddie) Dong <eddie.dong@intel.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
parent
2fcceae145
commit
8c392696e7
|
@ -371,18 +371,27 @@ static void ioapic_mmio_write(struct kvm_io_device *this, gpa_t addr, int len,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void kvm_ioapic_reset(struct kvm_ioapic *ioapic)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < IOAPIC_NUM_PINS; i++)
|
||||||
|
ioapic->redirtbl[i].fields.mask = 1;
|
||||||
|
ioapic->base_address = IOAPIC_DEFAULT_BASE_ADDRESS;
|
||||||
|
ioapic->ioregsel = 0;
|
||||||
|
ioapic->irr = 0;
|
||||||
|
ioapic->id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
int kvm_ioapic_init(struct kvm *kvm)
|
int kvm_ioapic_init(struct kvm *kvm)
|
||||||
{
|
{
|
||||||
struct kvm_ioapic *ioapic;
|
struct kvm_ioapic *ioapic;
|
||||||
int i;
|
|
||||||
|
|
||||||
ioapic = kzalloc(sizeof(struct kvm_ioapic), GFP_KERNEL);
|
ioapic = kzalloc(sizeof(struct kvm_ioapic), GFP_KERNEL);
|
||||||
if (!ioapic)
|
if (!ioapic)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
kvm->vioapic = ioapic;
|
kvm->vioapic = ioapic;
|
||||||
for (i = 0; i < IOAPIC_NUM_PINS; i++)
|
kvm_ioapic_reset(ioapic);
|
||||||
ioapic->redirtbl[i].fields.mask = 1;
|
|
||||||
ioapic->base_address = IOAPIC_DEFAULT_BASE_ADDRESS;
|
|
||||||
ioapic->dev.read = ioapic_mmio_read;
|
ioapic->dev.read = ioapic_mmio_read;
|
||||||
ioapic->dev.write = ioapic_mmio_write;
|
ioapic->dev.write = ioapic_mmio_write;
|
||||||
ioapic->dev.in_range = ioapic_in_range;
|
ioapic->dev.in_range = ioapic_in_range;
|
||||||
|
|
|
@ -140,6 +140,7 @@ int kvm_get_apic_interrupt(struct kvm_vcpu *vcpu);
|
||||||
int kvm_create_lapic(struct kvm_vcpu *vcpu);
|
int kvm_create_lapic(struct kvm_vcpu *vcpu);
|
||||||
void kvm_lapic_reset(struct kvm_vcpu *vcpu);
|
void kvm_lapic_reset(struct kvm_vcpu *vcpu);
|
||||||
void kvm_pic_reset(struct kvm_kpic_state *s);
|
void kvm_pic_reset(struct kvm_kpic_state *s);
|
||||||
|
void kvm_ioapic_reset(struct kvm_ioapic *ioapic);
|
||||||
void kvm_free_lapic(struct kvm_vcpu *vcpu);
|
void kvm_free_lapic(struct kvm_vcpu *vcpu);
|
||||||
u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu);
|
u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu);
|
||||||
void kvm_lapic_set_tpr(struct kvm_vcpu *vcpu, unsigned long cr8);
|
void kvm_lapic_set_tpr(struct kvm_vcpu *vcpu, unsigned long cr8);
|
||||||
|
|
Loading…
Reference in New Issue