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
next 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox