Skip to content

RFC - Support for UV platform

Jack Steiner linux-mm lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest8 patches 40 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8x86_64: Change GET_APIC_ID() from an inline function to an out-of-line functionarch/x86/kernel/apic_64.c arch/x86/kernel/genapic_64.c arch/x86/kernel/genapic_flat_64.c +6 more+15 -103 replies
2/8x86_64: Add functions to determine if platform is a UV platformarch/x86/kernel/acpi/boot.c arch/x86/kernel/genapic_64.c include/asm-x86/genapic_64.h+31 -30 replies
3/8x86_64: Increase size of APICIDarch/x86/kernel/mpparse_64.c arch/x86/mm/srat_64.c include/asm-x86/apicdef.h +1 more+24 -170 replies
4/8x86_64: Parsing for ACPI "SAPIC" tablearch/x86/kernel/acpi/boot.c+24 -22 replies
5/8x86_64: Add UV specific header for MMR definitionsinclude/asm-x86/uv_mmrs.h+373 -08 replies
6/8x86_64: Define the macros and tables for the basic UV infrastructure.include/asm-x86/uv_hub.h+217 -04 replies
7/8x86_64: Define the macros and tables for blade functionsinclude/asm-x86/uv_hub.h+74 -00 replies
8/8x86_64: Support for new UV apicarch/x86/kernel/Makefile arch/x86/kernel/genapic_64.c arch/x86/kernel/genx2apic_uv_x.c +3 more+335 -323 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC 0/8] - Support for UV platform

This series of patches add x86_64 support for the SGI "UV" platform. Most of the changes are related to support for larger apic IDs and new chipset hardware that is used for sending IPIs, etc.

UV supports really big systems. So big, in fact, that the APICID register does not contain enough bits to contain an APICID that is unique across all cpus.

The UV BIOS supports 3 APICID modes:

- legacy mode. This mode uses the old APIC mode where APICID is in bits [31:24] of the APICID register.

- x2apic mode. This mode is whitebox-compatible. APICIDs are unique across all cpus. Standard x2apic APIC operations (Intel-defined) can be used for IPIs. The node identifier fits within the Intel-defined portion of the APICID register. (Note: most of the code to support x2apic mode will come in a separate patch).

- x2apic-uv mode. In this mode, the APICIDs on each node have unique IDs, but IDs on different node are not unique. For example, if each mode has 32 cpus, the APICIDs on each node might be 0 - 31. Every node has the same set of IDs.
The UV hub is used to route IPIs/interrupts to the correct node. Traditional APIC IPI operations WILL NOT WORK.

In x2apic-uv mode, the ACPI tables all contain a full unique ID:
nnnnnnnnnnlc0cch
n = unique node number
l = socket number on board
c = core
h = hyperthread

Only the "c0cch" bits are written to the APICID register. The remaining bits are supplied by having the get_apic_id() function "OR" the extra bits into the value read from the APICID register.

The x2apic-uv mode is recognized by <oem_id> & <oem_table_id> fields of the MADT table.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>