This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-ia64-devel] consoles, iosapics, and device interrupts

To: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-ia64-devel] consoles, iosapics, and device interrupts
From: Alex Williamson <alex.williamson@xxxxxx>
Date: Fri, 11 Nov 2005 09:26:34 -0700
Delivery-date: Fri, 11 Nov 2005 16:25:05 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: LOSL
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx

   I was looking at fixing up the console support on xen/ia64 since I
really don't like getting multiple copies of every printk and I can't
switch back and forth between the xen and dom0 console.  (is everyone
seeing this?)  The early console can easily be eliminated by adding a
CON_BOOT flag to it when calling register_console():

--- a/linux-2.6-xen-sparse/arch/ia64/xen/xenconsole.c   Thu Nov 10 21:24:29 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenconsole.c   Fri Nov 11 08:56:06 2005
@@ -9,6 +9,7 @@
        extern int running_on_xen;
        if (running_on_xen) {
                extern struct console hpsim_cons;
+               hpsim_cons.flags |= CON_BOOT;
                return 0;

This gets us down to the printk only getting printed twice when using a
serial console.  The console in drivers/xen/console registers itself as
a serial interface for dom0, thus creating ttyS0.  x86 is not including
8250 serial console support in the dom0 kernel because of this.
Eliminating that from the ia64 defconfig gets us down to printks only
being printed once:

--- a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 Thu Nov 10 
21:24:29 2005
+++ b/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 Fri Nov 11 
08:58:24 2005
@@ -549,15 +549,7 @@
 # Serial drivers
-# CONFIG_SERIAL_8250_DETECT_IRQ is not set
-# CONFIG_SERIAL_8250_MULTIPORT is not set
-# CONFIG_SERIAL_8250_RSA is not set
+# CONFIG_SERIAL_8250 is not set
 # Non-8250 serial port support

   Here's the problem (or at least the start of it); we don't seem to be
getting any input into the ns16550 driver in the xen hypervisor.  Since
I'm on an HP box that does not use legacy interrupts for serial lines,
the interrupt comes in through an IOSAPIC.  We currently don't seem to
have any support for external interrupts through IOSAPICs.  I thought
about simply adding polling support to ns16550, but w/o any timer
support in the hypervisor, that looks non-trivial.  So, I was thinking
about pulling the IOSAPIC code over.  This means we'll have to iterate
all the IOSAPICs in the MADT to discover where the GSIs are mapped just
so we can poke the right one for the serial port.  We can't hide this
one IOSAPIC RTE from the domains, but unless I missed something, we
already have IOSAPIC sharing issues if we ever have multiple privileged
domains with I/O anyway.  I'm leery to even get into all the issues
surrounding setting up interrupt polarity and trigger based on the PCDP

   Does this sound like the right way to go?  I feel like I'm opening a
can of worms by adding a dependency to an IOSAPIC RTE that we're
eventually going to hand over to a domain that may clear the interrupt
vector we want to enable.  Thoughts?  Thanks,


Alex Williamson                             HP Linux & Open Source Lab

Xen-ia64-devel mailing list