All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Guenter Roeck <linux@roeck-us.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Sasha Levin <sashal@kernel.org>,
	chris@zankel.net, linux-xtensa@linux-xtensa.org
Subject: [PATCH AUTOSEL 5.14 11/17] xtensa: xtfpga: Try software restart before simulating CPU reset
Date: Tue, 12 Oct 2021 20:54:35 -0400	[thread overview]
Message-ID: <20211013005441.699846-11-sashal@kernel.org> (raw)
In-Reply-To: <20211013005441.699846-1-sashal@kernel.org>

From: Guenter Roeck <linux@roeck-us.net>

[ Upstream commit 012e974501a270d8dfd4ee2039e1fdf7579c907e ]

Rebooting xtensa images loaded with the '-kernel' option in qemu does
not work. When executing a reboot command, the qemu session either hangs
or experiences an endless sequence of error messages.

  Kernel panic - not syncing: Unrecoverable error in exception handler

Reset code jumps to the CPU restart address, but Linux can not recover
from there because code and data in the kernel init sections have been
discarded and overwritten at this point.

XTFPGA platforms have a means to reset the CPU by writing 0xdead into a
specific FPGA IO address. When used in QEMU the kernel image loaded with
the '-kernel' option gets restored to its original state allowing the
machine to boot successfully.

Use that mechanism to attempt a platform reset. If it does not work,
fall back to the existing mechanism.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/xtensa/platforms/xtfpga/setup.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/xtensa/platforms/xtfpga/setup.c b/arch/xtensa/platforms/xtfpga/setup.c
index 59b7f11f2a3e..538e6748e85a 100644
--- a/arch/xtensa/platforms/xtfpga/setup.c
+++ b/arch/xtensa/platforms/xtfpga/setup.c
@@ -51,8 +51,12 @@ void platform_power_off(void)
 
 void platform_restart(void)
 {
-	/* Flush and reset the mmu, simulate a processor reset, and
-	 * jump to the reset vector. */
+	/* Try software reset first. */
+	WRITE_ONCE(*(u32 *)XTFPGA_SWRST_VADDR, 0xdead);
+
+	/* If software reset did not work, flush and reset the mmu,
+	 * simulate a processor reset, and jump to the reset vector.
+	 */
 	cpu_reset();
 	/* control never gets here */
 }
-- 
2.33.0


  parent reply	other threads:[~2021-10-13  0:55 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-13  0:54 [PATCH AUTOSEL 5.14 01/17] arm: dts: vexpress-v2p-ca9: Fix the SMB unit-address Sasha Levin
2021-10-13  0:54 ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 02/17] ARM: config: multi v7: Enable dependancies Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 03/17] ARM: config: mutli v7: Reenable FB dependency Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 04/17] ARM: dts: at91: sama5d2_som1_ek: disable ISC node by default Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 05/17] block: decode QUEUE_FLAG_HCTX_ACTIVE in debugfs output Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 06/17] xen/x86: prevent PVH type from getting clobbered Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 07/17] r8152: avoid to resubmit rx immediately Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 08/17] drm/amdgpu/display: fix dependencies for DRM_AMD_DC_SI Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 09/17] drm/amdgpu: init iommu after amdkfd device init Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 10/17] xtensa: xtfpga: use CONFIG_USE_OF instead of CONFIG_OF Sasha Levin
2021-10-13  0:54 ` Sasha Levin [this message]
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 12/17] NFSD: Keep existing listeners on portlist error Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 13/17] powerpc/lib: Add helper to check if offset is within conditional branch range Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 14/17] powerpc/bpf: Validate branch ranges Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 15/17] powerpc/security: Add a helper to query stf_barrier type Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 16/17] powerpc/bpf: Emit stf barrier instruction sequences for BPF_NOSPEC Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54 ` [PATCH AUTOSEL 5.14 17/17] firmware: include drivers/firmware/Kconfig unconditionally Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13  0:54   ` Sasha Levin
2021-10-13 11:16   ` Mark Brown
2021-10-13 11:16     ` Mark Brown
2021-10-13 11:16     ` Mark Brown
2021-10-13 11:16     ` Mark Brown

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=20211013005441.699846-11-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=chris@zankel.net \
    --cc=jcmvbkbc@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linux@roeck-us.net \
    --cc=stable@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.