j
: Next unread message k
: Previous unread message j a
: Jump to all threads
j l
: Jump to MailingList overview
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.
On Thu, Mar 28, 2013 at 7:20 PM, Mark Cave-Ayland mark.cave-ayland@ilande.co.uk wrote:
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.
Isn't strdup() (or memory allocation subsystem) available at that time?
ATB,
Mark.
-- OpenBIOS http://openbios.org/ Mailinglist: http://lists.openbios.org/mailman/listinfo Free your System - May the Forth be with you
On 2013-Mar-28 15:20 , Mark Cave-Ayland wrote:
[ command line limited to 80 bytes ] 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.
In openboot, we run into long command lines primarily when we do network boot - the arguments to network devices (particularly for things like iSCSI) can get absurdly long.
E.g.
ok boot /pci@340/pci@1/pci@0/network@5:iscsi-target-ip=179.182.226.103,iscsi-target-name=iqn.1986-03.com.sun:02:boot,host-ip=182.179.226.205,iscsi-port=3260,iscsi-lun=1,iscsi-partition=a,router-ip=182.179.226.254,subnet-mask=255.255.255.0
The above has an unusually short iscsi-target-name. Many iqn strings go over 80 bytes by themselves.