diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-29 11:49:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-29 11:49:18 -0400 |
commit | f56f44001cb5b40089deac094dbb74e5c9f64d81 (patch) | |
tree | 0fb004b475852ed87121a774de7b768bb6164156 /arch | |
parent | 162164f7e92da970666e7492fd58644f3c1f8574 (diff) | |
parent | 9ec2708053b647969bee862902872d44a5f9b439 (diff) |
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
[S390] fix kprobes single stepping
[S390] tape: fix dbf usage
[S390] dasd: provide a Sense Path Group ID ioctl
[S390] ftrace: select HAVE_C_RECORDMCOUNT
[S390] vdso: get rid of redefinition warnings
[S390] facility detection: remove unused variable
[S390] hypfs: Fix error handling in hypfs_diag initialization
[S390] topology: fix cpu masks for topology=off case
[S390] topology: add SCHED_MC config option
[S390] Kconfig: add machine type number to code generation options
[S390] Add z196 machine type to setup_hwcaps
Diffstat (limited to 'arch')
-rw-r--r-- | arch/s390/Kconfig | 61 | ||||
-rw-r--r-- | arch/s390/hypfs/hypfs_diag.c | 19 | ||||
-rw-r--r-- | arch/s390/include/asm/dasd.h | 40 | ||||
-rw-r--r-- | arch/s390/kernel/asm-offsets.c | 6 | ||||
-rw-r--r-- | arch/s390/kernel/early.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/entry.S | 1 | ||||
-rw-r--r-- | arch/s390/kernel/entry64.S | 1 | ||||
-rw-r--r-- | arch/s390/kernel/kprobes.c | 9 | ||||
-rw-r--r-- | arch/s390/kernel/setup.c | 3 | ||||
-rw-r--r-- | arch/s390/kernel/sysinfo.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/topology.c | 6 | ||||
-rw-r--r-- | arch/s390/kernel/vdso32/clock_getres.S | 6 | ||||
-rw-r--r-- | arch/s390/kernel/vdso32/clock_gettime.S | 4 | ||||
-rw-r--r-- | arch/s390/kernel/vdso64/clock_getres.S | 6 | ||||
-rw-r--r-- | arch/s390/kernel/vdso64/clock_gettime.S | 4 |
15 files changed, 99 insertions, 71 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index fabb40bc4e19..e0b98e71ff47 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -80,6 +80,7 @@ config S390 | |||
80 | select HAVE_FUNCTION_TRACER | 80 | select HAVE_FUNCTION_TRACER |
81 | select HAVE_FUNCTION_TRACE_MCOUNT_TEST | 81 | select HAVE_FUNCTION_TRACE_MCOUNT_TEST |
82 | select HAVE_FTRACE_MCOUNT_RECORD | 82 | select HAVE_FTRACE_MCOUNT_RECORD |
83 | select HAVE_C_RECORDMCOUNT | ||
83 | select HAVE_SYSCALL_TRACEPOINTS | 84 | select HAVE_SYSCALL_TRACEPOINTS |
84 | select HAVE_DYNAMIC_FTRACE | 85 | select HAVE_DYNAMIC_FTRACE |
85 | select HAVE_FUNCTION_GRAPH_TRACER | 86 | select HAVE_FUNCTION_GRAPH_TRACER |
@@ -144,7 +145,7 @@ source "kernel/time/Kconfig" | |||
144 | config 64BIT | 145 | config 64BIT |
145 | bool "64 bit kernel" | 146 | bool "64 bit kernel" |
146 | help | 147 | help |
147 | Select this option if you have a 64 bit IBM zSeries machine | 148 | Select this option if you have an IBM z/Architecture machine |
148 | and want to use the 64 bit addressing mode. | 149 | and want to use the 64 bit addressing mode. |
149 | 150 | ||
150 | config 32BIT | 151 | config 32BIT |
@@ -196,9 +197,18 @@ config HOTPLUG_CPU | |||
196 | can be controlled through /sys/devices/system/cpu/cpu#. | 197 | can be controlled through /sys/devices/system/cpu/cpu#. |
197 | Say N if you want to disable CPU hotplug. | 198 | Say N if you want to disable CPU hotplug. |
198 | 199 | ||
200 | config SCHED_MC | ||
201 | def_bool y | ||
202 | prompt "Multi-core scheduler support" | ||
203 | depends on SMP | ||
204 | help | ||
205 | Multi-core scheduler support improves the CPU scheduler's decision | ||
206 | making when dealing with multi-core CPU chips at a cost of slightly | ||
207 | increased overhead in some places. | ||
208 | |||
199 | config SCHED_BOOK | 209 | config SCHED_BOOK |
200 | bool "Book scheduler support" | 210 | bool "Book scheduler support" |
201 | depends on SMP | 211 | depends on SMP && SCHED_MC |
202 | help | 212 | help |
203 | Book scheduler support improves the CPU scheduler's decision making | 213 | Book scheduler support improves the CPU scheduler's decision making |
204 | when dealing with machines that have several books. | 214 | when dealing with machines that have several books. |
@@ -208,7 +218,7 @@ config MATHEMU | |||
208 | depends on MARCH_G5 | 218 | depends on MARCH_G5 |
209 | help | 219 | help |
210 | This option is required for IEEE compliant floating point arithmetic | 220 | This option is required for IEEE compliant floating point arithmetic |
211 | on older S/390 machines. Say Y unless you know your machine doesn't | 221 | on older ESA/390 machines. Say Y unless you know your machine doesn't |
212 | need this. | 222 | need this. |
213 | 223 | ||
214 | config COMPAT | 224 | config COMPAT |
@@ -237,8 +247,8 @@ config S390_EXEC_PROTECT | |||
237 | space programs and it also selects the addressing mode option above. | 247 | space programs and it also selects the addressing mode option above. |
238 | The kernel parameter noexec=on will enable this feature and also | 248 | The kernel parameter noexec=on will enable this feature and also |
239 | switch the addressing modes, default is disabled. Enabling this (via | 249 | switch the addressing modes, default is disabled. Enabling this (via |
240 | kernel parameter) on machines earlier than IBM System z9-109 EC/BC | 250 | kernel parameter) on machines earlier than IBM System z9 this will |
241 | will reduce system performance. | 251 | reduce system performance. |
242 | 252 | ||
243 | comment "Code generation options" | 253 | comment "Code generation options" |
244 | 254 | ||
@@ -247,49 +257,46 @@ choice | |||
247 | default MARCH_G5 | 257 | default MARCH_G5 |
248 | 258 | ||
249 | config MARCH_G5 | 259 | config MARCH_G5 |
250 | bool "S/390 model G5 and G6" | 260 | bool "System/390 model G5 and G6" |
251 | depends on !64BIT | 261 | depends on !64BIT |
252 | help | 262 | help |
253 | Select this to build a 31 bit kernel that works | 263 | Select this to build a 31 bit kernel that works |
254 | on all S/390 and zSeries machines. | 264 | on all ESA/390 and z/Architecture machines. |
255 | 265 | ||
256 | config MARCH_Z900 | 266 | config MARCH_Z900 |
257 | bool "IBM eServer zSeries model z800 and z900" | 267 | bool "IBM zSeries model z800 and z900" |
258 | help | 268 | help |
259 | Select this to optimize for zSeries machines. This | 269 | Select this to enable optimizations for model z800/z900 (2064 and |
260 | will enable some optimizations that are not available | 270 | 2066 series). This will enable some optimizations that are not |
261 | on older 31 bit only CPUs. | 271 | available on older ESA/390 (31 Bit) only CPUs. |
262 | 272 | ||
263 | config MARCH_Z990 | 273 | config MARCH_Z990 |
264 | bool "IBM eServer zSeries model z890 and z990" | 274 | bool "IBM zSeries model z890 and z990" |
265 | help | 275 | help |
266 | Select this enable optimizations for model z890/z990. | 276 | Select this to enable optimizations for model z890/z990 (2084 and |
267 | This will be slightly faster but does not work on | 277 | 2086 series). The kernel will be slightly faster but will not work |
268 | older machines such as the z900. | 278 | on older machines. |
269 | 279 | ||
270 | config MARCH_Z9_109 | 280 | config MARCH_Z9_109 |
271 | bool "IBM System z9" | 281 | bool "IBM System z9" |
272 | help | 282 | help |
273 | Select this to enable optimizations for IBM System z9-109, IBM | 283 | Select this to enable optimizations for IBM System z9 (2094 and |
274 | System z9 Enterprise Class (z9 EC), and IBM System z9 Business | 284 | 2096 series). The kernel will be slightly faster but will not work |
275 | Class (z9 BC). The kernel will be slightly faster but will not | 285 | on older machines. |
276 | work on older machines such as the z990, z890, z900, and z800. | ||
277 | 286 | ||
278 | config MARCH_Z10 | 287 | config MARCH_Z10 |
279 | bool "IBM System z10" | 288 | bool "IBM System z10" |
280 | help | 289 | help |
281 | Select this to enable optimizations for IBM System z10. The | 290 | Select this to enable optimizations for IBM System z10 (2097 and |
282 | kernel will be slightly faster but will not work on older | 291 | 2098 series). The kernel will be slightly faster but will not work |
283 | machines such as the z990, z890, z900, z800, z9-109, z9-ec | 292 | on older machines. |
284 | and z9-bc. | ||
285 | 293 | ||
286 | config MARCH_Z196 | 294 | config MARCH_Z196 |
287 | bool "IBM zEnterprise 196" | 295 | bool "IBM zEnterprise 196" |
288 | help | 296 | help |
289 | Select this to enable optimizations for IBM zEnterprise 196. | 297 | Select this to enable optimizations for IBM zEnterprise 196 |
290 | The kernel will be slightly faster but will not work on older | 298 | (2817 series). The kernel will be slightly faster but will not work |
291 | machines such as the z990, z890, z900, z800, z9-109, z9-ec, | 299 | on older machines. |
292 | z9-bc, z10-ec and z10-bc. | ||
293 | 300 | ||
294 | endchoice | 301 | endchoice |
295 | 302 | ||
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c index 020e51c063d2..cd4a81be9cf8 100644 --- a/arch/s390/hypfs/hypfs_diag.c +++ b/arch/s390/hypfs/hypfs_diag.c | |||
@@ -638,18 +638,21 @@ __init int hypfs_diag_init(void) | |||
638 | pr_err("The hardware system does not support hypfs\n"); | 638 | pr_err("The hardware system does not support hypfs\n"); |
639 | return -ENODATA; | 639 | return -ENODATA; |
640 | } | 640 | } |
641 | rc = diag224_get_name_table(); | ||
642 | if (rc) { | ||
643 | diag204_free_buffer(); | ||
644 | pr_err("The hardware system does not provide all " | ||
645 | "functions required by hypfs\n"); | ||
646 | } | ||
647 | if (diag204_info_type == INFO_EXT) { | 641 | if (diag204_info_type == INFO_EXT) { |
648 | rc = hypfs_dbfs_init(); | 642 | rc = hypfs_dbfs_init(); |
649 | if (rc) | 643 | if (rc) |
650 | diag204_free_buffer(); | 644 | return rc; |
651 | } | 645 | } |
652 | return rc; | 646 | if (MACHINE_IS_LPAR) { |
647 | rc = diag224_get_name_table(); | ||
648 | if (rc) { | ||
649 | pr_err("The hardware system does not provide all " | ||
650 | "functions required by hypfs\n"); | ||
651 | debugfs_remove(dbfs_d204_file); | ||
652 | return rc; | ||
653 | } | ||
654 | } | ||
655 | return 0; | ||
653 | } | 656 | } |
654 | 657 | ||
655 | void hypfs_diag_exit(void) | 658 | void hypfs_diag_exit(void) |
diff --git a/arch/s390/include/asm/dasd.h b/arch/s390/include/asm/dasd.h index 218bce81ec70..b604a9186f8e 100644 --- a/arch/s390/include/asm/dasd.h +++ b/arch/s390/include/asm/dasd.h | |||
@@ -217,6 +217,25 @@ typedef struct dasd_symmio_parms { | |||
217 | int rssd_result_len; | 217 | int rssd_result_len; |
218 | } __attribute__ ((packed)) dasd_symmio_parms_t; | 218 | } __attribute__ ((packed)) dasd_symmio_parms_t; |
219 | 219 | ||
220 | /* | ||
221 | * Data returned by Sense Path Group ID (SNID) | ||
222 | */ | ||
223 | struct dasd_snid_data { | ||
224 | struct { | ||
225 | __u8 group:2; | ||
226 | __u8 reserve:2; | ||
227 | __u8 mode:1; | ||
228 | __u8 res:3; | ||
229 | } __attribute__ ((packed)) path_state; | ||
230 | __u8 pgid[11]; | ||
231 | } __attribute__ ((packed)); | ||
232 | |||
233 | struct dasd_snid_ioctl_data { | ||
234 | struct dasd_snid_data data; | ||
235 | __u8 path_mask; | ||
236 | } __attribute__ ((packed)); | ||
237 | |||
238 | |||
220 | /******************************************************************************** | 239 | /******************************************************************************** |
221 | * SECTION: Definition of IOCTLs | 240 | * SECTION: Definition of IOCTLs |
222 | * | 241 | * |
@@ -261,25 +280,10 @@ typedef struct dasd_symmio_parms { | |||
261 | /* Set Attributes (cache operations) */ | 280 | /* Set Attributes (cache operations) */ |
262 | #define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) | 281 | #define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) |
263 | 282 | ||
283 | /* Get Sense Path Group ID (SNID) data */ | ||
284 | #define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data) | ||
285 | |||
264 | #define BIODASDSYMMIO _IOWR(DASD_IOCTL_LETTER, 240, dasd_symmio_parms_t) | 286 | #define BIODASDSYMMIO _IOWR(DASD_IOCTL_LETTER, 240, dasd_symmio_parms_t) |
265 | 287 | ||
266 | #endif /* DASD_H */ | 288 | #endif /* DASD_H */ |
267 | 289 | ||
268 | /* | ||
269 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
270 | * Emacs will notice this stuff at the end of the file and automatically | ||
271 | * adjust the settings for this buffer only. This must remain at the end | ||
272 | * of the file. | ||
273 | * --------------------------------------------------------------------------- | ||
274 | * Local variables: | ||
275 | * c-indent-level: 4 | ||
276 | * c-brace-imaginary-offset: 0 | ||
277 | * c-brace-offset: -4 | ||
278 | * c-argdecl-indent: 4 | ||
279 | * c-label-offset: -4 | ||
280 | * c-continued-statement-offset: 4 | ||
281 | * c-continued-brace-offset: 0 | ||
282 | * indent-tabs-mode: nil | ||
283 | * tab-width: 8 | ||
284 | * End: | ||
285 | */ | ||
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c index f3c1b823c9a8..33982e7ce04d 100644 --- a/arch/s390/kernel/asm-offsets.c +++ b/arch/s390/kernel/asm-offsets.c | |||
@@ -66,9 +66,9 @@ int main(void) | |||
66 | DEFINE(__VDSO_ECTG_BASE, offsetof(struct vdso_per_cpu_data, ectg_timer_base)); | 66 | DEFINE(__VDSO_ECTG_BASE, offsetof(struct vdso_per_cpu_data, ectg_timer_base)); |
67 | DEFINE(__VDSO_ECTG_USER, offsetof(struct vdso_per_cpu_data, ectg_user_time)); | 67 | DEFINE(__VDSO_ECTG_USER, offsetof(struct vdso_per_cpu_data, ectg_user_time)); |
68 | /* constants used by the vdso */ | 68 | /* constants used by the vdso */ |
69 | DEFINE(CLOCK_REALTIME, CLOCK_REALTIME); | 69 | DEFINE(__CLOCK_REALTIME, CLOCK_REALTIME); |
70 | DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC); | 70 | DEFINE(__CLOCK_MONOTONIC, CLOCK_MONOTONIC); |
71 | DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC); | 71 | DEFINE(__CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC); |
72 | BLANK(); | 72 | BLANK(); |
73 | /* constants for SIGP */ | 73 | /* constants for SIGP */ |
74 | DEFINE(__SIGP_STOP, sigp_stop); | 74 | DEFINE(__SIGP_STOP, sigp_stop); |
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index d149609e46e6..3b7e7dddc324 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c | |||
@@ -282,8 +282,6 @@ static noinline __init void setup_facility_list(void) | |||
282 | static noinline __init void setup_hpage(void) | 282 | static noinline __init void setup_hpage(void) |
283 | { | 283 | { |
284 | #ifndef CONFIG_DEBUG_PAGEALLOC | 284 | #ifndef CONFIG_DEBUG_PAGEALLOC |
285 | unsigned int facilities; | ||
286 | |||
287 | if (!test_facility(2) || !test_facility(8)) | 285 | if (!test_facility(2) || !test_facility(8)) |
288 | return; | 286 | return; |
289 | S390_lowcore.machine_flags |= MACHINE_FLAG_HPAGE; | 287 | S390_lowcore.machine_flags |= MACHINE_FLAG_HPAGE; |
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 5efce7202984..1ecc337fb679 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -557,6 +557,7 @@ pgm_svcper: | |||
557 | # per was called from kernel, must be kprobes | 557 | # per was called from kernel, must be kprobes |
558 | # | 558 | # |
559 | kernel_per: | 559 | kernel_per: |
560 | REENABLE_IRQS | ||
560 | mvi SP_SVCNR(%r15),0xff # set trap indication to pgm check | 561 | mvi SP_SVCNR(%r15),0xff # set trap indication to pgm check |
561 | mvi SP_SVCNR+1(%r15),0xff | 562 | mvi SP_SVCNR+1(%r15),0xff |
562 | la %r2,SP_PTREGS(%r15) # address of register-save area | 563 | la %r2,SP_PTREGS(%r15) # address of register-save area |
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index a2be23922f43..8f3e802174db 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S | |||
@@ -568,6 +568,7 @@ pgm_svcper: | |||
568 | # per was called from kernel, must be kprobes | 568 | # per was called from kernel, must be kprobes |
569 | # | 569 | # |
570 | kernel_per: | 570 | kernel_per: |
571 | REENABLE_IRQS | ||
571 | xc SP_SVCNR(2,%r15),SP_SVCNR(%r15) # clear svc number | 572 | xc SP_SVCNR(2,%r15),SP_SVCNR(%r15) # clear svc number |
572 | la %r2,SP_PTREGS(%r15) # address of register-save area | 573 | la %r2,SP_PTREGS(%r15) # address of register-save area |
573 | brasl %r14,do_single_step | 574 | brasl %r14,do_single_step |
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c index 2a3d2bf6f083..d60fc4398516 100644 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c | |||
@@ -316,6 +316,8 @@ static int __kprobes kprobe_handler(struct pt_regs *regs) | |||
316 | return 1; | 316 | return 1; |
317 | 317 | ||
318 | ss_probe: | 318 | ss_probe: |
319 | if (regs->psw.mask & (PSW_MASK_PER | PSW_MASK_IO)) | ||
320 | local_irq_disable(); | ||
319 | prepare_singlestep(p, regs); | 321 | prepare_singlestep(p, regs); |
320 | kcb->kprobe_status = KPROBE_HIT_SS; | 322 | kcb->kprobe_status = KPROBE_HIT_SS; |
321 | return 1; | 323 | return 1; |
@@ -463,6 +465,8 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs) | |||
463 | goto out; | 465 | goto out; |
464 | } | 466 | } |
465 | reset_current_kprobe(); | 467 | reset_current_kprobe(); |
468 | if (regs->psw.mask & (PSW_MASK_PER | PSW_MASK_IO)) | ||
469 | local_irq_enable(); | ||
466 | out: | 470 | out: |
467 | preempt_enable_no_resched(); | 471 | preempt_enable_no_resched(); |
468 | 472 | ||
@@ -502,8 +506,11 @@ int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr) | |||
502 | regs->psw.mask |= kcb->kprobe_saved_imask; | 506 | regs->psw.mask |= kcb->kprobe_saved_imask; |
503 | if (kcb->kprobe_status == KPROBE_REENTER) | 507 | if (kcb->kprobe_status == KPROBE_REENTER) |
504 | restore_previous_kprobe(kcb); | 508 | restore_previous_kprobe(kcb); |
505 | else | 509 | else { |
506 | reset_current_kprobe(); | 510 | reset_current_kprobe(); |
511 | if (regs->psw.mask & (PSW_MASK_PER | PSW_MASK_IO)) | ||
512 | local_irq_enable(); | ||
513 | } | ||
507 | preempt_enable_no_resched(); | 514 | preempt_enable_no_resched(); |
508 | break; | 515 | break; |
509 | case KPROBE_HIT_ACTIVE: | 516 | case KPROBE_HIT_ACTIVE: |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index e3ceb911dc75..6f6350826c81 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -761,6 +761,9 @@ static void __init setup_hwcaps(void) | |||
761 | case 0x2098: | 761 | case 0x2098: |
762 | strcpy(elf_platform, "z10"); | 762 | strcpy(elf_platform, "z10"); |
763 | break; | 763 | break; |
764 | case 0x2817: | ||
765 | strcpy(elf_platform, "z196"); | ||
766 | break; | ||
764 | } | 767 | } |
765 | } | 768 | } |
766 | 769 | ||
diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c index f04d93aa48ec..5c9e439bf3f6 100644 --- a/arch/s390/kernel/sysinfo.c +++ b/arch/s390/kernel/sysinfo.c | |||
@@ -106,11 +106,13 @@ static int stsi_15_1_x(struct sysinfo_15_1_x *info, char *page, int len) | |||
106 | for (i = 0; i < TOPOLOGY_NR_MAG; i++) | 106 | for (i = 0; i < TOPOLOGY_NR_MAG; i++) |
107 | len += sprintf(page + len, " %d", info->mag[i]); | 107 | len += sprintf(page + len, " %d", info->mag[i]); |
108 | len += sprintf(page + len, "\n"); | 108 | len += sprintf(page + len, "\n"); |
109 | #ifdef CONFIG_SCHED_MC | ||
109 | store_topology(info); | 110 | store_topology(info); |
110 | len += sprintf(page + len, "CPU Topology SW: "); | 111 | len += sprintf(page + len, "CPU Topology SW: "); |
111 | for (i = 0; i < TOPOLOGY_NR_MAG; i++) | 112 | for (i = 0; i < TOPOLOGY_NR_MAG; i++) |
112 | len += sprintf(page + len, " %d", info->mag[i]); | 113 | len += sprintf(page + len, " %d", info->mag[i]); |
113 | len += sprintf(page + len, "\n"); | 114 | len += sprintf(page + len, "\n"); |
115 | #endif | ||
114 | return len; | 116 | return len; |
115 | } | 117 | } |
116 | 118 | ||
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c index a9dee9048ee5..94b06c31fc8a 100644 --- a/arch/s390/kernel/topology.c +++ b/arch/s390/kernel/topology.c | |||
@@ -53,8 +53,10 @@ static cpumask_t cpu_group_map(struct mask_info *info, unsigned int cpu) | |||
53 | cpumask_t mask; | 53 | cpumask_t mask; |
54 | 54 | ||
55 | cpus_clear(mask); | 55 | cpus_clear(mask); |
56 | if (!topology_enabled || !MACHINE_HAS_TOPOLOGY) | 56 | if (!topology_enabled || !MACHINE_HAS_TOPOLOGY) { |
57 | return cpu_possible_map; | 57 | cpumask_copy(&mask, cpumask_of(cpu)); |
58 | return mask; | ||
59 | } | ||
58 | while (info) { | 60 | while (info) { |
59 | if (cpu_isset(cpu, info->mask)) { | 61 | if (cpu_isset(cpu, info->mask)) { |
60 | mask = info->mask; | 62 | mask = info->mask; |
diff --git a/arch/s390/kernel/vdso32/clock_getres.S b/arch/s390/kernel/vdso32/clock_getres.S index 9532c4e6a9d2..36aaa25d05da 100644 --- a/arch/s390/kernel/vdso32/clock_getres.S +++ b/arch/s390/kernel/vdso32/clock_getres.S | |||
@@ -19,9 +19,9 @@ | |||
19 | .type __kernel_clock_getres,@function | 19 | .type __kernel_clock_getres,@function |
20 | __kernel_clock_getres: | 20 | __kernel_clock_getres: |
21 | .cfi_startproc | 21 | .cfi_startproc |
22 | chi %r2,CLOCK_REALTIME | 22 | chi %r2,__CLOCK_REALTIME |
23 | je 0f | 23 | je 0f |
24 | chi %r2,CLOCK_MONOTONIC | 24 | chi %r2,__CLOCK_MONOTONIC |
25 | jne 3f | 25 | jne 3f |
26 | 0: ltr %r3,%r3 | 26 | 0: ltr %r3,%r3 |
27 | jz 2f /* res == NULL */ | 27 | jz 2f /* res == NULL */ |
@@ -34,6 +34,6 @@ __kernel_clock_getres: | |||
34 | 3: lhi %r1,__NR_clock_getres /* fallback to svc */ | 34 | 3: lhi %r1,__NR_clock_getres /* fallback to svc */ |
35 | svc 0 | 35 | svc 0 |
36 | br %r14 | 36 | br %r14 |
37 | 4: .long CLOCK_REALTIME_RES | 37 | 4: .long __CLOCK_REALTIME_RES |
38 | .cfi_endproc | 38 | .cfi_endproc |
39 | .size __kernel_clock_getres,.-__kernel_clock_getres | 39 | .size __kernel_clock_getres,.-__kernel_clock_getres |
diff --git a/arch/s390/kernel/vdso32/clock_gettime.S b/arch/s390/kernel/vdso32/clock_gettime.S index 969643954273..b2224e0b974c 100644 --- a/arch/s390/kernel/vdso32/clock_gettime.S +++ b/arch/s390/kernel/vdso32/clock_gettime.S | |||
@@ -21,9 +21,9 @@ __kernel_clock_gettime: | |||
21 | .cfi_startproc | 21 | .cfi_startproc |
22 | basr %r5,0 | 22 | basr %r5,0 |
23 | 0: al %r5,21f-0b(%r5) /* get &_vdso_data */ | 23 | 0: al %r5,21f-0b(%r5) /* get &_vdso_data */ |
24 | chi %r2,CLOCK_REALTIME | 24 | chi %r2,__CLOCK_REALTIME |
25 | je 10f | 25 | je 10f |
26 | chi %r2,CLOCK_MONOTONIC | 26 | chi %r2,__CLOCK_MONOTONIC |
27 | jne 19f | 27 | jne 19f |
28 | 28 | ||
29 | /* CLOCK_MONOTONIC */ | 29 | /* CLOCK_MONOTONIC */ |
diff --git a/arch/s390/kernel/vdso64/clock_getres.S b/arch/s390/kernel/vdso64/clock_getres.S index 9ce8caafdb4e..176e1f75f9aa 100644 --- a/arch/s390/kernel/vdso64/clock_getres.S +++ b/arch/s390/kernel/vdso64/clock_getres.S | |||
@@ -19,9 +19,9 @@ | |||
19 | .type __kernel_clock_getres,@function | 19 | .type __kernel_clock_getres,@function |
20 | __kernel_clock_getres: | 20 | __kernel_clock_getres: |
21 | .cfi_startproc | 21 | .cfi_startproc |
22 | cghi %r2,CLOCK_REALTIME | 22 | cghi %r2,__CLOCK_REALTIME |
23 | je 0f | 23 | je 0f |
24 | cghi %r2,CLOCK_MONOTONIC | 24 | cghi %r2,__CLOCK_MONOTONIC |
25 | je 0f | 25 | je 0f |
26 | cghi %r2,-2 /* CLOCK_THREAD_CPUTIME_ID for this thread */ | 26 | cghi %r2,-2 /* CLOCK_THREAD_CPUTIME_ID for this thread */ |
27 | jne 2f | 27 | jne 2f |
@@ -39,6 +39,6 @@ __kernel_clock_getres: | |||
39 | 2: lghi %r1,__NR_clock_getres /* fallback to svc */ | 39 | 2: lghi %r1,__NR_clock_getres /* fallback to svc */ |
40 | svc 0 | 40 | svc 0 |
41 | br %r14 | 41 | br %r14 |
42 | 3: .quad CLOCK_REALTIME_RES | 42 | 3: .quad __CLOCK_REALTIME_RES |
43 | .cfi_endproc | 43 | .cfi_endproc |
44 | .size __kernel_clock_getres,.-__kernel_clock_getres | 44 | .size __kernel_clock_getres,.-__kernel_clock_getres |
diff --git a/arch/s390/kernel/vdso64/clock_gettime.S b/arch/s390/kernel/vdso64/clock_gettime.S index f40467884a03..d46c95ed5f19 100644 --- a/arch/s390/kernel/vdso64/clock_gettime.S +++ b/arch/s390/kernel/vdso64/clock_gettime.S | |||
@@ -20,11 +20,11 @@ | |||
20 | __kernel_clock_gettime: | 20 | __kernel_clock_gettime: |
21 | .cfi_startproc | 21 | .cfi_startproc |
22 | larl %r5,_vdso_data | 22 | larl %r5,_vdso_data |
23 | cghi %r2,CLOCK_REALTIME | 23 | cghi %r2,__CLOCK_REALTIME |
24 | je 4f | 24 | je 4f |
25 | cghi %r2,-2 /* CLOCK_THREAD_CPUTIME_ID for this thread */ | 25 | cghi %r2,-2 /* CLOCK_THREAD_CPUTIME_ID for this thread */ |
26 | je 9f | 26 | je 9f |
27 | cghi %r2,CLOCK_MONOTONIC | 27 | cghi %r2,__CLOCK_MONOTONIC |
28 | jne 12f | 28 | jne 12f |
29 | 29 | ||
30 | /* CLOCK_MONOTONIC */ | 30 | /* CLOCK_MONOTONIC */ |