qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/6] pc: bring ACPI table size below to 2.0 levels, try fixing -initrd for good
@ 2014-09-18 16:17 Paolo Bonzini
  2014-09-18 16:17 ` [Qemu-devel] [PATCH 1/6] pc: initialize fw_cfg earlier Paolo Bonzini
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: Paolo Bonzini @ 2014-09-18 16:17 UTC (permalink / raw)
  To: qemu-devel; +Cc: jsnow, mst

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.

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


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(-)

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2014-10-06 14:09 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

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).