[SPARC64]: Add hypervisor API negotiation and fix console bugs.
authorDavid S. Miller <davem@sunset.davemloft.net>
Wed, 16 May 2007 00:03:54 +0000 (17:03 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 16 May 2007 03:23:02 +0000 (20:23 -0700)
commitc7754d465b1feade85b5f1c4492781a30f6652a2
tree9a3b6ccb18983c1ea389377028ca51c8170730ef
parent7b104bcb8e460e45a1aebe3da9b86aacdb4cab12
[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>
arch/sparc64/kernel/Makefile
arch/sparc64/kernel/entry.S
arch/sparc64/kernel/hvapi.c [new file with mode: 0644]
arch/sparc64/kernel/setup.c
drivers/serial/sunhv.c
include/asm-sparc64/hypervisor.h