3581
3582 if (sd->balance_interval < sd->max_interval)
3583 sd->balance_interval *= 2;
3584 }
3585
3586 if (!ld_moved && !sd_idle && sd->flags & SD_SHARE_CPUPOWER &&
3587 !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE))
3588 ld_moved = -1;
3589
3590 goto out;
3591
3592out_balanced:
3593 schedstat_inc(sd, lb_balanced[idle]);
3594
3595 sd->nr_balance_failed = 0;
3596
3597out_one_pinned:
3598
3599 if ((all_pinned && sd->balance_interval < MAX_PINNED_INTERVAL) ||
3600 (sd->balance_interval < sd->max_interval))
3601 sd->balance_interval *= 2;
3602
3603 if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER &&
3604 !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE))
3605 ld_moved = -1;
3606 else
3607 ld_moved = 0;
3608out:
3609 if (ld_moved)
3610 update_shares(sd);
3611 return ld_moved;
3612}
3613
3614
3615
3616
3617
3618
3619
3620
3621static int