diff options
| -rw-r--r-- | drivers/cpufreq/cpufreq-cpu0.c | 2 | ||||
| -rw-r--r-- | drivers/cpufreq/intel_pstate.c | 5 | ||||
| -rw-r--r-- | drivers/cpufreq/spear-cpufreq.c | 2 | ||||
| -rw-r--r-- | kernel/power/snapshot.c | 5 | ||||
| -rw-r--r-- | kernel/power/user.c | 8 |
5 files changed, 18 insertions, 4 deletions
diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c index 78c49d8e0f4a..c522a95c0e16 100644 --- a/drivers/cpufreq/cpufreq-cpu0.c +++ b/drivers/cpufreq/cpufreq-cpu0.c | |||
| @@ -229,7 +229,7 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev) | |||
| 229 | if (of_property_read_u32(np, "clock-latency", &transition_latency)) | 229 | if (of_property_read_u32(np, "clock-latency", &transition_latency)) |
| 230 | transition_latency = CPUFREQ_ETERNAL; | 230 | transition_latency = CPUFREQ_ETERNAL; |
| 231 | 231 | ||
| 232 | if (cpu_reg) { | 232 | if (!IS_ERR(cpu_reg)) { |
| 233 | struct opp *opp; | 233 | struct opp *opp; |
| 234 | unsigned long min_uV, max_uV; | 234 | unsigned long min_uV, max_uV; |
| 235 | int i; | 235 | int i; |
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c index 9733f29ed148..32b3479a2405 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c | |||
| @@ -394,7 +394,10 @@ static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate) | |||
| 394 | trace_cpu_frequency(pstate * 100000, cpu->cpu); | 394 | trace_cpu_frequency(pstate * 100000, cpu->cpu); |
| 395 | 395 | ||
| 396 | cpu->pstate.current_pstate = pstate; | 396 | cpu->pstate.current_pstate = pstate; |
| 397 | wrmsrl(MSR_IA32_PERF_CTL, pstate << 8); | 397 | if (limits.no_turbo) |
| 398 | wrmsrl(MSR_IA32_PERF_CTL, BIT(32) | (pstate << 8)); | ||
| 399 | else | ||
| 400 | wrmsrl(MSR_IA32_PERF_CTL, pstate << 8); | ||
| 398 | 401 | ||
| 399 | } | 402 | } |
| 400 | 403 | ||
diff --git a/drivers/cpufreq/spear-cpufreq.c b/drivers/cpufreq/spear-cpufreq.c index 19e364fa5955..3f418166ce02 100644 --- a/drivers/cpufreq/spear-cpufreq.c +++ b/drivers/cpufreq/spear-cpufreq.c | |||
| @@ -113,7 +113,7 @@ static int spear_cpufreq_target(struct cpufreq_policy *policy, | |||
| 113 | unsigned int target_freq, unsigned int relation) | 113 | unsigned int target_freq, unsigned int relation) |
| 114 | { | 114 | { |
| 115 | struct cpufreq_freqs freqs; | 115 | struct cpufreq_freqs freqs; |
| 116 | unsigned long newfreq; | 116 | long newfreq; |
| 117 | struct clk *srcclk; | 117 | struct clk *srcclk; |
| 118 | int index, ret, mult = 1; | 118 | int index, ret, mult = 1; |
| 119 | 119 | ||
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c index 358a146fd4da..98c3b34a4cff 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c | |||
| @@ -743,7 +743,10 @@ int create_basic_memory_bitmaps(void) | |||
| 743 | struct memory_bitmap *bm1, *bm2; | 743 | struct memory_bitmap *bm1, *bm2; |
| 744 | int error = 0; | 744 | int error = 0; |
| 745 | 745 | ||
| 746 | BUG_ON(forbidden_pages_map || free_pages_map); | 746 | if (forbidden_pages_map && free_pages_map) |
| 747 | return 0; | ||
| 748 | else | ||
| 749 | BUG_ON(forbidden_pages_map || free_pages_map); | ||
| 747 | 750 | ||
| 748 | bm1 = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL); | 751 | bm1 = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL); |
| 749 | if (!bm1) | 752 | if (!bm1) |
diff --git a/kernel/power/user.c b/kernel/power/user.c index 72e8f4fd616d..957f06164ad1 100644 --- a/kernel/power/user.c +++ b/kernel/power/user.c | |||
| @@ -39,6 +39,7 @@ static struct snapshot_data { | |||
| 39 | char frozen; | 39 | char frozen; |
| 40 | char ready; | 40 | char ready; |
| 41 | char platform_support; | 41 | char platform_support; |
| 42 | bool free_bitmaps; | ||
| 42 | } snapshot_state; | 43 | } snapshot_state; |
| 43 | 44 | ||
| 44 | atomic_t snapshot_device_available = ATOMIC_INIT(1); | 45 | atomic_t snapshot_device_available = ATOMIC_INIT(1); |
| @@ -82,6 +83,10 @@ static int snapshot_open(struct inode *inode, struct file *filp) | |||
| 82 | data->swap = -1; | 83 | data->swap = -1; |
| 83 | data->mode = O_WRONLY; | 84 | data->mode = O_WRONLY; |
| 84 | error = pm_notifier_call_chain(PM_RESTORE_PREPARE); | 85 | error = pm_notifier_call_chain(PM_RESTORE_PREPARE); |
| 86 | if (!error) { | ||
| 87 | error = create_basic_memory_bitmaps(); | ||
| 88 | data->free_bitmaps = !error; | ||
| 89 | } | ||
| 85 | if (error) | 90 | if (error) |
| 86 | pm_notifier_call_chain(PM_POST_RESTORE); | 91 | pm_notifier_call_chain(PM_POST_RESTORE); |
| 87 | } | 92 | } |
| @@ -111,6 +116,8 @@ static int snapshot_release(struct inode *inode, struct file *filp) | |||
| 111 | pm_restore_gfp_mask(); | 116 | pm_restore_gfp_mask(); |
| 112 | free_basic_memory_bitmaps(); | 117 | free_basic_memory_bitmaps(); |
| 113 | thaw_processes(); | 118 | thaw_processes(); |
| 119 | } else if (data->free_bitmaps) { | ||
| 120 | free_basic_memory_bitmaps(); | ||
| 114 | } | 121 | } |
| 115 | pm_notifier_call_chain(data->mode == O_RDONLY ? | 122 | pm_notifier_call_chain(data->mode == O_RDONLY ? |
| 116 | PM_POST_HIBERNATION : PM_POST_RESTORE); | 123 | PM_POST_HIBERNATION : PM_POST_RESTORE); |
| @@ -231,6 +238,7 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd, | |||
| 231 | break; | 238 | break; |
| 232 | pm_restore_gfp_mask(); | 239 | pm_restore_gfp_mask(); |
| 233 | free_basic_memory_bitmaps(); | 240 | free_basic_memory_bitmaps(); |
| 241 | data->free_bitmaps = false; | ||
| 234 | thaw_processes(); | 242 | thaw_processes(); |
| 235 | data->frozen = 0; | 243 | data->frozen = 0; |
| 236 | break; | 244 | break; |
