Joe, if it would be something that interests you, and you have the time, we could work on adding proper PCI Probing to Openbios.
As it stands the Qemu_VGA is a pci device, and Qemu loads an Option rom, but it’s the VGA Bios and Opennbios doesn’t probe for option roms. Openbios has the Fcode for the Qemu-Vga device and there is a NDRV that gets loaded from a file.
What we really need is to make a proper FCode Rom image with the NDRV for the Qemu_VGA device, we could make a hybrid Bios/Fcode rom and not have to change the code in Qemu at all, I don’t think.
Here are some instructions on setting up and building Openbios on OS X Intel.
There is an effective tutorial on the openbios site. If you run OSX, you nee to install the fcode utils and use the awos cross compiler linked to: http://www.mediafire.com/download/wy5xg ... pilers.zip http://www.mediafire.com/download/wy5xgj2hwjp8k4k/AWOS_Cross-Compilers.zip
This is my script to build the OpenBIOS binary: PATH=:/usr/local/ppcelf/ppcelf/bin:/users/hsp/src/fcode-utils-devel/toke:$PATH export PATH cd openbios CROSS_COMPILE=ppc-elf- ./config/scripts/switch-arch ppc #(remove -Werror from CFLAGS in Makefile.target in top directory) make
Best, Cat_7
I forget the file that has the Forth for the Qemu_VGA device, Mark?
Also SLOF has some code for probing option roms for at least the GeForce 6600 PCI-E card, so that maybe something we can use to add support for option roms to OB.
\ ***************************************************************************** \ * Copyright (c) 2004, 2008 IBM Corporation \ * All rights reserved. \ * This program and the accompanying materials \ * are made available under the terms of the BSD License \ * which accompanies this distribution, and is available at \ * http://www.opensource.org/licenses/bsd-license.php \ * \ * Contributors: \ * IBM Corporation - initial implementation \ ****************************************************************************/
my-space pci-class-name type
my-space pci-device-generic-setup
pci-io-enable pci-mem-enable
30 config-l@ pci-find-fcode execute-rom-fcode
: check-display ( nodepath len -- true|false ) \ true if display found and "screen" alias set \ check if display available, set screen alias 2dup find-node \ ( path len phandle|0 ) find node ?dup IF \ node found, get "display-type" property s" display-type" rot get-property ( path len true|propaddr proplen 0 ) 0= IF ( path len propaddr proplen ) \ property found, check if the value is not "NONE" s" NONE" 0 char-cat ( path len propaddr proplen str strlen ) \ null-terminated NONE string str= 0= IF ( path len ) \ "display-type" property is not "NONE" so we can set "screen" alias s" screen" 2swap set-alias true ( true ) \ return true ELSE 2drop false ( false ) \ return false THEN THEN THEN ;
get-node node>path s" /NVDA,DISPLAY-A" $cat check-display 0= IF \ no display found on DISPLAY-A ... check DISPLAY-B get-node node>path s" /NVDA,DISPLAY-B" $cat check-display drop \ drop result THEN
s" name" get-my-property drop s" ( " type type s" ) " type cr
On 02/04/18 21:51, Jd Lyons wrote:
Joe, if it would be something that interests you, and you have the time, we could work on adding proper PCI Probing to Openbios.
As it stands the Qemu_VGA is a pci device, and Qemu loads an Option rom, but it’s the VGA Bios and Opennbios doesn’t probe for option roms. Openbios has the Fcode for the Qemu-Vga device and there is a NDRV that gets loaded from a file.
What we really need is to make a proper FCode Rom image with the NDRV for the Qemu_VGA device, we could make a hybrid Bios/Fcode rom and not have to change the code in Qemu at all, I don’t think.
Here are some instructions on setting up and building Openbios on OS X Intel.
There is an effective tutorial on the openbios site. If you run OSX, you nee to install the fcode utils and use the awos cross compiler linked to: http://www.mediafire.com/download/wy5xg ... pilers.zip http://www.mediafire.com/download/wy5xgj2hwjp8k4k/AWOS_Cross-Compilers.zip
This is my script to build the OpenBIOS binary: PATH=:/usr/local/ppcelf/ppcelf/bin:/users/hsp/src/fcode-utils-devel/toke:$PATH export PATH cd openbios CROSS_COMPILE=ppc-elf- ./config/scripts/switch-arch ppc #(remove -Werror from CFLAGS in Makefile.target in top directory) make
Best, Cat_7
I forget the file that has the Forth for the Qemu_VGA device, Mark?
You can find the QEMU VGA driver in drivers/vga.fs.
Note that the NDRV is deliberately served from QEMU via the hypervisor fw_cfg interface so that it is possible for QEMU to serve just the FCode option ROM by default, rather than having to embed the full Mac driver.
Getting OpenBIOS/QEMU to read a proper FCode ROM goes something like this:
1) Get OpenBIOS's compiled QEMU,VGA.bin FCode image added to QEMU
2) For certain machines (PPC/SPARC64) in QEMU replace the default PC option ROM with the FCode Option ROM
3) Hack vga_config_cb() to map the option ROM via the BAR (6) instead of directly executing the embedded FCode binary via byte-load
ATB,
Mark.
On 4/3/18, 1:17 PM, "Mark Cave-Ayland" mark.cave-ayland@ilande.co.uk wrote:
On 02/04/18 21:51, Jd Lyons wrote:
> Joe, if it would be something that interests you, and you have the time, > we could work on adding proper PCI Probing to Openbios. > > As it stands the Qemu_VGA is a pci device, and Qemu loads an Option rom, > but it’s the VGA Bios and Opennbios doesn’t probe for option roms. > Openbios has the Fcode for the Qemu-Vga device and there is a NDRV > that gets loaded from a file. > > What we really need is to make a proper FCode Rom image with the NDRV > for the Qemu_VGA device, we could make a hybrid Bios/Fcode rom and not > have to change the code in Qemu at all, I don’t think. > > Here are some instructions on setting up and building Openbios on OS X > Intel. > > There is an effective tutorial on the openbios site. If you run OSX, you > nee to install the fcode utils and use the awos cross compiler linked > to: http://www.mediafire.com/download/wy5xg ... pilers.zip > http://www.mediafire.com/download/wy5xgj2hwjp8k4k/AWOS_Cross-Compilers.zip > > This is my script to build the OpenBIOS binary: > PATH=:/usr/local/ppcelf/ppcelf/bin:/users/hsp/src/fcode-utils-devel/toke:$PATH > export PATH > cd openbios > CROSS_COMPILE=ppc-elf- ./config/scripts/switch-arch ppc > #(remove -Werror from CFLAGS in Makefile.target in top directory) > make > > Best, > Cat_7 > > I forget the file that has the Forth for the Qemu_VGA device, Mark?
You can find the QEMU VGA driver in drivers/vga.fs.
Note that the NDRV is deliberately served from QEMU via the hypervisor fw_cfg interface so that it is possible for QEMU to serve just the FCode option ROM by default, rather than having to embed the full Mac driver.
Getting OpenBIOS/QEMU to read a proper FCode ROM goes something like this:
1) Get OpenBIOS's compiled QEMU,VGA.bin FCode image added to QEMU
2) For certain machines (PPC/SPARC64) in QEMU replace the default PC option ROM with the FCode Option ROM
3) Hack vga_config_cb() to map the option ROM via the BAR (6) instead of directly executing the embedded FCode binary via byte-load
ATB,
Mark.
Why not have a single Option ROM with both a BIOS and Open Firmware image? The BIOS or Open Firmware should be smart enough to loop through the images and select the correct one. Since the option roms are on disk, we don't have to limit the total size. I suppose there's little point because the same machine isn't used for both BIOS and Open Firmware?
On 04/04/18 01:09, Joe van Tunen wrote:
Why not have a single Option ROM with both a BIOS and Open Firmware image? The BIOS or Open Firmware should be smart enough to loop through the images and select the correct one. Since the option roms are on disk, we don't have to limit the total size. I suppose there's little point because the same machine isn't used for both BIOS and Open Firmware?
For QEMU each of the ROMs tend to come from separate projects, so you'd end up having to somehow combine them into something custom which would make bisection/synchronisation and alterations much harder.
As all of the QEMU BIOSes can already talk to the hypervisor then you might as well use that interface to allow reconfiguration without having to rebuild QEMU and/or the ROM. A good example of this is the MacOS VGA NDRV which is served live from QEMU so you can switch the file for another freely without rebuilding anything.
ATB,
Mark.