Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1138b7e2 authored by Fenghua Yu's avatar Fenghua Yu Committed by Tony Luck
Browse files

[IA64] Itanium MC Error Injection Tool: pal_mc_error_inject() interface



This patch implements pal_mc_error_inject() interface in kernel. Both physical
mode and virtual mode are supported.

Signed-off-by: default avatarFenghua Yu <fenghua.yu@intel.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 539d517a
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -89,6 +89,8 @@
#define PAL_GET_PSTATE_TYPE_AVGNORESET	2
#define PAL_GET_PSTATE_TYPE_INSTANT	3

#define PAL_MC_ERROR_INJECT	276	/* Injects processor error or returns injection capabilities */

#ifndef __ASSEMBLY__

#include <linux/types.h>
@@ -1234,6 +1236,37 @@ ia64_pal_mc_error_info (u64 info_index, u64 type_index, u64 *size, u64 *error_in
	return iprv.status;
}

/* Injects the requested processor error or returns info on
 * supported injection capabilities for current processor implementation
 */
static inline s64
ia64_pal_mc_error_inject_phys (u64 err_type_info, u64 err_struct_info,
			u64 err_data_buffer, u64 *capabilities, u64 *resources)
{
	struct ia64_pal_retval iprv;
	PAL_CALL_PHYS_STK(iprv, PAL_MC_ERROR_INJECT, err_type_info,
			  err_struct_info, err_data_buffer);
	if (capabilities)
		*capabilities= iprv.v0;
	if (resources)
		*resources= iprv.v1;
	return iprv.status;
}

static inline s64
ia64_pal_mc_error_inject_virt (u64 err_type_info, u64 err_struct_info,
			u64 err_data_buffer, u64 *capabilities, u64 *resources)
{
	struct ia64_pal_retval iprv;
	PAL_CALL_STK(iprv, PAL_MC_ERROR_INJECT, err_type_info,
			  err_struct_info, err_data_buffer);
	if (capabilities)
		*capabilities= iprv.v0;
	if (resources)
		*resources= iprv.v1;
	return iprv.status;
}

/* Inform PALE_CHECK whether a machine check is expected so that PALE_CHECK willnot
 * attempt to correct any expected machine checks.
 */