From: Michael Holzheu <holzheu@linux.vnet.ibm.com>
To: vgoyal@redhat.com
Cc: oomichi@mxs.nes.nec.co.jp, linux-s390@vger.kernel.org,
mahesh@linux.vnet.ibm.com, heiko.carstens@de.ibm.com,
linux-kernel@vger.kernel.org, hbabu@us.ibm.com,
horms@verge.net.au, ebiederm@xmission.com,
schwidefsky@de.ibm.com, kexec@lists.infradead.org
Subject: [patch v2 07/10] s390: Use diagnose 308 for system reset
Date: Wed, 27 Jul 2011 14:55:11 +0200 [thread overview]
Message-ID: <20110727125808.516079721@linux.vnet.ibm.com> (raw)
In-Reply-To: 20110727125504.491183728@linux.vnet.ibm.com
[-- Attachment #1: s390-kdump-arch-diag308_reset.patch --]
[-- Type: text/plain, Size: 2224 bytes --]
From: Michael Holzheu <holzheu@linux.vnet.ibm.com>
The diagnose 308 call is the prefered method for clearing all ongoing I/O.
Therefore if it is available we use it instead of doing a manual reset.
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
---
arch/s390/include/asm/ipl.h | 1 +
arch/s390/kernel/base.S | 36 ++++++++++++++++++++++++++++++++++++
arch/s390/kernel/ipl.c | 6 ++++++
3 files changed, 43 insertions(+)
--- a/arch/s390/include/asm/ipl.h
+++ b/arch/s390/include/asm/ipl.h
@@ -167,5 +167,6 @@ enum diag308_rc {
};
extern int diag308(unsigned long subcode, void *addr);
+extern void diag308_reset(void);
#endif /* _ASM_S390_IPL_H */
--- a/arch/s390/kernel/base.S
+++ b/arch/s390/kernel/base.S
@@ -76,6 +76,42 @@ s390_base_pgm_handler_fn:
.quad 0
.previous
+#
+# Calls diag 308 subcode 1 and continues execution
+#
+# The following conditions must be ensured before calling this function:
+# * Prefix register = 0
+# * Lowcore protection is disabled
+#
+ENTRY(diag308_reset)
+ larl %r4,.Lctlregs # Save control registers
+ stctg %c0,%c15,0(%r4)
+ larl %r4,.Lrestart_psw # Setup restart PSW at absolute 0
+ lghi %r3,0
+ lg %r4,0(%r4) # Save PSW
+ sturg %r4,%r3 # Use sturg, because of large pages
+ lghi %r1,1
+ diag %r1,%r1,0x308
+.Lrestart_part2:
+ lhi %r0,0 # Load r0 with zero
+ lhi %r1,2 # Use mode 2 = ESAME (dump)
+ sigp %r1,%r0,0x12 # Switch to ESAME mode
+ sam64 # Switch to 64 bit addressing mode
+ larl %r4,.Lctlregs # Restore control registers
+ lctlg %c0,%c15,0(%r4)
+ br %r14
+.align 16
+.Lrestart_psw:
+ .long 0x00080000,0x80000000 + .Lrestart_part2
+
+ .section .bss
+.align 8
+.Lctlregs:
+ .rept 16
+ .quad 0
+ .endr
+ .previous
+
#else /* CONFIG_64BIT */
ENTRY(s390_base_mcck_handler)
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -1996,6 +1996,12 @@ static void do_reset_calls(void)
{
struct reset_call *reset;
+#ifdef CONFIG_64BIT
+ if (diag308_set_works) {
+ diag308_reset();
+ return;
+ }
+#endif
list_for_each_entry(reset, &rcall, list)
reset->fn();
}
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2011-07-27 12:58 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-27 12:55 [patch v2 00/10] kdump: Patch series for s390 support (version 2) Michael Holzheu
2011-07-27 12:55 ` [patch v2 01/10] kdump: Add KEXEC_CRASH_CONTROL_MEMORY_LIMIT Michael Holzheu
2011-08-01 20:16 ` Vivek Goyal
2011-08-02 9:51 ` Michael Holzheu
2011-08-02 19:16 ` Vivek Goyal
2011-08-03 9:27 ` Michael Holzheu
2011-07-27 12:55 ` [patch v2 02/10] kdump: Make kimage_load_crash_segment() weak Michael Holzheu
2011-08-01 20:31 ` Vivek Goyal
2011-08-02 9:30 ` Michael Holzheu
2011-08-02 18:55 ` Vivek Goyal
2011-08-03 10:41 ` Michael Holzheu
2011-08-04 20:25 ` Vivek Goyal
2011-07-27 12:55 ` [patch v2 03/10] kdump: Add size to elfcorehdr kernel parameter Michael Holzheu
2011-08-01 20:36 ` Vivek Goyal
2011-08-02 9:08 ` Michael Holzheu
2011-08-02 18:55 ` Vivek Goyal
2011-08-03 10:40 ` Michael Holzheu
2011-07-27 12:55 ` [patch v2 04/10] kdump: Trigger kdump via panic notifier chain on s390 Michael Holzheu
2011-08-01 20:41 ` Vivek Goyal
2011-08-02 8:37 ` Michael Holzheu
2011-08-02 19:21 ` Vivek Goyal
2011-08-03 9:50 ` Michael Holzheu
2011-08-04 21:14 ` Vivek Goyal
2011-08-08 17:47 ` Michael Holzheu
2011-08-09 21:19 ` Vivek Goyal
2011-07-27 12:55 ` [patch v2 05/10] s390: Add PSW restart shutdown trigger Michael Holzheu
2011-08-01 20:54 ` Vivek Goyal
2011-08-02 8:05 ` Michael Holzheu
2011-07-27 12:55 ` [patch v2 06/10] s390: Export store_status() function Michael Holzheu
2011-07-27 12:55 ` Michael Holzheu [this message]
2011-07-27 12:55 ` [patch v2 08/10] s390: Add real memory access functions Michael Holzheu
2011-07-27 12:55 ` [patch v2 09/10] s390: kdump backend code Michael Holzheu
2011-07-27 12:55 ` [patch v2 10/10] kexec-tools: Add s390 kdump support Michael Holzheu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110727125808.516079721@linux.vnet.ibm.com \
--to=holzheu@linux.vnet.ibm.com \
--cc=ebiederm@xmission.com \
--cc=hbabu@us.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mahesh@linux.vnet.ibm.com \
--cc=oomichi@mxs.nes.nec.co.jp \
--cc=schwidefsky@de.ibm.com \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox