|
From: | BALATON Zoltan |
Subject: | Re: [Qemu-devel] Machine specific option ROMs |
Date: | Tue, 20 Aug 2019 12:46:56 +0200 (CEST) |
User-agent: | Alpine 2.21.9999 (BSF 287 2018-06-16) |
On Tue, 20 Aug 2019, Gerd Hoffmann wrote:
For example in qemu 1.5 the nic roms got EFI support and there is a compat property which switches the pc-i440fx-1.4 (and older) machine types to the non-efi versions. Grep for pxe-e1000.rom to find the code.Note that roms with a pci firmware standard header[1] can be chained together, then placed in the pci rom bar. This is how the efi-*.rom files are created, they are three-in-one images (bios, efi ia32, efi x64). # file pc-bios/qemu_vga.ndrv pc-bios/qemu_vga.ndrv: header for PowerPC PEF executable Hmm, so that is probably not going to work.+static GlobalProperty compat[] = { + { "VGA", "romfile", NDRV_VGA_FILENAME }, +};+ compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));I wouldn't name the variable compat (in this specific case it's not for backward compatibility), but yes, this is the idea.manually. (In the future this same way can also be used to pass proper FCode ROMs to OpenBIOS.)The image type (pci rom header) can be: Type Description 0 Intel x86, PC-AT compatible 1 Open Firmware standard for PCI 2 Hewlett-Packard PA RISC 3 Extensible Firmware Interface (EFI) 4-FF Reserved So having a single pci rom image with both classic vgabios (type 0) and open firmware fcode (type 1) should be possible. cheers, Gerd [1] http://read.pudn.com/downloads211/doc/comm/994029/pcifw_r3_0_updated.pdf, section 5.1
Thanks for investigating it. However there are at least two problems with that idea:
1. OpenBIOS does not yet understand standard PCI ROM headers, it can only handle NDRV and PEF ROMs yet so first support for that (and FCode ROMs) should be added to OpenBIOS.
2. Building rom images from different sources (in this case your vgabios and QemuMacDrivers for the NDRV) might not be straightforward (maybe some clever make rules would take care of these without too much hassle but I'm not sure, this would mean rebuilding binary if any of the two sources change).
Plus I don't know if other firmwares such as sam460ex U-Boot can handle such multiplatform ROMs, especially because it can use x86 ROM just not the QEMU vgabios due to not emulating i386 specific opcodes that gcc puts in real mode code so it needs something compiled with bcc such as Plex86/Bochs VGABios so then we can't put those in one binary because we had two x86 images in it. Therefore I think setting this based on machine like above is probably the easiest way for now.
I'll wait for Mark's comments before going further with this. Regards, BALATON Zoltan
[Prev in Thread] | Current Thread | [Next in Thread] |