ia64/xen-unstable

changeset 18956:29a0ecb8a711

[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 <yamahata@valinux.co.jp>
author Isaku Yamahata <yamahata@valinux.co.jp>
date Mon Jan 05 14:13:38 2009 +0900 (2009-01-05)
parents 636c685d9622
children 8df294a89a36
files xen/arch/ia64/xen/hypercall.c
line diff
     1.1 --- a/xen/arch/ia64/xen/hypercall.c	Mon Jan 05 12:24:58 2009 +0900
     1.2 +++ b/xen/arch/ia64/xen/hypercall.c	Mon Jan 05 14:13:38 2009 +0900
     1.3 @@ -61,11 +61,19 @@ xen_fast_hypercall (struct pt_regs *regs
     1.4  	return IA64_NO_FAULT;
     1.5  }
     1.6  
     1.7 +static long __do_pirq_guest_eoi(struct domain *d, int pirq)
     1.8 +{
     1.9 +	if ( pirq < 0 || pirq >= NR_IRQS )
    1.10 +		return -EINVAL;
    1.11 +	if ( d->arch.pirq_eoi_map )
    1.12 +		evtchn_unmask(d->pirq_to_evtchn[pirq]);
    1.13 +	return pirq_guest_eoi(d, pirq);
    1.14 +}
    1.15 +
    1.16  long do_pirq_guest_eoi(int pirq)
    1.17  {
    1.18 -	return pirq_guest_eoi(current->domain, pirq);
    1.19 +	return __do_pirq_guest_eoi(current->domain, pirq);
    1.20  }
    1.21 -    
    1.22  
    1.23  static void
    1.24  fw_hypercall_ipi (struct pt_regs *regs)
    1.25 @@ -483,12 +491,7 @@ long do_physdev_op(int cmd, XEN_GUEST_HA
    1.26          ret = -EFAULT;
    1.27          if ( copy_from_guest(&eoi, arg, 1) != 0 )
    1.28              break;
    1.29 -        ret = -EINVAL;
    1.30 -        if ( eoi.irq < 0 || eoi.irq >= NR_IRQS )
    1.31 -            break;
    1.32 -        if ( current->domain->arch.pirq_eoi_map )
    1.33 -            evtchn_unmask(current->domain->pirq_to_evtchn[eoi.irq]);
    1.34 -        ret = pirq_guest_eoi(current->domain, eoi.irq);
    1.35 +        ret = __do_pirq_guest_eoi(current->domain, eoi.irq);
    1.36          break;
    1.37      }
    1.38