[PATCH RFC 0/5] Change ghes driver to use HEST-based offsets

Mauro Carvalho Chehab posted 5 patches 1 week ago
hw/acpi/generic_event_device.c |  30 +++++++++
hw/acpi/ghes.c                 | 108 ++++++++++++++++++++++++++++++---
hw/arm/virt-acpi-build.c       |  30 +++++++--
hw/core/machine.c              |   4 +-
include/hw/acpi/ghes.h         |   2 +
5 files changed, 159 insertions(+), 15 deletions(-)
[PATCH RFC 0/5] Change ghes driver to use HEST-based offsets
Posted by Mauro Carvalho Chehab 1 week ago
This RFC series was part of the previous PR to add generic error injection
support on GHES.

It contains only the changes of the math used to calculate offsets at
HEST table and hardware_error firmware file.

The first patch adds a new firmware file to store HEST address.
The second patch makes use of it.
The remaining ones add migration support.

PS.: I'm sending this as a RFC as using the proceudure defined at the
pseudo-migration of:

	https://www.linux-kvm.org/page/Migration

Didn't work. I tried to use two different QEMU versions to check a
real life case and also to use just one QEMU and trying to load a
virt-9.1 state on a virt-9.2 machine. 

For instance, trying to restore a virt-9.1 state on virt-9.2 gave me
this error:

	(qemu) qemu: Machine type received is 'virt-9.1' and local is 'virt-9.2'
	qemu: load of migration failed: Invalid argument

Yet, running virt-9.1 used the old math code (offsets from hardware_errors firmware
file) while running virt-9.2 executed the new math code using HEST address.

Mauro Carvalho Chehab (5):
  acpi/ghes: add a firmware file with HEST address
  acpi/ghes: Use HEST table offsets when preparing GHES records
  acpi/generic_event_device: Update GHES migration to cover hest addr
  acpi/generic_event_device: add logic to detect if HEST addr is
    available
  arm/virt-acpi-build: Properly handle virt-9.1

 hw/acpi/generic_event_device.c |  30 +++++++++
 hw/acpi/ghes.c                 | 108 ++++++++++++++++++++++++++++++---
 hw/arm/virt-acpi-build.c       |  30 +++++++--
 hw/core/machine.c              |   4 +-
 include/hw/acpi/ghes.h         |   2 +
 5 files changed, 159 insertions(+), 15 deletions(-)

-- 
2.46.1
Re: [PATCH RFC 0/5] Change ghes driver to use HEST-based offsets
Posted by Igor Mammedov 6 days, 21 hours ago
On Tue,  1 Oct 2024 13:42:45 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote:

> This RFC series was part of the previous PR to add generic error injection
> support on GHES.
> 
> It contains only the changes of the math used to calculate offsets at
> HEST table and hardware_error firmware file.
> 
> The first patch adds a new firmware file to store HEST address.
> The second patch makes use of it.
> The remaining ones add migration support.
> 
> PS.: I'm sending this as a RFC as using the proceudure defined at the
> pseudo-migration of:
> 
> 	https://www.linux-kvm.org/page/Migration
> 
> Didn't work. I tried to use two different QEMU versions to check a
> real life case and also to use just one QEMU and trying to load a
> virt-9.1 state on a virt-9.2 machine. 
> 
> For instance, trying to restore a virt-9.1 state on virt-9.2 gave me
> this error:
> 
> 	(qemu) qemu: Machine type received is 'virt-9.1' and local is 'virt-9.2'
> 	qemu: load of migration failed: Invalid argument

that's expected (idea is to keep machine type (virt-X) ABI stable so
it would work the same way on old and new QEMU)
migration is meant to move VM of the same machine type to a new/another QEMU instance.

i.e try migrate 

qemu-9.1 -M virt-9.1  => qemu-9.2 -M virt-9.1
and vice-versa
migration should succeed and memory error injection should still work
the old way in both instances (I don't recall anymore how to simulate SEA,
perhaps original author left a description how to do that somewhere on mail-list).

virt-9.2 is never meant to be 

> Yet, running virt-9.1 used the old math code (offsets from hardware_errors firmware
> file) while running virt-9.2 executed the new math code using HEST address.
> 
> Mauro Carvalho Chehab (5):
>   acpi/ghes: add a firmware file with HEST address
>   acpi/ghes: Use HEST table offsets when preparing GHES records
>   acpi/generic_event_device: Update GHES migration to cover hest addr
>   acpi/generic_event_device: add logic to detect if HEST addr is
>     available
>   arm/virt-acpi-build: Properly handle virt-9.1
> 
>  hw/acpi/generic_event_device.c |  30 +++++++++
>  hw/acpi/ghes.c                 | 108 ++++++++++++++++++++++++++++++---
>  hw/arm/virt-acpi-build.c       |  30 +++++++--
>  hw/core/machine.c              |   4 +-
>  include/hw/acpi/ghes.h         |   2 +
>  5 files changed, 159 insertions(+), 15 deletions(-)
>