Message ID | 1557832703-42620-3-git-send-email-gengdongjiu@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add ARMv8 RAS virtualization support in QEMU | expand |
On Tue, May 14, 2019 at 04:18:15AM -0700, Dongjiu Geng wrote: > Add Generic Error Status Block structures and some macros > definitions, which is referred to the ACPI 4.0 or ACPI 6.2. The > HEST table generation and CPER record will use them. > > Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> Are these all still used? I'd rather you moved stuff to where it's used. > --- > include/hw/acpi/acpi-defs.h | 52 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h > index f9aa4bd..d1996fb 100644 > --- a/include/hw/acpi/acpi-defs.h > +++ b/include/hw/acpi/acpi-defs.h > @@ -224,6 +224,25 @@ typedef struct AcpiMultipleApicTable AcpiMultipleApicTable; > #define ACPI_APIC_RESERVED 16 /* 16 and greater are reserved */ > > /* > + * Values for Hardware Error Notification Type field > + */ > +enum AcpiHestNotifyType { > + ACPI_HEST_NOTIFY_POLLED = 0, > + ACPI_HEST_NOTIFY_EXTERNAL = 1, > + ACPI_HEST_NOTIFY_LOCAL = 2, > + ACPI_HEST_NOTIFY_SCI = 3, > + ACPI_HEST_NOTIFY_NMI = 4, > + ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ > + ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ > + ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0: 18.3.2.7, Table 18-332 */ > + ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ > + ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ > + ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ > + ACPI_HEST_NOTIFY_SDEI = 11, /* ACPI 6.2: 18.3.2.9, Table 18-383 */ > + ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ > +}; > + If there's a single user, the best thing to do is just to open-code with a comment that matches spec names. It's hard to find stuff like ACPI_HEST_NOTIFY_GSIV in a spec. > +/* > * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) > */ > #define ACPI_SUB_HEADER_DEF /* Common ACPI sub-structure header */\ > @@ -400,6 +419,39 @@ struct AcpiSystemResourceAffinityTable { > } QEMU_PACKED; > typedef struct AcpiSystemResourceAffinityTable AcpiSystemResourceAffinityTable; > > +/* > + * Generic Error Status Block > + */ > +struct AcpiGenericErrorStatus { > + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ > + uint32_t block_status; > + uint32_t raw_data_offset; > + uint32_t raw_data_length; > + uint32_t data_length; > + uint32_t error_severity; > +} QEMU_PACKED; > +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; > + > +/* > + * Masks for block_status flags above > + */ > +#define ACPI_GEBS_UNCORRECTABLE 1 > + > +/* > + * Values for error_severity field above > + */ > +enum AcpiGenericErrorSeverity { > + ACPI_CPER_SEV_RECOVERABLE, > + ACPI_CPER_SEV_FATAL, > + ACPI_CPER_SEV_CORRECTED, > + ACPI_CPER_SEV_NONE, > +}; > + > +/* > + * Generic Hardware Error Source version 2 > + */ > +#define ACPI_HEST_SOURCE_GENERIC_ERROR_V2 10 > + > #define ACPI_SRAT_PROCESSOR_APIC 0 > #define ACPI_SRAT_MEMORY 1 > #define ACPI_SRAT_PROCESSOR_x2APIC 2 > -- > 1.8.3.1
On 2019/5/29 11:40, Michael S. Tsirkin wrote: > On Tue, May 14, 2019 at 04:18:15AM -0700, Dongjiu Geng wrote: >> Add Generic Error Status Block structures and some macros >> definitions, which is referred to the ACPI 4.0 or ACPI 6.2. The >> HEST table generation and CPER record will use them. >> >> Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> > > Are these all still used? I'd rather you moved stuff to > where it's used. Ok, I will move them, thanks > > > >> --- >> include/hw/acpi/acpi-defs.h | 52 +++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 52 insertions(+) >> >> diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h >> index f9aa4bd..d1996fb 100644 >> --- a/include/hw/acpi/acpi-defs.h >> +++ b/include/hw/acpi/acpi-defs.h >> @@ -224,6 +224,25 @@ typedef struct AcpiMultipleApicTable AcpiMultipleApicTable; >> #define ACPI_APIC_RESERVED 16 /* 16 and greater are reserved */ >> >> /* >> + * Values for Hardware Error Notification Type field >> + */ >> +enum AcpiHestNotifyType { >> + ACPI_HEST_NOTIFY_POLLED = 0, >> + ACPI_HEST_NOTIFY_EXTERNAL = 1, >> + ACPI_HEST_NOTIFY_LOCAL = 2, >> + ACPI_HEST_NOTIFY_SCI = 3, >> + ACPI_HEST_NOTIFY_NMI = 4, >> + ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ >> + ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ >> + ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0: 18.3.2.7, Table 18-332 */ >> + ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ >> + ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ >> + ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ >> + ACPI_HEST_NOTIFY_SDEI = 11, /* ACPI 6.2: 18.3.2.9, Table 18-383 */ >> + ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ >> +}; >> + > > If there's a single user, the best thing to do > is just to open-code with a comment that matches > spec names. It's hard to find stuff like ACPI_HEST_NOTIFY_GSIV > in a spec. ok, I will do it, thanks > >> +/* >> * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) >> */ >> #define ACPI_SUB_HEADER_DEF /* Common ACPI sub-structure header */\ >> @@ -400,6 +419,39 @@ struct AcpiSystemResourceAffinityTable { >> } QEMU_PACKED; >> typedef struct AcpiSystemResourceAffinityTable AcpiSystemResourceAffinityTable; >> >> +/* >> + * Generic Error Status Block >> + */ >> +struct AcpiGenericErrorStatus { >> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ >> + uint32_t block_status; >> + uint32_t raw_data_offset; >> + uint32_t raw_data_length; >> + uint32_t data_length; >> + uint32_t error_severity; >> +} QEMU_PACKED; >> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; >> + >> +/* >> + * Masks for block_status flags above >> + */ >> +#define ACPI_GEBS_UNCORRECTABLE 1 >> + >> +/* >> + * Values for error_severity field above >> + */ >> +enum AcpiGenericErrorSeverity { >> + ACPI_CPER_SEV_RECOVERABLE, >> + ACPI_CPER_SEV_FATAL, >> + ACPI_CPER_SEV_CORRECTED, >> + ACPI_CPER_SEV_NONE, >> +}; >> + >> +/* >> + * Generic Hardware Error Source version 2 >> + */ >> +#define ACPI_HEST_SOURCE_GENERIC_ERROR_V2 10 >> + >> #define ACPI_SRAT_PROCESSOR_APIC 0 >> #define ACPI_SRAT_MEMORY 1 >> #define ACPI_SRAT_PROCESSOR_x2APIC 2 >> -- >> 1.8.3.1 > . >
On Tue, 14 May 2019 04:18:15 -0700 Dongjiu Geng <gengdongjiu@huawei.com> wrote: > Add Generic Error Status Block structures and some macros > definitions, which is referred to the ACPI 4.0 or ACPI 6.2. The > HEST table generation and CPER record will use them. > > Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> > --- > include/hw/acpi/acpi-defs.h | 52 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h > index f9aa4bd..d1996fb 100644 > --- a/include/hw/acpi/acpi-defs.h > +++ b/include/hw/acpi/acpi-defs.h > @@ -224,6 +224,25 @@ typedef struct AcpiMultipleApicTable AcpiMultipleApicTable; > #define ACPI_APIC_RESERVED 16 /* 16 and greater are reserved */ > > /* > + * Values for Hardware Error Notification Type field > + */ > +enum AcpiHestNotifyType { > + ACPI_HEST_NOTIFY_POLLED = 0, > + ACPI_HEST_NOTIFY_EXTERNAL = 1, > + ACPI_HEST_NOTIFY_LOCAL = 2, > + ACPI_HEST_NOTIFY_SCI = 3, > + ACPI_HEST_NOTIFY_NMI = 4, > + ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ > + ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ > + ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0: 18.3.2.7, Table 18-332 */ > + ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ > + ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ > + ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ > + ACPI_HEST_NOTIFY_SDEI = 11, /* ACPI 6.2: 18.3.2.9, Table 18-383 */ > + ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ > +}; > + > +/* > * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) > */ > #define ACPI_SUB_HEADER_DEF /* Common ACPI sub-structure header */\ > @@ -400,6 +419,39 @@ struct AcpiSystemResourceAffinityTable { > } QEMU_PACKED; > typedef struct AcpiSystemResourceAffinityTable AcpiSystemResourceAffinityTable; > > +/* > + * Generic Error Status Block > + */ > +struct AcpiGenericErrorStatus { > + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ > + uint32_t block_status; > + uint32_t raw_data_offset; > + uint32_t raw_data_length; > + uint32_t data_length; > + uint32_t error_severity; > +} QEMU_PACKED; > +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; there shouldn't be packed structures, is it a leftover from previous version? > + > +/* > + * Masks for block_status flags above > + */ > +#define ACPI_GEBS_UNCORRECTABLE 1 > + > +/* > + * Values for error_severity field above > + */ > +enum AcpiGenericErrorSeverity { > + ACPI_CPER_SEV_RECOVERABLE, > + ACPI_CPER_SEV_FATAL, > + ACPI_CPER_SEV_CORRECTED, > + ACPI_CPER_SEV_NONE, > +}; > + > +/* > + * Generic Hardware Error Source version 2 > + */ > +#define ACPI_HEST_SOURCE_GENERIC_ERROR_V2 10 > + > #define ACPI_SRAT_PROCESSOR_APIC 0 > #define ACPI_SRAT_MEMORY 1 > #define ACPI_SRAT_PROCESSOR_x2APIC 2
Hi Igor, Thanks for your review. On 2019/6/20 20:10, Igor Mammedov wrote: >> + */ >> +struct AcpiGenericErrorStatus { >> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ >> + uint32_t block_status; >> + uint32_t raw_data_offset; >> + uint32_t raw_data_length; >> + uint32_t data_length; >> + uint32_t error_severity; >> +} QEMU_PACKED; >> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; > there shouldn't be packed structures, > is it a leftover from previous version? I remember some people suggest to add QEMU_PACKED before, anyway I will remove it in my next version patch. > >> + >> +/* >> + * Masks for block_status flags above >> + */ >> +#define ACPI_GEBS_UNCORRECTABLE 1 >> + >> +/*
On Thu, 20 Jun 2019 22:04:01 +0800 gengdongjiu <gengdongjiu@huawei.com> wrote: > Hi Igor, > Thanks for your review. > > On 2019/6/20 20:10, Igor Mammedov wrote: > >> + */ > >> +struct AcpiGenericErrorStatus { > >> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ > >> + uint32_t block_status; > >> + uint32_t raw_data_offset; > >> + uint32_t raw_data_length; > >> + uint32_t data_length; > >> + uint32_t error_severity; > >> +} QEMU_PACKED; > >> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; > > there shouldn't be packed structures, > > is it a leftover from previous version? > > I remember some people suggest to add QEMU_PACKED before, anyway I will remove it in my next version patch. Question is why it's there and where it is used? BTW: series doesn't apply to master anymore. Do you have a repo somewhere available for testing? > > > > >> + > >> +/* > >> + * Masks for block_status flags above > >> + */ > >> +#define ACPI_GEBS_UNCORRECTABLE 1 > >> + > >> +/* >
On 2019/6/20 23:09, Igor Mammedov wrote: > On Thu, 20 Jun 2019 22:04:01 +0800 > gengdongjiu <gengdongjiu@huawei.com> wrote: > >> Hi Igor, >> Thanks for your review. >> >> On 2019/6/20 20:10, Igor Mammedov wrote: >>>> + */ >>>> +struct AcpiGenericErrorStatus { >>>> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ >>>> + uint32_t block_status; >>>> + uint32_t raw_data_offset; >>>> + uint32_t raw_data_length; >>>> + uint32_t data_length; >>>> + uint32_t error_severity; >>>> +} QEMU_PACKED; >>>> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; >>> there shouldn't be packed structures, >>> is it a leftover from previous version? >> >> I remember some people suggest to add QEMU_PACKED before, anyway I will remove it in my next version patch. > > Question is why it's there and where it is used? sorry, it is my carelessness. it should be packed structures. I used this structures to get its actual total size and member offset in [PATCH v17 10/10]. If it is not packed structures, the total size and member offset may be not right. > > BTW: > series doesn't apply to master anymore. > Do you have a repo somewhere available for testing? Thanks, I appreciated that you can have a test. I still do not upload repo, you can reset to below commit[1] in master and apply this series. BTW: If test series, you should make an guest memory hardware error, let guest access the error address, then it will happen RAS error. I provide a software hard code method to test this series, you can refer to https://www.mail-archive.com/qemu-devel@nongnu.org/msg619771.html [1]: commit efb4f3b62c69383a7308d7b739a3193e7c0ccae8 Merge: 5f02262 e841257 Author: Peter Maydell <peter.maydell@linaro.org> Date: Fri May 10 14:49:36 2019 +0100 > >> >>> >>>> + >>>> +/* >>>> + * Masks for block_status flags above >>>> + */ >>>> +#define ACPI_GEBS_UNCORRECTABLE 1 >>>> + >>>> +/* >> > > . >
On Fri, 21 Jun 2019 01:17:48 +0800 gengdongjiu <gengdongjiu@huawei.com> wrote: > On 2019/6/20 23:09, Igor Mammedov wrote: > > On Thu, 20 Jun 2019 22:04:01 +0800 > > gengdongjiu <gengdongjiu@huawei.com> wrote: > > > >> Hi Igor, > >> Thanks for your review. > >> > >> On 2019/6/20 20:10, Igor Mammedov wrote: > >>>> + */ > >>>> +struct AcpiGenericErrorStatus { > >>>> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ > >>>> + uint32_t block_status; > >>>> + uint32_t raw_data_offset; > >>>> + uint32_t raw_data_length; > >>>> + uint32_t data_length; > >>>> + uint32_t error_severity; > >>>> +} QEMU_PACKED; > >>>> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; > >>> there shouldn't be packed structures, > >>> is it a leftover from previous version? > >> > >> I remember some people suggest to add QEMU_PACKED before, anyway I will remove it in my next version patch. > > > > Question is why it's there and where it is used? > sorry, it is my carelessness. it should be packed structures. > > I used this structures to get its actual total size and member offset in [PATCH v17 10/10]. > If it is not packed structures, the total size and member offset may be not right. I'd suggest to drop these typedefs and use a macro with size for that purpose, Also it might be good to make it local to the file that would use it. > > > > BTW: > > series doesn't apply to master anymore. > > Do you have a repo somewhere available for testing? > > Thanks, I appreciated that you can have a test. > > I still do not upload repo, you can reset to below commit[1] in master and apply this series. > > BTW: > If test series, you should make an guest memory hardware error, let guest access the error address, then it will happen RAS error. > I provide a software hard code method to test this series, you can refer to https://www.mail-archive.com/qemu-devel@nongnu.org/msg619771.html > > > [1]: > commit efb4f3b62c69383a7308d7b739a3193e7c0ccae8 > Merge: 5f02262 e841257 > Author: Peter Maydell <peter.maydell@linaro.org> > Date: Fri May 10 14:49:36 2019 +0100 > > > > > > >> > >>> > >>>> + > >>>> +/* > >>>> + * Masks for block_status flags above > >>>> + */ > >>>> +#define ACPI_GEBS_UNCORRECTABLE 1 > >>>> + > >>>> +/* > >> > > > > . > > >
On 2019/6/24 19:16, Igor Mammedov wrote: >>>> On 2019/6/20 20:10, Igor Mammedov wrote: >>>>>> + */ >>>>>> +struct AcpiGenericErrorStatus { >>>>>> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ >>>>>> + uint32_t block_status; >>>>>> + uint32_t raw_data_offset; >>>>>> + uint32_t raw_data_length; >>>>>> + uint32_t data_length; >>>>>> + uint32_t error_severity; >>>>>> +} QEMU_PACKED; >>>>>> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; >>>>> there shouldn't be packed structures, >>>>> is it a leftover from previous version? >>>> I remember some people suggest to add QEMU_PACKED before, anyway I will remove it in my next version patch. >>> Question is why it's there and where it is used? >> sorry, it is my carelessness. it should be packed structures. >> >> I used this structures to get its actual total size and member offset in [PATCH v17 10/10]. >> If it is not packed structures, the total size and member offset may be not right. > I'd suggest to drop these typedefs and use a macro with size for that purpose, > Also it might be good to make it local to the file that would use it. so you mean we also use macro for the member offset in the structures? such as the offset of data_length, may be there is many hardcode. > >>> BTW: >>> series doesn't apply to master anymore.
On Tue, 25 Jun 2019 17:56:00 +0800 gengdongjiu <gengdongjiu@huawei.com> wrote: > On 2019/6/24 19:16, Igor Mammedov wrote: > >>>> On 2019/6/20 20:10, Igor Mammedov wrote: > >>>>>> + */ > >>>>>> +struct AcpiGenericErrorStatus { > >>>>>> + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ > >>>>>> + uint32_t block_status; > >>>>>> + uint32_t raw_data_offset; > >>>>>> + uint32_t raw_data_length; > >>>>>> + uint32_t data_length; > >>>>>> + uint32_t error_severity; > >>>>>> +} QEMU_PACKED; > >>>>>> +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; > >>>>> there shouldn't be packed structures, > >>>>> is it a leftover from previous version? > >>>> I remember some people suggest to add QEMU_PACKED before, anyway I will remove it in my next version patch. > >>> Question is why it's there and where it is used? > >> sorry, it is my carelessness. it should be packed structures. > >> > >> I used this structures to get its actual total size and member offset in [PATCH v17 10/10]. > >> If it is not packed structures, the total size and member offset may be not right. > > I'd suggest to drop these typedefs and use a macro with size for that purpose, > > Also it might be good to make it local to the file that would use it. > so you mean we also use macro for the member offset in the structures? such as the offset of data_length, yes, but I hope there won't be need for data_length offset at all. > may be there is many hardcode. > > > > >>> BTW: > >>> series doesn't apply to master anymore. >
diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h index f9aa4bd..d1996fb 100644 --- a/include/hw/acpi/acpi-defs.h +++ b/include/hw/acpi/acpi-defs.h @@ -224,6 +224,25 @@ typedef struct AcpiMultipleApicTable AcpiMultipleApicTable; #define ACPI_APIC_RESERVED 16 /* 16 and greater are reserved */ /* + * Values for Hardware Error Notification Type field + */ +enum AcpiHestNotifyType { + ACPI_HEST_NOTIFY_POLLED = 0, + ACPI_HEST_NOTIFY_EXTERNAL = 1, + ACPI_HEST_NOTIFY_LOCAL = 2, + ACPI_HEST_NOTIFY_SCI = 3, + ACPI_HEST_NOTIFY_NMI = 4, + ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ + ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0: 18.3.2.7, Table 18-290 */ + ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0: 18.3.2.7, Table 18-332 */ + ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ + ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ + ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1: 18.3.2.9, Table 18-345 */ + ACPI_HEST_NOTIFY_SDEI = 11, /* ACPI 6.2: 18.3.2.9, Table 18-383 */ + ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ +}; + +/* * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) */ #define ACPI_SUB_HEADER_DEF /* Common ACPI sub-structure header */\ @@ -400,6 +419,39 @@ struct AcpiSystemResourceAffinityTable { } QEMU_PACKED; typedef struct AcpiSystemResourceAffinityTable AcpiSystemResourceAffinityTable; +/* + * Generic Error Status Block + */ +struct AcpiGenericErrorStatus { + /* It is a bitmask composed of ACPI_GEBS_xxx macros */ + uint32_t block_status; + uint32_t raw_data_offset; + uint32_t raw_data_length; + uint32_t data_length; + uint32_t error_severity; +} QEMU_PACKED; +typedef struct AcpiGenericErrorStatus AcpiGenericErrorStatus; + +/* + * Masks for block_status flags above + */ +#define ACPI_GEBS_UNCORRECTABLE 1 + +/* + * Values for error_severity field above + */ +enum AcpiGenericErrorSeverity { + ACPI_CPER_SEV_RECOVERABLE, + ACPI_CPER_SEV_FATAL, + ACPI_CPER_SEV_CORRECTED, + ACPI_CPER_SEV_NONE, +}; + +/* + * Generic Hardware Error Source version 2 + */ +#define ACPI_HEST_SOURCE_GENERIC_ERROR_V2 10 + #define ACPI_SRAT_PROCESSOR_APIC 0 #define ACPI_SRAT_MEMORY 1 #define ACPI_SRAT_PROCESSOR_x2APIC 2
Add Generic Error Status Block structures and some macros definitions, which is referred to the ACPI 4.0 or ACPI 6.2. The HEST table generation and CPER record will use them. Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> --- include/hw/acpi/acpi-defs.h | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+)