x86, UV: Fix macros for multiple coherency domains
authorJack Steiner <steiner@sgi.com>
Mon, 8 Jun 2009 15:44:05 +0000 (10:44 -0500)
committerIngo Molnar <mingo@elte.hu>
Mon, 8 Jun 2009 16:57:47 +0000 (18:57 +0200)
commitc4ed3f04ba9defe22aa729d1646f970f791c03d7
treef7f7890000132ed84d72720a72af274e3bce9334
parent3aa6b186f86c5d06d6d92d14311ffed51f091f40
x86, UV: Fix macros for multiple coherency domains

Fix bug in the SGI UV macros that support systems with multiple
coherency domains.  The macros used for referencing global MMR
(chipset registers) are failing to correctly "or" the NASID
(node identifier) bits that reside above M+N. These high bits
are supplied automatically by the chipset for memory accesses
coming from the processor socket.

However, the bits must be present for references to the special
global MMR space used to map chipset registers. (See uv_hub.h
for more details ...)

The bug results in references to invalid/incorrect nodes.

Signed-off-by: Jack Steiner <steiner@sgi.com>
Cc: <stable@kernel.org>
LKML-Reference: <20090608154405.GA16395@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/uv/uv_hub.h
arch/x86/kernel/apic/x2apic_uv_x.c