diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-05 11:39:25 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-05 11:39:25 -0800 |
commit | c11eef21aa119a41fa210b9693f2346997885bcf (patch) | |
tree | b2d874f4b3f8a65029bc184a2db6b999b8e4d1c1 /arch | |
parent | 221d46841b931d0e6b11e6251e482f2afe3974dd (diff) | |
parent | d2cb0e6ecbe0ef93ab36631cd17ec6cf92b69c5a (diff) |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] tod clock: announce clocksource as perfect
[S390] Rename "idle_time" attribute to "idle_time_us".
[S390] Fix priority mistakes in drivers/s390/cio/cmf.c
[S390] Fix memory detection.
[S390] Fix compile on !CONFIG_SMP.
[S390] device_schedule_callback() for dcssblk.
[S390] Fix smsgiucv init on no iucv machines
[S390] cio: use INIT_WORK to initialize struct work.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/s390/kernel/early.c | 4 | ||||
-rw-r--r-- | arch/s390/kernel/process.c | 8 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 6 | ||||
-rw-r--r-- | arch/s390/kernel/time.c | 2 |
4 files changed, 13 insertions, 7 deletions
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index e6289ee74ec..8bf4ae1150b 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c @@ -200,11 +200,13 @@ static noinline __init void find_memory_chunks(unsigned long memsize) cc = __tprot(addr); while (cc == old_cc) { addr += CHUNK_INCR; - cc = __tprot(addr); + if (addr >= memsize) + break; #ifndef CONFIG_64BIT if (addr == ADDR2G) break; #endif + cc = __tprot(addr); } if (old_addr != addr && diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 96492cf2d49..29f7884b4ff 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -92,6 +92,7 @@ EXPORT_SYMBOL(unregister_idle_notifier); void do_monitor_call(struct pt_regs *regs, long interruption_code) { +#ifdef CONFIG_SMP struct s390_idle_data *idle; idle = &__get_cpu_var(s390_idle); @@ -99,7 +100,7 @@ void do_monitor_call(struct pt_regs *regs, long interruption_code) idle->idle_time += get_clock() - idle->idle_enter; idle->in_idle = 0; spin_unlock(&idle->lock); - +#endif /* disable monitor call class 0 */ __ctl_clear_bit(8, 15); @@ -114,7 +115,9 @@ extern void s390_handle_mcck(void); static void default_idle(void) { int cpu, rc; +#ifdef CONFIG_SMP struct s390_idle_data *idle; +#endif /* CPU is going idle. */ cpu = smp_processor_id(); @@ -151,13 +154,14 @@ static void default_idle(void) s390_handle_mcck(); return; } - +#ifdef CONFIG_SMP idle = &__get_cpu_var(s390_idle); spin_lock(&idle->lock); idle->idle_count++; idle->in_idle = 1; idle->idle_enter = get_clock(); spin_unlock(&idle->lock); +#endif trace_hardirqs_on(); /* Wait for external, I/O or machine check interrupt. */ __load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT | diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 1d97fe1c0e5..b05ae858425 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c @@ -788,14 +788,14 @@ static ssize_t show_idle_time(struct sys_device *dev, char *buf) } new_time = idle->idle_time; spin_unlock_irq(&idle->lock); - return sprintf(buf, "%llu us\n", new_time >> 12); + return sprintf(buf, "%llu\n", new_time >> 12); } -static SYSDEV_ATTR(idle_time, 0444, show_idle_time, NULL); +static SYSDEV_ATTR(idle_time_us, 0444, show_idle_time, NULL); static struct attribute *cpu_attrs[] = { &attr_capability.attr, &attr_idle_count.attr, - &attr_idle_time.attr, + &attr_idle_time_us.attr, NULL, }; diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index 48dae49bc1e..a963fe81359 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c @@ -307,7 +307,7 @@ static cycle_t read_tod_clock(void) static struct clocksource clocksource_tod = { .name = "tod", - .rating = 100, + .rating = 400, .read = read_tod_clock, .mask = -1ULL, .mult = 1000, |