From: Christoph Egger <Christoph.Egger@amd.com>
To: xen-devel@lists.xensource.com
Subject: Problem with xenconsole
Date: Tue, 19 Aug 2008 17:54:40 +0200 [thread overview]
Message-ID: <200808191754.40311.Christoph.Egger@amd.com> (raw)
Hi,
Something strange is going on with the xenconsole:
There is no console output on the first domain I connect to.
Connecting to any further domain shows console output.
This impacts both PV and HVM guests (latter one only
if serial console is configured).
Console input is working so you can work blindly on it
(or connect via ssh :)
How to reproduce:
Boot your Xen machine, make sure xend is running.
Launch some guests and connect to the console with:
xm create -c <guest-config>
or
xm create <guest-config>
xm console <domid>
*My* understanding how xenconsole works:
xenconsoled opens one tty for each launched domU via openpty().
xenconsoled tells xenstored which pty (e.g. /dev/pts/3) is
used for that domU.
The masterfd will be used for console input/output.
It writes anything read from the ring-buffer into
the pty (= console output) and writes anything read from the pty
into the ring-buffer (= console input).
xenconsoled multiplexes the console ring-buffer content to the different
domUs ptys.
When the user connects to the console, the xenconsole client
runs. It queries xenstored which pty to use for that domU.
It uses select() to wait for any input from stdin or any output
from the pty becoming available.
When the user types something on the keyboard, xenconsole reads
this from stdin and writes this into the pty and returns
back to select().
When output from the pty is available, xenconsole reads it
from the pty and writes this to stdout.
What I figured out or what is going wrong:
I ktraced xenconsoled, launched a guest
and connected to its console.
In the ktrace I saw, xenconsoled (= daemon)
actually receives the console output
and writes into the pty.
I also ktraced xenconsole (= client) and I also put some debug
fprintf(stderr, ...) into xenconsole to noticed, select() reacts as
expected on console input.
But: On the first guest I connect to, select() does not notice when
an output is available. That is why no console output is there and
why you can work blindly on the guest.
On any further guest you connect to, select() actually does notice
when an output is available and xenconsole writes this to stdout.
Anyone have seen this, too? I suspect there's some
terminal initialization missing in xensonsoled (daemon) but
I'm stuck there.
Christoph
--
AMD Saxony, Dresden, Germany
Operating System Research Center
Legal Information:
AMD Saxony Limited Liability Company & Co. KG
Sitz (Geschäftsanschrift):
Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland
Registergericht Dresden: HRA 4896
vertretungsberechtigter Komplementär:
AMD Saxony LLC (Sitz Wilmington, Delaware, USA)
Geschäftsführer der AMD Saxony LLC:
Dr. Hans-R. Deppe, Thomas McCoy
next reply other threads:[~2008-08-19 15:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-19 15:54 Christoph Egger [this message]
2008-08-20 15:26 ` Problem with xenconsole Ian Jackson
2008-08-21 13:59 ` Christoph Egger
2008-08-21 14:19 ` Ian Jackson
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=200808191754.40311.Christoph.Egger@amd.com \
--to=christoph.egger@amd.com \
--cc=xen-devel@lists.xensource.com \
/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.