diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/hypfs/hypfs_diag.c | 2 | ||||
-rw-r--r-- | arch/s390/include/asm/cputime.h | 6 | ||||
-rw-r--r-- | arch/s390/kernel/ipl.c | 7 | ||||
-rw-r--r-- | arch/s390/kernel/processor.c | 6 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 7 | ||||
-rw-r--r-- | arch/s390/kernel/swsusp_asm64.S | 2 |
6 files changed, 16 insertions, 14 deletions
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c index 704dd396257b..77df726180ba 100644 --- a/arch/s390/hypfs/hypfs_diag.c +++ b/arch/s390/hypfs/hypfs_diag.c | |||
@@ -438,7 +438,7 @@ static int diag204_probe(void) | |||
438 | } | 438 | } |
439 | if (diag204((unsigned long)SUBC_STIB6 | | 439 | if (diag204((unsigned long)SUBC_STIB6 | |
440 | (unsigned long)INFO_EXT, pages, buf) >= 0) { | 440 | (unsigned long)INFO_EXT, pages, buf) >= 0) { |
441 | diag204_store_sc = SUBC_STIB7; | 441 | diag204_store_sc = SUBC_STIB6; |
442 | diag204_info_type = INFO_EXT; | 442 | diag204_info_type = INFO_EXT; |
443 | goto out; | 443 | goto out; |
444 | } | 444 | } |
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h index 24b1244aadb9..f23961ada7fb 100644 --- a/arch/s390/include/asm/cputime.h +++ b/arch/s390/include/asm/cputime.h | |||
@@ -78,7 +78,7 @@ cputime64_to_jiffies64(cputime64_t cputime) | |||
78 | static inline unsigned int | 78 | static inline unsigned int |
79 | cputime_to_msecs(const cputime_t cputime) | 79 | cputime_to_msecs(const cputime_t cputime) |
80 | { | 80 | { |
81 | return __div(cputime, 4096000); | 81 | return cputime_div(cputime, 4096000); |
82 | } | 82 | } |
83 | 83 | ||
84 | static inline cputime_t | 84 | static inline cputime_t |
@@ -160,7 +160,7 @@ cputime_to_timeval(const cputime_t cputime, struct timeval *value) | |||
160 | static inline clock_t | 160 | static inline clock_t |
161 | cputime_to_clock_t(cputime_t cputime) | 161 | cputime_to_clock_t(cputime_t cputime) |
162 | { | 162 | { |
163 | return __div(cputime, 4096000000ULL / USER_HZ); | 163 | return cputime_div(cputime, 4096000000ULL / USER_HZ); |
164 | } | 164 | } |
165 | 165 | ||
166 | static inline cputime_t | 166 | static inline cputime_t |
@@ -175,7 +175,7 @@ clock_t_to_cputime(unsigned long x) | |||
175 | static inline clock_t | 175 | static inline clock_t |
176 | cputime64_to_clock_t(cputime64_t cputime) | 176 | cputime64_to_clock_t(cputime64_t cputime) |
177 | { | 177 | { |
178 | return __div(cputime, 4096000000ULL / USER_HZ); | 178 | return cputime_div(cputime, 4096000000ULL / USER_HZ); |
179 | } | 179 | } |
180 | 180 | ||
181 | struct s390_idle_data { | 181 | struct s390_idle_data { |
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index ee57a42e6e93..4890ac6d7faa 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -1595,10 +1595,9 @@ static void stop_run(struct shutdown_trigger *trigger) | |||
1595 | { | 1595 | { |
1596 | if (strcmp(trigger->name, ON_PANIC_STR) == 0) | 1596 | if (strcmp(trigger->name, ON_PANIC_STR) == 0) |
1597 | disabled_wait((unsigned long) __builtin_return_address(0)); | 1597 | disabled_wait((unsigned long) __builtin_return_address(0)); |
1598 | else { | 1598 | while (signal_processor(smp_processor_id(), sigp_stop) == sigp_busy) |
1599 | signal_processor(smp_processor_id(), sigp_stop); | 1599 | cpu_relax(); |
1600 | for (;;); | 1600 | for (;;); |
1601 | } | ||
1602 | } | 1601 | } |
1603 | 1602 | ||
1604 | static struct shutdown_action stop_action = {SHUTDOWN_ACTION_STOP_STR, | 1603 | static struct shutdown_action stop_action = {SHUTDOWN_ACTION_STOP_STR, |
diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c index 802c8ab247f3..0729f36c2fe3 100644 --- a/arch/s390/kernel/processor.c +++ b/arch/s390/kernel/processor.c | |||
@@ -31,9 +31,9 @@ void __cpuinit print_cpu_info(void) | |||
31 | 31 | ||
32 | static int show_cpuinfo(struct seq_file *m, void *v) | 32 | static int show_cpuinfo(struct seq_file *m, void *v) |
33 | { | 33 | { |
34 | static const char *hwcap_str[9] = { | 34 | static const char *hwcap_str[10] = { |
35 | "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", | 35 | "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp", |
36 | "edat", "etf3eh" | 36 | "edat", "etf3eh", "highgprs" |
37 | }; | 37 | }; |
38 | struct _lowcore *lc; | 38 | struct _lowcore *lc; |
39 | unsigned long n = (unsigned long) v - 1; | 39 | unsigned long n = (unsigned long) v - 1; |
@@ -48,7 +48,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
48 | num_online_cpus(), loops_per_jiffy/(500000/HZ), | 48 | num_online_cpus(), loops_per_jiffy/(500000/HZ), |
49 | (loops_per_jiffy/(5000/HZ))%100); | 49 | (loops_per_jiffy/(5000/HZ))%100); |
50 | seq_puts(m, "features\t: "); | 50 | seq_puts(m, "features\t: "); |
51 | for (i = 0; i < 9; i++) | 51 | for (i = 0; i < 10; i++) |
52 | if (hwcap_str[i] && (elf_hwcap & (1UL << i))) | 52 | if (hwcap_str[i] && (elf_hwcap & (1UL << i))) |
53 | seq_printf(m, "%s ", hwcap_str[i]); | 53 | seq_printf(m, "%s ", hwcap_str[i]); |
54 | seq_puts(m, "\n"); | 54 | seq_puts(m, "\n"); |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index c932caa5e850..93e52039321b 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -76,7 +76,6 @@ static int cpu_stopped(int cpu) | |||
76 | __u32 status; | 76 | __u32 status; |
77 | 77 | ||
78 | switch (signal_processor_ps(&status, 0, cpu, sigp_sense)) { | 78 | switch (signal_processor_ps(&status, 0, cpu, sigp_sense)) { |
79 | case sigp_order_code_accepted: | ||
80 | case sigp_status_stored: | 79 | case sigp_status_stored: |
81 | /* Check for stopped and check stop state */ | 80 | /* Check for stopped and check stop state */ |
82 | if (status & 0x50) | 81 | if (status & 0x50) |
@@ -638,6 +637,8 @@ void __cpu_die(unsigned int cpu) | |||
638 | /* Wait until target cpu is down */ | 637 | /* Wait until target cpu is down */ |
639 | while (!cpu_stopped(cpu)) | 638 | while (!cpu_stopped(cpu)) |
640 | cpu_relax(); | 639 | cpu_relax(); |
640 | while (signal_processor_p(0, cpu, sigp_set_prefix) == sigp_busy) | ||
641 | udelay(10); | ||
641 | smp_free_lowcore(cpu); | 642 | smp_free_lowcore(cpu); |
642 | pr_info("Processor %d stopped\n", cpu); | 643 | pr_info("Processor %d stopped\n", cpu); |
643 | } | 644 | } |
@@ -645,8 +646,8 @@ void __cpu_die(unsigned int cpu) | |||
645 | void cpu_die(void) | 646 | void cpu_die(void) |
646 | { | 647 | { |
647 | idle_task_exit(); | 648 | idle_task_exit(); |
648 | signal_processor(smp_processor_id(), sigp_stop); | 649 | while (signal_processor(smp_processor_id(), sigp_stop) == sigp_busy) |
649 | BUG(); | 650 | cpu_relax(); |
650 | for (;;); | 651 | for (;;); |
651 | } | 652 | } |
652 | 653 | ||
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S index 7c8653e27db6..0c26cc1898ec 100644 --- a/arch/s390/kernel/swsusp_asm64.S +++ b/arch/s390/kernel/swsusp_asm64.S | |||
@@ -199,6 +199,7 @@ pgm_check_entry: | |||
199 | brc 2,4b /* busy, try again */ | 199 | brc 2,4b /* busy, try again */ |
200 | 5: | 200 | 5: |
201 | sigp %r9,%r2,__SIGP_STOP /* stop resume (current) CPU */ | 201 | sigp %r9,%r2,__SIGP_STOP /* stop resume (current) CPU */ |
202 | brc 2,5b /* busy, try again */ | ||
202 | 6: j 6b | 203 | 6: j 6b |
203 | 204 | ||
204 | restart_suspend: | 205 | restart_suspend: |
@@ -206,6 +207,7 @@ restart_suspend: | |||
206 | llgh %r2,0(%r1) | 207 | llgh %r2,0(%r1) |
207 | 7: | 208 | 7: |
208 | sigp %r9,%r2,__SIGP_SENSE /* Wait for resume CPU */ | 209 | sigp %r9,%r2,__SIGP_SENSE /* Wait for resume CPU */ |
210 | brc 8,7b /* accepted, status 0, still running */ | ||
209 | brc 2,7b /* busy, try again */ | 211 | brc 2,7b /* busy, try again */ |
210 | tmll %r9,0x40 /* Test if resume CPU is stopped */ | 212 | tmll %r9,0x40 /* Test if resume CPU is stopped */ |
211 | jz 7b | 213 | jz 7b |