On Sun, Aug 8, 2010 at 11:56 AM, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
Blue Swirl wrote:
Ah I see. Looks like the return value is different between open_io() and open_ih() :(
Not really. ;-)
Hmmm I seem to remember based on existing code that the return value was wrong - obviously I changed the wrong end, so there may be some other breakage somewhere else.
I think it's better to postpone these changes until multiple boot devices can be used in openbios.c.
I'm confused. Surely if the "cdrom" alias is fixed, then once it is changed then it doesn't matter anymore as you would specify -boot d on the qemu command line? Or do you mean there is something still not right with the multiple boot-device code?
Yes, it doesn't work with reversed list either.
I've just tried adding a "cdrom:d" prefix to the cdrom boot-device list in arch/sparc32/openbios.c and it boots fine for me. Can you give me an example of where the code is not working as expected?
The problem is that some images don't have a bootable partition in 'd', but 'a', any of these fail because only the first device is attempted in boot-device list. The automagic partition change hack may mask this.
fdisk -l aurora-1.0-sparc-disc1.iso aurora-2.0-sparc-boot.iso debian-40r5-sparc-businesscard.iso NetBSD_5.0.1_sparccd.iso suse-sparc-7.3-CD1.iso zoot-sparc.iso OpenBSD-4.4.iso
Disk aurora-1.0-sparc-disc1.iso (Sun disk label): 1 heads, 640 sectors, 2024 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System aurora-1.0-sparc-disc1.iso1 r 0 2024 647616 83 Linux native
Disk aurora-2.0-sparc-boot.iso (Sun disk label): 1 heads, 640 sectors, 2048 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System aurora-2.0-sparc-boot.iso1 r 0 63 20160 4 SunOS usr aurora-2.0-sparc-boot.iso2 r 0 63 20160 2 SunOS root aurora-2.0-sparc-boot.iso3 r 0 63 20160 2 SunOS root aurora-2.0-sparc-boot.iso4 r 0 63 20160 2 SunOS root aurora-2.0-sparc-boot.iso5 r 0 63 20160 2 SunOS root aurora-2.0-sparc-boot.iso6 r 0 63 20160 2 SunOS root aurora-2.0-sparc-boot.iso7 r 0 63 20160 2 SunOS root aurora-2.0-sparc-boot.iso8 r 0 63 20160 2 SunOS root
Disk debian-40r5-sparc-businesscard.iso (Sun disk label): 1 heads, 640 sectors, 2048 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System debian-40r5-sparc-businesscard.iso1 r 0 77 24640 4 SunOS usr debian-40r5-sparc-businesscard.iso2 r 0 77 24640 2 SunOS root debian-40r5-sparc-businesscard.iso3 r 0 77 24640 2 SunOS root debian-40r5-sparc-businesscard.iso4 r 0 77 24640 2 SunOS root debian-40r5-sparc-businesscard.iso5 r 0 77 24640 2 SunOS root debian-40r5-sparc-businesscard.iso6 r 0 77 24640 2 SunOS root debian-40r5-sparc-businesscard.iso7 r 0 77 24640 2 SunOS root debian-40r5-sparc-businesscard.iso8 r 0 77 24640 2 SunOS root Detected sun disklabel with wrong version [0x00000000]. Detected sun disklabel with wrong sanity [0x00000000]. Detected sun disklabel with wrong num_partitions [0]. Warning: Wrong values need to be fixed up and will be corrected by w(rite)
Disk NetBSD_5.0.1_sparccd.iso (Sun disk label): 1 heads, 640 sectors, 599 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System NetBSD_5.0.1_sparccd.iso1 0 594 190080 0 Unassigned NetBSD_5.0.1_sparccd.iso2 594 599 1600 0 Unassigned NetBSD_5.0.1_sparccd.iso3 594 599 1600 0 Unassigned NetBSD_5.0.1_sparccd.iso4 594 599 1600 0 Unassigned
Disk suse-sparc-7.3-CD1.iso (Sun disk label): 1 heads, 640 sectors, 2035 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System suse-sparc-7.3-CD1.iso1 r 0 2035 651104 83 Linux native
Disk zoot-sparc.iso (Sun disk label): 1 heads, 640 sectors, 1904 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System zoot-sparc.iso1 r 0 1904 609152 83 Linux native
Disk OpenBSD-4.4.iso (Sun disk label): 1 heads, 640 sectors, 2048 cylinders Units = cylinders of 640 * 512 bytes
Device Flag Start End Blocks Id System OpenBSD-4.4.iso1 0 2048 655360 0 Unassigned OpenBSD-4.4.iso2 0 2048 655360 0 Unassigned OpenBSD-4.4.iso3 0 2048 655360 0 Unassigned OpenBSD-4.4.iso4 0 2048 655360 0 Unassigned
In the NetBSD case, 'a' is not bootable but 'd' is. Aurora 1.0, Zoot (Red Hat Linux 4.0) and SuSE 7.3 only boot from 'a'. In some images (for example Debian 4.0R5) 'a' and 'd' are equivalent.