Print this page
5285 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 ↓ 273 lines elided ↑ open up ↑
 274  274          int i;
 275  275  
 276  276          ASSERT((cpup->cpu_flags & CPU_READY) == 0);
 277  277  
 278  278          /*
 279  279           * Pause all working CPUs, which ensures that there's no CPU in
 280  280           * function xc_common().
 281  281           * This is used to work around a race condition window in xc_common()
 282  282           * between checking CPU_READY flag and increasing working item count.
 283  283           */
 284      -        pause_cpus(cpup);
      284 +        pause_cpus(cpup, NULL);
 285  285          start_cpus();
 286  286  
 287  287          for (i = 0; i < XC_FLUSH_MAX_WAITS; i++) {
 288  288                  if (cpup->cpu_m.xc_work_cnt == 0) {
 289  289                          break;
 290  290                  }
 291  291                  DELAY(1);
 292  292          }
 293  293          for (; i < XC_FLUSH_MAX_WAITS; i++) {
 294  294                  if (!BT_TEST(xc_priority_set, cpup->cpu_id)) {
↓ open down ↓ 414 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX