diff mbox series

[3/3] target/arm: Use acpi_ghes_present() to see if we report ACPI memory errors

Message ID 20210603171259.27962-4-peter.maydell@linaro.org
State Superseded
Headers show
Series hw/acpi, arm: Provide and use acpi_ghes_present() | expand

Commit Message

Peter Maydell June 3, 2021, 5:12 p.m. UTC
The virt_is_acpi_enabled() function is specific to the virt board, as
is the check for its 'ras' property.  Use the new acpi_ghes_present()
function to check whether we should report memory errors via
acpi_ghes_record_errors().

This avoids a link error if QEMU was built without support for the
virt board, and provides a mechanism that can be used by any future
board models that want to add ACPI memory error reporting support
(they only need to call acpi_ghes_add_fw_cfg()).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

---
 target/arm/kvm64.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

-- 
2.20.1

Comments

Richard Henderson June 3, 2021, 6:56 p.m. UTC | #1
On 6/3/21 10:12 AM, Peter Maydell wrote:
> The virt_is_acpi_enabled() function is specific to the virt board, as

> is the check for its 'ras' property.  Use the new acpi_ghes_present()

> function to check whether we should report memory errors via

> acpi_ghes_record_errors().

> 

> This avoids a link error if QEMU was built without support for the

> virt board, and provides a mechanism that can be used by any future

> board models that want to add ACPI memory error reporting support

> (they only need to call acpi_ghes_add_fw_cfg()).

> 

> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>

> ---

>   target/arm/kvm64.c | 6 +-----

>   1 file changed, 1 insertion(+), 5 deletions(-)


Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~
Dongjiu Geng June 13, 2021, 9:49 p.m. UTC | #2
On Fri, 4 Jun 2021 at 01:13, Peter Maydell <peter.maydell@linaro.org> wrote:
>

> The virt_is_acpi_enabled() function is specific to the virt board, as

> is the check for its 'ras' property.  Use the new acpi_ghes_present()

> function to check whether we should report memory errors via

> acpi_ghes_record_errors().

>

> This avoids a link error if QEMU was built without support for the

> virt board, and provides a mechanism that can be used by any future

> board models that want to add ACPI memory error reporting support

> (they only need to call acpi_ghes_add_fw_cfg()).

>

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

> ---

>  target/arm/kvm64.c | 6 +-----

>  1 file changed, 1 insertion(+), 5 deletions(-)

>

> diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c

> index 37ceadd9a9d..59982d470d3 100644

> --- a/target/arm/kvm64.c

> +++ b/target/arm/kvm64.c

> @@ -1410,14 +1410,10 @@ void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, void *addr)

>  {

>      ram_addr_t ram_addr;

>      hwaddr paddr;

> -    Object *obj = qdev_get_machine();

> -    VirtMachineState *vms = VIRT_MACHINE(obj);

> -    bool acpi_enabled = virt_is_acpi_enabled(vms);

>

>      assert(code == BUS_MCEERR_AR || code == BUS_MCEERR_AO);

>

> -    if (acpi_enabled && addr &&

> -            object_property_get_bool(obj, "ras", NULL)) {

> +    if (acpi_ghes_present() && addr) {

>          ram_addr = qemu_ram_addr_from_host(addr);

>          if (ram_addr != RAM_ADDR_INVALID &&

>              kvm_physical_memory_addr_from_host(c->kvm_state, addr, &paddr)) {

> --

> 2.20.1

>


Reviewed-by: Dongjiu Geng <gengdongjiu1@gmail.com>
diff mbox series

Patch

diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 37ceadd9a9d..59982d470d3 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -1410,14 +1410,10 @@  void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, void *addr)
 {
     ram_addr_t ram_addr;
     hwaddr paddr;
-    Object *obj = qdev_get_machine();
-    VirtMachineState *vms = VIRT_MACHINE(obj);
-    bool acpi_enabled = virt_is_acpi_enabled(vms);
 
     assert(code == BUS_MCEERR_AR || code == BUS_MCEERR_AO);
 
-    if (acpi_enabled && addr &&
-            object_property_get_bool(obj, "ras", NULL)) {
+    if (acpi_ghes_present() && addr) {
         ram_addr = qemu_ram_addr_from_host(addr);
         if (ram_addr != RAM_ADDR_INVALID &&
             kvm_physical_memory_addr_from_host(c->kvm_state, addr, &paddr)) {