[OpenBIOS] [commit] r832 - in trunk/openbios-devel: arch/sparc32 drivers
Blue Swirl
blauwirbel at gmail.com
Wed Aug 4 19:36:37 CEST 2010
On Wed, Aug 4, 2010 at 4:58 PM, Blue Swirl <blauwirbel at gmail.com> wrote:
> On Wed, Aug 4, 2010 at 4:47 PM, Artyom Tarasenko
> <atar4qemu at googlemail.com> wrote:
>> 2010/8/4 Blue Swirl <blauwirbel at gmail.com>:
>>> On Wed, Aug 4, 2010 at 10:32 AM, Mark Cave-Ayland
>>> <mark.cave-ayland at siriusit.co.uk> wrote:
>>>> repository service wrote:
>>>>
>>>>> Log:
>>>>> sparc32: fix pre-loaded kernel command line
>>>>>
>>>>> Fix more breakage from r828:
>>>>>
>>>>> For some reason, QEMU/Sparc32 does not set FW_CFG_CMDLINE_SIZE, so
>>>>> we have to use FW_CFG_KERNEL_CMDLINE instead.
>>>>>
>>>>> Setup romvec obp_arg.argv[1] and "boot-file" property.
>>>>>
>>>>> Remove obsolete command line setup code from obio.c.
>>>>
>>>> Looks good to me.
>>>>
>>>> Just for the record, with r828 the way that bootpath/bootargs should now
>>>> work is as follows:
>>>>
>>>> - All Qemu configuration should now take place in the arch_init() (or
>>>> equivalent) function only
>>>>
>>>> - arch_init() should read the Qemu firmware device and setup the NVRAM
>>>> variables boot-device and boot-file (boot-device can now take a list of
>>>> space-separated devices to search - see ppc/qemu for an example of this)
>>>>
>>>> - Everything else is now magically handled by Forth in (encode-bootpath)
>>>> based upon the following rules from the IEEE-1275 spec:
>>>>
>>>> - If either "load" or "boot" are issued on their own, search through
>>>> each boot-device in order until open returns a valid ihandle, then
>>>> load/boot from this. bootargs is set to the contents of boot-file.
>>>
>>> Does not work:
>>> Trying cdrom...
>>> Not a bootable ELF image
>>> Not a bootable a.out image
>>> No valid state has been set by load or init-program
>>>
>>> 0 > printenv
>>> name "options"
>>> boot-from "disk"
>>> boot-args ""
>>> boot-device "cdrom cdrom:d"
>>> use-generic? "false"
>>> boot-script ""
>>> boot-screen ""
>>> ttyb-rts-dtr-off "false"
>>> ttyb-ignore-cd "true"
>>> ttyb-mode "9600,8,n,1,-"
>>> ttya-rts-dtr-off "false"
>>> ttya-ignore-cd "true"
>>> ttya-mode "9600,8,n,1,-"
>>> tpe-link-test? "true"
>>> load-base "4000"
>>> scroll-lock "true"
>>> skip-netboot? "false"
>>> default-mac-address "false"
>>> pci-probe-mask "-1"
>>> selftest-#megs "0"
>>> screen-#rows "24"
>>> screen-#columns "80"
>>> output-device "ttya"
>>> input-device "ttya"
>>> use-nvramrc? "false"
>>> oem-logo? "false"
>>> oem-banner ""
>>> oem-banner? "false"
>>> nvramrc ""
>>> fcode-debug? "false"
>>> diag-switch? "false"
>>> boot-file ""
>>> boot-command "boot"
>>> auto-boot? "true"
>>> ok
>>> 0 > boot
>>> Trying cdrom...
>>> Not a bootable ELF image
>>> Not a bootable a.out image
>>> No valid state has been set by load or init-program
>>> ok
>>> 0 > boot cdrom:d
>>> Not a bootable ELF image
>>> Loading a.out image...
>>> Loaded 65536 bytes
>>> entry point is 0x4000
>>> bootpath: /iommu/sbus/espdma/esp/sd at 2,0:d
>>>
>>> Jumping to entry point 00004000 for type 00000005...
>>> switching to new context:
>>>>> NetBSD/sparc Secondary Boot, Revision 1.12
>>>>> (autobuild at tgm.daemon.org, Wed Apr 9 02:46:11 UTC 2003)
>>> Booting netbsd
>>>
>>> I changed the boot-device like this:
>>> diff --git a/arch/sparc32/openbios.c b/arch/sparc32/openbios.c
>>> index 60ee180..3624269 100644
>>> --- a/arch/sparc32/openbios.c
>>> +++ b/arch/sparc32/openbios.c
>>> @@ -187,11 +187,11 @@ arch_init( void )
>>> push_str("floppy");
>>> break;
>>> case 'c':
>>> - push_str("disk");
>>> + push_str("disk disk:d");
>>> break;
>>> default:
>>> case 'd':
>>> - push_str("cdrom");
>>> + push_str("cdrom cdrom:d");
>>
>> Why not make cdrom an alias to the slice d, as OBP does?
>
> IIRC that approach had other problems. I'll try if this is no longer the case.
When I changed 'cdrom' to 'cdrom:d', several images couldn't boot,
strangely including some of the NetBSD ones which don't want ':d'.
Maybe our Sun partition logic is not correct or we are ignoring some
kind of bootability flag.
More information about the OpenBIOS
mailing list