As discovered while investigating the above Ubuntu bug (see URL), x86emu does ugly things to the BIOS, when polling for DDC. This downright crashes the hardware, on platforms with picky BIOS.
Two patches have been made against X server 1.3 and X server 1.4, also found at the above bug report. They need to be merged into GIT before X server 1.5 is released.
Not sure how XFree86 int10 support counts as 'core protocol' ...
Created attachment 14088 [details] [review]
x86emu blacklist patch
This is the first of two patches required to fix x86emu.
Created attachment 14089 [details] [review]
x86emu PCI bus polling patch
This second patch to x86emu fixes PCI bus polling.
Created attachment 14106 [details] [review]
X86EMU: handle CPUID instruction (passthrough)
I have another related patch to add CPUID instruction emulation to x86emu.
The CPUID patch solves an issue that appeared with several video drivers starting with X server 1.3, where CTRL+ALT+F* would not successfully bring the user to the vcons anymore, even though this works fine when compiling the same video driver against an older X server.
Created attachment 14122 [details] [review]
14106: X86EMU: handle CPUID instruction (Gutsy, x-platform)
This is an updated patch for CPUID instruction emulation, after absorbing sugestsions from xorg mailing list and IRC channel.
14089 needs a fixed commit message at least
The CPUID fix is already in master.
It's not clear from the description in attachment #14089 [details] [review], so: the bug there is that we should access the register on the device specified by the write to 0xcf8, which is not necessarily the video device. It could easily be, say, the host bridge.
pciaccess makes this patch not apply directly, but basically we need to use the value written to 0xcf8 to construct a struct pci_device. Whee.
Created attachment 14731 [details] [review]
This is a port of the "black list" patch to the master branch of xorg.
Created attachment 14732 [details] [review]
This is a port of the patch, that fixes incorrect PCI device access bug, to the master branch.
Please note that I have had issues building X from git so I was unable to test these patches.
With the change to not treat the high bit of 0xcf8 as part of the domain number, this pretty much works now, as far as I can tell.
I'd like to see the blacklist done some other way, but the "right" way is probably a far more generic overhaul of ioport services than I really want to get into atm. Taking this off the 7.4 blocker on the basis that it works again, but leaving open for further blacklist work.