From: Ben Warren <b...@skyportsystems.com> This patch set adds support for passing a GUID to Windows guests. It is a re-implementation of previous patch sets written by Igor Mammedov et al, but this time passing the GUID data as a fw_cfg blob.
This patch set has dependencies on new guest functionality, in particular the support for a new linker-loader command and the ability to write back data to QEMU over a DMA link. Work is in flight in both SeaBIOS and OVMF to support this. v7->v8: - Rebased to top of tree. - Fixed two small bugs in "write pointer" function - minor re-ordering of data in patches - Fixed unit test by adding delays/retries to reading RSDP table v6->v7: - Rebased to top of tree. - Added 'src_offset' field to "write pointer" command - Reworked unit tests based on feedback - various minor changes based on feedback - Added entries to MAINTAINERS file v5->v6: - Rebased to top of tree. - Changed device from sysbus to a simple device. This removed the need for adding dynamic sysbus support to pc_piix boards. - Removed patch that introduced QWORD patching of AML. - Removed ability to set GUID via QMP/HMP. - Improved comments/documentation in code. v4->v5: - Added significantly more detail to the documentation. - Replaced the previously-implemented linker-loader command with a new one: "write pointer". This allows writing the guest address of a fw_cfg blob back to an arbitrary offset in a writeable fw_cfg file visible to QEMU. This will require support in SeaBIOS and OVMF (ongoing). - Fixed endianness issues throughout. - Several styling cleanups. v3->v4: - Rebased to top of tree. - Re-added document patch that was accidentally dropped from the last revision. - Added VMState functionality so that VGIA is restored properly. - Added Unit tests v2->v3: - Added second writeable fw_cfg for storing the VM Generaiton ID address. This uses a new linker-loader command for instructing the guest to write back the allocated address. A patch for SeaBIOS has been submitted (https://www.seabios.org/pipermail/seabios/2017-January/011079.html) and the resulting binary will need to be pulled into QEMU once accepted. - Setting VM Generation ID by command line or qmp/hmp now accepts an "auto" value, whereby QEMU generates a random GUID. - Incorporated review comments from v2 mainly around code styling and AML syntax - Changed to use the E05 ACPI event instead of E00 v1->v2: - Removed "changed" boolean parameter as it is unneeded - Added ACPI Notify logic - Style changes to pass checkpatch.pl - Added support for dynamic sysbus to pc_piix boards Ben Warren (7): linker-loader: Add new 'write pointer' command docs: VM Generation ID device description ACPI: Add vmgenid blob storage to the build tables ACPI: Add Virtual Machine Generation ID support tests: Move reusable ACPI code into a utility file tests: Add unit tests for the VM Generation ID feature MAINTAINERS: Add VM Generation ID entries Igor Mammedov (1): qmp/hmp: add query-vm-generation-id and 'info vm-generation-id' commands MAINTAINERS | 11 ++ default-configs/i386-softmmu.mak | 1 + default-configs/x86_64-softmmu.mak | 1 + docs/specs/vmgenid.txt | 245 +++++++++++++++++++++++++++++++++ hmp-commands-info.hx | 14 ++ hmp.c | 9 ++ hmp.h | 1 + hw/acpi/Makefile.objs | 1 + hw/acpi/aml-build.c | 2 + hw/acpi/bios-linker-loader.c | 66 ++++++++- hw/acpi/vmgenid.c | 258 +++++++++++++++++++++++++++++++++++ hw/i386/acpi-build.c | 16 +++ include/hw/acpi/acpi_dev_interface.h | 1 + include/hw/acpi/aml-build.h | 1 + include/hw/acpi/bios-linker-loader.h | 7 + include/hw/acpi/vmgenid.h | 35 +++++ qapi-schema.json | 20 +++ stubs/Makefile.objs | 1 + stubs/vmgenid.c | 9 ++ tests/Makefile.include | 4 +- tests/acpi-utils.c | 65 +++++++++ tests/acpi-utils.h | 94 +++++++++++++ tests/bios-tables-test.c | 132 ++---------------- tests/vmgenid-test.c | 200 +++++++++++++++++++++++++++ 24 files changed, 1073 insertions(+), 121 deletions(-) create mode 100644 docs/specs/vmgenid.txt create mode 100644 hw/acpi/vmgenid.c create mode 100644 include/hw/acpi/vmgenid.h create mode 100644 stubs/vmgenid.c create mode 100644 tests/acpi-utils.c create mode 100644 tests/acpi-utils.h create mode 100644 tests/vmgenid-test.c -- 2.7.4