]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
powerpc/eeh: I/O chip post initialization
authorGavin Shan <shangw@linux.vnet.ibm.com>
Thu, 20 Jun 2013 05:21:07 +0000 (13:21 +0800)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 20 Jun 2013 07:06:24 +0000 (17:06 +1000)
The post initialization (struct eeh_ops::post_init) is called after
the EEH probe is done. On the other hand, the EEH core post
initialization is designed to call platform and then I/O chip backend
on PowerNV platform.

The patch adds the backend for I/O chip to notify the platform
that the specific PHB is ready to supply EEH service.

Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/powernv/eeh-ioda.c

index f12e8887b1448f695adaefdac8201e98a65c92e9..7b272416b9ccd907db4c8a4fb39fc8565db72ae9 100644 (file)
 #include "powernv.h"
 #include "pci.h"
 
+/**
+ * ioda_eeh_post_init - Chip dependent post initialization
+ * @hose: PCI controller
+ *
+ * The function will be called after eeh PEs and devices
+ * have been built. That means the EEH is ready to supply
+ * service with I/O cache.
+ */
+static int ioda_eeh_post_init(struct pci_controller *hose)
+{
+       struct pnv_phb *phb = hose->private_data;
+
+       /* FIXME: Enable it for PHB3 later */
+       if (phb->type == PNV_PHB_IODA1)
+               phb->eeh_enabled = 1;
+
+       return 0;
+}
+
 struct pnv_eeh_ops ioda_eeh_ops = {
-       .post_init              = NULL,
+       .post_init              = ioda_eeh_post_init,
        .set_option             = NULL,
        .get_state              = NULL,
        .reset                  = NULL,