From: Igor Mammedov <imammedo@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: pbonzini@redhat.com, kraxel@redhat.com, qemu-devel@nongnu.org,
Anthony Liguori <anthony@codemonkey.ws>,
afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH v9 00/27] qemu: generate acpi tables for the guest
Date: Mon, 7 Oct 2013 15:18:37 +0200 [thread overview]
Message-ID: <20131007151837.67a0019d@nial.usersys.redhat.com> (raw)
In-Reply-To: <1381138458-6848-1-git-send-email-mst@redhat.com>
On Mon, 7 Oct 2013 12:34:46 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> This code can also be found here:
> git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git acpi
>
> While this patch still uses info not available in QOM, I think it's reasonable
> to merge it and then refactor as QOM properties cover more ground.
>
> In particular, merging this patchset blocks other projects so
> I think its preferable to merge now and not wait
> for all required QOM properties to materialize.
>
> I added QOM properties in ich/piix where I knew how to
> do this.
>
> If you already reviewed v8 then the only patch that
> changed significantly is
> i386: define pc guest info
> it now supplies numa info about all CPUs and not just
> the ones present at init.
> I also made a couple of trivial tweaks to
> i386: ACPI table generation code from seabios
>
> If you already reviewed v5 then the only patches that
> changed are:
> i386: define pc guest info
> i386: ACPI table generation code from seabios
>
> Gerd, Laszlo, I kept your Reviewed-by and Tested-by tags
> on these patches to ensure your contribution is recongnized,
> if you don't like this pls let me know.
> Or better yet re-ack this version :)
>
> Patches 1-3 are QOM patches really.
> Included here for completeness.
>
> Igor suggested dropping patches 1-2 and including error.h directly.
> I included his patch and dropped mine.
> I hope that's ok.
>
> If everything's in order, I intend to merge this through my tree.
>
> Please review, and comment.
>
> Changes from v8:
> - remove an unused function
> - fix typo in error message, reported by Igor
> - don't assert when adding a 4 byte value
> (we don't use this now but it's useful for follow-up
> bridge hotplug patches)
> - fix numa node reporting for hotplugged cpus, reported by Igor
>
> Changes from v7 reposted:
> - whitespace fixes - issues reported by Igor
> - typo fix in commit log reported by Eric
>
> Changes from v7:
> - removed all complex table patching and migration code
> we now only migrate a single byte "patched/non patched"
> all tables are simply regenerated on access, rewriting
> old data
> in particular this fixed a bug that Igor noticed:
> cpu online status is now updated correctly
> - removed bitmask of found cpus - use QOM to calculate it
> - dropped changes to typedefs.h - use Igor's patch instead
>
> Changes from v6:
> - fix 64 bit window bug reported by Igor
> - tweak comments in error.h
>
> Changes from v5:
> - update generated files to fix build on systems without iasl
> - fix mcfg failure reported by Gerd
> Changes from v4:
> - address comments by Paolo:
> rename loader interface
> reuse macro for hpet name
> better struct names
> move internal headers to hw/i386/
> - fix typos resulting in bugs reported by Gerd
>
> Changes from v3:
> - reworked code to use QOM properties
> some info isn't yet available in QOM,
> use old-style APIs and lookups by type
> - address comments by Gerd: tables are now updated
> on guest access after pci configuration
>
> Changes from v2 repost:
> - address comment by Anthony - convert to use APIs implemented
> using QOM
> - address comment by Anthony - avoid tricky pointer path,
> use GArray from glib instead
> - Address lots of comments by Hu Tao and Laszlo Ersek
>
> Changes from v2:
> - added missing patches to make it actually build
> Changes from v1 RFC:
> - added code to address cross version compatibility
> - rebased to latest bits
> - updated seabios code to latest bits (added pvpanic device)
>
> This patchset moves all generation of ACPI tables
> from guest BIOS to the hypervisor.
>
> Although ACPI tables come from a system BIOS on real hw,
> it makes sense that the ACPI tables are coupled with the
> virtual machine, since they have to abstract the x86 machine to
> the OS's.
>
> This is widely desired as a way to avoid the churn
> and proliferation of QEMU-specific interfaces
> associated with ACPI tables in bios code.
>
> There's a bit of code duplication where we
> already declare similar acpi structures in qemu.
>
> I think it's best to do it in this order: port
> code directly, and apply cleanups and reduce duplication
> that results, on top.
> This way it's much easier to see that we don't introduce
> regressions.
>
> In particular, I booted a guest on qemu with and without the
> change, and verified that ACPI tables are
> unchanged except for trivial pointer address changes,
> and the SSDT P_BLK change in the last patch.
>
> Such binary compatibility makes it easier to be
> confident that this change won't break things.
>
> Igor Mammedov (1):
> cleanup object.h: include error.h directly
>
> Michael S. Tsirkin (26):
> qom: cleanup struct Error references
> qom: add pointer to int property helpers
> pci: fix up w64 size calculation helper
> fw_cfg: interface to trigger callback on read
> loader: support for unmapped ROM blobs
> pcie_host: expose UNMAPPED macro
> pcie_host: expose address format
> q35: use macro for MCFG property name
> q35: expose mmcfg size as a property
> i386: add ACPI table files from seabios
> acpi: add rules to compile ASL source
> acpi: pre-compiled ASL files
> acpi: ssdt pcihp: updat generated file
> loader: use file path size from fw_cfg.h
> i386: add bios linker/loader
> loader: allow adding ROMs in done callbacks
> i386: define pc guest info
> acpi/piix: add macros for acpi property names
> piix: APIs for pc guest info
> ich9: APIs for pc guest info
> pvpanic: add API to access io port
> hpet: add API to find it
> i386: ACPI table generation code from seabios
> ssdt: fix PBLK length
> ssdt-proc: update generated file
> don't post me: update bios
>
> configure | 9 +-
> hw/i386/acpi-build.h | 9 +
> hw/i386/acpi-defs.h | 331 ++
> hw/i386/bios-linker-loader.h | 27 +
> hw/lm32/lm32_hwsetup.h | 2 +-
> include/hw/acpi/ich9.h | 2 +
> include/hw/acpi/piix4.h | 8 +
> include/hw/i386/ich9.h | 2 +
> include/hw/i386/pc.h | 22 +
> include/hw/loader.h | 8 +-
> include/hw/nvram/fw_cfg.h | 8 +-
> include/hw/pci-host/q35.h | 2 +
> include/hw/pci/pcie_host.h | 27 +
> include/hw/timer/hpet.h | 2 +
> include/qom/object.h | 73 +-
> hw/acpi/ich9.c | 24 +
> hw/acpi/piix4.c | 50 +-
> hw/core/loader.c | 31 +-
> hw/i386/acpi-build.c | 1205 ++++++
> hw/i386/bios-linker-loader.c | 158 +
> hw/i386/pc.c | 23 +
> hw/i386/pc_piix.c | 5 +
> hw/i386/pc_q35.c | 3 +
> hw/isa/lpc_ich9.c | 40 +
> hw/misc/pvpanic.c | 13 +-
> hw/nvram/fw_cfg.c | 33 +-
> hw/pci-host/piix.c | 8 +
> hw/pci-host/q35.c | 26 +-
> hw/pci/pci.c | 20 +-
> hw/pci/pcie_host.c | 24 -
> hw/timer/hpet.c | 5 +
> qom/object.c | 60 +
> vl.c | 3 +
> hw/i386/Makefile.objs | 27 +
> hw/i386/acpi-dsdt-cpu-hotplug.dsl | 93 +
> hw/i386/acpi-dsdt-dbug.dsl | 41 +
> hw/i386/acpi-dsdt-hpet.dsl | 51 +
> hw/i386/acpi-dsdt-isa.dsl | 117 +
> hw/i386/acpi-dsdt-pci-crs.dsl | 105 +
> hw/i386/acpi-dsdt.dsl | 343 ++
> hw/i386/acpi-dsdt.hex.generated | 4409 +++++++++++++++++++++
> hw/i386/q35-acpi-dsdt.dsl | 452 +++
> hw/i386/q35-acpi-dsdt.hex.generated | 7346 +++++++++++++++++++++++++++++++++++
> hw/i386/ssdt-misc.dsl | 119 +
> hw/i386/ssdt-misc.hex.generated | 386 ++
> hw/i386/ssdt-pcihp.dsl | 51 +
> hw/i386/ssdt-pcihp.hex.generated | 108 +
> hw/i386/ssdt-proc.dsl | 63 +
> hw/i386/ssdt-proc.hex.generated | 134 +
> pc-bios/acpi-dsdt.aml | Bin 4407 -> 4407 bytes
> pc-bios/bios.bin | Bin 131072 -> 262144 bytes
> pc-bios/q35-acpi-dsdt.aml | Bin 7344 -> 7344 bytes
> scripts/acpi_extract.py | 362 ++
> scripts/acpi_extract_preprocess.py | 51 +
> scripts/update-acpi.sh | 4 +
> 55 files changed, 16442 insertions(+), 83 deletions(-)
> create mode 100644 hw/i386/acpi-build.h
> create mode 100644 hw/i386/acpi-defs.h
> create mode 100644 hw/i386/bios-linker-loader.h
> create mode 100644 include/hw/acpi/piix4.h
> create mode 100644 hw/i386/acpi-build.c
> create mode 100644 hw/i386/bios-linker-loader.c
> create mode 100644 hw/i386/acpi-dsdt-cpu-hotplug.dsl
> create mode 100644 hw/i386/acpi-dsdt-dbug.dsl
> create mode 100644 hw/i386/acpi-dsdt-hpet.dsl
> create mode 100644 hw/i386/acpi-dsdt-isa.dsl
> create mode 100644 hw/i386/acpi-dsdt-pci-crs.dsl
> create mode 100644 hw/i386/acpi-dsdt.dsl
> create mode 100644 hw/i386/acpi-dsdt.hex.generated
> create mode 100644 hw/i386/q35-acpi-dsdt.dsl
> create mode 100644 hw/i386/q35-acpi-dsdt.hex.generated
> create mode 100644 hw/i386/ssdt-misc.dsl
> create mode 100644 hw/i386/ssdt-misc.hex.generated
> create mode 100644 hw/i386/ssdt-pcihp.dsl
> create mode 100644 hw/i386/ssdt-pcihp.hex.generated
> create mode 100644 hw/i386/ssdt-proc.dsl
> create mode 100644 hw/i386/ssdt-proc.hex.generated
> create mode 100755 scripts/acpi_extract.py
> create mode 100755 scripts/acpi_extract_preprocess.py
> create mode 100644 scripts/update-acpi.sh
>
Tested x64 flavors of rhel6/fc18/ws2008/ws2012/ws2003r2/XP
Tested-by & Reviewed-by: Igor Mammedov <imammedo@redhat.com>
next prev parent reply other threads:[~2013-10-07 13:19 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-07 9:34 [Qemu-devel] [PATCH v9 00/27] qemu: generate acpi tables for the guest Michael S. Tsirkin
2013-10-07 9:34 ` [Qemu-devel] [PATCH v9 01/27] cleanup object.h: include error.h directly Michael S. Tsirkin
2013-10-07 9:34 ` [Qemu-devel] [PATCH v9 02/27] qom: cleanup struct Error references Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 03/27] qom: add pointer to int property helpers Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 04/27] pci: fix up w64 size calculation helper Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 05/27] fw_cfg: interface to trigger callback on read Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 06/27] loader: support for unmapped ROM blobs Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 07/27] pcie_host: expose UNMAPPED macro Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 08/27] pcie_host: expose address format Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 09/27] q35: use macro for MCFG property name Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 10/27] q35: expose mmcfg size as a property Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 11/27] i386: add ACPI table files from seabios Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 12/27] acpi: add rules to compile ASL source Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 13/27] acpi: pre-compiled ASL files Michael S. Tsirkin
2013-10-07 9:35 ` [Qemu-devel] [PATCH v9 14/27] acpi: ssdt pcihp: updat generated file Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 15/27] loader: use file path size from fw_cfg.h Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 16/27] i386: add bios linker/loader Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 17/27] loader: allow adding ROMs in done callbacks Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 18/27] i386: define pc guest info Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 19/27] acpi/piix: add macros for acpi property names Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 20/27] piix: APIs for pc guest info Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 21/27] ich9: " Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 22/27] pvpanic: add API to access io port Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 23/27] hpet: add API to find it Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 24/27] i386: ACPI table generation code from seabios Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 25/27] ssdt: fix PBLK length Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 26/27] ssdt-proc: update generated file Michael S. Tsirkin
2013-10-07 9:36 ` [Qemu-devel] [PATCH v9 27/27] don't post me: update bios Michael S. Tsirkin
2013-10-07 13:18 ` Igor Mammedov [this message]
2013-10-07 17:18 ` [Qemu-devel] [PATCH v9 00/27] qemu: generate acpi tables for the guest Andreas Färber
2013-10-13 16:49 ` 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=20131007151837.67a0019d@nial.usersys.redhat.com \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=anthony@codemonkey.ws \
--cc=kraxel@redhat.com \
--cc=mst@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.