aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/hvm
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2011-05-02 12:00:40 +0100
committerKeir Fraser <keir@xen.org>2011-05-02 12:00:40 +0100
commitd0ef88916f3ab8bda754b175b299e3d5a73fe851 (patch)
tree1ca943cf84f69289ffda79497151277a64c35583 /xen/include/xen/hvm
parent76ce27755b87aa5a91ce0f5a02e560ab5c0515e4 (diff)
downloadxen-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.h39
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__ */