diff options
author | Roger Pau Monne <roger.pau@citrix.com> | 2014-02-27 22:15:35 +0400 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2014-03-18 18:40:09 +0400 |
commit | 4892c9b4ada9f9a71a0da7a268f95e988d88064b (patch) | |
tree | 57c9f627ab44ebec2a948dc11ca69cb0011607de /include/xen/interface/physdev.h | |
parent | efdfa3eda5d7b33c6e3c4f6e66144fcd10ed41a3 (diff) | |
download | linux-4892c9b4ada9f9a71a0da7a268f95e988d88064b.tar.xz |
xen: add support for MSI message groups
Add support for MSI message groups for Xen Dom0 using the
MAP_PIRQ_TYPE_MULTI_MSI pirq map type.
In order to keep track of which pirq is the first one in the group all
pirqs in the MSI group except for the first one have the newly
introduced PIRQ_MSI_GROUP flag set. This prevents calling
PHYSDEVOP_unmap_pirq on them, since the unmap must be done with the
first pirq in the group.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Diffstat (limited to 'include/xen/interface/physdev.h')
-rw-r--r-- | include/xen/interface/physdev.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h index 42721d13a106..610dba9b620a 100644 --- a/include/xen/interface/physdev.h +++ b/include/xen/interface/physdev.h @@ -131,6 +131,7 @@ struct physdev_irq { #define MAP_PIRQ_TYPE_GSI 0x1 #define MAP_PIRQ_TYPE_UNKNOWN 0x2 #define MAP_PIRQ_TYPE_MSI_SEG 0x3 +#define MAP_PIRQ_TYPE_MULTI_MSI 0x4 #define PHYSDEVOP_map_pirq 13 struct physdev_map_pirq { @@ -141,11 +142,16 @@ struct physdev_map_pirq { int index; /* IN or OUT */ int pirq; - /* IN - high 16 bits hold segment for MAP_PIRQ_TYPE_MSI_SEG */ + /* IN - high 16 bits hold segment for ..._MSI_SEG and ..._MULTI_MSI */ int bus; /* IN */ int devfn; - /* IN */ + /* IN + * - For MSI-X contains entry number. + * - For MSI with ..._MULTI_MSI contains number of vectors. + * OUT (..._MULTI_MSI only) + * - Number of vectors allocated. + */ int entry_nr; /* IN */ uint64_t table_base; |