diff options
author | Gavin Shan <shangw@linux.vnet.ibm.com> | 2014-02-12 02:24:55 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-02-16 19:19:39 -0500 |
commit | 2ec5a0adf60c23bb6b0a95d3b96a8c1ff1e1aa5a (patch) | |
tree | e9c64931321c473731c8780c86086ac201936589 | |
parent | 5b2e198e50f6ba57081586b853163ea1bb95f1a8 (diff) |
powerpc/eeh: Cleanup on eeh_subsystem_enabled
The patch cleans up variable eeh_subsystem_enabled so that we needn't
refer the variable directly from external. Instead, we will use
function eeh_enabled() and eeh_set_enable() to operate the variable.
Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/include/asm/eeh.h | 21 | ||||
-rw-r--r-- | arch/powerpc/kernel/eeh.c | 12 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/eeh-powernv.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh_pseries.c | 2 |
4 files changed, 27 insertions, 10 deletions
diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h index 9e39ceb1d19f..d4dd41fb951b 100644 --- a/arch/powerpc/include/asm/eeh.h +++ b/arch/powerpc/include/asm/eeh.h | |||
@@ -172,10 +172,20 @@ struct eeh_ops { | |||
172 | }; | 172 | }; |
173 | 173 | ||
174 | extern struct eeh_ops *eeh_ops; | 174 | extern struct eeh_ops *eeh_ops; |
175 | extern int eeh_subsystem_enabled; | 175 | extern bool eeh_subsystem_enabled; |
176 | extern raw_spinlock_t confirm_error_lock; | 176 | extern raw_spinlock_t confirm_error_lock; |
177 | extern int eeh_probe_mode; | 177 | extern int eeh_probe_mode; |
178 | 178 | ||
179 | static inline bool eeh_enabled(void) | ||
180 | { | ||
181 | return eeh_subsystem_enabled; | ||
182 | } | ||
183 | |||
184 | static inline void eeh_set_enable(bool mode) | ||
185 | { | ||
186 | eeh_subsystem_enabled = mode; | ||
187 | } | ||
188 | |||
179 | #define EEH_PROBE_MODE_DEV (1<<0) /* From PCI device */ | 189 | #define EEH_PROBE_MODE_DEV (1<<0) /* From PCI device */ |
180 | #define EEH_PROBE_MODE_DEVTREE (1<<1) /* From device tree */ | 190 | #define EEH_PROBE_MODE_DEVTREE (1<<1) /* From device tree */ |
181 | 191 | ||
@@ -246,7 +256,7 @@ void eeh_remove_device(struct pci_dev *); | |||
246 | * If this macro yields TRUE, the caller relays to eeh_check_failure() | 256 | * If this macro yields TRUE, the caller relays to eeh_check_failure() |
247 | * which does further tests out of line. | 257 | * which does further tests out of line. |
248 | */ | 258 | */ |
249 | #define EEH_POSSIBLE_ERROR(val, type) ((val) == (type)~0 && eeh_subsystem_enabled) | 259 | #define EEH_POSSIBLE_ERROR(val, type) ((val) == (type)~0 && eeh_enabled()) |
250 | 260 | ||
251 | /* | 261 | /* |
252 | * Reads from a device which has been isolated by EEH will return | 262 | * Reads from a device which has been isolated by EEH will return |
@@ -257,6 +267,13 @@ void eeh_remove_device(struct pci_dev *); | |||
257 | 267 | ||
258 | #else /* !CONFIG_EEH */ | 268 | #else /* !CONFIG_EEH */ |
259 | 269 | ||
270 | static inline bool eeh_enabled(void) | ||
271 | { | ||
272 | return false; | ||
273 | } | ||
274 | |||
275 | static inline void eeh_set_enable(bool mode) { } | ||
276 | |||
260 | static inline int eeh_init(void) | 277 | static inline int eeh_init(void) |
261 | { | 278 | { |
262 | return 0; | 279 | return 0; |
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c index 148db72a8c43..f22f7b6f6b01 100644 --- a/arch/powerpc/kernel/eeh.c +++ b/arch/powerpc/kernel/eeh.c | |||
@@ -89,7 +89,7 @@ | |||
89 | /* Platform dependent EEH operations */ | 89 | /* Platform dependent EEH operations */ |
90 | struct eeh_ops *eeh_ops = NULL; | 90 | struct eeh_ops *eeh_ops = NULL; |
91 | 91 | ||
92 | int eeh_subsystem_enabled; | 92 | bool eeh_subsystem_enabled = false; |
93 | EXPORT_SYMBOL(eeh_subsystem_enabled); | 93 | EXPORT_SYMBOL(eeh_subsystem_enabled); |
94 | 94 | ||
95 | /* | 95 | /* |
@@ -364,7 +364,7 @@ int eeh_dev_check_failure(struct eeh_dev *edev) | |||
364 | 364 | ||
365 | eeh_stats.total_mmio_ffs++; | 365 | eeh_stats.total_mmio_ffs++; |
366 | 366 | ||
367 | if (!eeh_subsystem_enabled) | 367 | if (!eeh_enabled()) |
368 | return 0; | 368 | return 0; |
369 | 369 | ||
370 | if (!edev) { | 370 | if (!edev) { |
@@ -822,7 +822,7 @@ int eeh_init(void) | |||
822 | return ret; | 822 | return ret; |
823 | } | 823 | } |
824 | 824 | ||
825 | if (eeh_subsystem_enabled) | 825 | if (eeh_enabled()) |
826 | pr_info("EEH: PCI Enhanced I/O Error Handling Enabled\n"); | 826 | pr_info("EEH: PCI Enhanced I/O Error Handling Enabled\n"); |
827 | else | 827 | else |
828 | pr_warning("EEH: No capable adapters found\n"); | 828 | pr_warning("EEH: No capable adapters found\n"); |
@@ -897,7 +897,7 @@ void eeh_add_device_late(struct pci_dev *dev) | |||
897 | struct device_node *dn; | 897 | struct device_node *dn; |
898 | struct eeh_dev *edev; | 898 | struct eeh_dev *edev; |
899 | 899 | ||
900 | if (!dev || !eeh_subsystem_enabled) | 900 | if (!dev || !eeh_enabled()) |
901 | return; | 901 | return; |
902 | 902 | ||
903 | pr_debug("EEH: Adding device %s\n", pci_name(dev)); | 903 | pr_debug("EEH: Adding device %s\n", pci_name(dev)); |
@@ -1005,7 +1005,7 @@ void eeh_remove_device(struct pci_dev *dev) | |||
1005 | { | 1005 | { |
1006 | struct eeh_dev *edev; | 1006 | struct eeh_dev *edev; |
1007 | 1007 | ||
1008 | if (!dev || !eeh_subsystem_enabled) | 1008 | if (!dev || !eeh_enabled()) |
1009 | return; | 1009 | return; |
1010 | edev = pci_dev_to_eeh_dev(dev); | 1010 | edev = pci_dev_to_eeh_dev(dev); |
1011 | 1011 | ||
@@ -1045,7 +1045,7 @@ void eeh_remove_device(struct pci_dev *dev) | |||
1045 | 1045 | ||
1046 | static int proc_eeh_show(struct seq_file *m, void *v) | 1046 | static int proc_eeh_show(struct seq_file *m, void *v) |
1047 | { | 1047 | { |
1048 | if (0 == eeh_subsystem_enabled) { | 1048 | if (!eeh_enabled()) { |
1049 | seq_printf(m, "EEH Subsystem is globally disabled\n"); | 1049 | seq_printf(m, "EEH Subsystem is globally disabled\n"); |
1050 | seq_printf(m, "eeh_total_mmio_ffs=%llu\n", eeh_stats.total_mmio_ffs); | 1050 | seq_printf(m, "eeh_total_mmio_ffs=%llu\n", eeh_stats.total_mmio_ffs); |
1051 | } else { | 1051 | } else { |
diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c index a79fddc5e74e..a59788e83b8b 100644 --- a/arch/powerpc/platforms/powernv/eeh-powernv.c +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c | |||
@@ -145,7 +145,7 @@ static int powernv_eeh_dev_probe(struct pci_dev *dev, void *flag) | |||
145 | * Enable EEH explicitly so that we will do EEH check | 145 | * Enable EEH explicitly so that we will do EEH check |
146 | * while accessing I/O stuff | 146 | * while accessing I/O stuff |
147 | */ | 147 | */ |
148 | eeh_subsystem_enabled = 1; | 148 | eeh_set_enable(true); |
149 | 149 | ||
150 | /* Save memory bars */ | 150 | /* Save memory bars */ |
151 | eeh_save_bars(edev); | 151 | eeh_save_bars(edev); |
diff --git a/arch/powerpc/platforms/pseries/eeh_pseries.c b/arch/powerpc/platforms/pseries/eeh_pseries.c index 9ef3cc8ebc11..8a8f0472d98f 100644 --- a/arch/powerpc/platforms/pseries/eeh_pseries.c +++ b/arch/powerpc/platforms/pseries/eeh_pseries.c | |||
@@ -265,7 +265,7 @@ static void *pseries_eeh_of_probe(struct device_node *dn, void *flag) | |||
265 | enable = 1; | 265 | enable = 1; |
266 | 266 | ||
267 | if (enable) { | 267 | if (enable) { |
268 | eeh_subsystem_enabled = 1; | 268 | eeh_set_enable(true); |
269 | eeh_add_to_parent_pe(edev); | 269 | eeh_add_to_parent_pe(edev); |
270 | 270 | ||
271 | pr_debug("%s: EEH enabled on %s PHB#%d-PE#%x, config addr#%x\n", | 271 | pr_debug("%s: EEH enabled on %s PHB#%d-PE#%x, config addr#%x\n", |