]> git.karo-electronics.de Git - karo-tx-linux.git/commit
x86: Fix UV BAU for non-consecutive nasids
authorCliff Wickman <cpw@sgi.com>
Tue, 10 May 2011 13:26:43 +0000 (08:26 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 21 May 2011 22:13:32 +0000 (15:13 -0700)
commit9af9f92080401b2f68e88ef2df266f2eaeca73e0
tree20630c353d14524e52acd2efc162391ca173f6a6
parent9e7b09d09931b8ef2d1e46335bc41eff5ff0d23a
x86: Fix UV BAU for non-consecutive nasids

commit 77ed23f8d995a01cd8101d84351b567bf5177a30 upstream.

This is a fix for the SGI Altix-UV Broadcast Assist Unit code,
which is used for TLB flushing.

Certain hardware configurations (that customers are ordering)
cause nasids (numa address space id's) to be non-consecutive.
Specifically, once you have more than 4 blades in a IRU
(Individual Rack Unit - or 1/2 rack) but less than the maximum
of 16, the nasid numbering becomes non-consecutive.  This
currently results in a 'catastrophic error' (CATERR) detected by
the firmware during OS boot.  The BAU is generating an 'INTD'
request that is targeting a non-existent nasid value. Such
configurations may also occur when a blade is configured off
because of hardware errors. (There is one UV hub per blade.)

This patch is required to support such configurations.

The problem with the tlb_uv.c code is that is using the
consecutive hub numbers as indices to the BAU distribution bit
map. These are simply the ordinal position of the hub or blade
within its partition.  It should be using physical node numbers
(pnodes), which correspond to the physical nasid values. Use of
the hub number only works as long as the nasids in the partition
are consecutive and increase with a stride of 1.

This patch changes the index to be the pnode number, thus
allowing nasids to be non-consecutive.
It also provides a table in local memory for each cpu to
translate target cpu number to target pnode and nasid.
And it improves naming to properly reflect 'node' and 'uvhub'
versus 'nasid'.

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Link: http://lkml.kernel.org/r/E1QJmxX-0002Mz-Fk@eag09.americas.sgi.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/include/asm/uv/uv_bau.h
arch/x86/platform/uv/tlb_uv.c