From patchwork Fri Aug 14 21:01:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georg Kotheimer X-Patchwork-Id: 1345207 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tu-dresden.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=dDkVi9uz; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BSwqf0kF3z9sTF for ; Sat, 15 Aug 2020 07:02:19 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:MIME-Version:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=jmbyUVpWcYNH5Vw2E0vbqs7DoLSmQ6RFmqLFJPF3l6U=; b=dDkVi9uzy+zReXnePIHjoz/TD6 +H5n7T3HXHRsKkhuLxPop9YSEj0BGcc03EoSwXAQLsGTJ8tSW17yZr7zMxgiKltwJPbXAL1S3jb2r 6z+9Kblb4A0Sx6V0Q6WfvLrheKGy42u0TwH5xe2KSQfZDXusmo3AmWFtXOSl77riEw6qBhRKARDQG WszrNtwy3bS3hnndP7RNAKmuZO1fkb0XPpf6rJM0at4Vjy8EEGgI7jYLzQ1UPfOihqdjCj0FO2Bt5 Wl2Pkibix2N7q2/3WXC13V8w4my9pYhzejI9tvNqHS29rJx5SYkP8dd3ecHUSozd5GRj80dlrgI5H ja+B553w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k6gpx-0004qT-9E; Fri, 14 Aug 2020 21:02:05 +0000 Received: from mailout6.zih.tu-dresden.de ([141.30.67.75]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k6gpu-0004q7-Bl for opensbi@lists.infradead.org; Fri, 14 Aug 2020 21:02:03 +0000 Received: from [172.26.34.201] (helo=msx.tu-dresden.de) by mailout6.zih.tu-dresden.de with esmtps (TLSv1.2:AES256-SHA256:256) (Exim 4.84_2) (envelope-from ) id 1k6gpt-0003Ee-7l for opensbi@lists.infradead.org; Fri, 14 Aug 2020 23:02:01 +0200 Received: from george-laptop.dd1.int.kernkonzept.com (89.16.149.226) by MSX-L201.msx.ad.zih.tu-dresden.de (172.26.34.201) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 23:01:52 +0200 From: Georg Kotheimer To: Subject: [PATCH] lib: sbi_trap: Fix hstatus.SPVP update in sbi_trap_redirect() Date: Fri, 14 Aug 2020 23:01:29 +0200 X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-ClientProxiedBy: MSX-L106.msx.ad.zih.tu-dresden.de (172.26.34.106) To MSX-L201.msx.ad.zih.tu-dresden.de (172.26.34.201) X-PMWin-Version: 4.0.4, Antivirus-Engine: 3.77.1, Antivirus-Data: 5.77 Message-ID: <4446ff53a13d4feca0d17f84efd06b22@MSX-L201.msx.ad.zih.tu-dresden.de> X-TUD-Virus-Scanned: mailout6.zih.tu-dresden.de X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200814_170202_527398_4F67AB26 X-CRM114-Status: GOOD ( 10.25 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [141.30.67.75 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Georg Kotheimer Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org When redirecting from VS/VU-mode to HS-mode, hstatus.SPVP was set to the value of mstatus.SPP, as according to the specification both flags should be set to the same value. However, the assignment of SPVP takes place before SPP itself is updated, which results in SPVP having an outdated value. Signed-off-by: Georg Kotheimer Reviewed-by: Anup Patel --- lib/sbi/sbi_trap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index 930119d..c2bd061 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -123,7 +123,7 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, /* Update HSTATUS SPVP and SPV bits */ hstatus = csr_read(CSR_HSTATUS); hstatus &= ~HSTATUS_SPVP; - hstatus |= (regs->mstatus & MSTATUS_SPP) ? HSTATUS_SPVP : 0; + hstatus |= (prev_mode == PRV_S) ? HSTATUS_SPVP : 0; hstatus &= ~HSTATUS_SPV; hstatus |= (prev_virt) ? HSTATUS_SPV : 0; csr_write(CSR_HSTATUS, hstatus);