aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGavin Shan <shangw@linux.vnet.ibm.com>2013-07-23 22:24:52 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-07-24 00:18:46 -0400
commitf2856491d24044de08da9e53cf7068841a8b4e1c (patch)
tree84833a3b2983ae67aa0e3038bf16f2e04c37e871 /arch
parent0ba178888b05a4efdaca7da528c170bd09f9687b (diff)
powerpc/eeh: Export functions for hotplug
Make some functions public in order to support hotplug on either specific PCI bus or PCI device in future. Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/include/asm/eeh.h9
-rw-r--r--arch/powerpc/kernel/eeh.c6
2 files changed, 12 insertions, 3 deletions
diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h
index 09a8743143f3..d9d35c27de25 100644
--- a/arch/powerpc/include/asm/eeh.h
+++ b/arch/powerpc/include/asm/eeh.h
@@ -209,9 +209,12 @@ unsigned long eeh_check_failure(const volatile void __iomem *token,
209 unsigned long val); 209 unsigned long val);
210int eeh_dev_check_failure(struct eeh_dev *edev); 210int eeh_dev_check_failure(struct eeh_dev *edev);
211void eeh_addr_cache_build(void); 211void eeh_addr_cache_build(void);
212void eeh_add_device_early(struct device_node *);
212void eeh_add_device_tree_early(struct device_node *); 213void eeh_add_device_tree_early(struct device_node *);
214void eeh_add_device_late(struct pci_dev *);
213void eeh_add_device_tree_late(struct pci_bus *); 215void eeh_add_device_tree_late(struct pci_bus *);
214void eeh_add_sysfs_files(struct pci_bus *); 216void eeh_add_sysfs_files(struct pci_bus *);
217void eeh_remove_device(struct pci_dev *, int);
215void eeh_remove_bus_device(struct pci_dev *, int); 218void eeh_remove_bus_device(struct pci_dev *, int);
216 219
217/** 220/**
@@ -252,12 +255,18 @@ static inline unsigned long eeh_check_failure(const volatile void __iomem *token
252 255
253static inline void eeh_addr_cache_build(void) { } 256static inline void eeh_addr_cache_build(void) { }
254 257
258static inline void eeh_add_device_early(struct device_node *dn) { }
259
255static inline void eeh_add_device_tree_early(struct device_node *dn) { } 260static inline void eeh_add_device_tree_early(struct device_node *dn) { }
256 261
262static inline void eeh_add_device_late(struct pci_dev *dev) { }
263
257static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } 264static inline void eeh_add_device_tree_late(struct pci_bus *bus) { }
258 265
259static inline void eeh_add_sysfs_files(struct pci_bus *bus) { } 266static inline void eeh_add_sysfs_files(struct pci_bus *bus) { }
260 267
268static inline void eeh_remove_device(struct pci_dev *dev, int purge_pe) { }
269
261static inline void eeh_remove_bus_device(struct pci_dev *dev, int purge_pe) { } 270static inline void eeh_remove_bus_device(struct pci_dev *dev, int purge_pe) { }
262 271
263#define EEH_POSSIBLE_ERROR(val, type) (0) 272#define EEH_POSSIBLE_ERROR(val, type) (0)
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index b5c425ea2974..582ad1ef46a8 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -836,7 +836,7 @@ core_initcall_sync(eeh_init);
836 * on the CEC architecture, type of the device, on earlier boot 836 * on the CEC architecture, type of the device, on earlier boot
837 * command-line arguments & etc. 837 * command-line arguments & etc.
838 */ 838 */
839static void eeh_add_device_early(struct device_node *dn) 839void eeh_add_device_early(struct device_node *dn)
840{ 840{
841 struct pci_controller *phb; 841 struct pci_controller *phb;
842 842
@@ -884,7 +884,7 @@ EXPORT_SYMBOL_GPL(eeh_add_device_tree_early);
884 * This routine must be used to complete EEH initialization for PCI 884 * This routine must be used to complete EEH initialization for PCI
885 * devices that were added after system boot (e.g. hotplug, dlpar). 885 * devices that were added after system boot (e.g. hotplug, dlpar).
886 */ 886 */
887static void eeh_add_device_late(struct pci_dev *dev) 887void eeh_add_device_late(struct pci_dev *dev)
888{ 888{
889 struct device_node *dn; 889 struct device_node *dn;
890 struct eeh_dev *edev; 890 struct eeh_dev *edev;
@@ -972,7 +972,7 @@ EXPORT_SYMBOL_GPL(eeh_add_sysfs_files);
972 * this device will no longer be detected after this call; thus, 972 * this device will no longer be detected after this call; thus,
973 * i/o errors affecting this slot may leave this device unusable. 973 * i/o errors affecting this slot may leave this device unusable.
974 */ 974 */
975static void eeh_remove_device(struct pci_dev *dev, int purge_pe) 975void eeh_remove_device(struct pci_dev *dev, int purge_pe)
976{ 976{
977 struct eeh_dev *edev; 977 struct eeh_dev *edev;
978 978