[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XenPPC] [PATCH/RFC] Support Xen console=comX option
On Wed, Aug 09, 2006 at 07:37:14PM -0400, Amos Waterland wrote: > The below patch allows Xen/PPC to support the console=comX option > that Xen/x86 uses. With this patch applied, one need simply > supply CMDLINE="console=com2" on the make invocation to get proper use > of the physical serial port on a JS21. > > I will soon split out the pieces for submission, but I am posting this > for now for review of the basic approach. I'd also like to ask that > someone with a Maple-D apply this patch, undefine BROKEN_SLOF, and tell > me whether they see a panic because we try to prune a path we have just > pruned. I had an error in my logic that was caching the package-to-path conversion. Also, the exit condition from the loop walking the peer list should be zero or negative. Thanks to Jimi for pointing this out. SLOF is not broken :) Here is a corrected version of the patch. Tested on JS20 and JS21 blades. Signed-off-by: Amos Waterland <apw@xxxxxxxxxx> --- Makefile | 6 ++++-- boot_of.c | 45 ++++++++++++++++++++++++++++++++------------- setup.c | 4 ++++ 3 files changed, 40 insertions(+), 15 deletions(-) diff -r 058f2e27476d xen/arch/powerpc/Makefile --- a/xen/arch/powerpc/Makefile Mon Aug 07 17:49:16 2006 -0500 +++ b/xen/arch/powerpc/Makefile Wed Aug 09 22:07:18 2006 -0400 @@ -83,8 +83,10 @@ physdev.o: ../x86/physdev.c HDRS += $(wildcard *.h) -CMDLINE = "xen" -boot_of.o: CFLAGS += -DCMDLINE="\"$(CMDLINE)\"" +# The first token in the arguments will be silently dropped. +IMAGENAME = xen +CMDLINE = "" +boot_of.o: CFLAGS += -DCMDLINE="\"$(IMAGENAME) $(CMDLINE)\"" start.o: boot/start.S $(CC) $(CFLAGS) -D__ASSEMBLY__ -c $< -o $@ diff -r 058f2e27476d xen/arch/powerpc/boot_of.c --- a/xen/arch/powerpc/boot_of.c Mon Aug 07 17:49:16 2006 -0500 +++ b/xen/arch/powerpc/boot_of.c Wed Aug 09 22:16:51 2006 -0400 @@ -760,19 +760,15 @@ static int __init boot_of_serial(void *o if (n == OF_FAILURE) { of_panic("instance-to-package of /chosen/stdout: failed\n"); } - - /* prune this from the oftree */ - rc = of_package_to_path(n, buf, sizeof(buf)); - 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); - rc = ofd_prune_path(oftree, buf); - if (rc < 0) { - of_panic("prune path \"%s\" failed\n", buf); - } + for (p = n; p > 0; p = of_getpeer(p)) { + rc = of_package_to_path(p, buf, sizeof(buf)); + if (rc == OF_FAILURE) of_panic("package-to-path failed\n"); + if (strstr(buf, "serial@") == NULL) continue; + of_printf("pruning `%s' from devtree\n", buf); + rc = ofd_prune_path(oftree, buf); + if (rc < 0) of_panic("prune of `%s' failed\n", buf); + } p = of_getparent(n); if (p == OF_FAILURE) { @@ -799,7 +795,6 @@ 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]; ns16550.baud = BAUD_AUTO; ns16550.data_bits = 8; diff -r 058f2e27476d xen/arch/powerpc/setup.c --- a/xen/arch/powerpc/setup.c Mon Aug 07 17:49:16 2006 -0500 +++ b/xen/arch/powerpc/setup.c Wed Aug 09 22:07:18 2006 -0400 @@ -214,7 +214,11 @@ static void __init __start_xen(multiboot if ((mbi->flags & MBI_CMDLINE) && (mbi->cmdline != 0)) cmdline_parse(__va((ulong)mbi->cmdline)); + /* We initialise the serial devices very early so we can get debugging. */ + ns16550.io_base = 0x3f8; ns16550_init(0, &ns16550); + ns16550.io_base = 0x2f8; + ns16550_init(1, &ns16550); serial_init_preirq(); init_console(); _______________________________________________ Xen-ppc-devel mailing list Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ppc-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |