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
> > > && !(
> > > "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.
> > > "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:
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
work? Especially considering it's likely to be pretty old guests.
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.