diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/defconfig | 47 | ||||
-rw-r--r-- | arch/s390/hypfs/hypfs_diag.c | 4 | ||||
-rw-r--r-- | arch/s390/kernel/ipl.c | 59 | ||||
-rw-r--r-- | arch/s390/kernel/reipl.S | 6 | ||||
-rw-r--r-- | arch/s390/kernel/reipl64.S | 5 | ||||
-rw-r--r-- | arch/s390/kernel/reset.S | 42 |
6 files changed, 101 insertions, 62 deletions
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index a6ec919ba83f..5368cf4a350e 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -1,14 +1,15 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.19-rc2 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Wed Oct 18 17:11:10 2006 | 4 | # Fri Dec 15 16:52:28 2006 |
5 | # | 5 | # |
6 | CONFIG_MMU=y | 6 | CONFIG_MMU=y |
7 | CONFIG_LOCKDEP_SUPPORT=y | 7 | CONFIG_LOCKDEP_SUPPORT=y |
8 | CONFIG_STACKTRACE_SUPPORT=y | 8 | CONFIG_STACKTRACE_SUPPORT=y |
9 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 9 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
10 | CONFIG_GENERIC_HWEIGHT=y | 12 | CONFIG_GENERIC_HWEIGHT=y |
11 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
12 | CONFIG_GENERIC_TIME=y | 13 | CONFIG_GENERIC_TIME=y |
13 | CONFIG_S390=y | 14 | CONFIG_S390=y |
14 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 15 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -37,12 +38,13 @@ CONFIG_AUDIT=y | |||
37 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
38 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
39 | # CONFIG_CPUSETS is not set | 40 | # CONFIG_CPUSETS is not set |
41 | CONFIG_SYSFS_DEPRECATED=y | ||
40 | # CONFIG_RELAY is not set | 42 | # CONFIG_RELAY is not set |
41 | CONFIG_INITRAMFS_SOURCE="" | 43 | CONFIG_INITRAMFS_SOURCE="" |
42 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
43 | CONFIG_SYSCTL=y | 45 | CONFIG_SYSCTL=y |
44 | # CONFIG_EMBEDDED is not set | 46 | # CONFIG_EMBEDDED is not set |
45 | # CONFIG_SYSCTL_SYSCALL is not set | 47 | CONFIG_SYSCTL_SYSCALL=y |
46 | CONFIG_KALLSYMS=y | 48 | CONFIG_KALLSYMS=y |
47 | # CONFIG_KALLSYMS_ALL is not set | 49 | # CONFIG_KALLSYMS_ALL is not set |
48 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 50 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -119,6 +121,7 @@ CONFIG_PACK_STACK=y | |||
119 | CONFIG_CHECK_STACK=y | 121 | CONFIG_CHECK_STACK=y |
120 | CONFIG_STACK_GUARD=256 | 122 | CONFIG_STACK_GUARD=256 |
121 | # CONFIG_WARN_STACK is not set | 123 | # CONFIG_WARN_STACK is not set |
124 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
122 | CONFIG_SELECT_MEMORY_MODEL=y | 125 | CONFIG_SELECT_MEMORY_MODEL=y |
123 | CONFIG_FLATMEM_MANUAL=y | 126 | CONFIG_FLATMEM_MANUAL=y |
124 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 127 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -128,6 +131,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
128 | # CONFIG_SPARSEMEM_STATIC is not set | 131 | # CONFIG_SPARSEMEM_STATIC is not set |
129 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 132 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
130 | CONFIG_RESOURCES_64BIT=y | 133 | CONFIG_RESOURCES_64BIT=y |
134 | CONFIG_HOLES_IN_ZONE=y | ||
131 | 135 | ||
132 | # | 136 | # |
133 | # I/O subsystem configuration | 137 | # I/O subsystem configuration |
@@ -196,6 +200,7 @@ CONFIG_INET_TCP_DIAG=y | |||
196 | # CONFIG_TCP_CONG_ADVANCED is not set | 200 | # CONFIG_TCP_CONG_ADVANCED is not set |
197 | CONFIG_TCP_CONG_CUBIC=y | 201 | CONFIG_TCP_CONG_CUBIC=y |
198 | CONFIG_DEFAULT_TCP_CONG="cubic" | 202 | CONFIG_DEFAULT_TCP_CONG="cubic" |
203 | # CONFIG_TCP_MD5SIG is not set | ||
199 | CONFIG_IPV6=y | 204 | CONFIG_IPV6=y |
200 | # CONFIG_IPV6_PRIVACY is not set | 205 | # CONFIG_IPV6_PRIVACY is not set |
201 | # CONFIG_IPV6_ROUTER_PREF is not set | 206 | # CONFIG_IPV6_ROUTER_PREF is not set |
@@ -211,7 +216,6 @@ CONFIG_INET6_XFRM_MODE_BEET=y | |||
211 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 216 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
212 | CONFIG_IPV6_SIT=y | 217 | CONFIG_IPV6_SIT=y |
213 | # CONFIG_IPV6_TUNNEL is not set | 218 | # CONFIG_IPV6_TUNNEL is not set |
214 | # CONFIG_IPV6_SUBTREES is not set | ||
215 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 219 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
216 | # CONFIG_NETWORK_SECMARK is not set | 220 | # CONFIG_NETWORK_SECMARK is not set |
217 | # CONFIG_NETFILTER is not set | 221 | # CONFIG_NETFILTER is not set |
@@ -246,6 +250,7 @@ CONFIG_IPV6_SIT=y | |||
246 | # QoS and/or fair queueing | 250 | # QoS and/or fair queueing |
247 | # | 251 | # |
248 | CONFIG_NET_SCHED=y | 252 | CONFIG_NET_SCHED=y |
253 | CONFIG_NET_SCH_FIFO=y | ||
249 | CONFIG_NET_SCH_CLK_JIFFIES=y | 254 | CONFIG_NET_SCH_CLK_JIFFIES=y |
250 | # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set | 255 | # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set |
251 | # CONFIG_NET_SCH_CLK_CPU is not set | 256 | # CONFIG_NET_SCH_CLK_CPU is not set |
@@ -277,6 +282,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
277 | CONFIG_NET_CLS_FW=m | 282 | CONFIG_NET_CLS_FW=m |
278 | CONFIG_NET_CLS_U32=m | 283 | CONFIG_NET_CLS_U32=m |
279 | # CONFIG_CLS_U32_PERF is not set | 284 | # CONFIG_CLS_U32_PERF is not set |
285 | CONFIG_CLS_U32_MARK=y | ||
280 | CONFIG_NET_CLS_RSVP=m | 286 | CONFIG_NET_CLS_RSVP=m |
281 | CONFIG_NET_CLS_RSVP6=m | 287 | CONFIG_NET_CLS_RSVP6=m |
282 | # CONFIG_NET_EMATCH is not set | 288 | # CONFIG_NET_EMATCH is not set |
@@ -315,6 +321,7 @@ CONFIG_SYS_HYPERVISOR=y | |||
315 | # | 321 | # |
316 | # CONFIG_RAID_ATTRS is not set | 322 | # CONFIG_RAID_ATTRS is not set |
317 | CONFIG_SCSI=y | 323 | CONFIG_SCSI=y |
324 | # CONFIG_SCSI_TGT is not set | ||
318 | CONFIG_SCSI_NETLINK=y | 325 | CONFIG_SCSI_NETLINK=y |
319 | CONFIG_SCSI_PROC_FS=y | 326 | CONFIG_SCSI_PROC_FS=y |
320 | 327 | ||
@@ -335,6 +342,7 @@ CONFIG_CHR_DEV_SG=y | |||
335 | CONFIG_SCSI_MULTI_LUN=y | 342 | CONFIG_SCSI_MULTI_LUN=y |
336 | CONFIG_SCSI_CONSTANTS=y | 343 | CONFIG_SCSI_CONSTANTS=y |
337 | CONFIG_SCSI_LOGGING=y | 344 | CONFIG_SCSI_LOGGING=y |
345 | CONFIG_SCSI_SCAN_ASYNC=y | ||
338 | 346 | ||
339 | # | 347 | # |
340 | # SCSI Transports | 348 | # SCSI Transports |
@@ -546,6 +554,7 @@ CONFIG_DNOTIFY=y | |||
546 | # CONFIG_AUTOFS_FS is not set | 554 | # CONFIG_AUTOFS_FS is not set |
547 | # CONFIG_AUTOFS4_FS is not set | 555 | # CONFIG_AUTOFS4_FS is not set |
548 | # CONFIG_FUSE_FS is not set | 556 | # CONFIG_FUSE_FS is not set |
557 | CONFIG_GENERIC_ACL=y | ||
549 | 558 | ||
550 | # | 559 | # |
551 | # CD-ROM/DVD Filesystems | 560 | # CD-ROM/DVD Filesystems |
@@ -571,7 +580,7 @@ CONFIG_TMPFS=y | |||
571 | CONFIG_TMPFS_POSIX_ACL=y | 580 | CONFIG_TMPFS_POSIX_ACL=y |
572 | # CONFIG_HUGETLB_PAGE is not set | 581 | # CONFIG_HUGETLB_PAGE is not set |
573 | CONFIG_RAMFS=y | 582 | CONFIG_RAMFS=y |
574 | # CONFIG_CONFIGFS_FS is not set | 583 | CONFIG_CONFIGFS_FS=m |
575 | 584 | ||
576 | # | 585 | # |
577 | # Miscellaneous filesystems | 586 | # Miscellaneous filesystems |
@@ -616,7 +625,6 @@ CONFIG_SUNRPC=y | |||
616 | # CONFIG_CODA_FS is not set | 625 | # CONFIG_CODA_FS is not set |
617 | # CONFIG_AFS_FS is not set | 626 | # CONFIG_AFS_FS is not set |
618 | # CONFIG_9P_FS is not set | 627 | # CONFIG_9P_FS is not set |
619 | CONFIG_GENERIC_ACL=y | ||
620 | 628 | ||
621 | # | 629 | # |
622 | # Partition Types | 630 | # Partition Types |
@@ -646,6 +654,14 @@ CONFIG_MSDOS_PARTITION=y | |||
646 | # CONFIG_NLS is not set | 654 | # CONFIG_NLS is not set |
647 | 655 | ||
648 | # | 656 | # |
657 | # Distributed Lock Manager | ||
658 | # | ||
659 | CONFIG_DLM=m | ||
660 | CONFIG_DLM_TCP=y | ||
661 | # CONFIG_DLM_SCTP is not set | ||
662 | # CONFIG_DLM_DEBUG is not set | ||
663 | |||
664 | # | ||
649 | # Instrumentation Support | 665 | # Instrumentation Support |
650 | # | 666 | # |
651 | 667 | ||
@@ -663,6 +679,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
663 | CONFIG_ENABLE_MUST_CHECK=y | 679 | CONFIG_ENABLE_MUST_CHECK=y |
664 | CONFIG_MAGIC_SYSRQ=y | 680 | CONFIG_MAGIC_SYSRQ=y |
665 | # CONFIG_UNUSED_SYMBOLS is not set | 681 | # CONFIG_UNUSED_SYMBOLS is not set |
682 | CONFIG_DEBUG_FS=y | ||
683 | CONFIG_HEADERS_CHECK=y | ||
666 | CONFIG_DEBUG_KERNEL=y | 684 | CONFIG_DEBUG_KERNEL=y |
667 | CONFIG_LOG_BUF_SHIFT=17 | 685 | CONFIG_LOG_BUF_SHIFT=17 |
668 | # CONFIG_SCHEDSTATS is not set | 686 | # CONFIG_SCHEDSTATS is not set |
@@ -679,13 +697,11 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y | |||
679 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 697 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
680 | # CONFIG_DEBUG_KOBJECT is not set | 698 | # CONFIG_DEBUG_KOBJECT is not set |
681 | # CONFIG_DEBUG_INFO is not set | 699 | # CONFIG_DEBUG_INFO is not set |
682 | CONFIG_DEBUG_FS=y | ||
683 | # CONFIG_DEBUG_VM is not set | 700 | # CONFIG_DEBUG_VM is not set |
684 | # CONFIG_DEBUG_LIST is not set | 701 | # CONFIG_DEBUG_LIST is not set |
685 | # CONFIG_FRAME_POINTER is not set | 702 | # CONFIG_FRAME_POINTER is not set |
686 | # CONFIG_UNWIND_INFO is not set | 703 | # CONFIG_UNWIND_INFO is not set |
687 | CONFIG_FORCED_INLINING=y | 704 | CONFIG_FORCED_INLINING=y |
688 | CONFIG_HEADERS_CHECK=y | ||
689 | # CONFIG_RCU_TORTURE_TEST is not set | 705 | # CONFIG_RCU_TORTURE_TEST is not set |
690 | # CONFIG_LKDTM is not set | 706 | # CONFIG_LKDTM is not set |
691 | 707 | ||
@@ -699,10 +715,11 @@ CONFIG_HEADERS_CHECK=y | |||
699 | # Cryptographic options | 715 | # Cryptographic options |
700 | # | 716 | # |
701 | CONFIG_CRYPTO=y | 717 | CONFIG_CRYPTO=y |
702 | CONFIG_CRYPTO_ALGAPI=m | 718 | CONFIG_CRYPTO_ALGAPI=y |
703 | CONFIG_CRYPTO_BLKCIPHER=m | 719 | CONFIG_CRYPTO_BLKCIPHER=y |
704 | CONFIG_CRYPTO_MANAGER=m | 720 | CONFIG_CRYPTO_MANAGER=y |
705 | # CONFIG_CRYPTO_HMAC is not set | 721 | # CONFIG_CRYPTO_HMAC is not set |
722 | # CONFIG_CRYPTO_XCBC is not set | ||
706 | # CONFIG_CRYPTO_NULL is not set | 723 | # CONFIG_CRYPTO_NULL is not set |
707 | # CONFIG_CRYPTO_MD4 is not set | 724 | # CONFIG_CRYPTO_MD4 is not set |
708 | # CONFIG_CRYPTO_MD5 is not set | 725 | # CONFIG_CRYPTO_MD5 is not set |
@@ -713,8 +730,10 @@ CONFIG_CRYPTO_MANAGER=m | |||
713 | # CONFIG_CRYPTO_SHA512 is not set | 730 | # CONFIG_CRYPTO_SHA512 is not set |
714 | # CONFIG_CRYPTO_WP512 is not set | 731 | # CONFIG_CRYPTO_WP512 is not set |
715 | # CONFIG_CRYPTO_TGR192 is not set | 732 | # CONFIG_CRYPTO_TGR192 is not set |
733 | # CONFIG_CRYPTO_GF128MUL is not set | ||
716 | CONFIG_CRYPTO_ECB=m | 734 | CONFIG_CRYPTO_ECB=m |
717 | CONFIG_CRYPTO_CBC=m | 735 | CONFIG_CRYPTO_CBC=y |
736 | # CONFIG_CRYPTO_LRW is not set | ||
718 | # CONFIG_CRYPTO_DES is not set | 737 | # CONFIG_CRYPTO_DES is not set |
719 | # CONFIG_CRYPTO_DES_S390 is not set | 738 | # CONFIG_CRYPTO_DES_S390 is not set |
720 | # CONFIG_CRYPTO_BLOWFISH is not set | 739 | # CONFIG_CRYPTO_BLOWFISH is not set |
@@ -740,8 +759,10 @@ CONFIG_CRYPTO_CBC=m | |||
740 | # | 759 | # |
741 | # Library routines | 760 | # Library routines |
742 | # | 761 | # |
762 | CONFIG_BITREVERSE=m | ||
743 | # CONFIG_CRC_CCITT is not set | 763 | # CONFIG_CRC_CCITT is not set |
744 | # CONFIG_CRC16 is not set | 764 | # CONFIG_CRC16 is not set |
745 | CONFIG_CRC32=m | 765 | CONFIG_CRC32=m |
746 | # CONFIG_LIBCRC32C is not set | 766 | # CONFIG_LIBCRC32C is not set |
747 | CONFIG_PLIST=y | 767 | CONFIG_PLIST=y |
768 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c index 443fa377d9ff..2782cf9da5b4 100644 --- a/arch/s390/hypfs/hypfs_diag.c +++ b/arch/s390/hypfs/hypfs_diag.c | |||
@@ -379,7 +379,7 @@ static void *diag204_alloc_vbuf(int pages) | |||
379 | static void *diag204_alloc_rbuf(void) | 379 | static void *diag204_alloc_rbuf(void) |
380 | { | 380 | { |
381 | diag204_buf = (void*)__get_free_pages(GFP_KERNEL,0); | 381 | diag204_buf = (void*)__get_free_pages(GFP_KERNEL,0); |
382 | if (diag204_buf) | 382 | if (!diag204_buf) |
383 | return ERR_PTR(-ENOMEM); | 383 | return ERR_PTR(-ENOMEM); |
384 | diag204_buf_pages = 1; | 384 | diag204_buf_pages = 1; |
385 | return diag204_buf; | 385 | return diag204_buf; |
@@ -521,7 +521,7 @@ __init int hypfs_diag_init(void) | |||
521 | } | 521 | } |
522 | rc = diag224_get_name_table(); | 522 | rc = diag224_get_name_table(); |
523 | if (rc) { | 523 | if (rc) { |
524 | diag224_delete_name_table(); | 524 | diag204_free_buffer(); |
525 | printk(KERN_ERR "hypfs: could not get name table.\n"); | 525 | printk(KERN_ERR "hypfs: could not get name table.\n"); |
526 | } | 526 | } |
527 | return rc; | 527 | return rc; |
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index a36bea1188d9..9e9972e8a52b 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -609,42 +609,12 @@ static ssize_t on_panic_store(struct subsystem *subsys, const char *buf, | |||
609 | static struct subsys_attribute on_panic_attr = | 609 | static struct subsys_attribute on_panic_attr = |
610 | __ATTR(on_panic, 0644, on_panic_show, on_panic_store); | 610 | __ATTR(on_panic, 0644, on_panic_show, on_panic_store); |
611 | 611 | ||
612 | static void print_fcp_block(struct ipl_parameter_block *fcp_block) | ||
613 | { | ||
614 | printk(KERN_EMERG "wwpn: %016llx\n", | ||
615 | (unsigned long long)fcp_block->ipl_info.fcp.wwpn); | ||
616 | printk(KERN_EMERG "lun: %016llx\n", | ||
617 | (unsigned long long)fcp_block->ipl_info.fcp.lun); | ||
618 | printk(KERN_EMERG "bootprog: %lld\n", | ||
619 | (unsigned long long)fcp_block->ipl_info.fcp.bootprog); | ||
620 | printk(KERN_EMERG "br_lba: %lld\n", | ||
621 | (unsigned long long)fcp_block->ipl_info.fcp.br_lba); | ||
622 | printk(KERN_EMERG "device: %llx\n", | ||
623 | (unsigned long long)fcp_block->ipl_info.fcp.devno); | ||
624 | printk(KERN_EMERG "opt: %x\n", fcp_block->ipl_info.fcp.opt); | ||
625 | } | ||
626 | |||
627 | void do_reipl(void) | 612 | void do_reipl(void) |
628 | { | 613 | { |
629 | struct ccw_dev_id devid; | 614 | struct ccw_dev_id devid; |
630 | static char buf[100]; | 615 | static char buf[100]; |
631 | char loadparm[LOADPARM_LEN + 1]; | 616 | char loadparm[LOADPARM_LEN + 1]; |
632 | 617 | ||
633 | switch (reipl_type) { | ||
634 | case IPL_TYPE_CCW: | ||
635 | reipl_get_ascii_loadparm(loadparm); | ||
636 | printk(KERN_EMERG "reboot on ccw device: 0.0.%04x\n", | ||
637 | reipl_block_ccw->ipl_info.ccw.devno); | ||
638 | printk(KERN_EMERG "loadparm = '%s'\n", loadparm); | ||
639 | break; | ||
640 | case IPL_TYPE_FCP: | ||
641 | printk(KERN_EMERG "reboot on fcp device:\n"); | ||
642 | print_fcp_block(reipl_block_fcp); | ||
643 | break; | ||
644 | default: | ||
645 | break; | ||
646 | } | ||
647 | |||
648 | switch (reipl_method) { | 618 | switch (reipl_method) { |
649 | case IPL_METHOD_CCW_CIO: | 619 | case IPL_METHOD_CCW_CIO: |
650 | devid.devno = reipl_block_ccw->ipl_info.ccw.devno; | 620 | devid.devno = reipl_block_ccw->ipl_info.ccw.devno; |
@@ -654,6 +624,7 @@ void do_reipl(void) | |||
654 | reipl_ccw_dev(&devid); | 624 | reipl_ccw_dev(&devid); |
655 | break; | 625 | break; |
656 | case IPL_METHOD_CCW_VM: | 626 | case IPL_METHOD_CCW_VM: |
627 | reipl_get_ascii_loadparm(loadparm); | ||
657 | if (strlen(loadparm) == 0) | 628 | if (strlen(loadparm) == 0) |
658 | sprintf(buf, "IPL %X", | 629 | sprintf(buf, "IPL %X", |
659 | reipl_block_ccw->ipl_info.ccw.devno); | 630 | reipl_block_ccw->ipl_info.ccw.devno); |
@@ -683,7 +654,6 @@ void do_reipl(void) | |||
683 | diag308(DIAG308_IPL, NULL); | 654 | diag308(DIAG308_IPL, NULL); |
684 | break; | 655 | break; |
685 | } | 656 | } |
686 | printk(KERN_EMERG "reboot failed!\n"); | ||
687 | signal_processor(smp_processor_id(), sigp_stop_and_store_status); | 657 | signal_processor(smp_processor_id(), sigp_stop_and_store_status); |
688 | } | 658 | } |
689 | 659 | ||
@@ -692,19 +662,6 @@ static void do_dump(void) | |||
692 | struct ccw_dev_id devid; | 662 | struct ccw_dev_id devid; |
693 | static char buf[100]; | 663 | static char buf[100]; |
694 | 664 | ||
695 | switch (dump_type) { | ||
696 | case IPL_TYPE_CCW: | ||
697 | printk(KERN_EMERG "Automatic dump on ccw device: 0.0.%04x\n", | ||
698 | dump_block_ccw->ipl_info.ccw.devno); | ||
699 | break; | ||
700 | case IPL_TYPE_FCP: | ||
701 | printk(KERN_EMERG "Automatic dump on fcp device:\n"); | ||
702 | print_fcp_block(dump_block_fcp); | ||
703 | break; | ||
704 | default: | ||
705 | return; | ||
706 | } | ||
707 | |||
708 | switch (dump_method) { | 665 | switch (dump_method) { |
709 | case IPL_METHOD_CCW_CIO: | 666 | case IPL_METHOD_CCW_CIO: |
710 | smp_send_stop(); | 667 | smp_send_stop(); |
@@ -1037,15 +994,21 @@ static void do_reset_calls(void) | |||
1037 | } | 994 | } |
1038 | 995 | ||
1039 | extern void reset_mcck_handler(void); | 996 | extern void reset_mcck_handler(void); |
997 | extern void reset_pgm_handler(void); | ||
998 | extern __u32 dump_prefix_page; | ||
1040 | 999 | ||
1041 | void s390_reset_system(void) | 1000 | void s390_reset_system(void) |
1042 | { | 1001 | { |
1043 | struct _lowcore *lc; | 1002 | struct _lowcore *lc; |
1044 | 1003 | ||
1045 | /* Stack for interrupt/machine check handler */ | ||
1046 | lc = (struct _lowcore *)(unsigned long) store_prefix(); | 1004 | lc = (struct _lowcore *)(unsigned long) store_prefix(); |
1005 | |||
1006 | /* Stack for interrupt/machine check handler */ | ||
1047 | lc->panic_stack = S390_lowcore.panic_stack; | 1007 | lc->panic_stack = S390_lowcore.panic_stack; |
1048 | 1008 | ||
1009 | /* Save prefix page address for dump case */ | ||
1010 | dump_prefix_page = (unsigned long) lc; | ||
1011 | |||
1049 | /* Disable prefixing */ | 1012 | /* Disable prefixing */ |
1050 | set_prefix(0); | 1013 | set_prefix(0); |
1051 | 1014 | ||
@@ -1056,5 +1019,11 @@ void s390_reset_system(void) | |||
1056 | S390_lowcore.mcck_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK; | 1019 | S390_lowcore.mcck_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK; |
1057 | S390_lowcore.mcck_new_psw.addr = | 1020 | S390_lowcore.mcck_new_psw.addr = |
1058 | PSW_ADDR_AMODE | (unsigned long) &reset_mcck_handler; | 1021 | PSW_ADDR_AMODE | (unsigned long) &reset_mcck_handler; |
1022 | |||
1023 | /* Set new program check handler */ | ||
1024 | S390_lowcore.program_new_psw.mask = PSW_KERNEL_BITS & ~PSW_MASK_MCHECK; | ||
1025 | S390_lowcore.program_new_psw.addr = | ||
1026 | PSW_ADDR_AMODE | (unsigned long) &reset_pgm_handler; | ||
1027 | |||
1059 | do_reset_calls(); | 1028 | do_reset_calls(); |
1060 | } | 1029 | } |
diff --git a/arch/s390/kernel/reipl.S b/arch/s390/kernel/reipl.S index f9434d42ce9f..c3f4d9b95083 100644 --- a/arch/s390/kernel/reipl.S +++ b/arch/s390/kernel/reipl.S | |||
@@ -16,7 +16,7 @@ do_reipl_asm: basr %r13,0 | |||
16 | stm %r0,%r15,__LC_GPREGS_SAVE_AREA | 16 | stm %r0,%r15,__LC_GPREGS_SAVE_AREA |
17 | stctl %c0,%c15,__LC_CREGS_SAVE_AREA | 17 | stctl %c0,%c15,__LC_CREGS_SAVE_AREA |
18 | stam %a0,%a15,__LC_AREGS_SAVE_AREA | 18 | stam %a0,%a15,__LC_AREGS_SAVE_AREA |
19 | stpx __LC_PREFIX_SAVE_AREA | 19 | mvc __LC_PREFIX_SAVE_AREA(4),dump_prefix_page-.Lpg0(%r13) |
20 | stckc .Lclkcmp-.Lpg0(%r13) | 20 | stckc .Lclkcmp-.Lpg0(%r13) |
21 | mvc __LC_CLOCK_COMP_SAVE_AREA(8),.Lclkcmp-.Lpg0(%r13) | 21 | mvc __LC_CLOCK_COMP_SAVE_AREA(8),.Lclkcmp-.Lpg0(%r13) |
22 | stpt __LC_CPU_TIMER_SAVE_AREA | 22 | stpt __LC_CPU_TIMER_SAVE_AREA |
@@ -79,3 +79,7 @@ do_reipl_asm: basr %r13,0 | |||
79 | .long 0x00000000,0x00000000 | 79 | .long 0x00000000,0x00000000 |
80 | .long 0x00000000,0x00000000 | 80 | .long 0x00000000,0x00000000 |
81 | .long 0x00000000,0x00000000 | 81 | .long 0x00000000,0x00000000 |
82 | .globl dump_prefix_page | ||
83 | dump_prefix_page: | ||
84 | .long 0x00000000 | ||
85 | |||
diff --git a/arch/s390/kernel/reipl64.S b/arch/s390/kernel/reipl64.S index f18ef260ca23..dbb3eed38865 100644 --- a/arch/s390/kernel/reipl64.S +++ b/arch/s390/kernel/reipl64.S | |||
@@ -20,7 +20,7 @@ do_reipl_asm: basr %r13,0 | |||
20 | stg %r0,__LC_GPREGS_SAVE_AREA-0x1000+8(%r1) | 20 | stg %r0,__LC_GPREGS_SAVE_AREA-0x1000+8(%r1) |
21 | stctg %c0,%c15,__LC_CREGS_SAVE_AREA-0x1000(%r1) | 21 | stctg %c0,%c15,__LC_CREGS_SAVE_AREA-0x1000(%r1) |
22 | stam %a0,%a15,__LC_AREGS_SAVE_AREA-0x1000(%r1) | 22 | stam %a0,%a15,__LC_AREGS_SAVE_AREA-0x1000(%r1) |
23 | stpx __LC_PREFIX_SAVE_AREA-0x1000(%r1) | 23 | mvc __LC_PREFIX_SAVE_AREA-0x1000(4,%r1),dump_prefix_page-.Lpg0(%r13) |
24 | stfpc __LC_FP_CREG_SAVE_AREA-0x1000(%r1) | 24 | stfpc __LC_FP_CREG_SAVE_AREA-0x1000(%r1) |
25 | stckc .Lclkcmp-.Lpg0(%r13) | 25 | stckc .Lclkcmp-.Lpg0(%r13) |
26 | mvc __LC_CLOCK_COMP_SAVE_AREA-0x1000(8,%r1),.Lclkcmp-.Lpg0(%r13) | 26 | mvc __LC_CLOCK_COMP_SAVE_AREA-0x1000(8,%r1),.Lclkcmp-.Lpg0(%r13) |
@@ -103,3 +103,6 @@ do_reipl_asm: basr %r13,0 | |||
103 | .long 0x00000000,0x00000000 | 103 | .long 0x00000000,0x00000000 |
104 | .long 0x00000000,0x00000000 | 104 | .long 0x00000000,0x00000000 |
105 | .long 0x00000000,0x00000000 | 105 | .long 0x00000000,0x00000000 |
106 | .globl dump_prefix_page | ||
107 | dump_prefix_page: | ||
108 | .long 0x00000000 | ||
diff --git a/arch/s390/kernel/reset.S b/arch/s390/kernel/reset.S index be8688c0665c..8a87355161fa 100644 --- a/arch/s390/kernel/reset.S +++ b/arch/s390/kernel/reset.S | |||
@@ -3,6 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) IBM Corp. 2006 | 4 | * Copyright (C) IBM Corp. 2006 |
5 | * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> | 5 | * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> |
6 | * Michael Holzheu <holzheu@de.ibm.com> | ||
6 | */ | 7 | */ |
7 | 8 | ||
8 | #include <asm/ptrace.h> | 9 | #include <asm/ptrace.h> |
@@ -27,6 +28,26 @@ reset_mcck_handler: | |||
27 | s390_reset_mcck_handler: | 28 | s390_reset_mcck_handler: |
28 | .quad 0 | 29 | .quad 0 |
29 | 30 | ||
31 | .globl reset_pgm_handler | ||
32 | reset_pgm_handler: | ||
33 | stmg %r0,%r15,__LC_SAVE_AREA | ||
34 | basr %r13,0 | ||
35 | 0: lg %r15,__LC_PANIC_STACK # load panic stack | ||
36 | aghi %r15,-STACK_FRAME_OVERHEAD | ||
37 | lg %r1,s390_reset_pgm_handler-0b(%r13) | ||
38 | ltgr %r1,%r1 | ||
39 | jz 1f | ||
40 | basr %r14,%r1 | ||
41 | lmg %r0,%r15,__LC_SAVE_AREA | ||
42 | lpswe __LC_PGM_OLD_PSW | ||
43 | 1: lpswe disabled_wait_psw-0b(%r13) | ||
44 | .globl s390_reset_pgm_handler | ||
45 | s390_reset_pgm_handler: | ||
46 | .quad 0 | ||
47 | .align 8 | ||
48 | disabled_wait_psw: | ||
49 | .quad 0x0002000180000000,0x0000000000000000 + reset_pgm_handler | ||
50 | |||
30 | #else /* CONFIG_64BIT */ | 51 | #else /* CONFIG_64BIT */ |
31 | 52 | ||
32 | .globl reset_mcck_handler | 53 | .globl reset_mcck_handler |
@@ -45,4 +66,25 @@ reset_mcck_handler: | |||
45 | s390_reset_mcck_handler: | 66 | s390_reset_mcck_handler: |
46 | .long 0 | 67 | .long 0 |
47 | 68 | ||
69 | .globl reset_pgm_handler | ||
70 | reset_pgm_handler: | ||
71 | stm %r0,%r15,__LC_SAVE_AREA | ||
72 | basr %r13,0 | ||
73 | 0: l %r15,__LC_PANIC_STACK # load panic stack | ||
74 | ahi %r15,-STACK_FRAME_OVERHEAD | ||
75 | l %r1,s390_reset_pgm_handler-0b(%r13) | ||
76 | ltr %r1,%r1 | ||
77 | jz 1f | ||
78 | basr %r14,%r1 | ||
79 | lm %r0,%r15,__LC_SAVE_AREA | ||
80 | lpsw __LC_PGM_OLD_PSW | ||
81 | |||
82 | 1: lpsw disabled_wait_psw-0b(%r13) | ||
83 | .globl s390_reset_pgm_handler | ||
84 | s390_reset_pgm_handler: | ||
85 | .long 0 | ||
86 | disabled_wait_psw: | ||
87 | .align 8 | ||
88 | .long 0x000a0000,0x00000000 + reset_pgm_handler | ||
89 | |||
48 | #endif /* CONFIG_64BIT */ | 90 | #endif /* CONFIG_64BIT */ |