WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ppc-devel

[XenPPC] [PATCH] Command line option for serial port

To: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Subject: [XenPPC] [PATCH] Command line option for serial port
From: Amos Waterland <apw@xxxxxxxxxx>
Date: Thu, 3 Aug 2006 19:55:04 -0400
Delivery-date: Thu, 03 Aug 2006 16:55:16 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ppc-devel-request@lists.xensource.com?subject=help>
List-id: Xen PPC development <xen-ppc-devel.lists.xensource.com>
List-post: <mailto:xen-ppc-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-ppc-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.12-2006-07-14
Allow the user to specify serial=X as a Xen command line argument.  I
spent some time working on a more general solution, but I think it's
best for now to submit this version which properly handles the JS21
blades that I have access to, and let people with Maple-D and other
hardware add their handlers as needed.

This patch assumes the existence of the "add support for builtin command
line (take two)" patch posted earlier.

Signed-off-by: Amos Waterland <apw@xxxxxxxxxx>

---

 boot_of.c |   37 +++++++++++++++++++++++++++++++------
 1 file changed, 31 insertions(+), 6 deletions(-)

diff -r 12da2c3245bb -r 2276cf35e886 xen/arch/powerpc/boot_of.c
--- a/xen/arch/powerpc/boot_of.c        Thu Jul 27 20:07:02 2006 -0400
+++ b/xen/arch/powerpc/boot_of.c        Thu Aug 03 19:27:39 2006 -0400
@@ -744,7 +744,7 @@ static void __init boot_of_fix_maple(voi
     }
 }
     
-static int __init boot_of_serial(void *oftree)
+static int __init boot_of_serial(void *oftree, ulong serial)
 {
     int n;
     int p;
@@ -762,13 +762,24 @@ static int __init boot_of_serial(void *o
     if (rc == OF_FAILURE) {
         of_panic("package-to-path of /chosen/stdout: failed\n");
     }
-    of_printf("Pruning from devtree: %s\n"
-              "  since Xen will be using it for console\n", buf);
+    of_printf("pruning `%s' from device tree\n", buf);
     rc = ofd_prune_path(oftree, buf);
     if (rc < 0) {
         of_panic("prune path \"%s\" failed\n", buf);
     }
-    
+
+    if (serial) {
+        int len = strlen(buf);
+        char *str = buf + len - sizeof("3f8") + 1;
+
+        if (serial == 0x2f8 && !strcmp(str, "3f8")) {
+            str[0] = '2';
+            of_printf("pruning `%s' from device tree\n", buf);
+            rc = ofd_prune_path(oftree, buf);
+            if (rc < 0)
+                of_panic("pruning path of `%s' failed\n", buf);
+        }
+    }
 
     p = of_getparent(n);
     if (p == OF_FAILURE) {
@@ -795,7 +806,12 @@ static int __init boot_of_serial(void *o
     if (rc == OF_FAILURE) {
         of_panic("%s: no location for serial port\n", __func__);
     }
-    ns16550.io_base = val[1];
+
+    if (serial == 0x2f8 && val[1] == 0x3f8)  {
+        ns16550.io_base = 0x2f8;
+    } else {
+        ns16550.io_base = val[1];
+    }
 
     ns16550.baud = BAUD_AUTO;
     ns16550.data_bits = 8;
@@ -824,6 +840,7 @@ static void boot_of_module(ulong r3, ulo
     char *mod0_start;
     ulong mod0_size;
     ulong mod0;
+    ulong serial = 0;
     static const char sepr[] = " -- ";
     extern char dom0_start[] __attribute__ ((weak));
     extern char dom0_size[] __attribute__ ((weak));
@@ -918,7 +935,15 @@ static void boot_of_module(ulong r3, ulo
     mbi->mods_count = 2;
     mbi->mods_addr = (u32)mods;
 
-    boot_of_serial(oftree);
+    /* Check if the user wants a specific serial device.  */
+    p = strstr((char *)(ulong)mbi->cmdline, "serial=");
+    if (p != NULL) {
+        p += sizeof("serial=") - 1;
+        serial = simple_strtoul(p, NULL, 16);
+        of_printf("using serial device @ %lx\n", serial);
+    }
+
+    boot_of_serial(oftree, serial);
 }
 
 static int __init boot_of_cpus(void)

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel

<Prev in Thread] Current Thread [Next in Thread>
  • [XenPPC] [PATCH] Command line option for serial port, Amos Waterland <=