]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/kernel/tlb_uv.c
Merge branch 'iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip...
[linux-2.6-omap-h63xx.git] / arch / x86 / kernel / tlb_uv.c
index aae15dd72604b10b559c10f9050dc22fde3c2f0a..79c073247284cbdb334cf2a03b4e7ffaae8d0bcd 100644 (file)
 #include <asm/uv/uv_mmrs.h>
 #include <asm/uv/uv_hub.h>
 #include <asm/uv/uv_bau.h>
-#include <asm/genapic.h>
+#include <asm/apic.h>
 #include <asm/idle.h>
 #include <asm/tsc.h>
 #include <asm/irq_vectors.h>
 
-#include <mach_apic.h>
-
 static struct bau_control      **uv_bau_table_bases __read_mostly;
 static int                     uv_bau_retry_limit __read_mostly;
 
@@ -201,6 +199,7 @@ static int uv_wait_completion(struct bau_desc *bau_desc,
                                destination_timeouts = 0;
                        }
                }
+               cpu_relax();
        }
        return FLUSH_COMPLETE;
 }
@@ -258,7 +257,7 @@ const struct cpumask *uv_flush_send_and_wait(int cpu, int this_blade,
                 * the cpu's, all of which are still in the mask.
                 */
                __get_cpu_var(ptcstats).ptc_i++;
-               return 0;
+               return flush_mask;
        }
 
        /*
@@ -315,8 +314,6 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask,
        int locals = 0;
        struct bau_desc *bau_desc;
 
-       WARN_ON(!in_atomic());
-
        cpumask_andnot(flush_mask, cpumask, cpumask_of(cpu));
 
        uv_cpu = uv_blade_processor_id();
@@ -753,7 +750,7 @@ static int __init uv_bau_init(void)
        int node;
        int nblades;
        int last_blade;
-       int cur_cpu = 0;
+       int cur_cpu;
 
        if (!is_uv_system())
                return 0;
@@ -763,6 +760,7 @@ static int __init uv_bau_init(void)
        uv_mmask = (1UL << uv_hub_info->n_val) - 1;
        nblades = 0;
        last_blade = -1;
+       cur_cpu = 0;
        for_each_online_node(node) {
                blade = uv_node_to_blade_id(node);
                if (blade == last_blade)