aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/bios_uv.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/bios_uv.c')
-rw-r--r--arch/x86/kernel/bios_uv.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/x86/kernel/bios_uv.c b/arch/x86/kernel/bios_uv.c
index 7cefb7170e75..4c02b2799216 100644
--- a/arch/x86/kernel/bios_uv.c
+++ b/arch/x86/kernel/bios_uv.c
@@ -100,6 +100,39 @@ s64 uv_bios_get_sn_info(int fc, int *uvtype, long *partid, long *coher,
100 return ret; 100 return ret;
101} 101}
102 102
103int
104uv_bios_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size,
105 unsigned long *intr_mmr_offset)
106{
107 union uv_watchlist_u size_blade;
108 unsigned long addr;
109 u64 watchlist;
110 s64 ret;
111
112 addr = (unsigned long)mq;
113 size_blade.size = mq_size;
114 size_blade.blade = blade;
115
116 /*
117 * bios returns watchlist number or negative error number.
118 */
119 ret = (int)uv_bios_call_irqsave(UV_BIOS_WATCHLIST_ALLOC, addr,
120 size_blade.val, (u64)intr_mmr_offset,
121 (u64)&watchlist, 0);
122 if (ret < BIOS_STATUS_SUCCESS)
123 return ret;
124
125 return watchlist;
126}
127EXPORT_SYMBOL_GPL(uv_bios_mq_watchlist_alloc);
128
129int
130uv_bios_mq_watchlist_free(int blade, int watchlist_num)
131{
132 return (int)uv_bios_call_irqsave(UV_BIOS_WATCHLIST_FREE,
133 blade, watchlist_num, 0, 0, 0);
134}
135EXPORT_SYMBOL_GPL(uv_bios_mq_watchlist_free);
103 136
104s64 uv_bios_freq_base(u64 clock_type, u64 *ticks_per_second) 137s64 uv_bios_freq_base(u64 clock_type, u64 *ticks_per_second)
105{ 138{