git: 38c35248fe3b - main - kern/intr: remove support for passing trap frame as argument

From: Warner Losh <imp_at_FreeBSD.org>
Date: Fri, 10 May 2024 21:36:53 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=38c35248fe3b740e107682b4a10bebe28992590f

commit 38c35248fe3b740e107682b4a10bebe28992590f
Author:     Elliott Mitchell <ehem+freebsd@m5p.com>
AuthorDate: 2021-10-08 21:43:26 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-05-10 21:33:24 +0000

    kern/intr: remove support for passing trap frame as argument
    
    While otherwise a handy potential approach, getting the trap frame via
    the argument isn't documented and isn't supposed to be used.  With all
    uses removed, now remove support to end the mixed calling conventions.
    
    Differential Revision: https://reviews.freebsd.org/D37688
    
    Reviewed by: imp, mhorne
    Pull Request: https://github.com/freebsd/freebsd-src/pull/1225
---
 sys/kern/kern_intr.c | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
index 9073e0d7af01..008f8d1242ca 100644
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -1346,8 +1346,8 @@ ithread_loop(void *arg)
  *
  * Input:
  * o ie:                        the event connected to this interrupt.
- * o frame:                     some archs (i.e. i386) pass a frame to some.
- *                              handlers as their main argument.
+ * o frame:                     the current trap frame.
+ *
  * Return value:
  * o 0:                         everything ok.
  * o EINVAL:                    stray interrupt.
@@ -1374,9 +1374,6 @@ intr_event_handle(struct intr_event *ie, struct trapframe *frame)
 
 	/*
 	 * Execute fast interrupt handlers directly.
-	 * To support clock handlers, if a handler registers
-	 * with a NULL argument, then we pass it a pointer to
-	 * a trapframe as its argument.
 	 */
 	td->td_intr_nesting_level++;
 	filter = false;
@@ -1405,12 +1402,8 @@ intr_event_handle(struct intr_event *ie, struct trapframe *frame)
 			continue;
 		}
 		CTR4(KTR_INTR, "%s: exec %p(%p) for %s", __func__,
-		    ih->ih_filter, ih->ih_argument == NULL ? frame :
-		    ih->ih_argument, ih->ih_name);
-		if (ih->ih_argument == NULL)
-			ret = ih->ih_filter(frame);
-		else
-			ret = ih->ih_filter(ih->ih_argument);
+		    ih->ih_filter, ih->ih_argument, ih->ih_name);
+		ret = ih->ih_filter(ih->ih_argument);
 #ifdef HWPMC_HOOKS
 		PMC_SOFT_CALL_TF( , , intr, all, frame);
 #endif