Commit 0d2be088 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

[S390] Fix compile on !CONFIG_SMP.

Commit fae8b22d
"[S390] Add per-cpu idle time / idle count sysfs attributes" causes
a link error on !CONFIG_SMP.
Fix this by adding some #ifdef's. Real fix would be to cleanup the
code since we don't register a cpu on !CONFIG_SMP. But that would
be quite a big patch. For the time being this is good enough.

arch/s390/kernel/built-in.o: In function `do_monitor_call':
(.text+0x50d4): undefined reference to `per_cpu__s390_idle'
arch/s390/kernel/built-in.o: In function `cpu_idle':
(.text+0x518c): undefined reference to `per_cpu__s390_idle'
make: *** [.tmp_vmlinux1] Error 1
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 931bb68b
...@@ -92,6 +92,7 @@ EXPORT_SYMBOL(unregister_idle_notifier); ...@@ -92,6 +92,7 @@ EXPORT_SYMBOL(unregister_idle_notifier);
void do_monitor_call(struct pt_regs *regs, long interruption_code) void do_monitor_call(struct pt_regs *regs, long interruption_code)
{ {
#ifdef CONFIG_SMP
struct s390_idle_data *idle; struct s390_idle_data *idle;
idle = &__get_cpu_var(s390_idle); idle = &__get_cpu_var(s390_idle);
...@@ -99,7 +100,7 @@ void do_monitor_call(struct pt_regs *regs, long interruption_code) ...@@ -99,7 +100,7 @@ void do_monitor_call(struct pt_regs *regs, long interruption_code)
idle->idle_time += get_clock() - idle->idle_enter; idle->idle_time += get_clock() - idle->idle_enter;
idle->in_idle = 0; idle->in_idle = 0;
spin_unlock(&idle->lock); spin_unlock(&idle->lock);
#endif
/* disable monitor call class 0 */ /* disable monitor call class 0 */
__ctl_clear_bit(8, 15); __ctl_clear_bit(8, 15);
...@@ -114,7 +115,9 @@ extern void s390_handle_mcck(void); ...@@ -114,7 +115,9 @@ extern void s390_handle_mcck(void);
static void default_idle(void) static void default_idle(void)
{ {
int cpu, rc; int cpu, rc;
#ifdef CONFIG_SMP
struct s390_idle_data *idle; struct s390_idle_data *idle;
#endif
/* CPU is going idle. */ /* CPU is going idle. */
cpu = smp_processor_id(); cpu = smp_processor_id();
...@@ -151,13 +154,14 @@ static void default_idle(void) ...@@ -151,13 +154,14 @@ static void default_idle(void)
s390_handle_mcck(); s390_handle_mcck();
return; return;
} }
#ifdef CONFIG_SMP
idle = &__get_cpu_var(s390_idle); idle = &__get_cpu_var(s390_idle);
spin_lock(&idle->lock); spin_lock(&idle->lock);
idle->idle_count++; idle->idle_count++;
idle->in_idle = 1; idle->in_idle = 1;
idle->idle_enter = get_clock(); idle->idle_enter = get_clock();
spin_unlock(&idle->lock); spin_unlock(&idle->lock);
#endif
trace_hardirqs_on(); trace_hardirqs_on();
/* Wait for external, I/O or machine check interrupt. */ /* Wait for external, I/O or machine check interrupt. */
__load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT | __load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT |
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment