[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v17 0/9] Virtual Machine Generation ID
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH v17 0/9] Virtual Machine Generation ID |
Date: |
Tue, 19 Jan 2016 15:48:30 +0100 |
Here is SSDT ASL diff with vmgenid device present that
Laszlo's asked for:
@@ -135,6 +135,11 @@ DefinitionBlock ("tests/acpi-test-data/pc/SSDT.aml",
"SSDT", 1, "BOCHS ", "BXPCS
})
}
+ Method (\_GPE._E00, 0, NotSerialized) // _Exx: Edge-Triggered GPE
+ {
+ Notify (\_SB.PCI0.VGEN, 0x80) // Status Change
+ }
+
Scope (\_SB)
{
Device (PCI0.PRES)
@@ -703,6 +708,28 @@ DefinitionBlock ("tests/acpi-test-data/pc/SSDT.aml",
"SSDT", 1, "BOCHS ", "BXPCS
DVNT (PCIU, One)
DVNT (PCID, 0x03)
}
+
+ Device (VGEN)
+ {
+ Name (_HID, "QEMU0003") // _HID: Hardware ID
+ Name (_CID, "VM_Gen_Counter") // _CID: Compatible ID
+ Name (_DDN, "VM_Gen_Counter") // _DDN: DOS Device Name
+ Name (ADDR, Package (0x02)
+ {
+ 0xFEBF0000,
+ Zero
+ })
+ Name (_CRS, ResourceTemplate () // _CRS: Current Resource
Settings
+ {
+ QWordMemory (ResourceProducer, PosDecode, MinFixed,
MaxFixed, Cacheable, ReadWrite,
+ 0x0000000000000000, // Granularity
+ 0x00000000FEBF0000, // Range Minimum
+ 0x00000000FEBF0FFF, // Range Maximum
+ 0x0000000000000000, // Translation Offset
+ 0x0000000000001000, // Length
+ ,, , AddressRangeMemory, TypeStatic)
+ })
+ }
}
}
}
'make V=1 check' doesn't show it since I've forgot to extend
bios-tables-test with vmgenid variant, but it should be
a separate patch anyway and I'd prefer to do it after
I merge DSDT with SSDT, which will reduce number of
test blobs we keep in tree along with other benefits.
On Tue, 19 Jan 2016 14:06:20 +0100
Igor Mammedov <address@hidden> wrote:
> It's respin of v14* series which uses a PCI BAR to map
> VGID page in guest AS.
>
> Changes since v14:
> - statically reserve used BAR resources in SSDT, so
> that Windows won't claim them during PCI rebalancing
> - support VGID page in high mem in addition to low mem
> - add QMP/HMP interfaces to get/set VM Generation ID
> - do not consume a PCI slot by default and attach
> vmgenid device as a function of multifuction
> ISA bridge.
> - allow only one vmgenid device instance
>
>
> Tested with WS2012R2x64.
> Git tree for testing:
> https://github.com/imammedo/qemu.git vmgenid_v17
>
> * v14, https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg00530.html
>
> Gal Hammer (1):
> docs: vm generation id device's description
>
> Igor Mammedov (8):
> acpi: extend ACPI interface to provide access to ACPI registers and
> SCI irq
> pc: add a Virtual Machine Generation ID device
> tests: add a unit test for the vmgenid device.
> qmp/hmp: add query-vm-generation-id and 'info vm-generation-id'
> commands
> qmp/hmp: add set-vm-generation-id commands
> add MachineClass->default_props for setting default device properties
> pc: put PIIX3 in slot 1 explicitly and cleanup functions assignment
> pc/q53: by default put vmgenid device as an function of ISA bridge
>
> default-configs/i386-softmmu.mak | 1 +
> default-configs/x86_64-softmmu.mak | 1 +
> docs/specs/pci-ids.txt | 1 +
> docs/specs/vmgenid.txt | 36 +++++++
> hmp-commands-info.hx | 13 +++
> hmp-commands.hx | 13 +++
> hmp.c | 21 ++++
> hmp.h | 2 +
> hw/acpi/piix4.c | 17 ++++
> hw/i386/acpi-build.c | 56 ++++++++++-
> hw/i386/pc_piix.c | 29 ++++--
> hw/i386/pc_q35.c | 12 +++
> hw/isa/lpc_ich9.c | 16 +++
> hw/isa/vt82c686.c | 19 ++++
> hw/misc/Makefile.objs | 1 +
> hw/misc/vmgenid.c | 183
> +++++++++++++++++++++++++++++++++++
> hw/pci-host/piix.c | 9 +-
> include/hw/acpi/acpi.h | 1 +
> include/hw/acpi/acpi_dev_interface.h | 9 ++
> include/hw/boards.h | 1 +
> include/hw/i386/ich9.h | 3 +-
> include/hw/i386/pc.h | 9 +-
> include/hw/misc/vmgenid.h | 27 ++++++
> include/hw/pci/pci.h | 1 +
> qapi-schema.json | 18 ++++
> qmp-commands.hx | 41 ++++++++
> stubs/Makefile.objs | 1 +
> stubs/vmgenid.c | 13 +++
> tests/Makefile | 2 +
> tests/vmgenid-test.c | 92 ++++++++++++++++++
> vl.c | 4 +
> 31 files changed, 636 insertions(+), 16 deletions(-)
> create mode 100644 docs/specs/vmgenid.txt
> create mode 100644 hw/misc/vmgenid.c
> create mode 100644 include/hw/misc/vmgenid.h
> create mode 100644 stubs/vmgenid.c
> create mode 100644 tests/vmgenid-test.c
>