From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52384) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ULIL5-0003Tb-Ac for qemu-devel@nongnu.org; Thu, 28 Mar 2013 15:18:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ULIL1-0003GX-8V for qemu-devel@nongnu.org; Thu, 28 Mar 2013 15:18:19 -0400 Received: from katherinewilliamsonsoprano.co.uk ([82.165.34.74]:39958 helo=p15195424.pureserver.info) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ULIL1-0003Eq-1z for qemu-devel@nongnu.org; Thu, 28 Mar 2013 15:18:15 -0400 Message-ID: <5154980C.5000305@ilande.co.uk> Date: Thu, 28 Mar 2013 19:20:44 +0000 From: Mark Cave-Ayland MIME-Version: 1.0 References: <1363929577.15703.59@driftwood> In-Reply-To: <1363929577.15703.59@driftwood> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] OpenBios in Sparc can't handle long kernel command lines. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Rob Landley Cc: The OpenBIOS Mailinglist , qemu-devel@nongnu.org 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.