[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>
Showing
Please register or sign in to comment