summaryrefslogtreecommitdiffstats
path: root/include/xen
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2010-12-01 14:51:44 +0000
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>2010-12-02 14:28:22 +0000
commite5fc7345412d5e4758fcef55a74354c5cbefd61e (patch)
tree00f8303544240826fb2dd2b97de5ff66596e7beb /include/xen
parente8a7e48bb248a1196484d3f8afa53bded2b24e71 (diff)
downloadlinux-stable-e5fc7345412d5e4758fcef55a74354c5cbefd61e.tar.gz
linux-stable-e5fc7345412d5e4758fcef55a74354c5cbefd61e.tar.bz2
linux-stable-e5fc7345412d5e4758fcef55a74354c5cbefd61e.zip
xen: use PHYSDEVOP_get_free_pirq to implement find_unbound_pirq
Use the new hypercall PHYSDEVOP_get_free_pirq to ask Xen to allocate a pirq. Remove the unsupported PHYSDEVOP_get_nr_pirqs hypercall to get the amount of pirq available. This fixes find_unbound_pirq that otherwise would return a number starting from nr_irqs that might very well be out of range in Xen. The symptom of this bug is that when you passthrough an MSI capable pci device to a PV on HVM guest, Linux would fail to enable MSIs on the device. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'include/xen')
-rw-r--r--include/xen/interface/physdev.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h
index 2b2c66c3df00..534cac89a77d 100644
--- a/include/xen/interface/physdev.h
+++ b/include/xen/interface/physdev.h
@@ -188,6 +188,16 @@ struct physdev_nr_pirqs {
uint32_t nr_pirqs;
};
+/* type is MAP_PIRQ_TYPE_GSI or MAP_PIRQ_TYPE_MSI
+ * the hypercall returns a free pirq */
+#define PHYSDEVOP_get_free_pirq 23
+struct physdev_get_free_pirq {
+ /* IN */
+ int type;
+ /* OUT */
+ uint32_t pirq;
+};
+
/*
* Notify that some PIRQ-bound event channels have been unmasked.
* ** This command is obsolete since interface version 0x00030202 and is **