aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/physdev.c
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2012-01-28 13:45:13 +0000
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>2012-01-28 13:45:13 +0000
commit0057a949dea2d22b1d9be884a7bd9912aa7f03cc (patch)
tree020b270ccdf54a2c545649511785e3466af3fc61 /xen/arch/x86/physdev.c
parent68e1fbf3db5ed49b05214064a5516154ca0bf842 (diff)
downloadxen-0057a949dea2d22b1d9be884a7bd9912aa7f03cc.tar.gz
xen-0057a949dea2d22b1d9be884a7bd9912aa7f03cc.tar.bz2
xen-0057a949dea2d22b1d9be884a7bd9912aa7f03cc.zip
xen: introduce PHYSDEVOP_pirq_eoi_gmfn_v2
PHYSDEVOP_pirq_eoi_gmfn changes the semantics of PHYSDEVOP_eoi. In order to improve the interface this patch: - renames PHYSDEVOP_pirq_eoi_gmfn to PHYSDEVOP_pirq_eoi_gmfn_v1; - introduces PHYSDEVOP_pirq_eoi_gmfn_v2, that is like PHYSDEVOP_pirq_eoi_gmfn_v1 but it doesn't modify the behaviour of another hypercall; - bump __XEN_LATEST_INTERFACE_VERSION__; - #define PHYSDEVOP_pirq_eoi_gmfn to PHYSDEVOP_pirq_eoi_gmfn_v1 or PHYSDEVOP_pirq_eoi_gmfn_v2 depending on the __XEN_INTERFACE_VERSION. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/physdev.c')
-rw-r--r--xen/arch/x86/physdev.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
index f280c28c6f..df92cc7fdc 100644
--- a/xen/arch/x86/physdev.c
+++ b/xen/arch/x86/physdev.c
@@ -271,7 +271,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg)
break;
}
if ( !is_hvm_domain(v->domain) &&
- v->domain->arch.pv_domain.pirq_eoi_map )
+ v->domain->arch.pv_domain.auto_unmask )
evtchn_unmask(pirq->evtchn);
if ( !is_hvm_domain(v->domain) ||
domain_pirq_to_irq(v->domain, eoi.irq) > 0 )
@@ -293,7 +293,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg)
break;
}
- case PHYSDEVOP_pirq_eoi_gmfn: {
+ case PHYSDEVOP_pirq_eoi_gmfn_v2:
+ case PHYSDEVOP_pirq_eoi_gmfn_v1: {
struct physdev_pirq_eoi_gmfn info;
unsigned long mfn;
@@ -329,6 +330,8 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg)
ret = -ENOSPC;
break;
}
+ if ( cmd == PHYSDEVOP_pirq_eoi_gmfn_v1 )
+ v->domain->arch.pv_domain.auto_unmask = 1;
put_gfn(current->domain, info.gmfn);
ret = 0;