diff mbox

[2/2] opal: Add message notifier unregister function

Message ID 20150211062712.3279.93469.stgit@localhost.localdomain (mailing list archive)
State Accepted
Headers show

Commit Message

Neelesh Gupta Feb. 11, 2015, 6:27 a.m. UTC
Provide an unregister interface for the opal message notifiers
to be called when not needed like during driver unload/remove.

Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com>
Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/opal.h       |    2 ++
 arch/powerpc/platforms/powernv/opal.c |    7 +++++++
 2 files changed, 9 insertions(+)

Comments

Anshuman Khandual Feb. 11, 2015, 10:57 a.m. UTC | #1
On 02/11/2015 11:57 AM, Neelesh Gupta wrote:
> Provide an unregister interface for the opal message notifiers
> to be called when not needed like during driver unload/remove.

Why only for unload/remove, you can also use it in cases where you need
to abort because of any other error soon after successful registration
for an OPAL message.
Neelesh Gupta Feb. 12, 2015, 11:10 a.m. UTC | #2
On 02/11/2015 04:27 PM, Anshuman Khandual wrote:
> On 02/11/2015 11:57 AM, Neelesh Gupta wrote:
>> Provide an unregister interface for the opal message notifiers
>> to be called when not needed like during driver unload/remove.
> Why only for unload/remove, you can also use it in cases where you need
> to abort because of any other error soon after successful registration
> for an OPAL message.

I didn't mean *only* driver unload/remove.. gave a simple use case of why do
we need this change.

Neelesh.

>
diff mbox

Patch

diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
index eb95b67..70eb45f 100644
--- a/arch/powerpc/include/asm/opal.h
+++ b/arch/powerpc/include/asm/opal.h
@@ -940,6 +940,8 @@  extern int opal_notifier_unregister(struct notifier_block *nb);
 
 extern int opal_message_notifier_register(enum OpalMessageType msg_type,
 						struct notifier_block *nb);
+extern int opal_message_notifier_unregister(enum OpalMessageType msg_type,
+					    struct notifier_block *nb);
 extern void opal_notifier_enable(void);
 extern void opal_notifier_disable(void);
 extern void opal_notifier_update_evt(uint64_t evt_mask, uint64_t evt_val);
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 2651e22..6c108ce 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -315,6 +315,13 @@  int opal_message_notifier_register(enum OpalMessageType msg_type,
 				&opal_msg_notifier_head[msg_type], nb);
 }
 
+int opal_message_notifier_unregister(enum OpalMessageType msg_type,
+				     struct notifier_block *nb)
+{
+	return atomic_notifier_chain_unregister(
+			&opal_msg_notifier_head[msg_type], nb);
+}
+
 static void opal_message_do_notify(uint32_t msg_type, void *msg)
 {
 	/* notify subscribers */