arch/x86/platform/uv: Fix incorrect tlb flush all issue
authorAlex Shi <alex.shi@intel.com>
Tue, 18 Dec 2012 20:22:14 +0000 (12:22 -0800)
committerIngo Molnar <mingo@kernel.org>
Thu, 24 Jan 2013 14:58:54 +0000 (15:58 +0100)
commit57c4f43043f89e18e0a386e096e57457f11f668b
tree7154b108a55a3d5c8bd4a23e230845040491b25e
parent444723dccc3c855fe88ea138cdec46f30e707b74
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>
arch/x86/include/asm/uv/uv.h
arch/x86/platform/uv/tlb_uv.c