aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-03-27 22:36:31 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-04-06 20:33:16 -0400
commit798af00c4d75cdbed58bfe5c31e721bc0daedd9b (patch)
tree75c757be90e4c70bee41386c2b8a3fa4e312d63d
parent8f619b5429d9d852df09b85d9e41459859e04951 (diff)
powerpc/powernv: Add opal_notifier_unregister() and export to modules
opal_notifier_register() is missing a pending "unregister" variant and should be exposed to modules. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/include/asm/opal.h2
-rw-r--r--arch/powerpc/platforms/powernv/opal.c14
2 files changed, 16 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
index fe2aa0b48d2b..6fb5f90e6464 100644
--- a/arch/powerpc/include/asm/opal.h
+++ b/arch/powerpc/include/asm/opal.h
@@ -892,6 +892,8 @@ extern int early_init_dt_scan_opal(unsigned long node, const char *uname,
892 int depth, void *data); 892 int depth, void *data);
893 893
894extern int opal_notifier_register(struct notifier_block *nb); 894extern int opal_notifier_register(struct notifier_block *nb);
895extern int opal_notifier_unregister(struct notifier_block *nb);
896
895extern int opal_message_notifier_register(enum OpalMessageType msg_type, 897extern int opal_message_notifier_register(enum OpalMessageType msg_type,
896 struct notifier_block *nb); 898 struct notifier_block *nb);
897extern void opal_notifier_enable(void); 899extern void opal_notifier_enable(void);
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index e92f2f67640f..7835d5bb973f 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -180,6 +180,20 @@ int opal_notifier_register(struct notifier_block *nb)
180 atomic_notifier_chain_register(&opal_notifier_head, nb); 180 atomic_notifier_chain_register(&opal_notifier_head, nb);
181 return 0; 181 return 0;
182} 182}
183EXPORT_SYMBOL_GPL(opal_notifier_register);
184
185int opal_notifier_unregister(struct notifier_block *nb)
186{
187 if (!nb) {
188 pr_warning("%s: Invalid argument (%p)\n",
189 __func__, nb);
190 return -EINVAL;
191 }
192
193 atomic_notifier_chain_unregister(&opal_notifier_head, nb);
194 return 0;
195}
196EXPORT_SYMBOL_GPL(opal_notifier_unregister);
183 197
184static void opal_do_notifier(uint64_t events) 198static void opal_do_notifier(uint64_t events)
185{ 199{