[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] [IA64] Support timer vector IPIs in PV code



# HG changeset patch
# User Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
# Date 1217210023 -32400
# Node ID c4b12c90de0e72ae0611cb6240d0745c965c417f
# Parent  8a3dc4fdb4785447398e983c22241c38f128663b
[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@xxxxxx>
---
 arch/ia64/kernel/irq_ia64.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff -r 8a3dc4fdb478 -r c4b12c90de0e arch/ia64/kernel/irq_ia64.c
--- a/arch/ia64/kernel/irq_ia64.c       Tue Jul 22 11:59:42 2008 +0100
+++ b/arch/ia64/kernel/irq_ia64.c       Mon Jul 28 10:53:43 2008 +0900
@@ -534,12 +534,11 @@ xen_platform_send_ipi(int cpu, int vecto
 xen_platform_send_ipi(int cpu, int vector, int delivery_mode, int redirect)
 {
        int irq = -1;
+       extern void xen_send_ipi(int cpu, int vec);
 
 #ifdef CONFIG_SMP
        /* TODO: we need to call vcpu_up here */
        if (unlikely(vector == ap_wakeup_vector)) {
-               extern void xen_send_ipi (int cpu, int vec);
-
                /* XXX
                 * This should be in __cpu_up(cpu) in ia64 smpboot.c
                 * like x86. But don't want to modify it,
@@ -566,6 +565,9 @@ xen_platform_send_ipi(int cpu, int vecto
                case IA64_CPEP_VECTOR:
                        irq = per_cpu(ipi_to_irq, cpu)[CPEP_VECTOR];
                        break;
+               case IA64_TIMER_VECTOR:
+                       xen_send_ipi(cpu, vector);
+                       return;
                default:
                        printk(KERN_WARNING "Unsupported IPI type 0x%x\n",
                               vector);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.