powerpc/eeh: Introduce eeh_pe_inject_err()
The patch defines PCI error types and functions in uapi/asm/eeh.h and exports function eeh_pe_inject_err(), which will be called by VFIO driver to inject the specified PCI error to the indicated PE for testing purpose. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
ed3e81ff20
commit
ec33d36e5a
@@ -1647,6 +1647,41 @@ int eeh_pe_configure(struct eeh_pe *pe)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(eeh_pe_configure);
|
||||
|
||||
/**
|
||||
* eeh_pe_inject_err - Injecting the specified PCI error to the indicated PE
|
||||
* @pe: the indicated PE
|
||||
* @type: error type
|
||||
* @function: error function
|
||||
* @addr: address
|
||||
* @mask: address mask
|
||||
*
|
||||
* The routine is called to inject the specified PCI error, which
|
||||
* is determined by @type and @function, to the indicated PE for
|
||||
* testing purpose.
|
||||
*/
|
||||
int eeh_pe_inject_err(struct eeh_pe *pe, int type, int func,
|
||||
unsigned long addr, unsigned long mask)
|
||||
{
|
||||
/* Invalid PE ? */
|
||||
if (!pe)
|
||||
return -ENODEV;
|
||||
|
||||
/* Unsupported operation ? */
|
||||
if (!eeh_ops || !eeh_ops->err_inject)
|
||||
return -ENOENT;
|
||||
|
||||
/* Check on PCI error type */
|
||||
if (type != EEH_ERR_TYPE_32 && type != EEH_ERR_TYPE_64)
|
||||
return -EINVAL;
|
||||
|
||||
/* Check on PCI error function */
|
||||
if (func < EEH_ERR_FUNC_MIN || func > EEH_ERR_FUNC_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
return eeh_ops->err_inject(pe, type, func, addr, mask);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(eeh_pe_inject_err);
|
||||
|
||||
static int proc_eeh_show(struct seq_file *m, void *v)
|
||||
{
|
||||
if (!eeh_enabled()) {
|
||||
|
Reference in New Issue
Block a user