x86: Add UV watchlist bios call
PATCH 1/3 x86: Add UV watchlist bios call
Add UV bios calls to allocate and free watchlists.
Signed-off-by Russ Anderson <[email protected]>
--- arch/x86/kernel/bios_uv.c | 33 +++++++++++++++++++++++++++++++++ include/asm-x86/uv/bios.h | 17 ++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-)
arch/x86/kernel/bios_uv.c +33 -0
@@ -100,6 +100,39 @@ s64 uv_bios_get_sn_info(int fc, int *uvtreturn ret; } +int +uv_bios_mq_watchlist_alloc (int blade,void *mq,unsigned int mq_size, +unsigned long *intr_mmr_offset) +{ +union uv_watchlist_u size_blade; +unsigned long addr; +u64 watchlist; +s64 ret; + + addr = (unsigned long )mq; + size_blade.size = mq_size; + size_blade.blade = blade; + +/* +* bios returns watchlist number or negative error number. +*/ + ret = (int )uv_bios_call_irqsave (UV_BIOS_WATCHLIST_ALLOC , addr, + size_blade.val, (u64 )intr_mmr_offset, + (u64)&watchlist,0 ); +if (ret <BIOS_STATUS_SUCCESS ) +return ret; + +return watchlist; +} +EXPORT_SYMBOL_GPL (uv_bios_mq_watchlist_alloc); + +int +uv_bios_mq_watchlist_free (int blade,int watchlist_num) +{ +return (int )uv_bios_call_irqsave (UV_BIOS_WATCHLIST_FREE , + blade, watchlist_num,0 ,0 ,0 ); +} +EXPORT_SYMBOL_GPL (uv_bios_mq_watchlist_free);s64 uv_bios_freq_base (u64 clock_type,u64 *ticks_per_second) {
include/asm-x86/uv/bios.h +16 -1
@@ -32,7 +32,9 @@enum uv_bios_cmd {UV_BIOS_COMMON ,UV_BIOS_GET_SN_INFO , -UV_BIOS_FREQ_BASE +UV_BIOS_FREQ_BASE , +UV_BIOS_WATCHLIST_ALLOC , +UV_BIOS_WATCHLIST_FREE };/*
@@ -71,6 +73,15 @@ union partition_info_u { }; }; +union uv_watchlist_u { +u64 val; +struct { +u64 blade :16 , + size :32 , + filler :16 ; + }; +}; +/* * bios calls have 6 parameters */
@@ -80,9 +91,13 @@ extern s64 uv_bios_call_reentrant(enum uextern s64 uv_bios_get_sn_info (int ,int *,long *,long *,long *);extern s64 uv_bios_freq_base (u64 ,u64 *); +extern int uv_bios_mq_watchlist_alloc (int ,void *,unsigned int , +unsigned long *); +extern int uv_bios_mq_watchlist_free (int ,int );extern void uv_bios_init (void ); +extern unsigned long sn_rtc_cycles_per_second;extern int uv_type;extern long sn_partition_id;extern long sn_coherency_id;
Signature · 2 lines
Russ Anderson, OS RAS/Partitioning Project Lead SGI - Silicon Graphics Inc [email protected]
Quoted 1 line · Russ Anderson
Add UV bios calls to allocate and free watchlists.
hm, what is a watchlist?
Ingo
Quoted 6 lines · Ingo Molnar
Quoted 1 line · Russ Anderson
Add UV bios calls to allocate and free watchlists.
hm, what is a watchlist?
It is a hardware feature in the SGI UV hardware, used as part of the GRU message queue support.
It is used by drivers/misc/sgi-xp/xpc_uv.c. Dean Nelson submitted a patch yesterday that uses the watchlist bios call.
http://marc.info/?l=linux-kernel&m=122462426019304&w=2
Thanks,
Signature · 2 lines
Russ Anderson, OS RAS/Partitioning Project Lead SGI - Silicon Graphics Inc [email protected]