aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/setup.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2007-05-15 20:03:54 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-05-15 23:23:02 -0400
commitc7754d465b1feade85b5f1c4492781a30f6652a2 (patch)
tree9a3b6ccb18983c1ea389377028ca51c8170730ef /arch/sparc64/kernel/setup.c
parent7b104bcb8e460e45a1aebe3da9b86aacdb4cab12 (diff)
[SPARC64]: Add hypervisor API negotiation and fix console bugs.
Hypervisor interfaces need to be negotiated in order to use some API calls reliably. So add a small set of interfaces to request API versions and query current settings. This allows us to fix some bugs in the hypervisor console: 1) If we can negotiate API group CORE of at least major 1 minor 1 we can use con_read and con_write which can improve console performance quite a bit. 2) When we do a console write request, we should hold the spinlock around the whole request, not a byte at a time. What would happen is that it's easy for output from different cpus to get mixed with each other. 3) Use consistent udelay() based polling, udelay(1) each loop with a limit of 1000 polls to handle stuck hypervisor console. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/setup.c')
-rw-r--r--arch/sparc64/kernel/setup.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index 451028341c75..dea9c3c9ec5f 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -269,6 +269,7 @@ void __init per_cpu_patch(void)
269 269
270void __init sun4v_patch(void) 270void __init sun4v_patch(void)
271{ 271{
272 extern void sun4v_hvapi_init(void);
272 struct sun4v_1insn_patch_entry *p1; 273 struct sun4v_1insn_patch_entry *p1;
273 struct sun4v_2insn_patch_entry *p2; 274 struct sun4v_2insn_patch_entry *p2;
274 275
@@ -300,6 +301,8 @@ void __init sun4v_patch(void)
300 301
301 p2++; 302 p2++;
302 } 303 }
304
305 sun4v_hvapi_init();
303} 306}
304 307
305#ifdef CONFIG_SMP 308#ifdef CONFIG_SMP