[SeaBIOS] [BUG] [Seabios] PCI 64bit BARs on Win2008 - unable to start the device. (ACPI lacks the _DSM method)

Michael S. Tsirkin mst at redhat.com
Mon Dec 5 07:31:51 CET 2011

On Mon, Dec 05, 2011 at 05:20:32PM +1300, Alexey Korolev wrote:
> Hi Michael,
> Thank you for good advice, you are right.  When I added new range
> above 4GB in _CRS the problem has gone.
>   QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
> NonCacheable, ReadWrite,
>                    0x00000000,          // Address Space Granularity
>                    0x100000000,        // Address Range Minimum
>                    0x3FFFFFFFF,        // Address Range Maximum
>                    0x00000000,          // Address Translation Offset
>                    0x400000000,        // Address Length
>                    ,, , AddressRangeMemory, TypeStatic)
> The only big problem with this range - as soon as I have more than
> 3GB of RAM, windows will boot in BSOD. The problem relates to memory
> range intersection.
> Unfortunately it is not possible to predict how many GB of RAM the
> virtual machine could have - so it's difficult to specify a
> particular region.
> Do you have any ideas what can be done to solve this problem?
> Regards,
> Alexey

Two possible ideas:
1. Pass the value in from qemu
2. Get a range toward the upper end of the memory, around 1<<40

> >On Thu, Dec 01, 2011 at 06:49:54PM +1300, Alexey Korolev wrote:
> >>Isaku san,
> >>
> >>I've just added you to discussion.
> >>There are some issues with PCI 64bit support in Windows. Windows
> >>fails to assign the resource if it doesn't fit in first 4GB window.
> >>
> >>I really don't know why it happens.
> >>One of the possibilities is related to lack of _DSM method in ACPI.
> >>
> >>Another guesse could be related to the fact that 440FX only supports
> >>32bit PCI bus interface and windows may limit PCI address range to
> >>first 4GB for PCI devices under this bridge.
> >>I remember you were working on Q35 chipset simulation, I wonder if
> >>it is working and would it be possible to try?
> >>
> >>Thanks,
> >>Alexey
> >Maybe the range above 4G needs to be declared in the _CRS
> >resource?

More information about the SeaBIOS mailing list