[OpenBIOS] [Qemu-devel] OpenBios in Sparc can't handle long kernel command lines.
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Thu Mar 28 20:20:44 CET 2013
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.
More information about the OpenBIOS
mailing list