From: Samuel Ortiz <sameo@linux.intel.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Stefano Stabellini <sstabellini@kernel.org>,
Eduardo Habkost <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Shannon Zhao <shannon.zhaosl@gmail.com>,
Igor Mammedov <imammedo@redhat.com>,
qemu-arm@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Anthony Perard <anthony.perard@citrix.com>,
xen-devel@lists.xenproject.org,
Richard Henderson <rth@twiddle.net>
Subject: [Qemu-devel] [PATCH v5 20/24] hw: acpi: Define ACPI tables builder interface
Date: Mon, 5 Nov 2018 02:40:43 +0100 [thread overview]
Message-ID: <20181105014047.26447-21-sameo@linux.intel.com> (raw)
In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com>
In order to decouple ACPI APIs from specific machine types, we are
creating an ACPI builder interface that each ACPI platform can choose to
implement.
This way, a new machine type can re-use the high level ACPI APIs and
define some custom table build methods, without having to duplicate most
of the existing implementation only to add small variations to it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
---
include/hw/acpi/builder.h | 100 ++++++++++++++++++++++++++++++++++++++
hw/acpi/builder.c | 97 ++++++++++++++++++++++++++++++++++++
hw/acpi/Makefile.objs | 1 +
3 files changed, 198 insertions(+)
create mode 100644 include/hw/acpi/builder.h
create mode 100644 hw/acpi/builder.c
diff --git a/include/hw/acpi/builder.h b/include/hw/acpi/builder.h
new file mode 100644
index 0000000000..a63b88ffe9
--- /dev/null
+++ b/include/hw/acpi/builder.h
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ACPI_BUILDER_H
+#define ACPI_BUILDER_H
+
+#include "qemu/osdep.h"
+#include "hw/acpi/bios-linker-loader.h"
+#include "qom/object.h"
+
+#define TYPE_ACPI_BUILDER "acpi-builder"
+
+#define ACPI_BUILDER_METHODS(klass) \
+ OBJECT_CLASS_CHECK(AcpiBuilderMethods, (klass), TYPE_ACPI_BUILDER)
+#define ACPI_BUILDER_GET_METHODS(obj) \
+ OBJECT_GET_CLASS(AcpiBuilderMethods, (obj), TYPE_ACPI_BUILDER)
+#define ACPI_BUILDER(obj) \
+ INTERFACE_CHECK(AcpiBuilder, (obj), TYPE_ACPI_BUILDER)
+
+typedef struct AcpiConfiguration AcpiConfiguration;
+typedef struct AcpiBuildState AcpiBuildState;
+typedef struct AcpiMcfgInfo AcpiMcfgInfo;
+
+typedef struct AcpiBuilder {
+ /* <private> */
+ Object Parent;
+} AcpiBuilder;
+
+/**
+ * AcpiBuildMethods:
+ *
+ * Interface to be implemented by a machine type that needs to provide
+ * custom ACPI tables build method.
+ *
+ * @parent: Opaque parent interface.
+ * @rsdp: ACPI RSDP (Root System Description Pointer) table build callback.
+ * @madt: ACPI MADT (Multiple APIC Description Table) table build callback.
+ * @mcfg: ACPI MCFG table build callback.
+ * @srat: ACPI SRAT (System/Static Resource Affinity Table)
+ * table build callback.
+ * @slit: ACPI SLIT (System Locality System Information Table)
+ * table build callback.
+ * @configuration: ACPI configuration getter.
+ * This is used to query the machine instance for its
+ * AcpiConfiguration pointer.
+ */
+typedef struct AcpiBuilderMethods {
+ /* <private> */
+ InterfaceClass parent;
+
+ /* <public> */
+ void (*rsdp)(GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset);
+ void (*madt)(GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf);
+ void (*mcfg)(GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info);
+ void (*srat)(GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf);
+ void (*slit)(GArray *table_data, BIOSLinker *linker);
+
+ AcpiConfiguration *(*configuration)(AcpiBuilder *builder);
+} AcpiBuilderMethods;
+
+void acpi_builder_rsdp(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset);
+
+void acpi_builder_madt(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf);
+
+void acpi_builder_mcfg(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info);
+
+void acpi_builder_srat(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf);
+
+void acpi_builder_slit(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker);
+
+AcpiConfiguration *acpi_builder_configuration(AcpiBuilder *builder);
+
+#endif
diff --git a/hw/acpi/builder.c b/hw/acpi/builder.c
new file mode 100644
index 0000000000..c29a614793
--- /dev/null
+++ b/hw/acpi/builder.c
@@ -0,0 +1,97 @@
+/*
+ *
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * 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 "qemu/osdep.h"
+#include "qemu/module.h"
+#include "qom/object.h"
+#include "hw/acpi/builder.h"
+
+void acpi_builder_rsdp(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->rsdp) {
+ abm->rsdp(table_data, linker, rsdt_tbl_offset);
+ }
+}
+
+void acpi_builder_madt(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->madt) {
+ abm->madt(table_data, linker, ms, conf);
+ }
+}
+
+void acpi_builder_mcfg(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->mcfg) {
+ abm->mcfg(table_data, linker, info);
+ }
+}
+
+void acpi_builder_srat(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->srat) {
+ abm->srat(table_data, linker, machine, conf);
+ }
+}
+
+void acpi_builder_slit(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->slit) {
+ abm->slit(table_data, linker);
+ }
+}
+
+AcpiConfiguration *acpi_builder_configuration(AcpiBuilder *builder)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+ if (abm && abm->configuration) {
+ return abm->configuration(builder);
+ }
+ return NULL;
+}
+
+static const TypeInfo acpi_builder_info = {
+ .name = TYPE_ACPI_BUILDER,
+ .parent = TYPE_INTERFACE,
+ .class_size = sizeof(AcpiBuilderMethods),
+};
+
+static void acpi_builder_register_type(void)
+{
+ type_register_static(&acpi_builder_info);
+}
+
+type_init(acpi_builder_register_type)
diff --git a/hw/acpi/Makefile.objs b/hw/acpi/Makefile.objs
index 11c35bcb44..2f383adc6f 100644
--- a/hw/acpi/Makefile.objs
+++ b/hw/acpi/Makefile.objs
@@ -11,6 +11,7 @@ common-obj-$(call lnot,$(CONFIG_ACPI_X86)) += acpi-stub.o
common-obj-y += acpi_interface.o
common-obj-y += bios-linker-loader.o
common-obj-y += aml-build.o
+common-obj-y += builder.o
common-obj-$(CONFIG_IPMI) += ipmi.o
common-obj-$(call lnot,$(CONFIG_IPMI)) += ipmi-stub.o
--
2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: Samuel Ortiz <sameo@linux.intel.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Stefano Stabellini <sstabellini@kernel.org>,
Eduardo Habkost <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Shannon Zhao <shannon.zhaosl@gmail.com>,
Igor Mammedov <imammedo@redhat.com>,
qemu-arm@nongnu.org,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Anthony Perard <anthony.perard@citrix.com>,
xen-devel@lists.xenproject.org,
Richard Henderson <rth@twiddle.net>
Subject: [PATCH v5 20/24] hw: acpi: Define ACPI tables builder interface
Date: Mon, 5 Nov 2018 02:40:43 +0100 [thread overview]
Message-ID: <20181105014047.26447-21-sameo@linux.intel.com> (raw)
In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com>
In order to decouple ACPI APIs from specific machine types, we are
creating an ACPI builder interface that each ACPI platform can choose to
implement.
This way, a new machine type can re-use the high level ACPI APIs and
define some custom table build methods, without having to duplicate most
of the existing implementation only to add small variations to it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
---
include/hw/acpi/builder.h | 100 ++++++++++++++++++++++++++++++++++++++
hw/acpi/builder.c | 97 ++++++++++++++++++++++++++++++++++++
hw/acpi/Makefile.objs | 1 +
3 files changed, 198 insertions(+)
create mode 100644 include/hw/acpi/builder.h
create mode 100644 hw/acpi/builder.c
diff --git a/include/hw/acpi/builder.h b/include/hw/acpi/builder.h
new file mode 100644
index 0000000000..a63b88ffe9
--- /dev/null
+++ b/include/hw/acpi/builder.h
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ACPI_BUILDER_H
+#define ACPI_BUILDER_H
+
+#include "qemu/osdep.h"
+#include "hw/acpi/bios-linker-loader.h"
+#include "qom/object.h"
+
+#define TYPE_ACPI_BUILDER "acpi-builder"
+
+#define ACPI_BUILDER_METHODS(klass) \
+ OBJECT_CLASS_CHECK(AcpiBuilderMethods, (klass), TYPE_ACPI_BUILDER)
+#define ACPI_BUILDER_GET_METHODS(obj) \
+ OBJECT_GET_CLASS(AcpiBuilderMethods, (obj), TYPE_ACPI_BUILDER)
+#define ACPI_BUILDER(obj) \
+ INTERFACE_CHECK(AcpiBuilder, (obj), TYPE_ACPI_BUILDER)
+
+typedef struct AcpiConfiguration AcpiConfiguration;
+typedef struct AcpiBuildState AcpiBuildState;
+typedef struct AcpiMcfgInfo AcpiMcfgInfo;
+
+typedef struct AcpiBuilder {
+ /* <private> */
+ Object Parent;
+} AcpiBuilder;
+
+/**
+ * AcpiBuildMethods:
+ *
+ * Interface to be implemented by a machine type that needs to provide
+ * custom ACPI tables build method.
+ *
+ * @parent: Opaque parent interface.
+ * @rsdp: ACPI RSDP (Root System Description Pointer) table build callback.
+ * @madt: ACPI MADT (Multiple APIC Description Table) table build callback.
+ * @mcfg: ACPI MCFG table build callback.
+ * @srat: ACPI SRAT (System/Static Resource Affinity Table)
+ * table build callback.
+ * @slit: ACPI SLIT (System Locality System Information Table)
+ * table build callback.
+ * @configuration: ACPI configuration getter.
+ * This is used to query the machine instance for its
+ * AcpiConfiguration pointer.
+ */
+typedef struct AcpiBuilderMethods {
+ /* <private> */
+ InterfaceClass parent;
+
+ /* <public> */
+ void (*rsdp)(GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset);
+ void (*madt)(GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf);
+ void (*mcfg)(GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info);
+ void (*srat)(GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf);
+ void (*slit)(GArray *table_data, BIOSLinker *linker);
+
+ AcpiConfiguration *(*configuration)(AcpiBuilder *builder);
+} AcpiBuilderMethods;
+
+void acpi_builder_rsdp(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset);
+
+void acpi_builder_madt(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf);
+
+void acpi_builder_mcfg(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info);
+
+void acpi_builder_srat(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf);
+
+void acpi_builder_slit(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker);
+
+AcpiConfiguration *acpi_builder_configuration(AcpiBuilder *builder);
+
+#endif
diff --git a/hw/acpi/builder.c b/hw/acpi/builder.c
new file mode 100644
index 0000000000..c29a614793
--- /dev/null
+++ b/hw/acpi/builder.c
@@ -0,0 +1,97 @@
+/*
+ *
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * 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 "qemu/osdep.h"
+#include "qemu/module.h"
+#include "qom/object.h"
+#include "hw/acpi/builder.h"
+
+void acpi_builder_rsdp(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->rsdp) {
+ abm->rsdp(table_data, linker, rsdt_tbl_offset);
+ }
+}
+
+void acpi_builder_madt(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->madt) {
+ abm->madt(table_data, linker, ms, conf);
+ }
+}
+
+void acpi_builder_mcfg(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->mcfg) {
+ abm->mcfg(table_data, linker, info);
+ }
+}
+
+void acpi_builder_srat(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->srat) {
+ abm->srat(table_data, linker, machine, conf);
+ }
+}
+
+void acpi_builder_slit(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->slit) {
+ abm->slit(table_data, linker);
+ }
+}
+
+AcpiConfiguration *acpi_builder_configuration(AcpiBuilder *builder)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+ if (abm && abm->configuration) {
+ return abm->configuration(builder);
+ }
+ return NULL;
+}
+
+static const TypeInfo acpi_builder_info = {
+ .name = TYPE_ACPI_BUILDER,
+ .parent = TYPE_INTERFACE,
+ .class_size = sizeof(AcpiBuilderMethods),
+};
+
+static void acpi_builder_register_type(void)
+{
+ type_register_static(&acpi_builder_info);
+}
+
+type_init(acpi_builder_register_type)
diff --git a/hw/acpi/Makefile.objs b/hw/acpi/Makefile.objs
index 11c35bcb44..2f383adc6f 100644
--- a/hw/acpi/Makefile.objs
+++ b/hw/acpi/Makefile.objs
@@ -11,6 +11,7 @@ common-obj-$(call lnot,$(CONFIG_ACPI_X86)) += acpi-stub.o
common-obj-y += acpi_interface.o
common-obj-y += bios-linker-loader.o
common-obj-y += aml-build.o
+common-obj-y += builder.o
common-obj-$(CONFIG_IPMI) += ipmi.o
common-obj-$(call lnot,$(CONFIG_IPMI)) += ipmi-stub.o
--
2.19.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
WARNING: multiple messages have this Message-ID (diff)
From: Samuel Ortiz <sameo@linux.intel.com>
To: qemu-devel@nongnu.org
Cc: Shannon Zhao <shannon.zhaosl@gmail.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Anthony Perard <anthony.perard@citrix.com>,
Richard Henderson <rth@twiddle.net>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
xen-devel@lists.xenproject.org,
Paolo Bonzini <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
qemu-arm@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>
Subject: [Qemu-devel] [PATCH v5 20/24] hw: acpi: Define ACPI tables builder interface
Date: Mon, 5 Nov 2018 02:40:43 +0100 [thread overview]
Message-ID: <20181105014047.26447-21-sameo@linux.intel.com> (raw)
In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com>
In order to decouple ACPI APIs from specific machine types, we are
creating an ACPI builder interface that each ACPI platform can choose to
implement.
This way, a new machine type can re-use the high level ACPI APIs and
define some custom table build methods, without having to duplicate most
of the existing implementation only to add small variations to it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
---
include/hw/acpi/builder.h | 100 ++++++++++++++++++++++++++++++++++++++
hw/acpi/builder.c | 97 ++++++++++++++++++++++++++++++++++++
hw/acpi/Makefile.objs | 1 +
3 files changed, 198 insertions(+)
create mode 100644 include/hw/acpi/builder.h
create mode 100644 hw/acpi/builder.c
diff --git a/include/hw/acpi/builder.h b/include/hw/acpi/builder.h
new file mode 100644
index 0000000000..a63b88ffe9
--- /dev/null
+++ b/include/hw/acpi/builder.h
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ACPI_BUILDER_H
+#define ACPI_BUILDER_H
+
+#include "qemu/osdep.h"
+#include "hw/acpi/bios-linker-loader.h"
+#include "qom/object.h"
+
+#define TYPE_ACPI_BUILDER "acpi-builder"
+
+#define ACPI_BUILDER_METHODS(klass) \
+ OBJECT_CLASS_CHECK(AcpiBuilderMethods, (klass), TYPE_ACPI_BUILDER)
+#define ACPI_BUILDER_GET_METHODS(obj) \
+ OBJECT_GET_CLASS(AcpiBuilderMethods, (obj), TYPE_ACPI_BUILDER)
+#define ACPI_BUILDER(obj) \
+ INTERFACE_CHECK(AcpiBuilder, (obj), TYPE_ACPI_BUILDER)
+
+typedef struct AcpiConfiguration AcpiConfiguration;
+typedef struct AcpiBuildState AcpiBuildState;
+typedef struct AcpiMcfgInfo AcpiMcfgInfo;
+
+typedef struct AcpiBuilder {
+ /* <private> */
+ Object Parent;
+} AcpiBuilder;
+
+/**
+ * AcpiBuildMethods:
+ *
+ * Interface to be implemented by a machine type that needs to provide
+ * custom ACPI tables build method.
+ *
+ * @parent: Opaque parent interface.
+ * @rsdp: ACPI RSDP (Root System Description Pointer) table build callback.
+ * @madt: ACPI MADT (Multiple APIC Description Table) table build callback.
+ * @mcfg: ACPI MCFG table build callback.
+ * @srat: ACPI SRAT (System/Static Resource Affinity Table)
+ * table build callback.
+ * @slit: ACPI SLIT (System Locality System Information Table)
+ * table build callback.
+ * @configuration: ACPI configuration getter.
+ * This is used to query the machine instance for its
+ * AcpiConfiguration pointer.
+ */
+typedef struct AcpiBuilderMethods {
+ /* <private> */
+ InterfaceClass parent;
+
+ /* <public> */
+ void (*rsdp)(GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset);
+ void (*madt)(GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf);
+ void (*mcfg)(GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info);
+ void (*srat)(GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf);
+ void (*slit)(GArray *table_data, BIOSLinker *linker);
+
+ AcpiConfiguration *(*configuration)(AcpiBuilder *builder);
+} AcpiBuilderMethods;
+
+void acpi_builder_rsdp(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset);
+
+void acpi_builder_madt(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf);
+
+void acpi_builder_mcfg(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info);
+
+void acpi_builder_srat(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf);
+
+void acpi_builder_slit(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker);
+
+AcpiConfiguration *acpi_builder_configuration(AcpiBuilder *builder);
+
+#endif
diff --git a/hw/acpi/builder.c b/hw/acpi/builder.c
new file mode 100644
index 0000000000..c29a614793
--- /dev/null
+++ b/hw/acpi/builder.c
@@ -0,0 +1,97 @@
+/*
+ *
+ * Copyright (c) 2018 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2 or later, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * 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 "qemu/osdep.h"
+#include "qemu/module.h"
+#include "qom/object.h"
+#include "hw/acpi/builder.h"
+
+void acpi_builder_rsdp(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ unsigned rsdt_tbl_offset)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->rsdp) {
+ abm->rsdp(table_data, linker, rsdt_tbl_offset);
+ }
+}
+
+void acpi_builder_madt(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *ms, AcpiConfiguration *conf)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->madt) {
+ abm->madt(table_data, linker, ms, conf);
+ }
+}
+
+void acpi_builder_mcfg(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ AcpiMcfgInfo *info)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->mcfg) {
+ abm->mcfg(table_data, linker, info);
+ }
+}
+
+void acpi_builder_srat(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker,
+ MachineState *machine, AcpiConfiguration *conf)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->srat) {
+ abm->srat(table_data, linker, machine, conf);
+ }
+}
+
+void acpi_builder_slit(AcpiBuilder *builder,
+ GArray *table_data, BIOSLinker *linker)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+
+ if (abm && abm->slit) {
+ abm->slit(table_data, linker);
+ }
+}
+
+AcpiConfiguration *acpi_builder_configuration(AcpiBuilder *builder)
+{
+ AcpiBuilderMethods *abm = ACPI_BUILDER_GET_METHODS(builder);
+ if (abm && abm->configuration) {
+ return abm->configuration(builder);
+ }
+ return NULL;
+}
+
+static const TypeInfo acpi_builder_info = {
+ .name = TYPE_ACPI_BUILDER,
+ .parent = TYPE_INTERFACE,
+ .class_size = sizeof(AcpiBuilderMethods),
+};
+
+static void acpi_builder_register_type(void)
+{
+ type_register_static(&acpi_builder_info);
+}
+
+type_init(acpi_builder_register_type)
diff --git a/hw/acpi/Makefile.objs b/hw/acpi/Makefile.objs
index 11c35bcb44..2f383adc6f 100644
--- a/hw/acpi/Makefile.objs
+++ b/hw/acpi/Makefile.objs
@@ -11,6 +11,7 @@ common-obj-$(call lnot,$(CONFIG_ACPI_X86)) += acpi-stub.o
common-obj-y += acpi_interface.o
common-obj-y += bios-linker-loader.o
common-obj-y += aml-build.o
+common-obj-y += builder.o
common-obj-$(CONFIG_IPMI) += ipmi.o
common-obj-$(call lnot,$(CONFIG_IPMI)) += ipmi-stub.o
--
2.19.1
next prev parent reply other threads:[~2018-11-05 1:52 UTC|newest]
Thread overview: 255+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-05 1:40 [Qemu-arm] [PATCH v5 00/24] ACPI reorganization for hardware-reduced API addition Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 01/24] hw: i386: Decouple the ACPI build from the PC machine type Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-09 14:23 ` [Qemu-devel] " Igor Mammedov
2018-11-09 14:23 ` Igor Mammedov
2018-11-09 14:23 ` Igor Mammedov
2018-11-21 14:42 ` [Qemu-arm] [Qemu-devel] " Samuel Ortiz
2018-11-21 14:42 ` Samuel Ortiz
2018-11-21 14:42 ` Samuel Ortiz
2018-11-22 15:13 ` [Qemu-arm] " Igor Mammedov
2018-11-22 15:13 ` Igor Mammedov
2018-11-22 15:13 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 02/24] hw: acpi: Export ACPI build alignment API Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-09 14:27 ` [Qemu-arm] " Igor Mammedov
2018-11-09 14:27 ` [Qemu-devel] " Igor Mammedov
2018-11-09 14:27 ` Igor Mammedov
2018-11-21 14:42 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 14:42 ` [Qemu-devel] " Samuel Ortiz
2018-11-21 14:42 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 03/24] hw: acpi: The RSDP build API can return void Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-06 10:23 ` [Qemu-arm] " Paolo Bonzini
2018-11-06 10:23 ` [Qemu-devel] " Paolo Bonzini
2018-11-06 10:23 ` Paolo Bonzini
2018-11-06 10:43 ` [Qemu-devel] " Samuel Ortiz
2018-11-06 10:43 ` Samuel Ortiz
2018-11-06 10:43 ` Samuel Ortiz
2018-11-08 14:24 ` [Qemu-arm] [Qemu-devel] " Igor Mammedov
2018-11-08 14:24 ` Igor Mammedov
2018-11-08 14:24 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 04/24] hw: acpi: Export the RSDP build API Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-08 14:16 ` [Qemu-arm] " Igor Mammedov
2018-11-08 14:16 ` [Qemu-devel] " Igor Mammedov
2018-11-08 14:16 ` Igor Mammedov
2018-11-08 14:36 ` [Qemu-devel] " Samuel Ortiz
2018-11-08 14:36 ` Samuel Ortiz
2018-11-08 14:36 ` Samuel Ortiz
2018-11-08 14:53 ` [Qemu-devel] " Igor Mammedov
2018-11-08 14:53 ` Igor Mammedov
2018-11-08 14:53 ` Igor Mammedov
2018-11-19 18:27 ` [Qemu-arm] " Michael S. Tsirkin
2018-11-19 18:27 ` [Qemu-devel] " Michael S. Tsirkin
2018-11-19 18:27 ` Michael S. Tsirkin
2018-11-20 8:23 ` [Qemu-arm] " Igor Mammedov
2018-11-20 8:23 ` [Qemu-devel] " Igor Mammedov
2018-11-20 8:23 ` Igor Mammedov
2018-11-21 14:42 ` [Qemu-arm] [Qemu-devel] " Samuel Ortiz
2018-11-21 14:42 ` Samuel Ortiz
2018-11-21 14:42 ` Samuel Ortiz
2018-11-22 16:26 ` [Qemu-arm] " Igor Mammedov
2018-11-22 16:26 ` Igor Mammedov
2018-11-22 16:26 ` Igor Mammedov
2018-11-23 9:36 ` [Qemu-arm] " Samuel Ortiz
2018-11-23 9:36 ` Samuel Ortiz
2018-11-23 9:36 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 06/24] hw: acpi: Factorize the RSDP build API implementation Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 07/24] hw: acpi: Generalize AML build routines Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-09 13:37 ` [Qemu-arm] " Igor Mammedov
2018-11-09 13:37 ` [Qemu-devel] " Igor Mammedov
2018-11-21 15:00 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 15:00 ` Samuel Ortiz
2018-11-21 15:00 ` Samuel Ortiz
2018-11-09 13:37 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 08/24] hw: acpi: Factorize _OSC AML across architectures Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 09/24] hw: i386: Move PCI host definitions to pci_host.h Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-09 14:30 ` [Qemu-arm] " Igor Mammedov
2018-11-09 14:30 ` [Qemu-devel] " Igor Mammedov
2018-11-09 14:30 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 10/24] hw: acpi: Export the PCI host and holes getters Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-13 15:59 ` [Qemu-arm] [Qemu-devel] " Igor Mammedov
2018-11-13 15:59 ` Igor Mammedov
2018-11-13 15:59 ` Igor Mammedov
2018-11-21 15:43 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 15:43 ` Samuel Ortiz
2018-11-21 15:43 ` Samuel Ortiz
2018-11-23 10:55 ` [Qemu-arm] " Igor Mammedov
2018-11-23 10:55 ` Igor Mammedov
2018-11-23 10:55 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 11/24] hw: acpi: Export and generalize the PCI host AML API Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-14 10:55 ` [Qemu-arm] " Igor Mammedov
2018-11-14 10:55 ` [Qemu-devel] " Igor Mammedov
2018-11-14 10:55 ` Igor Mammedov
2018-11-21 23:12 ` [Qemu-arm] [Qemu-devel] " Samuel Ortiz
2018-11-21 23:12 ` Samuel Ortiz
2018-11-21 23:12 ` Samuel Ortiz
2018-11-23 11:04 ` [Qemu-arm] " Igor Mammedov
2018-11-23 11:04 ` Igor Mammedov
2018-11-23 11:04 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 12/24] hw: acpi: Export the MCFG getter Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-15 12:36 ` [Qemu-arm] " Igor Mammedov
2018-11-15 12:36 ` [Qemu-devel] " Igor Mammedov
2018-11-15 12:36 ` Igor Mammedov
2018-11-21 23:21 ` [Qemu-arm] [Qemu-devel] " Samuel Ortiz
2018-11-21 23:21 ` Samuel Ortiz
2018-11-21 23:21 ` Samuel Ortiz
2018-11-27 13:54 ` Igor Mammedov
2018-11-27 13:54 ` Igor Mammedov
2018-11-27 13:54 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 13/24] hw: acpi: Do not create hotplug method when handler is not defined Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-09 9:12 ` [Qemu-devel] " Igor Mammedov
2018-11-09 9:12 ` [Qemu-arm] " Igor Mammedov
2018-11-09 9:12 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 14/24] hw: i386: Make the hotpluggable memory size property more generic Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-15 12:49 ` [Qemu-arm] " Igor Mammedov
2018-11-15 12:49 ` [Qemu-devel] " Igor Mammedov
2018-11-15 12:49 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 15/24] hw: i386: Export the i386 ACPI SRAT build method Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-15 13:28 ` [Qemu-arm] [Qemu-devel] " Igor Mammedov
2018-11-15 13:28 ` Igor Mammedov
2018-11-15 13:28 ` Igor Mammedov
2018-11-21 23:27 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 23:27 ` Samuel Ortiz
2018-11-21 23:27 ` Samuel Ortiz
2018-11-26 15:47 ` [Qemu-arm] " Igor Mammedov
2018-11-26 15:47 ` Igor Mammedov
2018-11-26 15:47 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 16/24] hw: acpi: Fix memory hotplug AML generation error Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-08 14:23 ` [Qemu-devel] " Igor Mammedov
2018-11-08 14:23 ` Igor Mammedov
2018-11-08 14:23 ` Igor Mammedov
2019-01-14 18:35 ` [Qemu-arm] " Michael S. Tsirkin
2019-01-14 18:35 ` [Qemu-devel] " Michael S. Tsirkin
2019-01-14 18:35 ` Michael S. Tsirkin
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 17/24] hw: acpi: Export the PCI hotplug API Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 18/24] hw: i386: Export the MADT build method Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-16 9:27 ` [Qemu-devel] " Igor Mammedov
2018-11-16 9:27 ` [Qemu-arm] " Igor Mammedov
2018-11-16 9:27 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-arm] [PATCH v5 19/24] hw: acpi: Retrieve the PCI bus from AcpiPciHpState Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] " Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-16 9:39 ` [Qemu-arm] " Igor Mammedov
2018-11-16 9:39 ` [Qemu-devel] " Igor Mammedov
2018-11-16 9:39 ` Igor Mammedov
2018-11-16 19:42 ` Boeuf, Sebastien
2018-11-16 19:42 ` [Qemu-devel] " Boeuf, Sebastien
2018-11-16 19:42 ` Boeuf, Sebastien
2018-11-19 15:37 ` [Qemu-arm] " Igor Mammedov
2018-11-19 15:37 ` [Qemu-devel] " Igor Mammedov
2018-11-19 15:37 ` Igor Mammedov
2018-11-19 18:02 ` [Qemu-arm] " Boeuf, Sebastien
2018-11-19 18:02 ` [Qemu-devel] " Boeuf, Sebastien
2018-11-19 18:02 ` Boeuf, Sebastien
2018-11-20 8:26 ` [Qemu-arm] " Igor Mammedov
2018-11-20 8:26 ` [Qemu-devel] " Igor Mammedov
2018-11-20 8:26 ` Igor Mammedov
2018-11-05 1:40 ` Samuel Ortiz [this message]
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 20/24] hw: acpi: Define ACPI tables builder interface Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-16 16:02 ` [Qemu-arm] [Qemu-devel] " Igor Mammedov
2018-11-16 16:02 ` Igor Mammedov
2018-11-16 16:02 ` Igor Mammedov
2018-11-21 23:57 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 23:57 ` Samuel Ortiz
2018-11-21 23:57 ` Samuel Ortiz
2018-11-27 14:08 ` [Qemu-arm] " Igor Mammedov
2018-11-27 14:08 ` Igor Mammedov
2018-11-27 14:08 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 21/24] hw: i386: Implement the ACPI builder interface for PC Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 22/24] hw: pci-host: piix: Return PCI host pointer instead of PCI bus Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-16 11:09 ` [Qemu-arm] " Igor Mammedov
2018-11-16 11:09 ` [Qemu-devel] " Igor Mammedov
2018-11-16 11:09 ` Igor Mammedov
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 23/24] hw: i386: Set ACPI configuration PCI host pointer Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` [Qemu-devel] [PATCH v5 24/24] hw: i386: Refactor PCI host getter Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-05 1:40 ` Samuel Ortiz
2018-11-16 16:29 ` [Qemu-arm] [Qemu-devel] [PATCH v5 00/24] ACPI reorganization for hardware-reduced API addition Igor Mammedov
2018-11-16 16:29 ` Igor Mammedov
2018-11-16 16:29 ` Igor Mammedov
2018-11-16 16:37 ` [Qemu-arm] " Paolo Bonzini
2018-11-16 16:37 ` Paolo Bonzini
2018-11-16 16:37 ` Paolo Bonzini
2018-11-19 15:31 ` [Qemu-arm] " Igor Mammedov
2018-11-19 15:31 ` Igor Mammedov
2018-11-19 15:31 ` Igor Mammedov
2018-11-19 17:14 ` Paolo Bonzini
2018-11-19 17:14 ` Paolo Bonzini
2018-11-19 17:14 ` Paolo Bonzini
2018-11-19 18:14 ` [Qemu-arm] " Michael S. Tsirkin
2018-11-19 18:14 ` Michael S. Tsirkin
2018-11-19 18:14 ` Michael S. Tsirkin
2018-11-20 21:35 ` [Qemu-arm] " Paolo Bonzini
2018-11-20 21:35 ` Paolo Bonzini
2018-11-20 21:35 ` Paolo Bonzini
2018-11-20 12:57 ` [Qemu-arm] " Igor Mammedov
2018-11-20 12:57 ` Igor Mammedov
2018-11-20 21:36 ` [Qemu-arm] " Paolo Bonzini
2018-11-20 21:36 ` Paolo Bonzini
2018-11-20 21:36 ` Paolo Bonzini
2018-11-20 12:57 ` Igor Mammedov
2018-11-21 12:35 ` [Qemu-arm] " Michael S. Tsirkin
2018-11-21 12:35 ` Michael S. Tsirkin
2018-11-21 12:35 ` Michael S. Tsirkin
2018-11-21 13:50 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 13:50 ` Samuel Ortiz
2018-11-21 13:50 ` Samuel Ortiz
2018-11-21 13:57 ` [Qemu-arm] " Michael S. Tsirkin
2018-11-21 13:57 ` Michael S. Tsirkin
2018-11-21 13:57 ` Michael S. Tsirkin
2018-11-21 14:15 ` [Qemu-arm] " Igor Mammedov
2018-11-21 14:15 ` Igor Mammedov
2018-11-21 14:15 ` Igor Mammedov
2018-11-21 14:38 ` [Qemu-arm] " Samuel Ortiz
2018-11-21 14:38 ` Samuel Ortiz
2018-11-21 14:38 ` Samuel Ortiz
2018-11-22 10:39 ` [Qemu-arm] " Igor Mammedov
2018-11-22 10:39 ` Igor Mammedov
2018-11-22 10:39 ` Igor Mammedov
2018-11-22 0:17 ` [Qemu-arm] " Samuel Ortiz
2018-11-22 0:17 ` Samuel Ortiz
2018-11-22 0:17 ` Samuel Ortiz
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=20181105014047.26447-21-sameo@linux.intel.com \
--to=sameo@linux.intel.com \
--cc=anthony.perard@citrix.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=shannon.zhaosl@gmail.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.