From: Laszlo Ersek <lersek@redhat.com>
To: Bill Paul <wpaul@windriver.com>
Cc: qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
Gal Hammer <ghammer@redhat.com>,
edk2-devel@ml01.01.org, "Moore, Robert" <robert.moore@intel.com>,
Josh Triplett <josh@joshtriplett.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Igor Mammedov <imammedo@redhat.com>
Subject: Re: [Qemu-devel] [edk2] Windows does not support DataTableRegion at all [was: docs: describe QEMU's VMGenID design]
Date: Tue, 15 Sep 2015 12:49:04 +0200 [thread overview]
Message-ID: <55F7F7A0.5090802@redhat.com> (raw)
In-Reply-To: <201509141412.23350.wpaul@windriver.com>
On 09/14/15 23:12, Bill Paul wrote:
[snip -- see my other email too]
> Also, if you want to talk business cases, I'm assuming that somewhere
> Microsoft claims ACPI compliance.
Correct; this page:
<https://msdn.microsoft.com/en-us/library/windows/hardware/dn551195%28v=vs.85%29.aspx>
states
Version 5.0 of the Microsoft ACPI source language (ASL) compiler
supports the features in the Advanced Configuration and Power
Interface Specification, Revision 5.0 [...]
And the separately downloadable ASL.exe that I tried starts with a banner that claims ACPI 4.0 compliance:
> C:\Program Files (x86)\Microsoft ASL Compiler v4.0>asl.exe x.dsl
> Microsoft ACPI Source Language Assembler Version 4.0.0NT [Aug 28 2009, 18:36:36]
>
> Copyright (c) 1996,2009 Microsoft Corporation
> Compliant with the ACPI 4.0 Specification
>
> [...]
The DataTableRegion() operator is from ACPI 2.0.
In ACPI 6.0 (the most recent release), it is still there.
(And, logically, if you can compile DataTableRegion() from ASL to AML (-> DefDataRegion), then your AML interpreter should also be able to parse and execute the binary DefDataRegion encoding codified by the standard.)
> If so, then clearly that claim is untrue,
Let's say, "not precise".
I think such gaps in support for various industry standards are not uncommon, but I believe they should be publicly documented. Using Google, I couldn't find a trace of this limitation. If there had been public documentation about this (or maybe a public bug tracker, or just a tech support forum post...), it would have saved us many many hours, at minimum.
(At this point though, the best for us would be if Microsoft decided to implement DataTableRegion() in ACPI.SYS, and push it out as KBxxxxx.)
> and I'd be willing to bet this isn't the only place where their implementation
> deviates from the spec either.
I assume that's likely, yes.
> It's bad for business to claim compliance with
> an industry standard and then very obviously (and maybe even deliberately) not
> comply with it.
The inaccurate claim about compliance is certainly confusing.
Establishing the non-compliance (from the oustide anyway) was anything but obvious. But, now that we've seen the evidence, it's quite factual.
> (If, as you say, this has already been reported and Microsoft
> decided not to fix it, then it's no longer just a good faith mistake.)
I didn't try to state that as a fact, I just opined that in the 15 years since the release of the ACPI 2.0 revision, someone must surely have tried DataTableRegion(). Assuming that programmer worked for a big BIOS company (which I think is a safe assumption -- before virtualization has become commonplace, who else looked into *writing* ACPI tables?), it seems to follow that a bug would be reported in some way.
> It's
> even worse to do that while also being a prominent member of the very same
> industry committee responsible for defining the standard in the first place.
Right, it's strange.
> In any case, bugs are bugs. You shouldn't need a justification to fix them,
> especially with iron-clad proof of their existence like you have here.
Bugfixing has costs. That's what I'm worried about a little bit. I don't know what to put in the other side of the balance. "Improving compliance" should have marketing value, minimally. Then, "helping QEMU developers implement Microsoft's VMGENID spec, thereby improving Windows guest utility on QEMU" should ultimately translate to wider Windows guest adoption.
> All that aside, I don't know who to report it to either. Maybe this is a good
> time to establish a way to do that, because I doubt this will be the last time
> it will be necessary.
I'm hopeful about the ASWG connection.
Thanks!
Laszlo
> -Bill
>
>> Thanks
>> Laszlo
>>
>>> -Bill
>>>
>>>>> I suggest we go back to the last Gal's series
>>>>> which is though not universal but a simple and
>>>>> straightforward solution.
>>>>> That series with comments addressed probably
>>>>> is what we need in the end.
>>>>
>>>> I agree (I commented the same on the RHBZ too). The only one requirement
>>>> we might not satisfy with that is that the page containing the
>>>> generation ID must always be mapped as cacheable. In practice it doesn't
>>>> seem to cause issues.
>>>>
>>>> We tried to play nice, but given that (a) the vmgenid doc doesn't
>>>> mention a real requirement about the _CRS -- ie. no IO descriptors are
>>>> allowed to be in it --, (b) Windows doesn't support DataTableRegion(), I
>>>> doubt we could cover our bases 100% anyway. There can be any number of
>>>> further hidden requirements, and hidden gaps in ACPI support too, so
>>>> it's just business as usual with Windows: whatever works, works, don't
>>>> ask why.
>>>>
>>>> Just my opinion of course.
>>>>
>>>> Laszlo
>>>>
>>>>>> The only crazy thing you didn't try is to use
>>>>>> an XSDT instead of the DSDT.
>>>>>> I find it unlikely that this will help ...
>>>>
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org
>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>
next prev parent reply other threads:[~2015-09-15 10:49 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-28 20:18 [Qemu-devel] [RFC] docs: describe QEMU's VMGenID design Laszlo Ersek
2015-09-01 19:47 ` Eric Blake
2015-09-01 22:05 ` Laszlo Ersek
2015-09-01 22:22 ` Eric Blake
2015-09-07 16:30 ` Paolo Bonzini
2015-09-03 13:49 ` Michael S. Tsirkin
2015-09-03 14:24 ` Laszlo Ersek
2015-09-13 11:56 ` [Qemu-devel] Windows does not support DataTableRegion at all [was: docs: describe QEMU's VMGenID design] Laszlo Ersek
2015-09-13 12:34 ` Michael S. Tsirkin
2015-09-13 12:57 ` Laszlo Ersek
2015-09-14 8:24 ` Igor Mammedov
2015-09-14 10:24 ` Laszlo Ersek
2015-09-14 16:53 ` [Qemu-devel] [edk2] " Bill Paul
2015-09-14 17:14 ` Moore, Robert
2015-09-14 17:23 ` Walz, Michael C
2015-09-14 18:04 ` Moore, Robert
2015-09-14 18:24 ` Laszlo Ersek
2015-09-15 10:49 ` Laszlo Ersek
2015-09-14 18:20 ` Laszlo Ersek
2015-09-14 21:12 ` Bill Paul
2015-09-15 10:49 ` Laszlo Ersek [this message]
2015-09-15 13:45 ` Moore, Robert
2015-09-15 14:29 ` Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 00/13] ACPI stuff for the DataTableRegion()-based VMGenID Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 01/13] docs: describe QEMU's VMGenID design Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 02/13] hw/acpi: add i386 callbacks for injecting GPE 04 when the VMGENID changes Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 03/13] hw/acpi: rename "AcpiBuildTables.table_data" to "main_blob" Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 04/13] hw/acpi: allow RSDT entries to be relocated to various fw_cfg blobs Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 05/13] hw/acpi: add more flexible acpi_add_table() and build_header() variants Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 06/13] hw/acpi: introduce ACPI_BUILD_QEMUPARAM_FILE Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 07/13] hw/acpi: introduce the AcpiQemuParamTable structure Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 08/13] hw/i386: build UEFI ACPI Data Table for VMGENID in the dedicated blob (WIP) Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 09/13] hw/acpi: expose more parameters for aml_method() Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 10/13] hw/acpi: add AML generator function for DataTableRegion() Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 11/13] hw/acpi: add AML generator function for AccessAs() Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 12/13] hw/acpi: add AML generator function for CreateQWordField() Laszlo Ersek
2015-09-13 12:43 ` [Qemu-devel] [PATCH FYI 13/13] hw/i386: generate AML for the VMGENID device (WIP) Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55F7F7A0.5090802@redhat.com \
--to=lersek@redhat.com \
--cc=edk2-devel@ml01.01.org \
--cc=ghammer@redhat.com \
--cc=imammedo@redhat.com \
--cc=josh@joshtriplett.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=robert.moore@intel.com \
--cc=wpaul@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).