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

Commit 8998897b authored by Gavin Shan's avatar Gavin Shan Committed by Benjamin Herrenschmidt
Browse files

powerpc/eeh: Debugfs for error injection



The patch creates debugfs entries (powerpc/PCIxxxx/err_injct) for
injecting EEH errors for testing purpose.

Signed-off-by: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 37c367f2
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
 */

#include <linux/bootmem.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/io.h>
@@ -64,6 +65,29 @@ static struct notifier_block ioda_eeh_nb = {
	.priority	= 0
};

#ifdef CONFIG_DEBUG_FS
static int ioda_eeh_dbgfs_set(void *data, u64 val)
{
	struct pci_controller *hose = data;
	struct pnv_phb *phb = hose->private_data;

	out_be64(phb->regs + 0xD10, val);
	return 0;
}

static int ioda_eeh_dbgfs_get(void *data, u64 *val)
{
	struct pci_controller *hose = data;
	struct pnv_phb *phb = hose->private_data;

	*val = in_be64(phb->regs + 0xD10);
	return 0;
}

DEFINE_SIMPLE_ATTRIBUTE(ioda_eeh_dbgfs_ops, ioda_eeh_dbgfs_get,
			ioda_eeh_dbgfs_set, "0x%llx\n");
#endif /* CONFIG_DEBUG_FS */

/**
 * ioda_eeh_post_init - Chip dependent post initialization
 * @hose: PCI controller
@@ -101,6 +125,13 @@ static int ioda_eeh_post_init(struct pci_controller *hose)
			}
		}

#ifdef CONFIG_DEBUG_FS
		if (phb->dbgfs)
			debugfs_create_file("err_injct", 0600,
					    phb->dbgfs, hose,
					    &ioda_eeh_dbgfs_ops);
#endif

		phb->eeh_enabled = 1;
	}