diff options
author | Keir Fraser <keir@xen.org> | 2011-05-02 12:00:40 +0100 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2011-05-02 12:00:40 +0100 |
commit | d0ef88916f3ab8bda754b175b299e3d5a73fe851 (patch) | |
tree | 1ca943cf84f69289ffda79497151277a64c35583 /xen/include/xen/hvm | |
parent | 76ce27755b87aa5a91ce0f5a02e560ab5c0515e4 (diff) | |
download | xen-d0ef88916f3ab8bda754b175b299e3d5a73fe851.tar.gz xen-d0ef88916f3ab8bda754b175b299e3d5a73fe851.tar.bz2 xen-d0ef88916f3ab8bda754b175b299e3d5a73fe851.zip |
Revert 23295:4891f1f41ba5 and 23296:24346f749826
Fails current lock checking mechanism in spinlock.c in debug=y builds.
Signed-off-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/include/xen/hvm')
-rw-r--r-- | xen/include/xen/hvm/irq.h | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/xen/include/xen/hvm/irq.h b/xen/include/xen/hvm/irq.h index 5b2f77c63a..f21b02ceeb 100644 --- a/xen/include/xen/hvm/irq.h +++ b/xen/include/xen/hvm/irq.h @@ -25,7 +25,7 @@ #include <xen/types.h> #include <xen/spinlock.h> #include <xen/tasklet.h> -#include <xen/timer.h> +#include <asm/irq.h> #include <public/hvm/save.h> struct dev_intx_gsi_link { @@ -38,15 +38,11 @@ struct dev_intx_gsi_link { #define _HVM_IRQ_DPCI_MACH_PCI_SHIFT 0 #define _HVM_IRQ_DPCI_MACH_MSI_SHIFT 1 -#define _HVM_IRQ_DPCI_MAPPED_SHIFT 2 -#define _HVM_IRQ_DPCI_EOI_LATCH_SHIFT 3 #define _HVM_IRQ_DPCI_GUEST_PCI_SHIFT 4 #define _HVM_IRQ_DPCI_GUEST_MSI_SHIFT 5 #define _HVM_IRQ_DPCI_TRANSLATE_SHIFT 15 #define HVM_IRQ_DPCI_MACH_PCI (1 << _HVM_IRQ_DPCI_MACH_PCI_SHIFT) #define HVM_IRQ_DPCI_MACH_MSI (1 << _HVM_IRQ_DPCI_MACH_MSI_SHIFT) -#define HVM_IRQ_DPCI_MAPPED (1 << _HVM_IRQ_DPCI_MAPPED_SHIFT) -#define HVM_IRQ_DPCI_EOI_LATCH (1 << _HVM_IRQ_DPCI_EOI_LATCH_SHIFT) #define HVM_IRQ_DPCI_GUEST_PCI (1 << _HVM_IRQ_DPCI_GUEST_PCI_SHIFT) #define HVM_IRQ_DPCI_GUEST_MSI (1 << _HVM_IRQ_DPCI_GUEST_MSI_SHIFT) #define HVM_IRQ_DPCI_TRANSLATE (1 << _HVM_IRQ_DPCI_TRANSLATE_SHIFT) @@ -67,6 +63,14 @@ struct hvm_gmsi_info { int dest_vcpu_id; /* -1 :multi-dest, non-negative: dest_vcpu_id */ }; +struct hvm_mirq_dpci_mapping { + uint32_t flags; + int pending; + struct list_head digl_list; + struct domain *dom; + struct hvm_gmsi_info gmsi; +}; + struct hvm_girq_dpci_mapping { struct list_head list; uint8_t device; @@ -84,33 +88,20 @@ struct hvm_girq_dpci_mapping { /* Protected by domain's event_lock */ struct hvm_irq_dpci { + /* Machine IRQ to guest device/intx mapping. */ + unsigned long *mapping; + struct hvm_mirq_dpci_mapping *mirq; + unsigned long *dirq_mask; /* Guest IRQ to guest device/intx mapping. */ struct list_head girq[NR_HVM_IRQS]; /* Record of mapped ISA IRQs */ DECLARE_BITMAP(isairq_map, NR_ISAIRQS); /* Record of mapped Links */ uint8_t link_cnt[NR_LINK]; + struct timer *hvm_timer; struct tasklet dirq_tasklet; }; -/* Machine IRQ to guest device/intx mapping. */ -struct hvm_pirq_dpci { - uint32_t flags; - bool_t masked; - uint16_t pending; - struct list_head digl_list; - struct domain *dom; - struct hvm_gmsi_info gmsi; - struct timer timer; -}; - -void pt_pirq_init(struct domain *, struct hvm_pirq_dpci *); -bool_t pt_pirq_cleanup_check(struct hvm_pirq_dpci *); -int pt_pirq_iterate(struct domain *d, - int (*cb)(struct domain *, unsigned int pirq, - struct hvm_pirq_dpci *, void *arg), - void *arg); - /* Modify state of a PCI INTx wire. */ void hvm_pci_intx_assert( struct domain *d, unsigned int device, unsigned int intx); @@ -129,6 +120,4 @@ void hvm_maybe_deassert_evtchn_irq(void); void hvm_assert_evtchn_irq(struct vcpu *v); void hvm_set_callback_via(struct domain *d, uint64_t via); -int vmsi_deliver(struct domain *, const struct hvm_pirq_dpci *); - #endif /* __XEN_HVM_IRQ_H__ */ |