ia64/linux-2.6.18-xen.hg

changeset 610:c4b12c90de0e

[IA64] Support timer vector IPIs in PV code

Add support for IA64_TIMER_VECTOR as a paravirtualized IPI target

Necessary for the latest upstream Linux implementation of
check_sal_cache_flush() 3463a93def55c309f3c0d0a8aaf216be3be42d64


Upstream Linux recently added this change:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3463a93def55c309f3c0d0a8aaf216be3be42d64

Now, for a platform bug check, we issue an IPI for the IA64_TIMER_VECTOR
and wait for it to show up in the IRR. Since a PV kernel doesn't
support a timer IPI, this never happens. The fix is simply to tie this
into xen_send_ipi() for this case. This doesn't actually happen on
2.6.18, but since vendors are backporting changes from upstream, I think
it's good to have this in the reference tree

Signed-off-by: Alex Williamson <alex.williamson@hp.com>
author Isaku Yamahata <yamahata@valinux.co.jp>
date Mon Jul 28 10:53:43 2008 +0900 (2008-07-28)
parents 8a3dc4fdb478
children ccfec88b3538
files arch/ia64/kernel/irq_ia64.c
line diff
     1.1 --- a/arch/ia64/kernel/irq_ia64.c	Tue Jul 22 11:59:42 2008 +0100
     1.2 +++ b/arch/ia64/kernel/irq_ia64.c	Mon Jul 28 10:53:43 2008 +0900
     1.3 @@ -534,12 +534,11 @@ void
     1.4  xen_platform_send_ipi(int cpu, int vector, int delivery_mode, int redirect)
     1.5  {
     1.6  	int irq = -1;
     1.7 +	extern void xen_send_ipi(int cpu, int vec);
     1.8  
     1.9  #ifdef CONFIG_SMP
    1.10  	/* TODO: we need to call vcpu_up here */
    1.11  	if (unlikely(vector == ap_wakeup_vector)) {
    1.12 -		extern void xen_send_ipi (int cpu, int vec);
    1.13 -
    1.14  		/* XXX
    1.15  		 * This should be in __cpu_up(cpu) in ia64 smpboot.c
    1.16  		 * like x86. But don't want to modify it,
    1.17 @@ -566,6 +565,9 @@ xen_platform_send_ipi(int cpu, int vecto
    1.18  		case IA64_CPEP_VECTOR:
    1.19  			irq = per_cpu(ipi_to_irq, cpu)[CPEP_VECTOR];
    1.20  			break;
    1.21 +		case IA64_TIMER_VECTOR:
    1.22 +			xen_send_ipi(cpu, vector);
    1.23 +			return;
    1.24  		default:
    1.25  			printk(KERN_WARNING "Unsupported IPI type 0x%x\n",
    1.26  			       vector);