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-devel] [PATCH] x86: fix to parse multiboot command line passed by l

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] x86: fix to parse multiboot command line passed by latest grub
From: Wei Yongjun <yjwei@xxxxxxxxxxxxxx>
Date: Mon, 07 Dec 2009 16:26:46 +0800
Delivery-date: Mon, 07 Dec 2009 00:28:09 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4B1CBB98.3050408@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4B1CBB98.3050408@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird (X11/20090817)
latest grub had changed to "don't pass filename in multiboot
command line".

The old cmdline format is: "module-name options..."
The new cmdline format is: "options..."

So xen + grub2 always loss the first option, because xen will
skip the first option.

Usually, the module-name is not start with char [a-zA-Z], such
as /boot/vmlinuz, (hd0,1)/boot/vmlinuz, so this patch added
isalpha() test of the first char of modulename/option to
function cmdline_cook(), try to handle both the old and new
cmdline format.

Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx>

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -423,6 +423,8 @@
     p = p ? : "";
     while ( *p == ' ' )
+    if (isalpha(*p))
+        return p;
     while ( (*p != ' ') && (*p != '\0') )
     while ( *p == ' ' )

Xen-devel mailing list