diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2011-11-29 09:50:17 -0500 |
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2011-11-29 09:50:17 -0500 |
| commit | 98014be39bda8277a5ad130bb274ed6eb18b74df (patch) | |
| tree | 974620a47c9350ff9b3c06ffd2b49470bbda72ab /kernel | |
| parent | 55135dfbf3dd83cb3e98deed8271b62d188404e1 (diff) | |
| parent | 6e2a587eb99267367409097b70cb2d61b09e5269 (diff) | |
Merge branch 'defconfigs-for-arnd' of git://git.linaro.org/people/triad/linux-stericsson into fixes
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fork.c | 5 | ||||
| -rw-r--r-- | kernel/irq/spurious.c | 2 | ||||
| -rw-r--r-- | kernel/power/hibernate.c | 23 | ||||
| -rw-r--r-- | kernel/power/main.c | 3 |
4 files changed, 20 insertions, 13 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index ba0d17261329..da4a6a10d088 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
| @@ -162,7 +162,6 @@ static void account_kernel_stack(struct thread_info *ti, int account) | |||
| 162 | 162 | ||
| 163 | void free_task(struct task_struct *tsk) | 163 | void free_task(struct task_struct *tsk) |
| 164 | { | 164 | { |
| 165 | prop_local_destroy_single(&tsk->dirties); | ||
| 166 | account_kernel_stack(tsk->stack, -1); | 165 | account_kernel_stack(tsk->stack, -1); |
| 167 | free_thread_info(tsk->stack); | 166 | free_thread_info(tsk->stack); |
| 168 | rt_mutex_debug_task_free(tsk); | 167 | rt_mutex_debug_task_free(tsk); |
| @@ -274,10 +273,6 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) | |||
| 274 | 273 | ||
| 275 | tsk->stack = ti; | 274 | tsk->stack = ti; |
| 276 | 275 | ||
| 277 | err = prop_local_init_single(&tsk->dirties); | ||
| 278 | if (err) | ||
| 279 | goto out; | ||
| 280 | |||
| 281 | setup_thread_stack(tsk, orig); | 276 | setup_thread_stack(tsk, orig); |
| 282 | clear_user_return_notifier(tsk); | 277 | clear_user_return_notifier(tsk); |
| 283 | clear_tsk_need_resched(tsk); | 278 | clear_tsk_need_resched(tsk); |
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c index aa57d5da18c1..b5f4742693c0 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c | |||
| @@ -115,7 +115,7 @@ static int misrouted_irq(int irq) | |||
| 115 | struct irq_desc *desc; | 115 | struct irq_desc *desc; |
| 116 | int i, ok = 0; | 116 | int i, ok = 0; |
| 117 | 117 | ||
| 118 | if (atomic_inc_return(&irq_poll_active) == 1) | 118 | if (atomic_inc_return(&irq_poll_active) != 1) |
| 119 | goto out; | 119 | goto out; |
| 120 | 120 | ||
| 121 | irq_poll_cpu = smp_processor_id(); | 121 | irq_poll_cpu = smp_processor_id(); |
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index b4511b6d3ef9..196c01268ebd 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c | |||
| @@ -55,6 +55,8 @@ enum { | |||
| 55 | 55 | ||
| 56 | static int hibernation_mode = HIBERNATION_SHUTDOWN; | 56 | static int hibernation_mode = HIBERNATION_SHUTDOWN; |
| 57 | 57 | ||
| 58 | static bool freezer_test_done; | ||
| 59 | |||
| 58 | static const struct platform_hibernation_ops *hibernation_ops; | 60 | static const struct platform_hibernation_ops *hibernation_ops; |
| 59 | 61 | ||
| 60 | /** | 62 | /** |
| @@ -347,6 +349,17 @@ int hibernation_snapshot(int platform_mode) | |||
| 347 | if (error) | 349 | if (error) |
| 348 | goto Close; | 350 | goto Close; |
| 349 | 351 | ||
| 352 | if (hibernation_test(TEST_FREEZER) || | ||
| 353 | hibernation_testmode(HIBERNATION_TESTPROC)) { | ||
| 354 | |||
| 355 | /* | ||
| 356 | * Indicate to the caller that we are returning due to a | ||
| 357 | * successful freezer test. | ||
| 358 | */ | ||
| 359 | freezer_test_done = true; | ||
| 360 | goto Close; | ||
| 361 | } | ||
| 362 | |||
| 350 | error = dpm_prepare(PMSG_FREEZE); | 363 | error = dpm_prepare(PMSG_FREEZE); |
| 351 | if (error) | 364 | if (error) |
| 352 | goto Complete_devices; | 365 | goto Complete_devices; |
| @@ -641,15 +654,13 @@ int hibernate(void) | |||
| 641 | if (error) | 654 | if (error) |
| 642 | goto Finish; | 655 | goto Finish; |
| 643 | 656 | ||
| 644 | if (hibernation_test(TEST_FREEZER)) | ||
| 645 | goto Thaw; | ||
| 646 | |||
| 647 | if (hibernation_testmode(HIBERNATION_TESTPROC)) | ||
| 648 | goto Thaw; | ||
| 649 | |||
| 650 | error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM); | 657 | error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM); |
| 651 | if (error) | 658 | if (error) |
| 652 | goto Thaw; | 659 | goto Thaw; |
| 660 | if (freezer_test_done) { | ||
| 661 | freezer_test_done = false; | ||
| 662 | goto Thaw; | ||
| 663 | } | ||
| 653 | 664 | ||
| 654 | if (in_suspend) { | 665 | if (in_suspend) { |
| 655 | unsigned int flags = 0; | 666 | unsigned int flags = 0; |
diff --git a/kernel/power/main.c b/kernel/power/main.c index 71f49fe4377e..36e0f0903c32 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
| @@ -290,13 +290,14 @@ static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr, | |||
| 290 | if (*s && len == strlen(*s) && !strncmp(buf, *s, len)) | 290 | if (*s && len == strlen(*s) && !strncmp(buf, *s, len)) |
| 291 | break; | 291 | break; |
| 292 | } | 292 | } |
| 293 | if (state < PM_SUSPEND_MAX && *s) | 293 | if (state < PM_SUSPEND_MAX && *s) { |
| 294 | error = enter_state(state); | 294 | error = enter_state(state); |
| 295 | if (error) { | 295 | if (error) { |
| 296 | suspend_stats.fail++; | 296 | suspend_stats.fail++; |
| 297 | dpm_save_failed_errno(error); | 297 | dpm_save_failed_errno(error); |
| 298 | } else | 298 | } else |
| 299 | suspend_stats.success++; | 299 | suspend_stats.success++; |
| 300 | } | ||
| 300 | #endif | 301 | #endif |
| 301 | 302 | ||
| 302 | Exit: | 303 | Exit: |
