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

Michael S. Tsirkin mst at redhat.com
Tue Aug 6 18:58:20 CEST 2013


On Tue, Aug 06, 2013 at 12:43:04PM -0400, Paolo Bonzini wrote:
> > > > ATM it looks like we should test
> > > >         "Windows 2000" ||
> > > >         "Windows 2001" ||
> > > >         "Windows 2001 SP1" ||
> > > > 	"Windows 2001.1 SP1"
> > > 
> > > Including this may be too strict, what about 98/ME?
> > 
> > Isn't this past EOL?
> 
> So what?  People try to use it with QEMU, and it's fair to assume
> it's worse than XP.

I agree it's likely but I don't think we should presume anything until it's tested.

> > > > 	&& !(
> > > >         "Windows 2006" ||
> > > >         "Windows 2006.1" ||
> > > 
> > > We know that these are all implied by the following four:
> > > 
> > > >         "Windows 2006 SP1" ||
> > > >         "Windows 2006 SP2" ||
> > > >         "Windows 2009" ||
> > > >         "Windows 2012" ||
> > > 
> > > So it is not necessary to test these four.
> > 
> > True, but I don't see how this can harm us, and
> > I'm trying to check as much as possible.
> 
> Fair enough.
> 
> > > > 	"Linux" ||
> > > > 	"FreeBSD"
> > > > 	) &&
> > > > 	_OS == "Microsoft Windows NT"
> > > > 	&&
> > > > 	_REV == 0x1
> > > 
> > > Testing _OS and _REV is probably too strict.
> > 
> > Why too strict? We want to only affect very specific guests.
> > whatever we don't know about, let's not touch it.
> 
> In practice all OSes we care about will disguise themselves
> as Windows.  I checked Solaris now and it follows Linux's lead:
> http://fxr.watson.org/fxr/source/intel/io/acpica/utilities/uteval.c?v=OPENSOLARIS;im=10

I'm still worried about using _OSI. This makes it a risky change,
guests do change behaviour depending on which _OSI are called.
No way to tell what this will do without lots of testing.

I have an alternative idea: it looks like XP/2003 are the
only OS-es which have _REV set to 0x1 which is the ancient
API 1.0 spec.

Maybe it's enough to check _REV == 1 and _OS == windows ?

That's certainly lower risk from this POV, but need
to check old Linux and other guests.


> For whatever we don't know about, why should we assume 64-bit BARs
> work?  Especially considering it's likely to be pretty old guests.
> 
> Paolo

There's no need to assume 64 bit BARs works.
But I think we can assume guests don't crash.
What windows does here is very unusual imho,
guest should just say "I can't use this range
so I won't" and allocate BARs somewhere else.


-- 
MST



More information about the SeaBIOS mailing list