public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/3] x86: Add UV reserved page bios call
@ 2008-10-21 20:01 Russ Anderson
  2008-10-22  6:23 ` Ingo Molnar
  0 siblings, 1 reply; 3+ messages in thread
From: Russ Anderson @ 2008-10-21 20:01 UTC (permalink / raw)
  To: Ingo Molnar, tglx, linux-kernel; +Cc: Russ Anderson

Add UV bios call to get the address of the reserved page.

Signed-off-by: Russ Anderson <rja@sgi.com>

---
 arch/x86/kernel/bios_uv.c |   11 +++++++++++
 include/asm-x86/uv/bios.h |    5 ++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

Index: linux/arch/x86/kernel/bios_uv.c
===================================================================
--- linux.orig/arch/x86/kernel/bios_uv.c	2008-10-21 14:55:24.000000000 -0500
+++ linux/arch/x86/kernel/bios_uv.c	2008-10-21 14:55:27.000000000 -0500
@@ -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,
Index: linux/include/asm-x86/uv/bios.h
===================================================================
--- linux.orig/include/asm-x86/uv/bios.h	2008-10-21 14:55:24.000000000 -0500
+++ linux/include/asm-x86/uv/bios.h	2008-10-21 14:55:27.000000000 -0500
@@ -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);
 
-- 
Russ Anderson, OS RAS/Partitioning Project Lead  
SGI - Silicon Graphics Inc          rja@sgi.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 3/3] x86: Add UV reserved page bios call
  2008-10-21 20:01 [PATCH 3/3] x86: Add UV reserved page bios call Russ Anderson
@ 2008-10-22  6:23 ` Ingo Molnar
  2008-10-22 14:57   ` Russ Anderson
  0 siblings, 1 reply; 3+ messages in thread
From: Ingo Molnar @ 2008-10-22  6:23 UTC (permalink / raw)
  To: Russ Anderson; +Cc: tglx, linux-kernel, H. Peter Anvin, Andrew Morton


* Russ Anderson <rja@sgi.com> wrote:

> Add UV bios call to get the address of the reserved page.

> +	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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 3/3] x86: Add UV reserved page bios call
  2008-10-22  6:23 ` Ingo Molnar
@ 2008-10-22 14:57   ` Russ Anderson
  0 siblings, 0 replies; 3+ messages in thread
From: Russ Anderson @ 2008-10-22 14:57 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: tglx, linux-kernel, H. Peter Anvin, Andrew Morton

On Wed, Oct 22, 2008 at 08:23:38AM +0200, Ingo Molnar wrote:
> 
> * Russ Anderson <rja@sgi.com> wrote:
> 
> > Add UV bios call to get the address of the reserved page.
> 
> > +	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

-- 
Russ Anderson, OS RAS/Partitioning Project Lead  
SGI - Silicon Graphics Inc          rja@sgi.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-10-22 14:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-21 20:01 [PATCH 3/3] x86: Add UV reserved page bios call Russ Anderson
2008-10-22  6:23 ` Ingo Molnar
2008-10-22 14:57   ` Russ Anderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox