diff options
| -rw-r--r-- | kernel/sched/core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 98d33c105252..33d030a133d2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
| @@ -7422,6 +7422,7 @@ static int sched_dl_global_constraints(void) | |||
| 7422 | u64 period = global_rt_period(); | 7422 | u64 period = global_rt_period(); |
| 7423 | u64 new_bw = to_ratio(period, runtime); | 7423 | u64 new_bw = to_ratio(period, runtime); |
| 7424 | int cpu, ret = 0; | 7424 | int cpu, ret = 0; |
| 7425 | unsigned long flags; | ||
| 7425 | 7426 | ||
| 7426 | /* | 7427 | /* |
| 7427 | * Here we want to check the bandwidth not being set to some | 7428 | * Here we want to check the bandwidth not being set to some |
| @@ -7435,10 +7436,10 @@ static int sched_dl_global_constraints(void) | |||
| 7435 | for_each_possible_cpu(cpu) { | 7436 | for_each_possible_cpu(cpu) { |
| 7436 | struct dl_bw *dl_b = dl_bw_of(cpu); | 7437 | struct dl_bw *dl_b = dl_bw_of(cpu); |
| 7437 | 7438 | ||
| 7438 | raw_spin_lock(&dl_b->lock); | 7439 | raw_spin_lock_irqsave(&dl_b->lock, flags); |
| 7439 | if (new_bw < dl_b->total_bw) | 7440 | if (new_bw < dl_b->total_bw) |
| 7440 | ret = -EBUSY; | 7441 | ret = -EBUSY; |
| 7441 | raw_spin_unlock(&dl_b->lock); | 7442 | raw_spin_unlock_irqrestore(&dl_b->lock, flags); |
| 7442 | 7443 | ||
| 7443 | if (ret) | 7444 | if (ret) |
| 7444 | break; | 7445 | break; |
| @@ -7451,6 +7452,7 @@ static void sched_dl_do_global(void) | |||
| 7451 | { | 7452 | { |
| 7452 | u64 new_bw = -1; | 7453 | u64 new_bw = -1; |
| 7453 | int cpu; | 7454 | int cpu; |
| 7455 | unsigned long flags; | ||
| 7454 | 7456 | ||
| 7455 | def_dl_bandwidth.dl_period = global_rt_period(); | 7457 | def_dl_bandwidth.dl_period = global_rt_period(); |
| 7456 | def_dl_bandwidth.dl_runtime = global_rt_runtime(); | 7458 | def_dl_bandwidth.dl_runtime = global_rt_runtime(); |
| @@ -7464,9 +7466,9 @@ static void sched_dl_do_global(void) | |||
| 7464 | for_each_possible_cpu(cpu) { | 7466 | for_each_possible_cpu(cpu) { |
| 7465 | struct dl_bw *dl_b = dl_bw_of(cpu); | 7467 | struct dl_bw *dl_b = dl_bw_of(cpu); |
| 7466 | 7468 | ||
| 7467 | raw_spin_lock(&dl_b->lock); | 7469 | raw_spin_lock_irqsave(&dl_b->lock, flags); |
| 7468 | dl_b->bw = new_bw; | 7470 | dl_b->bw = new_bw; |
| 7469 | raw_spin_unlock(&dl_b->lock); | 7471 | raw_spin_unlock_irqrestore(&dl_b->lock, flags); |
| 7470 | } | 7472 | } |
| 7471 | } | 7473 | } |
| 7472 | 7474 | ||
