162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Copyright (C) 2018 - Arm Ltd */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef __ARM64_KVM_RAS_H__
562306a36Sopenharmony_ci#define __ARM64_KVM_RAS_H__
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/acpi.h>
862306a36Sopenharmony_ci#include <linux/errno.h>
962306a36Sopenharmony_ci#include <linux/types.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <asm/acpi.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/*
1462306a36Sopenharmony_ci * Was this synchronous external abort a RAS notification?
1562306a36Sopenharmony_ci * Returns '0' for errors handled by some RAS subsystem, or -ENOENT.
1662306a36Sopenharmony_ci */
1762306a36Sopenharmony_cistatic inline int kvm_handle_guest_sea(phys_addr_t addr, u64 esr)
1862306a36Sopenharmony_ci{
1962306a36Sopenharmony_ci	/* apei_claim_sea(NULL) expects to mask interrupts itself */
2062306a36Sopenharmony_ci	lockdep_assert_irqs_enabled();
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	return apei_claim_sea(NULL);
2362306a36Sopenharmony_ci}
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#endif /* __ARM64_KVM_RAS_H__ */
26