All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ryan Arnold <rsa@us.ibm.com>
To: Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Andrew Morton <akpm@osdl.org>, Paul Mackerras <paulus@samba.org>,
	Jeff Garzik <jgarzik@pobox.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: [PATCH] interrupt driven hvc_console as vio device (final)
Date: Fri, 27 Aug 2004 04:40:44 -0500	[thread overview]
Message-ID: <1093599644.3402.123.camel@localhost> (raw)

Andrew,

Here is the revised hvc_console patch which fixes the issues you were
concerned with in the previous patch.  Your two concerns were:

1. Yielding in hvc_close().  This was replaced with
tty_wait_until_sent() which seem to be built for this exact scenario.  I
also restructured hvc_close() to be more elegant and less confusing than
in the previous patch.

2. Spinlocks in hvc_chars_in_buffer() and hvc_write_room() which simply
protected values read from hvc_struct instances.  I removed the
spinlocks and didn't put in memory barriers because they really weren't
needed.

Paul MacKerras approved the architecture portions of the previous
incarnation of this patch and I have touched the arch code in this
revision.  Ben Herrenschmidt, who contributed a portion of the orignal
code this patch was based on has signed off on this patch.

Changelog:

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.

Thanks,

Ryan S. Arnold
IBM Linux Technology Center


             reply	other threads:[~2004-08-27 21:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-27  9:40 Ryan Arnold [this message]
2004-08-27 10:09 ` [PATCH] interrupt driven hvc_console as vio device (final) Ryan Arnold

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1093599644.3402.123.camel@localhost \
    --to=rsa@us.ibm.com \
    --cc=akpm@osdl.org \
    --cc=benh@kernel.crashing.org \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.