[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 diff --git a/xen/arch/ia64/xen/hypercall.c b/xen/arch/ia64/xen/hypercall.c --- a/xen/arch/ia64/xen/hypercall.c +++ b/xen/arch/ia64/xen/hypercall.c @@ -60,11 +60,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) @@ -482,12 +490,7 @@ long do_physdev_op(int cmd, XEN_GUEST_HA 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; }