From 7fa5f162da939ccd8d5ef838dc14b68b70b86c51 Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Mon, 5 Jan 2009 14:13:38 +0900 Subject: [PATCH] [IA64] fix ia64_fast_eoi hypercall to catch up PHYSDEVOP_pirq_eoi_gmfn ia64 xen Linux uses ia64_fast_eoi to do eoi. So the c/s 18862:f0a9a58608a0 should also have changed od_pir_guest_eoi() too. This patch changes it. Signed-off-by: Isaku Yamahata --- xen/arch/ia64/xen/hypercall.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/xen/arch/ia64/xen/hypercall.c b/xen/arch/ia64/xen/hypercall.c index c0cb005344..a56002d2e2 100644 --- a/xen/arch/ia64/xen/hypercall.c +++ b/xen/arch/ia64/xen/hypercall.c @@ -61,11 +61,19 @@ xen_fast_hypercall (struct pt_regs *regs) return IA64_NO_FAULT; } +static long __do_pirq_guest_eoi(struct domain *d, int pirq) +{ + if ( pirq < 0 || pirq >= NR_IRQS ) + return -EINVAL; + if ( d->arch.pirq_eoi_map ) + evtchn_unmask(d->pirq_to_evtchn[pirq]); + return pirq_guest_eoi(d, pirq); +} + long do_pirq_guest_eoi(int pirq) { - return pirq_guest_eoi(current->domain, pirq); + return __do_pirq_guest_eoi(current->domain, pirq); } - static void fw_hypercall_ipi (struct pt_regs *regs) @@ -483,12 +491,7 @@ long do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg) ret = -EFAULT; if ( copy_from_guest(&eoi, arg, 1) != 0 ) break; - ret = -EINVAL; - if ( eoi.irq < 0 || eoi.irq >= NR_IRQS ) - break; - if ( current->domain->arch.pirq_eoi_map ) - evtchn_unmask(current->domain->pirq_to_evtchn[eoi.irq]); - ret = pirq_guest_eoi(current->domain, eoi.irq); + ret = __do_pirq_guest_eoi(current->domain, eoi.irq); break; } -- 2.30.2