Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/sun4u/cpu/spitfire.c
          +++ new/usr/src/uts/sun4u/cpu/spitfire.c
↓ open down ↓ 4229 lines elided ↑ open up ↑
4230 4230  
4231 4231  /*ARGSUSED*/
4232 4232  static void
4233 4233  leaky_bucket_timeout(void *arg)
4234 4234  {
4235 4235          int i;
4236 4236          struct ce_info *psimm = mem_ce_simm;
4237 4237  
4238 4238          for (i = 0; i < mem_ce_simm_size; i++) {
4239 4239                  if (psimm[i].leaky_bucket_cnt > 0)
4240      -                        atomic_add_16(&psimm[i].leaky_bucket_cnt, -1);
     4240 +                        atomic_dec_16(&psimm[i].leaky_bucket_cnt);
4241 4241          }
4242 4242          add_leaky_bucket_timeout();
4243 4243  }
4244 4244  
4245 4245  static void
4246 4246  add_leaky_bucket_timeout(void)
4247 4247  {
4248 4248          long timeout_in_microsecs;
4249 4249  
4250 4250          /*
↓ open down ↓ 124 lines elided ↑ open up ↑
4375 4375                           */
4376 4376                          if (status & ECC_STICKY) {
4377 4377                                  psimm[i].sticky_total++;
4378 4378                                  cmn_err(CE_NOTE,
4379 4379                                      "[AFT0] Sticky Softerror encountered "
4380 4380                                      "on Memory Module %s\n", unum);
4381 4381                                  page_status = PR_MCE;
4382 4382                          } else if (status & ECC_PERSISTENT) {
4383 4383                                  int new_value;
4384 4384  
4385      -                                new_value = atomic_add_16_nv(
4386      -                                    &psimm[i].leaky_bucket_cnt, 1);
     4385 +                                new_value = atomic_inc_16_nv(
     4386 +                                    &psimm[i].leaky_bucket_cnt);
4387 4387                                  psimm[i].persistent_total++;
4388 4388                                  if (new_value > ecc_softerr_limit) {
4389 4389                                          cmn_err(CE_NOTE, "[AFT0] Most recent %d"
4390 4390                                              " soft errors from Memory Module"
4391 4391                                              " %s exceed threshold (N=%d,"
4392 4392                                              " T=%dh:%02dm) triggering page"
4393 4393                                              " retire", new_value, unum,
4394 4394                                              ecc_softerr_limit,
4395 4395                                              ecc_softerr_interval / 60,
4396 4396                                              ecc_softerr_interval % 60);
4397      -                                        atomic_add_16(
4398      -                                            &psimm[i].leaky_bucket_cnt, -1);
     4397 +                                        atomic_dec_16(
     4398 +                                            &psimm[i].leaky_bucket_cnt);
4399 4399                                          page_status = PR_MCE;
4400 4400                                  }
4401 4401                          } else { /* Intermittent */
4402 4402                                  psimm[i].intermittent_total++;
4403 4403                          }
4404 4404                          break;
4405 4405                  }
4406 4406          }
4407 4407  
4408 4408          if (i >= mem_ce_simm_size)
↓ open down ↓ 109 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX