Hello Patrick,
Tuesday, April 4, 2017, 8:54:09 PM, you wrote:
PR> VBT is documented by intel-gpu-tools. There's intel_vbt_decode PR> (former intel_bios_decode) available PR> https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/tree/tools/intel_vbt_d... PR> that will print all tables in human readable form.
Nice find! I did not realize this tool supports that many structures; for some reason I thought it just prints some general info without details.
So now that we have a dumper the following should be possible: 1) make a "decompiler" that would convert VBT from the option ROM into a human/machine readable text format 2) make a "compiler" that would take that text format and create a binary VBT from it 3) put the binary VBT into the ACPI IGD OpRegion table ([1], [2]), or wherever the graphics driver can find it.
So, basically, an approach similar to ich9gen for the flash descriptor/gbe.
This should allow getting rid of the option ROM if real mode support is not required.
[1] https://01.org/sites/default/files/documentation/acpi_igd_opregion_spec_0.pd... [2] https://lwn.net/Articles/429319/
PR> Am 4. April 2017 20:45:15 MESZ schrieb Nico Huber nico.h@gmx.de: PR> Hi Ron,
PR> On 04.04.2017 19:46, ron minnich wrote: PR> Igor, if you are going to say things like "AFAIK there is no public PR> description of these tables' layout and contents, only Intel knows how to PR> build and parse them.", it's really a good idea to back it up with a PR> primary source, especially since you also use phrases like "I assume" and PR> "I guess". I am pretty sure you're wrong in this case. The V in VBT, as I PR> understand it, means VESA, and VESA has been a standard for about 30 years. PR> PR> Please, everyone, if you're going to move this conversation forward, you PR> need to cite primary sources at least, such as this one: PR> http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf.
PR> now you got confused too. I'll try to clarify.
PR> VBE means VESA (Video Electronics Standards Association) BIOS Extension. PR> It's a Video BIOS interface extension (i.e. specifying additional BIOS PR> calls). Don't know if it was public from the beginning (you often have PR> to be a VESA member to get access to their "standards"), but the inter- PR> face is used by many open source programs. It's vendor independent. Also PR> it's off-topic, nobody was discussing it here.
PR> As Igor noted, VBE has absolutely nothing to do with VBT.
PR> VBT means Video BIOS Table. It's a 100% Intel specific table of confi- PR> guration options for Intel's Video BIOS and Intel's graphics drivers. PR> There is no public documentation, but as it's used by the Linux driver, PR> at least the structure and some of the values are publicly "documented" PR> [1]. Developers of the i915 Linux driver stated that they are not wil- PR> ling to support systems without a VBT. Most features of the i915 driver PR> work without a VBT by chance. But anything board specific, like inte- PR> grated panels in laptops, will likely _not_ work. I'd also expect that PR> they won't count it as a regression if something breaks but would still PR> work with a VBT. (Windows won't even try to get things running without PR> VBT, AFAIK.)
PR> An OEM should have access to Intel's binary configuration tool and the PR> specification file for the VBT of his processor's generation. It comes PR> along with the VBIOS, I suppose.
PR> Nico
PR> PS. Igor, Zoran please write text-only emails or at least make sure the PR> text version is readable and quotes are visible as quotes.
PR> [1] PR> https://www.kernel.org/doc/html/latest/gpu/i915.html#video-bios-table-vbt