diff options
author | Alex Shi <alex.shi@intel.com> | 2012-12-18 12:22:14 -0800 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-01-24 15:58:54 +0100 |
commit | 57c4f43043f89e18e0a386e096e57457f11f668b (patch) | |
tree | 7154b108a55a3d5c8bd4a23e230845040491b25e /arch/x86/include/asm/uv/uv.h | |
parent | 444723dccc3c855fe88ea138cdec46f30e707b74 (diff) | |
download | op-kernel-dev-57c4f43043f89e18e0a386e096e57457f11f668b.zip op-kernel-dev-57c4f43043f89e18e0a386e096e57457f11f668b.tar.gz |
arch/x86/platform/uv: Fix incorrect tlb flush all issue
The flush tlb optimization code has logical issue on UV
platform. It doesn't flush the full range at all, since it
simply ignores its 'end' parameter (and hence also the "all"
indicator) in uv_flush_tlb_others() function.
Cliff's notes:
| I tested the patch on a UV. It has the effect of either
| clearing 1 or all TLBs in a cpu. I added some debugging to
| test for the cases when clearing all TLBs is overkill, and in
| practice it happens very seldom.
Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Alex Shi <alex.shi@intel.com>
Signed-off-by: Cliff Wickman <cpw@sgi.com>
Tested-by: Cliff Wickman <cpw@sgi.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/include/asm/uv/uv.h')
-rw-r--r-- | arch/x86/include/asm/uv/uv.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/include/asm/uv/uv.h b/arch/x86/include/asm/uv/uv.h index b47c2a8..062921e 100644 --- a/arch/x86/include/asm/uv/uv.h +++ b/arch/x86/include/asm/uv/uv.h @@ -16,7 +16,7 @@ extern void uv_system_init(void); extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, struct mm_struct *mm, unsigned long start, - unsigned end, + unsigned long end, unsigned int cpu); #else /* X86_UV */ |