x86: Add UV reserved page bios call
PATCH 3/3 x86: Add UV reserved page bios call
Add UV bios call to get the address of the reserved page.
--- arch/x86/kernel/bios_uv.c | 11 +++++++++++ include/asm-x86/uv/bios.h | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-)
arch/x86/kernel/bios_uv.c +11 -0
@@ -142,6 +142,17 @@ uv_bios_change_memprotect(u64 paddr, u64 }EXPORT_SYMBOL_GPL (uv_bios_change_memprotect); +s64 +uv_bios_reserved_page_pa (u64 buf,u64 *cookie,u64 *addr,u64 *len) +{ +s64 ret; + + ret =uv_bios_call_irqsave (UV_BIOS_GET_PARTITION_ADDR , (u64 )cookie, + (u64 )addr, buf, (u64 )len,0 ); +return ret; +} +EXPORT_SYMBOL_GPL (uv_bios_reserved_page_pa); +s64 uv_bios_freq_base (u64 clock_type,u64 *ticks_per_second) { return uv_bios_call(UV_BIOS_FREQ_BASE, clock_type,
include/asm-x86/uv/bios.h +4 -1
@@ -35,13 +35,15 @@ enum uv_bios_cmd {UV_BIOS_FREQ_BASE ,UV_BIOS_WATCHLIST_ALLOC ,UV_BIOS_WATCHLIST_FREE , -UV_BIOS_MEMPROTECT +UV_BIOS_MEMPROTECT , +UV_BIOS_GET_PARTITION_ADDR };/* * Status values returned from a BIOS call. */ enum { +BIOS_STATUS_MORE_PASSES =1 ,BIOS_STATUS_SUCCESS =0 ,BIOS_STATUS_UNIMPLEMENTED = -ENOSYS , BIOS_STATUS_EINVAL = -EINVAL,
@@ -102,6 +104,7 @@ extern int uv_bios_mq_watchlist_alloc(in unsigned long *);extern int uv_bios_mq_watchlist_free (int ,int );extern s64 uv_bios_change_memprotect (u64 ,u64 ,enum uv_memprotect ); +extern s64 uv_bios_reserved_page_pa (u64 ,u64 *,u64 *,u64 *);extern void uv_bios_init (void );
Signature · 2 lines
Russ Anderson, OS RAS/Partitioning Project Lead SGI - Silicon Graphics Inc [email protected]
include/asm-x86/uv/bios.h enum uv_bios_cmd { · line 46
Quoted 5 lines · Russ Anderson
Add UV bios call to get the address of the reserved page.
include/asm-x86/uv/bios.h +2
-0+UV_BIOS_GET_PARTITION_ADDR + BIOS_STATUS_MORE_PASSES = 1,
what is the "reserved page"?
And why is it called "PARTITION_ADDR" in the enum?
Ingo
Quoted 5 lines · Ingo Molnar
Quoted 1 line · Russ Anderson
Add UV bios call to get the address of the reserved page.
Quoted 7 lines
include/asm-x86/uv/bios.h enum uv_bios_cmd { · line 46
Quoted 3 lines
include/asm-x86/uv/bios.h +2
-0+UV_BIOS_GET_PARTITION_ADDR + BIOS_STATUS_MORE_PASSES = 1,what is the "reserved page"?
And why is it called "
PARTITION_ADDR" in the enum?
The reserved page has partitioning configuration information. This call returns a pointer (physical addr) to the reserved page.
As some background, a large SGI UV system can be run as multiple smaller systems (each smaller system is refered to as a partition). For example, a two rack system can be run as two one rack partitions. Each partition has a unique linux kernel (just like a stand alone system). The reserve page is a way of sharing configuration information about the other partitions in a partitioned system. The UV hardware allows memory to memory transfers between partitions using the GRU (Global Reference Unit). SGI Altix hardware has similar functionality (though the hardware specifics are different).
This is used by the xp driver (drivers/misc/sgi-xp/xpc_uv.c). Dean Nelson submitted a patch yesterday that uses this bios call.
http://marc.info/?l=linux-kernel&m=122462448719656&w=2
Signature · 2 lines
Russ Anderson, OS RAS/Partitioning Project Lead SGI - Silicon Graphics Inc [email protected]