> On Feb 17, 2017, at 8:03 AM, Laszlo Ersek <[email protected]> wrote: > > On 02/17/17 16:33, Ben Warren wrote: >> >>> On Feb 17, 2017, at 2:43 AM, Igor Mammedov <[email protected] >>> <mailto:[email protected]> >>> <mailto:[email protected] <mailto:[email protected]>>> wrote: >>> >>> On Thu, 16 Feb 2017 15:15:36 -0800 >>> [email protected] <mailto:[email protected]> >>> <mailto:[email protected] <mailto:[email protected]>> wrote: >>> >>>> From: Ben Warren <[email protected] <mailto:[email protected]> >>>> <mailto:[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.) > Here you go: https://github.com/ben-skyportsystems/vmgenid-test <https://github.com/ben-skyportsystems/vmgenid-test>
I don’t know if something like this would ever be accepted into the Linux
kernel, but it has been invaluable to me, and I’d like to see it somewhere
better.
> 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>
smime.p7s
Description: S/MIME cryptographic signature
