path: root/arch/powerpc/platforms/powernv/pci.h
diff options
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-05-10 16:59:18 +1000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-05-10 16:59:18 +1000
commit73ed148aea9dc0508be7e30e7a447f55c1b2f378 (patch)
tree2571b5d1851a9f2bef62e92def3608f738748251 /arch/powerpc/platforms/powernv/pci.h
parent1de1455f33709a8afd8d41d26d09739a1148105b (diff)
powerpc/powernv: Improve kexec reliability
We add a machine_shutdown hook that frees the OPAL interrupts (so they get masked at the source and don't fire while kexec'ing) and which triggers an IODA reset on all the PCIe host bridges which will have the effect of blocking all DMAs and subsequent PCIs interrupts. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv/pci.h')
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h
index 48dc4bb856a..25d76c4df50 100644
--- a/arch/powerpc/platforms/powernv/pci.h
+++ b/arch/powerpc/platforms/powernv/pci.h
@@ -86,6 +86,7 @@ struct pnv_phb {
void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev);
void (*fixup_phb)(struct pci_controller *hose);
u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn);
+ void (*shutdown)(struct pnv_phb *phb);
union {
struct {
@@ -158,4 +159,5 @@ extern void pnv_pci_init_ioda_hub(struct device_node *np);
extern void pnv_pci_init_ioda2_phb(struct device_node *np);
extern void pnv_pci_ioda_tce_invalidate(struct iommu_table *tbl,
u64 *startp, u64 *endp);
#endif /* __POWERNV_PCI_H */