diff options
Diffstat (limited to 'kernel/time/tick-broadcast.c')
| -rw-r--r-- | kernel/time/tick-broadcast.c | 113 |
1 files changed, 58 insertions, 55 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index f98a1b7b16e9..118a3b3b3f9a 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c | |||
| @@ -28,7 +28,9 @@ | |||
| 28 | */ | 28 | */ |
| 29 | 29 | ||
| 30 | struct tick_device tick_broadcast_device; | 30 | struct tick_device tick_broadcast_device; |
| 31 | static cpumask_t tick_broadcast_mask; | 31 | /* FIXME: Use cpumask_var_t. */ |
| 32 | static DECLARE_BITMAP(tick_broadcast_mask, NR_CPUS); | ||
| 33 | static DECLARE_BITMAP(tmpmask, NR_CPUS); | ||
| 32 | static DEFINE_SPINLOCK(tick_broadcast_lock); | 34 | static DEFINE_SPINLOCK(tick_broadcast_lock); |
| 33 | static int tick_broadcast_force; | 35 | static int tick_broadcast_force; |
| 34 | 36 | ||
| @@ -46,9 +48,9 @@ struct tick_device *tick_get_broadcast_device(void) | |||
| 46 | return &tick_broadcast_device; | 48 | return &tick_broadcast_device; |
| 47 | } | 49 | } |
| 48 | 50 | ||
| 49 | cpumask_t *tick_get_broadcast_mask(void) | 51 | struct cpumask *tick_get_broadcast_mask(void) |
| 50 | { | 52 | { |
| 51 | return &tick_broadcast_mask; | 53 | return to_cpumask(tick_broadcast_mask); |
| 52 | } | 54 | } |
| 53 | 55 | ||
| 54 | /* | 56 | /* |
| @@ -72,7 +74,7 @@ int tick_check_broadcast_device(struct clock_event_device *dev) | |||
| 72 | 74 | ||
| 73 | clockevents_exchange_device(NULL, dev); | 75 | clockevents_exchange_device(NULL, dev); |
| 74 | tick_broadcast_device.evtdev = dev; | 76 | tick_broadcast_device.evtdev = dev; |
| 75 | if (!cpus_empty(tick_broadcast_mask)) | 77 | if (!cpumask_empty(tick_get_broadcast_mask())) |
| 76 | tick_broadcast_start_periodic(dev); | 78 | tick_broadcast_start_periodic(dev); |
| 77 | return 1; | 79 | return 1; |
| 78 | } | 80 | } |
| @@ -104,7 +106,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) | |||
| 104 | */ | 106 | */ |
| 105 | if (!tick_device_is_functional(dev)) { | 107 | if (!tick_device_is_functional(dev)) { |
| 106 | dev->event_handler = tick_handle_periodic; | 108 | dev->event_handler = tick_handle_periodic; |
| 107 | cpu_set(cpu, tick_broadcast_mask); | 109 | cpumask_set_cpu(cpu, tick_get_broadcast_mask()); |
| 108 | tick_broadcast_start_periodic(tick_broadcast_device.evtdev); | 110 | tick_broadcast_start_periodic(tick_broadcast_device.evtdev); |
| 109 | ret = 1; | 111 | ret = 1; |
| 110 | } else { | 112 | } else { |
| @@ -116,7 +118,7 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) | |||
| 116 | if (!(dev->features & CLOCK_EVT_FEAT_C3STOP)) { | 118 | if (!(dev->features & CLOCK_EVT_FEAT_C3STOP)) { |
| 117 | int cpu = smp_processor_id(); | 119 | int cpu = smp_processor_id(); |
| 118 | 120 | ||
| 119 | cpu_clear(cpu, tick_broadcast_mask); | 121 | cpumask_clear_cpu(cpu, tick_get_broadcast_mask()); |
| 120 | tick_broadcast_clear_oneshot(cpu); | 122 | tick_broadcast_clear_oneshot(cpu); |
| 121 | } | 123 | } |
| 122 | } | 124 | } |
| @@ -125,9 +127,9 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) | |||
| 125 | } | 127 | } |
| 126 | 128 | ||
| 127 | /* | 129 | /* |
| 128 | * Broadcast the event to the cpus, which are set in the mask | 130 | * Broadcast the event to the cpus, which are set in the mask (mangled). |
| 129 | */ | 131 | */ |
| 130 | static void tick_do_broadcast(cpumask_t mask) | 132 | static void tick_do_broadcast(struct cpumask *mask) |
| 131 | { | 133 | { |
| 132 | int cpu = smp_processor_id(); | 134 | int cpu = smp_processor_id(); |
| 133 | struct tick_device *td; | 135 | struct tick_device *td; |
| @@ -135,21 +137,20 @@ static void tick_do_broadcast(cpumask_t mask) | |||
| 135 | /* | 137 | /* |
| 136 | * Check, if the current cpu is in the mask | 138 | * Check, if the current cpu is in the mask |
| 137 | */ | 139 | */ |
| 138 | if (cpu_isset(cpu, mask)) { | 140 | if (cpumask_test_cpu(cpu, mask)) { |
| 139 | cpu_clear(cpu, mask); | 141 | cpumask_clear_cpu(cpu, mask); |
| 140 | td = &per_cpu(tick_cpu_device, cpu); | 142 | td = &per_cpu(tick_cpu_device, cpu); |
| 141 | td->evtdev->event_handler(td->evtdev); | 143 | td->evtdev->event_handler(td->evtdev); |
| 142 | } | 144 | } |
| 143 | 145 | ||
| 144 | if (!cpus_empty(mask)) { | 146 | if (!cpumask_empty(mask)) { |
| 145 | /* | 147 | /* |
| 146 | * It might be necessary to actually check whether the devices | 148 | * It might be necessary to actually check whether the devices |
| 147 | * have different broadcast functions. For now, just use the | 149 | * have different broadcast functions. For now, just use the |
| 148 | * one of the first device. This works as long as we have this | 150 | * one of the first device. This works as long as we have this |
| 149 | * misfeature only on x86 (lapic) | 151 | * misfeature only on x86 (lapic) |
| 150 | */ | 152 | */ |
| 151 | cpu = first_cpu(mask); | 153 | td = &per_cpu(tick_cpu_device, cpumask_first(mask)); |
| 152 | td = &per_cpu(tick_cpu_device, cpu); | ||
| 153 | td->evtdev->broadcast(mask); | 154 | td->evtdev->broadcast(mask); |
| 154 | } | 155 | } |
| 155 | } | 156 | } |
| @@ -160,12 +161,11 @@ static void tick_do_broadcast(cpumask_t mask) | |||
| 160 | */ | 161 | */ |
| 161 | static void tick_do_periodic_broadcast(void) | 162 | static void tick_do_periodic_broadcast(void) |
| 162 | { | 163 | { |
| 163 | cpumask_t mask; | ||
| 164 | |||
| 165 | spin_lock(&tick_broadcast_lock); | 164 | spin_lock(&tick_broadcast_lock); |
| 166 | 165 | ||
| 167 | cpus_and(mask, cpu_online_map, tick_broadcast_mask); | 166 | cpumask_and(to_cpumask(tmpmask), |
| 168 | tick_do_broadcast(mask); | 167 | cpu_online_mask, tick_get_broadcast_mask()); |
| 168 | tick_do_broadcast(to_cpumask(tmpmask)); | ||
| 169 | 169 | ||
| 170 | spin_unlock(&tick_broadcast_lock); | 170 | spin_unlock(&tick_broadcast_lock); |
| 171 | } | 171 | } |
| @@ -228,13 +228,13 @@ static void tick_do_broadcast_on_off(void *why) | |||
| 228 | if (!tick_device_is_functional(dev)) | 228 | if (!tick_device_is_functional(dev)) |
| 229 | goto out; | 229 | goto out; |
| 230 | 230 | ||
| 231 | bc_stopped = cpus_empty(tick_broadcast_mask); | 231 | bc_stopped = cpumask_empty(tick_get_broadcast_mask()); |
| 232 | 232 | ||
| 233 | switch (*reason) { | 233 | switch (*reason) { |
| 234 | case CLOCK_EVT_NOTIFY_BROADCAST_ON: | 234 | case CLOCK_EVT_NOTIFY_BROADCAST_ON: |
| 235 | case CLOCK_EVT_NOTIFY_BROADCAST_FORCE: | 235 | case CLOCK_EVT_NOTIFY_BROADCAST_FORCE: |
| 236 | if (!cpu_isset(cpu, tick_broadcast_mask)) { | 236 | if (!cpumask_test_cpu(cpu, tick_get_broadcast_mask())) { |
| 237 | cpu_set(cpu, tick_broadcast_mask); | 237 | cpumask_set_cpu(cpu, tick_get_broadcast_mask()); |
| 238 | if (tick_broadcast_device.mode == | 238 | if (tick_broadcast_device.mode == |
| 239 | TICKDEV_MODE_PERIODIC) | 239 | TICKDEV_MODE_PERIODIC) |
| 240 | clockevents_shutdown(dev); | 240 | clockevents_shutdown(dev); |
| @@ -244,8 +244,8 @@ static void tick_do_broadcast_on_off(void *why) | |||
| 244 | break; | 244 | break; |
| 245 | case CLOCK_EVT_NOTIFY_BROADCAST_OFF: | 245 | case CLOCK_EVT_NOTIFY_BROADCAST_OFF: |
| 246 | if (!tick_broadcast_force && | 246 | if (!tick_broadcast_force && |
| 247 | cpu_isset(cpu, tick_broadcast_mask)) { | 247 | cpumask_test_cpu(cpu, tick_get_broadcast_mask())) { |
| 248 | cpu_clear(cpu, tick_broadcast_mask); | 248 | cpumask_clear_cpu(cpu, tick_get_broadcast_mask()); |
| 249 | if (tick_broadcast_device.mode == | 249 | if (tick_broadcast_device.mode == |
| 250 | TICKDEV_MODE_PERIODIC) | 250 | TICKDEV_MODE_PERIODIC) |
| 251 | tick_setup_periodic(dev, 0); | 251 | tick_setup_periodic(dev, 0); |
| @@ -253,7 +253,7 @@ static void tick_do_broadcast_on_off(void *why) | |||
| 253 | break; | 253 | break; |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | if (cpus_empty(tick_broadcast_mask)) { | 256 | if (cpumask_empty(tick_get_broadcast_mask())) { |
| 257 | if (!bc_stopped) | 257 | if (!bc_stopped) |
| 258 | clockevents_shutdown(bc); | 258 | clockevents_shutdown(bc); |
| 259 | } else if (bc_stopped) { | 259 | } else if (bc_stopped) { |
| @@ -272,7 +272,7 @@ out: | |||
| 272 | */ | 272 | */ |
| 273 | void tick_broadcast_on_off(unsigned long reason, int *oncpu) | 273 | void tick_broadcast_on_off(unsigned long reason, int *oncpu) |
| 274 | { | 274 | { |
| 275 | if (!cpu_isset(*oncpu, cpu_online_map)) | 275 | if (!cpumask_test_cpu(*oncpu, cpu_online_mask)) |
| 276 | printk(KERN_ERR "tick-broadcast: ignoring broadcast for " | 276 | printk(KERN_ERR "tick-broadcast: ignoring broadcast for " |
| 277 | "offline CPU #%d\n", *oncpu); | 277 | "offline CPU #%d\n", *oncpu); |
| 278 | else | 278 | else |
| @@ -303,10 +303,10 @@ void tick_shutdown_broadcast(unsigned int *cpup) | |||
| 303 | spin_lock_irqsave(&tick_broadcast_lock, flags); | 303 | spin_lock_irqsave(&tick_broadcast_lock, flags); |
| 304 | 304 | ||
| 305 | bc = tick_broadcast_device.evtdev; | 305 | bc = tick_broadcast_device.evtdev; |
| 306 | cpu_clear(cpu, tick_broadcast_mask); | 306 | cpumask_clear_cpu(cpu, tick_get_broadcast_mask()); |
| 307 | 307 | ||
| 308 | if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC) { | 308 | if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC) { |
| 309 | if (bc && cpus_empty(tick_broadcast_mask)) | 309 | if (bc && cpumask_empty(tick_get_broadcast_mask())) |
| 310 | clockevents_shutdown(bc); | 310 | clockevents_shutdown(bc); |
| 311 | } | 311 | } |
| 312 | 312 | ||
| @@ -342,10 +342,10 @@ int tick_resume_broadcast(void) | |||
| 342 | 342 | ||
| 343 | switch (tick_broadcast_device.mode) { | 343 | switch (tick_broadcast_device.mode) { |
| 344 | case TICKDEV_MODE_PERIODIC: | 344 | case TICKDEV_MODE_PERIODIC: |
| 345 | if(!cpus_empty(tick_broadcast_mask)) | 345 | if (!cpumask_empty(tick_get_broadcast_mask())) |
| 346 | tick_broadcast_start_periodic(bc); | 346 | tick_broadcast_start_periodic(bc); |
| 347 | broadcast = cpu_isset(smp_processor_id(), | 347 | broadcast = cpumask_test_cpu(smp_processor_id(), |
| 348 | tick_broadcast_mask); | 348 | tick_get_broadcast_mask()); |
| 349 | break; | 349 | break; |
| 350 | case TICKDEV_MODE_ONESHOT: | 350 | case TICKDEV_MODE_ONESHOT: |
| 351 | broadcast = tick_resume_broadcast_oneshot(bc); | 351 | broadcast = tick_resume_broadcast_oneshot(bc); |
| @@ -360,14 +360,15 @@ int tick_resume_broadcast(void) | |||
| 360 | 360 | ||
| 361 | #ifdef CONFIG_TICK_ONESHOT | 361 | #ifdef CONFIG_TICK_ONESHOT |
| 362 | 362 | ||
| 363 | static cpumask_t tick_broadcast_oneshot_mask; | 363 | /* FIXME: use cpumask_var_t. */ |
| 364 | static DECLARE_BITMAP(tick_broadcast_oneshot_mask, NR_CPUS); | ||
| 364 | 365 | ||
| 365 | /* | 366 | /* |
| 366 | * Debugging: see timer_list.c | 367 | * Exposed for debugging: see timer_list.c |
| 367 | */ | 368 | */ |
| 368 | cpumask_t *tick_get_broadcast_oneshot_mask(void) | 369 | struct cpumask *tick_get_broadcast_oneshot_mask(void) |
| 369 | { | 370 | { |
| 370 | return &tick_broadcast_oneshot_mask; | 371 | return to_cpumask(tick_broadcast_oneshot_mask); |
| 371 | } | 372 | } |
| 372 | 373 | ||
| 373 | static int tick_broadcast_set_event(ktime_t expires, int force) | 374 | static int tick_broadcast_set_event(ktime_t expires, int force) |
| @@ -389,7 +390,7 @@ int tick_resume_broadcast_oneshot(struct clock_event_device *bc) | |||
| 389 | */ | 390 | */ |
| 390 | void tick_check_oneshot_broadcast(int cpu) | 391 | void tick_check_oneshot_broadcast(int cpu) |
| 391 | { | 392 | { |
| 392 | if (cpu_isset(cpu, tick_broadcast_oneshot_mask)) { | 393 | if (cpumask_test_cpu(cpu, to_cpumask(tick_broadcast_oneshot_mask))) { |
| 393 | struct tick_device *td = &per_cpu(tick_cpu_device, cpu); | 394 | struct tick_device *td = &per_cpu(tick_cpu_device, cpu); |
| 394 | 395 | ||
| 395 | clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_ONESHOT); | 396 | clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_ONESHOT); |
| @@ -402,7 +403,6 @@ void tick_check_oneshot_broadcast(int cpu) | |||
| 402 | static void tick_handle_oneshot_broadcast(struct clock_event_device *dev) | 403 | static void tick_handle_oneshot_broadcast(struct clock_event_device *dev) |
| 403 | { | 404 | { |
| 404 | struct tick_device *td; | 405 | struct tick_device *td; |
| 405 | cpumask_t mask; | ||
| 406 | ktime_t now, next_event; | 406 | ktime_t now, next_event; |
| 407 | int cpu; | 407 | int cpu; |
| 408 | 408 | ||
| @@ -410,13 +410,13 @@ static void tick_handle_oneshot_broadcast(struct clock_event_device *dev) | |||
| 410 | again: | 410 | again: |
| 411 | dev->next_event.tv64 = KTIME_MAX; | 411 | dev->next_event.tv64 = KTIME_MAX; |
| 412 | next_event.tv64 = KTIME_MAX; | 412 | next_event.tv64 = KTIME_MAX; |
| 413 | mask = CPU_MASK_NONE; | 413 | cpumask_clear(to_cpumask(tmpmask)); |
| 414 | now = ktime_get(); | 414 | now = ktime_get(); |
| 415 | /* Find all expired events */ | 415 | /* Find all expired events */ |
| 416 | for_each_cpu_mask_nr(cpu, tick_broadcast_oneshot_mask) { | 416 | for_each_cpu(cpu, tick_get_broadcast_oneshot_mask()) { |
| 417 | td = &per_cpu(tick_cpu_device, cpu); | 417 | td = &per_cpu(tick_cpu_device, cpu); |
| 418 | if (td->evtdev->next_event.tv64 <= now.tv64) | 418 | if (td->evtdev->next_event.tv64 <= now.tv64) |
| 419 | cpu_set(cpu, mask); | 419 | cpumask_set_cpu(cpu, to_cpumask(tmpmask)); |
| 420 | else if (td->evtdev->next_event.tv64 < next_event.tv64) | 420 | else if (td->evtdev->next_event.tv64 < next_event.tv64) |
| 421 | next_event.tv64 = td->evtdev->next_event.tv64; | 421 | next_event.tv64 = td->evtdev->next_event.tv64; |
| 422 | } | 422 | } |
| @@ -424,7 +424,7 @@ again: | |||
| 424 | /* | 424 | /* |
| 425 | * Wakeup the cpus which have an expired event. | 425 | * Wakeup the cpus which have an expired event. |
| 426 | */ | 426 | */ |
| 427 | tick_do_broadcast(mask); | 427 | tick_do_broadcast(to_cpumask(tmpmask)); |
| 428 | 428 | ||
| 429 | /* | 429 | /* |
| 430 | * Two reasons for reprogram: | 430 | * Two reasons for reprogram: |
| @@ -476,15 +476,16 @@ void tick_broadcast_oneshot_control(unsigned long reason) | |||
| 476 | goto out; | 476 | goto out; |
| 477 | 477 | ||
| 478 | if (reason == CLOCK_EVT_NOTIFY_BROADCAST_ENTER) { | 478 | if (reason == CLOCK_EVT_NOTIFY_BROADCAST_ENTER) { |
| 479 | if (!cpu_isset(cpu, tick_broadcast_oneshot_mask)) { | 479 | if (!cpumask_test_cpu(cpu, tick_get_broadcast_oneshot_mask())) { |
| 480 | cpu_set(cpu, tick_broadcast_oneshot_mask); | 480 | cpumask_set_cpu(cpu, tick_get_broadcast_oneshot_mask()); |
| 481 | clockevents_set_mode(dev, CLOCK_EVT_MODE_SHUTDOWN); | 481 | clockevents_set_mode(dev, CLOCK_EVT_MODE_SHUTDOWN); |
| 482 | if (dev->next_event.tv64 < bc->next_event.tv64) | 482 | if (dev->next_event.tv64 < bc->next_event.tv64) |
| 483 | tick_broadcast_set_event(dev->next_event, 1); | 483 | tick_broadcast_set_event(dev->next_event, 1); |
| 484 | } | 484 | } |
| 485 | } else { | 485 | } else { |
| 486 | if (cpu_isset(cpu, tick_broadcast_oneshot_mask)) { | 486 | if (cpumask_test_cpu(cpu, tick_get_broadcast_oneshot_mask())) { |
| 487 | cpu_clear(cpu, tick_broadcast_oneshot_mask); | 487 | cpumask_clear_cpu(cpu, |
| 488 | tick_get_broadcast_oneshot_mask()); | ||
| 488 | clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); | 489 | clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); |
| 489 | if (dev->next_event.tv64 != KTIME_MAX) | 490 | if (dev->next_event.tv64 != KTIME_MAX) |
| 490 | tick_program_event(dev->next_event, 1); | 491 | tick_program_event(dev->next_event, 1); |
| @@ -502,15 +503,16 @@ out: | |||
| 502 | */ | 503 | */ |
| 503 | static void tick_broadcast_clear_oneshot(int cpu) | 504 | static void tick_broadcast_clear_oneshot(int cpu) |
| 504 | { | 505 | { |
| 505 | cpu_clear(cpu, tick_broadcast_oneshot_mask); | 506 | cpumask_clear_cpu(cpu, tick_get_broadcast_oneshot_mask()); |
| 506 | } | 507 | } |
| 507 | 508 | ||
| 508 | static void tick_broadcast_init_next_event(cpumask_t *mask, ktime_t expires) | 509 | static void tick_broadcast_init_next_event(struct cpumask *mask, |
| 510 | ktime_t expires) | ||
| 509 | { | 511 | { |
| 510 | struct tick_device *td; | 512 | struct tick_device *td; |
| 511 | int cpu; | 513 | int cpu; |
| 512 | 514 | ||
| 513 | for_each_cpu_mask_nr(cpu, *mask) { | 515 | for_each_cpu(cpu, mask) { |
| 514 | td = &per_cpu(tick_cpu_device, cpu); | 516 | td = &per_cpu(tick_cpu_device, cpu); |
| 515 | if (td->evtdev) | 517 | if (td->evtdev) |
| 516 | td->evtdev->next_event = expires; | 518 | td->evtdev->next_event = expires; |
| @@ -526,7 +528,6 @@ void tick_broadcast_setup_oneshot(struct clock_event_device *bc) | |||
| 526 | if (bc->event_handler != tick_handle_oneshot_broadcast) { | 528 | if (bc->event_handler != tick_handle_oneshot_broadcast) { |
| 527 | int was_periodic = bc->mode == CLOCK_EVT_MODE_PERIODIC; | 529 | int was_periodic = bc->mode == CLOCK_EVT_MODE_PERIODIC; |
| 528 | int cpu = smp_processor_id(); | 530 | int cpu = smp_processor_id(); |
| 529 | cpumask_t mask; | ||
| 530 | 531 | ||
| 531 | bc->event_handler = tick_handle_oneshot_broadcast; | 532 | bc->event_handler = tick_handle_oneshot_broadcast; |
| 532 | clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT); | 533 | clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT); |
| @@ -540,13 +541,15 @@ void tick_broadcast_setup_oneshot(struct clock_event_device *bc) | |||
| 540 | * oneshot_mask bits for those and program the | 541 | * oneshot_mask bits for those and program the |
| 541 | * broadcast device to fire. | 542 | * broadcast device to fire. |
| 542 | */ | 543 | */ |
| 543 | mask = tick_broadcast_mask; | 544 | cpumask_copy(to_cpumask(tmpmask), tick_get_broadcast_mask()); |
| 544 | cpu_clear(cpu, mask); | 545 | cpumask_clear_cpu(cpu, to_cpumask(tmpmask)); |
| 545 | cpus_or(tick_broadcast_oneshot_mask, | 546 | cpumask_or(tick_get_broadcast_oneshot_mask(), |
| 546 | tick_broadcast_oneshot_mask, mask); | 547 | tick_get_broadcast_oneshot_mask(), |
| 547 | 548 | to_cpumask(tmpmask)); | |
| 548 | if (was_periodic && !cpus_empty(mask)) { | 549 | |
| 549 | tick_broadcast_init_next_event(&mask, tick_next_period); | 550 | if (was_periodic && !cpumask_empty(to_cpumask(tmpmask))) { |
| 551 | tick_broadcast_init_next_event(to_cpumask(tmpmask), | ||
| 552 | tick_next_period); | ||
| 550 | tick_broadcast_set_event(tick_next_period, 1); | 553 | tick_broadcast_set_event(tick_next_period, 1); |
| 551 | } else | 554 | } else |
| 552 | bc->next_event.tv64 = KTIME_MAX; | 555 | bc->next_event.tv64 = KTIME_MAX; |
| @@ -585,7 +588,7 @@ void tick_shutdown_broadcast_oneshot(unsigned int *cpup) | |||
| 585 | * Clear the broadcast mask flag for the dead cpu, but do not | 588 | * Clear the broadcast mask flag for the dead cpu, but do not |
| 586 | * stop the broadcast device! | 589 | * stop the broadcast device! |
| 587 | */ | 590 | */ |
| 588 | cpu_clear(cpu, tick_broadcast_oneshot_mask); | 591 | cpumask_clear_cpu(cpu, tick_get_broadcast_oneshot_mask()); |
| 589 | 592 | ||
| 590 | spin_unlock_irqrestore(&tick_broadcast_lock, flags); | 593 | spin_unlock_irqrestore(&tick_broadcast_lock, flags); |
| 591 | } | 594 | } |
