]> nv-tegra.nvidia Code Review - linux-2.6.git/commit
x86: UV: Address interrupt/IO port operation conflict
authorDimitri Sivanich <sivanich@sgi.com>
Tue, 16 Nov 2010 22:23:52 +0000 (16:23 -0600)
committerIngo Molnar <mingo@elte.hu>
Thu, 18 Nov 2010 09:41:25 +0000 (10:41 +0100)
commit8191c9f69202d4dbc66063cb92059b8a58640d34
tree97efeba3b3224390bfac251ecb9e4a037c544453
parent9223081f54e3dc5045fe41a475165d9003c9a779
x86: UV: Address interrupt/IO port operation conflict

This patch for SGI UV systems addresses a problem whereby
interrupt transactions being looped back from a local IOH,
through the hub to a local CPU can (erroneously) conflict with
IO port operations and other transactions.

To workaound this we set a high bit in the APIC IDs used for
interrupts. This bit appears to be ignored by the sockets, but
it avoids the conflict in the hub.

Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
LKML-Reference: <20101116222352.GA8155@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
___

 arch/x86/include/asm/uv/uv_hub.h   |    4 ++++
 arch/x86/include/asm/uv/uv_mmrs.h  |   19 ++++++++++++++++++-
 arch/x86/kernel/apic/x2apic_uv_x.c |   25 +++++++++++++++++++++++--
 arch/x86/platform/uv/tlb_uv.c      |    2 +-
 arch/x86/platform/uv/uv_time.c     |    4 +++-
 5 files changed, 49 insertions(+), 5 deletions(-)
arch/x86/include/asm/uv/uv_hub.h
arch/x86/include/asm/uv/uv_mmrs.h
arch/x86/kernel/apic/x2apic_uv_x.c
arch/x86/platform/uv/tlb_uv.c
arch/x86/platform/uv/uv_time.c