From: Paolo Bonzini <pbonzini@redhat.com>
To: Gal Hammer <ghammer@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device.
Date: Sun, 17 Aug 2014 11:49:38 +0200 [thread overview]
Message-ID: <53F07AB2.4070601@redhat.com> (raw)
In-Reply-To: <53E9CA22.8090300@redhat.com>
Il 12/08/2014 10:02, Gal Hammer ha scritto:
> Hi,
>
> On 10/08/2014 20:22, Paolo Bonzini wrote:
>
>> Il 10/08/2014 13:32, Gal Hammer ha scritto:
>>> Based on Microsoft's sepecifications (paper can be dowloaded from
>>> http://go.microsoft.com/fwlink/?LinkId=260709), add a device
>>> description to the SSDT ACPI table.
>>>
>>> The GUID is set using a new "-vmgenid" command line parameter.
>>>
>>> Signed-off-by: Gal Hammer <ghammer@redhat.com>
>>> ---
>>> hw/i386/acpi-build.c | 23 +++++++++++++++++++++++
>>> hw/i386/ssdt-misc.dsl | 33 +++++++++++++++++++++++++++++++++
>>> qemu-options.hx | 9 +++++++++
>>> vl.c | 11 +++++++++++
>>> 4 files changed, 76 insertions(+)
>>
>> Please make this a new device (like pvpanic), instead of adding a new
>> command-line option.
>
> There is a problem with this request. I don't want to use ISA because it
> is obsolete, PCI is overkill for such a device and a SYSBUS (like HPET)
> device doesn't effect the command line options.
>
> Did I miss something in SYSBUS and that's was the reason it didn't
> appear in the "-device ?" list?
For a sysbus device, you can override the
cannot_instantiate_with_device_add_yet field of DeviceClass in your
class_init function.
>>>
>>> + Scope(\_SB) {
>>> +
>>> + Device(VMGI) {
>>> + Name(_HID, "QEMU0002")
>>> + Name(_CID, "VM_Gen_Counter")
>>> + Name(_DDN, "VM_Gen_Counter")
>>> +
>>> + ACPI_EXTRACT_NAME_DWORD_CONST ssdt_acpi_vm_gid_addr
>>> + Name(VGIA, 0x12345678)
>>> +
>>> + ACPI_EXTRACT_NAME_BUFFER16 ssdt_acpi_vm_gid
>>> + Name(VGID, Buffer(16) {
>>> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
>>> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
>>> +
>>> + Method(_STA, 0, NotSerialized) {
>>> + Store(VGIA, Local0)
>>> + If (LEqual(Local0, Zero)) {
>>> + Return (0x00)
>>> + } Else {
>>> + Return (0x0F)
>>> + }
>>> + }
>>> +
>>> + Method(ADDR, 0, Serialized) {
>>> + Store(Package(2) { }, Local0)
>>> + Store(VGIA, Index(Local0, 0))
>>> + Store(0x0000, Index(Local0, 1))
>>> + return (Local0)
>>> + }
>>> + }
>>> + }
>>> +
>>
>> Please either put this in the DSDT, or omit the Device altogether if you
>> put it in the SSDT and there is no VMGID device.
>
> I'm not sure I understand this comment. I've put the new device in the
> SSDT table (like pvpanic) and add a _STA method which disable the device
> if no GUID's address is set (VGIA). The device doesn't show in the
> Device Manager if it was not added using the command line.
We are still in the process of defining which devices/methods go in the
DSDT and which go in the SSDT. We had bad experiences with ACPI table
migration in 2.1, and one plan to fix them is the following:
* the DSDT should always be the same size no matter what command line
options are there
* the SSDT should have the exact same content (byte-for-byte) for
different versions of QEMU, with the same command line options
(including the machine type).
Right now your code obeys the first rule, not the second rule, so it
should add the device to the DSDT.
BTW, which events would cause the ID to change? How should live cloning
(or revert to a disk+RAM snapshot) be implemented by layers above QEMU
for the VM gen ID to be patched? Can you add something to docs/ about it?
Also, how does this ID compare to the UUID in the DMI info (-uuid)?
Paolo
next prev parent reply other threads:[~2014-08-17 9:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-10 11:32 [Qemu-devel] [PATCH 0/2] Virtual Machine Generation ID Gal Hammer
2014-08-10 11:32 ` [Qemu-devel] [PATCH 1/2] i386: Add an ACPI_EXTRACT_NAME_BUFFER16 directive Gal Hammer
2014-08-10 11:32 ` [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device Gal Hammer
2014-08-10 17:22 ` Paolo Bonzini
2014-08-12 8:02 ` Gal Hammer
2014-08-17 9:49 ` Paolo Bonzini [this message]
2014-08-18 8:47 ` Markus Armbruster
2014-09-01 7:20 ` Gal Hammer
2014-09-01 8:57 ` Paolo Bonzini
2014-09-02 13:02 ` Gal Hammer
-- strict thread matches above, loose matches on Subject: below --
2014-09-02 12:53 [Qemu-devel] [PATCH 0/2 V2] Virtual Machine Generation ID Gal Hammer
2014-09-02 12:53 ` [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device Gal Hammer
2014-09-14 6:25 [Qemu-devel] [PATCH RESEND 0/2 V2] Virtual Machine Generation ID Gal Hammer
2014-09-14 6:25 ` [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device Gal Hammer
2014-09-15 7:27 [Qemu-devel] [PATCH 0/2 V3] Virtual Machine Generation ID Gal Hammer
2014-09-15 7:27 ` [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device Gal Hammer
2014-09-15 8:46 ` Igor Mammedov
2014-09-15 9:15 ` Gal Hammer
2014-09-16 13:04 [Qemu-devel] [PATCH 0/2 V4] Virtual Machine Generation ID Gal Hammer
2014-09-16 13:04 ` [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device Gal Hammer
2014-09-16 13:16 ` Paolo Bonzini
2014-09-16 14:54 ` Igor Mammedov
2014-09-17 7:36 ` Gal Hammer
2014-09-17 9:56 ` Igor Mammedov
2014-09-17 11:39 [Qemu-devel] [PATCH 0/2 V5] Virtual Machine Generation ID Gal Hammer
2014-09-17 11:39 ` [Qemu-devel] [PATCH 2/2] i386: Add a Virtual Machine Generation ID device Gal Hammer
2014-10-02 12:49 ` Michael S. Tsirkin
2014-10-02 13:14 ` Gal Hammer
2014-10-02 13:30 ` 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=53F07AB2.4070601@redhat.com \
--to=pbonzini@redhat.com \
--cc=ghammer@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).