[OpenBIOS] [PATCH] Add resolutions via the command-line

G 3 programmingkidx at gmail.com
Wed Sep 21 20:26:30 CEST 2016

On Sep 21, 2016, at 5:01 AM, Benjamin Herrenschmidt wrote:

> On Tue, 2016-09-20 at 22:54 -0400, G 3 wrote:
>> You really want to remove the included list of resolutions? I was
>> thinking about adding a lot more built-in resolutions in another
>> patch. A built-in list is very convenient.
> I mean remove it from the driver and put it in OpenBIOS instead.
> Ie. have openbios build the resolution list from the combination of  
> what you put
> in the options node and its own built-in list.

That idea is shared with others. OpenBIOS might be considered easier  
to alter than the VGA driver, so this might be best.

>> As for the options node problem. We need a way to add resolutions
>> from the command-line for a Mac OS X guest. Using "-prom-env" isn't
>> an option because of some unknown bug.
> Maybe, I can look into it later, but the above would fix it nicely.

Nodes like chose, aliases, openprom are of class IOService. options  
is of class IODTNVRAM. It looks like this class has problems. I'm  
thinking since Alexander Graf did work in the mac_nvram.c file, he  
might know what is wrong. I found another way to access the options  
node in Mac OS X. Use this command: ioreg -c IODTNVRAM. It stops at  
the options node and prints this error message: "ioreg: error: can't  
obtain properties" in QEMU. On a real Power Mac the command prints  
all the properties of the options node just fine.

>>  I suppose it is possible to
>> fix this bug - if it is a bug. Another idea I have is to add a
>> completely different command-line option to QEMU just for
>> resolutions. The user could specify resolutions like this: -video-
>> resolutions 640x480,1024x768,1280x700.... This feature could place
>> the list of resolutions inside a property of the VGA device node. I
>> am betting the VGA driver could access this node and parse the list
>> of resolutions. So this: qemu -video-resolutions ---> OpenBIOS VGA
>> device node ---> VGA driver
>> Would anyone have another idea they would like to share?
> As I said. Have OpenBIOS build the list of resolutions and put it in a
> property (in binary, not ASCII form so the driver doesn't have to do
> the mess it does now) in the DT node of the device itself.

I don't know about using binary. The way we do it now seems just fine.

I just need to figure out how to write to the /chosen node from the  
QEMU command line. I found a function called OpenBIOS_set_var() in  
openbios_firmware_abi.h, but it would require an address to write to.  
So where do I find the address of the /chosen node....

More information about the OpenBIOS mailing list