[Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID

ben@skyportsystems.com posted 8 patches 7 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1487286467.git.ben@skyportsystems.com
Test checkpatch passed
Test docker passed
Test s390x passed
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
[Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by ben@skyportsystems.com 7 years, 1 month ago
From: Ben Warren <ben@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


Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Igor Mammedov 7 years, 1 month ago
On Thu, 16 Feb 2017 15:15:32 -0800
ben@skyportsystems.com wrote:

> From: Ben Warren <ben@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
Michael,

series looks good for merging.
Patch
 [PATCH v8 7/8] tests: Add unit tests for the VM  Generation ID feature
needs updated seabios blob to make 'make check' happy
so we probably should merge/update seabios first
  [PATCH v5 0/5] QEMU: Add capability to write back fw_cfg address to QEMU

CCing Gerd and Kevin.

Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Laszlo Ersek 7 years, 1 month ago
On 02/20/17 15:57, Igor Mammedov wrote:
> On Thu, 16 Feb 2017 15:15:32 -0800
> ben@skyportsystems.com wrote:
> 
>> From: Ben Warren <ben@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
> Michael,
> 
> series looks good for merging.
> Patch
>  [PATCH v8 7/8] tests: Add unit tests for the VM  Generation ID feature
> needs updated seabios blob to make 'make check' happy
> so we probably should merge/update seabios first
>   [PATCH v5 0/5] QEMU: Add capability to write back fw_cfg address to QEMU
> 
> CCing Gerd and Kevin.
> 

That's sort of a circular dependency, as Kevin generally prefers to
merge SeaBIOS patches once the underlying QEMU code has been committed :)

For a total ordering, all QEMU patches except v8 7/8 could be merged in
QEMU, then the v5 SeaBIOS patches could be merged, then Gerd could
refresh the bundled SeaBIOS binaries, then QEMU patch v8 7/8 could be
merged.

I'm not actually suggesting that though, given that the soft freeze is
in about a week.

Kevin, can you please make an exception this time and merge the SeaBIOS
patches ahead of the QEMU patches?

Thanks!
Laszlo

Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Kevin O'Connor 7 years, 1 month ago
On Mon, Feb 20, 2017 at 04:41:38PM +0100, Laszlo Ersek wrote:
> On 02/20/17 15:57, Igor Mammedov wrote:
> > On Thu, 16 Feb 2017 15:15:32 -0800
> > ben@skyportsystems.com wrote:
> > 
> >> From: Ben Warren <ben@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
> > Michael,
> > 
> > series looks good for merging.
> > Patch
> >  [PATCH v8 7/8] tests: Add unit tests for the VM  Generation ID feature
> > needs updated seabios blob to make 'make check' happy
> > so we probably should merge/update seabios first
> >   [PATCH v5 0/5] QEMU: Add capability to write back fw_cfg address to QEMU
> > 
> > CCing Gerd and Kevin.
> > 
> 
> That's sort of a circular dependency, as Kevin generally prefers to
> merge SeaBIOS patches once the underlying QEMU code has been committed :)
> 
> For a total ordering, all QEMU patches except v8 7/8 could be merged in
> QEMU, then the v5 SeaBIOS patches could be merged, then Gerd could
> refresh the bundled SeaBIOS binaries, then QEMU patch v8 7/8 could be
> merged.
> 
> I'm not actually suggesting that though, given that the soft freeze is
> in about a week.
> 
> Kevin, can you please make an exception this time and merge the SeaBIOS
> patches ahead of the QEMU patches?

Yes.

Gerd - are you planning to backport this series to the stable branch?

-Kevin

Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Laszlo Ersek 7 years, 1 month ago
On 02/20/17 16:45, Kevin O'Connor wrote:
> On Mon, Feb 20, 2017 at 04:41:38PM +0100, Laszlo Ersek wrote:
>> On 02/20/17 15:57, Igor Mammedov wrote:
>>> On Thu, 16 Feb 2017 15:15:32 -0800
>>> ben@skyportsystems.com wrote:
>>>
>>>> From: Ben Warren <ben@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
>>> Michael,
>>>
>>> series looks good for merging.
>>> Patch
>>>  [PATCH v8 7/8] tests: Add unit tests for the VM  Generation ID feature
>>> needs updated seabios blob to make 'make check' happy
>>> so we probably should merge/update seabios first
>>>   [PATCH v5 0/5] QEMU: Add capability to write back fw_cfg address to QEMU
>>>
>>> CCing Gerd and Kevin.
>>>
>>
>> That's sort of a circular dependency, as Kevin generally prefers to
>> merge SeaBIOS patches once the underlying QEMU code has been committed :)
>>
>> For a total ordering, all QEMU patches except v8 7/8 could be merged in
>> QEMU, then the v5 SeaBIOS patches could be merged, then Gerd could
>> refresh the bundled SeaBIOS binaries, then QEMU patch v8 7/8 could be
>> merged.
>>
>> I'm not actually suggesting that though, given that the soft freeze is
>> in about a week.
>>
>> Kevin, can you please make an exception this time and merge the SeaBIOS
>> patches ahead of the QEMU patches?
> 
> Yes.

Thank you!

Ben, Igor or Michael -- can one of you please add a paragraph on VMGENID
to <http://wiki.qemu-project.org/ChangeLog/2.9>, later on?

(Ben, if you don't have an account yet, I think Stefan (CC'd) can give
you one.)

Thanks!
Laszlo

> 
> Gerd - are you planning to backport this series to the stable branch?
> 
> -Kevin
> 


Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Gerd Hoffmann 7 years, 1 month ago
  Hi,

> Gerd - are you planning to backport this series to the stable branch?

Yes.  Unless we'll have a 1.11 release next week, which I doubt ;)

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Ben Warren 7 years, 1 month ago
> On Feb 20, 2017, at 7:41 AM, Laszlo Ersek <lersek@redhat.com> wrote:
> 
> On 02/20/17 15:57, Igor Mammedov wrote:
>> On Thu, 16 Feb 2017 15:15:32 -0800
>> ben@skyportsystems.com wrote:
>> 
>>> From: Ben Warren <ben@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
>> Michael,
>> 
>> series looks good for merging.
>> Patch
>> [PATCH v8 7/8] tests: Add unit tests for the VM  Generation ID feature
>> needs updated seabios blob to make 'make check' happy
>> so we probably should merge/update seabios first
>>  [PATCH v5 0/5] QEMU: Add capability to write back fw_cfg address to QEMU
>> 
>> CCing Gerd and Kevin.
>> 
> 
> That's sort of a circular dependency, as Kevin generally prefers to
> merge SeaBIOS patches once the underlying QEMU code has been committed :)
> 
> For a total ordering, all QEMU patches except v8 7/8 could be merged in
> QEMU, then the v5 SeaBIOS patches could be merged, then Gerd could
> refresh the bundled SeaBIOS binaries, then QEMU patch v8 7/8 could be
> merged.
> 
> I'm not actually suggesting that though, given that the soft freeze is
> in about a week.
> 
> Kevin, can you please make an exception this time and merge the SeaBIOS
> patches ahead of the QEMU patches?
> 
There were some change requests for v5 SeaBIOS, so I’m planning on fixing them up and sending today.
> Thanks!
> Laszlo

—Ben
Re: [Qemu-devel] [PATCH v8 0/8] Add support for VM Generation ID
Posted by Laszlo Ersek 7 years, 1 month ago
On 02/20/17 15:57, Igor Mammedov wrote:
> On Thu, 16 Feb 2017 15:15:32 -0800
> ben@skyportsystems.com wrote:
> 
>> From: Ben Warren <ben@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
> Michael,
> 
> series looks good for merging.

The OVMF patches for WRITE_POINTER are now upstream.

Thanks
Laszlo

> Patch
>  [PATCH v8 7/8] tests: Add unit tests for the VM  Generation ID feature
> needs updated seabios blob to make 'make check' happy
> so we probably should merge/update seabios first
>   [PATCH v5 0/5] QEMU: Add capability to write back fw_cfg address to QEMU
> 
> CCing Gerd and Kevin.
>