1
linux/arch
Cliff Wickman 77ed23f8d9 x86: Fix UV BAU for non-consecutive nasids
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>
Cc: <stable@kernel.org>
Link: http://lkml.kernel.org/r/E1QJmxX-0002Mz-Fk@eag09.americas.sgi.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2011-05-12 23:45:42 +02:00
..
alpha alpha: Fix uninitialized value in read_persistent_clock. 2011-04-17 14:41:30 -07:00
arm Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into perf/urgent 2011-05-06 08:11:28 +02:00
avr32 avr32: add ATAG_BOARDINFO 2011-04-13 15:46:59 +02:00
blackfin Blackfin: SMP: fix cache flush loop 2011-04-13 19:34:06 -04:00
cris Fix common misspellings 2011-03-31 11:26:23 -03:00
frv Fix common misspellings 2011-03-31 11:26:23 -03:00
h8300 genirq: Remove the now obsolete config options and select statements 2011-03-30 14:13:23 +02:00
ia64 Merge branch 'for-linus2' of git://git.profusion.mobi/users/lucas/linux-2.6 2011-04-07 11:14:49 -07:00
m32r Fix common misspellings 2011-03-31 11:26:23 -03:00
m68k m68k/mm: Set all online nodes in N_NORMAL_MEMORY 2011-04-27 17:36:00 +02:00
microblaze usb: Fix Kconfig unmet dependencies for Microblaze EHCI 2011-04-13 15:43:59 -07:00
mips Fix common misspellings 2011-03-31 11:26:23 -03:00
mn10300 Fix common misspellings 2011-03-31 11:26:23 -03:00
parisc [PARISC] set memory ranges in N_NORMAL_MEMORY when onlined 2011-04-21 09:32:38 -05:00
powerpc hw_breakpoints, powerpc: Fix CONFIG_HAVE_HW_BREAKPOINT off-case in ptrace_set_debugreg() 2011-05-06 11:24:46 +02:00
s390 [S390] irqstats: fix counting of pfault, dasd diag and virtio irqs 2011-04-29 10:42:25 +02:00
score Fix common misspellings 2011-03-31 11:26:23 -03:00
sh sh, hw_breakpoints: Fix racy access to ptrace breakpoints 2011-04-25 17:36:12 +02:00
sparc Merge branch 'for-linus2' of git://git.profusion.mobi/users/lucas/linux-2.6 2011-04-07 11:14:49 -07:00
tile Fix common misspellings 2011-03-31 11:26:23 -03:00
um um: adjust current_thread_info() for newer gcc versions 2011-04-28 11:28:21 -07:00
unicore32 Merge branch 'for-linus2' of git://git.profusion.mobi/users/lucas/linux-2.6 2011-04-07 11:14:49 -07:00
x86 x86: Fix UV BAU for non-consecutive nasids 2011-05-12 23:45:42 +02:00
xtensa xtensa: Fixup irq conversion fallout and nmi_count 2011-04-20 00:32:09 +02:00
.gitignore
Kconfig oprofile, s390: Cleanups 2011-03-16 14:30:40 +01:00