RE: [PATCH] ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources

From: Ghannam, Yazen
Date: Tue Aug 22 2017 - 10:04:41 EST


+EDAC, Boris and Tony for RAS comments.

Any comments from ACPI folks?

Thanks,
Yazen

> -----Original Message-----
> From: Ghannam, Yazen
> Sent: Thursday, August 10, 2017 1:58 PM
> To: linux-acpi@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx; rjw@xxxxxxxxxxxxx; lenb@xxxxxxxxxx;
> Ghannam, Yazen <Yazen.Ghannam@xxxxxxx>
> Subject: [PATCH] ACPI, APEI, EINJ: Subtract any matching Register Region from
> Trigger resources
>
> From: Yazen Ghannam <yazen.ghannam@xxxxxxx>
>
> ACPI defines a number of instructions to use for triggering errors. However
> we are currently removing the address resources from the trigger resources
> for only the WRITE_REGISTER_VALUE instruction. This leads to a resource
> conflict for any other valid instruction.
>
> Remove the WRITE_REGISTER_VALUE instruction check to fix the resource
> conflict with other instructions.
>
> Fixes: b4e008dc53a3 ("ACPI, APEI, EINJ, Refine the fix of resource conflict")
> Signed-off-by: Yazen Ghannam <yazen.ghannam@xxxxxxx>
> ---
> drivers/acpi/apei/einj.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/acpi/apei/einj.c b/drivers/acpi/apei/einj.c
> index ec50c32ea3da..e0f201ea161d 100644
> --- a/drivers/acpi/apei/einj.c
> +++ b/drivers/acpi/apei/einj.c
> @@ -281,7 +281,6 @@ static struct acpi_generic_address
> *einj_get_trigger_parameter_region(
> ((char *)trigger_tab + sizeof(struct acpi_einj_trigger));
> for (i = 0; i < trigger_tab->entry_count; i++) {
> if (entry->action == ACPI_EINJ_TRIGGER_ERROR &&
> - entry->instruction == ACPI_EINJ_WRITE_REGISTER_VALUE &&
> entry->register_region.space_id ==
> ACPI_ADR_SPACE_SYSTEM_MEMORY &&
> (entry->register_region.address & param2) == (param1 &
> param2))
> --
> 2.7.4