Commit 2417b483 authored by Ryan S. Arnold's avatar Ryan S. Arnold Committed by Linus Torvalds

[PATCH] HVCS hotplug fixes

Here is an HVCS (drivers/char/hvcs.c) patch which fixes the hvcs driver
problems with hotplugged vty-server adapters.  The current driver handles
the adapter index assignment improperly so after a number of device
removals and insertions the driver could no longer map a tty->index to a
vty-server properly and tty_open() attempts would fail.  This patch solves
this problem by always assigning the lowest available index to the new
adapters and returning an index to the list when the adapter is removed.

changelog:
drivers/char/hvcs.c
===================
-Added hvcs_index_list to manage the lowest available index.

-Added four helper functions to manage the list, which include the
creation and destruction of the list, the get'ing of the lowest index,
and the returning of an index.

-Moved free_irq() outside of the hvcs_final_close() function in order to
get it out of the spinlock.

-Rearranged hvcs_close() to accomodate the previous change.

-Removed local CLC_LENGTH define and used HVCS_CLC_LENGTH from
arch/ppc64/hvcserver.h instead.

-Cleaned up some printks and did some house keeping on the changelog.

Documentation/powerpc/hvcs.txt
==============================
-Added information on sysfs 'index' attribute added in previous hvcs
patch.

-Added Q & A section on how to find the proper dev node for a newly
added adapter.

I think this is the last of the HVCS patches for a while, as all of my
oustanding issues have been dealt with.
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>
parent 1150ea69
...@@ -10,7 +10,7 @@ NOTE:Eight space tabs are the optimum editor setting for reading this file. ...@@ -10,7 +10,7 @@ NOTE:Eight space tabs are the optimum editor setting for reading this file.
Author(s) : Ryan S. Arnold <rsa@us.ibm.com> Author(s) : Ryan S. Arnold <rsa@us.ibm.com>
Date Created: March, 02, 2004 Date Created: March, 02, 2004
Last Changed: July, 07, 2004 Last Changed: August, 24, 2004
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Table of contents: Table of contents:
...@@ -243,6 +243,25 @@ node. If this is not done, the next user to connect to the console will ...@@ -243,6 +243,25 @@ node. If this is not done, the next user to connect to the console will
continue using the previous user's logged in session which includes continue using the previous user's logged in session which includes
using the $TERM variable that the previous user supplied. using the $TERM variable that the previous user supplied.
Hotplug add and remove of vty-server adapters affects which /dev/hvcs* node
is used to connect to each vty-server adapter. In order to determine which
vty-server adapter is associated with which /dev/hvcs* node a special sysfs
attribute has been added to each vty-server sysfs entry. This entry is
called "index" and showing it reveals an integer that refers to the
/dev/hvcs* entry to use to connect to that device. For instance cating the
index attribute of vty-server adapter 30000004 shows the following.
Pow5:/sys/bus/vio/drivers/hvcs/30000004 # cat index
2
This index of '2' means that in order to connect to vty-server adapter
30000004 the user should interact with /dev/hvcs2.
It should be noted that due to the system hotplug I/O capabilities of a
system the /dev/hvcs* entry that interacts with a particular vty-server
adapter is not guarenteed to remain the same across system reboots. Look
in the Q & A section for more on this issue.
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
6. Disconnection 6. Disconnection
...@@ -328,8 +347,8 @@ address that is created by firmware. An example vty-server sysfs entry ...@@ -328,8 +347,8 @@ address that is created by firmware. An example vty-server sysfs entry
looks like the following: looks like the following:
Pow5:/sys/bus/vio/drivers/hvcs/30000004 # ls Pow5:/sys/bus/vio/drivers/hvcs/30000004 # ls
. current_vty devspec partner_clcs vterm_state . current_vty devspec name partner_vtys
.. detach_state name partner_vtys .. detach_state index partner_clcs vterm_state
Each entry is provided, by default with a "name" attribute. Reading the Each entry is provided, by default with a "name" attribute. Reading the
"name" attribute will reveal the device type as shown in the following "name" attribute will reveal the device type as shown in the following
...@@ -499,6 +518,20 @@ A: Yes, if you have dlpar and hotplug enabled for your system and it has ...@@ -499,6 +518,20 @@ A: Yes, if you have dlpar and hotplug enabled for your system and it has
been built into the kernel the hvcs drivers is configured to dynamically been built into the kernel the hvcs drivers is configured to dynamically
handle additions of new devices and removals of unused devices. handle additions of new devices and removals of unused devices.
---------------------------------------------------------------------------
Q: For some reason /dev/hvcs* doesn't map to the same vty-server adapter
after a reboot. What happened?
A: Assignment of vty-server adapters to /dev/hvcs* entries is always done
in the order that the adapters are exposed. Due to hotplug capabilities of
this driver assignment of hotplug added vty-servers may be in a different
order than how they would be exposed on module load. Rebooting or
reloading the module after dynamic addition may result in the /dev/hvcs*
and vty-server coupling changing if a vty-server adapter was added in a
slot inbetween two other vty-server adapters. Refer to the section above
on how to determine which vty-server goes with which /dev/hvcs* node.
Hint; look at the sysfs "index" attribute for the vty-server.
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
Q: Can I use /dev/hvcs* as a conduit to another partition and use a tty Q: Can I use /dev/hvcs* as a conduit to another partition and use a tty
device on that partition as the other end of the pipe? device on that partition as the other end of the pipe?
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment