[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [Qemu-devel] [PATCH v6 0/3] Generate APEI GHES table and dyna
From: |
Programmingkid |
Subject: |
[Qemu-arm] [Qemu-devel] [PATCH v6 0/3] Generate APEI GHES table and dynamically record CPER |
Date: |
Fri, 4 Aug 2017 10:35:00 -0400 |
> On Aug 4, 2017, at 1:22 AM, address@hidden wrote:
>
> Date: Fri, 4 Aug 2017 12:37:52 +0800
> From: Dongjiu Geng <address@hidden>
> To: <address@hidden>, <address@hidden>, <address@hidden>,
> <address@hidden>, <address@hidden>,
> <address@hidden>, <address@hidden>
> Cc: <address@hidden>, <address@hidden>,
> <address@hidden>
> Subject: [Qemu-devel] [PATCH v6 0/3] Generate APEI GHES table and
> dynamically record CPER
> Message-ID: <address@hidden>
> Content-Type: text/plain
>
> In the armv8 platform, the mainly hardware error source are ARMv8
> SEA/SEI/GSIV. For the ARMv8 SEA/SEI, the KVM or host kernel will signal SIGBUS
> or use other interface to notify user space, such as Qemu. After Qemu gets
> the notification, it will record the CPER and inject the SEA/SEI to KVM. this
> series of patches will generate APEI table when guest OS boot up, and
> dynamically
> record CPER for the guest OS about the generic hardware errors, currently the
> userspace only handle the memory section hardware errors. Before Qemu record
> the
> CPER, it needs to check the ACK value written by the guest OS to avoid
> read-write
> race condition.
>
> Below is the APEI/GHESV2/CPER table layout, the max number of error soure is
> 11,
> which is classified by notification type, now only enable the SEA/SEI
> notification type
> error source.
>
> etc/acpi/tables etc/hardware_errors
> ====================
> ==========================================
> +------------------+
> +----------------------------+ | address |
> +--------------+
> | HEST + | registers | |
> Error Status |
> + +--------------------------+ | +----------------+ |
> Data Block 0 |
> | | GHES0 | +--------->| |status_address0 |------------->|
> +------------+
> +--------------------------+ | | +----------------+ | |
> CPER |
> | | ................. | | +------->| |status_address1 |----------+ |
> | CPER |
> | | error_status_address | | | | +----------------+ | |
> | .... |
> | | ................. | | | | ............. | | |
> | CPER |
> | | error_status_address-----+-+ | +------------------+ | |
> +-+------------+
> | | ................. | | +----->| |status_address10|--------+ | |
> Error Status |
> | | read_ack_register--------+-+ | | | +----------------+ | | |
> Data Block 1 |
> | | read_ack_preserve | +-+-+----->| |ack_address0 |--+ | +-->|
> +------------+
> | | read_ack_write | | | | +----------------+ | | |
> | CPER |
> + +--------------------------+ | | +--->| |ack_address1 |--+-+ | |
> | CPER |
> | | GHES1 | | | | | +----------------+ | | | |
> | .... |
> + +--------------------------+ | | | | | ............. | | | | |
> | CPER |
> | | ................. | | | | | +----------------+ | | |
> +-+------------+
> | | error_status_address-----+---+ | | +->| |ack_address10 |--+-+-+ | |
> |.......... |
> | | ................. | | | | | +----------------+ | | | | |
> +------------+
> | | read_ack_register--------+-----+-+ | | | ack0 |<-+ | | | |
> Error Status |
> | | read_ack_preserve | | | | +----------------+ | | | |
> Data Block 10|
> | | read_ack_write | | | | | ack1 |<---+ | +---->|
> +------------+
> + +--------------------------+ | | | +----------------+ | |
> | CPER |
> | | ............... | | | | | .... | | |
> | CPER |
> + +--------------------------+ | | | +--------------+ | | |
> | .... |
> | | GHES10 | | | | | ack10 |<---- + |
> | CPER |
> + +--------------------------+ | | | +----------------+
> +-+------------+
> | | ................. | | |
> | | error_status_address-----+-----+ |
> | | ................. | |
> | | read_ack_register--------+---------+
> | | read_ack_preserve |
> | | read_ack_write |
> + +--------------------------+
Excellent job with the ASCII drawing.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-arm] [Qemu-devel] [PATCH v6 0/3] Generate APEI GHES table and dynamically record CPER,
Programmingkid <=