diff options
-rw-r--r-- | drivers/idle/i7300_idle.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/idle/i7300_idle.c b/drivers/idle/i7300_idle.c index 1f20a042a4f..dd253002cd5 100644 --- a/drivers/idle/i7300_idle.c +++ b/drivers/idle/i7300_idle.c | |||
@@ -81,7 +81,7 @@ static u8 i7300_idle_thrtctl_saved; | |||
81 | static u8 i7300_idle_thrtlow_saved; | 81 | static u8 i7300_idle_thrtlow_saved; |
82 | static u32 i7300_idle_mc_saved; | 82 | static u32 i7300_idle_mc_saved; |
83 | 83 | ||
84 | static cpumask_t idle_cpumask; | 84 | static cpumask_var_t idle_cpumask; |
85 | static ktime_t start_ktime; | 85 | static ktime_t start_ktime; |
86 | static unsigned long avg_idle_us; | 86 | static unsigned long avg_idle_us; |
87 | 87 | ||
@@ -459,9 +459,9 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val, | |||
459 | spin_lock_irqsave(&i7300_idle_lock, flags); | 459 | spin_lock_irqsave(&i7300_idle_lock, flags); |
460 | if (val == IDLE_START) { | 460 | if (val == IDLE_START) { |
461 | 461 | ||
462 | cpu_set(smp_processor_id(), idle_cpumask); | 462 | cpumask_set_cpu(smp_processor_id(), idle_cpumask); |
463 | 463 | ||
464 | if (cpus_weight(idle_cpumask) != num_online_cpus()) | 464 | if (cpumask_weight(idle_cpumask) != num_online_cpus()) |
465 | goto end; | 465 | goto end; |
466 | 466 | ||
467 | now_ktime = ktime_get(); | 467 | now_ktime = ktime_get(); |
@@ -478,8 +478,8 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val, | |||
478 | i7300_idle_ioat_start(); | 478 | i7300_idle_ioat_start(); |
479 | 479 | ||
480 | } else if (val == IDLE_END) { | 480 | } else if (val == IDLE_END) { |
481 | cpu_clear(smp_processor_id(), idle_cpumask); | 481 | cpumask_clear_cpu(smp_processor_id(), idle_cpumask); |
482 | if (cpus_weight(idle_cpumask) == (num_online_cpus() - 1)) { | 482 | if (cpumask_weight(idle_cpumask) == (num_online_cpus() - 1)) { |
483 | /* First CPU coming out of idle */ | 483 | /* First CPU coming out of idle */ |
484 | u64 idle_duration_us; | 484 | u64 idle_duration_us; |
485 | 485 | ||
@@ -553,7 +553,6 @@ struct debugfs_file_info { | |||
553 | static int __init i7300_idle_init(void) | 553 | static int __init i7300_idle_init(void) |
554 | { | 554 | { |
555 | spin_lock_init(&i7300_idle_lock); | 555 | spin_lock_init(&i7300_idle_lock); |
556 | cpus_clear(idle_cpumask); | ||
557 | total_us = 0; | 556 | total_us = 0; |
558 | 557 | ||
559 | if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload)) | 558 | if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload)) |
@@ -565,6 +564,9 @@ static int __init i7300_idle_init(void) | |||
565 | if (i7300_idle_ioat_init()) | 564 | if (i7300_idle_ioat_init()) |
566 | return -ENODEV; | 565 | return -ENODEV; |
567 | 566 | ||
567 | if (!zalloc_cpumask_var(&idle_cpumask, GFP_KERNEL)) | ||
568 | return -ENOMEM; | ||
569 | |||
568 | debugfs_dir = debugfs_create_dir("i7300_idle", NULL); | 570 | debugfs_dir = debugfs_create_dir("i7300_idle", NULL); |
569 | if (debugfs_dir) { | 571 | if (debugfs_dir) { |
570 | int i = 0; | 572 | int i = 0; |
@@ -589,6 +591,7 @@ static int __init i7300_idle_init(void) | |||
589 | static void __exit i7300_idle_exit(void) | 591 | static void __exit i7300_idle_exit(void) |
590 | { | 592 | { |
591 | idle_notifier_unregister(&i7300_idle_nb); | 593 | idle_notifier_unregister(&i7300_idle_nb); |
594 | free_cpumask_var(idle_cpumask); | ||
592 | 595 | ||
593 | if (debugfs_dir) { | 596 | if (debugfs_dir) { |
594 | int i = 0; | 597 | int i = 0; |