Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F131678691
D40211.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D40211.id.diff
View Options
diff --git a/sys/arm/arm/mp_machdep.c b/sys/arm/arm/mp_machdep.c
--- a/sys/arm/arm/mp_machdep.c
+++ b/sys/arm/arm/mp_machdep.c
@@ -223,22 +223,24 @@
/* NOTREACHED */
}
-static void
+static int
ipi_rendezvous(void *dummy __unused)
{
CTR0(KTR_SMP, "IPI_RENDEZVOUS");
smp_rendezvous_action();
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_ast(void *dummy __unused)
{
CTR0(KTR_SMP, "IPI_AST");
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_stop(void *dummy __unused)
{
u_int cpu;
@@ -277,22 +279,25 @@
dbg_resume_dbreg();
#endif
CTR0(KTR_SMP, "IPI_STOP (restart)");
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_preempt(void *arg)
{
CTR1(KTR_SMP, "%s: IPI_PREEMPT", __func__);
sched_preempt(curthread);
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_hardclock(void *arg)
{
CTR1(KTR_SMP, "%s: IPI_HARDCLOCK", __func__);
hardclockintr();
+ return (FILTER_HANDLED);
}
static void
diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c
--- a/sys/arm64/arm64/mp_machdep.c
+++ b/sys/arm64/arm64/mp_machdep.c
@@ -99,11 +99,11 @@
};
#endif
-static void ipi_ast(void *);
-static void ipi_hardclock(void *);
-static void ipi_preempt(void *);
-static void ipi_rendezvous(void *);
-static void ipi_stop(void *);
+static int ipi_ast(void *);
+static int ipi_hardclock(void *);
+static int ipi_preempt(void *);
+static int ipi_rendezvous(void *);
+static int ipi_stop(void *);
struct pcb stoppcbs[MAXCPU];
@@ -304,37 +304,42 @@
SYSINIT(smp_after_idle_runnable, SI_SUB_SMP, SI_ORDER_ANY,
smp_after_idle_runnable, NULL);
-static void
+static int
ipi_ast(void *dummy __unused)
{
CTR0(KTR_SMP, "IPI_AST");
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_hardclock(void *dummy __unused)
{
CTR1(KTR_SMP, "%s: IPI_HARDCLOCK", __func__);
hardclockintr();
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_preempt(void *dummy __unused)
{
+
CTR1(KTR_SMP, "%s: IPI_PREEMPT", __func__);
sched_preempt(curthread);
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_rendezvous(void *dummy __unused)
{
CTR0(KTR_SMP, "IPI_RENDEZVOUS");
smp_rendezvous_action();
+ return (FILTER_HANDLED);
}
-static void
+static int
ipi_stop(void *dummy __unused)
{
u_int cpu;
@@ -358,6 +363,7 @@
CPU_CLR_ATOMIC(cpu, &started_cpus);
CPU_CLR_ATOMIC(cpu, &stopped_cpus);
CTR0(KTR_SMP, "IPI_STOP (restart)");
+ return (FILTER_HANDLED);
}
struct cpu_group *
diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c
--- a/sys/kern/subr_intr.c
+++ b/sys/kern/subr_intr.c
@@ -1770,7 +1770,7 @@
PIC_IPI_SEND(intr_irq_root_dev, ii->ii_isrc, cpus, ipi);
}
-void
+int
intr_ipi_dispatch(u_int ipi)
{
struct intr_ipi *ii;
@@ -1781,7 +1781,7 @@
intr_ipi_increment_count(ii->ii_count, PCPU_GET(cpuid));
- ii->ii_handler(ii->ii_handler_arg);
+ return (ii->ii_handler(ii->ii_handler_arg) != FILTER_HANDLED);
}
/*
diff --git a/sys/sys/intr.h b/sys/sys/intr.h
--- a/sys/sys/intr.h
+++ b/sys/sys/intr.h
@@ -159,12 +159,12 @@
/* Intr interface for IPIs. */
#ifdef SMP
-typedef void intr_ipi_handler_t(void *);
+typedef driver_filter_t intr_ipi_handler_t;
void intr_ipi_setup(u_int ipi, const char *name, intr_ipi_handler_t *hand,
void *arg);
void intr_ipi_send(cpuset_t cpus, u_int ipi);
-void intr_ipi_dispatch(u_int ipi);
+int intr_ipi_dispatch(u_int ipi);
#endif
#endif /* _SYS_INTR_H */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Oct 11, 7:05 AM (10 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23567172
Default Alt Text
D40211.id.diff (3 KB)
Attached To
Mode
D40211: intrng: adjust IPI interrupts to match driver_filter_t
Attached
Detach File
Event Timeline
Log In to Comment