qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Cc: ghammer@redhat.com, imammedo@redhat.com, qemu-devel@nongnu.org,
	shannon.zhao@linaro.org
Subject: Re: [Qemu-devel] [PATCH v2 0/4]  acpi: xsdt support
Date: Tue, 09 Jun 2015 09:41:20 +0200	[thread overview]
Message-ID: <557698A0.7000506@redhat.com> (raw)
In-Reply-To: <20150609083716-mutt-send-email-mst@redhat.com>

On 06/09/15 08:38, Michael S. Tsirkin wrote:
> On Tue, Jun 09, 2015 at 08:35:38AM +0200, Michael S. Tsirkin wrote:
>> On Tue, Jun 09, 2015 at 02:02:31AM -0400, Paolo Bonzini wrote:
>>> I would just patch OVMF to ignore the RSDT if there is an XSDT.
>>>
>>> Alternatively, can you check for ACPI 2.0 support via _OSI, and load the ACPI 2.0 bits via LoadTable? Hopefully XP does not BSOD if the invalid (for ACPI 1.0) opcodes are in a Then block or in a separate method... Then you can use just an RSDT.
>>>
>>> Paolo
>>
>>
>> It does BSOD.
>> Skipping RSDT sounds good.
> 
> Thought a full fix would be nicer - I suspect we'll have more things like this
> in the future.

* I think I wasn't clear enough in my email. There are two problems. The
first problem is that the current linker/loader client in OVMF passes
the same table twice to EFI_ACPI_TABLE_PROTOCOL, if this patch series is
applied to QEMU. That may be fixable, perhaps in several ways.

However, the second problem is, whatever I give EFI_ACPI_TABLE_PROTOCOL,
it will link a copy of that table into the RSDT *and* the XSDT
automatically and indivisibly. So, if you prepare an SSDT with the
opcode that causes XP to BSOD and link that only into the XSDT, then
after OVMF passes it to EFI_ACPI_TABLE_PROTOCOL (only once), the guest
OS will find it in the RSDT and the XSDT both.

On the other hand XP is not a UEFI operating system, so this might not
matter.

* Not sure what is meant by "skipping RSDT". I'm only following
ADD_POINTER commands. Those commands say "increment the UINT[1248] value
at offset foo in *blob* bar, with the start address of blob baz". I have
no clue what table the incremented pointer lives in, I can only check
what table it (potentially) points to. I already omit passing the RSDT
to EFI_ACPI_TABLE_PROTOCOL when I detect it on the *target* side of a
pointer, but I can't recognize it on the source side.

There is no actual graph traversal in place; I only mentioned the DAG
for illustration. The direct reason is that there are two ADD_POINTER
commands (and two source locations to be incremented, respectively) for
each particular pointed-to (blob, offset).

* What does a full fix mean? ... I'm not sure this is worth the churn.
Same as the user is expected not to boot XP with OVMF as the firmware
(which is a command line / libvirt configuration question), he could
just as well be expected not to configure vmgenid for XP.

Thanks
Laszlo

  reply	other threads:[~2015-06-09  7:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-08 18:14 [Qemu-devel] [PATCH v2 0/4] acpi: xsdt support Michael S. Tsirkin
2015-06-08 18:14 ` [Qemu-devel] [PATCH v2 1/4] acpi: add API for 64 bit offsets Michael S. Tsirkin
2015-06-08 18:14 ` [Qemu-devel] [PATCH v2 2/4] i386/acpi: collect 64 bit offsets for xsdt Michael S. Tsirkin
2015-06-08 18:14 ` [Qemu-devel] [PATCH v2 3/4] i386/acpi: add XSDT Michael S. Tsirkin
2015-06-08 18:14 ` [Qemu-devel] [PATCH v2 4/4] acpi: unify rsdp generation Michael S. Tsirkin
2015-06-09  0:08 ` [Qemu-devel] [PATCH v2 0/4] acpi: xsdt support Laszlo Ersek
2015-06-09  5:31   ` Michael S. Tsirkin
2015-06-09  6:02     ` Paolo Bonzini
2015-06-09  6:35       ` Michael S. Tsirkin
2015-06-09  6:38         ` Michael S. Tsirkin
2015-06-09  7:41           ` Laszlo Ersek [this message]
2015-06-09  8:34             ` Michael S. Tsirkin
2015-06-09 14:01               ` Laszlo Ersek
2015-06-09  9:39         ` Igor Mammedov
2015-06-09  9:10       ` Michael S. Tsirkin
2015-06-09  9:49       ` Michael S. Tsirkin
2015-06-09 14:02         ` Laszlo Ersek
2015-06-09 14:05           ` Michael S. Tsirkin
2015-08-27 14:27             ` Laszlo Ersek
2015-08-27 17:58               ` Michael S. Tsirkin
2015-08-28  6:23                 ` 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=557698A0.7000506@redhat.com \
    --to=lersek@redhat.com \
    --cc=ghammer@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=shannon.zhao@linaro.org \
    /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).