]> git.hungrycats.org Git - linux/commit
[PATCH] interrupt driven hvc_console as vio device
authorRyan S. Arnold <rsa@us.ibm.com>
Tue, 31 Aug 2004 03:39:20 +0000 (20:39 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 31 Aug 2004 03:39:20 +0000 (20:39 -0700)
commit1fd6c4af84c9bb116c307127a60d8e3e9a989b0b
treeda6e01f54cd115a2e5265612905e8562a6c651b0
parent43eef00afadcde7b6ce32b455cbfcffa9ec0aca4
[PATCH] interrupt driven hvc_console as vio device

This is an hvc_console patch which provides driver and ppc64 architecture
fixes to enable the hvc_console driver to register itself as a vio device
with the vio bus, provide hotplug add/remove for vty adapters, and act as
an interrupt driven driver on Power-5 hardware or remain as a polling
driver on Power-4 hardware.

arch/ppc64/kernel/hvconsole.c
=============================

- Changed hvc_get_chars() and hvc_put_chars() api to take vtermno rather
  than index number.

- Added hvc_find_vtys() function which walks the bus looking for
  vterm/vty devices to callback to the hvc_console driver.  This provides
  console output functionality prior to early console init (pre mem init
  and pre device probe).

include/asm-ppc64/hvconsole.h
=============================

- Changed hvc_get_chars() and hvc_put_chars() api to take vtermno rather
  than index number.

- Added hvc_find_vtys() function.

- Added hvc_instantiate() function which is implemented by a console
  driver wanting to receive a callback of and early console init.

drivers/char/hvc_console.c
==========================

- Switch khvcd from kernel_threads to kthreads which got rid of
  deprecated daemonize().

- Added module exit clause to be thorough (not terribly necessary with a
  console driver of course)

- Added early discovery of vterm/vty adapters by doing a bus walk on
  early console init which results in hvc_instantiate() callback and
  addition of the vtermno into a static array of vtermnos supported as
  console adapters (meaning the console api's work against these vtermnos
  prior to full console initialization).

- This driver is now registered as a vio driver which means that vty
  adapters are now managed via probe/remove.  This means hvc_console
  supports hotplug vty adapters.

- Driver now requests more device nodes than what was found on the
  initial bus walk when registered as a tty driver to make room for hotplug
  vty adapters.  These secondary vty adapters provide a tty tunnel between
  partitions.

- Removed static hvc_struct array and replaced with a linux list that has
  elements (hvc_struct instances) added/removed on probe/remove AFTER early
  console init.  This is important because kmalloc can't be done at early
  console init.

- Driver now either runs in interrupt driven mode or in polling mode on
  older hardware.  The khvcd is smart enough to not 'schedule()' when there
  are no interrupts.

- kobjects are now used for ref counting on the hvc_struct instances.

- This driver puts the tty layer to sleep on hvc_close() if there are
  pending data writes being blocked by firmware.

- Removed useless spinlocks in hvc_chars_in_buffer() and hvc_write_room.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Ryan S. Arnold <rsa@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc64/kernel/hvconsole.c
drivers/char/hvc_console.c
include/asm-ppc64/hvconsole.h