[PATCH v2 3/5] genirq: Export NMI APIs

From: Mayank Rungta

Date: Fri Aug 28 2026 - 21:02:08 EST


Currently, request_nmi(), free_nmi(), enable_nmi(), disable_nmi_nosync(),
and disable_nmi() are restricted to built-in kernel code because they are
not exported.

Export these symbols with EXPORT_SYMBOL_GPL so loadable kernel modules can
register and manage NMIs.

Assisted-by: Antigravity:gemini
Signed-off-by: Mayank Rungta <mrungta@xxxxxxxxxx>
---
kernel/irq/manage.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 40013aa94481..ded8cc33381c 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -766,6 +766,7 @@ void disable_nmi_nosync(unsigned int irq)
{
disable_irq_nosync(irq);
}
+EXPORT_SYMBOL_GPL(disable_nmi_nosync);

/**
* disable_nmi - disable an nmi and wait for any pending handlers
@@ -781,6 +782,7 @@ void disable_nmi(unsigned int irq)
{
disable_irq(irq);
}
+EXPORT_SYMBOL_GPL(disable_nmi);

void __enable_irq(struct irq_desc *desc)
{
@@ -848,6 +850,7 @@ void enable_nmi(unsigned int irq)
{
enable_irq(irq);
}
+EXPORT_SYMBOL_GPL(enable_nmi);

static int set_irq_wake_real(unsigned int irq, unsigned int on)
{
@@ -2110,6 +2113,7 @@ const void *free_nmi(unsigned int irq, void *dev_id)

return __cleanup_nmi(irq, desc);
}
+EXPORT_SYMBOL_GPL(free_nmi);

/**
* request_threaded_irq - allocate an interrupt line
@@ -2372,6 +2376,7 @@ int request_nmi(unsigned int irq, irq_handler_t handler,

return retval;
}
+EXPORT_SYMBOL_GPL(request_nmi);

void enable_percpu_irq(unsigned int irq, unsigned int type)
{

--
2.55.0.897.gb25b4bd76c-goog