From patchwork Wed Mar 3 08:05:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dillon Min X-Patchwork-Id: 12114201 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1EA86C433DB for ; Wed, 3 Mar 2021 20:37:02 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DBC7F64EF8 for ; Wed, 3 Mar 2021 20:36:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DBC7F64EF8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:MIME-Version:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:In-Reply-To:Message-Id:Date:Subject:Cc:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=cU0EMtYNmFtvbf7VCmhRe01bus853s71V+44JGHPEwo=; b=EWbTvGYea7nHRJTsSIcd9z0yL2 dsbwwPEAdSUnMeMFHmJkwGRUxy78ib3V15vpvBJQemrJ/m1K44tQ/yPD8dbkhF4pyxYX45zKYABmM fMyP0U5iBreosgw182tm2qj/5E3BDoEuSY+ctyv0MFxROhMYAJfir1X2uxqZzHP7wFwrJYa6+nhfs UJV/vW9c+HK+kPBR+vE3rd7cqBkIFl528MRQIO1Xcm/8ygWwChNwNtvczCbkSdEFRLW+2pPvso9Xp 7hE1uwd8pzSSkpsq2kae1iLDGmNe40T17ZEEba0xhXTn+bz/p6vhKxnJe355Jcs8jznX506pckX1N ybYohQww==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lHYBa-006R2b-0j; Wed, 03 Mar 2021 20:33:34 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHT68-005Ixp-Oc for linux-arm-kernel@desiato.infradead.org; Wed, 03 Mar 2021 15:07:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description; bh=OkO4sPesb67a4Xc+NzgJGhYGkM0gLKx9VTeWnyCxw08=; b=B1zICO73CTPasIk+MTZHPbqmqL fNMV8RVCFYMd9xJ0hX3IzG49Je3a0zccr3G/LOMhJ3ZLV2gKL4hqqvRpT9HczHk2VyASI006c1ZRF T7k6fKtGV5+K59f3qQTPsSx6XCFjEXy/EHWUpmqAra/yexZgTcKW/ekQg+6hK9v/71UQxWx8BlmZY MJURoHvAShicMT34HTa/afW7FDzt/qyXpKqLK4JmoqTM+kEBEeiUrwhPSZ0p2asEqFCKsjrKpBiLd mxN/o/rHjXF+hZJwU0WT9hEsHMJEv0AuZWvlplAvRXxEQPc2LUhWneNPg1baaocR4ge5xIMfcobL8 Jq4Wp5OQ==; Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by casper.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHMWc-001lxA-8d for linux-arm-kernel@lists.infradead.org; Wed, 03 Mar 2021 08:06:30 +0000 Received: by mail-pg1-x529.google.com with SMTP id o10so15783968pgg.4 for ; Wed, 03 Mar 2021 00:06:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OkO4sPesb67a4Xc+NzgJGhYGkM0gLKx9VTeWnyCxw08=; b=t1wSFc3pRt6x4Dk83aDZFNEHm7OzrtTRlVPD3Jq3GD8O7BS16lMjBJD/6GOouKfl/D oVnRukngWEvhAH3VZH1x/C5UgfimvsiwqwFihvpzCz+vO29moeHTXBvJVWNciTHepFaK nunuTwLdJK+EUlZhOl00JMRs8fNoRtdqKJz5O+MOdiPkjLi2LhHt7i4JTzSAYjtRlbCT tpWkdm8gyQTQ3Ii2JO7/4YjU7f0bUpuiSSkpXjIgcyWMkodun1VwbKTSHSz62WbrBUoK SpobWKx0wj6t4jlnLeATeQ6mVqM9D0A1NRMrrloY2R9P2OA/YHhGxffHTwt7RHe3HSUF z9hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=OkO4sPesb67a4Xc+NzgJGhYGkM0gLKx9VTeWnyCxw08=; b=pwukHptMTYuGt+JwNthNI5x2g7kpMo97yVS4z54KL1gO/Kh2ChwWPb2b8L0MuNOlvF qF8XGxqw2ntrg7FJVJAireGRBL4SwHiycH12cgRSSkbQas7ZkKzDRBqC6mbeXsm++XlA iit2M3d78GEx6evtTfrLbNlPWMW/Rb+V43wOCNnKyVfEuMlB+uq+JnSjl7ZJIZP6pdSL 00zxdZPlcqSambfgu2M1aVbib5NnlelDZ6qKsQVAzc9xkWOHEbNyxK5WjTn2k3rao18V 5fodM0B0IGwS87qtVvDAVa8LfVLriRCtiP+s0/9hUDDsM3CncpSp3M50zzd+YPur0BEQ sdxA== X-Gm-Message-State: AOAM533pDKfGJiZ6nsTBOZ31xnsUwO6e5lG92LihDIUremKBvLwKo9i0 Gmc1qRJE2TmhMP9qRUM+wciTpA37c7g= X-Google-Smtp-Source: ABdhPJyf71nlJOfyEEHvdDqtGzsYD3u82366/KdOqD3tkSHDPb7h349QjuPxaUgNYnp2oTLjAv2nKQ== X-Received: by 2002:a62:5ec5:0:b029:1ee:186e:121c with SMTP id s188-20020a625ec50000b02901ee186e121cmr7023016pfb.54.1614758726010; Wed, 03 Mar 2021 00:05:26 -0800 (PST) Received: from fmin-OptiPlex-7060.nreal.work ([137.59.103.165]) by smtp.gmail.com with ESMTPSA id h6sm22260887pfv.84.2021.03.03.00.05.23 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Mar 2021 00:05:25 -0800 (PST) From: dillon.minfei@gmail.com To: robh+dt@kernel.org, mcoquelin.stm32@gmail.com, alexandre.torgue@st.com, devicetree@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux@armlinux.org.uk, vladimir.murzin@arm.com, afzal.mohd.ma@gmail.com Cc: dillon min Subject: [PATCH 1/8] ARM: ARMv7-M: Fix register restore corrupt after svc call Date: Wed, 3 Mar 2021 16:05:10 +0800 Message-Id: <1614758717-18223-2-git-send-email-dillon.minfei@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1614758717-18223-1-git-send-email-dillon.minfei@gmail.com> References: <1614758717-18223-1-git-send-email-dillon.minfei@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210303_080630_685513_DCDA3853 X-CRM114-Status: GOOD ( 10.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: dillon min For some case, kernel not boot by u-boot(single thread), but by rtos , as most rtos use pendsv to do context switch. So, we need add an lr check after svc call, to find out should use psp or msp. else register restore after svc call might be corrupted. Fixes: b70cd406d7fe ("ARM: 8671/1: V7M: Preserve registers across switch from Thread to Handler mode") Signed-off-by: dillon min --- arch/arm/mm/proc-v7m.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S index 84459c1d31b8..c93d2757312d 100644 --- a/arch/arm/mm/proc-v7m.S +++ b/arch/arm/mm/proc-v7m.S @@ -137,7 +137,10 @@ __v7m_setup_cont: 1: cpsid i /* Calculate exc_ret */ orr r10, lr, #EXC_RET_THREADMODE_PROCESSSTACK - ldmia sp, {r0-r3, r12} + tst lr, #EXC_RET_STACK_MASK + mrsne r4, psp + moveq r4, sp + ldmia r4!, {r0-r3, r12} str r5, [r12, #11 * 4] @ restore the original SVC vector entry mov lr, r6 @ restore LR