From: Igor Mammedov <imammedo@redhat.com>
To: Dongjiu Geng <gengdongjiu@huawei.com>
Cc: <pbonzini@redhat.com>, <mst@redhat.com>,
<shannon.zhaosl@gmail.com>, <peter.maydell@linaro.org>,
<fam@euphon.net>, <rth@twiddle.net>, <ehabkost@redhat.com>,
<mtosatti@redhat.com>, <xuwei5@huawei.com>,
<jonathan.cameron@huawei.com>, <james.morse@arm.com>,
<qemu-devel@nongnu.org>, <kvm@vger.kernel.org>,
<qemu-arm@nongnu.org>,
zhengxiang9@huawei.com, linuxarm@huawei.com
Subject: Re: [PATCH v22 5/9] ACPI: Record the Generic Error Status Block address
Date: Tue, 28 Jan 2020 15:41:10 +0100 [thread overview]
Message-ID: <20200128154110.04baa5bc@redhat.com> (raw)
In-Reply-To: <1578483143-14905-6-git-send-email-gengdongjiu@huawei.com>
On Wed, 8 Jan 2020 19:32:19 +0800
Dongjiu Geng <gengdongjiu@huawei.com> wrote:
in addition to comments of others:
> Record the GHEB address via fw_cfg file, when recording
> a error to CPER, it will use this address to find out
> Generic Error Data Entries and write the error.
>
> Make the HEST GHES to a GED device.
It's hard to parse this even kno
Pls rephrase/make commit message more verbose,
so it would describe why and what patch is supposed to do
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> Signed-off-by: Xiang Zheng <zhengxiang9@huawei.com>
> ---
> hw/acpi/generic_event_device.c | 15 ++++++++++++++-
> hw/acpi/ghes.c | 16 ++++++++++++++++
> hw/arm/virt-acpi-build.c | 13 ++++++++++++-
> include/hw/acpi/generic_event_device.h | 2 ++
> include/hw/acpi/ghes.h | 6 ++++++
> 5 files changed, 50 insertions(+), 2 deletions(-)
>
> diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
> index 9cee90c..9bf37e4 100644
> --- a/hw/acpi/generic_event_device.c
> +++ b/hw/acpi/generic_event_device.c
> @@ -234,12 +234,25 @@ static const VMStateDescription vmstate_ged_state = {
> }
> };
>
> +static const VMStateDescription vmstate_ghes_state = {
> + .name = "acpi-ghes-state",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT64(ghes_addr_le, AcpiGhesState),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> static const VMStateDescription vmstate_acpi_ged = {
> .name = "acpi-ged",
> .version_id = 1,
> .minimum_version_id = 1,
> .fields = (VMStateField[]) {
> - VMSTATE_STRUCT(ged_state, AcpiGedState, 1, vmstate_ged_state, GEDState),
> + VMSTATE_STRUCT(ged_state, AcpiGedState, 1,
> + vmstate_ged_state, GEDState),
> + VMSTATE_STRUCT(ghes_state, AcpiGedState, 1,
> + vmstate_ghes_state, AcpiGhesState),
> VMSTATE_END_OF_LIST(),
> },
> .subsections = (const VMStateDescription * []) {
> diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c
> index 9d37798..68f4abf 100644
> --- a/hw/acpi/ghes.c
> +++ b/hw/acpi/ghes.c
> @@ -23,6 +23,7 @@
> #include "hw/acpi/acpi.h"
> #include "hw/acpi/ghes.h"
> #include "hw/acpi/aml-build.h"
> +#include "hw/acpi/generic_event_device.h"
> #include "hw/nvram/fw_cfg.h"
> #include "sysemu/sysemu.h"
> #include "qemu/error-report.h"
> @@ -208,3 +209,18 @@ void acpi_build_hest(GArray *table_data, GArray *hardware_errors,
> build_header(linker, table_data, (void *)(table_data->data + hest_start),
> "HEST", table_data->len - hest_start, 1, NULL, "");
> }
> +
> +void acpi_ghes_add_fw_cfg(AcpiGhesState *ags, FWCfgState *s,
> + GArray *hardware_error)
not aligned properly
> +{
> + size_t size = 2 * sizeof(uint64_t) + ACPI_GHES_MAX_RAW_DATA_LENGTH;
> + size_t request_block_size = ACPI_GHES_ERROR_SOURCE_COUNT * size;
> +
> + /* Create a read-only fw_cfg file for GHES */
> + fw_cfg_add_file(s, ACPI_GHES_ERRORS_FW_CFG_FILE, hardware_error->data,
> + request_block_size);
> +
> + /* Create a read-write fw_cfg file for Address */
> + fw_cfg_add_file_callback(s, ACPI_GHES_DATA_ADDR_FW_CFG_FILE, NULL, NULL,
> + NULL, &(ags->ghes_addr_le), sizeof(ags->ghes_addr_le), false);
> +}
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index 837bbf9..c8aa94d 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -797,6 +797,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
> unsigned dsdt, xsdt;
> GArray *tables_blob = tables->table_data;
> MachineState *ms = MACHINE(vms);
> + AcpiGedState *acpi_ged_state;
>
> table_offsets = g_array_new(false, true /* clear */,
> sizeof(uint32_t));
> @@ -831,7 +832,9 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
> acpi_add_table(table_offsets, tables_blob);
> build_spcr(tables_blob, tables->linker, vms);
>
> - if (vms->ras) {
> + acpi_ged_state = ACPI_GED(object_resolve_path_type("", TYPE_ACPI_GED,
> + NULL));
> + if (acpi_ged_state && vms->ras) {
there is vms->acpi_dev which is GED, so you don't need to look it up
suggest:
if (ras) {
assert(ged)
do other fun stuff ...
}
> acpi_add_table(table_offsets, tables_blob);
> build_ghes_error_table(tables->hardware_errors, tables->linker);
> acpi_build_hest(tables_blob, tables->hardware_errors,
> @@ -925,6 +928,7 @@ void virt_acpi_setup(VirtMachineState *vms)
> {
> AcpiBuildTables tables;
> AcpiBuildState *build_state;
> + AcpiGedState *acpi_ged_state;
>
> if (!vms->fw_cfg) {
> trace_virt_acpi_setup();
> @@ -955,6 +959,13 @@ void virt_acpi_setup(VirtMachineState *vms)
> fw_cfg_add_file(vms->fw_cfg, ACPI_BUILD_TPMLOG_FILE, tables.tcpalog->data,
> acpi_data_len(tables.tcpalog));
>
> + acpi_ged_state = ACPI_GED(object_resolve_path_type("", TYPE_ACPI_GED,
> + NULL));
> + if (acpi_ged_state && vms->ras) {
ditto
> + acpi_ghes_add_fw_cfg(&acpi_ged_state->ghes_state,
> + vms->fw_cfg, tables.hardware_errors);
> + }
> +
> build_state->rsdp_mr = acpi_add_rom_blob(virt_acpi_build_update,
> build_state, tables.rsdp,
> ACPI_BUILD_RSDP_FILE, 0);
> diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h
> index d157eac..037d2b5 100644
> --- a/include/hw/acpi/generic_event_device.h
> +++ b/include/hw/acpi/generic_event_device.h
> @@ -61,6 +61,7 @@
>
> #include "hw/sysbus.h"
> #include "hw/acpi/memory_hotplug.h"
> +#include "hw/acpi/ghes.h"
>
> #define ACPI_POWER_BUTTON_DEVICE "PWRB"
>
> @@ -95,6 +96,7 @@ typedef struct AcpiGedState {
> GEDState ged_state;
> uint32_t ged_event_bitmap;
> qemu_irq irq;
> + AcpiGhesState ghes_state;
> } AcpiGedState;
>
> void build_ged_aml(Aml *table, const char* name, HotplugHandler *hotplug_dev,
> diff --git a/include/hw/acpi/ghes.h b/include/hw/acpi/ghes.h
> index 09a7f86..a6761e6 100644
> --- a/include/hw/acpi/ghes.h
> +++ b/include/hw/acpi/ghes.h
> @@ -60,7 +60,13 @@ enum {
> ACPI_HEST_SRC_ID_RESERVED,
> };
>
> +typedef struct AcpiGhesState {
> + uint64_t ghes_addr_le;
> +} AcpiGhesState;
> +
> void build_ghes_error_table(GArray *hardware_errors, BIOSLinker *linker);
> void acpi_build_hest(GArray *table_data, GArray *hardware_error,
> BIOSLinker *linker);
> +void acpi_ghes_add_fw_cfg(AcpiGhesState *vms, FWCfgState *s,
> + GArray *hardware_errors);
> #endif
WARNING: multiple messages have this Message-ID (diff)
From: Igor Mammedov <imammedo@redhat.com>
To: Dongjiu Geng <gengdongjiu@huawei.com>
Cc: fam@euphon.net, peter.maydell@linaro.org, ehabkost@redhat.com,
kvm@vger.kernel.org, mst@redhat.com, mtosatti@redhat.com,
qemu-devel@nongnu.org, linuxarm@huawei.com,
shannon.zhaosl@gmail.com, zhengxiang9@huawei.com,
qemu-arm@nongnu.org, james.morse@arm.com, xuwei5@huawei.com,
jonathan.cameron@huawei.com, pbonzini@redhat.com,
rth@twiddle.net
Subject: Re: [PATCH v22 5/9] ACPI: Record the Generic Error Status Block address
Date: Tue, 28 Jan 2020 15:41:10 +0100 [thread overview]
Message-ID: <20200128154110.04baa5bc@redhat.com> (raw)
In-Reply-To: <1578483143-14905-6-git-send-email-gengdongjiu@huawei.com>
On Wed, 8 Jan 2020 19:32:19 +0800
Dongjiu Geng <gengdongjiu@huawei.com> wrote:
in addition to comments of others:
> Record the GHEB address via fw_cfg file, when recording
> a error to CPER, it will use this address to find out
> Generic Error Data Entries and write the error.
>
> Make the HEST GHES to a GED device.
It's hard to parse this even kno
Pls rephrase/make commit message more verbose,
so it would describe why and what patch is supposed to do
> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
> Signed-off-by: Xiang Zheng <zhengxiang9@huawei.com>
> ---
> hw/acpi/generic_event_device.c | 15 ++++++++++++++-
> hw/acpi/ghes.c | 16 ++++++++++++++++
> hw/arm/virt-acpi-build.c | 13 ++++++++++++-
> include/hw/acpi/generic_event_device.h | 2 ++
> include/hw/acpi/ghes.h | 6 ++++++
> 5 files changed, 50 insertions(+), 2 deletions(-)
>
> diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
> index 9cee90c..9bf37e4 100644
> --- a/hw/acpi/generic_event_device.c
> +++ b/hw/acpi/generic_event_device.c
> @@ -234,12 +234,25 @@ static const VMStateDescription vmstate_ged_state = {
> }
> };
>
> +static const VMStateDescription vmstate_ghes_state = {
> + .name = "acpi-ghes-state",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT64(ghes_addr_le, AcpiGhesState),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> static const VMStateDescription vmstate_acpi_ged = {
> .name = "acpi-ged",
> .version_id = 1,
> .minimum_version_id = 1,
> .fields = (VMStateField[]) {
> - VMSTATE_STRUCT(ged_state, AcpiGedState, 1, vmstate_ged_state, GEDState),
> + VMSTATE_STRUCT(ged_state, AcpiGedState, 1,
> + vmstate_ged_state, GEDState),
> + VMSTATE_STRUCT(ghes_state, AcpiGedState, 1,
> + vmstate_ghes_state, AcpiGhesState),
> VMSTATE_END_OF_LIST(),
> },
> .subsections = (const VMStateDescription * []) {
> diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c
> index 9d37798..68f4abf 100644
> --- a/hw/acpi/ghes.c
> +++ b/hw/acpi/ghes.c
> @@ -23,6 +23,7 @@
> #include "hw/acpi/acpi.h"
> #include "hw/acpi/ghes.h"
> #include "hw/acpi/aml-build.h"
> +#include "hw/acpi/generic_event_device.h"
> #include "hw/nvram/fw_cfg.h"
> #include "sysemu/sysemu.h"
> #include "qemu/error-report.h"
> @@ -208,3 +209,18 @@ void acpi_build_hest(GArray *table_data, GArray *hardware_errors,
> build_header(linker, table_data, (void *)(table_data->data + hest_start),
> "HEST", table_data->len - hest_start, 1, NULL, "");
> }
> +
> +void acpi_ghes_add_fw_cfg(AcpiGhesState *ags, FWCfgState *s,
> + GArray *hardware_error)
not aligned properly
> +{
> + size_t size = 2 * sizeof(uint64_t) + ACPI_GHES_MAX_RAW_DATA_LENGTH;
> + size_t request_block_size = ACPI_GHES_ERROR_SOURCE_COUNT * size;
> +
> + /* Create a read-only fw_cfg file for GHES */
> + fw_cfg_add_file(s, ACPI_GHES_ERRORS_FW_CFG_FILE, hardware_error->data,
> + request_block_size);
> +
> + /* Create a read-write fw_cfg file for Address */
> + fw_cfg_add_file_callback(s, ACPI_GHES_DATA_ADDR_FW_CFG_FILE, NULL, NULL,
> + NULL, &(ags->ghes_addr_le), sizeof(ags->ghes_addr_le), false);
> +}
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index 837bbf9..c8aa94d 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -797,6 +797,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
> unsigned dsdt, xsdt;
> GArray *tables_blob = tables->table_data;
> MachineState *ms = MACHINE(vms);
> + AcpiGedState *acpi_ged_state;
>
> table_offsets = g_array_new(false, true /* clear */,
> sizeof(uint32_t));
> @@ -831,7 +832,9 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
> acpi_add_table(table_offsets, tables_blob);
> build_spcr(tables_blob, tables->linker, vms);
>
> - if (vms->ras) {
> + acpi_ged_state = ACPI_GED(object_resolve_path_type("", TYPE_ACPI_GED,
> + NULL));
> + if (acpi_ged_state && vms->ras) {
there is vms->acpi_dev which is GED, so you don't need to look it up
suggest:
if (ras) {
assert(ged)
do other fun stuff ...
}
> acpi_add_table(table_offsets, tables_blob);
> build_ghes_error_table(tables->hardware_errors, tables->linker);
> acpi_build_hest(tables_blob, tables->hardware_errors,
> @@ -925,6 +928,7 @@ void virt_acpi_setup(VirtMachineState *vms)
> {
> AcpiBuildTables tables;
> AcpiBuildState *build_state;
> + AcpiGedState *acpi_ged_state;
>
> if (!vms->fw_cfg) {
> trace_virt_acpi_setup();
> @@ -955,6 +959,13 @@ void virt_acpi_setup(VirtMachineState *vms)
> fw_cfg_add_file(vms->fw_cfg, ACPI_BUILD_TPMLOG_FILE, tables.tcpalog->data,
> acpi_data_len(tables.tcpalog));
>
> + acpi_ged_state = ACPI_GED(object_resolve_path_type("", TYPE_ACPI_GED,
> + NULL));
> + if (acpi_ged_state && vms->ras) {
ditto
> + acpi_ghes_add_fw_cfg(&acpi_ged_state->ghes_state,
> + vms->fw_cfg, tables.hardware_errors);
> + }
> +
> build_state->rsdp_mr = acpi_add_rom_blob(virt_acpi_build_update,
> build_state, tables.rsdp,
> ACPI_BUILD_RSDP_FILE, 0);
> diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/generic_event_device.h
> index d157eac..037d2b5 100644
> --- a/include/hw/acpi/generic_event_device.h
> +++ b/include/hw/acpi/generic_event_device.h
> @@ -61,6 +61,7 @@
>
> #include "hw/sysbus.h"
> #include "hw/acpi/memory_hotplug.h"
> +#include "hw/acpi/ghes.h"
>
> #define ACPI_POWER_BUTTON_DEVICE "PWRB"
>
> @@ -95,6 +96,7 @@ typedef struct AcpiGedState {
> GEDState ged_state;
> uint32_t ged_event_bitmap;
> qemu_irq irq;
> + AcpiGhesState ghes_state;
> } AcpiGedState;
>
> void build_ged_aml(Aml *table, const char* name, HotplugHandler *hotplug_dev,
> diff --git a/include/hw/acpi/ghes.h b/include/hw/acpi/ghes.h
> index 09a7f86..a6761e6 100644
> --- a/include/hw/acpi/ghes.h
> +++ b/include/hw/acpi/ghes.h
> @@ -60,7 +60,13 @@ enum {
> ACPI_HEST_SRC_ID_RESERVED,
> };
>
> +typedef struct AcpiGhesState {
> + uint64_t ghes_addr_le;
> +} AcpiGhesState;
> +
> void build_ghes_error_table(GArray *hardware_errors, BIOSLinker *linker);
> void acpi_build_hest(GArray *table_data, GArray *hardware_error,
> BIOSLinker *linker);
> +void acpi_ghes_add_fw_cfg(AcpiGhesState *vms, FWCfgState *s,
> + GArray *hardware_errors);
> #endif
next prev parent reply other threads:[~2020-01-28 14:41 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-08 11:32 [PATCH v22 0/9] Add ARMv8 RAS virtualization support in QEMU Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-08 11:32 ` [PATCH v22 1/9] hw/arm/virt: Introduce a RAS machine option Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-08 11:32 ` [PATCH v22 2/9] docs: APEI GHES generation and CPER record description Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-15 15:11 ` Igor Mammedov
2020-01-15 15:11 ` Igor Mammedov
2020-01-08 11:32 ` [PATCH v22 3/9] ACPI: Build related register address fields via hardware error fw_cfg blob Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-23 15:14 ` Igor Mammedov
2020-01-23 15:14 ` Igor Mammedov
2020-02-02 14:01 ` gengdongjiu
2020-02-02 14:01 ` gengdongjiu
2020-01-08 11:32 ` [PATCH v22 4/9] ACPI: Build Hardware Error Source Table Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-23 15:48 ` Igor Mammedov
2020-01-23 15:48 ` Igor Mammedov
2020-02-02 14:21 ` gengdongjiu
2020-02-02 14:21 ` gengdongjiu
2020-02-05 16:43 ` Jonathan Cameron
2020-02-05 16:43 ` Jonathan Cameron
2020-02-10 11:18 ` gengdongjiu
2020-02-10 11:18 ` gengdongjiu
2020-01-08 11:32 ` [PATCH v22 5/9] ACPI: Record the Generic Error Status Block address Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-16 16:44 ` Peter Maydell
2020-01-16 16:44 ` Peter Maydell
2020-01-17 10:36 ` gengdongjiu
2020-01-17 10:36 ` gengdongjiu
2020-02-13 15:28 ` gengdongjiu
2020-02-13 15:28 ` gengdongjiu
2020-01-17 7:39 ` Philippe Mathieu-Daudé
2020-01-17 10:47 ` gengdongjiu
2020-01-17 10:47 ` gengdongjiu
2020-01-17 11:20 ` Philippe Mathieu-Daudé
2020-01-28 14:41 ` Igor Mammedov [this message]
2020-01-28 14:41 ` Igor Mammedov
2020-01-28 16:19 ` Igor Mammedov
2020-01-28 16:19 ` Igor Mammedov
2020-02-02 12:44 ` gengdongjiu
2020-02-02 12:44 ` gengdongjiu
2020-02-03 7:51 ` Igor Mammedov
2020-02-03 7:51 ` Igor Mammedov
2020-01-08 11:32 ` [PATCH v22 6/9] KVM: Move hwpoison page related functions into kvm-all.c Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-08 11:32 ` [PATCH v22 7/9] ACPI: Record Generic Error Status Block(GESB) table Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-28 15:29 ` Igor Mammedov
2020-01-28 15:29 ` Igor Mammedov
2020-02-02 13:42 ` gengdongjiu
2020-02-02 13:42 ` gengdongjiu
2020-02-03 7:55 ` Igor Mammedov
2020-02-03 7:55 ` Igor Mammedov
2020-01-08 11:32 ` [PATCH v22 8/9] target-arm: kvm64: handle SIGBUS signal from kernel or KVM Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-16 16:28 ` Peter Maydell
2020-01-16 16:28 ` Peter Maydell
2020-01-16 16:40 ` Peter Maydell
2020-01-16 16:40 ` Peter Maydell
2020-01-17 10:04 ` gengdongjiu
2020-01-17 10:04 ` gengdongjiu
2020-01-20 12:15 ` Peter Maydell
2020-01-20 12:15 ` Peter Maydell
2020-01-22 15:30 ` gengdongjiu
2020-01-22 15:30 ` gengdongjiu
2020-01-08 11:32 ` [PATCH v22 9/9] MAINTAINERS: Add ACPI/HEST/GHES entries Dongjiu Geng
2020-01-08 11:32 ` Dongjiu Geng
2020-01-16 16:46 ` Peter Maydell
2020-01-16 16:46 ` Peter Maydell
2020-01-17 7:22 ` Philippe Mathieu-Daudé
2020-01-17 7:22 ` Philippe Mathieu-Daudé
2020-01-17 10:16 ` gengdongjiu
2020-01-17 10:16 ` gengdongjiu
2020-01-17 11:09 ` Peter Maydell
2020-01-17 11:09 ` Peter Maydell
2020-01-17 11:22 ` Philippe Mathieu-Daudé
2020-01-17 11:22 ` Philippe Mathieu-Daudé
2020-01-19 8:19 ` gengdongjiu
2020-01-19 8:19 ` gengdongjiu
2020-01-17 12:19 ` Michael S. Tsirkin
2020-01-17 12:19 ` Michael S. Tsirkin
2020-01-09 3:38 ` [PATCH v22 0/9] Add ARMv8 RAS virtualization support in QEMU gengdongjiu
2020-01-09 3:38 ` gengdongjiu
2020-01-15 13:05 ` gengdongjiu
2020-01-15 13:05 ` gengdongjiu
2020-01-15 13:05 ` gengdongjiu
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=20200128154110.04baa5bc@redhat.com \
--to=imammedo@redhat.com \
--cc=ehabkost@redhat.com \
--cc=fam@euphon.net \
--cc=gengdongjiu@huawei.com \
--cc=james.morse@arm.com \
--cc=jonathan.cameron@huawei.com \
--cc=kvm@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=mst@redhat.com \
--cc=mtosatti@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=xuwei5@huawei.com \
--cc=zhengxiang9@huawei.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 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.