Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp1369939ybh; Sun, 8 Mar 2020 01:55:51 -0800 (PST) X-Google-Smtp-Source: ADFU+vt+W2mset8eCRoU4HDoz0M9C3KCe6kjprEPuGtd1lnwU6oGHguQcYI2cDNZCArr3QOz8WOy X-Received: by 2002:a05:6830:168d:: with SMTP id k13mr9308609otr.208.1583661350899; Sun, 08 Mar 2020 01:55:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583661350; cv=none; d=google.com; s=arc-20160816; b=AysQaPFgiHteujER6dNGcoyDACJv5X6eJA60SxrqqjmpXZrfoIgUi8wltZWpBCu8lc VrfQkijdKwuMIgv93uKHbOK5bT2p05i36CXtC5uskRU3yRLk0Z2j01w2oPdtGdgR4xUD 0FaiC2qq75lKRIJYcp1ak8SGtrlsr60wzMJUT4tdyH3Oz0fUl75/FwbIQMnzka+xmqPu 7Yx7MZq7FsWF+wftsZDNY5wFQO9WkntI9JrISc08jZP2rQnkzXzENWnkqd4OIMl34nFK 0iOwoDNELYbcVLEN9fcKyFJLgu7HhV2FL28gtqwhUtXoKAKBjldVtsZuBUwXDAEv+bHU zlEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=p+myroUcRMbP968ci+FrRVukljYwqHHouPDc3v/jfQc=; b=i20aKwpXlOVNGF+4iTZJEsAWyMhzdkdTSK+2x5W0lbzflQHJ67vHAoq8hRhINTIGEI JF2CKCDMjiAs0j5oH/fOTzeNQP337wzkwvyBGmk3lK9mA43sMmsp5jpByxwbkrbq5Ryk lVYGe+qNMXuCaFtmHkgV90IAOXPAO9uFfummeOqBVuoV9XROcYLXxFGtugCPp//AHwyv cftLPFsARiKSJgkS46nxuSxy5zlAxErXIIZTEZPfUrqMkV/ddgaLy4Z9R6+O5bjI/rEf tbcyid+pzIKVbhKj1qbtJRGdQy7b4ZPbvqNdVMhc7t48xGrFIFJz1+tTVaJqSNGIpykf QeSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="q1/n5tHI"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g22si4311694otk.6.2020.03.08.01.55.39; Sun, 08 Mar 2020 01:55:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="q1/n5tHI"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726571AbgCHJxk (ORCPT + 99 others); Sun, 8 Mar 2020 05:53:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:37724 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726548AbgCHJxi (ORCPT ); Sun, 8 Mar 2020 05:53:38 -0400 Received: from localhost.localdomain (unknown [89.208.247.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 58CF120880; Sun, 8 Mar 2020 09:53:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583661217; bh=+Qr7yNC094fLdfxvNgJepSw3Yh+DG6Bi7TV/2dy3vos=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q1/n5tHIv3ZL9rfSU6sl+A2Gv8WdjWhEcZrexYOmlBaff1LPJgpTspF/kB5ksPnzG kE0D6jTCxj216LcamNz7af0mYnb4v/+w4O5ajRgLAaDDWhxeiAkjAsbJ3nPkJtKcU/ fZXggSrRww8paZZipAIYraWOgr2fne8eAI/3fQTI= From: guoren@kernel.org To: paul.walmsley@sifive.com, palmer@dabbelt.com, Anup.Patel@wdc.com, greentime.hu@sifive.com Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, arnd@arndb.de, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren , Dave Martin Subject: [RFC PATCH V3 07/11] riscv: Reset vector register Date: Sun, 8 Mar 2020 17:49:50 +0800 Message-Id: <20200308094954.13258-8-guoren@kernel.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20200308094954.13258-1-guoren@kernel.org> References: <20200308094954.13258-1-guoren@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Guo Ren Reset vector registers at boot-time and disable vector instructions execution for kernel mode. Signed-off-by: Guo Ren --- arch/riscv/kernel/entry.S | 2 +- arch/riscv/kernel/head.S | 49 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index bad4d85b5e91..449e0a7ef115 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -76,7 +76,7 @@ _save_context: * Disable the FPU to detect illegal usage of floating point in kernel * space. */ - li t0, SR_SUM | SR_FS + li t0, SR_SUM | SR_FS | SR_VS REG_L s0, TASK_TI_USER_SP(tp) csrrc s1, CSR_STATUS, t0 diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 271860fc2c3f..b40d8ec7ad5d 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -72,10 +72,10 @@ _start_kernel: .option pop /* - * Disable FPU to detect illegal usage of + * Disable FPU & VECTOR to detect illegal usage of * floating point in kernel space */ - li t0, SR_FS + li t0, SR_FS | SR_VS csrc CSR_STATUS, t0 #ifdef CONFIG_SMP @@ -290,6 +290,51 @@ ENTRY(reset_regs) csrw fcsr, 0 /* note that the caller must clear SR_FS */ #endif /* CONFIG_FPU */ + +#ifdef CONFIG_VECTOR + csrr t0, CSR_MISA + li t1, (COMPAT_HWCAP_ISA_V >> 16) + slli t1, t1, 16 + and t0, t0, t1 + beqz t0, .Lreset_regs_done + + li t1, SR_VS + csrs CSR_STATUS, t1 + vmv.v.i v0, 0 + vmv.v.i v1, 0 + vmv.v.i v2, 0 + vmv.v.i v3, 0 + vmv.v.i v4, 0 + vmv.v.i v5, 0 + vmv.v.i v6, 0 + vmv.v.i v7, 0 + vmv.v.i v8, 0 + vmv.v.i v9, 0 + vmv.v.i v10, 0 + vmv.v.i v11, 0 + vmv.v.i v12, 0 + vmv.v.i v13, 0 + vmv.v.i v14, 0 + vmv.v.i v15, 0 + vmv.v.i v16, 0 + vmv.v.i v17, 0 + vmv.v.i v18, 0 + vmv.v.i v19, 0 + vmv.v.i v20, 0 + vmv.v.i v21, 0 + vmv.v.i v22, 0 + vmv.v.i v23, 0 + vmv.v.i v24, 0 + vmv.v.i v25, 0 + vmv.v.i v26, 0 + vmv.v.i v27, 0 + vmv.v.i v28, 0 + vmv.v.i v29, 0 + vmv.v.i v30, 0 + vmv.v.i v31, 0 + /* note that the caller must clear SR_VS */ +#endif /* CONFIG_VECTOR */ + .Lreset_regs_done: ret END(reset_regs) -- 2.17.0