diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2013-02-12 15:47:45 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-02-12 15:47:45 -0800 |
commit | 8ecba5af948cb58bf6d5eb1537c0df53cbc319c4 (patch) | |
tree | 83775a334c9e4be97b5dbf3f0a1d86854b10c4c1 /arch/x86/platform/uv/tlb_uv.c | |
parent | 2b9b6d8c715b23fa119261c32ad360681f4464a9 (diff) | |
parent | 836dc9e3fbbab0c30aa6e664417225f5c1fb1c39 (diff) | |
download | talos-op-linux-8ecba5af948cb58bf6d5eb1537c0df53cbc319c4.tar.gz talos-op-linux-8ecba5af948cb58bf6d5eb1537c0df53cbc319c4.zip |
Merge tag 'v3.8-rc7' into x86/asm
Merge in the updates to head_32.S from the previous urgent branch, as
upcoming patches will make further changes.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/platform/uv/tlb_uv.c')
-rw-r--r-- | arch/x86/platform/uv/tlb_uv.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c index b8b3a37c80cd..dbbdca5f508c 100644 --- a/arch/x86/platform/uv/tlb_uv.c +++ b/arch/x86/platform/uv/tlb_uv.c @@ -1034,7 +1034,8 @@ static int set_distrib_bits(struct cpumask *flush_mask, struct bau_control *bcp, * globally purge translation cache of a virtual address or all TLB's * @cpumask: mask of all cpu's in which the address is to be removed * @mm: mm_struct containing virtual address range - * @va: virtual address to be removed (or TLB_FLUSH_ALL for all TLB's on cpu) + * @start: start virtual address to be removed from TLB + * @end: end virtual address to be remove from TLB * @cpu: the current cpu * * This is the entry point for initiating any UV global TLB shootdown. @@ -1056,7 +1057,7 @@ static int set_distrib_bits(struct cpumask *flush_mask, struct bau_control *bcp, */ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, struct mm_struct *mm, unsigned long start, - unsigned end, unsigned int cpu) + unsigned long end, unsigned int cpu) { int locals = 0; int remotes = 0; @@ -1113,7 +1114,10 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, record_send_statistics(stat, locals, hubs, remotes, bau_desc); - bau_desc->payload.address = start; + if (!end || (end - start) <= PAGE_SIZE) + bau_desc->payload.address = start; + else + bau_desc->payload.address = TLB_FLUSH_ALL; bau_desc->payload.sending_cpu = cpu; /* * uv_flush_send_and_wait returns 0 if all cpu's were messaged, |