pcie foo
diff --git a/arch/powerpc/include/asm/machdep.h b/arch/powerpc/include/asm/machdep.h
index 44e9051..e7bcccd 100644
--- a/arch/powerpc/include/asm/machdep.h
+++ b/arch/powerpc/include/asm/machdep.h
@@ -253,6 +253,8 @@
 	/* Reset the secondary bus of bridge */
 	void  (*pcibios_reset_secondary_bus)(struct pci_dev *dev);
 
+	int (*pcie_port_platform_notify)(struct pci_dev *port, int *mask);
+
 	/* Called to shutdown machine specific hardware not already controlled
 	 * by other drivers.
 	 */
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
index b854b57..1c4ee02 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -809,6 +809,17 @@
 	return PCI_PROBE_NORMAL;
 }
 
+static int pnv_pcie_port_platform_notify(struct pci_dev *port, int *mask)
+{
+	/*
+	 * Disable all PCIe port services capabilities for now, they
+	 * collide with platform specific EEH and HotPlug mechanisms
+	 */
+	*mask = 0;
+
+	return 0;
+}
+
 void __init pnv_pci_init(void)
 {
 	struct device_node *np;
@@ -856,6 +867,7 @@
 	ppc_md.tce_free_rm = pnv_tce_free_rm;
 	ppc_md.tce_get = pnv_tce_get;
 	ppc_md.pci_probe_mode = pnv_pci_probe_mode;
+	ppc_md.pcie_port_platform_notify = pnv_pcie_port_platform_notify;
 	set_pci_dma_ops(&dma_iommu_ops);
 
 	/* Configure MSIs */
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index cfe8a63..6633b2c 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -755,6 +755,17 @@
 	return PCI_PROBE_NORMAL;
 }
 
+static int pseries_pcie_port_platform_notify(struct pci_dev *port, int *mask)
+{
+	/*
+	 * Disable all PCIe port services capabilities for now, they
+	 * collide with platform specific EEH and HotPlug mechanisms
+	 */
+	*mask = 0;
+
+	return 0;
+}
+
 /**
  * pSeries_power_off - tell firmware about how to power off the system.
  *
@@ -796,6 +807,7 @@
 	.log_error		= pSeries_log_error,
 	.pcibios_fixup		= pSeries_final_fixup,
 	.pci_probe_mode		= pSeries_pci_probe_mode,
+	.pcie_port_platform_notify = pseries_pcie_port_platform_notify,
 	.restart		= rtas_restart,
 	.power_off		= pSeries_power_off,
 	.halt			= rtas_halt,
diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h
index d525548..0b1cf17 100644
--- a/drivers/pci/pcie/portdrv.h
+++ b/drivers/pci/pcie/portdrv.h
@@ -74,10 +74,20 @@
 	return pcie_port_acpi_setup(port, mask);
 }
 #else /* !CONFIG_ACPI */
+#ifdef CONFIG_PPC
+#include <asm/machdep.h>
+static inline int pcie_port_platform_notify(struct pci_dev *port, int *mask)
+{
+	if (ppc_md.pcie_port_platform_notify)	
+		return ppc_md.pcie_port_platform_notify(port, mask);
+	return 0;
+}
+#else
 static inline int pcie_port_platform_notify(struct pci_dev *port, int *mask)
 {
 	return 0;
 }
+#endif /* CONFIG_PPC */
 #endif /* !CONFIG_ACPI */
 
 #endif /* _PORTDRV_H_ */