From: "Michael S. Tsirkin" <mst@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: jsnow@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 0/6] pc: bring ACPI table size below to 2.0 levels, try fixing -initrd for good
Date: Thu, 2 Oct 2014 15:11:40 +0300 [thread overview]
Message-ID: <20141002121140.GA25373@redhat.com> (raw)
In-Reply-To: <1411057074-11157-1-git-send-email-pbonzini@redhat.com>
On Thu, Sep 18, 2014 at 06:17:48PM +0200, Paolo Bonzini wrote:
> In the emergency last-minute patches of QEMU 2.1 we did two things:
>
> - fixed migration problems from 1.7 or 2.0 to 2.1 due to changes in
> ACPI table sizes
>
> - ensured that future versions will not break migration compatibility
> with 2.2 for reasonable configurations (with ACPI tables smaller
> than a hundred kilobytes, roughly)
>
> However, this came at the cost of wasting 128 KB unconditionally on
> even the smaller configuration, and we didn't provide a mechanism to
> ensure compatibility with larger configurations.
>
> This series provides this mechanism. As mentioned early, the design
> is to consider the SSDT immutable and versioned (together with other
> non-AML tables such as HPET, TPMA and MADT, SRAT, MCFG, DMAR).
> The DSDT instead can change more or less arbitrarily. To do this,
> we add padding after the DSDT to allow for future growth.
I'm not sure I got this one.
Why is this padding more robust than the one we have now?
> Once we do this, the size of the ACPI table fw_cfg "file" is constant
> given a machine type and a command-line, so we do not need anymore the
> larger 128KB padding.
>
> This is done in patches 4-6.
>
> However, there is another problem. As the ACPI tables grow, we need
> to move the address at which linuxboot.bin loads the initrd. This
> address is placed close to the end of memory, but it is QEMU that
> tells linuxboot.bin where exactly the initrd is to be loaded. And
> QEMU cannot really know how much high memory SeaBIOS will use, because
> QEMU does not know the final e820 memory map.
>
> The solution would be to let linuxboot.bin parse the memory map and
> ignore the suggested initrd base address, but that's tedious. In the
> meanwhile, we can just assume that most of the need comes from the ACPI
> tables (which is in fact true: patch 3 adds a fixed 32k extra just in
> case) and dynamically resize the padding.
>
> This is what patches 1-3 do. The nice part is that they also remove
> some differences between Xen and other accelerators. I would appreciate
> Xen testing from interested people.
>
> Thanks,
>
> Paolo
I'm not inclined to apply this for 2.2.
Summarizing what you say, there are two issues around ACPI tables:
- linuxboot uses FW CFG to for memory allocations,
seabios ignores that, so they might conflict.
Let's fix either linuxboot or seabios (or both!)
and forget about it.
- table size changes cause cross version migration issues
this is really due to the fact we are using RAM
to migrate ACPI tables.
IMHO a more robust fix would be to allow RAM size to change
during migration, or to avoid using RAM, switch to another type of
object.
So both issues have other solutions, and I think it's a good
idea to focus on them for now.
Also, I really would like to avoid having ACPI sizing-related
issues for this release. The memory of 2.1.X pain is too fresh :)
I'm not NACKing this patchset, but let's
make some progress on the bigger issues listed above, then come
back and address sizing as appropriate.
Thanks!
>
> Paolo Bonzini (6):
> pc: initialize fw_cfg earlier
> pc: load the kernel after ACPI tables are built
> pc: redo sizing of reserved high memory area for -kernel/-initrd
> pc: introduce new ACPI table sizing algorithm
> pc: go back to smaller ACPI tables
> pc: clean up pre-2.1 compatibility code
>
> hw/i386/acpi-build.c | 23 +++++++++-------
> hw/i386/pc.c | 72 +++++++++++++++++----------------------------------
> hw/i386/pc_piix.c | 32 ++++++++++++++--------
> hw/i386/pc_q35.c | 7 ++--
> include/hw/i386/pc.h | 4 ++
> 5 files changed, 66 insertions(+), 72 deletions(-)
next prev parent reply other threads:[~2014-10-02 12:08 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-18 16:17 [Qemu-devel] [PATCH 0/6] pc: bring ACPI table size below to 2.0 levels, try fixing -initrd for good Paolo Bonzini
2014-09-18 16:17 ` [Qemu-devel] [PATCH 1/6] pc: initialize fw_cfg earlier Paolo Bonzini
2014-09-18 16:17 ` [Qemu-devel] [PATCH 2/6] pc: load the kernel after ACPI tables are built Paolo Bonzini
2014-09-18 16:17 ` [Qemu-devel] [PATCH 3/6] pc: redo sizing of reserved high memory area for -kernel/-initrd Paolo Bonzini
2014-09-18 16:17 ` [Qemu-devel] [PATCH 4/6] pc: introduce new ACPI table sizing algorithm Paolo Bonzini
2014-09-18 16:17 ` [Qemu-devel] [PATCH 5/6] pc: go back to smaller ACPI tables Paolo Bonzini
2014-09-18 16:17 ` [Qemu-devel] [PATCH 6/6] pc: clean up pre-2.1 compatibility code Paolo Bonzini
2014-09-19 7:36 ` [Qemu-devel] [PATCH 0/6] pc: bring ACPI table size below to 2.0 levels, try fixing -initrd for good Gerd Hoffmann
2014-09-19 8:06 ` Paolo Bonzini
2014-09-19 13:09 ` Paolo Bonzini
2014-10-02 12:11 ` Michael S. Tsirkin [this message]
2014-10-02 12:44 ` Paolo Bonzini
2014-10-02 13:30 ` Paolo Bonzini
2014-10-02 13:41 ` Michael S. Tsirkin
2014-10-02 13:43 ` Paolo Bonzini
2014-10-02 13:49 ` Michael S. Tsirkin
2014-10-06 13:42 ` Paolo Bonzini
2014-10-06 13:52 ` Michael S. Tsirkin
2014-10-06 13:55 ` Paolo Bonzini
2014-10-06 14:12 ` Michael S. Tsirkin
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=20141002121140.GA25373@redhat.com \
--to=mst@redhat.com \
--cc=jsnow@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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).