[SeaBIOS] [PATCH] acpi: hide 64-bit PCI hole for Windows XP

Gerd Hoffmann kraxel at redhat.com
Wed Aug 7 14:15:14 CEST 2013


  Hi,

> But anyway, with latest QEMU this is user's mistake:
> user specifies the values for pci-info and
> user also specified set of devices inconsistent with that.

qemu doesn't error out though, so what is the point?

>>> Third, there are good reasons for pci-info, and
>>> windows bugs don't outweight them.
>>> In particular, there's duplicated logic in bios and QEMU,
>>> if you change QEMU to be closer to real hardware, kaboom.
>>
>> --verbose please.  Which logic is duplicated?
> 
> The one setting the PCI hole addresses :)

That wasn't duplicated before you've added pci-info.

>>> Last, it's a maintainance problem that we need
>>> drivers for all chipsets open-coded in BIOS.
>>> One suggestion we had is moving completely away
>>> and supplying some bytecode for what's left of chipset
>>> configuration (e.g. memcfg) to seabios.
>>
>> Sorry, but I fail to see the problem.  There isn't that much
>> chipset-specific code in seabios, and it rarely needs changes.  Adding a
>> bytecode interpreter to be able to rip it out sounds like overkill to me.
> 
> Possibly, though I shouldn't really have said bytecode - more
> a set of address/data pairs to write into config space
> (if you like, it can be a loader extension).
> But let's discuss this separately.

Isn't going to fly for coreboot.  Initialization of real hardware
doesn't work that way, and on coreboot qemu support shares the
piix4/ich9 setup code with real mainboards.

>> Why enable by default?  I would be conservative here.  I have yet to see
>> real hardware with a 64bit pci window.
>> Things which are rare or don't
>> exist on real hardware have a higher chance to trigger guest bugs.
> 
> In fact, it's up to QEMU whether to enable it by default.
> Yes we could be even more aggressive, and tweak
> 398489018183d613306ab022653552247d93919f
> to make the default 0 and not 2G.
> 
> If we do this, we can take the time with designing the
> proper fix for winXP - this just shows
> that pci-info is the right approach.

This only proves that you can fix the bug introduced by adding pci-info.

Current seabios which completely ignores pci-info works equally well
with WinXP.

>>> We must also supply the 64 bit window size as
>>> the limits differ between windows guests.
>>> That's exactly the etc/pci-info logic.
>>
>> pci-info does more than just the 64bit window size.
>>
>> cheers,
>>   Gerd
> 
> Yes.  It does exactly what's needed to make sure PCI windows
> match the addresses that hardware listens on.

seabios handles this just fine today.

The only missing bit is some way to request seabios add a 64bit window
(of a certain size) unconditionally, so it is there even in case it
isn't needed for the devices present at boot time.  A simple
etc/pci-64bit-size integer would do the job.

cheers,
  Gerd





More information about the SeaBIOS mailing list