qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] OpenBios in Sparc can't handle long kernel command line


From: Mark Cave-Ayland
Subject: Re: [Qemu-devel] OpenBios in Sparc can't handle long kernel command lines.
Date: Thu, 28 Mar 2013 19:20:44 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130116 Icedove/10.0.12

On 22/03/13 05:19, Rob Landley wrote:

If I do this:

qemu-system-sparc -nographic -no-reboot -kernel image -hda hda.sqf
-append 'root=/dev/sda rw init=/sbin/init.sh panic=1
PATH=/usr/distcc:/bin:/sbin console=ttyS0 HOST=sparc CPUS=1
DISTCC_HOSTS=10.0.2.2:31322/1 FTP_SERVER=10.0.2.2 FTP_PORT=31307
NATIVE_BUILD=lfs-bootstrap ' -hdb hdb.img -hdc lfs-bootstrap.hdc -m 256

qemu goes:

^[[H^[[JConfiguration device id QEMU version 1 machine id 32
CPUs: 1 x FMI,MB86904
Unhandled Exception 0x00000007
PC = 0xffd07d28 NPC = 0xffd07d2c
Stopping execution

And then hangs. I've never figured out why it clears the screen first
(none of the other targets do), but I _have_ figured out that the
unhandled exception is "kernel command line too long". Because 197 bytes
is just too much data for Sparc to cope with.

This is actually a bug in OpenBIOS which declares the command line storage like this:

static void
arch_init( void )
{
        static char cmdline[128];

        ....

kernel_cmdline = (const char *) fw_cfg_read_i32(FW_CFG_KERNEL_CMDLINE);
        if (kernel_cmdline) {
            size = strlen(kernel_cmdline);
            memcpy(cmdline, kernel_cmdline, size);
            obp_arg.argv[1] = cmdline;
        }
        cmdline[size] = '\0';

        ....
}

Would increasing it to 256 bytes be enough? I can't say I've ever come across command lines in a normal environment with more than about 80 characters, but I don't see an issue with increasing it.


ATB,

Mark.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]