• Ryan S. Arnold's avatar
    [PATCH] interrupt driven hvc_console as vio device · 1fd6c4af
    Ryan S. Arnold authored
    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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarRyan S. Arnold <rsa@us.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    1fd6c4af
hvc_console.c 20.6 KB