Print this page
XXXX pass in cpu_pause_func via pause_cpus

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/i86pc/os/x_call.c
          +++ new/usr/src/uts/i86pc/os/x_call.c
↓ open down ↓ 271 lines elided ↑ open up ↑
 272  272          int i;
 273  273  
 274  274          ASSERT((cpup->cpu_flags & CPU_READY) == 0);
 275  275  
 276  276          /*
 277  277           * Pause all working CPUs, which ensures that there's no CPU in
 278  278           * function xc_common().
 279  279           * This is used to work around a race condition window in xc_common()
 280  280           * between checking CPU_READY flag and increasing working item count.
 281  281           */
 282      -        pause_cpus(cpup);
      282 +        pause_cpus(cpup, NULL);
 283  283          start_cpus();
 284  284  
 285  285          for (i = 0; i < XC_FLUSH_MAX_WAITS; i++) {
 286  286                  if (cpup->cpu_m.xc_work_cnt == 0) {
 287  287                          break;
 288  288                  }
 289  289                  DELAY(1);
 290  290          }
 291  291          for (; i < XC_FLUSH_MAX_WAITS; i++) {
 292  292                  if (!BT_TEST(xc_priority_set, cpup->cpu_id)) {
↓ open down ↓ 414 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX