From nobody Sat Apr 27 13:26:21 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=1559945051; cv=none; d=zoho.com; s=zohoarc; b=UE32JsagrnHBouaklXhZACDkigVSkpYt9YK4MxCbaRiWgtVKCQaG53+kuj1YnIk+Sm1YLm34RURLo+OIrWdpPH5t/Xv9JdxGdlCNHxtQMvB8+pdJPlO5WQskkbq/ZwxoUGdE5xmV0R/QEnTJH13ZBcq45dEvdN/B1W0pg5a4uSA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945051; 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=DHbBPXKdZ0NSlj07PdEkz5abBYt5DE876bI52+dntrhKqWUqcSVaeWmLGDt6g5gqdsJmXFDMyhS3K+T9xiCwFHMsXKHDIXW3Cil68zO1GDOsvCylva1kz5P9YY0hFEbekM8yM+mf3o6X6yA0ulTXp2S7gvOxKR1vy6XkJiYHbp4= 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 1559945050844174.4842462081432; Fri, 7 Jun 2019 15:04:10 -0700 (PDT) Received: from localhost ([::1]:53590 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMxw-0007F1-Ja for importer@patchew.org; Fri, 07 Jun 2019 18:04:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47593) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrs-00041p-9U for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMrr-0001dO-0R for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:48 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8433) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrp-0001SY-7S; Fri, 07 Jun 2019 17:57:46 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:32 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:34:48 -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; 07 Jun 2019 14:57: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=1559944666; x=1591480666; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Afx3i4e+/e/6vVqAletdTzpjrs6vkjl1vDNfsdulAjY=; b=H09Eisobr0XzWBbh4VFAbH+iv2W1hyEvGJ5C6YxS59+9azuKrFYw4k58 0woCFiRUfUFTvUE4yKKsTKB97jU3WOWwsy+hYjJYuv4tc2JYNScHk7Mq7 iOqQ+JKcSdMYjUzHP6cE86U5H92kp3uRlWxcvh3bR5ZmaWZmjvFc1zkNE rvnQgM8OoL0aELQSETJ8rPBl0SgAyd3lrp3WtlCzxWInAmQLNyzsxu/59 xQPmH1l+bs5BTURx+UGlY1AQRKACF+M+ZSsfFBWAvwBAMqNipQRJeMUZI 5KYYUivnllFN/1+w9lEneqy2WV2T2HtGmQR+Iw8Up29xuANHCR8luOYsE A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014070" IronPort-SDR: ra6BvnqBX8778UlfAEYMntUYXA8XQ0vovUhQ5FgcsKCusc2TtYIvWBW8PZsPsZDm7VIxq+gK9Q HnbHWuUM6uFmvLlTMj9/S5mfaIv/SI96/2gb6md82Wxkj3UQ4CPvoWFDMdOdu+psT9Yt9qKwGf q8ZpvzSrq0Tudw9Rq9ss2LjtRcZq3PlIEDQmwurZFFce8/7tBSGxWXLWufokwIo3KOgxhdJtAv ZUGbS8RGVC9K0BtZsJK4SILzBhFIaGbub7KUGn/X5f6nFr1ioYYRzk8O9gJ3+ZwlQjvKKqo/fv GaqEG9+cvWzYy/NgE1CImxUl IronPort-SDR: nHsmjIEvIAJtTr++/hVhSrC7rbnrtlZeYMaZGur5QFqGFcfUZQwRCu4OXluHGHq8od4R/DVBL4 vXoVT4SsoASJL/SRHcUBuMZNGTL/GXcrTCxJ+pwUczCuhp49rutrC9uaY+3+lIH+BNGSFhHGJ3 32Ix6ZN1tLmlYv1rMbG001kQgfVjA+Tlbk6NS6ZnQ6mrDb9g9qF+lPB9hpEMdpYDCz4KXWuyqi Z96ltWvxuFnJemm2tdzgYmju/5rX69SHvLe67cvCXXARHSwjA0dCfW3Ef5Q/akO+AkMkQaCcx8 OyU= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:21 -0700 Message-Id: <3148d5b7898b0ecae6140118d44ed7fcd5132775.1559944445.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.141 Subject: [Qemu-devel] [PATCH v1 01/27] target/riscv: Don't set write permissions on dirty PTEs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945051; cv=none; d=zoho.com; s=zohoarc; b=CuLs8z7omX4iWIdN7BB81PwGd05dzTF6fKaFqZiraq3+nVYOtz3nzE9cK5KMBqvqiCb15De3lu1D1JES3IViSWc1ArqdfRVoxBb1N1K9wzDOgsuOymR2MUriQaymlX+WS48b3Apbm4lm7K6eEvkoCeQlfHOZ392HvYhFkd+yWZ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945051; 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=Ra3LfHjlZMArrm/SLewN6rWfdRPdvKJDPVZdeO6lKuGJnVj5yTY1H2IQDo772uLYwsasIZmHOqAgLwZ5uhK3rrs1Y9p96Da+VIFBYcuaZHqdnMTDo9Zv6SzAR2iYJCDGSLo/FE8Z3M5w7aoSnxHDJJRMGa6TiqJzrV8ReBcim0w= 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 1559945051020898.4006953576214; Fri, 7 Jun 2019 15:04:11 -0700 (PDT) Received: from localhost ([::1]:53588 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMxw-0007DR-4A for importer@patchew.org; Fri, 07 Jun 2019 18:04:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47587) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrs-00041o-3w for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMrr-0001dZ-0Z for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:48 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8436) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrp-0001Ty-ES; Fri, 07 Jun 2019 17:57:46 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:35 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:34:50 -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; 07 Jun 2019 14:57: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=1559944666; x=1591480666; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ao9gCKvSoFwU8QM28M/2smcm/7HnPQ04kDU0bSYTT4c=; b=Y3U9ukP2mCWUjZiHZPafZugfGp63ExirFKwN7XryEiHjQLuOh/snYfAK LFwtnOrxDUft4Y8oDQzp3GpfuKfPug6TMNtEsj2HVfrkr+fqsDzySLY1i PNMu+/x3i/lweqd0HspKmrs+6Z3ytMAclAcO8toe7/UnffUJMveYoUdIL 15Fuz9kJDbD+VxXXyPfjtgmxO9u5jWRps/lb+UYbYRjkxcvLL96LWV5Kp oEHhGT3ZWamMsjVbwZBIToj0X9hzeqzMyrWmQn8mpM/Hrsp/z5juYpMq0 N2DKqYaPGSGJQcb2CU0ktZt2JIhueu8ihhGo3cWNs4imLR9cmGEjfFzGE A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014074" IronPort-SDR: wNDbZ17nImoEN6JiXEAFRCEp1mLryFaW5Rcvu1F0u7RraM/g5mUXx1VbT5kEDtYbClukBsZlYM HI7HuAlMGfgFIkiZtBpAAN/x6Roon3EeX8TSZ2XwVe8YrfUTEdU5ylTOFLw6q8TpWphzwQiypp +FziAFTDc7Gg/1oALn5KCsl9IlhSaMiFf2YWgOqQUo0kX2P5pG+dmPHg/eibPzFmXnWG8SZH+B G0qZ130mwgYJHXyQhIq3CuEf8QaC3KDOdpnm6FjioIvsgrJNihDg8dD7/mtdeeWIPfIl+9EW3A f5Smuwir3JnXVvEh50NXasoO IronPort-SDR: L3+iLm/r5o0XqAWrLkYvg+PLgrcIsCDSYTOmu69AZ03dbRbjwBk4M3Xmg2nKTatU0owbcR4C7p Lr8loeVLldljElXEpLz9Az/6GJJ7C2hcHXszxF7WKkIvuI4qCiVoTHQbKn8lacSI+drKMW+PKV rg6i6KitewcptUgHu4tCvhRw9TFJ35IfWodcAvK45VMeJVTpTL/Ie+txDaMOOwURu2XA2kUSpb JutCMIKlXAl+fnFlJj1K4Bu6jvGp65rb4JqaubjIzvlyMWOZL7VV3KSW2XOIn10JzDo6E6l1v+ ezA= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:24 -0700 Message-Id: <76631304f89487485c4b745f601796f1e1f70e41.1559944445.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.141 Subject: [Qemu-devel] [PATCH v1 02/27] target/riscv: Add the Hypervisor extension X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945051; cv=none; d=zoho.com; s=zohoarc; b=WbXZJRhbqdGQAgX8E/WmF3wJKEGCC0LKDHDVe14cCI45kp9sniSsYzttKdObbQe/OUj76fE8lW9M6eK/jzUss/SwZhnWQUEiyW96HjVov8I4dD20A0q/nU0XpwttLgxgcUU4iBXwjbR2GDEeau0BtgDCiaSH8SqnPwwuzc81dlU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945051; 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=I7zAdXuFHuMBIggjszqFm/AepKAo/I00VD8WrVGtz0iXkpUtrV7QDGd0Tg7EC77S6P5IaKE2N4PxdloHL8iN9KMgtbG6ZfEUefitM4YumxoJ4GOLlnUk2wpRMxbGIKfLNUive7oB8L4d20L26hiE3kX25uGujavgS0R9ot9NLIY= 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 1559945051481916.411939121897; Fri, 7 Jun 2019 15:04:11 -0700 (PDT) Received: from localhost ([::1]:53592 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMxx-0007Hu-FG for importer@patchew.org; Fri, 07 Jun 2019 18:04:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47640) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrt-000422-HU for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMrr-0001fO-LR for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:49 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrr-0001Pu-8h; Fri, 07 Jun 2019 17:57:47 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:38 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:34: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; 07 Jun 2019 14:57: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=1559944668; x=1591480668; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Fvl20bL70W6URC8x1oiu+t8B2haDxcStjjs1M9AXrF0=; b=eXRF4pPcBIMG3/H40Z3QrdPk/iGB2lPG8WBW4sWrG0JZJWcUJy8bJI5q WDI3249t0mEf56/oyS1HKAVEjI7VymZIkde4VWgU2zQ8AskPuKcIMGTnh 3jFzBLtrAMLSkTKcVcOq5qKNI5KXeS88FRBzcu4VWDjt2kABGKHKcTw6L VC+UNYRzzHMeEwQr4/BlD4Bowdm1EUEe3w3H8eeAWJipGd8sTTL/KdF6O Ka7NFhLMJQ0PgtKHChSj0qv4iYphUK41hHaJQriL2SrqiQQMuhviUQQZC 856mJCsaGq7NFJ7GV73ARFIFFjN7M6VOyWjreBRN0L5iFAdRIQFaJv154 w==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014077" IronPort-SDR: wyG/T8MH6DVqIFaop1zfLNxRzNrhBcHW+7ZpaA2pbqywYaMY9NUwFcxJwCgStlpCw8rA9T3iC3 g3LH+ARpVn2dkRoFL+PtiZbeFz4QhOcOQ5ePhYmrXXPXNtq+7NLNaxzbxk3XoXWg/JXLi3pNMc ZYN9YrXBF18TPMyR073+dnfgeYO1zArHskObZgALEHAjr8gsVABS0Qd1UvaGDoLUhlpvVaLnKi w2+1FbtpHCHcewvExWpWIDDetKUd4NBbn+X0ev9q/+ZZHzVt6HmAdDPJ51Hi7GkFg7DlaVQR5z uwXtqCfsWJDAmmhuq0cUZDCs IronPort-SDR: 9tcQlM9Y2r7jN1rsFOMboBDnQ/pd2MDECyzR0lXILzyG1J+5HkKdoLfjVG7Q+Kfkq09+qSysC0 H/hRKfLZ8hQYF7vXJzS4EipsOXWofpk+imvWu40pM+lkSsBHjyN1s5NwL3dPeJImc0cPzhmfqM gXGJU/eoUU73f3YUjRGOne+5ymK58J8QUkuRsQUEDJETMIYELQOl6wvqibYTu0rsR85iO5j4mC s3W5qzkfAkGNeyvHgLFppkt223q//tOuQBEOSUl4jatStOM/OjuRHH1V5h5kQ6vN3f2wclB6HR yPg= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:27 -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] [PATCH v1 03/27] target/riscv: Add the virtulisation mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945467; cv=none; d=zoho.com; s=zohoarc; b=Oo1OjkyNY9tqYzXdmKiSpKcgrUek9/AejEf7noDgNELL1FeOZgbfMEc5n49wqfZttWZC7cwMJijdz/5uqffdSEwFAhXZqLsCiOOVVjFhvX6qYx7RizDDMM0tIV5drIUG/3nc5PVbLUItXpO0rId/Gkq0Qi5DmK1vCxE8awpg28o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945467; 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=Vl4syWHTOOS8r588iTx5j9iiiIqGuNzfv+HfbeVwLffOvenemEh13eLbp2ykWbN5aCga84knDqUdGmy+UFmime0n3Xr41JEVDkTI5umZb4Jv8jNce4D/Ms47pWijNEVi1Rlfv8VG5AEFpiCKbhwx8JFLBvw6N1D3H5BhxQ88BkU= 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 1559945467089469.89776840034847; Fri, 7 Jun 2019 15:11:07 -0700 (PDT) Received: from localhost ([::1]:53662 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN4c-0006GX-2q for importer@patchew.org; Fri, 07 Jun 2019 18:10:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47629) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrt-00041v-AB for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMrr-0001fx-SN for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:49 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8433) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrr-0001SY-Fu; Fri, 07 Jun 2019 17:57:47 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:41 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:34: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; 07 Jun 2019 14:57:40 -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=1559944668; x=1591480668; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Xw65e62SJqBKkrt6W+qEPmpcUgZUUv62LCp3vTlHgCc=; b=EEyQZ8Or0gqnH0C+NTLsRcsPei3K7CYM5pXxE9ZrzRXTGLSIxYXtBqKs SHdWh5wb9KE5YdZVG85A4i65cRXRJdOJi6BOcUlMXka8OPJap8bIwREfo u7N7s6iZcWuwqqeF5JWVfaoZbFYx3YxODDoKcGj8HfsA8mt59Yd5e7qE2 8V72FUXxk+jCW05bMqAFuUpvPJYTiBdE/hAaF6Behz+VRhpL45Kr6Qr8E mLwuCDdiSwCWz5X4+cD8V9PnG5LwwfV/Ejwg8XrLiErXfPwZO8ejI2kWl VO7I4d6S7CAcCyuAON86XVax4zNlhEPmTvb+ildm9QwUdvELZdX8t4BXO A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014080" IronPort-SDR: vbC/Bmr+JfbzIw7eASB7EZZZXPIUwXNo4mlim1vCpCeX0A5OGU1bU0Rqa9MrquMYaKHRsjb3Tw 4HK2NyDKkLVqjSjbvs+hEeh/3GHg/0SmJjpG0/vdixZvgDoUi/dMB8o7tHyIqjZjuEE3tkq3Db 32utE1kEj1x/xsVnv49aaRVHAJ5s2z4ZRBni4rdD6A+7tW7fFXvdw1IVVMVLoOnrlsQnx1aqWc fuBpe8G0QTvw5okIKA3rH24ZqZrDClMB1bzdcr/3296fGcABxLPxR9u/oOFglF1eWU2/34k12w LnaAv01PzQgOdTOiAcj6cfqV IronPort-SDR: Rt9VUjhzogtRFg22S2MiM/vY0dePbOsWuCnRDEEenWX9gBzBwgxSchXyrOKfQUOaY5wrSy1zDd c7bGSQ0RCiyD+RjxET7DZZOq7feZX+mySroLeruwfa00toAUIMyPtdDn/7pNqkv1ivLjvcahrz SQ3h7+8ytRuPKa6cZhs28SGwCteZPVN/EPbVQf8vuUK48m+OMG3/+YGO6b9lRAA+nwReIoTNMp Qz77xYqf6aTpmu2FKDJNkdJrBRrPStZA+LysVNvRIXcVrtHBvWh0gmBJSHSJK+S001LAhsAkmN 0EE= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:30 -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] [PATCH v1 04/27] target/riscv: Add the force HS exception mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945244; cv=none; d=zoho.com; s=zohoarc; b=EzBaQrbV6iaJuV7asoPmn84Rm+waFLTskW17iJCAszyIOHAKVm+R3IFCLcnxltLahLd3MENvxreGTOEoSw7DYHGeFtKF8mfMO7EZCoAv6feCVDB3mMHeSowAJs87HLmgd18+3XL6wWjf33FTyzR0G9kt8aA4qcqDTXyd9uD87OE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945244; 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=QIiTJSIl0Q6UUqBhrlx12kACYcTmv8WnLfazQLWGPrFbdV1y9zqzSmCdhjgO9VTf13c/EwvWAW1hbiLfYF8mSaSmrqcd6u7gMjFYugrmBY2KVbuprBZk80kXSyLcAndBS+cC7cllbueEZD27ej32Cue4ROnueTesCcSj346doH8= 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 1559945244490595.2007286684845; Fri, 7 Jun 2019 15:07:24 -0700 (PDT) Received: from localhost ([::1]:53630 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN14-0002uF-R5 for importer@patchew.org; Fri, 07 Jun 2019 18:07:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47639) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrt-000421-HH for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMrr-0001g2-UK for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:49 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8436) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrr-0001Ty-GS; Fri, 07 Jun 2019 17:57:47 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:43 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:34:59 -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; 07 Jun 2019 14:57:42 -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=1559944668; x=1591480668; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BXuqW+Vie67kKzLkoEIoBCOJ2a3oHbLhsnez7FroSYM=; b=X7BlLYUfjWW2xFq72GHAexdy7/YqL62ovrZTdgtVOJyCVnQA7Ol2cOLu O0WA2Shn5pH3owUJ1of36O9qgSG8jCU/kJ6Tu9FHMIpMvxUbwBbjWJarU 8YzLqVs4rnSV2MVaS/4HrbZn7csQCT7FhVrt281nWZdGFeq5HovWFlcWs gbST+3VhtAfPMwfYSlmv6tFjctIdV55zvJ3Aw2zjZKyIOgiUwYvXBDiHX 3zFqIcpZda5459A1uSMLs+zrFhHjPdjKkCk1JhyyzEsj4FwVKcD4yvBSd g7qer/GtgRe0JTVoZWD9btHNuljyfTdy3Fdu8Jh5j1HGZ0Di8mblqfLg4 A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014082" IronPort-SDR: y2eHVMNQ45bNeKp6JIyZrsqxEGPSsxEXwbpfyt3Z0lbq59g/L8Lk+0XzxpqKrDiDiYR235gww7 xk2WXnq4vumvn8LiQuK6HiCJkHqZ5I9P4CRqxLb1Tn6O8M/o1bGiUeEF7RowM8sMYgXzhfoJ0c dNadsdYnrzulCXD6fQhKv/ipgtyGFHPcpkaLpksB3YJl7zF5S7ly332yrVjGmNXu3l0/OykA18 6ZfQZDScpY/yEoDM0dysWDtlyooXeW02VrBj1nBiQvKsIjQK51W0T9bZ73sfZafyGluXBFJmzy dCyBauB9RTnAXhVMoSLhmr2K IronPort-SDR: xXRww24/bqrtdvN6V4iq5RMtoGQ4qLy3YnDkoQIvDp5uoC+JG6o7tYlk7YqgvUCdArK3DDckxe gMuW1L2MznRnEqZxoFfLaQWVKESYYTObFGqt3fnkyhtAPtd8oYnx1SVVhBcE1xcfyqU2l1CBTH O11ZNLwMyNT30XhwDI/bRZOJVdBaakm2sUViC/BaQslRiVsvTzL1SV8b/himIzCffup6YpXQoK x5QaIhuzm/ZuRrZ+xG2Pm0LT/cqG0QK5lf/xM11YAHVcWRY9p19zb4U+mzAHtggc2t2TWa0TX+ XG4= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:33 -0700 Message-Id: <609116061bb03388a782b79fc345f02dc69e0d34.1559944445.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.141 Subject: [Qemu-devel] [PATCH v1 05/27] target/riscv: Add the Hypervisor CSRs to CPUState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945247; cv=none; d=zoho.com; s=zohoarc; b=ZtV4Z5n7P0P4RnRQwwyZD4GYKbuht7Rh1bkYQ6nh6CSxMwzw0yo0crjMyAfe/ytqDqxYrGiF6AsUJvYCdAdoqyimhfeRrGQd87Mh59bbhR6qTYcZAvqf4RIjIDxmaw4daYV4gy+VrebGhmKxdfw8hBcTyd1HDMcoRtrn8scqNKE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945247; 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=iqXFy2nztUbIt9+6o7RvQVbnjRnVrEfFI63B25YDDCM=; b=KG9E6X2dsScYJKN3uCOatV7RngvCC7oNUh+b0CyCwE6faVc4hD7Gk3hJAElB+v80ViwSpImktHP+Xel8fQfLa+XYeR5YaSYQdkRjIIsvBFnl/Wi7PQRm7bd189ztIH0Eus6J08l8bfu6kmPhIAWdtvD6IoAXJfn8JAZVsllk3W4= 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 1559945247412962.4731846154702; Fri, 7 Jun 2019 15:07:27 -0700 (PDT) Received: from localhost ([::1]:53632 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN16-0002wW-Fx for importer@patchew.org; Fri, 07 Jun 2019 18:07:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47656) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMru-000428-5t for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMrs-0001gp-Gq for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:50 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrs-0001Pu-3s; Fri, 07 Jun 2019 17:57:48 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:46 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:02 -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; 07 Jun 2019 14:57: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=1559944669; x=1591480669; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iK1B0xFFuvDRSs41lCEh5dJV34eHPcrwoqWAsrCAnko=; b=mh6GunA3aKwe8dWMMqWBoIR/lk4hukjVPu6Nh/zdtJSKQdEaKvttxL/Y ZmGK3BnHNR1Ma5ryFPVwqWGFoqFK0xdKKurK/g3f30FM78vrDOI35a7FV MFwWqONQ5ucyrbPwW8UVls9IqwJ47Zebnj+tL/xUs9pMuqWL9K+H5l4zA /9Z+exU34fyWHXxJLqsVyK8wMYsFR5pFCJ9hRrXGhxRvvnufz/6a1tOJG Nf7I5Plj+Khx5c/nU5QPF07KuDmmzkKV/FM0dQQpQE4n3mUocdw7KJLs3 noKAjxhowzD+dQS2UkN6fJOPTcCIV+/meieEi8Yh8gqmE48frGl7PouBc Q==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014085" IronPort-SDR: kPNdoT9iweQCevpb7hFO4ZZGTVew0hJHKgrxjbQZk/N4ZvC6hhf4exRmI5JMIl8/AD+glJGITC YZHGDL2uO38Rr2eCztCjwZxbkaJ+L0h7QpggVVKW1vhCvphjXCb8zu3Fg9IseUVGFyNvfp54H+ zyLCnDWbFy6dMylx4EGf+Bvyyu7lCvi6tc4wUJLhaJVmjFgfvPqz65SWWJC46HzqtBl7cbHFze 9ZIxPxw+cuO2MadeijDoUzd7XFEsG50Ea1d0mEBSLFBAO5Na6GYAvdmYCUM/wT68T3l6rZCJ8p xiNIuI7vXp4HJ5s0xAVJuE1s IronPort-SDR: HAUAhZB9MM2NDH+0APPzI3Ck74jHHFzcUvqZTp6V33UtSig6r+LOgMf0Cnmbjn8EmDVmN8khh6 X7XFyJUbZNaLBHMV9WEmM5jzVCr8VOQuYTZSP78s+pkFVl6Y/htRxAI9/XDIyqA8vPKG9/nl93 gA3goZE1IFLBaJqtZIa4Qa/1nvZhN9/x8j9vjKeHr9VdtrEjIItOhidGDK5KWd0gAHa9yLR8nb RvcmLoQvxhUqnJUmTYdXySTEkMOF6R7AVYlpdIeHCYXlYUlV+ZCrCvmosqs4aH7PVXQQJqC4UY kck= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:35 -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] [PATCH v1 06/27] target/riscv: Dump Hypervisor registers if enabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 1d1378bb7f..6111f0f0bc 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 Sat Apr 27 13:26:21 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=1559945244; cv=none; d=zoho.com; s=zohoarc; b=NdJr+/3HBry9D9vUZOuXznDEwfsquNcLynA5bXO5PFphYPgXYSX/f83DnJFKWCd9ilv/y08JGK42u6znyMb7MJAUcZxO1PDeDKQaC/Esgk6Iy9b4Fgp/3q0/Nwe3Sex1BBw88GiClGvPgIA3ED6JaSft0Rt+6/yFbQY3SyIpZF8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945244; 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=+3mCmywFLepooKoo82uHiX+w5VTWcYJ114N7mWwLDFE=; b=Zft6TAvjXCdvee32L5TjuoKsJ4Hax8XZpYk30+rGsXgCU34nWpHBQ5RZtBtQc9HM/jOha3JVyi0skjCq58+xZ8Ui8kBG84iQmHqpVX78BvaD2weCKii82sORStlyKPNOQfrdGDn9DT3L6RNt367Pb3SoeJVViw2UFe4GW/tfVSg= 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 1559945244327846.2525585337999; Fri, 7 Jun 2019 15:07:24 -0700 (PDT) Received: from localhost ([::1]:53628 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN13-0002pn-9O for importer@patchew.org; Fri, 07 Jun 2019 18:07:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47718) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrv-00044A-M4 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMru-0001l2-BM for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:51 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrt-0001Pu-U3; Fri, 07 Jun 2019 17:57:50 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:50 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:05 -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; 07 Jun 2019 14:57:49 -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=1559944670; x=1591480670; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sK0q+MVPB7AJF0oq2+VM2yifTS6lj+o5/8YC/GyV64Q=; b=kDFjGMYXLsGJX8d+c/Y9Beb5usIhTIZ7p4HZlOfa/D+7oK6a1Gvhyb9X 9kwASuvdyGld6QzIivQHhay/rWUT29amXkj/FSsmzVmLfdOHSaEPz2gDh EuGxuLW5YLLzkGWum3MHU8V+mYIHBIWr4yNta/FJmo+p71/g54vTChffp rqmK20fv1W017YT21NgqA63OhvzT0cdpMv3JUvfji72YkvAW05mtL7wwS LfEQYDqjelXDOTavafi8Lugsn3v3k6fBbTmEPQb8vtRTKE3Bgkmg95nqy wgKSMlmWUF3+wU701Y88CLwHMKRGlsnfEsirellBO8Odohu5I19c5SN6M w==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014088" IronPort-SDR: oQN4IZQwFmZVXYCLAwSSxhVXjeThu+SfiIxDfCVykw6pXYOO1f62Imi+TXfwRfUlv06yWiJJil Y7i2oX+nwbiSoTw5/rEXv/Mhz5lljQLUY3bbAUDDFXX+Mr7DmXBq0AfThCLgnpbH0PbpAyT7cx kTZ7cLpvLkSCWGtaZJ0Jw/3aLf/mlFVMa6J92FygCAwkQ1xTinrhbY7eFT77Shko9ir4hA2vvd ixsdg7VmybU9OwdKkF01jsxc8sd7shsGWLdIv4ZuTEKZ7BLLZbhyJ5GgtfGS8rlEAVSAaYiv1J 8rvObNpSFQ/GP+RjHcb/MLGc IronPort-SDR: mTWJQoDU/9wDInAE5c+NZiIdxX/xLKuk5YsWO6urzNFelmJp6LKxRF3qO/bGUQBP5LZ7FVAhpI ci1N8DF71MXdQvc8rQ2P5eiX9j0QGYUN0EB70kk8X9bvCN5sMCdzledfAmL9Eay57b1TwkVBqB PUpEAD24Ux2HtgA9C1TaNi8Bg9c/hIFzLVW3X/fuSyI2H2OGNmcj8uogzyo8QLD1Ci1OnRJil5 3Zv2BiA1zYeSVkjhNhrG+eKQWLoxwnXzOBB5DFVCY1WGuwtNYlyJf5Zhhf389bLGjzzzLvd36x lf0= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:39 -0700 Message-Id: <5c6152b63afbfed683c21df4a16b6cecb46339e7.1559944445.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.141 Subject: [Qemu-devel] [PATCH v1 07/27] target/riscv: Remove strict perm checking for CSR R/W X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 f9e2910643..809c4c09a9 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -776,9 +776,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 Sat Apr 27 13:26:21 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=1559945633; cv=none; d=zoho.com; s=zohoarc; b=abBH4N03clF0DSV7xftplTuiBF5DnoC5jGTKAGTQ12d2KavKMtWFEeHI/elWl7iOQF2d8Sc42wyzWL4V93J/3Uq9oei8hdoHU6XUHn+L2M7gOodQCn6iBvwsLMHAl6iQC71n3aKnsjkPvcdxJLuQtWm/kE3WR24JmkopX7S4QFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945633; 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=xgkAGCRGbCrPQ+kBc9b71dFYQ1bwYzw5bKWGH51ox7w=; b=X3GZzRTPLth77i14hbSiuTeVJaIZftv5tuwKl9E2M0QvUia14DlgqQbGO6N60orHAJe+Ej+GT74izVfgnUCnWjH49V64vcfQdN/RWgSnVGdijOk08pYe1n6njGdDlFRtHnqoSoA+Jj9cwfgyDXT4VdyhQt6ayTlJDfrsjWd+AzQ= 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 1559945633142115.903219923508; Fri, 7 Jun 2019 15:13:53 -0700 (PDT) Received: from localhost ([::1]:53686 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN7Q-00020f-3Q for importer@patchew.org; Fri, 07 Jun 2019 18:13:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47813) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMrz-0004EL-Lu for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMry-0001sp-DZ for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:55 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMrx-0001Pu-VA; Fri, 07 Jun 2019 17:57:54 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:54 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35: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; 07 Jun 2019 14:57:53 -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=1559944674; x=1591480674; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V7hzYZ9pPfeYdjZ6nLEgskvAj7ymCe64/NTTLGRivJg=; b=Hg1ugIwzNcFZvATDz91aMQIUSgZvpDH/rSxSngSXHdg6G/n28Q4jOH5u L4a3tSV1iZ0/cIBWi9fZcrRRa3Js1eDFFr18czBziZydmkhi9iYyEQ4v/ fr5FF75zwo5dNcFIejG6dZ3fQA8oAOKtigFSZM+i98eGPOahBUtlV7VNi 9Dr03NfL08IY7mu1Fp3qSFlzPJYis+HaVHapQ7zAkZ12UEef/MxtJbx+H 2SP7vSwD2cwfijvF/byY+mfBaPOQeZ+ykeLpVXNd8xjyqhi9pH6PoqqFU Kow0aP8ZetKcDQf+gOCGeVoAaBcJVQST28Lk82da8n/igRICuvqwpvELO w==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014090" IronPort-SDR: cPh9Bn7S02kdPPDH6Kf2xvAXjEP1u6HxI5BCgnPk5Kot6Bhgmy0b9Y6XyUudPfTFqsbTBTmjIz SoQNSbNJoHSezv7b6NhlH5NtVBx0Me8MjOeDfNAR/k2JrhVpIPE6ydCbCnl70Qe5vMAuLxPoaM oggKWAx1XlydjZXNt+//vtKk6O+4sU5XTXA22rQ5JNJI78Rb/wqOPfaCtrxyUPVDb/D+k1oymf KmPRNbSbI6W6vIariK+hfo9aFVFPWhnV9/WSiVPqZV/iL4TiHBXwt7biCBKqjZG9cDo9XFg048 OXRPOvG1tSdA1it8H/5gsg/B IronPort-SDR: +vE6w7f/zuxUpzir9AnAnW4C1OJKONh47TzTgxzgNfk+NsTwMK7pl08GvEuRAw+5boOqa1FNAs jF6u6ZxV/R3TU0ykziXnyyVQp9hxRMHy1s6qriaoZz2Ll6QDLLzSOXdx9DQiWVi6pU/BPvICIv 60cZ7EW3cN76ZDnifrciiTv1v/eZAa0puqbQ1aha/z5Sf5qBBEWT5EzqtrAIZojZrCGTx7Ce/m +rQoK8Iy3/1OMW4QW2d4ZD1xJe3fjrUfDN5hF1zaT9qAPIYnAt9Q1iCTlcQ/77tuRPcnARMOAD z+o= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:43 -0700 Message-Id: <9119001d8c309e9440d01f1606ce5e6c783845c7.1559944445.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.141 Subject: [Qemu-devel] [PATCH v1 08/27] target/riscv: Create function to test if FP is enabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" Let's creaate a function that tests if floating point support is enabled. We can then protect all floating point operations based on if they are enabled. This patch so far doesn't change anything, it's just preparing for the Hypervisor support for floating point operations. Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 6 +++++- target/riscv/cpu_helper.c | 10 ++++++++++ target/riscv/csr.c | 22 +++++++++++++--------- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index b99d2b7af2..eed561d56e 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -301,6 +301,7 @@ 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); +bool riscv_cpu_fp_enabled(CPURISCVState *env); 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, @@ -344,7 +345,10 @@ static inline void cpu_get_tb_cpu_state(CPURISCVState = *env, target_ulong *pc, #ifdef CONFIG_USER_ONLY *flags =3D TB_FLAGS_MSTATUS_FS; #else - *flags =3D cpu_mmu_index(env, 0) | (env->mstatus & MSTATUS_FS); + *flags =3D cpu_mmu_index(env, 0); + if (riscv_cpu_fp_enabled(env)) { + *flags |=3D env->mstatus & MSTATUS_FS; + } #endif } =20 diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 0fdc81f71f..f51139b543 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -117,6 +117,16 @@ void riscv_cpu_set_force_hs_excep(CPURISCVState *env, = bool enable) env->virt |=3D enable << FORCE_HS_EXCEP_SHIFT; } =20 +/* Return true is floating point support is currently enabled */ +bool riscv_cpu_fp_enabled(CPURISCVState *env) +{ + if (env->mstatus & MSTATUS_FS) { + return true; + } + + return false; +} + int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts) { CPURISCVState *env =3D &cpu->env; diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 809c4c09a9..4b1308d47c 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -46,7 +46,7 @@ void riscv_set_csr_ops(int csrno, riscv_csr_operations *o= ps) static int fs(CPURISCVState *env, int csrno) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } #endif @@ -92,7 +92,7 @@ static int pmp(CPURISCVState *env, int csrno) static int read_fflags(CPURISCVState *env, int csrno, target_ulong *val) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } #endif @@ -103,7 +103,7 @@ static int read_fflags(CPURISCVState *env, int csrno, t= arget_ulong *val) static int write_fflags(CPURISCVState *env, int csrno, target_ulong val) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } env->mstatus |=3D MSTATUS_FS; @@ -115,7 +115,7 @@ static int write_fflags(CPURISCVState *env, int csrno, = target_ulong val) static int read_frm(CPURISCVState *env, int csrno, target_ulong *val) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } #endif @@ -126,7 +126,7 @@ static int read_frm(CPURISCVState *env, int csrno, targ= et_ulong *val) static int write_frm(CPURISCVState *env, int csrno, target_ulong val) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } env->mstatus |=3D MSTATUS_FS; @@ -138,7 +138,7 @@ static int write_frm(CPURISCVState *env, int csrno, tar= get_ulong val) static int read_fcsr(CPURISCVState *env, int csrno, target_ulong *val) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } #endif @@ -150,7 +150,7 @@ static int read_fcsr(CPURISCVState *env, int csrno, tar= get_ulong *val) static int write_fcsr(CPURISCVState *env, int csrno, target_ulong val) { #if !defined(CONFIG_USER_ONLY) - if (!env->debugger && !(env->mstatus & MSTATUS_FS)) { + if (!env->debugger && !riscv_cpu_fp_enabled(env)) { return -1; } env->mstatus |=3D MSTATUS_FS; @@ -324,8 +324,12 @@ static int write_mstatus(CPURISCVState *env, int csrno= , target_ulong val) =20 mstatus =3D (mstatus & ~mask) | (val & mask); =20 - int dirty =3D ((mstatus & MSTATUS_FS) =3D=3D MSTATUS_FS) | - ((mstatus & MSTATUS_XS) =3D=3D MSTATUS_XS); + int dirty =3D (mstatus & MSTATUS_XS) =3D=3D MSTATUS_XS; + + if (riscv_cpu_fp_enabled(env)) { + dirty |=3D (mstatus & MSTATUS_FS) =3D=3D MSTATUS_FS; + } + mstatus =3D set_field(mstatus, MSTATUS_SD, dirty); env->mstatus =3D mstatus; =20 --=20 2.21.0 From nobody Sat Apr 27 13:26:21 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=1559945466; cv=none; d=zoho.com; s=zohoarc; b=gUTtolFHQYxh6oQ+CLi52WzeTuRFZn9Hi2AAU2ijvsyEJccOGQbUMNVwB3wegNPVj2xZfyTXi9oaT3qL1AfOpnTObJhUDnBSVEa4C6ZwFsSOD56zTNkkxALuoFoTxHNS+uKPLCvlT3ChvN+QfwpLf/W89vMU32eyA/N6azTxtME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945466; 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=0cBmFWclsN7YijS8jwTKR6eAhlutNQF7r18XMhPg9w0=; b=O2NiPPj6tohlQdw6LCnFk2uGW4YSJSmTvkXp9Y60FdyYefNdTuXfWfUhdICoXg/b2L7ISJmRZWFS4zBlx0JYwtXK9clOvvkEJcizyjXSKVRSUYkdR3CZkpFsgATJi1n47shrboy4cc9GsqdKyloaBV7erdD28S0gVlTQ37E2iXQ= 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 1559945466901127.79193908020886; Fri, 7 Jun 2019 15:11:06 -0700 (PDT) Received: from localhost ([::1]:53660 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN4b-0006Dd-1Z for importer@patchew.org; Fri, 07 Jun 2019 18:10:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47841) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMs3-0004NX-AX for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMs2-0001xO-0i for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:57:59 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMs1-0001Pu-Ky; Fri, 07 Jun 2019 17:57:57 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:57:57 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:13 -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; 07 Jun 2019 14:57:57 -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=1559944678; x=1591480678; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Nt/TlQV0czZlJcPhOqA8aU91jDEU2O1aeOXThQhJ34A=; b=Ccjj2ajvJ5oKiJqpvEDP1gDH8tZyLu9ZYhvyVB16dbVX2COjXn2Wz9xV +WycINolu8FkSgRdY/DXuYXD8KKvUJI8BUKVgEMs3eSyqLHXNDRqD4BJU gTyrcmHRHCx/5xlyt4cOJS01cjlYhqp3YTQohP3g0toCoEYRJcsv89e8i +KjntORANB/eS4ao8LVzsF2760ZEiwvVaFY49s3paS6ydgQXWWxdX8ZjU nRKDQD5iBcjoYXiLX09iXL/LfXqsQeKXQuDzqTkTC8wnEhJ83Aq8EO7Mm yMWm++dAWkt8XeO/MA/OYMILzFvsnCe8cUhajjVe+hSnWw2aIkW5HxoAB A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014095" IronPort-SDR: QdVyly0RYHz4eMIzbo8mNufi3FOrcNHOpdUrWNKalIZovf4qI9XTZMnoQ86tmE2omY4RGYNLbR LTdhqtMLaUOI/2fZY6km8+KKrQ9C+A7ka8GXBJLNwaBYVt3UGtm8wIcV81s2nmGInR2b+y1aJF SmXGtI3P/M3mbiEAhLlbQBmnu2HedJL1LRnOPbG4mtHg/5EsfQ7r8f3NhQQfEdoZjX86srvvWO aY7Z+UL/AZLm1d1PbB3Fwb2zi5MYVE7v4to+Dt1AnaBhq5Wb7ubStCDR/cAx4pW7obKiHSWpyP CWknV9iUxCrDPATRe5ZJSnI8 IronPort-SDR: N1fLNGkBmcO8KVNs9OZ3yhkdSJjngmIGZqIMOdGC24V6HZ+PvfaXK94fixM1VxzXHjOuYr57R+ UqcO9PSYFOhAP4a9JHY1pGVLFwvXOY4+E+tIFrvfB0j9jE91RKbhyaoUGf1YwFFnB6HrXfihli lRHHGATMcBql37CRV1nzPYRRH49OV84ZOqaCS4LgtYUms/54Mq0eErt0Ygwi5zxHr/smrhhHq+ 01HycWGBP3WRpl/YGONXFxhiZhs2fq8JmXSnn3gu0krk3xa7brOcwUJ7a2534IV5lLrLBbL4Ko zAU= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:47 -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] [PATCH v1 09/27] target/riscv: Add support for background interrupt setting X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 f51139b543..0116d2499c 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 Sat Apr 27 13:26:21 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=1559945633; cv=none; d=zoho.com; s=zohoarc; b=LC0RiGtbtZ4ZPD6k6SerKG3r/xZ3H+YC4MatJmdcpZ6CbFmCEv3Nmsr6tU5lJaGy4e6i/joHj9tLlqePnd86J9GuVzuEcWb8swgX32u3NZDM8N5F+6NAHF5/frXm1IK3crLax3ElG+dAWCmaunNGj4rWDIsXBjdh/3GqSG6+r1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945633; 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=oJe/Ojr4m+rFiq4EMcozyqf/w4+xqk+d4bOt+n610JM=; b=CxJJ4Px6iATqo3E/8YlR7gL6pCRnPO0QJyUsyS/6m3mrRDlAbmMl7Ibt38bB0uUg7a5GQ0WfCVIJvCQCeqUAHVUK3qN3wwl62srDdVRLWxtPnSsN7zSDQCthoycIrk/xVWjyTSrdZ4FC+OEPKghfq8S00frOJXr2WP6548EqBpo= 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 15599456330821014.1618707419412; Fri, 7 Jun 2019 15:13:53 -0700 (PDT) Received: from localhost ([::1]:53684 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN7K-0001cH-Uw for importer@patchew.org; Fri, 07 Jun 2019 18:13:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47883) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMs6-0004VH-6C for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMs5-00020y-3e for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:02 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMs4-0001Pu-PL; Fri, 07 Jun 2019 17:58:01 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:01 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:16 -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; 07 Jun 2019 14:58:00 -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=1559944681; x=1591480681; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Rwaxc8+UmzqBdrerLU5CiH2MwqsxNCdmiNlmHygiVek=; b=d7AbKHkLtrGq/y6egF/829iU4H/zAtM+50oW4XhHjhBYr39IFsVlW06H /igGqqgFUsgyfc3TtjVlDY8s65IwtFNP0he3DC12ijGjstrtb6omRkNLt McO2OeIpScKjnMJjuoRm/RAIkL5WJEUMm9Q2Ohcqs0vksJL8ox03QCEFe J6d39pfn3xwD7UYDK0VH2/y80QuKOUzJQEMi3bGzwGNTxMrhgbUb4yJ5m gU85c5Qdc2ov+VpdhP7UyMUCHCGyNBSZDkvLceWedkTmhKJGNCTEXgat/ LXPD0EoU2oMrm2X4usI6coAFxKBCZnVS7Ynq3+16GqF0LgfkWT2ujIQux Q==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014099" IronPort-SDR: Xmj14wj1RYcbR1/vy49mHs2LNiPJXgnMImAPs6/nYtzOzWfhu1ylFmrH3Udbr9VyuDnHKBfHpW vOzYk4eQJ3j7JdXKsNzgOHOzcGlksiaJ9zNY24unlOObxVjLafGrk5yyXZWxIxOsOr6BxC45yo TWpMZJW9NIZEBI/76/MN3jU104e1M0zJHG+BZegOimJmFRDTHoQYjfAod1FifKHSDDq89cUjIf Gk8K2pcbH90Umj6B9FHAJW7zBDx3Tlrh0hE6jHAa7Fvl+BWoSXPILvwN3PCYcGTJKCWX3hG9AH f3gvTH3wQLbB8PnHgNl86UXL IronPort-SDR: K8Y/7eNotBZRINYYtMvn53OZ3b3VSYmEOLrGmK8tuQWDIPkVowU7eckBNY7Me/9dpD+UuYJwNW /zRc49uW6D709yoUtDnm63Fy/a1+1iJ/dNHXHkFsahE9DJo6Twc81eYDcJr8hsdAPcZLF77iSq MIjPePAhMs9GBkKRTZM6p8lhP3GyregaR8jKwQ5kjYmv1sS/V+MGTL+6BltKlhhXGHOrgiNaXK elRSdPso9vLZ7XQ7clLcrqipH4BFdKqg1u2hFY7Uadx1IKTfGh20PFi5BL/d2vqYR1uvH81rGN xG0= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:50 -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] [PATCH v1 10/27] target/riscv: Add Hypervisor CSR access functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 4b1308d47c..911f83ef51 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); @@ -736,6 +750,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) { @@ -919,6 +982,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 Sat Apr 27 13:26:21 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=1559945795; cv=none; d=zoho.com; s=zohoarc; b=ORIaU1oxUcPAvrtT13CZ/4SlBoxjH/9hLiWfRVzAs05M27jq8gOK7ux/oT8b/s6EzcAhGUOzKFNXluA0cglDjaEOT+8IEi2VGiu8tJaMrXJ/266QIVtp8UMvVL3TjB92lU6oC/O3GX9sJ8QEcmaYniUm02c8t/ctN5ElJdiUPJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945795; 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=/x0lyVg/xPQKmvGFRRBffCnyhlT18tuQ4Fr8mCIrJxc=; b=nGtMJq/2+/EA4fpQ7m7hNSQwQbH1sSaipXmum+EBcZUJiXSVNKsZVSe625o9NyH/Uxx5GfwdSL9kU+w1FkbMlx7Sb/rkDkPCSlNvH0+Sbnn3IT1VBuYzv9u8nVSwQcc195BcL18ktsliKQXeZxMpL11T/Wc6sub7Ntxm+gE+x+4= 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 1559945795202243.06818646257398; Fri, 7 Jun 2019 15:16:35 -0700 (PDT) Received: from localhost ([::1]:53716 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN9t-0004lY-Md for importer@patchew.org; Fri, 07 Jun 2019 18:16:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48060) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsb-0004q3-2W for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsX-0002EQ-4e for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:31 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8476) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsV-00028L-4O; Fri, 07 Jun 2019 17:58:29 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:04 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35: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; 07 Jun 2019 14:58:03 -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=1559944708; x=1591480708; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=70z9CEqnzyThz9b62lMvpwwNzNURYyoV2TTIj2LnYig=; b=nb4DIUphEZsAlxEybtlcCavyAu5KYUy+safmDGuayOMaJmH0HxpH/8tN RGfL/TIzfSAF6Id/8GPSvjcjYffODajWH+QcFSoarJ2qSZZ8CcS2ItgN8 7o8WhlJLlYlp9ISgiomv45gvnJXdMDysugRtgLuyYFmQdbWlrLP3cCrkY sXegOqdYLUkmunthdI9rRNoUB6JAFfdHlKrM8B9dykQPQyMxNl8+OBjgB kJAhx0cOY3eb9mIyJD+VhnvlhvLvAdIc71Yv/1uXRUIdVr7zb8nKG2wwF JJhcsNWze0YKm6z3XL0Dw1hBGlz2Gttqi8oy7W89s1cNbDu8aSNxlQs6x A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014101" IronPort-SDR: o6R/Xw40NMSAv9AQh/BEyKNPqb73NB7c1iOZuRnWFCGFACvNuqBy6Bo14jYeisN1a+DLN2QJxf zQqab4mrELHdBCwyJVNjtuQX/NJ8iFOQ8EERaBigKEGUlJJzHR+x21d5ke0yfz1D96tr0tSP8e NbsIHD7Zz7BYQBS7F/Gddsob/SAT2w9kwFiTjB+d0Nln92ZC25iBIFHnL98uASPICgnGWEIqPt bBC7od+AG73Pa2H3lB5ygcMLUpomgzb8vtjtWlnwx3PFonBWNi+qAkBSmVIyJ32EMXxIzHv4/y r9Ff/ZAVCQ/S3M99IEVMlgQp IronPort-SDR: w0CNxIUzaCe4uGXFDfTXa8UuDbx4uTXK+qaSBwoLmC98Dt659TeRSxieheSBoBSQjPuFJHxMdO Q3bzspXKlKJNpEDbW064kMXbIqC9KcYwQb9xxKH7FkPF67DMzRaXH4Z6E5e+1PxRhblWE4JcUC AVW06UfmyrcRCFMzHxqArYagWC1Cb6PVzTenL/2cMOFd6XP6c2i1rn7tgMdVdrVekRxELMrQFA vca0dASbgiLLQG//zvyXjIo3PgGe7l4XKaLIWqCVzAPQvmSwziwmllMSjrNvyqq/Hu0YXeL/4r 8C4= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55:53 -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] [PATCH v1 11/27] target/riscv: Add background CSRs accesses X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 911f83ef51..c55eea44ec 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -799,6 +799,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) { @@ -987,6 +1096,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 Sat Apr 27 13:26:21 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=1559945851; cv=none; d=zoho.com; s=zohoarc; b=n859Qn4coPF7f9KrkscGxa1BaNcPYB4c0ZlnI4cpRhg98te/yFQvWWZugUEYNyrS3fsO+3HiPGUF53+1Pg1IpmYfrc8gRWxOKsuIZGS4upiOz0orUpdgm7SY1HVA3MlOm51BMBWGjXzqDNsJeFGTrqPWPvjLiVfdGbahYGohFCM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945851; 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=/Kow59jt9DPnBozYuxd5Cz3E3N/fH9vsqASGEocoCLo=; b=TeCStSUlU39lSQNv12UIuUu7wrGq7Fz44BtNbp8Ld2YzFb4oUMJTrOEc9d4i/FtBTtrR3OFZYCeMnwa5rZcwUMfrR5IIkc+dkLJFInoxZxIq4oJslPATnYeOCBjZYTTP5M3/ZcSywsUSuH62KqiRIg5HY8LQvXLczkR/wtCFb3U= 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 1559945851465664.3836735080372; Fri, 7 Jun 2019 15:17:31 -0700 (PDT) Received: from localhost ([::1]:53720 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNAw-0005W4-C2 for importer@patchew.org; Fri, 07 Jun 2019 18:17:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47937) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsF-0004mB-Oi for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsC-000255-Vf for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:11 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:2737) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsC-00024S-Jp; Fri, 07 Jun 2019 17:58:08 -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; 08 Jun 2019 05:58:06 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:32: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; 07 Jun 2019 14:58:06 -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=1559944688; x=1591480688; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HKvkT8hdJm5Ch0w5xzwUljGaH9FsAA3qVR8+WN12biQ=; b=YMQFhDdIOKvF7MRvI9V6l5+ik1e+4l/tGVIheDoW+PlWmvtXsYBnyFVq 2Cb1R3UhZdANF8HwBfruX5SpJKcEXLpLBoE9GsgSYOvuSwYWMFiFn2uvu 8lkcs9fmhJvUBuA5e6fbd3DSrgcX5JI+/423ai703dnq5dwXbZdTkK2qz XKu/qXdMYsWA3J48lCDumVItmIvEjwPKh7ySaznWQcN4P0PaOv6ScEe7/ lIF8yjbJEL5+BXcXQtVPSFXCSoRHhsFWQvGFfRFslHivfphTD8XHiUCSx 0P6OcKELZAlgojgAYQhyRqsFukvYB6igwGbJm4OQgtdTUOO+XWN7rmEZo A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="111342550" IronPort-SDR: faHMm1TeW8qWkhN5ZZG5crKxYzPFrH7MCpCHUZTI1H7A/UVFjW1oMwSUlNFRXfsmmHszj9j94I hFC+p4tvs6QQ+DPOVdkMcdOb76wAVjaZAEfx6y/H8737FF7AXuBH80Zpfdwtnf1p8cloofqJ5r 433FYzvZCZDMuw65TGuM0M/dJUHEL8OTl7XhrYQwsMeCsS7Cu9oKmvWlVrJ+mUh8WXB7eI/C3o 3G9Cm9+CjdFGDgpdsuTvEezdzFqzhRPlETf+xVkyKSXLt5DpLx5A5mpoxFvQ6cgWWq2tkaLS2A 2LAyOopmsIUuwn6qxj2cEtJN IronPort-SDR: fGPfOtUoNDjh395aELL8oez1tu3xuarpozIIlWGUUiJs873HUnQgeJDddkAoQHVO8JMSR0uhko bp5cNKKyOQRdK18fZIu/L/DCFLCUbLF1naEyaVTpI3Y4ti67Sr8ZXMaaHEf9CSY4lBEX1ax8Ws cUFDPVe/TFmeCgb2wnbp5LRxDiTXK/aDiep+knxq7rl/zYPmOcpfz7Q/Edp20KOUzYAIiZC7pc UNjQ7JekVm6/VC9zM44iADyYJK/0oqm7gY6r9o7RnU6qkADkTXWodVM1o8c9HPDC1ybv/RJfuC sMU= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:55: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.144 Subject: [Qemu-devel] [PATCH v1 12/27] target/riscv: Add background register swapping function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 eed561d56e..5b3b32dbbc 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -320,6 +320,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 0116d2499c..5e5029ac0b 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 Sat Apr 27 13:26:21 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=1559945984; cv=none; d=zoho.com; s=zohoarc; b=FkHUjTC/KRTS2yhKtvSAoBLA0XU6KwiRonE/X33HjgkJX2Tj8TZITwpebCnjWgOvBIuHOzlkDZwThR7laiVxKZ1QLNCseC3Tyf9Ebk6H3CFoBCXy64FsAmMp0vevTBmN8jItKmzvUbxnlUc3vEP/UzYNTXSMjPEnbnln4byQ5Eo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945984; 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=nK+mxCzUwIjqbHJis0CiDRJa6mHPKrjWjYb3oUqmHGA=; b=IQsaqiElGML8vCogEi1DOqEleyQLN9OrvaI5LdXiK0nowj19V+0igWLfeqgr7nfTfmBSgu/ig4dVF+I1g8gMA1RyRbDllf3fFmC8wbQS4WPB0BkimIl87Oqb9oxr02ajyBI2U1yGI7OP8yQrBA6jdCLBAk8zKDxX/Yv7D4/VNvQ= 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 1559945984270294.37276122740525; Fri, 7 Jun 2019 15:19:44 -0700 (PDT) Received: from localhost ([::1]:53744 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNCy-0000CR-SW for importer@patchew.org; Fri, 07 Jun 2019 18:19:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47960) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsU-0004me-Ov for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsO-00029Z-Nv for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:23 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:2737) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsG-00024S-1L; Fri, 07 Jun 2019 17:58:13 -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; 08 Jun 2019 05:58:10 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:03 -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; 07 Jun 2019 14:58: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=1559944692; x=1591480692; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZNZuM3ud4ewOehFF1pMa8/aEmQZhxIYKzTI2uUUFItQ=; b=bFkij2430sEOCjavXg1LHf8IDPLoNVWZCz/u2QmayKSjXQsrDBSqZW5X GYOPMEcfXqXb6Lcms1klVchtIpS4LrWH4TirencbuuLjCrbbWxIqXl2uQ Wblr5NH9wdICrR0UvKpxTPjn56XEjUsupvG7f8YnZ/2ZGUAplMcfrhW2h wl0h8R74p4NegqTVBKjTx3iSEYkFKXXXWzwdFmKEhfdAKe65xGwGpnClo sb+SiOEtm3HIeQyef/G3qXeNdIo3PD+do1eJZLAZZziahEl1FogVu9fEM beeIGonlzbyV8eOUJ4xvI6eWKAZbxNWdvKwg6Cs7R0/YqfOGbsobXZ/7+ A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="111342556" IronPort-SDR: jXRCzu0xnO4+Q2UYqgsk29fQqPJIpcRpRA+D+j1e4W5WZ4DV8TKACy6RPXf2NIJZjAIzgQGjBV KPqYqItxnwZnPwfK6eQrPKtysvnEMNGj15PSsjYebCJOMNtAWz/r9g26Vnx6FPOI7Azpq5V15G PSTOGGZQ7/9V3/sBXRR2AE7ycS202rLo/QbbiN6C3r/JHWIiTasGlnJKPJ/Kfz6atnawGtOsrc wGhXPR4k4KZ5Eh2f8sLn8qwyfYyjeKhzcNLjai2bvhMw2p60eyFlHicPgF2ktMfA2+POoQ+Db2 4HnNWEXntcjH4uEFOKBgOYTA IronPort-SDR: 2Mltu8fGOnGDyPD0nFvqJBVMWGC+6tsww9g1n+UY9HlhRmnW7lGSTuhbht2dO8A7BLTJ9fU+eA 7xQIejRN2pYIy6dDlefq3Vo/BGEwcgmpsTyY1CUqQSbGgScrCCne/649F46xSSAaecDB2rVt4I w/ph8DCTZtxEgPuMPkVYJL7a0VghOJ2AHUluudC9t1CGh/1BkCIGS7DiG5f8lBCJaMc5TPzJ69 cmN6pH4kIR5OOTGHAGZ4TRcd/pBS1NKUwK6doNqza4CFcneObDgB4e6YAWk3wr2Ip3xgKjNemI pN0= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:00 -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] [PATCH v1 13/27] target/ricsv: Flush the TLB on virtulisation mode changes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 5e5029ac0b..6d6fff83a3 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 Sat Apr 27 13:26:21 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=1559946144; cv=none; d=zoho.com; s=zohoarc; b=isDZXmCfTjIkbk77s/RtYVpKLxqwD2LuG5m+jDe9/0bpPZ3mHX/DPOfjzazG2ZrgEvukMPcdR4J9zRQ7y+aZsrumqi9zEDF2JBn7QPvIQYsqvMcmXMOB2/agMYwQL2Jm+J8teEW55FAM8dO2F6TU0uyVYBCKDmcjvTsUJdAyYZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946144; 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=GnS7JfwwR45ESiDDgvz8MjuKua5PZLfzgXTpExInprllug02ZaSj1hyBnNykIr8VSGVozig9L05gUojrG/qGJnUI/6+4Zo/fIAbuNcdp2oIEiLzff5J3Cu7JlphMkPnZ/WN6RG7Exj4umF3SKPebOmR6KyrPu2EgUC4m0mU4zUA= 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 1559946144481596.3678354029831; Fri, 7 Jun 2019 15:22:24 -0700 (PDT) Received: from localhost ([::1]:53778 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNFa-0003FP-Gq for importer@patchew.org; Fri, 07 Jun 2019 18:22:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47983) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsX-0004ny-3l for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsU-0002CV-PH for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:28 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:2748) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsP-00026x-GZ; Fri, 07 Jun 2019 17:58:23 -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; 08 Jun 2019 05:58:14 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:06 -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; 07 Jun 2019 14:58: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=1559944701; x=1591480701; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gGFuqft3Gy+jQsmp9J8ov+i4/Ieho2R14R8oFQ3Co8Y=; b=ddDjH/KTwiZJfWqtotw33DW7xbb9i5ZEXXzzVagI0tdeqMOpyO83vUpX oe+A38xvWN4LZulZ/dU9tVaIjdk9E7BzG3pefZVJuhXxbPDFejbVFBu1z adN/414AoEEyo0tr55gr5jlmUaQwuBsp8lr9Ql1dFOOVFf5s3eFyYdE5q 3/oVLs3i5eRKJbh9eKhtrpCSDDM9EG4C0fpLFA0S2GKLu76l/Pim3BMHh fGszX/VZr97r8h3XkxlYCZDiRGPD9RIUKHx9eD5bepC/VU/xWlbZ7WzYC XNQP07cZ0PHHXFTizBYiV4ugN6uWjMfttx7bUjZqRFthLUK6itU99Se8K g==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="111342563" IronPort-SDR: 9MeOQndkkDRPWhpT/SKaS95N91QMbRn2T6dibyjN2jmuG4QY6rgI6UwHYIpMXXpzQIeIeAkzcG BVO7A1CY5ANUVVEvhCdSUaocElz8BevcSKPiMx1X7MIQNx/cBmJdgWJRjQvrJHscuuTcEd+H7m BWhjohZwAOIBQv8XB0IVBtDSf4X+plDNvMeTGACGE8k8Dp8jDt4GHbcMSvb7ZFRi2ghIvuViyb MtrFs75acXvHgLjjbAyblcMMZs5hvVeWYzdhs1Xy39alRqHldHWf79+IHCgNiQ+rHuTUcLpzCc 2yxdT22Sw7JcNDXvxqMi/jfh IronPort-SDR: TC2oH1R41BcXu/z6Xv0gyN5CebPw5jbzEnMAT3zAujhtga0FEL40VFawciUiDpxZql3+CYjs/G CWrU1K0vfmGV792ShbdCacb5Mmjfrr4akNHl3VLyd+Q8QpVsnyrDO0yzgal9D7RahsqX/R6v+6 +8o3OSk4GYeOiyYqy83vi00b9RUGIy2TlWQtJQpvB30QYqWb01xhfFp5T+gWLjD0WTTbNv8NyG zMJjU+TPKWdPVf4w0sKaRqN6ZkgOCj/UNA/83MmppSFrmcYp8Om45ADzxA0bdtCRSVqvBGD//M /p4= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:04 -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] [PATCH v1 14/27] target/riscv: Generate illegal instruction on WFI when V=1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945638; cv=none; d=zoho.com; s=zohoarc; b=GsndydN2sk+MUWFqcRfokMMGVWSZSGqNw4ewq7rzj4CPUOCdCp12D8vD8kXewT0xPGP2XkqzHntQFZjXy6Aj2GBWqJPtadn7G+uv2kit7e8Sj6KBUgRT2CcalMMul4DuYWcutcyKgYsMiorssv09z1iX6BSIuAtLStU934cfO0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945638; 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=PeGPGcOPHVZaMqSWz+iLU9LQY7mrgprcKgrlyQ3B3kOcwRYLTARlbYrIjSzWoxNlfgfYfo2/ZqgRK2kKs/picOVSend51s8tYJMfmfx3shQR+TqosUfvj5+D8YcjNjbzivhsbfP2CHQsM1pLfBvu3eK10STPzK1mq9uHcpHmVfU= 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 1559945638040983.8627379338561; Fri, 7 Jun 2019 15:13:58 -0700 (PDT) Received: from localhost ([::1]:53688 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN7V-0002CN-2M for importer@patchew.org; Fri, 07 Jun 2019 18:13:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48064) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsb-0004q5-39 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsX-0002ER-4X for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:31 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:38183) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsV-000284-2r; Fri, 07 Jun 2019 17:58:29 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:23 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:34 -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; 07 Jun 2019 14:58: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=1559944718; x=1591480718; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jX/RpI7uSP8KPd5AF5ZDxr9NUzaT3LJkLiKb3mUVKRc=; b=jI67h8YGs/sf8z9O3cp+0SghXE8CRl+JCXQdnLNSX8n4qJRF6e8d2OeW bPoLuu/5po3zbDFr94jGjvvgPtB22pf5vabHXsa82MleZRsD5BEPSMYpt oR7VUoFK8HHRam7Sr0QTZ2XZCSlWZSznSOaYdZHq6OWCt52ToPSn/nmn2 diIJefPJuYFVHjuCfxLZkTs7cb1D/xK1bZ+tWVn/Bjw+YumsHVChBCHoq taaj/jXh2/kXctgy0AKDgENnFl8Zovw7BSMbFIB+tWGP3BP+e2pC0n4DA eFftJW1G1oDrikz7SIT+aJwPDsop68y8MEp9cFjLogTcS51Oc60t31QxK w==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="209711282" IronPort-SDR: oP6G0jV6pkKFs9o7J8kCsp4G/VAV3FucPcTubDUcBQVTI4gRxDNnD8kVK7J6dJ1WU0OCPdZZTS KS4ws7ZTWUbBWMoAQb5LN2ngzH2Dv6B1U0+7b8gDI9GhYdNRDbLKKY8W/OKtr1a700pbgRNOOC lsvF0ds2tk4T2hR4nKvzcGH7OtYLTULOe0Rh14La5DcmBw3KzaC7LetpGHKVStoxkUchgsXWxU 2RZPemGS6x3SXluA7cWLsg5/Ls5pmxYdNVPj2Ji5WEZ/FAcdIoPF1kr6t2tyOY5RI6aN2xb+bp k2iIa75OTMGmoyXe+NGvRNQx IronPort-SDR: LMbp+I0mC1SKxV2drNikd+PSO0pzqybNtku5SM8KRMBSMAFvkCA9cjXnzOkVp5pEXAdIIeU+ay tSC5H7FQmPnQDuBgAufEECv8vuwtRiA4JZLwRAFXuOfc0GDolEoFr15qnoV2pIgHI7folpbzBM 6NOg3mXz16sl8R3nYw/kuWDXmzgY5cyoOym4GXQH4NJKbzvjnrfhWlYus2UdYtwvyMUZKtP4DH 8T3dRcxXb+EvGlc5Ats6Pa2HaG+gKeWMl1vFGylwTdYbEG1sTGChIgTPkvGRlAiDiDAWa1Ehf9 /L8= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:07 -0700 Message-Id: <52f4e2607602fcd822a07632c6c56b32f05fdf4f.1559944445.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] [PATCH v1 15/27] riscv: plic: Remove unused interrupt functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945957; cv=none; d=zoho.com; s=zohoarc; b=h5tXg8IdgBIo5RqraOFLtaplK3qkOb4s7sLG1YPR/O6oitE9pkEc+PTxDNxLPX3YhyblQzlWhRNS28xHpWoKAYvoocfOQm5Oq+6YDp0CiFEp0La+kqzy4CowW5+5Ynh28/6n0mSzDyZ15JfeP92IM9B3TDCU/5whaW3dyr3ulAE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945957; 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=Z45BYpWhcum9w1qR0uBov4Q7h/8kfAAvU2FVoVdcJZmpefZHcbNqI1bHDaTv4EdF0NAL+mXTg618GgNblkl/NLs0ZQ+VqWpbMqf9OrAQw+KMu/MFoxdptfBh0+NoQzToWvv197HNxIha5zWmPSoVT2/pYCvXrrN8ZFeHp+UFyBY= 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 155994595742577.64555630659925; Fri, 7 Jun 2019 15:19:17 -0700 (PDT) Received: from localhost ([::1]:53740 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNCJ-0007yJ-OW for importer@patchew.org; Fri, 07 Jun 2019 18:18:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48068) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsb-0004q7-38 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsX-0002EM-4X for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:31 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:38189) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsV-00029d-41; Fri, 07 Jun 2019 17:58:29 -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; 08 Jun 2019 05:58:28 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:13 -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; 07 Jun 2019 14:58:20 -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=1559944718; x=1591480718; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cjB62V2KEtHPar+ofR4sfzgKIk6//oGfIg0TBm9dQl8=; b=N0Ao6soLfV0bVFAT1UdNG4zkYxVC5ykYUc+3vxgvuMxes/p7EdWKaOyP 2AUXwJU3Fu6tmovOzMy5QtRGRlo9dVKhrREmZeEA7gwWjC9hu24PAPW+k 6mQbp/egJd8uwYfiZJkpeoN/CTbBOGrUlUpACr8cs53ZyNPgZ3MPYVNwD E2bClYlOLEYzzGQP5UCZ2tEOcWSE7VIBqzNzxQtbN/1hwOUbnMd2glsiJ 8+0rflzpKa4cCN0sZYduWXuTG0VAzWSyqt/wJjDp0Gx8lgbeXzwJsvi/h /f9Rcl6qWZjotjbn1AIh+8sOz9SW5LzFvOhUn4Z2lGhgGm4meEbBeut/z w==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="209711283" IronPort-SDR: BB1Lz1yeTeMvczFBQgDVQncd1sSfANQ8ZuKAz+CquhytEcA6QKx5d2k8MqfuOW0pRxhZUEF+Oa WLE1NKpyswUGBlAt1r2GPA2Ewdn/C9In3Kzi/sLlOvD5LwguB/nvHPylle1MLD4YzlQqnhPxEQ wTwFKhQZ3iCKV1cu8x5zIqJKpwEagybLXnxh7DKTsRSoDOyuh/OzD3qY7RqtOFQ3KbTb20hNp+ E210+XbZjfLt9AMlp452ur1YtvQ1kBMWBWzbdm507yadQo15WFl63yiKxxOxclbitPDXfsFfkT 80DcA4Ss1O6/GrlzV2g02Guh IronPort-SDR: E3wNfM9kX3NjOLycpiEebLI1WHyTiCNBqiHZmaRAk2oJ6XMkUq5Y3syR5ja7ympjEhFgO9ownY yBL0w2DemMZrZ15/9ravpx5mcYpIE5d6m1gomYWcCPyoiX2k6PcfBflbPuM4B6cYmQAGPYB0KQ IgvmL3Nc7ZK56aGR6iECBrqtHqxCaR48r5ksfU6AAO7ZeFE6oWR/6mvgYDfL+Ws0ogieTPJ3dF cuLCDcvtjI6dqyYxyEIaClD2JJ0YFiGqIvH9seRYVg75s+HTHaneBOcuS0JB57jV9FFYJR9a0y mmg= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:11 -0700 Message-Id: <7b1a129161caffc16d473acea53861596d0c3d1e.1559944445.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] [PATCH v1 16/27] riscv: plic: Always set sip.SEIP bit for HS X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559945796; cv=none; d=zoho.com; s=zohoarc; b=jfDfbnxGMavmj4mJZ7EjSpWcvxD0eR4seOenp87608SNXxYz7Ym5vC0srA4ZVlLtPFqHrgpIKPIzmxqD5LNaxnBuAOJPopzuqRYhkQyudo1yI5eXVmiAN/pBsw2SheSwsWiwXyr94+hmOikG7NZg0nPvrERQo1H9vR/K+0fpoH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945796; 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=dL0w5bxRO0Iv32FFYORI1T6xU1q99OXPYadfcHnwHjk=; b=BE5mkMnrFdIjmwxbDgirttcHKBN3ch1aR9rlQHlAv6AEqR2xHfUT6YXnsUW7wsNqBtJVT7EvDu7JYAd3PV6Iy0ZDNDecrboKu+l1sM0ZhjWv3bYxGyZM/77xFFPkjKu21ipSuFjyGVkgr0flQtobozUa2VYbRG+dvPuSmotoW4w= 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 1559945796154431.8122857407046; Fri, 7 Jun 2019 15:16:36 -0700 (PDT) Received: from localhost ([::1]:53718 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN9v-0004ox-Di for importer@patchew.org; Fri, 07 Jun 2019 18:16:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48059) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsb-0004q2-2X for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsX-0002EB-30 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:31 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:38196) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsV-0002BV-1X; Fri, 07 Jun 2019 17:58:28 -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; 08 Jun 2019 05:58:34 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:16 -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; 07 Jun 2019 14:58:24 -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=1559944718; x=1591480718; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3r0rnJKxky1k1303Ow03vzZghGPK40tyE2AGu4Wbl6A=; b=Hdn4ASpQhsUh5ul/jBnLm7DbKYQwWAhxu8u8z4GbA/egxNI7h9e0mSrT 3m0Iz0RKJbglMxoSQaGWTjmb596f58oRDGblRr1nU1natmYN5p2JtgVAt c8rvvYmMGEOGOdMwmzpbkJEyZOs9TANwtXJ6kqRcB5vSJo0raZc9jV5Mz 2Tpt/MGiD5ATk+tHD75Zel1FlmzJwBKhN1qKa5stxua2f2ikMnvUbKfWd QGWft59cilq4nGvdMk21hjJvBEx7oKiDGVsNxFHZ+gImed0kmbpPPsw0l VxikPKiXETIOafpFDOv/alBp5jv/lm//ZSvggF9Nv5Mu1ubG3ffNbJGEj Q==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="209711286" IronPort-SDR: LoiIYj88QYhvPFBw3obBLBrETYTu0bdFVXQ+wtiYZ++33Zr+44PNCKYDKtVJCRx4f74v8Q/BGW Kn8+750/hQVg4+d3yLo5qBaY4KXvP3KMeHgB3NU3Lzvjk8E0ulNbWZZrgh4neOKUPgNHqAHY8W NduWdi/YGVmCQ4+eDHMsPW9TOkC4ykgq1Ka4JDURtanNiLITFX5OtNxG5d/5AEbxK2exH/bmIc 7ihsECCJGO8uVlJTiqtiPNrbKdEYmRcxTsKlHlzOr+KhzK74xVXaxsYebqS/YOEgKe4kSiJI/V KpXou3FXAcTTFpQpxcGeea15 IronPort-SDR: MH/+9PLGNiB9QKCecC9fg7RF0DJmMkp/MCx6et5HxnTndWfijKt8QOtR0bPR2iU0VNvE8ot+IN /ghYHT1RffjqmIntv4W8KRV9AA3KVDPAAmx/f6XXSN4o3fQCs9rGxRaI3q4rD4ycuo01eTm91T W9TZb4b0LZpgCIHlhpGvuyPhNTNbqaU4prpu+JMkU8OY7nWjptVSk+wyb/P8J28oInG1yD7j5N gxakMe6Va4CFW6ouJV22OnffnXoE6slZkXRMGh0VWPnR+i9t+BjxUNBuVp20I/2tZvPDBCzGGg 1ys= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:14 -0700 Message-Id: <7e98057587fcb614456fddd0f5d17ab1c250226e.1559944445.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] [PATCH v1 17/27] target/riscv: Add hypvervisor trap support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 6d6fff83a3..d1f73396e4 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -605,6 +605,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. @@ -614,13 +615,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) { @@ -641,7 +635,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 @@ -651,7 +654,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); @@ -665,7 +703,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 c55eea44ec..9a1e29f39c 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 Sat Apr 27 13:26:21 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=1559945490; cv=none; d=zoho.com; s=zohoarc; b=iopoY74IfioApo687DoZs1+35UxTnow+E4DcpoD3BxD1TAjUK4Zm3mCJXWLxMHjukvjuCuyIOiGjvSwoF6LhYpEhhW+Pjs/b8gRQKS7aZluoR5FHuxKj6wL2hq+FAm6RD7yfg10ulU32xoUtl6U/vrEn83nRy5KypSaB5Evrufk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945490; 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=Rb6IXMe/hfGdEtvs+7Ld99yZpxd3LfnOEj+m3eZqTexwVZmiXtMpVw7OEzObv8ifVCTquvGJmKvcErKFpbe/VyIK72WHxsUkiSjy/yuIeMJjs4cW9FMpydBhVDfR+vXv+p7EcqCAF3Jq9M1yR+C1aesUc9Facq+kC2Xgb1ZnweE= 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 1559945490795778.5914991952548; Fri, 7 Jun 2019 15:11:30 -0700 (PDT) Received: from localhost ([::1]:53664 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN55-0006ou-Ow for importer@patchew.org; Fri, 07 Jun 2019 18:11:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48067) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsb-0004q6-34 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsX-0002FR-R2 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:31 -0400 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:38196) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsX-0002BV-JJ; Fri, 07 Jun 2019 17:58:29 -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; 08 Jun 2019 05:58:39 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:20 -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; 07 Jun 2019 14:58:27 -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=1559944722; x=1591480722; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qDL5/qlAQFtYrCOkIfH5+w4MhTN/n5JyM640ZKPXzXk=; b=ialvrKUrqeTDm4Ggw2w99bFRH8kkwVg38EEjoPH0ehSANDS+VFIgK2wl trvtcYlsKMAHAhLEfxsVSGbZUJT7P6l8dwDeFLMUuaB8T6q3xu4ZEF7Pk 2bLWIMBEQHCNBhp8UVaJwxmaXC2y2L3qVvN0RsED1IFjvVhsqsnOkIhnS 0BqNPP9xTyhNY7j4MJy3Xg3V/b2mlltEQETPXpXj7oXJE2NMiBfe03tLG l/WTO8KxIeuU7bGmlmUpL1AWMr0NVZQeFjD8w2q2QUjBpUsTh7Wf6fXL/ 5S/Epajo3y2/3XpzNgDSg0yHyN3jwCuhnIoaa12vi77PByBRiCJHxT9rG Q==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="209711287" IronPort-SDR: YkToNWuf3EZposF6k3G0YtA9V1QG3lJp6oEkAusnG8cxPwYIPnlIJRsFcrnBRHW/PgxJQJ3mG6 9hd+ATvxgVa1E3wowpLc+ysQhCUCDxymd39Yflhdp72lG1MmoYbf/5y+AyRDauio+4Hgat8yM+ uu59vdeoN5JYq7XjF+s9rQn+EgC6tr6nzORndtVYw1qDISEqcqzVhKWxr+8LtJXx7gtjqnHSvP pz4wKNzIXh0FfS/wErbLkGXU3yF8diEYLaxIPEMgriPbd2ouArddZY4dASuD94bHdZK7qFnAtw S1d/h6/kxsVqAJaYv95D2muW IronPort-SDR: K6XOMUP0nviRisQvhWO47CCKfxLr2N4UJ27pfjSsnEEHkF3higmkMISk8mttftnNNUOTJdp/S1 x8zIcmL4UGlqv81gEcAc2BStSxrcQRamudfBfLiI1W+ThbHTySp/Uk1OYSZ3lDy9soYN0WK1b6 AALVnESe/aqa6F8YcJh/5AxUUujcG+72k4w7LR9P/X5Gmm/H+a5MJNaYFu98u96W8puMRXUXYs 0qlD0wJi5UKtwHXESIFN995H+uy0vHaggYonjZ6RhajpBi64QHqeKyJpBg76t5/OTeoay2iPu/ VZw= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:17 -0700 Message-Id: <38a35baa3815eefd2e7a626aaa72f7d5f680e5e2.1559944445.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] [PATCH v1 18/27] target/riscv: Add Hypervisor trap return support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Sat Apr 27 13:26:21 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=1559946107; cv=none; d=zoho.com; s=zohoarc; b=bHXiO4M8ypu+/DlCTKgtllLc8tNcsRRuqHeva+V497qw5Lp+V+rkM7z5NZ/kzRrfOZRk59z+J7HGVVBGe5GrQe5MApc1VXHTeEMLodWygLxbPsW+bruF6BMBi65jGUVVXwDzLBU2272ELCAWxDIonsDPf7nNEpnezZHoQM6V0Vo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946107; 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=wN7kMtJQf7snHA6WwdEsejzeIiDOMvCrp4tk44xu2g4=; b=A+lKi5Z0fMM0FiMQFJKzJh+zFOv8HgSGjX5YLwJnWoRDX5LQq32ILHvGGsF6F6Anc13UhgTImAXuOlnMGd6VKtK7bGHYhU8qwA3sDK37OdKMneccf3mhEUgjVtOl5KgVFrNEGv4QZdUgHqRatsmYRnsF1iqog2acq1EGD9Q8+eQ= 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 1559946107103887.5742036632829; Fri, 7 Jun 2019 15:21:47 -0700 (PDT) Received: from localhost ([::1]:53764 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNEy-0002Qc-8J for importer@patchew.org; Fri, 07 Jun 2019 18:21:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48190) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsm-0004xW-NV for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsj-0002Mp-1Q for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:42 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5597) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsb-0002G5-4s; Fri, 07 Jun 2019 17:58:39 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:30 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:47 -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; 07 Jun 2019 14:58:30 -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=1559944713; x=1591480713; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g/Uwz4lDVLWeFKaIssKUkLrYCwbb8YpdK08EwfG+Gdw=; b=XswQsVbue+rPDOu7WGxTqMapOv7m7wPCliLhCbLDgTWKDBOjf+7zWwfr JzNDKkYJ/Dt+HHB50aAoaSOGEETxuU1gYjR4yYAc6vHIcMkjO87V9TOWJ aHMEZNa0E38LT1Au0RUG2HCXwC9T6llPSapXL5NQ9n5FyXPmlb1029XW/ xv/kHZRYGsmoWg2HBTXa0/MNfh6F8yEqF5RV1ZvegNEzJPvuF1MSzayN3 HUYMFh77UzxeXZei6HcAkApbfAfptQ6OLhCoS08LuPAjnRlae0tGHuwar kr28NLZRz35/JPnfU8Ok+AoymnA9Pra2kwkQ4X3/30kOJA/re/mbMNDEL Q==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059639" IronPort-SDR: eHVB5bLV7k5DMHDbI56eSzYyBneBU0fEesIZS1cBL0DgADTMQtOhDwEa/Zn3aYHDPTwAeW61j2 ebXapWJP87+VJBLU+xVVoD5ZvJTMcNGB7WI+WnIoaWNnAee7lneeUeZtOMJHtuFH65ZHOxyfw5 62i2dWKc0wJrS9KFDmf0xXT5BkEYtKCrERfhruYOeSc4y6AzFRYVYfc+EbyzFgSWSPQKK3qNr6 rYRgTiWM1rSO10iVpCwjSn9J8NdklluWan40Ts57YHwlNixlI53WC19GaccfDGm4Dn/E+Vs1P+ i8pMy3U6f16XYJysW32QzPF2 IronPort-SDR: 0jtIU4J3x1e0SdRB6DAcOj92+ICDAAoH3eysqBXWqGsLOrvIir7/nleMujJ2PAbEhZsCtG034k UenJ0aUq0LjYu4139SZbsXCmfYUXdmIWbotLL2NQ3t8okrNsyYD/zp/GCPe2vK46hxnZJQ+4gj k5AyFPse51OMtMsgXfMOqIf9sVUfq+smxK86JXIZHl1YsGpmt0izXVN09D0umIcoUtOpmbXXWo tsCbYfiJWZCS0E7OZicbp74r1Fxx0MgBbymQJp8ljotVWsKslLUAL3wiYwDIPoQih16RC8nDxh rsk= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:20 -0700 Message-Id: <7c96977698624556f5cfe6cc0e429cc465c7e5f6.1559944445.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.154.42 Subject: [Qemu-devel] [PATCH v1 19/27] target/riscv: Add hfence instructions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 77f794ed70..5bbf6add9c 100644 --- a/target/riscv/insn32.decode +++ b/target/riscv/insn32.decode @@ -63,20 +63,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 Sat Apr 27 13:26:21 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=1559946453; cv=none; d=zoho.com; s=zohoarc; b=CsCFU8XSa0IoIJCX0g6WReRS1mTgRSTEv5wYouYKH3HX6EihrTZolCvyHUYuocfuGRPEcsQbz/SdkNTDuL7pyFhR6+VtyMWsdwISZOLmgiwocwaC1pNqzRo5yHIEP3lyLVVAg4Qt3CambMVaoFIjRfnQ4VFudrKVmnKV/zW9fJw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946453; 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=vYtsBcGBEqMfVmkuT0fUKxiqvGarUKRblJuSKgOxVZY=; b=WIBT7f/Lv6w/CH0Derw+Im2wFiq81l2KFMO7xbHMPW8MUElJua33xDR4uqtYLuoW/fpPF+KX+jRCyn12FPvHG+W2l0cS6nJ5n+6hhRbhRKzPuBRwXVqbPAHFS4xWLZJMDY45Vc1Sz3tk11IWJFBUSnPklyuGo4KX5F8HDxRXK2Q= 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 1559946453849563.975120240499; Fri, 7 Jun 2019 15:27:33 -0700 (PDT) Received: from localhost ([::1]:53830 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNKW-0008Js-DX for importer@patchew.org; Fri, 07 Jun 2019 18:27:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48330) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsv-00053A-JY for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMst-0002W0-U9 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:53 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5604) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMss-0002I6-Oz; Fri, 07 Jun 2019 17:58:51 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:33 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:49 -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; 07 Jun 2019 14:58:33 -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=1559944731; x=1591480731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HGB259F/shx3Q5OuoB23BWIGW02KFgpdAoALdKANFts=; b=QVBE/SMxyYpCTtvNlUPtJpJVkpCNHeNSnro2CDKZEHC//A/BGbjPQ87w 1NFX+GL9+f5sS6u+exDDgWSSajoG6AjsDgFKThSUuVOTh9VF8yg4fAhh0 7WhcTF2iL0qqEN2VuN6Kuj334tHxcX73kIsluWDxdbu/SSMFLv/f4JOkT AlcdWuuSqkM+1nnWJt6LZjZAdN3JUcMaNDumWLWxqAX8QSLjTjt7bC7yN rONe+jmGyZZlBgNt8MIRvh28o5sB6MEJwzz8yBOIu5KyEnwtN0Xxxfzw1 3seYLZEREylJ76N0yNXxQ96bsP4s8VlIh8TwNMKN5aJwYHyFM0X7CEoRK A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059641" IronPort-SDR: bM4bSW2q5k30+uGKxhBvB8DdKROpy2wBYfg2AT4rZqqIBS0xieHN9Y8u1AlLPnDlFdH3VvNmWg eT7BiPNLyVdSJWf/G8I/ViMfXyWnjWqwbKdFz07uqRkSDl5hTu7YqLeDyKHCMg9sV+MKpjopRB 7Aeq6YoEaQKnBWw0p8gYrE/6sMzDnxOc1qE3qKF4BzVc/h/PI+FUbaYiaSAbploOmqSy69dWeT Suy1opLRmlxffp9d2RVKYe2B8AMDMo+bolIg5nHu6UlyLh08Ez76TOue6XjiCkrAkJ34ifL9bM w4k2MX/IzMIuioEZClsz6Iqk IronPort-SDR: F089VMV7ip1BOub4O3fwSbnqFVfM7dBEWS3ElFxblB3Zm2u7DN9K6HZy6JO2+WveXsc1O/GNMQ mrX9vMXAZqIUVwx3Kj8aecnabNcNA6J8BqWAnOe/A/Ssc+OiXyejyFLyY3nG9AvAAyE72rTaxS n9rh590kG6JfTLGE5x/LNR/wiTue/LSfzhOJ2OFSPKUDfMfZeOZlX4+19O8oEk12b3/AAbj+eg dVoqSonO1arWCll/fkaXZXOt74j+ojW+JNhEKg+pUz+YU6Q1lXRkxEWfjtlJ8fP015JnqSxMQQ 358= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:23 -0700 Message-Id: <3e2a7994e94a981169809531bacac01003c1a156.1559944445.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.154.42 Subject: [Qemu-devel] [PATCH v1 20/27] target/riscv: Disable guest FP support based on backgrond status X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 Hypervisor extension is in use we only enable floating point support when both status and bsstatus have enabled floating point support. Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index d1f73396e4..b009049cc4 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -193,6 +193,9 @@ void riscv_cpu_set_force_hs_excep(CPURISCVState *env, b= ool enable) bool riscv_cpu_fp_enabled(CPURISCVState *env) { if (env->mstatus & MSTATUS_FS) { + if (riscv_cpu_virt_enabled(env) && !(env->bsstatus & MSTATUS_FS)) { + return false; + } return true; } =20 --=20 2.21.0 From nobody Sat Apr 27 13:26:21 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=1559946320; cv=none; d=zoho.com; s=zohoarc; b=LQGJftEFypOpJXFhAIZjJU7kgWLv2Br7FRIo/eQAsxEaajW3+T2axmcMaIMwhW74PhlCVvLNbGghp+D7dkRYSbgOr0VmDPnwIYdt1MGlY5136A531lSVew4UTJ/dNkaWQb38gjIY5QarymL/GKIjfK6p+NryJ4QzLGkDsGUiyxM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946320; 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=2fuAg5NcVtEcDVpn9g2Z+kxTDAPVIN6SMe3dxELf4qw=; b=ZMm8cRbBDve6YGY/ffJZSBBeukkUqiZpszU1gQ1SbP3gtQOhChO+jyiEB/RXADHVrTqvEatNIFJlZqbuojdhoPsa51Qy+yvmwM9CwVCBSMiQow4e0/bHi3zmz2p5SwmDiXxYU44VuNB6BFApUeGC3mPUU14Tt0krPunVRQ873pc= 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 1559946320548957.557364741134; Fri, 7 Jun 2019 15:25:20 -0700 (PDT) Received: from localhost ([::1]:53808 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNIV-0005qV-HC for importer@patchew.org; Fri, 07 Jun 2019 18:25:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48295) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsu-00052u-AV for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMss-0002VJ-OS for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:51 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5610) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsr-0002KN-W9; Fri, 07 Jun 2019 17:58:50 -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; 08 Jun 2019 05:58:36 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:28 -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; 07 Jun 2019 14:58:35 -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=1559944730; x=1591480730; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=h4OgZoQXx6IFwm9jyDXJlm9YTYDfgQSDg3XxTJU9wNk=; b=lK6TngkN6SZwjm94h/dtfq75yfTqYi2fsTHHqYScJIgydyavIb8xLdhu aVVYbBrEhSZ3I19VUX6VBC3vgDkPaSkoELXLhAae+BrT5cZzqYCv6Kx0d Jx/AudBqDxs6b9/+1D2klFQaVG6cy7KJffTTd4lS4TMdn+rL2yooJ+Pgb xv5looXAaZZPk2MdqdqfuIqFR/yy5/1m8r5VNlKka+baMNJUwjiTHIIqU g7no2B54ZKvbZU3m5FqnViuP6KlCK9FuPvzcQRRwegGolE9k95G7FOgJh wD/7HYzNbATnuvhkmO064zW3zigfITT+icBB5N2Dz7+ap/BwszISy37rz A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059644" IronPort-SDR: H0t3a7X4OupLyZnnZ/4kO42uezdPlAzLuzewwLdXqcDbaV9Oriw6OaqnQrcU68Wl1/EzhV89oC 9GRTyMqqZBY77daz17Vdot9qJU7PkiUp7wxVr7CxjiijTMBN/eCiGatrrPHNiM0qp667WyvAzh lZMKfzUTVtIZDMnssDba+8QhBVuq0+AX96FjfQWoH79FYl26QQSzgijP2tFc5Av28WXCMT/i8z 91TakmTPpcOJ8/2sLBxarSwxwEQD4ZE0+s7IL2LbZ58VhoQUBGoynKghvuvDcYAatmLVyqe89A 583NBeq14qcFmeN7SDTEFtnX IronPort-SDR: 9SYEs4p/zz5QVrwbIHVcJqXHHoHWhsr4sFfSo3K4irLN/RzzwLLI2tXyPk9GbjsQOepMtTLr5X GVLel5keEPUctnyFCU1hGZzQRObL9ZZz/G9ZdfFTCVDy+MFD9w+OvDOhdfoUFm96yONBLUOJmh X/sMzAM7t6f/kcDD1sWqUsXR5tL5DDQksfa0q23cBntcKovnoVj6UaR2GCfd2oAcKlNwIfmEXe eYQAZfU1UIKG2oH1Q+LpcLsWaycv6QS4w/fxfK3zuNbTgtyBgDWWa6N9M3eEsJ7Jfq37JogKCy kuE= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:26 -0700 Message-Id: <6e4366911398500ebd5a6164d0415e26f6642d9d.1559944445.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.154.42 Subject: [Qemu-devel] [PATCH v1 21/27] target/riscv: Mark both sstatus and bsstatus as dirty X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" Mark both sstatus and bsstatus as dirty (3). Signed-off-by: Alistair Francis --- target/riscv/translate.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 313c27b700..1c3cd1c94b 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -44,6 +44,7 @@ typedef struct DisasContext { /* pc_succ_insn points to the instruction following base.pc_next */ target_ulong pc_succ_insn; target_ulong priv_ver; + bool virt_enabled; uint32_t opcode; uint32_t mstatus_fs; uint32_t misa; @@ -397,6 +398,12 @@ static void mark_fs_dirty(DisasContext *ctx) tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus)); tcg_gen_ori_tl(tmp, tmp, MSTATUS_FS); tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, mstatus)); + + if (ctx->virt_enabled) { + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPURISCVState, bsstatus)); + tcg_gen_ori_tl(tmp, tmp, MSTATUS_FS); + tcg_gen_st_tl(tmp, cpu_env, offsetof(CPURISCVState, bsstatus)); + } tcg_temp_free(tmp); } #else @@ -757,6 +764,11 @@ static void riscv_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) ctx->mem_idx =3D ctx->base.tb->flags & TB_FLAGS_MMU_MASK; ctx->mstatus_fs =3D ctx->base.tb->flags & TB_FLAGS_MSTATUS_FS; ctx->priv_ver =3D env->priv_ver; +#if !defined(CONFIG_USER_ONLY) + ctx->virt_enabled =3D riscv_cpu_virt_enabled(env); +#else + ctx->virt_enabled =3D false; +#endif ctx->misa =3D env->misa; ctx->frm =3D -1; /* unknown rounding mode */ } --=20 2.21.0 From nobody Sat Apr 27 13:26:21 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=1559946274; cv=none; d=zoho.com; s=zohoarc; b=DBjEUbcKU4WzOO4R7mJYdR2OPzjfCC7bVAQdEUM8PDSakDOIex9dOzWwRdP96rK8Oj2nxNxHi+NzL3sE5QijZ27I/aAc8kbPLgpGl3acXqPR29OyYk5XbOSxHKsgeBClSBfC2AhHYu0v18o18nh8lz7u/vFJpnUv969aZK4dk74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946274; 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=0G+yvSM5H1oiZHBVXA3NpKOUEo7nwG+QHHKBfCjtaMs=; b=Oia/0BgwHn8d6CJERmkbqLb8M+5e3kOfKhXHe3wJcpWB2C6q7TkLrSCn8kRyxoTcGZrl3W1AixGZzpB1kKECb7w0GAM/AFfci/x32bAYJaiol6q6i57bkjKD5LFcSkhSF5AuaOPdS5m2kzTsF1AhsGIiVDVZlJDM+M2UMlauHTc= 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 1559946274500879.5559208860906; Fri, 7 Jun 2019 15:24:34 -0700 (PDT) Received: from localhost ([::1]:53806 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNHk-0005P3-TA for importer@patchew.org; Fri, 07 Jun 2019 18:24:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48234) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsr-00051W-CX for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsp-0002SU-CX for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:48 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5597) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsm-0002G5-US; Fri, 07 Jun 2019 17:58:46 -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; 08 Jun 2019 05:58:39 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:31 -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; 07 Jun 2019 14:58:39 -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=1559944725; x=1591480725; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uDlmyEl8/iyH+a7PIwdMvHr7+FN/0ar1iq3TrAcccO4=; b=Kg9m4WgKKiYZxLYWMevtRSXXHzs7JYYHlWqp6LLPKKgIHLZw2gJzyBrH vhO5BC/nmY9/2iKik6ebDiARZlVp3jx5MG0tuaEBlzSgpr38xPLslCDGl MU2+D2/WQllEgEjqrJVo+xpjeWyvx3xTEqd1QC1FEMrzROr26cs5n7tOr skrCdfOFM0T8ikQCUb//+g9RyvAolFfhFlLGpsB0ueZJiEzfyXYhK3v1E bOuiH0t22wWaOsjN82mIwT7mPaHVsqy5AcTqnwtLufW579HkyLAGJMXzQ uXzDN2LLnWBS7jpHPagSzsfTHRWPu7Ep9TyqXkVHY7O05mp9arB++Xp+r A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059650" IronPort-SDR: ZgAqnItII89zxnu94ZEh4GZCO8GxZDNMu8i54sUaaMiFH574c7nOyje6FrwxX6syVGkJj48CJB PcffX2bobHzkHvE2b23jveM6DQYhfduAw/OTZohJp2Dart9O0WUJJvNrTkFyfdnhESQtwR3JPp qR8gTfJ612bsxrjJVH1mCXpWWa0lgIwlXAyqwvi5nRX2wBD7lnrP4EL/0iwGNzk39rYKNAsrXV if+m3bd4yTM+8fdBHdDgcOAHa+JwzGsdxcKjLKTBdtyJNmqkwtSpzZbbxg6IgE0oQDgbi8PGna rH3gRL6McP+WWvIoItSfdWye IronPort-SDR: 9ojSvJkkTuW2yyR2ktj+CMPmT3xUGvoWl3WnoCR92Izxnu2vnla4M24AqgiQshUqe6SMTEvVBv WwuEaCKf26ym49dfbUcSVT8UAcfnNEaeL7iEroclnn9UOAzfFgEI5W3CWgiQF4DrkjEzntpM0B OUrEy1zC1D2ZTymRX2UNQW9bcVvZcbYu16tbHkGBhwMaHeRpV34L7ijqYjjSF+LLBEFdljL3hw uUmhMQ0ygqnriG0vRivyY1p5QUZXKppc1WghBsYm1eKQjRLI5IntjCl15FtaSoMTBdUw5gamxy Ep4= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:29 -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.154.42 Subject: [Qemu-devel] [PATCH v1 22/27] target/riscv: Respect MPRV and SPRV for floating point ops X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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" Respect the contents of MSTATUS.MPRV and HSTATUS.SPRV when performing floating point operations when V=3D0. Signed-off-by: Alistair Francis --- target/riscv/translate.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 1c3cd1c94b..d4fa7d056d 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -765,7 +765,21 @@ static void riscv_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) ctx->mstatus_fs =3D ctx->base.tb->flags & TB_FLAGS_MSTATUS_FS; ctx->priv_ver =3D env->priv_ver; #if !defined(CONFIG_USER_ONLY) - ctx->virt_enabled =3D riscv_cpu_virt_enabled(env); + if (riscv_has_ext(env, RVH)) { + ctx->virt_enabled =3D riscv_cpu_virt_enabled(env); + if (env->priv_ver =3D=3D PRV_M && + get_field(env->mstatus, MSTATUS_MPRV) && + get_field(env->mstatus, MSTATUS_MPV)) { + ctx->virt_enabled =3D true; + } else if (env->priv =3D=3D PRV_S && + !riscv_cpu_virt_enabled(env) && + get_field(env->hstatus, HSTATUS_SPRV) && + get_field(env->hstatus, HSTATUS_SPV)) { + ctx->virt_enabled =3D true; + } + } else { + ctx->virt_enabled =3D false; + } #else ctx->virt_enabled =3D false; #endif --=20 2.21.0 From nobody Sat Apr 27 13:26:21 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=1559945255; cv=none; d=zoho.com; s=zohoarc; b=oOsehqMRvIVvvCI1hAb9NQRHR7GV17940kpzFon8UYPQ8tJELnpuZTKUW3TQtDv3euoPrFpWnzYiM4V6ExqIaHciA/Jck9KRqQOa/Co/NZjPqZoND8v2xLJmWeHpAK58nGqq6zZ97QBU/1dccrrTEsCVWtTQNCu/vcssjyL0WFo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945255; 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=23J+gCPFu1cXPsTnhQ8MDCEch3Cr5AYNcf3VyoW5d6c=; b=VKk7AnGCJdnr0MiTZ0IkLXb5GplYIZsxAxWdLdkvIiKdH5gvvjfrjKj2YFBZ9ERnnCJcSVVHMEnxSu7Xp69OW2+7Yo/HlP0RSYXeGQX6PL3viOaGOy6l3PbqNhqkUzuGs5k+CKLx5Asqs/62ADZWx6BsHASIxEmViah0l3KMuys= 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 155994525546961.025000424473205; Fri, 7 Jun 2019 15:07:35 -0700 (PDT) Received: from localhost ([::1]:53634 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZN1K-0003Pl-HO for importer@patchew.org; Fri, 07 Jun 2019 18:07:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48299) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsu-00052v-B2 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMss-0002V9-NY for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:51 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5597) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsr-0002G5-O8; Fri, 07 Jun 2019 17:58:50 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:42 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:35:58 -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; 07 Jun 2019 14:58:42 -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=1559944730; x=1591480730; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GAd8Pdkdd2gP60Ox3n38qL1ErxsbarXMnIrxQl5gUAo=; b=Sxn+H8DbK5b6b9/vOhDlXF1uNKITOcI1Fv6JSQRR3B+NqSgVpa9DEyQR DR5PTmlN/5lhs86lc+0km0uuo4CKJc97MaDXCdQXnPeMHKmsQ3yso3M77 5lY8xC8JxN0Oan2kwVFPhRt04qggUEWmKB+DBXut5BW11RH3BRqH09Q6Q fUpzw8+br2phvyP1z3IcT5c+Jw/LSfzFu61RvX9jnjFTVwXU7nUsP1CHz Ssy1cuy1+7OrfDJ88HoMtr5YiJYnSn6MGSsEmYS71m2NpRksAk9TcKImD oKQ3XU0oN4xkx3l4SHWTk0X1DNOBuLP193Jh5gxjZvzm4yEOSjADHWsV3 w==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059661" IronPort-SDR: a8+Y8jD9xQnOAYrunHc0MJ9KdwcZLAKquJ0EmgaKgL6o/0yJD58rfZ51W7+zn2smGTIBNnVYIf Um8igXwNpq3Pg3WCAzK0BF8zDGK1NEebjC50Y3VjHYqQ+930B5X25QgyihNU5DU7RYFvZR6Ez3 hyLwwXL+MTsNtyEZxGtZykTHpmH1ECFucaucKxbTzlq14vUjzHGuiR6FsnuEC4wOA5FSR1dKty jo93q8rmjHm5BJo+V6F1rMlZ9S87ypiMQLwriwcyRYCun0eMK//NfE8fb/r8uo3+ZHGJvu1Jq2 An2RAG6qHkg0lqdllSp6QiLR IronPort-SDR: iM3ptF/s0Jc2AkEpN0lekt7COzbg5/88I79/6yarEaPTYS2IrAZ9edi5SJCQt7KSIQ3wvSCK8V s2ezfkz4d54Joz8KBT3aiNlgEXPWA7/jhhS7MDMbrJ4tCLqFZcdKvlBQcqH9WVQ+cQXifus93d HER+hxZyOjbmytEQikEy8pZ40iAU7543W4mDncYmNqy2TsuSb2n9CkYpTfXc2DXDW7fXRh4GDh uQsT5mS669qQlQlOpa7AyRcUHo7cXjuCZ9lqPEW9NbhHNHLFTykY9iKjyUIKsHHZZ847X12wkP Esc= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:32 -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.154.42 Subject: [Qemu-devel] [PATCH v1 23/27] target/riscv: Allow specifying MMU stage X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 b009049cc4..6cef78a2c7 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -274,10 +274,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 @@ -468,12 +477,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 ? @@ -500,7 +517,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; @@ -560,7 +578,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 @@ -577,7 +596,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 Sat Apr 27 13:26:21 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=1559945941; cv=none; d=zoho.com; s=zohoarc; b=fV1tXmtUQTGTAwqtP6n5+pYtubx/EsWIoD+DL708KKibHpAOSBTzPxa143R/nKIfIZ2XBn7V0Au1Haz+ll7pRaSeUkpthQPpPntrH9T4/yRgDs2V9Ia9wFrt+KLIP4RMd91Nj6H86GkezG787ORT4/O5pwAUKfBv1DB+7dpiLM0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559945941; 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=HvQKlh9hWSeBixbSppGXDuR1sgfqVeRF9UG+wUlp1M4=; b=ffKJ6MYybDq3NNmI8VcsH56PA8XwYHV/lDfx4cM6Ix8Mz8y/qCiBXmmKrejZBXAllmkv7i9iXKECKDnIMA/M+VeuzSa8v8KVjqmscCGq2hkOF1P640Z4eXqFnjYhTETgELyv5F5sCZBMnlZph/VZpcpAEbdRdigZydUuDZ/r0cc= 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 1559945941116821.8510707837963; Fri, 7 Jun 2019 15:19:01 -0700 (PDT) Received: from localhost ([::1]:53742 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNCO-00089k-5r for importer@patchew.org; Fri, 07 Jun 2019 18:19:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48361) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsz-00054C-0T for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsv-0002XM-B9 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:54 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5610) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsu-0002KN-4n; Fri, 07 Jun 2019 17:58:52 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:46 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:36:02 -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; 07 Jun 2019 14:58:46 -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=1559944732; x=1591480732; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yfOrawReFfUJUNTNIv1wqu+JtyFGHtPJ0wV6mrKafaI=; b=PDmDfU5aPwgh6jLiyaCAj5AmBobTDlfJlxnXi3JqHh6qx0HocEiYZmZ1 af/33sd5j6oxLEL0fmaChMEkSU9OZPH5aBsWOS+7bdvFPInkl89a7Fyl8 OvjBFZpwgTA9akxlhdXk4twq4NZLLUGCPA1Yd8xMjDWJunhH6U7+Yl+JH qtqYtyNWFV80Z9QsFOvF+QxsnHj63ZpMW77GTaEjuSHEB1AGEuqHb1boB PqUHvsyZqw2o8hgn7GD3AztUYn1UNiwh6l+K9yUzGmzRn4B+1I1jKQ4GY +kBb+unEjW1d55gNH9vKKfTrUcszoWgLS1vE2KvOU11fWVYS/OGXoeMsZ Q==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059665" IronPort-SDR: uG6rXqOqDzUC62WpxU5jIuvAK7HHiApddtbsUirRID6Pja7I6ZeQ2iwqIYfWOo9XAMPZ/VLnXk m5QsRHRBaXPSm7NlPOC2ADi8q7ifvt3NPQJpGq6phFUwIO6QQFDnvEq4GjtlhaFbDqfJuWtmWK Vvjwyq6GpAbUrq+G73qkhjacylcN8/zj3+8yThwJnxXIDbWRm6cRDMBPFvYoRzcBGfuc8AMpvi npV85GfXpPYBXhGg8iT+Syuk2R9MhxxU1qpRWv2mb9CIlLTAQH9cQbumdfsZZ3CW4/VQ00/Ijt oGxT8JunsJFgNtqLV+65rfCI IronPort-SDR: 9WqUcSjLOPrI/OeEoUN+IFutjo+S6bmtohoVn98hakj/UeLotHZgJQhNzEEa7rPTKyavFBfQpo iEvFnKHW5lW5KrHW2JY9G99icfJjqo8lFD76qLUHEPZQuQ4UUKFltpInsNbUAf8xZupGtVoDJH DuM4byXURlkzL6JqYlgu4PsWMcbNmbnORHj52/fz8mHBiXjSCNNSdCDU56uG2MUKqaYKuJK/pJ 987GQaEzev9H0TtJu8Z1NmcNTLJNJo3SWMYijLj9FVrnF99gsl15oQFh7Uw9ObaFZaHUytOF+Q atE= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:36 -0700 Message-Id: <9c5428112ee1ecd12de27a0d95ff08f9f9feb428.1559944445.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.154.42 Subject: [Qemu-devel] [PATCH v1 24/27] target/riscv: Allow specifying number of MMU stages X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 6cef78a2c7..6ff4272da2 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -286,7 +286,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 @@ -518,9 +518,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 @@ -579,7 +580,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 Sat Apr 27 13:26:21 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=1559946562; cv=none; d=zoho.com; s=zohoarc; b=lXugoCQavVPoxeuqlEANql/mEd1jjttT3PTDfdDrIIqnlTWD+/qambaLULuNzZ31MICItMvpjMZiQrQtM3TGiGIKCtD1szvC3OK4ED+rJKkJUw8KOMrxUr9YPhF5pD9ai3hgPym7GukX58ur7UDHYOK58P2R9pEGZJiyu6MXftI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946562; 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=bsf0U0ezySVwh1xH8Zx+4bYoz0iyqddsraeWiG99PX8=; b=MachDNTLF/IMBStT0koM2U/T8ouEgWXmCD2HkHDabc9l2uXCFZynIFVzSLM65pY9vjTuHw0XH7mkKHZEUyhi9O9cRXE6Q0AmejUnY4zqUkxoQFHUuFjp5iJiwpFuCnLMhj+HqsbR9czSb4s/o+pLWlA6Fd5kLyarB5wnOUCM46w= 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 1559946562038205.6905104840439; Fri, 7 Jun 2019 15:29:22 -0700 (PDT) Received: from localhost ([::1]:53858 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNMO-0002TZ-Uq for importer@patchew.org; Fri, 07 Jun 2019 18:29:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48366) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMsz-00054D-Dj for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMsv-0002XS-B7 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:58:55 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:5597) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMsu-0002G5-1Z; Fri, 07 Jun 2019 17:58:52 -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; 08 Jun 2019 05:58:49 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33:41 -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; 07 Jun 2019 14:58: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=1559944732; x=1591480732; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jHGWOrI3wGAuNrgENIk31N1AZBJ2yxH/44gojLgYEe0=; b=Cd9/7GeiGT1Rro6ucqCQXFen9gjx7jwrwJxFWGaNeIdER5gegpXm/39k 1QPxyiczTd5BjoXC68feQu6R6a9xX0wvgF38Jt1qCIbbXF1x5GPmwwaPl EPhQP6f2VLL7SK6DQCf4BHK2sKJHVR6lhINjlREfqzzCQQ9+SMwdeS0us EbA6KCIOedZ1YogY6rbbp5+4O9ScDyHGmVwbgcpMfjBAyRVYUcvGgBhyD +MHurWhtUtLaAIykK2EEFMLOkMpA9w1VxR8DVzvYbMnJXwKxYWPMH6Gn1 5ckDsU0Qi0HLi0TxHYdFCnYnZ8dEyNt+N9X+VJEKHz3jOYG7AWqGBq6Pv g==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="110059666" IronPort-SDR: 7vEV49g4U+GO31vmUpVDrRgXO3LleKRHhyw54efXFLnV2Xv/V+Q+Sh32eWOfalN7gUH9aoQpDB nyjz9svDGNo5d80Z7HRvfVO1T7RXubdnYdvyp83U37kRvBlwFblIhTHTl52VBnYBJc+YGH1aYC hpIwAB+XJDmj4utETxfXPUp6TWlpRjo7JChGSMX6bXC8O/ET2tJbkYY5ylBwpKZCjnniWXdkpY fwJoCsset35uZhAOED/Q3kxx5xUZYn2dfWGgz7EjGlTow4eKr6m8l1lwGZZVY4UPPl41DhxWZC F8i/rqJB5EqImnKK7cpylO1Z IronPort-SDR: JImqDUV4gruLoVhn7HwAjSi6DM8y9q1XWgoQOGRizpaaIu786ItgVRKa+WhiIJ/V5D0C4iwRx5 QJ16vPen2ZgyVPlq64hfzoSp3jJG0WDKLFwHsjQUhgk1HW/9DLXYNzFlctLExcT92oWQqJaKY4 9uQJHHwYr06qg6NHj4gbMscQ8mVi0z1kGhMgFWram+1nqsKp2T8fiFPh0uSIF31qEAR5+osnUp VVwMJIkOmlrrnwrS7YPHqt7HKbVXkQLtB5kI+94tTekTuWjJ/crIOIjnHFfZ4x9lsCFNlEAcuC Iyg= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:39 -0700 Message-Id: <881efba62177d8c2de53f264613eb075b2a904de.1559944445.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.154.42 Subject: [Qemu-devel] [PATCH v1 25/27] target/riscv: Implement second stage MMU X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 6ff4272da2..ece3eadf66 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -293,13 +293,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; @@ -309,13 +336,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; @@ -333,6 +377,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); @@ -353,7 +398,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) { @@ -367,11 +412,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) @@ -457,7 +521,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 Sat Apr 27 13:26:21 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=1559946503; cv=none; d=zoho.com; s=zohoarc; b=DCvzQVIr9u0D2XHqYZPl0gCUMEp66kw7mS1I8wFFBZ+7OYvn4r9kYkDL0Nsqqt22o/8tDYEBlzh+TpXjUHqc42R66m1pu7yynXbO2xHsgjLkjj6l5phK6FYyMJXWygnSKUGQMupq+b6RMrm7fTt2ly+6bCEX42TUOEPBmCF3f38= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946503; 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=DBGiATatJI/BsDyIhR0+QO+e9vszvQ/Hpih0L/1lWv0=; b=IHcVIdfjg4BLz+TJfgSak0E6TF4dMpGezDuFgJsrcAML1b9HdMLSGvGycaLTqt9b65ypXVIm/Be6m5h1sanUZHeBz9eVU6msU6OGNynCajsnE5xIUHCTJHauM5SL0w97kO5U6idwk6YjuwYPEvTBTjZs3FKEyH916hrIQDc14cI= 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 1559946503755791.9617625660037; Fri, 7 Jun 2019 15:28:23 -0700 (PDT) Received: from localhost ([::1]:53832 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNLN-0000hs-OJ for importer@patchew.org; Fri, 07 Jun 2019 18:28:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48518) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMtB-0005Av-8L for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:59:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMtA-0002fN-1n for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:59:09 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:27163) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMt9-0002eS-EZ; Fri, 07 Jun 2019 17:59:07 -0400 Received: from h199-255-45-15.hgst.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 08 Jun 2019 05:58:53 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 07 Jun 2019 14:36: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; 07 Jun 2019 14:58:53 -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=1559944747; x=1591480747; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=N9MZWMpwXoggYB9M8lpugWwG2Kp5spU3B5Fv+B5KyOU=; b=ZO4sBoM78uKf8bew2RY5ZZSC1C5/y+Usn5lt31F7J/ScqjWWP6hNhZEc pYY6/1M/ycg+idHLqwUU673PBEmEtlo5O+Y/BjBH1slzMhxf9pdXd8T9O jLG3b1aXgjeThct/melRBrK+w1W2pGwuqk0jRvqQoz9tPhNPaAHIFT5N+ GRUitSjRiA8/aTWogYeSPkPABprw/xzTIm7KnnbTrj5+ppukIzWu8hGI9 PWWpbZfYOdS21bKBJ47iJVZpZn+zTyodEmK4oR71+vC18B+w47nTy0wXq YnaVpqDfXeUDXsPgKjZbtWvNT7Vdmv2JVI3hgi7r+Peaifg6FKB6IZwBA g==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="216378111" IronPort-SDR: 9sOMxpHKvFvskWiS3nH4EMTwoESP5jOOCo7IbbgQjOTas6+ovS9dIwxDZMN3BsINZ322HSAYAC nJQBXcb7zZdyU+G/R7nnZpk1vcnTTY7CWajQhLkwmOMaoJAoXGoVkP6LdcQQ6dzM81Oj4qbwGK P9b7X8phltXseC2Ty4M4OHCXIEddPzoqS9n5aUFJbn5eyyE1Op0cayLOyRyR4YLADQa0aJyQrU yXLmTLWXdOn29zA0ty3PBnm6vq4uwfB8+bZH1BgZKkDq2SJUBh/I49VosknFSuY4qcm/elbyMN nvp9uje3cAaev4J/VpZn0OmV IronPort-SDR: CE3fJVof/5GDSr52x3AK56FS1t2AZJsoqCPWKyDpOine8mjHsBz2Dtno42b9arWfivpaADX1Dh 92/kQG10z8SOE2h8y15PseEfKN2g77LC5lQ1jDzzoBGJaeAk9ks/GOAdM0rD1mWQMcgoUY4rmH EowDDvf/ymTbiavJMW/ULNKVMvLD2Vri87ZM1lhgbeSOv/VmdQJaixsqZL/a08YyRt4IsQl6M1 3diKLiczClwvBZo2/VJ8xqbBN6vQtvHTdgaBIE1zM50gCbl506DB+m9y2B8scCKdE50W6LpvQr UOQ= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:43 -0700 Message-Id: <37e3a80ef4ba355fcaf1cc762b15ad96af8373f9.1559944445.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] [PATCH v1 26/27] target/riscv: Call the second stage MMU in virtualisation mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 ece3eadf66..023368c2ce 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -582,15 +582,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 @@ -641,34 +649,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 Sat Apr 27 13:26:21 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=1559946107; cv=none; d=zoho.com; s=zohoarc; b=fb3d4dshxsYS52SxRzBqayiZiv9O/aU95hFoJMBjaIjtXcWYvqv5U8VNKH6GHfXtXF2IbUE53MPJSHaYMOcx4q4jHLc8E2kZmfsiuwlBLmfkw7I/UAiUsXB3QJTH7T+4C5N0dx5mCo6oNMocDKkdbClO2OM5AJRHkoGv4AEJo04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559946107; 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=Fo7ccROSFxQwlWa5uppifc5uqsI11r/vYmKMF9FBg0M=; b=I2H6I0qLt8ExUZCEt2UuGEmQSOcsFVjj6wHhYRFR5tvh+fxlYO2YIdj8KQWN590LmUttx3dGD1Ldk01DAzgt/JvVMfGUK6LNQ2LqN0awvrglANQW6+oIIqcTZSFetlhqwEZksn8N+qhpEMhPNMErtJ+OHRcf5TVqQkP5uSHsBJY= 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 1559946107223787.2287724496942; Fri, 7 Jun 2019 15:21:47 -0700 (PDT) Received: from localhost ([::1]:53772 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZNF4-0002c1-7G for importer@patchew.org; Fri, 07 Jun 2019 18:21:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48449) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZMt4-000561-IX for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:59:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZMt1-0002bl-Gl for qemu-devel@nongnu.org; Fri, 07 Jun 2019 17:59:00 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8524) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hZMt0-0002Zm-0m; Fri, 07 Jun 2019 17:58:58 -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; 08 Jun 2019 05:58:57 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 07 Jun 2019 14:33: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; 07 Jun 2019 14:58: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=1559944738; x=1591480738; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=J37KwDGOi5pY/Ftm28bdrS5FkijI2Jdfz8xPvHtNcKY=; b=cDkiEiecZkM1sQ24rknKJYNMZlb90bIFmZZZV+k2REiwpTaczFMlqieI jCuRja6FWluW/c2C2tbcbvQw6wSpXQ6dtdDgQiajfywmiDgzKiNK9CRI9 divVjnxIOZWiHGv+hkyGpgiYWUxZ2Vm1JQbFtrnE5voON75nXO4QusYX+ AHfYDsDCaguk+q9riRnGlm+J+t7mp0xb5YNrb/q7SAkIN6/xXzk+OA/Wl Q1+6r9tkdhSl1nQnZITNFOvPZ55oA1am3hxSiiVMk/hEvHI5VpMVH3Z6D WnYa2zhYOmjwrIaKJ57GTgPlAx/gwIqVB/UPaFLPbIceAiV2sfTq4i/Cd A==; X-IronPort-AV: E=Sophos;i="5.63,564,1557158400"; d="scan'208";a="115014142" IronPort-SDR: 9YLZCnyrLaDN25VkKH9zXakSBWTMyhXtzVt3dQBwZQ5MsyzDiyJCARu53zUgn0qFh90qXk5FtD c3AOyYInAVgbJwaY0+xW2Byk1fdId92ffsETmF5ekBHvDr/Oc3n3KDY5LIcalYr3VqUxG8OyEj ame2WNimVeSHk1gFFvVY3FKonNlthAtxLj0EdCakxKo3gzDQEOQy+fb0nU9XeKldiVV86Qbo5v ZWs7DC8lnfyZRKr51tV1OaoyTyNfOenF1i06dkC6sJZB7kotgkIXvjSe8RkCn7w5X/HIMrxsuY q/Fz2gvWsm7WfwbL3x3apgJr IronPort-SDR: plml2cvWT6z3yKyoMu2b4rUTvzu/vPVVMTIf1LRZmbSeKM2Il4GfH0wv9uWI/8VBl9wVNPtY3t ji+p9a5eByZEGPwtvwndoeOGYJLslceRA0v1q9fQlpn/4TI2ha9eh9T42dlgvFJro6N/vLEtva bkLiqHay8oHEB/Nrsle4uEMIjwJMtrdatJhEjMRtmNGSVjlTHIM0/mqHMYehmU7apRB5YNGrIa cpg+hlPuO7PSXnR+Opf5jeHpQzEKRQvzFY3SzHNK18JdFJbxga4Bt988POzThyzhX8EJ09ciDE z+k= From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Date: Fri, 7 Jun 2019 14:56:46 -0700 Message-Id: <77ba193a34b10576a6f3e6fb9bb63d35b3617732.1559944445.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.141 Subject: [Qemu-devel] [PATCH v1 27/27] target/riscv: Allow enabling the Hypervisor extension X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 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 6111f0f0bc..38583e7a6e 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 5b3b32dbbc..342e628379 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