From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743600; cv=none; d=zoho.com; s=zohoarc; b=jV3ivxYjgtR1zlTDNe3DjjpGIILGMX1vLQBgPAK4w/czH246Y+zbY8SanFsffH9JRDUxdgjnEeSTpiEgZKd2fYjyAdVOZzoHU5LLtXeJri9QcYUxUnukOG2jKSytHOmVpKbJjxl+iM+a5aTjps475vGYBQXnK+5bFC2UO6gjW8A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743600; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=4eksf7iiXOHLQ6CXx8rX7r4hJPgezx1ycWsfYSh2m1Y=; b=mbp7KJ7PGxFg/BxexIVdbo/8HXotGopnE9BPd6fBcr8Fpe0i4o3jVtcYcQt3VtH1qck81AtXNylYPsPNEAZTVojh/20vgahSW8x3xCGAd7GSbxYaPHMSr0RS62l8dbcVVxQd6q2BzMrE29KQV3m7XrqgXwcEAl6zz/m6Vq6TG0Q= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743600841653.2766397497971; Fri, 24 May 2019 17:20:00 -0700 (PDT) Received: from localhost ([127.0.0.1]:33742 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKPf-0006qm-TQ for importer@patchew.org; Fri, 24 May 2019 20:19:51 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK4C-0005Im-Cz for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuU-00048m-B1 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:39 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuU-00046f-0J; Fri, 24 May 2019 19:47:38 -0400 Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:33 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 May 2019 16:22:51 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:47:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741659; x=1590277659; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Afx3i4e+/e/6vVqAletdTzpjrs6vkjl1vDNfsdulAjY=; b=JQ6Ozg0pdlrtLcDrYdQAuH619iAtDRjuVKDrWnEIVnqChjgDZUBhhl1k TxNSRyiL2eWGie8RYQjYbAdFqk+5wny04Bf77ggTDRiiYg9lILoxQVAUj 0q248wq+U7bOF8iqJJNWcpHPAM9K9sR4gvEKM6+XzZzhkH627GiWWICXQ FWGj/6n1XDAFidxZC+4rbuQrrjhh8qCj8WO5/l2FvXW+KarQZiPs4IEz+ 4u2PSqLLr1PX1Ww/JMOgHIhX23duFKlMXPWhjbT6+MC/PFFEx0J6GM2VV TTzgfuta0CBnSsiZljhm0jpCbgtclhFrGn9QenYFe7uM5R6Zg/rU4HPt7 w==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307754" IronPort-SDR: FkAcRe98pwH2icirvF/sqLrqcGL3aUBrt2xK4L/Mg8Itw/EfsLZPnbq4UZdJH/D5jlH9Ha+Ob8 Q7J3ix3tLTLNMgMvIRtGQyw85RVbES6yDGavDF4uX8IaopRDKu4cssj9mlNp3132dutXICawE8 4HT0si9SAYkGb12nPMk7awv+H6gbsVk8lBrsBwg81KgKYYqYpun0rcHmmV78lTBUGHpKkKyNiI dwjfQ9DJpXylPBJV914cdv6T9pfmDZOPKVXu50prpk+bMBHcvZ8cmIweeNqURVF076rQhpGxsK Ys1+Lxqc/2Dyh8u8HNnB/h0+ IronPort-SDR: 5TTr37oCle647gG7iHm3tJP6HuZTxzsH0P3pNdgd7kiL4NzQ5I2gMsk5ZbaA7fi4u6rU33ijul jEjh5QAyChG0mMEfaTMk/S8BkqnQJluA9vihsgbxK6Kr2eecB2K5h3eoBM0myLDzHF0fDUL5lA 1vj+deQ5VvSRDXZZK23bleIF9gzsdkVgANa8G0CdKmk4Qa0xOp4fr+bDN2Og21oPKSnZtU7ynB 2h1fAmxC2e98c63b7LdoXU6u6lcqs17xjB7WhdqJMQdeInhpfwxOwBhui0eFx7QisJpVsg2JJK q5c= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:37 -0700 Message-Id: <5b489a8f97b84a7c1b428b9deb2ceef2f04a8de6.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 01/23] target/riscv: Don't set write permissions on dirty PTEs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Setting write permission on dirty PTEs results in userspace inside a Hypervisor guest (VU) becoming corrupted. This appears to be becuase it ends up with write permission in the second stage translation in cases where we aren't doing a store. Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index b1bee3d45d..872835177a 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -326,10 +326,8 @@ restart: if ((pte & PTE_X)) { *prot |=3D PAGE_EXEC; } - /* add write permission on stores or if the page is already di= rty, - so that we TLB miss on later writes to update the dirty bit= */ - if ((pte & PTE_W) && - (access_type =3D=3D MMU_DATA_STORE || (pte & PTE_D))) { + /* add write permission on stores */ + if ((pte & PTE_W) && (access_type =3D=3D MMU_DATA_STORE)) { *prot |=3D PAGE_WRITE; } return TRANSLATE_SUCCESS; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743242; cv=none; d=zoho.com; s=zohoarc; b=m9hg1HdXO52CbeWbhjpmgs0Qi/SdCiG2UEYo9KY0Ptf9DKz3RkeOTvNPXSybLvgyEDztKBgk6Ocmx6InyYLafm2DeeF9glvLcKjAMBGcn9moLBMh8bWIF4XcVSeDPrQjuv9ITgRUa6QI6DytGWVwll5Pb2ENmb6Cvf/yxFqPNkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743242; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=UmfutIeug9PLXy3vkNQcgh1L2Yesl36jPLh6NxeE268=; b=Bi4pmFs28Dm3/+IoE9pVBFFhgn5Ma4eSQU2W7obKFE6+iQoccKLas9X86gD4frocr5wLbvi2UHZ7/lXV03tWqWFj1GkfihSEBJuwwPlkBy3rMSzMCxD4pTAnBqTj0vNp4ZRFip2wnmEn7spfPt55PkX6pHKK8i62/zAHV3pr3yQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743242292802.6637929462659; Fri, 24 May 2019 17:14:02 -0700 (PDT) Received: from localhost ([127.0.0.1]:33654 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKJz-0002yd-A3 for importer@patchew.org; Fri, 24 May 2019 20:13:59 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK4B-0005au-SD for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuV-00049B-1K for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:39 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51624) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuU-00043c-Mo; Fri, 24 May 2019 19:47:38 -0400 Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:36 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 May 2019 16:22:53 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:47:34 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741660; x=1590277660; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ao9gCKvSoFwU8QM28M/2smcm/7HnPQ04kDU0bSYTT4c=; b=LjpxKAVl59GihkIhlDqlGxptAk7eFT41ajImGuDiN1hvp44H2vEMMudD xlGjnl7fYIx9jD06F43VX7MOqdVlDP+KPbKz8RcaY0HqIwOITYgSNePSU OUNJ5jQlwmiFBIHL02d8y2n9v4E9tO9/v57/m5XuQ6O+zjAHSOtdy/ixD MnY/KyXN9o87HfyQYJRifvIQuPdBgmTiUFB9AclvLs5bW1OL11WhiDjqH 5o5Z6KmNq8ZRLjKZk1DhNgLMbZJHmLF2llKuiwB2GDyAI995DZYXuvC3l 692dyUlf2siGciNQoZYR+3HWAn7bhoSRKR9JGlMLRR4jc793m93lY5ZI2 A==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307756" IronPort-SDR: M4vZR1WT3BnaDfJn6gm5ZrtaWUWxrGlajA66TCYNwu7ZQ/x7Nai3ZQp1O/tNxedV7jCqOsbtw2 jqF0iKreY0/Gia7bVKxhIN0LrNqQThmjUAUCF1NfwreoHzO7MRzoP6jN2Hli048gJipqs/TzFU KWZdRYi2a3jSX5/cnKq97jH8IhFbAOD+vpoaPx4Ka/d/iNitxfLYBR08saLzEPCsew/5pi2lQU oz+IJ+p4NCKIy0+o5QGdQvxeTddTyvEQ/KpJp2/WhD57eRml/rr0hJiv9S+ECzj25YIQwtNWi2 lS+iA+KvNNrym3vT/71eI2AZ IronPort-SDR: Z9W+cSivcv6Qg7ANGLOVFQAudsfnCj9b17C38Ak/aZJSvs6TwyudBf9emLGuUGhgvvYDeWn+S0 wQhdCC2HiFh//oVaLxY0u/fSJxZcV4qYVPncTVO36O80RLzWygs0nw2n+ncAa3MKJHhszLPmwH va17x86+kd9sFE19QsaEh5zAPEEJ9rK9qlQlZM7+5Zu83qFkQogfheRYt6hUchERzbJZ7v2okH CBJb7Vt60XzuC/KdIINYr6Gsyszo6voyb76ZcQUHCfqazXAf0CKcGyZc/EZuYpKVCV4udAyR5G 0iI= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:40 -0700 Message-Id: <668f55005ffe96a231306ba4d8022e43142b25f5.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 02/23] target/riscv: Add the Hypervisor extension X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 8937bda918..3337d1aef3 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -81,6 +81,7 @@ #define RVC RV('C') #define RVS RV('S') #define RVU RV('U') +#define RVH RV('H') =20 /* S extension denotes that Supervisor mode exists, however it is possible to have a core that support S mode but does not have an MMU and there --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743535; cv=none; d=zoho.com; s=zohoarc; b=hvvBgYWSrEAIouUHdqwf0oUG57oLNFzoctbWWDfp/s7KNh6/3iATSVhMBIC7/82liEXp8+7niClKRhTZVhu5eBeK2112s4eFU72IDSHQtBh7nmsE6CMTEW+43dwv3/8UcACcR3cUVlNi/DihInQov87eVntd6AUXwWK1zddaRJo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743535; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=91HKHxmt0tEAuGXI30vJJJQCx9xRRUsFPjT8+ZIRaOw=; b=Cq1swNq9yH0SLkMyl8nQdIUTi8fGvdUP5jRFc8niEqXwla7vsz0gRRTs498SkuatRxIXYSG6pSoI7JjPjskjJyHTGzt+zNRtl8R7GCjAfKSym8vtHPT5v6MM9bKMDovvDOWiHg8kJNkanO+VUfQpg4Oo5IstvdA0YXT+s+YK0D8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743535321921.4574179972583; Fri, 24 May 2019 17:18:55 -0700 (PDT) Received: from localhost ([127.0.0.1]:33736 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKOc-0006Gy-9X for importer@patchew.org; Fri, 24 May 2019 20:18:46 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60254) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK4B-0005Kz-Kx for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuV-00049N-5p for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:40 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuU-00046f-QB; Fri, 24 May 2019 19:47:39 -0400 Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:38 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 May 2019 16:22:56 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:47:37 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741660; x=1590277660; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Fvl20bL70W6URC8x1oiu+t8B2haDxcStjjs1M9AXrF0=; b=VCIyN+/m6WcPtuGAMZloZHgRQJCRc91LSocy/4kgG5VROcefWyr7fgH6 63GZxFPBDZJ0vx8vvt95cs7d65wnuyLQApT7qtXc4QGrqf3JzM8Sc92if x2A7bHF4m5jgWq3/qku92zjWCpU2+W6sDe0aVF57oty8P/yeOOQhVdlXd /IUVMEgKEB+hF+BRfRTQQVZYW6s2ySXz2Lxwx285jRFdKxmRicZ2eoHXt FF23BNLbJKhnBswCVbYOnFGub/nhySEsTaxrM7RcbDB2WG2tWa+u9cSQH /Vo8vNaJmqh9BOggib4lVEHGIvoZ1nV2GjlLHA6Ow0dCN+MA2ERbjILGY g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307757" IronPort-SDR: ch4WJuq8osOuPBwMDtoIUgLlb6km+ZDVXvuzvzzRJGOxPmmEHMfy7fcTBBauPRg0Wn/+TiyNqj 07CUxSUJ1Zbh4LShUi2rwCoah1niV41e3EZ05cd/C8tULGfbeZbudI6yf2haPooew21ZgwVLTA BN3VZOOWzaoJDKUlFqmWKEtI0OCo+JE8LetW+yG/6UvhXW1BZ/Pz3YeKtZTE/to8GH5hLvu9Zi pUdT3MjwumaFH+otV9pWkUf4t5B2h7aJrTql1csHwNkMMYZHcfnMKKcNmMzl7zJPJ3vJjRc6d5 SFSsbIsnv5I6JJFFngp8rkcx IronPort-SDR: 52HxRoIK83FXMmBgnXauBoo2AWL+DxFiO8hleuX9iT/Gzt0FL0mg4vcqY/PkdS+5+6bM5upiD8 C/hgCkbnzUg/I+xTEd7Ornr261adobfoBmXwIDNGRi8UMsVsRUlks0QbPokYbAZ1YkGehPl5u0 JfH9Q01ohSt9Z/8/5z/U02r1BZlcfhYZqVHdVyuepGIbg/4J0BI3rgVYCzB6QJG/Bwr3WOes9J sXvgI/foLrqrcOg4kXf4IoWvFom5B4TftxP5d6YLhB+dsAA/Nfu4sh7yPPMVM8pKgDSYSV2hCd /xs= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:43 -0700 Message-Id: <6ac178e4f6ce4a8286ccf015b3f7b5c42277b3db.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 03/23] target/riscv: Add the virtulisation mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 4 ++++ target/riscv/cpu_bits.h | 6 ++++++ target/riscv/cpu_helper.c | 23 +++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 3337d1aef3..de4843b879 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -132,6 +132,8 @@ struct CPURISCVState { =20 #ifndef CONFIG_USER_ONLY target_ulong priv; + /* This contains QEMU specific information about the virt state. */ + target_ulong virt; target_ulong resetvec; =20 target_ulong mhartid; @@ -278,6 +280,8 @@ void riscv_cpu_do_interrupt(CPUState *cpu); int riscv_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg); int riscv_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg); bool riscv_cpu_exec_interrupt(CPUState *cs, int interrupt_request); +bool riscv_cpu_virt_enabled(CPURISCVState *env); +void riscv_cpu_set_virt_enabled(CPURISCVState *env, bool enable); int riscv_cpu_mmu_index(CPURISCVState *env, bool ifetch); hwaddr riscv_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr); void riscv_cpu_do_unaligned_access(CPUState *cs, vaddr addr, diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index dc9d53d4be..07c95e8d2c 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -417,6 +417,12 @@ #define PRV_H 2 /* Reserved */ #define PRV_M 3 =20 +/* Virtulisation modes */ +#define VIRT_OFF 0 +#define VIRT_ON 1 +#define VIRT_MODE_SHIFT 0 +#define VIRT_MODE_MASK (1 << VIRT_MODE_SHIFT) + /* RV32 satp CSR field masks */ #define SATP32_MODE 0x80000000 #define SATP32_ASID 0x7fc00000 diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 872835177a..5912ae63b7 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -71,6 +71,29 @@ bool riscv_cpu_exec_interrupt(CPUState *cs, int interrup= t_request) =20 #if !defined(CONFIG_USER_ONLY) =20 +bool riscv_cpu_virt_enabled(CPURISCVState *env) +{ + bool tmp; + + if (!riscv_has_ext(env, RVH)) { + return false; + } + + tmp =3D (env->virt & VIRT_MODE_MASK) >> VIRT_MODE_SHIFT; + + return tmp =3D=3D VIRT_ON; +} + +void riscv_cpu_set_virt_enabled(CPURISCVState *env, bool enable) +{ + if (!riscv_has_ext(env, RVH)) { + return; + } + + env->virt &=3D ~VIRT_MODE_MASK; + env->virt |=3D enable << VIRT_MODE_SHIFT; +} + int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts) { CPURISCVState *env =3D &cpu->env; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742768; cv=none; d=zoho.com; s=zohoarc; b=cA5uTO91p3QfrBO/iaI4OTR6mlPq1wvAhUqApfgnGBSiuHmA3zsd/Ai7d2AU8wMmrcQufsrv1eiS1tSD5XlhyEFJ51SzHavV9jcnZmauLGPuFEfMs5mZVvsDnO98fuzCK/3Kw/xqew8F9mxqIeCcVfn7HjOJ1U9Fb+LauzKAjo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742768; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=cQYlaX+taBQxJeKtGgJ6RRo6EDlzQkQqDfEo7BFWToE=; b=Mr1O1I4TenWn8ZZBvbnrHX9HWOqSAeeGX+zYyhJspAXLFXUuHIBCk5J2KLQuD+SqYnoRjSBZtYdHJFWZj+cxj9B4A2bymRhOv6OgCKEpAmLjN+XtSDxq02cZiwNNE759CxBtz9CSi6dCARQllT1hRSJISiAypgB6BK1j5R+aSTc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742768503817.4950308997768; Fri, 24 May 2019 17:06:08 -0700 (PDT) Received: from localhost ([127.0.0.1]:33506 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKCE-00046q-6d for importer@patchew.org; Fri, 24 May 2019 20:05:58 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60254) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK4A-0005Kz-IE for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuX-0004BK-8P for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:42 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuW-00046f-T4; Fri, 24 May 2019 19:47:41 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:41 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:19 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:47:41 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741662; x=1590277662; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Xw65e62SJqBKkrt6W+qEPmpcUgZUUv62LCp3vTlHgCc=; b=OVpe9l8HRnEg2cVd/un5wPW7s2SYif12D9h1KBCOEwClXORGdSFhGEQt hM6PpGGPB3O5Mjl2i/pmWbwoa5sDC1z7/w6szLGXEtD+ty0Ktd/VTaBeB TyBWlVdQVTdUReKLsT+MIKcUL95bJ4pRzjHINFirSEeNQn0MGshQ3szg8 cQToahnp+qXHGxaj10AAsd3LC2pb6XdFkev80pd3O9jYKrgm+B+7Pp8U9 JrF1CSCISxzfQqr5FwIb5eVVSiFRUeKtIzKv8NTzxAr9/Bm40uzyRix30 BWbf2lHT1melu8b/mIEzznweWliO9pI3UmWKICYx7XT31CDiEBz7N652e Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307760" IronPort-SDR: lujm9HuTDf4IWAab1+4lRwsxKkl9RHqMFahMmliPC3k8X2qCeeQHC4CAbMROECviYtk6Om2u4v gyG2u6xs/u+85tgGMeP9Dn42LjgiWPZO+j4gfXkRfZ3cQvU4gy3d2FM4y2EPAuAMElK59lRFia PWWRdpDwwhDQrhGZOHMU6IqjFz1CjHXx2hvSXeE24YYHOYjW1NK9VFqxLYgmy772hB4s0CrLQo /m5XVYDrLepZ+kXTpHx6Z9/pZmRC9ewIB7LDy2url03EjqLB4AUuWDXQ+4VmZOU6pGzjmM2RWw cRIzu1KNEMJFaG6wfoB4c/RD IronPort-SDR: s2VEP5u/QsOkKWltn0Y6IhjEvGc3MJtx6nne7i6/+tM+HkEBYvey26GfylNno9Wt9Fe5QKn61N 8wlc6Uyuo2+b5JjN/62iIdZAEV8TDcOKJuQKs71uxo55dNdkKLtyUbh3e2NIH0whqeYp+9idUY wPsf7hJFiqr0PahIo8vEeP826w4gILTIsM3vuuSRq+m+gCllLrUSUWOYoCsuHeK0GvfGF0awd8 aEsPM5597lm6SPudxVa33+/kW78LtlGCg3xU8VdBI90OBLdjPrfMeerWk5LPtYetbBOW1JvWpE wls= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:45 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 04/23] target/riscv: Add the force HS exception mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 2 ++ target/riscv/cpu_bits.h | 6 ++++++ target/riscv/cpu_helper.c | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index de4843b879..eeb3756c91 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -282,6 +282,8 @@ int riscv_cpu_gdb_write_register(CPUState *cpu, uint8_t= *buf, int reg); bool riscv_cpu_exec_interrupt(CPUState *cs, int interrupt_request); bool riscv_cpu_virt_enabled(CPURISCVState *env); void riscv_cpu_set_virt_enabled(CPURISCVState *env, bool enable); +bool riscv_cpu_force_hs_excep_enabled(CPURISCVState *env); +void riscv_cpu_set_force_hs_excep(CPURISCVState *env, bool enable); int riscv_cpu_mmu_index(CPURISCVState *env, bool ifetch); hwaddr riscv_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr); void riscv_cpu_do_unaligned_access(CPUState *cs, vaddr addr, diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 07c95e8d2c..c898bb1102 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -423,6 +423,12 @@ #define VIRT_MODE_SHIFT 0 #define VIRT_MODE_MASK (1 << VIRT_MODE_SHIFT) =20 +/* HS-level exceptions modes */ +#define CLEAR_HS_EXCEP 0 +#define FORCE_HS_EXCEP 1 +#define FORCE_HS_EXCEP_SHIFT 1 +#define FORCE_HS_EXCEP_MASK (1 << FORCE_HS_EXCEP_SHIFT) + /* RV32 satp CSR field masks */ #define SATP32_MODE 0x80000000 #define SATP32_ASID 0x7fc00000 diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 5912ae63b7..0fdc81f71f 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -94,6 +94,29 @@ void riscv_cpu_set_virt_enabled(CPURISCVState *env, bool= enable) env->virt |=3D enable << VIRT_MODE_SHIFT; } =20 +bool riscv_cpu_force_hs_excep_enabled(CPURISCVState *env) +{ + bool tmp; + + if (!riscv_has_ext(env, RVH)) { + return false; + } + + tmp =3D (env->virt & FORCE_HS_EXCEP_MASK) >> FORCE_HS_EXCEP_SHIFT; + + return tmp =3D=3D FORCE_HS_EXCEP; +} + +void riscv_cpu_set_force_hs_excep(CPURISCVState *env, bool enable) +{ + if (!riscv_has_ext(env, RVH)) { + return; + } + + env->virt &=3D ~FORCE_HS_EXCEP_MASK; + env->virt |=3D enable << FORCE_HS_EXCEP_SHIFT; +} + int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts) { CPURISCVState *env =3D &cpu->env; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743501; cv=none; d=zoho.com; s=zohoarc; b=VvGa2rjR3S57eWZKWnSsK9OuRQ8bcomI6AJXXVqAX9dJxlWALVkCSXzmTM1nnLn04lCK5n8Oe94Se3+sJhRzQbIFbe0PnwduZlcY24zSLpiwgT6OES+P678jtelxwKK3iB4++e4ZQZItJydvJkQovp16224FnUh5bnQWDNQVGr0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743501; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=dSwxRYH/k/KNstyO33mctGEfc+d3SXneSTBrkpnkwlg=; b=I1pGN5S77u9g5eYvSSBLYSluxv6OVUUeLVC0opY2FybwpFM2lfPwj00x86Glztg7CqaiGSayZ4OM8j2e4dlr9vc3qPryG3kEKegIKRoncQDFc4mrNdYXdCbx7VstqkzYCMeZX/3mGeDZl3FQXkdWQwhovTdzQ2k1z56WmW87qfc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 155874350190475.67213708018949; Fri, 24 May 2019 17:18:21 -0700 (PDT) Received: from localhost ([127.0.0.1]:33725 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKNS-0005Pp-KV for importer@patchew.org; Fri, 24 May 2019 20:17:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK4A-0005Im-Cf for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuZ-0004Cr-QE for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:44 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuZ-00046f-EN; Fri, 24 May 2019 19:47:43 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:44 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:22 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:47:43 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741664; x=1590277664; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BXuqW+Vie67kKzLkoEIoBCOJ2a3oHbLhsnez7FroSYM=; b=AyM/iUks8huptKJXEszlYsdbl2yEyzJYNh6//ZinTUuTLs8fttucx5hG WxNvAJKFn1pWjh4mxy5OHcEjl7rh7qexEbVfi/u8b7nPwAPEUKBghoWwf cRXCXlQRhKzMHwf+iXr4lBz/1PUNC40b7ZRcLjGwacAynKbHOYcC44n8q /tLbHEaUTY2PcHriLMD3lXejp+qXVEHv9Q8kX+Hm21wZdL1k4RXlWiODI 3Xt6DRfh+UznCHiXYzCk4NW47Noz6lUs4sk4fN9UheDvBmbhbO5tMR2te XlCZjH6ZLJh1xIuBi6jLKN8SE8KBlZ0hPust+9BS7JNcQDo4Uf5b6PO2Z Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307761" IronPort-SDR: XGqGG7BJYF6zheivqY2S8Q7JzmChem+YlFfFQ8yyvD8gtz1Q7wgiUw/NHltU57HK/qY9dpLpEt u8VUmCpdzgpgKcQZNCK3ODAkX5OupagfaEV47UKmqODgYoSOdyvwhCrxZu/ItKk8pSLI+DI45f 6m6vapEcwtM6+rHAmJFZAOWB+PzGk8YDJ6Mt1e0jWWT0VxR5zW48E5AXdNuKFmVHfdK0f3SWbZ YMi6HgoCmPHDWgGOeli8jD3E8QFoiT92dPYB23gExgpA1cZ8vVRwlk/KHEHdQED531J+kMWk7q I6vBVWpnVItSLtjEHXXbxXwA IronPort-SDR: 2Xepllq6cPJtavShVtXb79VZyhnrpk50hRDrsGABhBm7ypcsqysbrzcx1ePt7lDPM1UDMbXm7x WZPfit96hPR93k9BnHRcMmYjvnnVl/QaMBC6RaO2pDAVp3AhB5vpiFfS/7kPbUM+5v13v0ERAs mh4JOEUyPcnUQ9Te4nPsTQim80cVS7MOn/gpBbrrOFE+M5ap392RHzDsObyABAhFFtjerpzKas qBn4AWTJ7AChRUvOz6tpV+/BVyki1W7Js+pnJYZPGqmwbrt7jBSdchvQ50awzLPje2p2mQXfrj 5Rw= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:48 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 05/23] target/riscv: Add the Hypervisor CSRs to CPUState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index eeb3756c91..b99d2b7af2 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -169,12 +169,29 @@ struct CPURISCVState { target_ulong mcause; target_ulong mtval; /* since: priv-1.10.0 */ =20 + /* Hypervisor CSRs */ + target_ulong hstatus; + target_ulong hedeleg; + target_ulong hideleg; + target_ulong hgatp; + target_ulong scounteren; target_ulong mcounteren; =20 target_ulong sscratch; target_ulong mscratch; =20 + /* Background CSRs */ + target_ulong bsstatus; + target_ulong bsip; + target_ulong bsie; + target_ulong bstvec; + target_ulong bsscratch; + target_ulong bsepc; + target_ulong bscause; + target_ulong bstval; + target_ulong bsatp; + /* temporary htif regs */ uint64_t mfromhost; uint64_t mtohost; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743393; cv=none; d=zoho.com; s=zohoarc; b=NpT8yyxEt3ogyxIzvxLwLrhdHIbtsiBpunO8O+fDusg4HcAI51Za8hs00x4BHRHV8NYOUm7Vpwb53OvlxwZpEUJB4ER58OAAGkdTmdxOGadenk2NTolHk/dOxyjJvhFnjaStiXRzogXhM8YQtfYvPaRnh1j8p686osElCWXfA5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743393; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=Z1TlqXydeGS6i+Is94LUVMVhMbAIYbKnqU3DoFx1LdU=; b=hyIJXL2qJwaqq920Fgh1tht7J+WzUClWb9jxK7d0A3N+nPAqoj6gAFyLEPwV7sv7YM3F8y8xC0mPKxY8alzwxAxnZtCEE424dnAis1//1PFDraITIb1YedKd1rESCzBMEQOTmzKO5lpzeu3DOWgf3fJp5yNoF1ATtbShuz83puY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743393545334.92806049672004; Fri, 24 May 2019 17:16:33 -0700 (PDT) Received: from localhost ([127.0.0.1]:33719 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKMN-0004e9-H5 for importer@patchew.org; Fri, 24 May 2019 20:16:27 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK49-0005au-G3 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuc-0004EM-Cb for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:47 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuc-00046f-1p; Fri, 24 May 2019 19:47:46 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:46 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:25 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:47:45 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741667; x=1590277667; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8W/Bpt+bnTxpriny1g+X2aDXu+9emJzs2m4jnMhgMXE=; b=FgUhBVd7Uul69hKWXMr0IL+RvmE5QLFwL7pOZxX1b0emtdlFDHRBs0tP /LqUIDPD83SwjYAROTaIKzYXcPjguaxdEcQ3FgXp+85H3G922N0pHIzJu 4PHdGW9Zz504lxlPU078K8hEJNmGyrEbPneY3MwZuPd7q0tFPbx8t9Si3 8gUd6tj6aaJ2Dm38axLah2LUxzmAD5fGiky+eejYwT5qE9kAY062jftPJ oj75VWZxYV1CMQ87EXekWTHOHh83P0PVFMum7S8ezHtqH1goW6Nwo6aVc FvSfQtZXyFTl9tAmOuqf1zM4mOuUkGer5EFx9RfP1nuX8/kMOpktGhQzp Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307763" IronPort-SDR: lA1CSAWamz4KuB63bbdv6mSvwjf85qYRi65r5ED4CIwGCZ4NqCRu3L7Cp2EOM5PSkbskunfgoh 3o2lKoCieQBrnJongogq7DoQAKWKobMiNiKcIrSSrCcTgUPvrU34Olq+MgTY+W5ywiCPkbTEMT 2mRf4aDdauTXqt4lJgmFpvD2msaUWb9EawrNV9dfoGOQnpiIUr/e5HD2KgfM6L/gWHBJDBp2Es 6XWqoJ2PNjQjnHeSUd8HNUuQCjuGjgFSyuk1k7c7oywZfHBNGM1q2rmVTI7vA47qkaymFJ2jyI l2ciVC9r5JXsYN2/hHGi75a5 IronPort-SDR: 2sIWyjCoeXGiVvMSbcmPXz/rEljj2QnCA05+K/Q6rCt+lo9bdK4xI2rH9g56dq7bktMusJNwIe 51paDrLFjz+201Sekdpy1Nl/RNBWk0698udLs6KEd6PCGysT83zPM0jRyIn3XyrT5Uddk/PMaL 0Xm6LRRxLD1X0i+N1eiTX1OcVR6MHWqMjY9UR3N51q6FMZOdQ0bZS2vhE+INx44GUT5q26Pcny oPrlkVIIUxCVsD5SS24/WpdRSuvxro0QKtLFPrA1QWjUh0C16Kx4wrBuXYDBof5eoKBt3vC7sT LLU= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:51 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 06/23] target/riscv: Dump Hypervisor registers if enabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 65556ac543..c1495ef037 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -220,14 +220,41 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *= f, int flags) #ifndef CONFIG_USER_ONLY qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "hstatus ", env->hstatu= s); + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "bstatus ", env->bsstat= us); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mip ", (target_ulong)atomic_read(&env->mip)); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "bsip ", + (target_ulong)atomic_read(&env->bsip)); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mie ", env->mie); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "bsie ", env->bsie); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mideleg ", env->mideleg); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "hideleg ", env->hidele= g); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "medeleg ", env->medeleg); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "hedeleg ", env->hedele= g); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mtvec ", env->mtvec); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "bstvec ", env->bstvec= ); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mepc ", env->mepc); + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "sepc ", env->sepc); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "bsepc ", env->bsepc); + } qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mcause ", env->mcause); + if (riscv_has_ext(env, RVH)) { + qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "bscause ", env->bscaus= e); + } #endif =20 for (i =3D 0; i < 32; i++) { --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743120; cv=none; d=zoho.com; s=zohoarc; b=AOK0Z67SrCatOSFuaBQj2zcAtZeOF6FPPDu6MG8FXzCUXJGs6LzmrpOj4VxvL6OMSqbRyVuIG3UfrwteS8BQDZrlZsIaosKbRBfgieSYovKZckFhJYEEpSmNBfKTyENAGuCIFxfAC5UGvwc7gl2f5gP3MLvORLV0UYmB8c8PGWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743120; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=yRMGMFJm1x2HdsuE59yYkngg/v0Lrpdms5O6wzuX7GQ=; b=lq/sLKpyNWAupokYou4lWauWsklZzeHzDuToUhfKMq/fizUy7TU1DZuGqs0y4WWvcI0bIzZPM4QuGkwjlpfaiu6m3S/2RZ+mUdzCYxc0Z1ZosS3Q2k1vJ3WNL7icF/iRElx6LbLEGyTWdltVpwNeKduGd+FyGxtgvcYg9XtaTFI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743120553986.2139605404557; Fri, 24 May 2019 17:12:00 -0700 (PDT) Received: from localhost ([127.0.0.1]:33594 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKHJ-0000JR-RX for importer@patchew.org; Fri, 24 May 2019 20:11:13 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK49-0005Im-Cp for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuf-0004Gh-2F for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:49 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJue-00046f-Mp; Fri, 24 May 2019 19:47:49 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:49 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:27 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:47:48 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741670; x=1590277670; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CblKzUydaPdK2Acz/EA2QEHx8CBOtgxc7KlVwn3Fylg=; b=PA2dh/mVW39E4Df8HyTgM3xSlc8u8R75oWf6+Cq39pSL0nwKWGV6qBko rWFjZjEX4FwTVb5URmGkF8nIiLNIW/1JwveLCLHEMxrcrb3RdZOWh3ASy 30oe7/VlrFqdKlnHN5Ld97J6kHu8AXM1wLlYtgPyIjNgb385aVqeAhXz/ v5qHrI1B3EZoB3yXPihhaD3Ez9Nzu9udqRxsavM3V1Bz+TvtsOn1nt9xd GHp8rTP1hqTxdNDQMajTcpjqGh2rgJKlVk2UUz37OByn34PqAkP0tkp0U d06C4ePFwDPSRvMV5j8KPFyqiwGo/Zh7izuyHv5RhXe+1iRiNtVB5xJUb Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307765" IronPort-SDR: s2BieHkjQTnc30J+tooQ/mPdIZOi4Uc1xvrsgJKxj9e2LVWeHm0oWIPh6GMxIsp9Y2XQJFaTfk 8UBuJEYdfctBh3T0h6GXQVQ7KaeOaUdkj7pMIchwNynAOuAifTm8klIEAFydLccd07Hdi0zsEd hBFUXY1H/GZSfuN/0/6Z6vmSnau1hBsGM2GTxuhi+RIWU1Tter1arApvJRxfu7B9C/Ma3URt5d OKjUKOVceRs4q46Zn9T+Mzsl+Qts6sqd79zi2QnApZQfSBlB+gdLIh8uZ62pvKE8gTpvh5FjGM /TSiO9cHbQhxVR3GfnQoMmzo IronPort-SDR: 9IZHx4XQlvkj3vhX3JiPlaS4G9HineMSSqISM8pKwSiXiZEtrAmBA2Q2chU5vS09P6u12OlPjq fE4WaUvn34AM9bU3xVidA2naVboyjo7Jbr9sLCYyccnmg+/JfIGVy4+V0Bj5SxJGuqyMHsdPzu vsOBJ3OrZFemtAu6nVmhzgkywohmTa1L38DusQS3LQXbwEwOw+2TI7VZf9BVZOVsZO6J3Wxsom V9C927Tk9LkM/j79y6R2qx9D85QjbgpLlG6WNXMipnrz4lYJig+ByIEQ/bt7YZVDwQYe259pUC nBo= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:53 -0700 Message-Id: <6706cf56683e5a934ca90f0ea09d03987d86b608.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 07/23] target/riscv: Remove strict perm checking for CSR R/W X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The privledge check based on the CSR address mask 0x300 doesn't work when using Hypervisor extensions so remove the check Signed-off-by: Alistair Francis --- target/riscv/csr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index e6d68a9956..c1fcb795cd 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -771,9 +771,8 @@ int riscv_csrrw(CPURISCVState *env, int csrno, target_u= long *ret_value, =20 /* check privileges and return -1 if check fails */ #if !defined(CONFIG_USER_ONLY) - int csr_priv =3D get_field(csrno, 0x300); int read_only =3D get_field(csrno, 0xC00) =3D=3D 3; - if ((write_mask && read_only) || (env->priv < csr_priv)) { + if (write_mask && read_only) { return -1; } #endif --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742915; cv=none; d=zoho.com; s=zohoarc; b=RmtWaCsbETjWGeaXKaow29Jx4isZXiqmz0Xmvi2Qt6+IQNk2Qk+uuOzB5n4NXYkekpKvOYJ8ul0A2wurGCzdL2L/2tGJnUSE23pWrWaDMGSpt0iZXaULWE/XZMm2UOzSm8iyLS0Uea0Xwmop8NOxKslevqGQzCei0keWVG7+Ml8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742915; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=jZzOgmFF6zsh9BOUKjdiM4ZEhbii4N6/CVmcYlVBs3Y=; b=DM/SacFjPoBQglFoFBeibqVlMIvEHrgEiJCwM8ihRhZq9T2APfJlnJp3fLVuB5fZ/Dsafmprzx8J47DSAzVh1PFFSQfYW8ajSa5TMx6pyp+99cQhWrqF6wI+a+yMLBwY75cleGnTL3uvo+JpG7i9PrU/DviHPfw+1o8dlhSKOsk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742915530848.9587129530261; Fri, 24 May 2019 17:08:35 -0700 (PDT) Received: from localhost ([127.0.0.1]:33532 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKEa-00062d-Cz for importer@patchew.org; Fri, 24 May 2019 20:08:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK45-0005Im-4O for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJui-0004JI-Ue for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:53 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:21008) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJui-0004I3-Jz; Fri, 24 May 2019 19:47:52 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:51 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 May 2019 16:23:09 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:47:50 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741673; x=1590277673; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MovSZKAQqGsxV10nTM27s96VEzw0BeItClqWarQW+A4=; b=aT7lVOOFwkWPjgkc0wezxs6uLfuAV18kcmJlX8yQt1sS/Ul3ar3a5D9I naD0uD47QG1pipTF8vaDk0BQ/fiiPoU08DQWnVID1OghTO7P/73hecNzx x9quaXdonRiITy47N+Z2/XoX3176EbjmxlmKmtMHiCU6QQjzSYvE0jtM3 vlbIhdCgLKWxuuVidrTiP48y3NN6QFddNbIBYKUpGBoj2t66UUriHVroW bs02R50ew2B/jj+2BBVc4JVDzblulpsELknz1jxSnJocIB+U1/sXu9euV HUu7SsJ661RJPM2aeqCTPEgyHNY3Dsv/NwbeP2BGO8b/eHWHOX0p54ojz A==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="114006655" IronPort-SDR: pe2zoCSscteZLGgs/USY4gTe+2/44gRKT/ZVsX7SibQppofx11lu1SmsCwvC34g0PuMCos1Lv/ Lbrz1PxdXQWLs0zxXUNeTm6AL+VdeCCHiw8TIQJZxIXUmGXzaY9l4b5BgrfTEsAbDHPC0W3GU7 qtOCP8AHXeNgMr6smaPlkK+QKdfKdv0E2e+Gm0RDloigs7FY52ub6pWsnl8hDhfk7p2eaZKcny itciyhT2beskVI7LhAVnk+W+MLjO1c3BUyI2jJYRfSmAaStXaugvM55ygf8kqYsJ/y39yxOvva cd7dCMbShb91nWq49pJHYMRS IronPort-SDR: DCJ7gsGlmvO3/I7y2Ks9mQ0BG01lMa2a+cFNUemklqyyAGDf7Qo5u9NPB9CPOxky2GvqXHfAqu DdMJOaqNthKjT7LKM/q+6C5/FrMWRVXOYK+oAQfiMAvtzAixdITNmrgDv5TLpgHm4toGGxslEF 0ypAW6JIqVIb0L12QctNKxo0ACkUIpmZA1daBq4OpyTSv8MXBS/eGBue7JTLLd/16mBpa22b02 dApwlOwbHSFvM8lHHxTsju2WGmgxggCFuSJpEkXhsVSBKr/GIRWlyRXTOfEKgD8Dv8ltKcEMFv Rwo= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:56 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v1 08/23] target/riscv: Add support for background interrupt setting X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 0fdc81f71f..1f466effcf 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -38,12 +38,27 @@ static int riscv_cpu_local_irq_pending(CPURISCVState *e= nv) { target_ulong mstatus_mie =3D get_field(env->mstatus, MSTATUS_MIE); target_ulong mstatus_sie =3D get_field(env->mstatus, MSTATUS_SIE); + target_ulong bsstatus_sie =3D get_field(env->bsstatus, MSTATUS_SIE); + target_ulong pending =3D atomic_read(&env->mip) & env->mie; - target_ulong mie =3D env->priv < PRV_M || (env->priv =3D=3D PRV_M && m= status_mie); - target_ulong sie =3D env->priv < PRV_S || (env->priv =3D=3D PRV_S && m= status_sie); + target_ulong hspending =3D atomic_read(&env->bsip) & env->bsie; + + target_ulong mie =3D env->priv < PRV_M || (env->priv =3D=3D PRV_M && = mstatus_mie); + target_ulong sie =3D env->priv < PRV_S || (env->priv =3D=3D PRV_S && = mstatus_sie); + target_ulong bsie =3D env->priv < PRV_S || (env->priv =3D=3D PRV_S && = bsstatus_sie); + target_ulong irqs =3D (pending & ~env->mideleg & -mie) | (pending & env->mideleg & -sie); =20 + if (riscv_cpu_virt_enabled(env)) { + target_ulong pending_hs_irq =3D hspending & -bsie; + + if (pending_hs_irq) { + riscv_cpu_set_force_hs_excep(env, FORCE_HS_EXCEP); + return ctz64(pending_hs_irq); + } + } + if (irqs) { return ctz64(irqs); /* since non-zero */ } else { --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743322; cv=none; d=zoho.com; s=zohoarc; b=CKmaerqw2Xyr4y6jTXjX8TkHQIUb4tYFep655ntvFArJvkZSxBZ3Jw2mOcIHd8fOHZdVNjiXFX0iNH2wFr/LmyjubZd0QfEmMmyzgWJpVrrYvGxS1o4uu/sz0QZNuxT+L6H0R5a9D/qN+F5fvx2M3QrGBrYt+xAIrxGQyiWE4UM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743322; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=rFMRu9oOvPGx+OAmiMvJFL0V0bXam63h2ULCVIP/w/0=; b=RSdI7JiU9FYLir5k9fG53tcv/1QaldH8M/yOP7+mlkS6QHt/qCCqDZaqQurqSJJSZhmgV3EAphvgbbDp7kuTa3N3CnYYnd92SNSsrmOmhZJHBrItqpnvu+kNzEw6KshXbPCkEuZvGIO+0WYmW2kHeA+3p5cc3iJoRdZ2rryjOBU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743322538516.9575140454048; Fri, 24 May 2019 17:15:22 -0700 (PDT) Received: from localhost ([127.0.0.1]:33672 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKLD-0003w5-KG for importer@patchew.org; Fri, 24 May 2019 20:15:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK44-0005au-KH for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuk-0004KY-93 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:47:55 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuj-00046f-Qt; Fri, 24 May 2019 19:47:54 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:54 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:32 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:47:54 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741675; x=1590277675; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+7s/1pLt/imVrzqtURoQsJvM9/dXUZZNehbEBN3Vwxk=; b=AuBjcdbTQLOHuaeXIfUTkAJtIaGaYSxA97XDkNXVIK/j5006JhGsF+Iy PqqK4rI0DIdP1uQhPxFWKC360AtefvwJWJ0sd4Xf4GZsnYF0c4L8oia++ nvRac6/e6Ko+zLHsXyanoR5zFxC9Dvo7FQqWZm0/PtqTJDgbQgeV/+uW8 R4V821m3LgfsfZunRV06B6uEpW1dlkjeEHTgobywaA3X74/MUzfop3xc5 8iysXQz+YfJVw2eOfpRDf4oVjeAbjaYlciYc6ZuRk0vRm1kXAslnq2IZP ZSJzZlYgJDKr3tvGy2Zg2T7xOwhRW+ygvbT78K3s1CmtGq2TNBuFeFI8p g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307766" IronPort-SDR: TsqjmL6Ktgk/3hCaIJT9Tgx9j2GQSEmI199zqrSrN8fNZZRGQgnhPAZMnBr9Ce20FhCKr4BqC4 +DepIpCzmgSegRdEi9GNQ88LZzCxYlbaTk9ngDoBWH6GqnYlt/bk2urYzzx2NoF9fyC3rot8VZ Y0sv0TRFQ55XGoGAwAyqbBk427N6WValRshoicKoHHnmiHfgeXp+iRCQAifF+z3WktSo9eXIgM Qu6LvjdSbUTPGjKWULIHvp3FELb2c2cXBJNllKYU7DdW3Z4NijGrCjz/4nLsCSvEL5FpmOTw5D sG2UY9EgScxe/Me4Szs//U2S IronPort-SDR: Z9hnk5mJfGfa5kUfWqU0jXKJtKjnH2NBQJ0EqyELhlXBn7Wg0zunv/aBM6SN9CQmpzkHm3PI2M QjYX1RaYK/01otSUApQzai/gxuglQ7l4aFbXWvEi4wajPb2hqmVQQa5vfQ7FYjaWmqF5FADqSj D7gdUuR2MyXEIG2QzcWdH6bE9Ptu1kkcoXDYFnqmbUYiJrxCCHxhx7L1/sHRyC5FOQbpVfH0mT s9SAdGQRiRq79uvozIXqAndyvXehymrHG6NqVTOnnIs1ejaX4VXBydBKMsgFO0LE1cliTmavh4 MOw= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:45:58 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 09/23] target/riscv: Add Hypervisor CSR access functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/csr.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index c1fcb795cd..c52fde6e7f 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -82,6 +82,20 @@ static int smode(CPURISCVState *env, int csrno) return -!riscv_has_ext(env, RVS); } =20 +static int hmode(CPURISCVState *env, int csrno) +{ + if (riscv_has_ext(env, RVS) && + riscv_has_ext(env, RVH)) { + /* Hypervisor extension is supported */ + if ((env->priv =3D=3D PRV_S && !riscv_cpu_virt_enabled(env)) || + env->priv =3D=3D PRV_M) { + return 0; + } + } + + return -1; +} + static int pmp(CPURISCVState *env, int csrno) { return -!riscv_feature(env, RISCV_FEATURE_PMP); @@ -727,6 +741,55 @@ static int write_satp(CPURISCVState *env, int csrno, t= arget_ulong val) return 0; } =20 +/* Hypervisor Extensions */ +static int read_hstatus(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->hstatus; + return 0; +} + +static int write_hstatus(CPURISCVState *env, int csrno, target_ulong val) +{ + env->hstatus =3D val; + return 0; +} + +static int read_hedeleg(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->hedeleg; + return 0; +} + +static int write_hedeleg(CPURISCVState *env, int csrno, target_ulong val) +{ + env->hedeleg =3D val; + return 0; +} + +static int read_hideleg(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->hideleg; + return 0; +} + +static int write_hideleg(CPURISCVState *env, int csrno, target_ulong val) +{ + env->hideleg =3D val; + return 0; +} + +static int read_hgatp(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->hgatp; + return 0; +} + +static int write_hgatp(CPURISCVState *env, int csrno, target_ulong val) +{ + env->hgatp =3D val; + return 0; +} + /* Physical Memory Protection */ static int read_pmpcfg(CPURISCVState *env, int csrno, target_ulong *val) { @@ -910,6 +973,11 @@ static riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = =3D { /* Supervisor Protection and Translation */ [CSR_SATP] =3D { smode, read_satp, write_satp = }, =20 + [CSR_HSTATUS] =3D { hmode, read_hstatus, write_hstat= us }, + [CSR_HEDELEG] =3D { hmode, read_hedeleg, write_hedel= eg }, + [CSR_HIDELEG] =3D { hmode, read_hideleg, write_hidel= eg }, + [CSR_HGATP] =3D { hmode, read_hgatp, write_hgatp= }, + /* Physical Memory Protection */ [CSR_PMPCFG0 ... CSR_PMPADDR9] =3D { pmp, read_pmpcfg, write_pmpc= fg }, [CSR_PMPADDR0 ... CSR_PMPADDR15] =3D { pmp, read_pmpaddr, write_pmpa= ddr }, --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742563; cv=none; d=zoho.com; s=zohoarc; b=np/1pfOn4dpzpVj4d0Q3nNJicVvEvHTr8zhNOXmtuIfB+5QDBhrM/3aujkuQPmdm0IkczHnfwM9+2UgMODqjpWs0QWWui3dR6fOayS5Qb8CHMGRDqoYAcFqLnnwXbZAywDXxZ8AsL7MubKOH97Yb2IIZTWneSqk8G7fcuYjoEis= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742563; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7k4J/7E5wmu8ETkyrQVCt8yFAVip0rGiZXb/A7rN3HM=; b=TVyAPYEHw6Fzg2koC1cbE+m7VXYEGC3c7uQqB3YRHrTb5+EBlKFfVfpLsOgCAwAH/pK9Be+nfGqKirrqIywU1xQMMyqQwbB2paD9dpGsjkskH5k2S+gO3tfPHzCrHUbtANHRV8gNR/8QkJeJAm02Rs59MEMO6Bg9lObIagzaGp8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742563349776.5787748216104; Fri, 24 May 2019 17:02:43 -0700 (PDT) Received: from localhost ([127.0.0.1]:33442 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK8y-0001cE-8h for importer@patchew.org; Fri, 24 May 2019 20:02:36 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60254) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK43-0005Kz-Lx for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJun-0004Mj-2P for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:00 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJum-00046f-K6; Fri, 24 May 2019 19:47:57 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:57 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:35 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:47:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741677; x=1590277677; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6UOMESq+sGSeNp31YuaAf4E6LnUDjRVfecs88kpoRRw=; b=SzpT+bCc9eQhK+Ohv7ilck76v3Cz+p4warf/FvvvWsRPJls5vCI91XDZ MIpFdUsNyVMC3DW+rFvgO0V5KSxeIQ6B3YIuCl+jNCf4B8+VTfC3PmQ+c PS0IYT40Ax1ItxR8sjii4332o+FPCL0rACLX73jZFVjE/3+5oBFx154yq 7TREDxWoW7pHwhZpf8OkkO3tS3TT0ZpwzlyeWJ83cIrUWmw0LAcD/lkzJ iGMEybeqz01fONT9BQ5uTM1YJMh8Eeadvs3OaFh7mBi8D/eQEGOyP5M3P y/5CaXsSu5jBla6ijQ5W03V77FCXCSpQp8rVnnqgZKpRV8T9sU5eFCWH6 Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307767" IronPort-SDR: b9YU08yZ1e/cDm7n2RYhU3DfylGXyfyKWZLMwaaihyLDR7HkXTqEC550pACmOJmwJUJ9PI1FWl BITucjTTXaHpRrLaunUf3A6TKw6+8i61erufGrrPxKE4gfbKoQVSQjMK5yCugsOeEVA2LrDduE W27H89zjvY/tkGmdKFKairn2cAprgsqSDn5oWsZX3prAy/hVnbU5Dpyvs+H1yPqh4tfJ0rs2rs zzq4pmTqpSQqgtWolkT5aU65K6V1f/RZPZYIkOdVWZcWKa3wfcoBEeiYIdQXou87T5SeWP9WBF 2sBpa46QizNzwsaTH4dHfxhN IronPort-SDR: 4GHc4TPyVjiu0qyZGLftRQE4HpABb+v1Yx4ocqa7NDLrD/Yjj6NAAkhhuaAeScwuHZWsU6gkuT 4fGELERE/hP9JFJJ5E+3vuIRFYitpJZSM5ED/UCbtnUBM9klak/GwAM6JwUxyBy1Gc9HBZHzEU 4x34nLJuWORDZfV6nCnaeclHmg8Wl6LHgmE1ZL5SCnWW3XoF9MKeSWdN8WjVwyDFIwJxgxDS/a V3e/GgDPbd1WZ/yJS03Nsm0c1LRkq0qXOIPTzR+1Lp7FXk2oW8Bp2SmzmHIDf4Jaau36Q2UD9Z kqk= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:01 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 10/23] target/riscv: Add background CSRs accesses X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 11 ++++ target/riscv/csr.c | 119 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index c898bb1102..9c27727e6f 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -169,6 +169,17 @@ #define CSR_SPTBR 0x180 #define CSR_SATP 0x180 =20 +/* Background CSRs */ +#define CSR_BSSTATUS 0x200 +#define CSR_BSIE 0x204 +#define CSR_BSTVEC 0x205 +#define CSR_BSSCRATCH 0x240 +#define CSR_BSEPC 0x241 +#define CSR_BSCAUSE 0x242 +#define CSR_BSTVAL 0x243 +#define CSR_BSIP 0x244 +#define CSR_BSATP 0x280 + /* Physical Memory Protection */ #define CSR_PMPCFG0 0x3a0 #define CSR_PMPCFG1 0x3a1 diff --git a/target/riscv/csr.c b/target/riscv/csr.c index c52fde6e7f..908e166426 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -790,6 +790,115 @@ static int write_hgatp(CPURISCVState *env, int csrno,= target_ulong val) return 0; } =20 +/* Background CSR Registers */ +static int read_bsstatus(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bsstatus; + return 0; +} + +static int write_bsstatus(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bsstatus =3D val; + return 0; +} + +static int read_bsie(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bsie; + return 0; +} + +static int write_bsie(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bsie =3D val; + return 0; +} + +static int read_bstvec(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bstvec; + return 0; +} + +static int write_bstvec(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bstvec =3D val; + return 0; +} + +static int read_bsscratch(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bsscratch; + return 0; +} + +static int write_bsscratch(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bsscratch =3D val; + return 0; +} + +static int read_bsepc(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bsepc; + return 0; +} + +static int write_bsepc(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bsepc =3D val; + return 0; +} + +static int read_bscause(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bscause; + return 0; +} + +static int write_bscause(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bscause =3D val; + return 0; +} + +static int read_bstval(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bstval; + return 0; +} + +static int write_bstval(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bstval =3D val; + return 0; +} + +static int read_bsip(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D (target_ulong)atomic_read(&env->bsip); + return 0; +} + +static int write_bsip(CPURISCVState *env, int csrno, target_ulong val) +{ + atomic_set(&env->bsip, val); + return 0; +} + +static int read_bsatp(CPURISCVState *env, int csrno, target_ulong *val) +{ + *val =3D env->bsatp; + return 0; +} + +static int write_bsatp(CPURISCVState *env, int csrno, target_ulong val) +{ + env->bsatp =3D val; + return 0; +} + /* Physical Memory Protection */ static int read_pmpcfg(CPURISCVState *env, int csrno, target_ulong *val) { @@ -978,6 +1087,16 @@ static riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = =3D { [CSR_HIDELEG] =3D { hmode, read_hideleg, write_hidel= eg }, [CSR_HGATP] =3D { hmode, read_hgatp, write_hgatp= }, =20 + [CSR_BSSTATUS] =3D { hmode, read_bsstatus, write_bssta= tus }, + [CSR_BSIE] =3D { hmode, read_bsie, write_bsie = }, + [CSR_BSTVEC] =3D { hmode, read_bstvec, write_bstve= c }, + [CSR_BSSCRATCH] =3D { hmode, read_bsscratch, write_bsscr= atch }, + [CSR_BSEPC] =3D { hmode, read_bsepc, write_bsepc= }, + [CSR_BSCAUSE] =3D { hmode, read_bscause, write_bscau= se }, + [CSR_BSTVAL] =3D { hmode, read_bstval, write_bstva= l }, + [CSR_BSIP] =3D { hmode, read_bsip, write_bsip = }, + [CSR_BSATP] =3D { hmode, read_bsatp, write_bsatp= }, + /* Physical Memory Protection */ [CSR_PMPCFG0 ... CSR_PMPADDR9] =3D { pmp, read_pmpcfg, write_pmpc= fg }, [CSR_PMPADDR0 ... CSR_PMPADDR15] =3D { pmp, read_pmpaddr, write_pmpa= ddr }, --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743225; cv=none; d=zoho.com; s=zohoarc; b=FB7GJGyVO3+OEFkSPptcd6qhooTh1Pqwnvefux3HuzT8VTwmMfUXDNuZGjRdFAWko9pCYGjYDTlEOe+Od2p7DTCGYxquIjbYIJACZXH8mjfXu0/3VqDj2uU3kSPtzvUHg9+K47zHohMA5mA02qbswUecsf5AU9bneM5RpE7cVBM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743225; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=bju2C9U9bW2cfY020VfIvn+NAyDJoIs+Wa7EWsditWo=; b=UbYZDM0+XRH40yOLULUb+xlOnquhNHUpL3DPlaU9yOg98w7OwKMFqyKzAXzYlTGjelmnLtEC3vcAuWfAlNSEDsRBuDVsV87d/YM3XtHJS/cvi60DQovvYJXwoQSPkeVPsofDdEKXwJ7PumY1DpWdJWhLY+e7inquF7Hg57O/LaQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155874322535645.46292264211024; Fri, 24 May 2019 17:13:45 -0700 (PDT) Received: from localhost ([127.0.0.1]:33652 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKJg-0002lb-Cw for importer@patchew.org; Fri, 24 May 2019 20:13:40 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK43-0005Im-Uo for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJup-0004Pn-KM for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:00 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:51627) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJup-00046f-9T; Fri, 24 May 2019 19:47:59 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:47:59 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:38 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:47:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741680; x=1590277680; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=al8LxCnIVbOOxV+CyVlDV2vfxMzKewDCHGGm9YaIPx8=; b=qk7ieMjJMmcupPcrKB5VoMNFPOtFjUQNWa8ofJdYX9hqNXRfBGrDMvvy Cz4tHx38/CL08bd9546e3H2xWhihqTxPSY1Xv595jbMg8ONw86lyqj+EW sTqKW8/dmTIvhunpCHiTj6Pc67qO3oVZH5uvpN/TtPFYbr4BS0iOyeHpJ Wr63rvXM4HY7Bhm8R1u9Cq0JYjMpH6u7rv2CFIKILx9BKnXy6CngtH0+/ y7zWlM2zwS7GvhgwXR9x1nqGxYMTmVW1xN9SufBO1T/3lYIXgizi23V96 pvehgBM31EDduiE25WS/NS3nsl9J8zXPFUm5xW+PB83FP3AxdJMgEOKqx Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="110307768" IronPort-SDR: KgtMtEoXYCkJJxzZmvKUg2rmvtu9pUqBnIQiR0zXFyV1Cy4XZcbYi1/hIaPPk2CYhpsrpNFydX CiNqC07sKxCnAB8fE0QAWyrRiGoHhTK2iyl5kNmu7aB7HFn7yvHw+SK9iL7vgvY6nqXu+eupPR a1T3JYTvGa8/Mq17YwxEuESJtkdWFPtGJERyy4BmWM5HOO9oU+UxtnEQmifM+k3WL5MVqSnkHa qOx1so3cp21YExekbmzgNeIXWglVeVdQ09HtptqFalecR1TweTNCSWV5vqD228RQUhockR29wt rrLjEjlRAG0ibpl8VcxX7BLw IronPort-SDR: UNkXA2uZYN8Ntjqye84htA1ZmgQ6WCZfSpvGc0aW7/SqXxT1hc3WiaE+/TNTYvjkVm9P8A5Ey+ WW6QdQt343l7RsLMtHGRr3sq7qfYdI72eTdbNtjQJ85asM5fLe+EaTDZwehLOlbg2Q+Sk7+seU /GYNK2KjQic80R4Cl4oHEkuHhWLzhA0l1gqKGLmxkyX5lAgFUBoTKOvdZiOxStA1PPCHnHiU9i ALyPDMmFkJghmDqOPYBTJLJMhC3vLEYQde+D4812eGtRzYskV3Md2D8cp3p/J3VtKyGzPyPuQX S6A= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:04 -0700 Message-Id: <65714aac56e24d23840b733f0245f9d0b5ecf450.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v1 11/23] target/riscv: Add background register swapping function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 1 + target/riscv/cpu_bits.h | 5 ++++ target/riscv/cpu_helper.c | 52 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index b99d2b7af2..9897392ab7 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -319,6 +319,7 @@ void riscv_cpu_list(void); #define cpu_mmu_index riscv_cpu_mmu_index =20 #ifndef CONFIG_USER_ONLY +void riscv_cpu_swap_background_regs(CPURISCVState *env); int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts); uint32_t riscv_cpu_update_mip(RISCVCPU *cpu, uint32_t mask, uint32_t value= ); #define BOOL_TO_MASK(x) (-!!(x)) /* helper for riscv_cpu_update_mip value = */ diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 9c27727e6f..28117bdd32 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -550,3 +550,8 @@ #define SIP_SSIP MIP_SSIP #define SIP_STIP MIP_STIP #define SIP_SEIP MIP_SEIP + +/* MIE masks */ +#define MIE_SEIE (1 << IRQ_S_EXT) +#define MIE_STIE (1 << IRQ_S_TIMER) +#define MIE_SSIE (1 << IRQ_S_SOFT) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 1f466effcf..0128546e6a 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -86,6 +86,58 @@ bool riscv_cpu_exec_interrupt(CPUState *cs, int interrup= t_request) =20 #if !defined(CONFIG_USER_ONLY) =20 +void riscv_cpu_swap_background_regs(CPURISCVState *env) +{ + RISCVCPU *cpu =3D riscv_env_get_cpu(env); + target_ulong tmp; + target_ulong mstatus_mask =3D MSTATUS_MXR | MSTATUS_SUM | MSTATUS_FS | + MSTATUS_SPP | MSTATUS_SPIE | MSTATUS_SIE; + target_ulong sie_mask =3D MIE_SEIE | MIE_STIE | MIE_SSIE; + + g_assert(riscv_has_ext(env, RVH)); + +#if defined(TARGET_RISCV64) + mstatus_mask |=3D MSTATUS64_UXL; +#endif + + tmp =3D env->bsstatus & mstatus_mask; + env->bsstatus =3D env->mstatus & mstatus_mask; + env->mstatus =3D (env->mstatus & ~mstatus_mask) | tmp; + + tmp =3D env->bsie & sie_mask; + env->bsie =3D env->mie & sie_mask; + env->mie =3D (env->mie & ~sie_mask) | tmp; + + tmp =3D env->bstvec; + env->bstvec =3D env->stvec; + env->stvec =3D tmp; + + tmp =3D env->bsscratch; + env->bsscratch =3D env->sscratch; + env->sscratch =3D tmp; + + tmp =3D env->bsepc; + env->bsepc =3D env->sepc; + env->sepc =3D tmp; + + tmp =3D env->bscause; + env->bscause =3D env->scause; + env->scause =3D tmp; + + tmp =3D env->bstval; + env->bstval =3D env->sbadaddr; + env->sbadaddr =3D tmp; + + tmp =3D env->bsatp; + env->bsatp =3D env->satp; + env->satp =3D tmp; + + tmp =3D (target_ulong)atomic_read(&env->bsip); + tmp =3D riscv_cpu_update_mip(cpu, (MIP_SSIP | MIP_STIP | MIP_SEIP), tm= p); + tmp &=3D MIP_SSIP | MIP_STIP | MIP_SEIP; + atomic_set(&env->bsip, tmp); +} + bool riscv_cpu_virt_enabled(CPURISCVState *env) { bool tmp; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743114; cv=none; d=zoho.com; s=zohoarc; b=iYZ3+C124193XfhlIWNn7DIE/ZxQZqyXfLwx6e2T9fUpUbcWHpRgPPNlhCQeAca94ghpS3DqPhHdDcT7IsXQvDG9as/5jCKP6Ehgv8rdQQRf/0/KjNZve+yRFrv/EgTVEl/F+cDSkfsI4na960hN2Uqqoh1qsBGjW6eVse/y4e8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743114; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=6Th6sqWh3FPlv6zZ+F5Oa0iZlouwMWnwRmwRSObfCg0=; b=TcDteWYl4FTMYWerjp4YshuGCD5ALuul9ctKG52MhlgklNDHXrvMnIbblhSZ5scPubi6T8P1Boz4mF7gb00APpEPbNgYKazGvVFPM4EfxP1LWhR1i+2Or9tKHGlUPVR0NTc7HPO8RBq93zHjhpJXZIMljy2OpWUPNXFNiVTEjRs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743114201909.6269902648046; Fri, 24 May 2019 17:11:54 -0700 (PDT) Received: from localhost ([127.0.0.1]:33606 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKHp-0001GE-5l for importer@patchew.org; Fri, 24 May 2019 20:11:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK42-0005Im-R8 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJut-0004SM-1T for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:03 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:23091) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJus-0004RV-P7; Fri, 24 May 2019 19:48:02 -0400 Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:55 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 24 May 2019 16:23:20 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:48:01 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741737; x=1590277737; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FOZ5qxSOFi83IoijU4WlSRPh1QAki9KyRu0FsUUmoos=; b=NQ5B0mwQpHh+WGXQciUMbwCjg5w9/m6V0Wfek4HuYZDTfyZJiZQ2SmPC kZos4ltGw4mPKJl5Lq5GbSqGQHEvHDfOZFSc3d0OMgDHB3LYrwhujjszA DX3v8nhQUQ8gx5tVjPEBLnvp4hco+3WInIYo6lhHbaTrwEGv5J/xx1FnY 6Q5BliIWWg6sTfryDSClrlYP1lpljfFG3b6WDGon/MhxkHY5kJd1Re/7D fewgW7JF6szP18m7ypsKlfUpG9I7yn1IWffX7VsrsLz/uBT9Dxk3kPHlJ qL2RivKoXIHBc/b7684Wz+aXXWNFtzrgeDHngHhS1gwVgIQpVghL+yS1k g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="208574746" IronPort-SDR: 0nrW5Y8716OjCMK6bwuQuFYuJ/TZWIiCiR1686wrdJEBUWRoFfzvMf5nDz1JQ4QTjGPeR/FYg5 l46gp9s93oDUZHEL5vjtCoOm/JqDwrru2qp99+t6CWh3FPiuYAFdp42BPL1wsq49ev8MvXFPCV JaPtQ0SuEbvi8+8i3hMwAKIyd7ebOHV+5Rpcrw3ost6/3/nypAjDVmKCy9LNhDKbjOubPRVFfN a7JWuboKkSMkI8A6oKljepBnI0Hr4oQpFe0GKFl5XpPLPoRcjLvZuohQzzsU2wCsxydAXtfR5j styanpQSWuWkH9sdsPQ07+u3 IronPort-SDR: H5y4FZT1AzMPJPTFs9NlXdoKraJXWK/8i9bCQRqmqpDKaUU9pSBUzY4bEVHjk7pRbyTFUxq39c FNu2u7VOj7fC81GdA9Qu1JhUBwkOajDqsg9+iD2rYFqC9a4/zUAZaPakXEEiH6b5KcUqcA8KYL cJy8uw566pKtnEzyLQ1buXAO8qiDXTdkrXx4aMqDFCknhkte47x1yu4Kl3HzEzHVHHepH7DLfP MykRPGVUoz1sQvQST2EawB/SEWuEOR7Geayou3QEXJarZSeB+QyBmQldCfmiQHqjKBJoe+/izE 40Q= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:06 -0700 Message-Id: <8f3c0035f813d1294c77aa58238853274f631feb.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v1 12/23] target/ricsv: Flush the TLB on virtulisation mode changes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" To ensure our TLB isn't out-of-date we flush it on all virt mode changes. Unlike priv mode this isn't saved in the mmu_idx as all guests share V=3D1. The easiest option is just to flush on all changes. Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 0128546e6a..81f1cc83e5 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -157,6 +157,11 @@ void riscv_cpu_set_virt_enabled(CPURISCVState *env, bo= ol enable) return; } =20 + /* Flush the TLB on all virt mode changes. */ + if (((env->virt & VIRT_MODE_MASK) >> VIRT_MODE_SHIFT) !=3D enable) { + tlb_flush(CPU(riscv_env_get_cpu(env))); + } + env->virt &=3D ~VIRT_MODE_MASK; env->virt |=3D enable << VIRT_MODE_SHIFT; } --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558743114; cv=none; d=zoho.com; s=zohoarc; b=MhwBA0R0W/XsC/IV2OKsfrnRX1TqNjN2CPdx/WjMx7ruXfO3x6LNEmQqOKmJVhksRmJYQk9gdAVNlkilWofednSiJfVodR0bqtvn5MLHKXZS9ZLQ3PXuUN6IJpcy6qdaDNPBXB4dzXaAZ8CNBgQD8HVK8kUlgWJ0IcOS8+wwe8k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558743114; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=JTkCFE4jNtaWr4CJAM9OR3spP1DlPm7a/+JCluge9V4=; b=ExViFCQee9h9nZ3aXWzlyGRawg3bWpn2sy6xkMv/ynWt4HyPk03faCbslAsnjfwXZgsR3qAAO3LKn+/etyiLs6vRFtNiqF3f66REww7dca4HwBUlpuRHgZoss8gt3BKX1Z18MGSLD+XSbT4GVIPu+rbrsX1IB2WZGTXdi9d/t/c= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558743114889769.8867155788229; Fri, 24 May 2019 17:11:54 -0700 (PDT) Received: from localhost ([127.0.0.1]:33612 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKHp-0001Hk-OW for importer@patchew.org; Fri, 24 May 2019 20:11:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK42-0005au-AX for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuw-0004Ub-Bp for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:07 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJuv-0004TN-W8; Fri, 24 May 2019 19:48:06 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:04 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:43 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:04 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741686; x=1590277686; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gGFuqft3Gy+jQsmp9J8ov+i4/Ieho2R14R8oFQ3Co8Y=; b=JJjCXtJUdllU8tQwR/u5zZcFDk0sZaERhGLKxtVyPDf3RiPBuGjXJqdv wAwf2oISyk7fl2yF9l4SwQKFPC4B6lsFDxYFyZKHlPdjwE1CNuV3ogdvd fSVvEY0lDCbSifbNRQNq9tPkYGKYDKsIHG61k/FMRfBcqBmLrPcz/veUM mMOznYVly02mO6CyEDdtDurEd5LsrnFkNMMXgUlCh5cweJ2pkU3AiQMJM zF+T7hx9/Rjhn4SZyiO1fhIn8ZrFMOGepKUrdL7qAAbX2JB50oxI8ydks 4VcWWEKCtN0A03/JjPEiwVOq5EhYdSvX9ysmsWsZYDDkho2AHVUkbvd+A A==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265016" IronPort-SDR: FIZK7D33MqSuWYJOMmcc+Gf+Fx4B8kzn0tVrJgzNN6cxfGxG9+MBEezQtBC/aCraz+y+fxK8kG Zjb2dx7d0HXrJH4ooclj8pqfjh4awdTQBuh0v/O2NO4cN9wZ16eJifowUEruFI7/1E9V0cgc/z 3EXMBN2I0fAGhKko00TE/qIoHlP2Q34I7bo7ivIzSllLkI52gncGgQgILd2W/+p0eD346+ORU6 RvxS8obFhnpuVrsHuIns2taM3Pt/DfGDHHnGhEYvbw4/2j70NrvEdIoD+831og9eCPC0l4Zm8i qWsRz2jVeRoP+WC/iPV013MV IronPort-SDR: 81Ph2PkovrGGzJ2Clj407IS1Bz6ZXeQ2fLQaR+kVh5zLkoLS3jKeCstSI40Nhrp6mS1qw4fAku Po/qH1LwowgMelUcVonZ25TA07UChdRdDuJv9C7HMLFyWoUVIblehMRoGem2OTvjdGPYUP/rVU 1pdnpp1W6OL75Zr4UPtRUWLRntSPZs4utxpI1WVxZGEuOm9wFkTn584g/JkTnE+pwH/29dKR78 OKJ7alIKzIfvZQQAefs5bcv2pC4wP5+LcCreb+hgdrlAS0FtUNLkaSutK3c94UGeakB6IviqDi Esk= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:09 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 13/23] target/riscv: Generate illegal instruction on WFI when V=1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/op_helper.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 644d0fb35f..e08bb8dd5a 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -130,9 +130,10 @@ void helper_wfi(CPURISCVState *env) { CPUState *cs =3D CPU(riscv_env_get_cpu(env)); =20 - if (env->priv =3D=3D PRV_S && + if ((env->priv =3D=3D PRV_S && env->priv_ver >=3D PRIV_VERSION_1_10_0 && - get_field(env->mstatus, MSTATUS_TW)) { + get_field(env->mstatus, MSTATUS_TW)) || + riscv_cpu_virt_enabled(env)) { riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, GETPC()); } else { cs->halted =3D 1; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742948; cv=none; d=zoho.com; s=zohoarc; b=npTHW9Ah9/RGWV+kSd6S8R6u3A5kTjBPBstIdiuGFUxbliT61jobazSlLBISlijMSBpk3pqpmGyV82mOG9Ja/3rNAtoOCRhskY5ST6NwoeMNsVPGwiiyoRSPNTKaQwVZ+Aeoz147wYZWtlbEqHcNUJzA0O8FbQ/8d2E31AxN2h0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742948; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=mRvtxWRE760GTqt/61w5FlJt3+O5cxw2d9OsWy8L3qA=; b=lqdOp5djhE2ZCyK+TCrvqDdGnjLC/FVwAjGR8h3ZfziecNAqk1HOuJZId3sbLN1ZZohMnGN97+vNKqKh9KNE6yDDoqBM7dCxdztjY3mbcQupy8euAATqtMJFLMD02Ih2UDx+7Opj75ESjuqDvIpkjySrMty2NY1JQVjxpBOgJk4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742948150477.30012798464736; Fri, 24 May 2019 17:09:08 -0700 (PDT) Received: from localhost ([127.0.0.1]:33538 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKFE-0006kW-1q for importer@patchew.org; Fri, 24 May 2019 20:09:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK41-0005Im-Pe for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJuy-0004W1-0y for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:08 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJux-0004TN-Mj; Fri, 24 May 2019 19:48:07 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:07 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:46 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:07 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741687; x=1590277687; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jX/RpI7uSP8KPd5AF5ZDxr9NUzaT3LJkLiKb3mUVKRc=; b=lAOoNifiyQkeUBYrHidNduWFCN5hpyvRwpjnpFLtulWlV8xLuzXvuDTR ljjOiT+WH0YUxRL0hfmYtcCBfCDbv4AXY0nHjLmWBd+86B+b/hJG9mgZs wXwpx9Y9udfDMIi+6lRwnvPgFAJbHaRXHr4wqkj1Goj9QM50OW/iRfmxC BtNZ+tUxIENZPmthpEb/lCkePTtShTpOaFXde2f23s2d6GN8jLqC77KJV mJZky7Sl9qtPwIGFnN3+z9PlXfucLW5KomeBmeK+wJkeWHatum8gieLTp arhAmbySFsMWR0G/VVe+NocNE+efC0szapt/a4u83U/Qun4i6YrZ3IdUD g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265019" IronPort-SDR: ddL8kvuY/ImZOI1nXhap/HESfK1/VZQ1VzoExKKXVAfre04rhiBK06lnw9gpUzgTWSFExlNER6 59b1fOXgrpUr8Y/e5hDV7/jK5cvcW9WlJ/CdhiYHcVfcXQexVMy/5DeWyvAeiBK4Moqm+vEzas UFVJuAjJfOa1DC/s86D3oxwbTH/sx9md1PiLhmBi08yKnx9ZyrtG6oYobMhZBsVSQ8XjNi6o5g 5KCiBPHlLqn1Txf+h5hz1Fxev+QwVdRTZXjm3q2l/ANuH3iavaJYIfLEo3OvQXurbCVk/xaUsB GJlnQcqDmJkQ+/rwbNGfEYZq IronPort-SDR: aAFRx7VBpsLfvI66IaERPM6iTf2F1B3Sek2FF/jA1ahodM/jQ8fl92+3+u+32UlC59J+ekfcb1 4PLpLMfbJrqjY3J5AfTnjbfmrOuI5Xz4KNtCkUOkVbJxMoyjhbiaZbroHnqLc6nLv8nFDBkTSW xcq9OEYJwKYK60KIQInJhS7Rt4X1T8eVHfafCvsSFcEEjNaPklsDxKTxb9S+lE310SEx3WkZDA fcZgqeeadg/E3Mnbv7gPKsSOyoXAoc7tCkftlU7odzVEqM1txyWcaQSZK06ljWd84j82ksVc6e e7k= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:12 -0700 Message-Id: <2072d4920dd97b56f5a15d8eab64d39fc78e9390.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 14/23] riscv: plic: Remove unused interrupt functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- hw/riscv/sifive_plic.c | 12 ------------ include/hw/riscv/sifive_plic.h | 3 --- 2 files changed, 15 deletions(-) diff --git a/hw/riscv/sifive_plic.c b/hw/riscv/sifive_plic.c index 07a032d93d..1e7e4c8d51 100644 --- a/hw/riscv/sifive_plic.c +++ b/hw/riscv/sifive_plic.c @@ -159,18 +159,6 @@ static void sifive_plic_update(SiFivePLICState *plic) } } =20 -void sifive_plic_raise_irq(SiFivePLICState *plic, uint32_t irq) -{ - sifive_plic_set_pending(plic, irq, true); - sifive_plic_update(plic); -} - -void sifive_plic_lower_irq(SiFivePLICState *plic, uint32_t irq) -{ - sifive_plic_set_pending(plic, irq, false); - sifive_plic_update(plic); -} - static uint32_t sifive_plic_claim(SiFivePLICState *plic, uint32_t addrid) { int i, j; diff --git a/include/hw/riscv/sifive_plic.h b/include/hw/riscv/sifive_plic.h index ce8907f6aa..3b8a623919 100644 --- a/include/hw/riscv/sifive_plic.h +++ b/include/hw/riscv/sifive_plic.h @@ -69,9 +69,6 @@ typedef struct SiFivePLICState { uint32_t aperture_size; } SiFivePLICState; =20 -void sifive_plic_raise_irq(SiFivePLICState *plic, uint32_t irq); -void sifive_plic_lower_irq(SiFivePLICState *plic, uint32_t irq); - DeviceState *sifive_plic_create(hwaddr addr, char *hart_config, uint32_t num_sources, uint32_t num_priorities, uint32_t priority_base, uint32_t pending_base, --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742774; cv=none; d=zoho.com; s=zohoarc; b=JhCxEXeaZhqMRV8jbMaQJDVHHCRmLVqq1YwySR53aOzEPpSvc8uMSRvttPN3jxvQZD2FSgka34aMkuAHddhShWysSy3+wkhVKsqRdP5NodHW5dh4q/GCc4tgcy0BhHF41YOw3ZMHvDLbhikPgcN0xJPYhRFbJe2yOde6c9UfaJs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742774; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=r2QFF35Z/myuim4eGaOnhTRuv/6Olra+TU330HTqq80=; b=TeYGhDLfBJfVu6fvieGAipWBYc13oV3tDUQkdQ73PVFkBGWmpnSp/6ii36hycN5EJIyKqbax79OBmHgWFCd3rSh4TOCAOkTP6V/kVuuXd1H+D0PUk/q1d9HzLsbS1pwAA7+aYg9PQWtVOx7Noa5ryfZTxAcmAr+vidcfY9YSa5A= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742773998281.95061411334143; Fri, 24 May 2019 17:06:13 -0700 (PDT) Received: from localhost ([127.0.0.1]:33510 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKCJ-0004CK-To for importer@patchew.org; Fri, 24 May 2019 20:06:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK40-0005Im-Nf for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJv0-0004Xk-MA for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:11 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJv0-0004TN-AJ; Fri, 24 May 2019 19:48:10 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:09 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:49 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:10 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741690; x=1590277690; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cjB62V2KEtHPar+ofR4sfzgKIk6//oGfIg0TBm9dQl8=; b=NldG89PWbeRdTRLlrL7gJ2vBq8xpemkDKpeqy4rhJziGZyK/hKcWNhiz aMkfH6o491lt8uNgcABk6m4ytXiF/+G/X3rRPzhUpgzAKbDV79SQ9P/IM 7k2GNeCnfDTDQQkB5ROH7AgGEfadEOdS6UROoe4uVNXJxWW8iK6OGWWUE /4dhefw4ekkA9uUa/+YjVAB+x1KQraOfHtUPFPQgD2m0JVX7NNt5TaBhh p5egQq0wnr35vCyv/a3Px95Ga0WFkx1JaVEGlreJGLg7Wu7rP0aZKBSw/ AdtCMNnURNFOy6slCFxktx74scke8NNClCHo/0b1ssSbR86oULTiaE89b g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265021" IronPort-SDR: XNjVrDM54ESSRBaKT0tjefLuEldsfKioXGKXudbLPG8ZebUH2AWGYaaHBVAl8EJoryi1t/o7wx lGmpI9dL1x5MtwYOUcUOTDTuLAmwv+c/0J11QQGVb7xC2j1pJuhEAZGDHNyzYU06W4WBVhYwNP 9gXTTjAet9vOh48UKBvoN56pP3lSUz1E55AfrThdUggrNHLpR74qsIEgaod0s02s1t+OMC4DdD QAeIQR8lkruATOGbvHA5OA6vvdHWW2JsVnbaQ9K1aANg1GCtmO6JiYG+HF+G+yLo8g7vhIOcrV rgzMexAzV2Se/SDIVCjCHTer IronPort-SDR: KUXRPXmHMamj6d6IJFBrER1QRqpriiCQyjMBnbQb2+xlZnzcvjqDL7m9wcP8IXUjFzY/x+tZFr fW5CtHfQGl5/OEnFka8oHjiVPYcqk22zSV9CzQ9JZfam72Qo9hlKO8hTNPkStHI7t7E+4dA2xL UFHIoOUeoT6AwJIRhMisO/lH95PGkMdKYaPh1dqi3Pk9leeVaMsuv6/ictdfiamc4bB8zAms40 PgOUlaKRXv0dR86zy0o1LUvcwbS9SpotI4T5lrWd6e0Cjq88VmUQwwBBtUY8CXyEDWk7T/Fpmh ugM= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:15 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 15/23] riscv: plic: Always set sip.SEIP bit for HS X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" When the PLIC generates an interrupt ensure we always set it for the SIP CSR that corresponds to the HS (V=3D0) register. Signed-off-by: Alistair Francis --- hw/riscv/sifive_plic.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/hw/riscv/sifive_plic.c b/hw/riscv/sifive_plic.c index 1e7e4c8d51..25da29fa3d 100644 --- a/hw/riscv/sifive_plic.c +++ b/hw/riscv/sifive_plic.c @@ -147,7 +147,17 @@ static void sifive_plic_update(SiFivePLICState *plic) riscv_cpu_update_mip(RISCV_CPU(cpu), MIP_MEIP, BOOL_TO_MASK(le= vel)); break; case PLICMode_S: - riscv_cpu_update_mip(RISCV_CPU(cpu), MIP_SEIP, BOOL_TO_MASK(le= vel)); + if (riscv_cpu_virt_enabled(env)) { + if (level) { + atomic_or(&env->bsip, MIP_SEIP); + g_assert(riscv_cpu_virt_enabled(env)); + } else { + atomic_and(&env->bsip, ~MIP_SEIP); + g_assert(riscv_cpu_virt_enabled(env)); + } + } else { + riscv_cpu_update_mip(RISCV_CPU(cpu), MIP_SEIP, BOOL_TO_MAS= K(level)); + } break; default: break; --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742768; cv=none; d=zoho.com; s=zohoarc; b=Oj/ToF+CFlmniBsW44E4mCaj1Pcwylk49OjC6VTexfJkDx09hExlZAeWcyDRHgEEV8B0xM4VURb0JmtC7WADJ2RKIvDQX1aQ1SYFdB93CwKHrLmPqg984Sm9PscWmbF4uAsI1AIPvBRASJHWHGq9aRf4fv4HUCCqM2DRk8X0VDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742768; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=syTF9mAK496gxdln0Q0RaMjJ69TLk7MDPRgdkDHNH0U=; b=CdFqBzjwQfxiaYC3YymFbCRIIeKMf+qW+ysPSvR0CefOUOBM5zb4nedYI6FfD3DSt6TVLTDA7DxqsJRvJmfpZ8R+zoQhwV5xD6PJ3JKzT5GSFJyqIahhBaHjWj10wXxgDAmIxzCpxTBcLw0KZvoVQw6F9jicNBySVVGU4FsckbA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742768501304.9731836576094; Fri, 24 May 2019 17:06:08 -0700 (PDT) Received: from localhost ([127.0.0.1]:33474 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKBa-0003Wg-1E for importer@patchew.org; Fri, 24 May 2019 20:05:18 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3z-0005Im-DE for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJv3-0004ZY-Fu for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:15 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJv2-0004TN-W3; Fri, 24 May 2019 19:48:13 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:12 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:51 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:13 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741693; x=1590277693; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AGxFaCnLEVaI8iI/Q11K2wsC8x55sUCoLQ8TgKS2bzo=; b=p7QSJbHz1oqtXhzUCdyF2/SxY1g7krN/+zDtdzjXOAL0LJqwBh5gKgIH PQnJDVwYFiGeNkAWbgN49mRiDffz8zY/Zjegafx49cxOof/n+Xyigycip JRSBCDI6gMF5HIMlZ4CJjwBqp2+SGtFvJ+sxj7C8RozM2d52NMdgwg3ut cSJ/g7eHt8b4nx23ZjYVs9DqWjMCdQSg3hr2SThI+YKyQlUn59bcuNP7M PNFqaq6yShBnHOXWEBIBiZ028ZWM236AkDQoNYiIEWjvjQ9P3EnbgQGa2 PSSfYJsMPp++V7gqWdM5hEbmTHX6Wkx6JR6RH5WU2cEs5oRJeg5dFLXj+ g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265022" IronPort-SDR: nYA/G2hDPXQv7pj28bCgZJQIsJbAWtNKq8orfB+ObijIstrRrmRbiqlGCyjAxRFIC4EiEU6f03 7sAwjuaSu0DmKbhgsaLBXprkEsuXMrWipV+f0iA3cIz94EhMtEBIohZ/Mi9Sv/TXCW1tzP6MTH qb+7MUKERrIJTmY66eMkKar2xLHCj5qpKUQllcX/zorzMmNZSc5rLnuDs0/prngQxdr/qWKxJe tP8YLBB//cD32rLXbZDefQRI3BpzDlC3xyudasiTS2lXc6c/rtu8wlxvzwundf1DpJCfKzElj5 SqYV1PVO3El/sQvU/1d4GzoK IronPort-SDR: 4/lVYVSXfpE3CZW1K4WpT1MIm/6AvMzhZzrsG4Uz0QEV/FoKMCk6DgvsrP4PF0O9Iy8jZaLnVp Fn2ZtViCRC/FALh9vqugamIjEx12N9+NQPcLt6VcDpreYLndmQ1HyUUghlmmBv6EcGSS+c/FpN Q5moyJowqmrGykUhibUYovhhEHeXiBqx14ZhaekHfWG7U9B3LBLMPrmgUkyUfjJUCh3L9OXM7V C238fxYI503+M9jfMAmLSbooiD6Vmg1DlD/xdqjXsfnvOHdZwd5ahyBaeunbxR1TQd+6l/rXcL VIQ= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:17 -0700 Message-Id: <5ed7686620e75fbaaacb0d4ec6c44d5ec6f2c552.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 16/23] target/riscv: Add hypvervisor trap support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 4 +-- target/riscv/cpu_helper.c | 71 +++++++++++++++++++++++++++++++++------ target/riscv/csr.c | 4 +-- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 28117bdd32..8966c1bff6 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -508,8 +508,8 @@ #define RISCV_EXCP_STORE_AMO_ADDR_MIS 0x6 #define RISCV_EXCP_STORE_AMO_ACCESS_FAULT 0x7 #define RISCV_EXCP_U_ECALL 0x8 -#define RISCV_EXCP_S_ECALL 0x9 -#define RISCV_EXCP_H_ECALL 0xa +#define RISCV_EXCP_HS_ECALL 0x9 +#define RISCV_EXCP_VS_ECALL 0xa #define RISCV_EXCP_M_ECALL 0xb #define RISCV_EXCP_INST_PAGE_FAULT 0xc /* since: priv-1.10.0 */ #define RISCV_EXCP_LOAD_PAGE_FAULT 0xd /* since: priv-1.10.0 */ diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 81f1cc83e5..b7e47b97f5 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -595,6 +595,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) =20 RISCVCPU *cpu =3D RISCV_CPU(cs); CPURISCVState *env =3D &cpu->env; + target_ulong s; =20 /* cs->exception is 32-bits wide unlike mcause which is XLEN-bits wide * so we mask off the MSB and separate into trap type and cause. @@ -604,13 +605,6 @@ void riscv_cpu_do_interrupt(CPUState *cs) target_ulong deleg =3D async ? env->mideleg : env->medeleg; target_ulong tval =3D 0; =20 - static const int ecall_cause_map[] =3D { - [PRV_U] =3D RISCV_EXCP_U_ECALL, - [PRV_S] =3D RISCV_EXCP_S_ECALL, - [PRV_H] =3D RISCV_EXCP_H_ECALL, - [PRV_M] =3D RISCV_EXCP_M_ECALL - }; - if (!async) { /* set tval to badaddr for traps with address information */ switch (cause) { @@ -631,7 +625,16 @@ void riscv_cpu_do_interrupt(CPUState *cs) /* ecall is dispatched as one cause so translate based on mode */ if (cause =3D=3D RISCV_EXCP_U_ECALL) { assert(env->priv <=3D 3); - cause =3D ecall_cause_map[env->priv]; + + if (env->priv =3D=3D PRV_M) { + cause =3D RISCV_EXCP_M_ECALL; + } else if (env->priv =3D=3D PRV_S && riscv_cpu_virt_enabled(en= v)) { + cause =3D RISCV_EXCP_VS_ECALL; + } else if (env->priv =3D=3D PRV_S && !riscv_cpu_virt_enabled(e= nv)) { + cause =3D RISCV_EXCP_HS_ECALL; + } else if (env->priv =3D=3D PRV_U) { + cause =3D RISCV_EXCP_U_ECALL; + } } } =20 @@ -641,7 +644,42 @@ void riscv_cpu_do_interrupt(CPUState *cs) if (env->priv <=3D PRV_S && cause < TARGET_LONG_BITS && ((deleg >> cause) & 1)) { /* handle the trap in S-mode */ - target_ulong s =3D env->mstatus; + if (riscv_has_ext(env, RVH)) { + target_ulong hdeleg =3D async ? env->hideleg : env->hedeleg; + + if (riscv_cpu_virt_enabled(env) && ((hdeleg >> cause) & 1) && + !riscv_cpu_force_hs_excep_enabled(env)) { + /* Trap to VS mode */ + } else if (riscv_cpu_virt_enabled(env)) { + /* Trap into HS mode, from virt */ + riscv_cpu_swap_background_regs(env); + env->hstatus =3D set_field(env->hstatus, HSTATUS_SP2V, + get_field(env->hstatus, HSTATUS_S= PV)); + env->hstatus =3D set_field(env->hstatus, HSTATUS_SP2P, + get_field(env->mstatus, SSTATUS_S= PP)); + env->hstatus =3D set_field(env->hstatus, HSTATUS_SPV, + riscv_cpu_virt_enabled(env)); + + if (riscv_cpu_force_hs_excep_enabled(env)) { + env->hstatus =3D set_field(env->hstatus, HSTATUS_STL, = 1); + } else { + env->hstatus =3D set_field(env->hstatus, HSTATUS_STL, = 0); + } + + riscv_cpu_set_virt_enabled(env, VIRT_OFF); + riscv_cpu_set_force_hs_excep(env, CLEAR_HS_EXCEP); + } else { + /* Trap into HS mode */ + env->hstatus =3D set_field(env->hstatus, HSTATUS_SP2V, + get_field(env->hstatus, HSTATUS_S= PV)); + env->hstatus =3D set_field(env->hstatus, HSTATUS_SP2P, + get_field(env->mstatus, SSTATUS_S= PP)); + env->hstatus =3D set_field(env->hstatus, HSTATUS_SPV, + riscv_cpu_virt_enabled(env)); + } + } + + s =3D env->mstatus; s =3D set_field(s, MSTATUS_SPIE, env->priv_ver >=3D PRIV_VERSION_1= _10_0 ? get_field(s, MSTATUS_SIE) : get_field(s, MSTATUS_UIE << env->p= riv)); s =3D set_field(s, MSTATUS_SPP, env->priv); @@ -655,7 +693,20 @@ void riscv_cpu_do_interrupt(CPUState *cs) riscv_cpu_set_mode(env, PRV_S); } else { /* handle the trap in M-mode */ - target_ulong s =3D env->mstatus; + if (riscv_has_ext(env, RVH)) { + if (riscv_cpu_virt_enabled(env)) { + riscv_cpu_swap_background_regs(env); + } + env->mstatus =3D set_field(env->mstatus, MSTATUS_MPV, + riscv_cpu_virt_enabled(env)); + env->mstatus =3D set_field(env->mstatus, MSTATUS_MTL, + riscv_cpu_force_hs_excep_enabled(env)= ); + + /* Trapping to M mode, virt is disabled */ + riscv_cpu_set_virt_enabled(env, VIRT_OFF); + } + + s =3D env->mstatus; s =3D set_field(s, MSTATUS_MPIE, env->priv_ver >=3D PRIV_VERSION_1= _10_0 ? get_field(s, MSTATUS_MIE) : get_field(s, MSTATUS_UIE << env->p= riv)); s =3D set_field(s, MSTATUS_MPP, env->priv); diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 908e166426..43d9bb941d 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -239,8 +239,8 @@ static const target_ulong delegable_excps =3D (1ULL << (RISCV_EXCP_STORE_AMO_ADDR_MIS)) | (1ULL << (RISCV_EXCP_STORE_AMO_ACCESS_FAULT)) | (1ULL << (RISCV_EXCP_U_ECALL)) | - (1ULL << (RISCV_EXCP_S_ECALL)) | - (1ULL << (RISCV_EXCP_H_ECALL)) | + (1ULL << (RISCV_EXCP_VS_ECALL)) | + (1ULL << (RISCV_EXCP_HS_ECALL)) | (1ULL << (RISCV_EXCP_M_ECALL)) | (1ULL << (RISCV_EXCP_INST_PAGE_FAULT)) | (1ULL << (RISCV_EXCP_LOAD_PAGE_FAULT)) | --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742571; cv=none; d=zoho.com; s=zohoarc; b=d6kAGmQEHeeCH0H93FAfSsGRDjA8wmyqb74Ow/CyitVpFIaaEgNeYUCnu7/eil7jSPoGx1CPm+ikpEUGNBdRiz1JU27OPSRYi35nALDeWY/s9/7nS+/mXBKoiECbDfVwco3b8Xw6QKy0CYeL0Vx8x47t0ntbFB3FQw/ng153wm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742571; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ED1w95pgjNK2JeM3Cb0i2g8zZ7CNt+xRRXBFWZ3k2hA=; b=PSxG8G/3Dr7kxhZWxQhib8JxaXx/0/9Zunrh/5nPT5dEKCw6j2whPXJMdfbLO2vZytthx7CgLcpZZCzIJIwWeOvzEBR/0PVQneeRVTu/3hsnGcH2Qk2Syfy6d96Zd+l833M3CMURyxHQv/y0gh3bKPnBCY5+F0t4rgqZdeTe9ec= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742571381550.8914594848258; Fri, 24 May 2019 17:02:51 -0700 (PDT) Received: from localhost ([127.0.0.1]:33446 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK97-0001ho-As for importer@patchew.org; Fri, 24 May 2019 20:02:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3y-0005Im-8x for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJv6-0004bV-H4 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:17 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJv6-0004TN-2W; Fri, 24 May 2019 19:48:16 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:14 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:54 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:15 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741696; x=1590277696; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qDL5/qlAQFtYrCOkIfH5+w4MhTN/n5JyM640ZKPXzXk=; b=GLeRDY2zzbNVhmPPSd/dAhOJEKHk+YvXuRvLbIODdw0Q9RzBKdSPH+VX pDEbGorIODfUxiskdMymNGHuPT9JOJjwc5mRoQEBUcBpJulRUviPYfCIM odlw0A9HfaW8Pa0vi2uU1sCsNV6fkz0Hcp7KnROhdnWg4RvnYOdhRv5p7 uLwfqGIr4g3CXiPB69gMzK56hlAN/SYAm69yiPUNfhBm413x5odSLGgwF ekYlMt3QLoeyw2IU11yAjsnPw8LZC36n+04M9275glbQhev5ctlBtsaJA MacXKVH4g7uLhrVv6lQ1AO/JthIBU4qfNunbHMwFOeIgoUKsGr3xPItJ8 Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265024" IronPort-SDR: GlceCKjklHFL3D9lsJgv4FBHzVIlD6GITB49X800geZl/XulSb3g3L/8ls4/5iVITGjTzj/Biu OkuCAXe4cxEyjlKHCFktHFghmDTLFo03HPtu+90g/Ez2Hq0BSHuFyI2NZld3YchfYJXnUHqhVT D9zSjw0mU17FNdM5gfYP+xRcEhTfIc0aURyNUtdZXRAqlR+CgZgZxTqHRhOHD5nn06NGCOdUuK tjyAlpxtpd01Cx4FS+Nx/qbSGzXCU313Z+uTuByA1I3tVTgBtcmwGT22HKxCkQf6jwVQutS57U 6xxn6hn1ojOMIfhorQD83rHK IronPort-SDR: WX3R2VYSlSL26dwSL9GIgod+uyuyFKO72aItEHID6bg/XHdsy5MV8rHTMmI3H6RwYCTjCveE6Z lCH8QkLkD3OGJxmI+SSboUzgUm6dE1BLxwC/SJji0YbUBqu2vyoucEaV48l4GNC4hr4uZl1WjO Kptgj7RAASniSeaXVnkh2Oy8iU37yBt71l+emtdkta0fctbNpbdJ8InKiJGgiRZ2eWRmAPB72k p/tjBJs9KGNxgBnGEJtKzm0CY5biHKNQQdAfTjSK4DasogslCOyZaNbZyxayYBxrhUkTFKrW68 rZY= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:20 -0700 Message-Id: <25e70b2bb887e29d4dea1263a5e5063bd6def745.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 17/23] target/riscv: Add Hypervisor trap return support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/op_helper.c | 66 ++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index e08bb8dd5a..60dcd73fc7 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -73,6 +73,8 @@ target_ulong helper_csrrc(CPURISCVState *env, target_ulon= g src, =20 target_ulong helper_sret(CPURISCVState *env, target_ulong cpu_pc_deb) { + target_ulong prev_priv, prev_virt, mstatus; + if (!(env->priv >=3D PRV_S)) { riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, GETPC()); } @@ -87,16 +89,46 @@ target_ulong helper_sret(CPURISCVState *env, target_ulo= ng cpu_pc_deb) riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, GETPC()); } =20 - target_ulong mstatus =3D env->mstatus; - target_ulong prev_priv =3D get_field(mstatus, MSTATUS_SPP); - mstatus =3D set_field(mstatus, - env->priv_ver >=3D PRIV_VERSION_1_10_0 ? - MSTATUS_SIE : MSTATUS_UIE << prev_priv, - get_field(mstatus, MSTATUS_SPIE)); - mstatus =3D set_field(mstatus, MSTATUS_SPIE, 0); - mstatus =3D set_field(mstatus, MSTATUS_SPP, PRV_U); + mstatus =3D env->mstatus; + + if (riscv_has_ext(env, RVH) && !riscv_cpu_virt_enabled(env)) { + /* We support Hypervisor extensions and virtulisation is disabled = */ + target_ulong hstatus =3D env->hstatus; + + prev_priv =3D get_field(mstatus, MSTATUS_SPP); + prev_virt =3D get_field(hstatus, HSTATUS_SPV); + + hstatus =3D set_field(hstatus, HSTATUS_SPV, + get_field(hstatus, HSTATUS_SP2V)); + mstatus =3D set_field(mstatus, MSTATUS_SPP, + get_field(hstatus, HSTATUS_SP2P)); + hstatus =3D set_field(hstatus, HSTATUS_SP2V, 0); + hstatus =3D set_field(hstatus, HSTATUS_SP2P, 0); + mstatus =3D set_field(mstatus, SSTATUS_SIE, + get_field(mstatus, SSTATUS_SPIE)); + mstatus =3D set_field(mstatus, SSTATUS_SPIE, 1); + + env->mstatus =3D mstatus; + env->hstatus =3D hstatus; + + if (prev_virt =3D=3D VIRT_ON) { + riscv_cpu_swap_background_regs(env); + } + + riscv_cpu_set_virt_enabled(env, prev_virt); + } else { + prev_priv =3D get_field(mstatus, MSTATUS_SPP); + + mstatus =3D set_field(mstatus, + env->priv_ver >=3D PRIV_VERSION_1_10_0 ? + MSTATUS_SIE : MSTATUS_UIE << prev_priv, + get_field(mstatus, MSTATUS_SPIE)); + mstatus =3D set_field(mstatus, MSTATUS_SPIE, 0); + mstatus =3D set_field(mstatus, MSTATUS_SPP, PRV_U); + env->mstatus =3D mstatus; + } + riscv_cpu_set_mode(env, prev_priv); - env->mstatus =3D mstatus; =20 return retpc; } @@ -114,14 +146,24 @@ target_ulong helper_mret(CPURISCVState *env, target_u= long cpu_pc_deb) =20 target_ulong mstatus =3D env->mstatus; target_ulong prev_priv =3D get_field(mstatus, MSTATUS_MPP); + target_ulong prev_virt =3D get_field(mstatus, MSTATUS_MPV); mstatus =3D set_field(mstatus, env->priv_ver >=3D PRIV_VERSION_1_10_0 ? MSTATUS_MIE : MSTATUS_UIE << prev_priv, get_field(mstatus, MSTATUS_MPIE)); - mstatus =3D set_field(mstatus, MSTATUS_MPIE, 0); - mstatus =3D set_field(mstatus, MSTATUS_MPP, PRV_U); - riscv_cpu_set_mode(env, prev_priv); + mstatus =3D set_field(mstatus, MSTATUS_MPIE, 1); + mstatus =3D set_field(mstatus, MSTATUS_MPP, 0); + mstatus =3D set_field(mstatus, MSTATUS_MPV, 0); env->mstatus =3D mstatus; + riscv_cpu_set_mode(env, prev_priv); + + if (riscv_has_ext(env, RVH)) { + if (prev_virt =3D=3D VIRT_ON) { + riscv_cpu_swap_background_regs(env); + } + + riscv_cpu_set_virt_enabled(env, prev_virt); + } =20 return retpc; } --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742942; cv=none; d=zoho.com; s=zohoarc; b=Bup9rawHoPmLnPBuf67qUQXd/9G/HNsImpY7fleM8NwSNU54MmbwQoB3agUVA19YgC7wmfTAXmqhbxa+cDxMIfcKjKcjn2HIZHJkcbvMDIdjKmOXPKA6e5IRo43oy/6kE5pmgcy39+txcNe36ER3/m1BHXjoaE1n3e7xBfmWkH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742942; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=TIlDzurkilik5fmMMy1DEWC23sClMjiB2iF1F6d0aeo=; b=hTH+hY7sAVGBkcr2KQi85sDd4tLHgABUOUB/nUNhyH93mV+28f9rjyHtN36RZa9zpMi6FFzmShbleB+CH3u+mtcNQWpbN0i4l4YpjJnA+Zddr0H/EU4+6M8VCE34lLHl2NyOYvfbu5JgPfUTBxNemCN4rkeKu7jFFmhcQ8fXIo0= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742942076282.7240553500452; Fri, 24 May 2019 17:09:02 -0700 (PDT) Received: from localhost ([127.0.0.1]:33534 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKF7-0006Yp-2W for importer@patchew.org; Fri, 24 May 2019 20:08:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3x-0005Im-6T for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJv8-0004eF-O9 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:19 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJv8-0004TN-8W; Fri, 24 May 2019 19:48:18 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:17 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:57 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 24 May 2019 16:48:17 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741698; x=1590277698; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=C5UgGc4V2pAKfw6v1wYMZEJGSRpC8Q7ki2tjMjGBTmM=; b=HCIMtlaggTn3+X+GxwAPn/FGyUfY+jsrVkrABtcl0gWC/k/WSWo4Qqhz uWlBQhD4FdH+gz2Zl9UPfmLg3ZhyxE7ltd5p/yEtNL5D3RGxMkGyBlf+3 eIKwNmUtRyEFI2V9IqFDw5CWWZt08vp7404CmCSpGrw7jUS4/vHTCbjYb 8FTqQ8EWiwFS6J7y6xTZ3cs724StwPWbgjQ6L2nnvUHFKX05H39MvlnWY ebU/NayfMWGQZ1J80VCeyN8SJA/+yHJNgao4ZuFkdBlt+C5MaLUsmee+C sRrFH2rpy8VuQYiBshrZ3y+QpOiyqS6CWyT2kECBFGs9fb1tJGewRM3rq A==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265026" IronPort-SDR: 1KyMA9vfDuVoFL1cp5qW2dNdD5mjxhRbuSNo03A1OrLltZBWwrKlYT/j28L+4plKp8m2uugDvc 3gem/qgxcyC41Hlc/tS0td3oUqy9XzwusROm9DW8fqrdQd5z+2YwhdzNIhczpvs2ZPu8VNUq7B 14WPNC5VMqfoEjfjA52qbIY050L1lAVaSNqKVkmPJNMqybD8RDVeM6Ilc48KC0DeSRaylxpR7K Upkt2aCbyS4jhDiKhLenarowY71wuO6u3+bdpxQN/oGJ8XLbghQqWkk5s9hJBcS/0beBSvzK9B mSWlubxtzH2EdA63WMaiLWB6 IronPort-SDR: NmYa43uZ6yHTlFScaKaRWilrsdDFi/yS2evywLq6hxOpsXeZVX5QGF7xNfsTJWI3BcgLGZvcnJ wKsTxASjHYSpEoFOjAZvYsVM3791UGGoNTMt9NVPfKy8fSCUN07bfPoN//OJDL+WVImqTlv3Xn FTBBVLl67Nv0zSIAq+WJTRC2vTPtPKa3kzfPdNwS9w413IbtaF3XUnOknRKRgodsEOHwU9+qGZ jSGh0r6NAos6pc2U/K3/KZdXizOXPbVPSLU0XPncN5poqm3cg20NHEbYbKNMr7/JbVq1Iskoof Fnk= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:23 -0700 Message-Id: <68722b887546714923b1d23cea80042f0cd0b8ba.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 18/23] target/riscv: Add hfence instructions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/insn32.decode | 23 ++++++----- .../riscv/insn_trans/trans_privileged.inc.c | 40 +++++++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 6f3ab7aa52..6c79c5fd0c 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -59,20 +59,25 @@ @r2_rm ....... ..... ..... ... ..... ....... %rs1 %rm %rd @r2 ....... ..... ..... ... ..... ....... %rs1 %rd =20 +@hfence_gvma ....... ..... ..... ... ..... ....... %rs2 %rs1 +@hfence_bvma ....... ..... ..... ... ..... ....... %rs2 %rs1 + @sfence_vma ....... ..... ..... ... ..... ....... %rs2 %rs1 @sfence_vm ....... ..... ..... ... ..... ....... %rs1 =20 =20 # *** Privileged Instructions *** -ecall 000000000000 00000 000 00000 1110011 -ebreak 000000000001 00000 000 00000 1110011 -uret 0000000 00010 00000 000 00000 1110011 -sret 0001000 00010 00000 000 00000 1110011 -hret 0010000 00010 00000 000 00000 1110011 -mret 0011000 00010 00000 000 00000 1110011 -wfi 0001000 00101 00000 000 00000 1110011 -sfence_vma 0001001 ..... ..... 000 00000 1110011 @sfence_vma -sfence_vm 0001000 00100 ..... 000 00000 1110011 @sfence_vm +ecall 000000000000 00000 000 00000 1110011 +ebreak 000000000001 00000 000 00000 1110011 +uret 0000000 00010 00000 000 00000 1110011 +sret 0001000 00010 00000 000 00000 1110011 +hret 0010000 00010 00000 000 00000 1110011 +mret 0011000 00010 00000 000 00000 1110011 +wfi 0001000 00101 00000 000 00000 1110011 +hfence_gvma 1010001 ..... ..... 000 00000 1110011 @hfence_gvma +hfence_bvma 0010001 ..... ..... 000 00000 1110011 @hfence_bvma +sfence_vma 0001001 ..... ..... 000 00000 1110011 @sfence_vma +sfence_vm 0001000 00100 ..... 000 00000 1110011 @sfence_vm =20 # *** RV32I Base Instruction Set *** lui .................... ..... 0110111 @u diff --git a/target/riscv/insn_trans/trans_privileged.inc.c b/target/riscv/= insn_trans/trans_privileged.inc.c index 664d6ba3f2..ac953ad30d 100644 --- a/target/riscv/insn_trans/trans_privileged.inc.c +++ b/target/riscv/insn_trans/trans_privileged.inc.c @@ -108,3 +108,43 @@ static bool trans_sfence_vm(DisasContext *ctx, arg_sfe= nce_vm *a) #endif return false; } + +static bool trans_hfence_gvma(DisasContext *ctx, arg_sfence_vma *a) +{ +#ifndef CONFIG_USER_ONLY + if (ctx->priv_ver =3D=3D PRIV_VERSION_1_10_0 && + has_ext(ctx, RVH)) { + /* Hpervisor extensions exist */ + /* + * if (env->priv =3D=3D PRV_M || + * (env->priv =3D=3D PRV_S && + * !riscv_cpu_virt_enabled(env) && + * get_field(ctx->mstatus_fs, MSTATUS_TVM))) { + */ + gen_helper_tlb_flush(cpu_env); + return true; + /* } */ + } +#endif + return false; +} + +static bool trans_hfence_bvma(DisasContext *ctx, arg_sfence_vma *a) +{ +#ifndef CONFIG_USER_ONLY + if (ctx->priv_ver =3D=3D PRIV_VERSION_1_10_0 && + has_ext(ctx, RVH)) { + /* Hpervisor extensions exist */ + /* + * if (env->priv =3D=3D PRV_M || + * (env->priv =3D=3D PRV_S && + * !riscv_cpu_virt_enabled(env) && + * get_field(ctx->mstatus_fs, MSTATUS_TVM))) { + */ + gen_helper_tlb_flush(cpu_env); + return true; + /* } */ + } +#endif + return false; +} --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742768; cv=none; d=zoho.com; s=zohoarc; b=n14X8j3+MN3zEA3m/EOkbh8PYp2BGFE+lKQzq06uvr5TRKV2IQZ2PPn45f6u178dQ7urujoKvh9BW99qF1BnMUEbKGTT3rOgARAMu16zuxi8VNuncQVYeujVY7f9eXGyZcQrHL+Zi0p1kkJwUXC2eVGu5vDw5PztV7kaHH273HY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742768; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=xIeMHvlNIUU76ZFunYXU0lWfhKYtV/8nygap++j6hQM=; b=XScBpOkteW2pgCGe5uWpF158SAJUiqqI+12Lm2od5+SdzCeDxMranuh9PZye92GIRI7IPXlXvyfGojnvairUBqtDet/ZdrSril6U+888kjvf1gQGgHaluMqrfnlVV0jv+UyTDeqVjilq2cCCqLjPUyraMMtNg7kFMIN+/AteAsg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742768504835.1818756777756; Fri, 24 May 2019 17:06:08 -0700 (PDT) Received: from localhost ([127.0.0.1]:33508 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUKCD-00047G-U5 for importer@patchew.org; Fri, 24 May 2019 20:05:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3v-0005Im-S7 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJvC-0004ge-2S for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:23 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJvB-0004TN-KH; Fri, 24 May 2019 19:48:22 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:20 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:25:59 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741701; x=1590277701; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1niGW1xkrBRvkE6jNbzSdU/IeNxx4fzoQPYH72mo2jw=; b=GYqgeWDb+D1YpvItnZ9z/9dl63qQIwcpbzjbUHGsWA98RnfQvTNDlF5c TbrNm0ZcvEzU7B0mLUu1s2VpwaMIq3epiAqDwTRIOTvVnt/3gxODGVRkt kWn6BjO8OUOOmmQFaW+4IULaevMP5GXcysC9y2d05MGug7GIZkpoRITsa /Bs+PN2LERBl8VPO0CnFW9EH0KtX9jsUGOqZ+6p+b1IJSuCPU/NfET3oJ 6/wVVCCvRa7ZMp+44+8ntadAKvwrhmSn3gCwbL8SZiVuISfSl2hEtSQWv l6tg07yuRwqZ4wARgXVkqzmr0vKuS9DVxoTLTIoW0T7qgPWp33cXG12wR A==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265029" IronPort-SDR: PtIixPhO4IIK7/hbdOHunBsQvC9uL15C5OVVh9DevItcIKdpWH1EYtX+MyOVNxensSaWrKnVb8 NZlnX5MUNoCbd/8CzOf9xk79A11PX/8/aYI2RSUJIBmVdgHnPTawdqlbVkVxZ/wcy47zVKgFjl Vwr8HUDlEC/hWA4re45A7IzZaQ6e5a6bYC5sozLaFuanhYpzduaNSrMVnDUH6EGGyZcW8EdZ+Z lhx89kdexxOYYRz41hYO6k9pJTpBIcVegnvJIZ3IYYSA4AXTCWC2k7vyEs6OsjwoXSC1zJprTs cjESy47auCQLNTB5gzkYrD87 IronPort-SDR: lVeF+/ne3JCf0KvUWYVPo76Va572axInMxtY+/zLAJoo5llMdR55cVgZas5M48S/45R1iBlmxF LWhp7WJZSaSDYfcRdB3mgvYjYRoJKYNQFOB9jsxO8TUwQj/htlcr8pxonK1jD0UB5/iVM149nV CsFsAx/sMFJaNM8EpazdPx7QKw+OncwTr9o+n2/zz6iafWRmxv3n3ej8nSdZiUgdGHiGLjCzSA m87d7g1bASRdx8oHPzVYhmDA7CwzB7vQRArblkxie/EJKwK6cQV/bn9LqIsNPMRs1/L3ZIW4LP 5Lc= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:25 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 19/23] target/riscv: Allow specifying MMU stage X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index b7e47b97f5..3c963d26bc 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -261,10 +261,19 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_ul= ong newpriv) * * Adapted from Spike's mmu_t::translate and mmu_t::walk * + * @env: CPURISCVState + * @physical: This will be set to the calculated physical address + * @prot: The returned protection attributes + * @addr: The virtual address to be translated + * @access_type: The type of MMU access + * @mmu_idx: Indicates current privilege level + * @first_stage: Are we in first stage translation? + * Second stage is used for hypervisor guest translation */ static int get_physical_address(CPURISCVState *env, hwaddr *physical, int *prot, target_ulong addr, - int access_type, int mmu_idx) + int access_type, int mmu_idx, + bool first_stage) { /* NOTE: the env->pc value visible here will not be * correct, but the value visible to the exception handler @@ -455,12 +464,20 @@ restart: } =20 static void raise_mmu_exception(CPURISCVState *env, target_ulong address, - MMUAccessType access_type) + MMUAccessType access_type, bool first_stag= e) { CPUState *cs =3D CPU(riscv_env_get_cpu(env)); - int page_fault_exceptions =3D - (env->priv_ver >=3D PRIV_VERSION_1_10_0) && - get_field(env->satp, SATP_MODE) !=3D VM_1_10_MBARE; + int page_fault_exceptions; + if (first_stage) { + page_fault_exceptions =3D + (env->priv_ver >=3D PRIV_VERSION_1_10_0) && + get_field(env->satp, SATP_MODE) !=3D VM_1_10_MBARE; + riscv_cpu_set_force_hs_excep(env, CLEAR_HS_EXCEP); + } else { + page_fault_exceptions =3D + get_field(env->hgatp, HGATP_MODE) !=3D VM_1_10_MBARE; + riscv_cpu_set_force_hs_excep(env, FORCE_HS_EXCEP); + } switch (access_type) { case MMU_INST_FETCH: cs->exception_index =3D page_fault_exceptions ? @@ -487,7 +504,8 @@ hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vadd= r addr) int prot; int mmu_idx =3D cpu_mmu_index(&cpu->env, false); =20 - if (get_physical_address(&cpu->env, &phys_addr, &prot, addr, 0, mmu_id= x)) { + if (get_physical_address(&cpu->env, &phys_addr, &prot, addr, 0, mmu_id= x, + true)) { return -1; } return phys_addr; @@ -547,7 +565,8 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, qemu_log_mask(CPU_LOG_MMU, "%s ad %" VADDR_PRIx " rw %d mmu_idx %d\n", __func__, address, access_type, mmu_idx); =20 - ret =3D get_physical_address(env, &pa, &prot, address, access_type, mm= u_idx); + ret =3D get_physical_address(env, &pa, &prot, address, access_type, mm= u_idx, + true); =20 qemu_log_mask(CPU_LOG_MMU, "%s address=3D%" VADDR_PRIx " ret %d physical " TARGET_F= MT_plx @@ -564,7 +583,7 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, } else if (probe) { return false; } else { - raise_mmu_exception(env, address, access_type); + raise_mmu_exception(env, address, access_type, true); riscv_raise_exception(env, cs->exception_index, retaddr); } #else --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742569; cv=none; d=zoho.com; s=zohoarc; b=KUy4/YhTPGSK2DaoGy/byOHNduB544S4tMcBi2HZTX7EO8bQcSbzToqHEf3Fz3juwd3ZM8QHjcsXhXoOq/LDzsFlXtPnk5eFHU7AZA89V4n7gFrGwAZc8/W9kgbTjgR7k7LFdpOcZ6/ewwd0bc/bQnPJTZ28tZgN1Rw6SQpLKzk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742569; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=EXASMCxEetWn1zLzRr7EcTJYRzZnISSp7QMMnCJMQ9k=; b=JImXA6EenBUhoGYg/QHMR/BzoULUuJdcxqeLmWSbiGWhn21u7OE/YcYaTpG8hF1CPJfO4EyRCDGAcQwNvoZvnaidix+24Nw9flQxSyBQEMxWwTKm/2BOrkzvsajX+GiEKzwEgR8rz8L5ZX7cibK/WIW4Rvi5FhNY7Oz4x4LiErI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742569128360.96304870966947; Fri, 24 May 2019 17:02:49 -0700 (PDT) Received: from localhost ([127.0.0.1]:33444 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK94-0001eb-4Q for importer@patchew.org; Fri, 24 May 2019 20:02:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3u-0005Im-Rz for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJvF-0004is-RA for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:26 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJvE-0004TN-2p; Fri, 24 May 2019 19:48:25 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:23 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:26:02 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:23 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741704; x=1590277704; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0AqygypHR+JHw9NAQNJbdu1CHPr7b0EA2J50hgECIkw=; b=p1m1dVnrVn7XKmTpwSORhZQBJPCsUvH5dQB1MlU7AVZ8f7ZVHXX7M2kH PDXzjK0y1QpuDmYa1p4kpoJ611eD5fOLr+44ssl05FNNhSIxd1SmBZeA5 0Hqsn9GqI0l98nyFalWW8iG40Fxj6LQcWOkH1GrYh99CxeFSEefOZzjD6 Ef7jZZcQ1+zuEk59FAQQAhIiNiQpqwqIpRKQh3BrEqBPeSgTxkfTG7TtY IHeTifGxW7gy33xFD7Ve7pf2/TWvCXgGRk8M5AovGixGGbbUvNY4gG9ER UITTHoPNlUYRLMtYPcWy0QMIg59+7LiE+AXk+BpyVoX2wRIh84glSnkEK A==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265031" IronPort-SDR: NtEimrKRotSjlMXp4p8vukcRBHmzYdhUVG6Ab5ALeGMT5Fg7rIQdW8fZNU2byn2sSXIhPHWpPg pJfyR5Ew6Ola7SqHSZ5YIvFycyu/Tg+n+Rhhcgqh6iZufo/TrEBxKLwO3lAiGteAQNhd3ecd4J WwtBLmujTtQBbOOzuNV/T53GS/wTHIafjP7QLPSqF/XphVLB/JVmP5D01Q3GxReft8QNraw1wJ FUusiAaf+VdERvqv3BOPwMKalx6wckwXqXO92sGBwayPtsFWC3gDpmSADCSVu1NUtfWnIaYnJK wkKjR+ZBhQrAW6BB0ShidiBG IronPort-SDR: qbXRtS/fOKPngHG/iCKeD9UAY6aB6SLE0nVG7ZpFz3xhxoNzB6nCJR1VSC9iI5xkOftXEjlhi0 9ZlTOCkte4NTV5lUOXcVePcFAq3Pobudu6dIDzhuzw+P1DA3fAQ0MUYqDJ0Yr+JEghic9hA6Jc oYD1L2VdGiPDsCqgssYlW4EhOkCyT182j+mKpRKv84xKr8TMQyHQJ9uPAgGN26+iH94z28TOy2 xjdEoPAoxbbcrQPgbSOgiPnanBcV5+0aeKcBJ03zlVicToHqrDyzK3tYw31OSoRthKygG/Cz5u GlU= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:28 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 20/23] target/riscv: Allow specifying number of MMU stages X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 3c963d26bc..f57e49c973 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -273,7 +273,7 @@ void riscv_cpu_set_mode(CPURISCVState *env, target_ulon= g newpriv) static int get_physical_address(CPURISCVState *env, hwaddr *physical, int *prot, target_ulong addr, int access_type, int mmu_idx, - bool first_stage) + bool first_stage, bool two_stage) { /* NOTE: the env->pc value visible here will not be * correct, but the value visible to the exception handler @@ -505,9 +505,10 @@ hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vad= dr addr) int mmu_idx =3D cpu_mmu_index(&cpu->env, false); =20 if (get_physical_address(&cpu->env, &phys_addr, &prot, addr, 0, mmu_id= x, - true)) { + true, false)) { return -1; } + return phys_addr; } =20 @@ -566,7 +567,7 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, __func__, address, access_type, mmu_idx); =20 ret =3D get_physical_address(env, &pa, &prot, address, access_type, mm= u_idx, - true); + true, false); =20 qemu_log_mask(CPU_LOG_MMU, "%s address=3D%" VADDR_PRIx " ret %d physical " TARGET_F= MT_plx --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742375; cv=none; d=zoho.com; s=zohoarc; b=kvY+IafJS+2voqpYkRp6i7XNVewyej17nQaTWZPOE8HjKw0ENzaZsLjJzdLGyNUncJKH42GbvlPC+NS7BaVqCYP3rouetS5ZhJcBpynzBjIHaYUTUOardlB7oYMKxxFVOPAq2Bb0QA4yBwyS60cI6FOeCORtDypts90SJuTI1hA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742375; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7o43qiB/Q46MV4g6kBfEa2ozSejNWzMcGk/syIx/fCA=; b=EixQDJxzZTYuFW799PjmGe3y89py7fHwfu3rFdaz9+hGZIdY9HrkIjwjyO1ULNdk1X6nSCd2OgnEW5Y+wyw9EM+LVxDPZlOkN6CDXmz93bqe/BGeswsUEBDO2vLMRiB32NNloufp/7Z+Y97svbcdxb99AOnqNAlAVhC5tjPhc68= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742375251844.7999428943049; Fri, 24 May 2019 16:59:35 -0700 (PDT) Received: from localhost ([127.0.0.1]:33365 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK5u-0006qB-Sd for importer@patchew.org; Fri, 24 May 2019 19:59:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3t-0005Im-I1 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJvH-0004kH-I9 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:28 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5520) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJvH-0004TN-7R; Fri, 24 May 2019 19:48:27 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:25 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:26:05 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:26 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741707; x=1590277707; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WdXYoh7fkTTZ+ULUGr4p/aowgNK2JkukvO9A/NY16TA=; b=bw7t2/KDbh90/Q97sx4UiaipEHxEbdx9fX3UurxH5F+sA18TI9XHBRbD zxRhQG/KIyUwrjfdgoikDvOWMzrfUgG7A3LZ/rD0Mrl44cOKS3mH/UlJr pwGCWvr8qs6wRNw+l+GT+1/Qpxdbl1lJUUHaZiNM2FvIXwkQaQuNDMO3n d/z+C1XIzn6Xyzzje5ZnjZBqFcEqNXUePZ58UwnLHkQsgeW5ihMt/kFkv iqy79xEPUPPn0mvctZ1ksM4QIer4BRl+xkMMZQ2eLOvVxOzBfpxU6WIAr 8oDiacYGUHHOc3JtJyVwxjFuK6MK3Z+bkhDraaXR/a1OPsnxupEGxFO5T w==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265035" IronPort-SDR: 3uBNpXqDjZYi+igSAIdiI0NhJ1To2l9xdZkpVq9c8VpxX2kQWsOgRDIg5iN3rEdv03m2P/eyQZ RRtP4uHbzgnUH2Q+13AHZFpBbZzHuo3jfxxpRwHqogXjUqpXpwpeW4ivImQwfcB9ggIn3ZCKeI +d7IMTYDQlI+ROztcjZjO6zVFvjC/6Cog+PtjOQYhce0rCGm7jj7sDWTt/3rtKfnKBrpiDq1AH AsIjOZ9XDvslboFcmOjjbA9iKtr90xR42ZC2a6Laelm/xZW+0ynMvyAx11eM488c31PAIhWTRJ nqGUxqxUSBlwvyztUGaElA4+ IronPort-SDR: PAInfIsZI1s83wbLSGWn2PYF0l94q9SBtzZ8YaB4Bm8Ry4FJoSMd0sLx+XMmDuovEHPKo+9NUO 7+ZkLnEV/Xe1C2dgvivBlDe4dvZWyZeKMYmrDkwdUnVFxnDINs1EbyjL5Qw5BLNO9OlNowggnJ NBr0YVzuBSVNc45l4z1WUNnzqf4Fg73PgH1IpTIMVSZjEWvdaRrmQjjfB89LqYUHgnj9YS131W o7MgYNamV8baGHqpwPHbhRrpcfAykuVKHmxvp82z9VwSFrncrmnJE5DLy7JhItYylAAVqnjqlT aIQ= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:31 -0700 Message-Id: <566fbd2d52bae6da22dbe51c6ef1716653c4dfba.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 21/23] target/riscv: Implement second stage MMU X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 87 +++++++++++++++++++++++++++++++++++---- 1 file changed, 78 insertions(+), 9 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index f57e49c973..387c12547b 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -280,13 +280,40 @@ static int get_physical_address(CPURISCVState *env, h= waddr *physical, * (riscv_cpu_do_interrupt) is correct */ =20 int mode =3D mmu_idx; - + bool use_background =3D false; + + /* + * Check if we should use the background registers for the two + * stage translation. We don't need to check if we actually need + * two stage translation as that happened before this function + * was called. Background registers will be used if the guest has + * forced a two stage translation to be on (in HS or M mode). + */ if (mode =3D=3D PRV_M && access_type !=3D MMU_INST_FETCH) { if (get_field(env->mstatus, MSTATUS_MPRV)) { mode =3D get_field(env->mstatus, MSTATUS_MPP); + + if (riscv_has_ext(env, RVH) && + get_field(env->mstatus, MSTATUS_MPV)) { + use_background =3D true; + } + } + } + + if (mode =3D=3D PRV_S && access_type !=3D MMU_INST_FETCH && + riscv_has_ext(env, RVH) && !riscv_cpu_virt_enabled(env)) { + if (get_field(env->hstatus, HSTATUS_SPRV)) { + mode =3D get_field(env->mstatus, SSTATUS_SPP); + use_background =3D true; } } =20 + if (first_stage =3D=3D false) { + /* We are in stage 2 translation, this is similar to stage 1. */ + /* Stage 2 is always taken as U-mode */ + mode =3D PRV_U; + } + if (mode =3D=3D PRV_M || !riscv_feature(env, RISCV_FEATURE_MMU)) { *physical =3D addr; *prot =3D PAGE_READ | PAGE_WRITE | PAGE_EXEC; @@ -296,13 +323,30 @@ static int get_physical_address(CPURISCVState *env, h= waddr *physical, *prot =3D 0; =20 target_ulong base; - int levels, ptidxbits, ptesize, vm, sum; - int mxr =3D get_field(env->mstatus, MSTATUS_MXR); + int levels, ptidxbits, ptesize, vm, sum, mxr, widened; + + if (first_stage =3D=3D true) { + mxr =3D get_field(env->mstatus, MSTATUS_MXR); + } else { + mxr =3D get_field(env->bsstatus, MSTATUS_MXR); + } =20 if (env->priv_ver >=3D PRIV_VERSION_1_10_0) { - base =3D get_field(env->satp, SATP_PPN) << PGSHIFT; + if (first_stage =3D=3D true) { + if (use_background) { + base =3D get_field(env->bsatp, SATP_PPN) << PGSHIFT; + vm =3D get_field(env->bsatp, SATP_MODE); + } else { + base =3D get_field(env->satp, SATP_PPN) << PGSHIFT; + vm =3D get_field(env->satp, SATP_MODE); + } + widened =3D 0; + } else { + base =3D get_field(env->hgatp, HGATP_PPN) << PGSHIFT; + vm =3D get_field(env->hgatp, HGATP_MODE); + widened =3D 2; + } sum =3D get_field(env->mstatus, MSTATUS_SUM); - vm =3D get_field(env->satp, SATP_MODE); switch (vm) { case VM_1_10_SV32: levels =3D 2; ptidxbits =3D 10; ptesize =3D 4; break; @@ -320,6 +364,7 @@ static int get_physical_address(CPURISCVState *env, hwa= ddr *physical, g_assert_not_reached(); } } else { + widened =3D 0; base =3D env->sptbr << PGSHIFT; sum =3D !get_field(env->mstatus, MSTATUS_PUM); vm =3D get_field(env->mstatus, MSTATUS_VM); @@ -340,7 +385,7 @@ static int get_physical_address(CPURISCVState *env, hwa= ddr *physical, } =20 CPUState *cs =3D CPU(riscv_env_get_cpu(env)); - int va_bits =3D PGSHIFT + levels * ptidxbits; + int va_bits =3D PGSHIFT + levels * ptidxbits + widened; target_ulong mask =3D (1L << (TARGET_LONG_BITS - (va_bits - 1))) - 1; target_ulong masked_msbs =3D (addr >> (va_bits - 1)) & mask; if (masked_msbs !=3D 0 && masked_msbs !=3D mask) { @@ -354,11 +399,30 @@ static int get_physical_address(CPURISCVState *env, h= waddr *physical, restart: #endif for (i =3D 0; i < levels; i++, ptshift -=3D ptidxbits) { - target_ulong idx =3D (addr >> (PGSHIFT + ptshift)) & + target_ulong idx; + if (i =3D=3D 0) { + idx =3D (addr >> (PGSHIFT + ptshift)) & + ((1 << (ptidxbits + widened)) - 1); + } else { + idx =3D (addr >> (PGSHIFT + ptshift)) & ((1 << ptidxbits) - 1); + } =20 /* check that physical address of PTE is legal */ - target_ulong pte_addr =3D base + idx * ptesize; + target_ulong pte_addr; + + if (two_stage && first_stage) { + hwaddr vbase; + + /* Do the second stage translation on the base PTE address. */ + get_physical_address(env, &vbase, prot, base, access_type, + mmu_idx, false, true); + + pte_addr =3D vbase + idx * ptesize; + } else { + pte_addr =3D base + idx * ptesize; + } + #if defined(TARGET_RISCV32) target_ulong pte =3D ldl_phys(cs->as, pte_addr); #elif defined(TARGET_RISCV64) @@ -444,7 +508,12 @@ restart: /* for superpage mappings, make a fake leaf PTE for the TLB's benefit. */ target_ulong vpn =3D addr >> PGSHIFT; - *physical =3D (ppn | (vpn & ((1L << ptshift) - 1))) << PGSHIFT; + if (i =3D=3D 0) { + *physical =3D (ppn | (vpn & ((1L << (ptshift + widened)) -= 1))) << + PGSHIFT; + } else { + *physical =3D (ppn | (vpn & ((1L << ptshift) - 1))) << PGS= HIFT; + } =20 /* set permissions on the TLB entry */ if ((pte & PTE_R) || ((pte & PTE_X) && mxr)) { --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742518; cv=none; d=zoho.com; s=zohoarc; b=TcC0X9DFZK+zQrTrxsasriW1r73eHBCgdSora/TkXriYDBDPEKFXPzov+lGxRGT4jvNYtuhDCqFIdkUYLOdzS2li/yZ0FOpERZFR2pmPSjXayMqE9XeYeRfVAD39e7KSQ0puqGdKBoo4bm784pSO/LJlzxwpE0RtpnE3tjqr/Xo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742518; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=quJm8CsP2l8UokLT2tHZXymGlFT+EQ4Jn0QJdJ+MKQE=; b=Q3u7wrhsKLmEJydW5yQVM8ef6Lw9WyNbtQJDO0ILiPWjCYI+aRgmH5o8HBSjD71ooVb12o+4z8CzhtoBBGthC4+JDXkvITonoTVfK3UMPIo6Umr6QcmCMzDFYy9k2UINjiMpJNCw3a2Y5QR6/sVjDLQ06w/O7ZFZxFGbdAzSXvM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742518262702.0462265795225; Fri, 24 May 2019 17:01:58 -0700 (PDT) Received: from localhost ([127.0.0.1]:33440 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK8F-0000y9-4H for importer@patchew.org; Fri, 24 May 2019 20:01:51 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3s-0005Im-88 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJvK-0004mE-44 for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:31 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5536) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJvJ-0004l4-Oi; Fri, 24 May 2019 19:48:30 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:28 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:26:07 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741709; x=1590277709; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eIB9eI6L2M66ALqcQ/sKS+2/cPf5O19r/6iL+QzBTLc=; b=ljKrv88xmzZtb6UX5k1ucDRkKZa7zTH2NxEdu3iOGw9Cos20DTenYf7T E/itHkF/O5RUAo8HVKRRg8HYWO0bN1CtU9C2yihHUJgmmKVvM6snUdydX GpCuoyvRhgtGgQ0NOoIaWpSPxIFz8tlTHKHcTVKmDDpvDBCTDd61qaPzW u0IWV67oID6X6vWxY8L6CoyhuJ0UEfTKjyjrYmmlKOUUvB+cI7vrkJ2p0 Y6SahkgfZsLa73ob7XaJMmgwfnKPV1icSjYZgU9YxODHUTYrRZx2AXbL7 AXKBmNej6Ei7cTBjBEUhkSqYUjLRQ7ryQ11ms9pHzMJEHiqAs3wDBFHa8 g==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265039" IronPort-SDR: BsjHU8BQp9HI/AHPyuiDmf6tFOR8AhiwiXckBMYC2T63fsLHsl1a4NYC4EjZrLnlkmXxjlocH4 iLEqJy9EQVEMCDkHV3leedpC/QiRKAGodsa5vDuPq9BoG9V0YFgtZzypcdBAaoChgVAaQ7gWm6 eigd9HWWQeXIirTSZF3Bhg/R2je7HeiO4f8yDRysDzoYDmoz9JQBSJB7A4mLQol7zXSdOi4NOC X89uz1g0YTp3DsOXk/14eW/HcVy00L12O9QHz4HXEokPTcfOBwPcgr/XT2Een+3fmDfrDPPB/g ICj7IkGAVRpXWKlCM715l/sm IronPort-SDR: FYoz2VOgvpqVXF+7F4PXPyVEnxCTAxjwYySVkwoardOiGv44jwzCyAyNJtEDwEuUiem7InMDRv QKi5hU0P9a76tXOsYmghFWTGmTrcHS+KXvtwX49+CnmtFswRsIDo7p5Z+VvMOiU+J7MyqwKLSv dpPufo9kR29SpAQqHbIOdzjth9dHORTLtbjYxaBT66f2SriAcugx5A8EHD+xWrkXojvzD57xNi 11KqCFrtmy+EGZUteAVbppKzVRuLtP8pn1ig4UV0Q5ToUG+ECfKv92nnppQufVszO6BYJTJ72l yNQ= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:33 -0700 Message-Id: X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 22/23] target/riscv: Call the second stage MMU in virtualisation mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The qemu_log_mask(CPU_LOG_MMU,... calls trigger false positive checkpatch errors which are being ignored. Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 118 ++++++++++++++++++++++++++++++++------ 1 file changed, 99 insertions(+), 19 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 387c12547b..99091ed0fd 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -569,15 +569,23 @@ static void raise_mmu_exception(CPURISCVState *env, t= arget_ulong address, hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) { RISCVCPU *cpu =3D RISCV_CPU(cs); + CPURISCVState *env =3D &cpu->env; hwaddr phys_addr; int prot; int mmu_idx =3D cpu_mmu_index(&cpu->env, false); =20 - if (get_physical_address(&cpu->env, &phys_addr, &prot, addr, 0, mmu_id= x, - true, false)) { + if (get_physical_address(env, &phys_addr, &prot, addr, 0, mmu_idx, + true, riscv_cpu_virt_enabled(env))) { return -1; } =20 + if (riscv_cpu_virt_enabled(env)) { + if (get_physical_address(env, &phys_addr, &prot, phys_addr, + 0, mmu_idx, false, true)) { + return -1; + } + } + return phys_addr; } =20 @@ -628,34 +636,106 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address,= int size, #ifndef CONFIG_USER_ONLY RISCVCPU *cpu =3D RISCV_CPU(cs); CPURISCVState *env =3D &cpu->env; + vaddr im_address; hwaddr pa =3D 0; int prot; + bool m_mode_two_stage =3D false; + bool hs_mode_two_stage =3D false; int ret =3D TRANSLATE_FAIL; =20 qemu_log_mask(CPU_LOG_MMU, "%s ad %" VADDR_PRIx " rw %d mmu_idx %d\n", __func__, address, access_type, mmu_idx); =20 - ret =3D get_physical_address(env, &pa, &prot, address, access_type, mm= u_idx, - true, false); + /* + * Determine if we are in M mode and MPRV is set or in HS mode and SPR= V is + * set and we want to access a virtulisation address. + */ + if (riscv_has_ext(env, RVH)) { + m_mode_two_stage =3D env->priv =3D=3D PRV_M && + access_type !=3D MMU_INST_FETCH && + get_field(env->mstatus, MSTATUS_MPRV) && + get_field(env->mstatus, MSTATUS_MPV); + + hs_mode_two_stage =3D env->priv =3D=3D PRV_S && + !riscv_cpu_virt_enabled(env) && + access_type !=3D MMU_INST_FETCH && + get_field(env->hstatus, HSTATUS_SPRV) && + get_field(env->hstatus, HSTATUS_SPV); + } + + if (riscv_cpu_virt_enabled(env) || m_mode_two_stage || hs_mode_two_sta= ge) { + /* Two stage lookup */ + ret =3D get_physical_address(env, &pa, &prot, address, access_type, + mmu_idx, true, true); =20 - qemu_log_mask(CPU_LOG_MMU, - "%s address=3D%" VADDR_PRIx " ret %d physical " TARGET_F= MT_plx - " prot %d\n", __func__, address, ret, pa, prot); + qemu_log_mask(CPU_LOG_MMU, + "%s 1st-stage address=3D%" VADDR_PRIx " ret %d physi= cal " + TARGET_FMT_plx " prot %d\n", + __func__, address, ret, pa, prot); =20 - if (riscv_feature(env, RISCV_FEATURE_PMP) && - !pmp_hart_has_privs(env, pa, TARGET_PAGE_SIZE, 1 << access_type)) { - ret =3D TRANSLATE_FAIL; - } - if (ret =3D=3D TRANSLATE_SUCCESS) { - tlb_set_page(cs, address & TARGET_PAGE_MASK, pa & TARGET_PAGE_MASK, - prot, mmu_idx, TARGET_PAGE_SIZE); - return true; - } else if (probe) { - return false; + if (ret =3D=3D TRANSLATE_FAIL) { + if (!probe) { + raise_mmu_exception(env, address, access_type, true); + riscv_raise_exception(env, cs->exception_index, retaddr); + } + return ret; + } + + /* Second stage lookup */ + im_address =3D pa; + + ret =3D get_physical_address(env, &pa, &prot, im_address, access_t= ype, mmu_idx, + false, true); + + qemu_log_mask(CPU_LOG_MMU, + "%s 2nd-stage address=3D%" VADDR_PRIx " ret %d physical " + TARGET_FMT_plx " prot %d\n", + __func__, im_address, ret, pa, prot); + + if (riscv_feature(env, RISCV_FEATURE_PMP) && + !pmp_hart_has_privs(env, pa, TARGET_PAGE_SIZE, 1 << access_typ= e)) { + ret =3D TRANSLATE_FAIL; + } + + if (ret =3D=3D TRANSLATE_FAIL) { + /* + * Guest physical address translation failed, this is a HS + * level exception + */ + if (!probe) { + raise_mmu_exception(env, im_address | (address & (TARGET_P= AGE_SIZE - 1)), access_type, false); + riscv_raise_exception(env, cs->exception_index, retaddr); + } + return ret; + } } else { - raise_mmu_exception(env, address, access_type, true); - riscv_raise_exception(env, cs->exception_index, retaddr); + /* Single stage lookup */ + ret =3D get_physical_address(env, &pa, &prot, address, access_type, + mmu_idx, true, false); + + qemu_log_mask(CPU_LOG_MMU, + "%s address=3D%" VADDR_PRIx " ret %d physical " + TARGET_FMT_plx " prot %d\n", + __func__, address, ret, pa, prot); + + if (riscv_feature(env, RISCV_FEATURE_PMP) && + !pmp_hart_has_privs(env, pa, TARGET_PAGE_SIZE, 1 << access_typ= e)) { + ret =3D TRANSLATE_FAIL; + } + + if (ret =3D=3D TRANSLATE_FAIL) { + if (!probe) { + raise_mmu_exception(env, address, access_type, true); + riscv_raise_exception(env, cs->exception_index, retaddr); + } + return ret; + } } + + tlb_set_page(cs, address & TARGET_PAGE_MASK, pa & TARGET_PAGE_MASK, + prot, mmu_idx, TARGET_PAGE_SIZE); + return true; + #else switch (access_type) { case MMU_INST_FETCH: --=20 2.21.0 From nobody Fri May 3 08:47:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=wdc.com ARC-Seal: i=1; a=rsa-sha256; t=1558742378; cv=none; d=zoho.com; s=zohoarc; b=OdR6z+wPvcb/r8Xqu59oPG280jtsKInLlsW9UzAdBZpDgN+El6nYmhoUTf0KWz069fhIC96stV8QEhfd0nj0l5lvoBlBjLGhPKv661BR7li62YIKguvPaAJvlbfa+jboAuNtSl7RN8tzDbbdRm6dUWz8FDanfSdwirOAkfhWGhI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558742378; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=RS70bwI3JERFAlI6sHJ3txDld2kZrZzHshc7e650Ozw=; b=YVOHW1mhl10GOD28oWEjnz/FvY2yAdH5TP4/Nh0QU7gGN3xNvaIh5Th3M722e2YNsGQ8u4kpo4jjhBPPkKgeB4rrLERsh5Apjt4ubdbn7WuiqRdimYfppTDdkoy69f7GTnvdMu/aIcStN+gmnEFVfDlZ2hKvPd8Oxdglzpd/tyA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail header.i=@wdc.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1558742378269746.3595052158851; Fri, 24 May 2019 16:59:38 -0700 (PDT) Received: from localhost ([127.0.0.1]:33367 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK5w-0006rL-38 for importer@patchew.org; Fri, 24 May 2019 19:59:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUK3r-0005Im-7i for qemu-devel@nongnu.org; Fri, 24 May 2019 19:57:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUJvM-0004nf-2o for qemu-devel@nongnu.org; Fri, 24 May 2019 19:48:32 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:5536) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hUJvL-0004l4-Gp; Fri, 24 May 2019 19:48:32 -0400 Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 25 May 2019 07:48:30 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP; 24 May 2019 16:26:10 -0700 Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip01.wdc.com with ESMTP; 24 May 2019 16:48:31 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1558741711; x=1590277711; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Q417YyWRkJW+frGSJUz87YKMObdZQ7KF7pmDlZ3Rq0g=; b=BU2Jkq8hMpCItnzGNKbAFZO7TPccsc35EvUAJZduCa5FOR6+VGSS6X8I ggfYV9hK832CcjR9I/lBZknGnMliqVMR4ltT47aum5ue5cVfYOUDWHGK/ fZbIOX3CYIJGh9qlo9ioT84vGWlsDxYF7QAPPH/ll8lbyDdaJED36TesN UZJrNnKfZrHEV9q2e4QLlRnjlCZG9/Dhrgr+Sgfy7amhMdU5fX9Vo/b9C 7hHHXR7VQNR2k2Rmbe6rEKfCHsf3UL3CB2378oilPfss5MGZN+q6jirxJ FL/NTDR+bVpFYOPBUtHRHoGM6kYUHffX6vuBAPwStEQeFE/8fQeuf4M8Q Q==; X-IronPort-AV: E=Sophos;i="5.60,508,1549900800"; d="scan'208";a="215265042" IronPort-SDR: 4iqjTt33V8tk0yPgbnrIZWolHOdZQywo2TeIcNT3ZL59YwTRS6ud7K4vI/2lidMxS5785EIpbm dayluGzo4hAj63+gFp3/18xXrptO+H+qpkJ4JeJS7XL8WfSUAiQoKc2BqrFHFQavI0HTaOhnwo e1MbGi9tOa4G3R5uI4bRbZgfrPY6SHpMYz1Y/S5I2sivMAkhKh13UQG+TLnOlugejrkvuAZSGW LXIIVwnAviUG/Rk4c6O11j+c8BcFPm12UgSuelzjMGrHnolbqPnyxgH6F+bizvjNux7hHAvzua wZz75qB43j/aUeytmNZnL3MN IronPort-SDR: C4BDV/o8KqCWpunJWlO5TEhGOSfZS425QX29HVKX6dWvu7PHeh3Lgkr5PelSm7FDFzeX+eFBGp dffLU0yUyPU3LEUn/znqi3lAyfAKSBgY/otHaGtsgHnvJx8x8aLZqha9xaUTBZWNH6U2VPv40h OaUjswCAQUEvjqLxI37ZWyDxPKvoaxqfzPlB3k+etpF+aZhHKnYNCsWBnfpsHf6p73UXYFaKh7 C/e9BTfn4USfAGrUeyXu040icdUu86i0faxDzveS2TDSiKsH7mMHH/vbNbeSsfHHVrAXsCx0QK 9rY= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 24 May 2019 16:46:36 -0700 Message-Id: <0c227e8cc03a2b33f67e497b94e6d8283e98d96e.1558741334.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [RFC v1 23/23] target/riscv: Allow enabling the Hypervisor extension X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, palmer@sifive.com, alistair.francis@wdc.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 4 ++++ target/riscv/cpu.h | 1 + 2 files changed, 5 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index c1495ef037..b17dfb86c6 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -436,6 +436,9 @@ static void riscv_cpu_realize(DeviceState *dev, Error *= *errp) if (cpu->cfg.ext_u) { target_misa |=3D RVU; } + if (cpu->cfg.ext_h) { + target_misa |=3D RVH; + } =20 set_misa(env, RVXLEN | target_misa); } @@ -472,6 +475,7 @@ static Property riscv_cpu_properties[] =3D { DEFINE_PROP_BOOL("c", RISCVCPU, cfg.ext_c, true), DEFINE_PROP_BOOL("s", RISCVCPU, cfg.ext_s, true), DEFINE_PROP_BOOL("u", RISCVCPU, cfg.ext_u, true), + DEFINE_PROP_BOOL("h", RISCVCPU, cfg.ext_h, false), DEFINE_PROP_STRING("priv_spec", RISCVCPU, cfg.priv_spec), DEFINE_PROP_STRING("user_spec", RISCVCPU, cfg.user_spec), DEFINE_PROP_BOOL("mmu", RISCVCPU, cfg.mmu, true), diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 9897392ab7..d2cfc69e9a 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -259,6 +259,7 @@ typedef struct RISCVCPU { bool ext_c; bool ext_s; bool ext_u; + bool ext_h; =20 char *priv_spec; char *user_spec; --=20 2.21.0