]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - arch/ia64/kernel/process.c
Merge tag 'please-pull-ia64-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel...
[mirror_ubuntu-hirsute-kernel.git] / arch / ia64 / kernel / process.c
index dd6fc14497419dca929be82a44b55ce638bc4705..ee31fe9b310e3d93de0e46ab29486e920b51763a 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/kdebug.h>
 #include <linux/utsname.h>
 #include <linux/tracehook.h>
+#include <linux/rcupdate.h>
 
 #include <asm/cpu.h>
 #include <asm/delay.h>
@@ -196,8 +197,8 @@ do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall)
                ia64_do_signal(scr, in_syscall);
        }
 
-       if (test_thread_flag(TIF_NOTIFY_RESUME)) {
-               clear_thread_flag(TIF_NOTIFY_RESUME);
+       if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) {
+               local_irq_enable();     /* force interrupt enable */
                tracehook_notify_resume(&scr->pt);
        }
 
@@ -279,6 +280,7 @@ cpu_idle (void)
 
        /* endless idle loop with no priority at all */
        while (1) {
+               rcu_idle_enter();
                if (can_do_pal_halt) {
                        current_thread_info()->status &= ~TS_POLLING;
                        /*
@@ -309,6 +311,7 @@ cpu_idle (void)
                        normal_xtp();
 #endif
                }
+               rcu_idle_exit();
                schedule_preempt_disabled();
                check_pgt_cache();
                if (cpu_is_offline(cpu))