PERFORCE change 132543 for review

John Birrell jb at FreeBSD.org
Fri Jan 4 20:40:46 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=132543

Change 132543 by jb at jb_freebsd1 on 2008/01/05 04:39:50

	Remove my home-grown completion spin thingies and use the magical
	qualities of smp_no_rendevous_barrier (which aren't at all obvious).
	
	I'll need to revise this later for arches that are only UP.

Affected files ...

.. //depot/projects/dtrace/src/sys/cddl/amd64/cyclic_machdep.c#9 edit
.. //depot/projects/dtrace/src/sys/cddl/kern/cyclic.c#9 edit
.. //depot/projects/dtrace/src/sys/compat/opensolaris/sys/cyclic_impl.h#3 edit

Differences ...

==== //depot/projects/dtrace/src/sys/cddl/amd64/cyclic_machdep.c#9 (text+ko) ====

@@ -125,5 +125,5 @@
 		(*func)(param);
 	else
 		smp_rendezvous_cpus((cpumask_t) (1 << c->cpuid), NULL,
-		    func, NULL, param);
+		    func, smp_no_rendevous_barrier, param);
 }

==== //depot/projects/dtrace/src/sys/cddl/kern/cyclic.c#9 (text+ko) ====

@@ -481,9 +481,6 @@
 	cyc_backend_t *be = cpu->cyp_backend;
 
 	be->cyb_enable(be->cyb_arg);
-
-	/* Ack to cross call */
-	argp->cyx_wait = 0;
 }
 
 static void
@@ -493,14 +490,9 @@
 	cyc_xcallarg_t arg;
 
 	arg.cyx_cpu = cpu;
-	arg.cyx_wait = 1;
 
 	/* Cross call to the target CPU */
 	be->cyb_xcall(be->cyb_arg, cpu->cyp_cpu, cyclic_enable_xcall, &arg);
-
-	/* Spin while waiting for the target CPU to ack the cross call */
-	while (arg.cyx_wait == 1)
-		/* spin */ ;
 }
 
 static void
@@ -511,9 +503,6 @@
 	cyc_backend_t *be = cpu->cyp_backend;
 
 	be->cyb_disable(be->cyb_arg);
-
-	/* Ack to cross call */
-	argp->cyx_wait = 0;
 }
 
 static void
@@ -523,14 +512,9 @@
 	cyc_xcallarg_t arg;
 
 	arg.cyx_cpu = cpu;
-	arg.cyx_wait = 1;
 
 	/* Cross call to the target CPU */
 	be->cyb_xcall(be->cyb_arg, cpu->cyp_cpu, cyclic_disable_xcall, &arg);
-
-	/* Spin while waiting for the target CPU to ack the cross call */
-	while (arg.cyx_wait == 1)
-		/* spin */ ;
 }
 
 static void
@@ -541,9 +525,6 @@
 	cyc_backend_t *be = cpu->cyp_backend;
 
 	be->cyb_reprogram(be->cyb_arg, argp->cyx_exp);
-
-	/* Ack to cross call */
-	argp->cyx_wait = 0;
 }
 
 static void
@@ -554,14 +535,9 @@
 
 	arg.cyx_cpu = cpu;
 	arg.cyx_exp = exp;
-	arg.cyx_wait = 1;
 
 	/* Cross call to the target CPU */
 	be->cyb_xcall(be->cyb_arg, cpu->cyp_cpu, cyclic_reprogram_xcall, &arg);
-
-	/* Spin while waiting for the target CPU to ack the cross call */
-	while (arg.cyx_wait == 1)
-		/* spin */ ;
 }
 
 /*

==== //depot/projects/dtrace/src/sys/compat/opensolaris/sys/cyclic_impl.h#3 (text+ko) ====

@@ -289,7 +289,6 @@
 typedef struct cyc_xcallarg {
 	cyc_cpu_t *cyx_cpu;
 	hrtime_t cyx_exp;
-	volatile int cyx_wait;
 } cyc_xcallarg_t;
 
 #define	CY_DEFAULT_PERCPU	1


More information about the p4-projects mailing list