On 02/17/17 16:33, Ben Warren wrote:
>
>> On Feb 17, 2017, at 2:43 AM, Igor Mammedov <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> On Thu, 16 Feb 2017 15:15:36 -0800
>> [email protected] <mailto:[email protected]> wrote:
>>
>>> From: Ben Warren <[email protected] <mailto:[email protected]>>
>>>
>>> This implements the VM Generation ID feature by passing a 128-bit
>>> GUID to the guest via a fw_cfg blob.
>>> Any time the GUID changes, an ACPI notify event is sent to the guest
>>>
>>> The user interface is a simple device with one parameter:
>>> - guid (string, must be "auto" or in UUID format
>>> xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
>> I've given it some testing with WS2012R2 and v4 patches for Seabios,
>>
>> Windows is able to read initial GUID allocation and writeback
>> seems to work somehow:
>>
>> (qemu) info vm-generation-id
>> c109c09b-0e8b-42d5-9b33-8409c9dcd16c
>>
>> vmgenid client in Windows reads it as 2 following 64bit integers:
>> 42d50e8bc109c09b:6cd1dcc90984339b
>>
>> However update path/restore from snapshot doesn't
>> here is as I've tested it:
>>
>> qemu-system-x86_64 -device vmgenid,id=testvgid,guid=auto -monitor stdio
>> (qemu) info vm-generation-id
>> c109c09b-0e8b-42d5-9b33-8409c9dcd16c
>> (qemu) stop
>> (qemu) migrate "exec:gzip -c > STATEFILE.gz"
>> (qemu) quit
>>
>> qemu-system-x86_64 -device vmgenid,id=testvgid,guid=auto -monitor stdio
>> -incoming "exec: gzip -c -d STATEFILE.gz"
>> (qemu) info vm-generation-id
>> 28b587fa-991b-4267-80d7-9cf28b746fe9
>>
>> guest
>> 1. doesn't get GPE notification that it must receive
>> 2. vmgenid client in Windows reads the same value
>> 42d50e8bc109c09b:6cd1dcc90984339b
>>
> Strange, this was working for me, but with a slightly different test method:
>
> * I use virsh save/restore
Awesome, this actually what I should try. All my guests are managed by
libvirt (with the occasional <qemu:arg>, for development), and direct
QEMU monitor commands such as
virsh qemu-monitor-command ovmf.rhel7 --hmp 'info vm-generation-id'
only work for me if they are reasonably non-intrusive.
> * While I do later testing with Windows, during development I use a
> Linux kernel module I wrote that keeps track of GUID and
> notifications. I’m happy to share this with you if interested.
Please do. If you have a public git repo somewhere, that would be
awesome. (Bonus points if the module builds out-of-tree, if the
kernel-devel package is installed.)
NB: while the set-id monitor command was part of the series, I did test
it to the extent that I checked the SCI ("ACPI interrupt") count in the
guest, in /proc/interrupts. I did see it increase, so minimally the SCI
injection was fine.
Thanks!
Laszlo
> I’ll dig into this morning.
>
> —Ben
> <snip>