From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>,
Anthony Liguori <aliguori@amazon.com>,
Peter Crosthwaite <peter.crostwaite@xilinx.com>,
Igor Mammedov <imammedo@redhat.com>,
Laszlo Ersek <lersek@redhat.com>
Subject: [Qemu-devel] [PULL v2 030/106] pc: ACPI BIOS: implement memory hotplug interface
Date: Wed, 18 Jun 2014 19:17:27 +0300 [thread overview]
Message-ID: <1403108034-32054-31-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1403108034-32054-1-git-send-email-mst@redhat.com>
From: Igor Mammedov <imammedo@redhat.com>
- provides static SSDT object for memory hotplug that can handle
upto 256 hotplugable memory slots
- SSDT template for memory devices and runtime generator
of them in SSDT table.
Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Peter Crosthwaite <peter.crostwaite@xilinx.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/acpi/pc-hotplug.h | 21 ++++++
hw/i386/acpi-build.c | 35 +++++++++
hw/i386/Makefile.objs | 3 +-
hw/i386/ssdt-mem.dsl | 77 ++++++++++++++++++++
hw/i386/ssdt-misc.dsl | 164 +++++++++++++++++++++++++++++++++++++++++++
5 files changed, 299 insertions(+), 1 deletion(-)
create mode 100644 hw/i386/ssdt-mem.dsl
diff --git a/include/hw/acpi/pc-hotplug.h b/include/hw/acpi/pc-hotplug.h
index 01d38e2..bf5157d 100644
--- a/include/hw/acpi/pc-hotplug.h
+++ b/include/hw/acpi/pc-hotplug.h
@@ -32,4 +32,25 @@
#define ACPI_MEMORY_HOTPLUG_IO_LEN 24
#define ACPI_MEMORY_HOTPLUG_BASE 0x0a00
+#define MEMORY_HOPTLUG_DEVICE MHPD
+#define MEMORY_SLOTS_NUMBER MDNR
+#define MEMORY_HOTPLUG_IO_REGION HPMR
+#define MEMORY_SLOT_ADDR_LOW MRBL
+#define MEMORY_SLOT_ADDR_HIGH MRBH
+#define MEMORY_SLOT_SIZE_LOW MRLL
+#define MEMORY_SLOT_SIZE_HIGH MRLH
+#define MEMORY_SLOT_PROXIMITY MPX
+#define MEMORY_SLOT_ENABLED MES
+#define MEMORY_SLOT_INSERT_EVENT MINS
+#define MEMORY_SLOT_SLECTOR MSEL
+#define MEMORY_SLOT_OST_EVENT MOEV
+#define MEMORY_SLOT_OST_STATUS MOSC
+#define MEMORY_SLOT_LOCK MLCK
+#define MEMORY_SLOT_STATUS_METHOD MRST
+#define MEMORY_SLOT_CRS_METHOD MCRS
+#define MEMORY_SLOT_OST_METHOD MOST
+#define MEMORY_SLOT_PROXIMITY_METHOD MPXM
+#define MEMORY_SLOT_NOTIFY_METHOD MTFY
+#define MEMORY_SLOT_SCAN_METHOD MSCN
+
#endif
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 9a41510..6ff7fa3 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -37,6 +37,7 @@
#include "bios-linker-loader.h"
#include "hw/loader.h"
#include "hw/isa/isa.h"
+#include "hw/acpi/memory_hotplug.h"
/* Supported chipsets: */
#include "hw/acpi/piix4.h"
@@ -667,6 +668,14 @@ static inline char acpi_get_hex(uint32_t val)
#define ACPI_PCIQXL_SIZEOF (*ssdt_pciqxl_end - *ssdt_pciqxl_start)
#define ACPI_PCIQXL_AML (ssdp_pcihp_aml + *ssdt_pciqxl_start)
+#include "hw/i386/ssdt-mem.hex"
+
+/* 0x5B 0x82 DeviceOp PkgLength NameString DimmID */
+#define ACPI_MEM_OFFSET_HEX (*ssdt_mem_name - *ssdt_mem_start + 2)
+#define ACPI_MEM_OFFSET_ID (*ssdt_mem_id - *ssdt_mem_start + 7)
+#define ACPI_MEM_SIZEOF (*ssdt_mem_end - *ssdt_mem_start)
+#define ACPI_MEM_AML (ssdm_mem_aml + *ssdt_mem_start)
+
#define ACPI_SSDT_SIGNATURE 0x54445353 /* SSDT */
#define ACPI_SSDT_HEADER_LENGTH 36
@@ -1003,6 +1012,8 @@ build_ssdt(GArray *table_data, GArray *linker,
AcpiCpuInfo *cpu, AcpiPmInfo *pm, AcpiMiscInfo *misc,
PcPciInfo *pci, PcGuestInfo *guest_info)
{
+ MachineState *machine = MACHINE(qdev_get_machine());
+ uint32_t nr_mem = machine->ram_slots;
unsigned acpi_cpus = guest_info->apic_id_limit;
int ssdt_start = table_data->len;
uint8_t *ssdt_ptr;
@@ -1031,6 +1042,9 @@ build_ssdt(GArray *table_data, GArray *linker,
ACPI_BUILD_SET_LE(ssdt_ptr, sizeof(ssdp_misc_aml),
ssdt_isa_pest[0], 16, misc->pvpanic_port);
+ ACPI_BUILD_SET_LE(ssdt_ptr, sizeof(ssdp_misc_aml),
+ ssdt_mctrl_nr_slots[0], 32, nr_mem);
+
{
GArray *sb_scope = build_alloc_array();
uint8_t op = 0x10; /* ScopeOp */
@@ -1084,6 +1098,27 @@ build_ssdt(GArray *table_data, GArray *linker,
build_free_array(package);
}
+ if (nr_mem) {
+ assert(nr_mem <= ACPI_MAX_RAM_SLOTS);
+ /* build memory devices */
+ for (i = 0; i < nr_mem; i++) {
+ char id[3];
+ uint8_t *mem = acpi_data_push(sb_scope, ACPI_MEM_SIZEOF);
+
+ snprintf(id, sizeof(id), "%02X", i);
+ memcpy(mem, ACPI_MEM_AML, ACPI_MEM_SIZEOF);
+ memcpy(mem + ACPI_MEM_OFFSET_HEX, id, 2);
+ memcpy(mem + ACPI_MEM_OFFSET_ID, id, 2);
+ }
+
+ /* build Method(MEMORY_SLOT_NOTIFY_METHOD, 2) {
+ * If (LEqual(Arg0, 0x00)) {Notify(MP00, Arg1)} ...
+ */
+ build_append_notify_method(sb_scope,
+ stringify(MEMORY_SLOT_NOTIFY_METHOD),
+ "MP%0.02X", nr_mem);
+ }
+
{
AcpiBuildPciBusHotplugState hotplug_state;
Object *pci_host;
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index f66c349..a65473c 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -9,7 +9,8 @@ obj-y += acpi-build.o
obj-y += bios-linker-loader.o
hw/i386/acpi-build.o: hw/i386/acpi-build.c hw/i386/acpi-dsdt.hex \
hw/i386/ssdt-proc.hex hw/i386/ssdt-pcihp.hex hw/i386/ssdt-misc.hex \
- hw/i386/acpi-dsdt.hex hw/i386/q35-acpi-dsdt.hex
+ hw/i386/acpi-dsdt.hex hw/i386/q35-acpi-dsdt.hex \
+ hw/i386/q35-acpi-dsdt.hex hw/i386/ssdt-mem.hex
iasl-option=$(shell if test -z "`$(1) $(2) 2>&1 > /dev/null`" \
; then echo "$(2)"; else echo "$(3)"; fi ;)
diff --git a/hw/i386/ssdt-mem.dsl b/hw/i386/ssdt-mem.dsl
new file mode 100644
index 0000000..8e17bd1
--- /dev/null
+++ b/hw/i386/ssdt-mem.dsl
@@ -0,0 +1,77 @@
+/*
+ * Memory hotplug ACPI DSDT static objects definitions
+ *
+ * Copyright ProfitBricks GmbH 2012
+ * Copyright (C) 2013-2014 Red Hat Inc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>
+ */
+
+/* This file is the basis for the ssdt_mem[] variable in src/acpi.c.
+ * It defines the contents of the memory device object. At
+ * runtime, a dynamically generated SSDT will contain one copy of this
+ * AML snippet for every possible memory device in the system. The
+ * objects will be placed in the \_SB_ namespace.
+ *
+ * In addition to the aml code generated from this file, the
+ * src/acpi.c file creates a MTFY method with an entry for each memdevice:
+ * Method(MTFY, 2) {
+ * If (LEqual(Arg0, 0x00)) { Notify(MP00, Arg1) }
+ * If (LEqual(Arg0, 0x01)) { Notify(MP01, Arg1) }
+ * ...
+ * }
+ */
+#include "hw/acpi/pc-hotplug.h"
+
+ACPI_EXTRACT_ALL_CODE ssdm_mem_aml
+
+DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC", "CSSDT", 0x1)
+{
+
+ External(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_CRS_METHOD, MethodObj)
+ External(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_STATUS_METHOD, MethodObj)
+ External(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_OST_METHOD, MethodObj)
+ External(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_PROXIMITY_METHOD, MethodObj)
+
+ Scope(\_SB) {
+/* v------------------ DO NOT EDIT ------------------v */
+ ACPI_EXTRACT_DEVICE_START ssdt_mem_start
+ ACPI_EXTRACT_DEVICE_END ssdt_mem_end
+ ACPI_EXTRACT_DEVICE_STRING ssdt_mem_name
+ Device(MPAA) {
+ ACPI_EXTRACT_NAME_STRING ssdt_mem_id
+ Name(_UID, "0xAA")
+/* ^------------------ DO NOT EDIT ------------------^
+ * Don't change the above without also updating the C code.
+ */
+ Name(_HID, EISAID("PNP0C80"))
+
+ Method(_CRS, 0) {
+ Return(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_CRS_METHOD(_UID))
+ }
+
+ Method(_STA, 0) {
+ Return(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_STATUS_METHOD(_UID))
+ }
+
+ Method(_PXM, 0) {
+ Return(\_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_PROXIMITY_METHOD(_UID))
+ }
+
+ Method(_OST, 3) {
+ \_SB.PCI0.MEMORY_HOPTLUG_DEVICE.MEMORY_SLOT_OST_METHOD(_UID, Arg0, Arg1, Arg2)
+ }
+ }
+ }
+}
diff --git a/hw/i386/ssdt-misc.dsl b/hw/i386/ssdt-misc.dsl
index a4484b8..d329b8b 100644
--- a/hw/i386/ssdt-misc.dsl
+++ b/hw/i386/ssdt-misc.dsl
@@ -12,6 +12,7 @@
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+#include "hw/acpi/pc-hotplug.h"
ACPI_EXTRACT_ALL_CODE ssdp_misc_aml
@@ -116,4 +117,167 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC", "BXSSDTSUSP", 0x1)
}
}
}
+
+ External(MEMORY_SLOT_NOTIFY_METHOD, MethodObj)
+ Scope(\_SB.PCI0) {
+ Device(MEMORY_HOPTLUG_DEVICE) {
+ Name(_HID, "PNP0A06")
+ Name(_UID, "Memory hotplug resources")
+
+ ACPI_EXTRACT_NAME_DWORD_CONST ssdt_mctrl_nr_slots
+ Name(MEMORY_SLOTS_NUMBER, 0x12345678)
+
+ /* Memory hotplug IO registers */
+ OperationRegion(MEMORY_HOTPLUG_IO_REGION, SystemIO,
+ ACPI_MEMORY_HOTPLUG_BASE,
+ ACPI_MEMORY_HOTPLUG_IO_LEN)
+
+ Name(_CRS, ResourceTemplate() {
+ IO(Decode16, ACPI_MEMORY_HOTPLUG_BASE, ACPI_MEMORY_HOTPLUG_BASE,
+ 0, ACPI_MEMORY_HOTPLUG_IO_LEN, IO)
+ })
+
+ Method(_STA, 0) {
+ If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
+ Return(0x0)
+ }
+ /* present, functioning, decoding, not shown in UI */
+ Return(0xB)
+ }
+
+ Field(MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock, Preserve) {
+ MEMORY_SLOT_ADDR_LOW, 32, // read only
+ MEMORY_SLOT_ADDR_HIGH, 32, // read only
+ MEMORY_SLOT_SIZE_LOW, 32, // read only
+ MEMORY_SLOT_SIZE_HIGH, 32, // read only
+ MEMORY_SLOT_PROXIMITY, 32, // read only
+ }
+ Field(MEMORY_HOTPLUG_IO_REGION, ByteAcc, NoLock, Preserve) {
+ Offset(20),
+ MEMORY_SLOT_ENABLED, 1, // 1 if enabled, read only
+ MEMORY_SLOT_INSERT_EVENT, 1, // (read) 1 if has a insert event. (write) 1 to clear event
+ }
+
+ Mutex (MEMORY_SLOT_LOCK, 0)
+ Field (MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock, Preserve) {
+ MEMORY_SLOT_SLECTOR, 32, // DIMM selector, write only
+ MEMORY_SLOT_OST_EVENT, 32, // _OST event code, write only
+ MEMORY_SLOT_OST_STATUS, 32, // _OST status code, write only
+ }
+
+ Method(MEMORY_SLOT_SCAN_METHOD, 0) {
+ If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
+ Return(Zero)
+ }
+
+ Store(Zero, Local0) // Mem devs iterrator
+ Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
+ while (LLess(Local0, MEMORY_SLOTS_NUMBER)) {
+ Store(Local0, MEMORY_SLOT_SLECTOR) // select Local0 DIMM
+ If (LEqual(MEMORY_SLOT_INSERT_EVENT, One)) { // Memory device needs check
+ MEMORY_SLOT_NOTIFY_METHOD(Local0, 1)
+ Store(1, MEMORY_SLOT_INSERT_EVENT)
+ }
+ // TODO: handle memory eject request
+ Add(Local0, One, Local0) // goto next DIMM
+ }
+ Release(MEMORY_SLOT_LOCK)
+ Return(One)
+ }
+
+ Method(MEMORY_SLOT_STATUS_METHOD, 1) {
+ Store(Zero, Local0)
+
+ Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
+ Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
+
+ If (LEqual(MEMORY_SLOT_ENABLED, One)) {
+ Store(0xF, Local0)
+ }
+
+ Release(MEMORY_SLOT_LOCK)
+ Return(Local0)
+ }
+
+ Method(MEMORY_SLOT_CRS_METHOD, 1, Serialized) {
+ Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
+ Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
+
+ Name(MR64, ResourceTemplate() {
+ QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
+ Cacheable, ReadWrite,
+ 0x0000000000000000, // Address Space Granularity
+ 0x0000000000000000, // Address Range Minimum
+ 0xFFFFFFFFFFFFFFFE, // Address Range Maximum
+ 0x0000000000000000, // Address Translation Offset
+ 0xFFFFFFFFFFFFFFFF, // Address Length
+ ,, MW64, AddressRangeMemory, TypeStatic)
+ })
+
+ CreateDWordField(MR64, 14, MINL)
+ CreateDWordField(MR64, 18, MINH)
+ CreateDWordField(MR64, 38, LENL)
+ CreateDWordField(MR64, 42, LENH)
+ CreateDWordField(MR64, 22, MAXL)
+ CreateDWordField(MR64, 26, MAXH)
+
+ Store(MEMORY_SLOT_ADDR_HIGH, MINH)
+ Store(MEMORY_SLOT_ADDR_LOW, MINL)
+ Store(MEMORY_SLOT_SIZE_HIGH, LENH)
+ Store(MEMORY_SLOT_SIZE_LOW, LENL)
+
+ // 64-bit math: MAX = MIN + LEN - 1
+ Add(MINL, LENL, MAXL)
+ Add(MINH, LENH, MAXH)
+ If (LLess(MAXL, MINL)) {
+ Add(MAXH, One, MAXH)
+ }
+ If (LLess(MAXL, One)) {
+ Subtract(MAXH, One, MAXH)
+ }
+ Subtract(MAXL, One, MAXL)
+
+ If (LEqual(MAXH, Zero)){
+ Name(MR32, ResourceTemplate() {
+ DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
+ Cacheable, ReadWrite,
+ 0x00000000, // Address Space Granularity
+ 0x00000000, // Address Range Minimum
+ 0xFFFFFFFE, // Address Range Maximum
+ 0x00000000, // Address Translation Offset
+ 0xFFFFFFFF, // Address Length
+ ,, MW32, AddressRangeMemory, TypeStatic)
+ })
+ CreateDWordField(MR32, MW32._MIN, MIN)
+ CreateDWordField(MR32, MW32._MAX, MAX)
+ CreateDWordField(MR32, MW32._LEN, LEN)
+ Store(MINL, MIN)
+ Store(MAXL, MAX)
+ Store(LENL, LEN)
+
+ Release(MEMORY_SLOT_LOCK)
+ Return(MR32)
+ }
+
+ Release(MEMORY_SLOT_LOCK)
+ Return(MR64)
+ }
+
+ Method(MEMORY_SLOT_PROXIMITY_METHOD, 1) {
+ Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
+ Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
+ Store(MEMORY_SLOT_PROXIMITY, Local0)
+ Release(MEMORY_SLOT_LOCK)
+ Return(Local0)
+ }
+
+ Method(MEMORY_SLOT_OST_METHOD, 4) {
+ Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
+ Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
+ Store(Arg1, MEMORY_SLOT_OST_EVENT)
+ Store(Arg2, MEMORY_SLOT_OST_STATUS)
+ Release(MEMORY_SLOT_LOCK)
+ }
+ } // Device()
+ } // Scope()
}
--
MST
next prev parent reply other threads:[~2014-06-18 16:17 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-18 16:15 [Qemu-devel] [PULL v2 000/106] pc, pci, virtio, hotplug fixes, enhancements Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 001/106] pc: create custom generic PC machine type Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 002/106] pc: ACPI BIOS: use enum for defining memory affinity flags Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 003/106] object_add: allow completion handler to get canonical path Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 004/106] vl.c: daemonize before guest memory allocation Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 005/106] add memdev backend infrastructure Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 007/106] qdev: hotplug for bus-less devices Michael S. Tsirkin
2014-06-18 16:15 ` [Qemu-devel] [PULL v2 008/106] qdev: expose DeviceState.hotplugged field as a property Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 009/106] pc: implement pc-dimm device abstraction Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 010/106] memory: add memory_region_is_mapped() API Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 011/106] pc-dimm: do not allow setting an in-use memdev Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 012/106] pc: initialize memory hotplug address space Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 013/106] pc: exit QEMU if number of slots more than supported 256 Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 014/106] pc: add 'etc/reserved-memory-end' fw_cfg interface for SeaBIOS Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 015/106] pc: exit QEMU if compat machine doesn't support memory hotlpug Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 016/106] pc: add memory hotplug handler to PC_MACHINE Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 017/106] pc-dimm: add busy address check and address auto-allocation Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 018/106] pc-dimm: add busy slot check and slot auto-allocation Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 019/106] acpi: rename cpu_hotplug_defs.h to pc-hotplug.h Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 020/106] acpi: memory hotplug ACPI hardware implementation Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 021/106] trace: add acpi memory hotplug IO region events Michael S. Tsirkin
2014-06-18 16:16 ` [Qemu-devel] [PULL v2 022/106] trace: pc: add PC_DIMM slot & address allocation Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 023/106] acpi:piix4: allow plug/unlug callbacks handle not only PCI devices Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 024/106] acpi:piix4: add memory hotplug handling Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 025/106] pc: ich9 lpc: make it work with global/compat properties Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 026/106] acpi:ich9: add memory hotplug handling Michael S. Tsirkin
2014-06-24 16:44 ` [Qemu-devel] per-machine vs per-qemu-version compat_props macros (was Re: acpi:ich9: add memory hotplug handling) Eduardo Habkost
2014-06-24 16:47 ` Peter Maydell
2014-06-24 17:55 ` Eduardo Habkost
2014-06-24 19:13 ` Marcel Apfelbaum
2014-06-24 22:30 ` Peter Maydell
2014-06-25 0:18 ` Eduardo Habkost
2014-06-25 1:31 ` Eduardo Habkost
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 027/106] pc: migrate piix4 & ich9 MemHotplugState Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 028/106] pc: add acpi-device link to PCMachineState Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 029/106] pc: propagate memory hotplug event to ACPI device Michael S. Tsirkin
2014-06-18 16:17 ` Michael S. Tsirkin [this message]
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 031/106] pc: add "hotplug-memory-region-size" property to PC_MACHINE Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 032/106] pc: ACPI BIOS: reserve SRAT entry for hotplug mem hole Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 033/106] pc: ACPI BIOS: make GPE.3 handle memory hotplug event on PIIX and Q35 machines Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 034/106] acpi: update generated files Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 035/106] acpi-test: update expected tables Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 036/106] virtio: Drop superfluous conditionals around g_free() Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 037/106] virtio: Drop superfluous conditionals around g_strdup() Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 038/106] ich: get rid of spaces in type name Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 039/106] pc: q35: acpi: report error to user on unsupported unplug request Michael S. Tsirkin
2014-06-18 16:17 ` [Qemu-devel] [PULL v2 040/106] migration: export SELF_ANNOUNCE_ROUNDS Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 041/106] migration: introduce self_announce_delay() Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 042/106] virtio-net: announce self by guest Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 043/106] Add kvm_eventfds_enabled function Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 044/106] Add chardev API qemu_chr_fe_read_all Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 045/106] Add chardev API qemu_chr_fe_set_msgfds Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 046/106] Add chardev API qemu_chr_fe_get_msgfds Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 047/106] Add G_IO_HUP handler for socket chardev Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 048/106] vhost: add vhost_get_features and vhost_ack_features Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 049/106] vhost_net should call the poll callback only when it is set Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 050/106] Refactor virtio-net to use generic get_vhost_net Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 051/106] vhost_net_init will use VhostNetOptions to get all its arguments Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 052/106] Add vhost_ops to vhost_dev struct and replace all relevant ioctls Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 053/106] Add vhost-backend and VhostBackendType Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 054/106] Add vhost-user as a vhost backend Michael S. Tsirkin
2014-06-18 16:18 ` [Qemu-devel] [PULL v2 055/106] vhost-net: vhost-user feature bits support Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 056/106] Add new vhost-user netdev backend Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 057/106] Add the vhost-user netdev backend to the command line Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 058/106] Add vhost-user protocol documentation Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 059/106] libqemustub: add stubs to be able to use qemu-char.c Michael S. Tsirkin
2014-06-23 6:15 ` Riku Voipio
2014-06-23 7:20 ` Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 060/106] Add qtest for vhost-user Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 061/106] NUMA: move numa related code to new file numa.c Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 062/106] NUMA: check if the total numa memory size is equal to ram_size Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 063/106] NUMA: Add numa_info structure to contain numa nodes info Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 064/106] NUMA: convert -numa option to use OptsVisitor Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 065/106] NUMA: expand MAX_NODES from 64 to 128 Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 066/106] man: improve -numa doc Michael S. Tsirkin
2014-06-18 16:19 ` [Qemu-devel] [PULL v2 067/106] qmp: improve error reporting for -object and object-add Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 068/106] numa: introduce memory_region_allocate_system_memory Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 069/106] memory: reorganize file-based allocation Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 070/106] memory: move preallocation code out of exec.c Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 071/106] memory: move RAM_PREALLOC_MASK to exec.c, rename Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 072/106] configure: add Linux libnuma detection Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 073/106] Introduce signed range Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 074/106] qom: introduce object_property_get_enum and object_property_get_uint16List Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 075/106] numa: add -numa node, memdev= option Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 076/106] memory: move mem_path handling to memory_region_allocate_system_memory Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 077/106] memory: add error propagation to file-based RAM allocation Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 078/106] vl: redo -object parsing Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 079/106] pc: pass MachineState to pc_memory_init Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 080/106] backend:hostmem: replace hostmemory with host_memory Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 081/106] hostmem: separate allocation from UserCreatable complete method Michael S. Tsirkin
2014-06-18 16:20 ` [Qemu-devel] [PULL v2 082/106] hostmem: add file-based HostMemoryBackend Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 083/106] hostmem: add merge and dump properties Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 084/106] hostmem: allow preallocation of any memory region Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 085/106] hostmem: add property to map memory with MAP_SHARED Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 086/106] hostmem: add properties for NUMA memory policy Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 087/106] qmp: add query-memdev Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 088/106] hmp: add info memdev Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 089/106] tests: fix memory leak in test of string input visitor Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 090/106] qapi: make string input visitor parse int list Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 091/106] qapi: make string output " Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 092/106] qapi: fix build on glib < 2.28 Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 093/106] qdev: reorganize error reporting in bus_set_realized Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 094/106] qdev: recursively unrealize devices when unrealizing bus Michael S. Tsirkin
2014-06-18 16:21 ` [Qemu-devel] [PULL v2 095/106] qmp: clean out whitespace Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 096/106] pc: acpi: do not hardcode preprocessor Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 097/106] numa: handle mmaped memory allocation failure correctly Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 098/106] qmp: add query-memory-devices command Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 099/106] acpi: introduce TYPE_ACPI_DEVICE_IF interface Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 100/106] acpi: implement ospm_status() method for PIIX4/ICH9_LPC devices Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 101/106] qmp: add query-acpi-ospm-status command Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 102/106] qmp: add ACPI_DEVICE_OST event handling Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 103/106] acpi: rephrase comment Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 104/106] qapi: fix input visitor bugs Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 105/106] tests: simplify code Michael S. Tsirkin
2014-06-18 16:22 ` [Qemu-devel] [PULL v2 106/106] qapi/string-output-visitor: fix bugs Michael S. Tsirkin
2014-06-18 17:25 ` [Qemu-devel] [PULL v2 006/106] vl.c: extend -m option to support options for memory hotplug Michael S. Tsirkin
2014-06-18 17:48 ` [Qemu-devel] [PULL v2 000/106] pc, pci, virtio, hotplug fixes, enhancements 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=1403108034-32054-31-git-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=aliguori@amazon.com \
--cc=imammedo@redhat.com \
--cc=lersek@redhat.com \
--cc=peter.crostwaite@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=vasilis.liaskovitis@profitbricks.com \
/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).