Commit 3e77adee authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Michael Ellerman

powerpc/eeh: Create PHB PEs after EEH is initialized

Otherwise we end up not yet having computed the right diag data size
on powernv where EEH initialization is delayed, thus causing memory
corruption later on when calling OPAL.

Fixes: 5cb1f8fd ("powerpc/powernv/pci: Dynamically allocate PHB diag data")
Cc: stable@vger.kernel.org # v4.13+
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: default avatarRussell Currey <ruscur@russell.cc>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 8afafa6f
...@@ -1019,6 +1019,10 @@ int eeh_init(void) ...@@ -1019,6 +1019,10 @@ int eeh_init(void)
} else if ((ret = eeh_ops->init())) } else if ((ret = eeh_ops->init()))
return ret; return ret;
/* Initialize PHB PEs */
list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
eeh_dev_phb_init_dynamic(hose);
/* Initialize EEH event */ /* Initialize EEH event */
ret = eeh_event_init(); ret = eeh_event_init();
if (ret) if (ret)
......
...@@ -78,21 +78,3 @@ void eeh_dev_phb_init_dynamic(struct pci_controller *phb) ...@@ -78,21 +78,3 @@ void eeh_dev_phb_init_dynamic(struct pci_controller *phb)
/* EEH PE for PHB */ /* EEH PE for PHB */
eeh_phb_pe_create(phb); eeh_phb_pe_create(phb);
} }
/**
* eeh_dev_phb_init - Create EEH devices for devices included in existing PHBs
*
* Scan all the existing PHBs and create EEH devices for their OF
* nodes and their children OF nodes
*/
static int __init eeh_dev_phb_init(void)
{
struct pci_controller *phb, *tmp;
list_for_each_entry_safe(phb, tmp, &hose_list, list_node)
eeh_dev_phb_init_dynamic(phb);
return 0;
}
core_initcall(eeh_dev_phb_init);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment