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