|
@@ -29,6 +29,7 @@
|
|
#include <linux/kdebug.h>
|
|
#include <linux/kdebug.h>
|
|
#include <linux/utsname.h>
|
|
#include <linux/utsname.h>
|
|
#include <linux/tracehook.h>
|
|
#include <linux/tracehook.h>
|
|
|
|
+#include <linux/rcupdate.h>
|
|
|
|
|
|
#include <asm/cpu.h>
|
|
#include <asm/cpu.h>
|
|
#include <asm/delay.h>
|
|
#include <asm/delay.h>
|
|
@@ -279,6 +280,7 @@ cpu_idle (void)
|
|
|
|
|
|
/* endless idle loop with no priority at all */
|
|
/* endless idle loop with no priority at all */
|
|
while (1) {
|
|
while (1) {
|
|
|
|
+ rcu_idle_enter();
|
|
if (can_do_pal_halt) {
|
|
if (can_do_pal_halt) {
|
|
current_thread_info()->status &= ~TS_POLLING;
|
|
current_thread_info()->status &= ~TS_POLLING;
|
|
/*
|
|
/*
|
|
@@ -309,6 +311,7 @@ cpu_idle (void)
|
|
normal_xtp();
|
|
normal_xtp();
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
+ rcu_idle_exit();
|
|
schedule_preempt_disabled();
|
|
schedule_preempt_disabled();
|
|
check_pgt_cache();
|
|
check_pgt_cache();
|
|
if (cpu_is_offline(cpu))
|
|
if (cpu_is_offline(cpu))
|