diff options
author | Stefano Stabellini <stefano.stabellini@eu.citrix.com> | 2012-01-30 11:21:48 -0500 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-03-20 15:34:07 -0400 |
commit | 9846ff10af12f9e7caac696737db6c990592a74a (patch) | |
tree | f0b047fedc93c820ed63657fd5c9bb28457b69ce /include | |
parent | 102b208e6b3b16d3611b67a7af9a93d30b92c006 (diff) |
xen: support pirq_eoi_map
The pirq_eoi_map is a bitmap offered by Xen to check which pirqs need to
be EOI'd without having to issue an hypercall every time.
We use PHYSDEVOP_pirq_eoi_gmfn_v2 to map the bitmap, then if we
succeed we use pirq_eoi_map to check whether pirqs need eoi.
Changes in v3:
- explicitly use PHYSDEVOP_pirq_eoi_gmfn_v2 rather than
PHYSDEVOP_pirq_eoi_gmfn;
- introduce pirq_check_eoi_map, a function to check if a pirq needs an
eoi using the map;
-rename pirq_needs_eoi into pirq_needs_eoi_flag;
- introduce a function pointer called pirq_needs_eoi that is going to be
set to the right implementation depending on the availability of
PHYSDEVOP_pirq_eoi_gmfn_v2.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/xen/interface/physdev.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h index 0c28989007fb..9ce788d8cf49 100644 --- a/include/xen/interface/physdev.h +++ b/include/xen/interface/physdev.h | |||
@@ -39,6 +39,27 @@ struct physdev_eoi { | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * Register a shared page for the hypervisor to indicate whether the guest | ||
43 | * must issue PHYSDEVOP_eoi. The semantics of PHYSDEVOP_eoi change slightly | ||
44 | * once the guest used this function in that the associated event channel | ||
45 | * will automatically get unmasked. The page registered is used as a bit | ||
46 | * array indexed by Xen's PIRQ value. | ||
47 | */ | ||
48 | #define PHYSDEVOP_pirq_eoi_gmfn_v1 17 | ||
49 | /* | ||
50 | * Register a shared page for the hypervisor to indicate whether the | ||
51 | * guest must issue PHYSDEVOP_eoi. This hypercall is very similar to | ||
52 | * PHYSDEVOP_pirq_eoi_gmfn_v1 but it doesn't change the semantics of | ||
53 | * PHYSDEVOP_eoi. The page registered is used as a bit array indexed by | ||
54 | * Xen's PIRQ value. | ||
55 | */ | ||
56 | #define PHYSDEVOP_pirq_eoi_gmfn_v2 28 | ||
57 | struct physdev_pirq_eoi_gmfn { | ||
58 | /* IN */ | ||
59 | unsigned long gmfn; | ||
60 | }; | ||
61 | |||
62 | /* | ||
42 | * Query the status of an IRQ line. | 63 | * Query the status of an IRQ line. |
43 | * @arg == pointer to physdev_irq_status_query structure. | 64 | * @arg == pointer to physdev_irq_status_query structure. |
44 | */ | 65 | */ |