diff options
author | Tim Deegan <Tim.Deegan@xensource.com> | 2007-02-05 15:08:18 +0000 |
---|---|---|
committer | Tim Deegan <Tim.Deegan@xensource.com> | 2007-02-05 15:08:18 +0000 |
commit | 9c191c671e56bb013e7702e7153b1d8a26e06b99 (patch) | |
tree | e1b6540dd7895f214c4b55aada33643f43184b7b /xen/arch/x86/hvm/vioapic.c | |
parent | 12d64eed3d3b117f44af1f6927b21464513358fb (diff) | |
download | xen-9c191c671e56bb013e7702e7153b1d8a26e06b99.tar.gz xen-9c191c671e56bb013e7702e7153b1d8a26e06b99.tar.bz2 xen-9c191c671e56bb013e7702e7153b1d8a26e06b99.zip |
[HVM] Save/restore: tidy up IRQs
- don't save PV state
- recalculate IRQ assert counts instead of saving them
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Diffstat (limited to 'xen/arch/x86/hvm/vioapic.c')
-rw-r--r-- | xen/arch/x86/hvm/vioapic.c | 58 |
1 files changed, 2 insertions, 56 deletions
diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index d43eced740..4e444ce93d 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -125,7 +125,7 @@ static void vioapic_write_redirent( struct hvm_hw_vioapic *vioapic, unsigned int idx, int top_word, uint32_t val) { struct domain *d = vioapic_domain(vioapic); - struct hvm_hw_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; union vioapic_redir_entry *pent, ent; spin_lock(&d->arch.hvm_domain.irq_lock); @@ -446,7 +446,7 @@ static int get_eoi_gsi(struct hvm_hw_vioapic *vioapic, int vector) void vioapic_update_EOI(struct domain *d, int vector) { struct hvm_hw_vioapic *vioapic = domain_vioapic(d); - struct hvm_hw_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; union vioapic_redir_entry *ent; int gsi; @@ -486,41 +486,10 @@ static void ioapic_info(struct hvm_hw_vioapic *s) } } -static void hvmirq_info(struct hvm_hw_irq *hvm_irq) -{ - int i; - printk("*****hvmirq state:*****\n"); - for (i = 0; i < BITS_TO_LONGS(32*4); i++) - printk("hvmirq pci_intx[%d]:0x%lx.\n", i, hvm_irq->pci_intx[i]); - - for (i = 0; i < BITS_TO_LONGS(16); i++) - printk("hvmirq isa_irq[%d]:0x%lx.\n", i, hvm_irq->isa_irq[i]); - - for (i = 0; i < BITS_TO_LONGS(1); i++) - printk("hvmirq callback_irq_wire[%d]:0x%lx.\n", i, hvm_irq->callback_irq_wire[i]); - - printk("hvmirq callback_via_type:0x%x.\n", hvm_irq->callback_via_type); - printk("hvmirq callback_via:0x%x.\n", hvm_irq->callback_via.gsi); - - - for (i = 0; i < 4; i++) - printk("hvmirq pci_link_route[%d]:0x%"PRIx8".\n", i, hvm_irq->pci_link_route[i]); - - for (i = 0; i < 4; i++) - printk("hvmirq pci_link_assert_count[%d]:0x%"PRIx8".\n", i, hvm_irq->pci_link_assert_count[i]); - - for (i = 0; i < VIOAPIC_NUM_PINS; i++) - printk("hvmirq gsi_assert_count[%d]:0x%"PRIx8".\n", i, hvm_irq->gsi_assert_count[i]); - - printk("hvmirq round_robin_prev_vcpu:0x%"PRIx8".\n", hvm_irq->round_robin_prev_vcpu); -} #else static void ioapic_info(struct hvm_hw_vioapic *s) { } -static void hvmirq_info(struct hvm_hw_irq *hvm_irq) -{ -} #endif @@ -533,16 +502,6 @@ static int ioapic_save(struct domain *d, hvm_domain_context_t *h) return ( hvm_save_entry(IOAPIC, 0, h, s) ); } -static int ioapic_save_irqs(struct domain *d, hvm_domain_context_t *h) -{ - struct hvm_hw_irq *hvm_irq = &d->arch.hvm_domain.irq; - hvmirq_info(hvm_irq); - - /* save IRQ state*/ - return ( hvm_save_entry(IRQ, 0, h, hvm_irq) ); -} - - static int ioapic_load(struct domain *d, hvm_domain_context_t *h) { struct hvm_hw_vioapic *s = domain_vioapic(d); @@ -555,20 +514,7 @@ static int ioapic_load(struct domain *d, hvm_domain_context_t *h) return 0; } -static int ioapic_load_irqs(struct domain *d, hvm_domain_context_t *h) -{ - struct hvm_hw_irq *hvm_irq = &d->arch.hvm_domain.irq; - - /* restore irq state */ - if ( hvm_load_entry(IRQ, h, hvm_irq) != 0 ) - return -EINVAL; - - hvmirq_info(hvm_irq); - return 0; -} - HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, ioapic_load); -HVM_REGISTER_SAVE_RESTORE(IRQ, ioapic_save_irqs, ioapic_load_irqs); void vioapic_init(struct domain *d) { |