File tree Expand file tree Collapse file tree 4 files changed +11
-30
lines changed Expand file tree Collapse file tree 4 files changed +11
-30
lines changed Original file line number Diff line number Diff line change @@ -97,6 +97,7 @@ config S390
97
97
select CLONE_BACKWARDS2
98
98
select GENERIC_CLOCKEVENTS
99
99
select GENERIC_CPU_DEVICES if !SMP
100
+ select GENERIC_IDLE_LOOP
100
101
select GENERIC_KERNEL_THREAD
101
102
select GENERIC_SMP_IDLE_THREAD
102
103
select GENERIC_TIME_VSYSCALL_OLD
Original file line number Diff line number Diff line change @@ -61,18 +61,8 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
61
61
return sf -> gprs [8 ];
62
62
}
63
63
64
- /*
65
- * The idle loop on a S390...
66
- */
67
- static void default_idle (void )
64
+ void arch_cpu_idle (void )
68
65
{
69
- if (cpu_is_offline (smp_processor_id ()))
70
- cpu_die ();
71
- local_irq_disable ();
72
- if (need_resched ()) {
73
- local_irq_enable ();
74
- return ;
75
- }
76
66
local_mcck_disable ();
77
67
if (test_thread_flag (TIF_MCCK_PENDING )) {
78
68
local_mcck_enable ();
@@ -83,19 +73,15 @@ static void default_idle(void)
83
73
vtime_stop_cpu ();
84
74
}
85
75
86
- void cpu_idle (void )
76
+ void arch_cpu_idle_exit (void )
87
77
{
88
- for (;;) {
89
- tick_nohz_idle_enter ();
90
- rcu_idle_enter ();
91
- while (!need_resched () && !test_thread_flag (TIF_MCCK_PENDING ))
92
- default_idle ();
93
- rcu_idle_exit ();
94
- tick_nohz_idle_exit ();
95
- if (test_thread_flag (TIF_MCCK_PENDING ))
96
- s390_handle_mcck ();
97
- schedule_preempt_disabled ();
98
- }
78
+ if (test_thread_flag (TIF_MCCK_PENDING ))
79
+ s390_handle_mcck ();
80
+ }
81
+
82
+ void arch_cpu_idle_dead (void )
83
+ {
84
+ cpu_die ();
99
85
}
100
86
101
87
extern void __kprobes kernel_thread_starter (void );
Original file line number Diff line number Diff line change @@ -711,8 +711,7 @@ static void __cpuinit smp_start_secondary(void *cpuvoid)
711
711
set_cpu_online (smp_processor_id (), true);
712
712
inc_irq_stat (CPU_RST );
713
713
local_irq_enable ();
714
- /* cpu_idle will call schedule for us */
715
- cpu_idle ();
714
+ cpu_startup_entry (CPUHP_ONLINE );
716
715
}
717
716
718
717
/* Upping and downing of CPUs */
Original file line number Diff line number Diff line change @@ -158,8 +158,6 @@ void __kprobes vtime_stop_cpu(void)
158
158
unsigned long psw_mask ;
159
159
160
160
trace_hardirqs_on ();
161
- /* Don't trace preempt off for idle. */
162
- stop_critical_timings ();
163
161
164
162
/* Wait for external, I/O or machine check interrupt. */
165
163
psw_mask = psw_kernel_bits | PSW_MASK_WAIT | PSW_MASK_DAT |
@@ -169,9 +167,6 @@ void __kprobes vtime_stop_cpu(void)
169
167
/* Call the assembler magic in entry.S */
170
168
psw_idle (idle , psw_mask );
171
169
172
- /* Reenable preemption tracer. */
173
- start_critical_timings ();
174
-
175
170
/* Account time spent with enabled wait psw loaded as idle time. */
176
171
idle -> sequence ++ ;
177
172
smp_wmb ();
You can’t perform that action at this time.
0 commit comments