From patchwork Sun Apr 26 16:19:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283941 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52AA0C55194 for ; Sun, 26 Apr 2020 16:28:47 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1DF2A206DD for ; Sun, 26 Apr 2020 16:28:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="DNrXkdz6" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1DF2A206DD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35170 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk98-0006Ze-2N for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:28:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44322) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk7t-0004MI-Mt for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk7t-0004Hi-BH for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:29 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:30871) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk7s-00044e-Pe; Sun, 26 Apr 2020 12:27:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918448; x=1619454448; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DWjMKGibQ+1ekQOajyn1eeYpIJID8nQEgbnZxxYs37U=; b=DNrXkdz65Ft8L+fiETNbIr+HW03i+jcSHIm49bvxZ4b4yQP+Ct5uRnSN lxGsLEeC+GUOC6G7VPAQDYfn4KggBcxXLn7K8RWifa/PiU3f9oyN5CWRZ 5UPW+2QekMtLGhNOoyyL/9LLNJ0w8q/pRvx0sp2k46YMckJBUgEn/SIT3 hbeNvHjCrd4u8JGgwQCvvt26CTIvgXR6HljIQIiykCZPCZO8cLm4tty1u AxT2vH+8yUp3OtsjBEWxcxQuGG8bVAXRjvCXxr5AlRRWR7RIlKqcL5NBo AJStrlISoILPJdM+ljPvCRQ7kqmYnPqbA1HqwLSIz5VU060Eevr0H0JXN A==; IronPort-SDR: r0MnJ+FE9Li89q0JU4wwNLeLqX0fUF1SYBEtFvXGXqjZunqga5nZdKI6LNKQa2CyvyPWprPOZT vzS3flOnCZtHhIvh5BYEnAdSMLzsQffYiD3reqvASYlEFLFUfNQ4jkAIqe01sMrZvW+HKrrmDX QB6//WuJn0SyUfnmZC06u4lV+jTo6zlbVsPKMcTnqhjvfS3v2FFAV9zaTZVuq84ovxuGFioVXP 67YX+zA6GFitvKjTWX9UwjzGlsTiIzTwkfCK4KzCLbYVquapXgRkFXv6GHYyAE+0R9wDID1CNF NWo= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="136193236" 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; 27 Apr 2020 00:27:27 +0800 IronPort-SDR: 9FyCwXhaLW6G8MGHEz7oRwmapjp8NBD3tQj/zNG9mz/cIxADrrIls95NQJFPxKZen/ch6sTb/G xmVxCbb13S4LOUNNTGS1f9sAmrtnjRaH8= Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:17:37 -0700 IronPort-SDR: LstrtwSbw/bLUwrSBVx8Bz9cGT1zB2IRGhvmuvouBicWkjKBo1XzL4Y2SBxAT/Fdv8uuPazBGw AKikpW51UrQw== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip02.wdc.com with ESMTP; 26 Apr 2020 09:27:27 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 02/15] target/riscv: Report errors validating 2nd-stage PTEs Date: Sun, 26 Apr 2020 09:19:16 -0700 Message-Id: <416aa978887e9f86307616189207a5b015f8e82e.1587917657.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:21 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.42 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index ed64190386..0d4a7b752d 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -456,8 +456,13 @@ restart: hwaddr vbase; /* Do the second stage translation on the base PTE address. */ - get_physical_address(env, &vbase, &vbase_prot, base, MMU_DATA_LOAD, - mmu_idx, false, true); + int vbase_ret = get_physical_address(env, &vbase, &vbase_prot, + base, MMU_DATA_LOAD, + mmu_idx, false, true); + + if (vbase_ret != TRANSLATE_SUCCESS) { + return vbase_ret; + } pte_addr = vbase + idx * ptesize; } else { From patchwork Sun Apr 26 16:19:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283939 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A48B5C55199 for ; Sun, 26 Apr 2020 16:31:32 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 72C1E20700 for ; Sun, 26 Apr 2020 16:31:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="KwgK+91W" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 72C1E20700 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSkBn-00037b-DQ for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:31:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44384) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk82-0004g3-RZ for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk82-0004WW-8X for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:38 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:33799) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk81-0004Lu-MJ; Sun, 26 Apr 2020 12:27:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918458; x=1619454458; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SNPqdx+w5gimlKtZRUjlEdolMCX+BsbkFGAwV2LHuFU=; b=KwgK+91WdTZbnQcblzsW+oPbAONtD9OleuPyCiMOntLQ921nEjHFTmjy k8n3m2St56d/0DLNUUMymGMAqHHNALpbeuejHFlqEpWMj9LDlVouHiq9d pUGN4wBicqeuLC57+VfWQ3oVLc/OIEtxOHIVLLWBUrUr2tEIRG1/L9T0X +lma3Ctb4OUI03HNvUQ1VqUt/AfX2Oypg1BuJklKuzeoRYPDakqF1gAxi dTARkEm3PtEjWVrywJvuz5X4pVA9e99NIhFFr0o5YigPtgQCxJMZaWyNs 3qB2pDOjb9QTS7GVHhCjEPabxXZR4UOXKldgmcTh/1HZ1fmW/ZZn27gvj w==; IronPort-SDR: +FOOvhuv3rJ2gEnE0iFrolOY1mW7jkXjeMqD+49Y/xrQeGoc+ghIWD7u1xNWiWHgQXjEjwfGF2 4H0UoBEDYzh97mrrs8CsMm5WUdfXpi2hXqE3qLObkxWlbbF4BuIrTvi/jARGGugviSAswnRXHw pNCQY1sP3LhsMQWW9LicU9VPCuapAjhjczA/EeaykF9fHA9SSMZxwpV7pA1OdNoEuMvHBFelPH 2Ni3PaXqGbROei8DOtjlNudZ6OYAlafoECFxmise4NJOdy9mZbWQKrfclf3wJQ/DUSHaioMZVM HAM= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="137626674" 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; 27 Apr 2020 00:27:37 +0800 IronPort-SDR: D6GXHfKLaAGKe68MTHqU8wGILDqrRCuuiCr8rI1e98LAR1xoOWEGAiThQDXivKaRE3aj3JRJtb vJZ9gGgRUTTCa/YDbkfDipmt8/DmYyRj8= Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:18:19 -0700 IronPort-SDR: OS9xMFmjjTKnWZ2rO50f8f+DXqMsu88rHKweqKfW/xjy5uC9tkXzx2tPTKvA45iXHHaU1rPM53 vQoPawoCLe8w== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip02.wdc.com with ESMTP; 26 Apr 2020 09:27:36 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 05/15] target/riscv: Allow setting a two-stage lookup in the virt status Date: Sun, 26 Apr 2020 09:19:26 -0700 Message-Id: X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:33 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.45 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 2 ++ target/riscv/cpu_bits.h | 1 + target/riscv/cpu_helper.c | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index d0e7f5b9c5..e44a7a91e4 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -302,6 +302,8 @@ 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_two_stage_lookup(CPURISCVState *env); +void riscv_cpu_set_two_stage_lookup(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 7f64ee1174..f52711ac32 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -452,6 +452,7 @@ * page table fault. */ #define FORCE_HS_EXCEP 2 +#define HS_TWO_STAGE 4 /* RV32 satp CSR field masks */ #define SATP32_MODE 0x80000000 diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 0d4a7b752d..075675c59c 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -220,6 +220,24 @@ void riscv_cpu_set_force_hs_excep(CPURISCVState *env, bool enable) env->virt = set_field(env->virt, FORCE_HS_EXCEP, enable); } +bool riscv_cpu_two_stage_lookup(CPURISCVState *env) +{ + if (!riscv_has_ext(env, RVH)) { + return false; + } + + return get_field(env->virt, HS_TWO_STAGE); +} + +void riscv_cpu_set_two_stage_lookup(CPURISCVState *env, bool enable) +{ + if (!riscv_has_ext(env, RVH)) { + return; + } + + env->virt = set_field(env->virt, HS_TWO_STAGE, enable); +} + int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts) { CPURISCVState *env = &cpu->env; From patchwork Sun Apr 26 16:19:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283936 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7D9E8C54FCB for ; Sun, 26 Apr 2020 16:36:44 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 480E620700 for ; Sun, 26 Apr 2020 16:36:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="iXiRGLOU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 480E620700 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35898 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSkGp-0003mq-Dh for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:36:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44418) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk88-0004vG-Hh for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk87-0004fV-W0 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:44 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:33806) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk87-0004Yo-9J; Sun, 26 Apr 2020 12:27:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918464; x=1619454464; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=U9NW71QBtaBT2C/c8qX+ZhjOWiZi+R1r2IaxEavGYjI=; b=iXiRGLOUOn/icu0mtfvfCClOszUvwHPgVnvgA1HVFa3eIEJoG6Y3kzPL syjuwS/8DQp3p+7VvxojY5z4e/wHG2/+SqZ1S982GLvsC8sa1L/fHdOdl rNYEEOm7kgC07J/CGedvCZ/AKubQKgQIhB1xZzL2QxoPZPZDIWlpQRTh4 EFmgwR5kfuZd+EgsgK3UTEoiREZ548Rs+Q13xgbenNNLPKJ2jRgn5qohj f3vWwOiQl/6JRKpnSH7eRqF18f81kur9N0WyMuxgudmw9J2ZODqswCu8R sv2ih+qTfdyI2ho4ImpvoIdGwSZZw+zIewaSU/qGHwu1BWYn4yMcsXDwo Q==; IronPort-SDR: P9xBOjb6EUMnwgrrtfjTr73OhNOOGY3DPIpQf51aSqKgEqwLX61BYXqNnlVKmC2KOmjpSsmoUI 0hmFsdu++DmmLXj39VTH2taXY2G1qZ+9whmpodU/jAo5ZaD4rondgcDfSfQLk4kUqphzJaZNiJ jOeag0bIriWPByXs7VlVFHK+BOOvEqzwJMkCSjLe5tkzYlmdP4mJFwota2GZqK4WVIBeKI8MGS t17zOAHDYnB+MjmM918F0d1KKrklPK8MEi5oiBjRoc7vOokFxyEJMNBns+xhxKqiCn8RQv6g4I bxc= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="137626678" 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; 27 Apr 2020 00:27:42 +0800 IronPort-SDR: h0ln9wSw3OvTdPsgM3d4FXT2n3w6rJi1XyRGi23AJxHgxyuCSQwwolWjuiPwcBEWd21J8oNsou jNXoyHBfrq8brH3CwEVXQ5OHCEb8HmNLk= Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:18:25 -0700 IronPort-SDR: 5gFv1QW0g9vV6pmVOgE2xBzPSx7ESy3gcvOaBROlG20RaxiPNoqT2jpCDdSHijiTpi5/gW8BCf Cn3pKhqj8NAg== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip02.wdc.com with ESMTP; 26 Apr 2020 09:27:42 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 07/15] target/riscv: Do two-stage lookups on hlv/hlvx/hsv instructions Date: Sun, 26 Apr 2020 09:19:31 -0700 Message-Id: X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa6.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:33 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.45 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 54 +++++++++++++++------------------------ 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 075675c59c..2ac599505f 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -340,22 +340,13 @@ static int get_physical_address(CPURISCVState *env, hwaddr *physical, * 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 (riscv_cpu_two_stage_lookup(env) && access_type != MMU_INST_FETCH) { + use_background = true; + } + if (mode == PRV_M && access_type != MMU_INST_FETCH) { if (get_field(env->mstatus, MSTATUS_MPRV)) { mode = get_field(env->mstatus, MSTATUS_MPP); - - if (riscv_has_ext(env, RVH) && - MSTATUS_MPV_ISSET(env)) { - use_background = true; - } - } - } - - if (mode == PRV_S && access_type != MMU_INST_FETCH && - riscv_has_ext(env, RVH) && !riscv_cpu_virt_enabled(env)) { - if (get_field(env->hstatus, HSTATUS_SPRV)) { - mode = get_field(env->mstatus, SSTATUS_SPP); - use_background = true; } } @@ -727,8 +718,6 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size, hwaddr pa = 0; int prot, prot2; bool pmp_violation = false; - bool m_mode_two_stage = false; - bool hs_mode_two_stage = false; bool first_stage_error = true; int ret = TRANSLATE_FAIL; int mode = mmu_idx; @@ -738,30 +727,21 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size, qemu_log_mask(CPU_LOG_MMU, "%s ad %" VADDR_PRIx " rw %d mmu_idx %d\n", __func__, address, access_type, mmu_idx); - /* - * Determine if we are in M mode and MPRV is set or in HS mode and SPRV is - * set and we want to access a virtulisation address. - */ - if (riscv_has_ext(env, RVH)) { - m_mode_two_stage = env->priv == PRV_M && - access_type != MMU_INST_FETCH && - get_field(env->mstatus, MSTATUS_MPRV) && - MSTATUS_MPV_ISSET(env); - - hs_mode_two_stage = env->priv == PRV_S && - !riscv_cpu_virt_enabled(env) && - access_type != MMU_INST_FETCH && - get_field(env->hstatus, HSTATUS_SPRV) && - get_field(env->hstatus, HSTATUS_SPV); - } - if (mode == PRV_M && access_type != MMU_INST_FETCH) { if (get_field(env->mstatus, MSTATUS_MPRV)) { mode = get_field(env->mstatus, MSTATUS_MPP); } } - if (riscv_cpu_virt_enabled(env) || m_mode_two_stage || hs_mode_two_stage) { + if (riscv_has_ext(env, RVH) && env->priv == PRV_M && + access_type != MMU_INST_FETCH && + get_field(env->mstatus, MSTATUS_MPRV) && + MSTATUS_MPV_ISSET(env)) { + riscv_cpu_set_two_stage_lookup(env, true); + } + + if (riscv_cpu_virt_enabled(env) || + (riscv_cpu_two_stage_lookup(env) && access_type != MMU_INST_FETCH)) { /* Two stage lookup */ ret = get_physical_address(env, &pa, &prot, address, access_type, mmu_idx, true, true); @@ -813,6 +793,14 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size, __func__, address, ret, pa, prot); } + /* We did the two stage lookup based on MPRV, unset the lookup */ + if (riscv_has_ext(env, RVH) && env->priv == PRV_M && + access_type != MMU_INST_FETCH && + get_field(env->mstatus, MSTATUS_MPRV) && + MSTATUS_MPV_ISSET(env)) { + riscv_cpu_set_two_stage_lookup(env, false); + } + if (riscv_feature(env, RISCV_FEATURE_PMP) && (ret == TRANSLATE_SUCCESS) && !pmp_hart_has_privs(env, pa, size, 1 << access_type, mode)) { From patchwork Sun Apr 26 16:19:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283937 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36634C54FCB for ; Sun, 26 Apr 2020 16:34:23 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0075520700 for ; Sun, 26 Apr 2020 16:34:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="f003imRJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0075520700 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35666 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSkEX-0008DJ-VJ for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:34:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44484) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk8H-0005JM-Vq for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk8H-0004pq-FA for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:53 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:30898) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk8G-0004hK-Sb; Sun, 26 Apr 2020 12:27:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918472; x=1619454472; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UkQ8NUev/k/AlnUkXpZj+rX7oYGCYUShPbguTwLEfK8=; b=f003imRJnHLU997KRBQDU4zWPj3z96eWMMdx2jJbZbPzWwo1fPY5bRb6 D3H1YFAsAiM/PqYZZrgGVggZUCHz6aTHu4+atJfP4Z68H23WXmtWoWdVP z5/7cFsb1schk81Rpi1D8kA4TaO+hwo/hEbMWWdXw53F0IPLnx7k34FeG Xi4P88+K21bGVqH3cwLwvlPZNfWQFYrrcnOScVPuyeqIiGdbZ375+Iow8 2PEsG5Ls8+uJHwVorRqhUO3ba67nt+9/5jhvp/5X+71EAfkGGoU9RL/8A s+pkz+CCf5xIM363ulLcJ8sSu7ZyxveI7VPAIuePXLO4IelezwmkOflqT A==; IronPort-SDR: QPU8xHMKFPhAS/pQ++rBIYLuExO4Xo6QnXIFsGwTceFD3fzQdaNzwCWpMmMtRUgYoUZqHBPUb9 iPbkct0Y+llmdcLjKkVFIkSNa3bLSfNJ5tgfDtCkojZE9kPsPOLnpbwVlQYb1PSSwUF4ixZCX7 mxl8UoYBD8Kfep5wNmoUVutNAQ8AYeqL1PoNbmtdtygdbMUUIMj1yiO33dalHmK5LBRyxR9+FN ALQbRqffLhvICv9PpbTrzg6q4LqeVsgVTE2jEvfc2ilsnkb5Lp2aLOMeCY7pLEBmuSLHE3gmTL Yeg= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="136193251" 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; 27 Apr 2020 00:27:50 +0800 IronPort-SDR: H/cTgOQmL6JUxgaTupXXuZ4RSkmLdclbpgydzA6GvdDWOITGYkFSiaKo4HVnaA/5CpOV4lg0sI WMQYmDs4kHP+fB96I4pdZE+QERIssRBqU= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:18:00 -0700 IronPort-SDR: XcfAmeVNywNSdqqv6cjX04wsNOKlz91syYphokrPg4qEAEuHZ2Ws1t7WuuYWa4fc6zBmXeryn+ suXkyOSRvbrw== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip01.wdc.com with ESMTP; 26 Apr 2020 09:27:50 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 10/15] target/riscv: Fix the interrupt cause code Date: Sun, 26 Apr 2020 09:19:39 -0700 Message-Id: X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:21 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.42 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 93df7a896d..f7ada23861 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -925,14 +925,15 @@ void riscv_cpu_do_interrupt(CPUState *cs) if (riscv_cpu_virt_enabled(env) && ((hdeleg >> cause) & 1) && !force_hs_execp) { + /* Trap to VS mode */ /* * See if we need to adjust cause. Yes if its VS mode interrupt * no if hypervisor has delegated one of hs mode's interrupt */ if (cause == IRQ_VS_TIMER || cause == IRQ_VS_SOFT || - cause == IRQ_VS_EXT) + cause == IRQ_VS_EXT) { cause = cause - 1; - /* Trap to VS mode */ + } env->hstatus = set_field(env->hstatus, HSTATUS_GVA, 0); } else if (riscv_cpu_virt_enabled(env)) { /* Trap into HS mode, from virt */ From patchwork Sun Apr 26 16:19:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283935 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9DD0C54FCB for ; Sun, 26 Apr 2020 16:39:34 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B148020700 for ; Sun, 26 Apr 2020 16:39:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="a2aG0p3x" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B148020700 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:36110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSkJZ-0008KK-TY for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:39:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44504) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk8J-0005NV-DJ for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk8I-0004rA-PM for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:55 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:30898) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk8I-0004hK-60; Sun, 26 Apr 2020 12:27:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918474; x=1619454474; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IZ3NBpRUcrbL/MfhZHsJcrqTF5z/rOuirR6/ZLZ3RRc=; b=a2aG0p3xYO8gZTHX5X0ln5VM6lL64pZzg7j/wptsQjEQOpG9MRNxfjQx 0cbauQrnFXPD4Ee2htjs/MWS32vlY19nrwGMIRzrnO1u/6n4TBXxk3k57 Xsj1xxLteY4VHpEWAUcluxtVzWrCvELocqfBns8EA0yAg/7wxQ0jAw1Yx AULqhMKJxLDZSCW9I/1EYRjur2kV4d5ITUfCd5Tw3jlZK/bPLP2MjZ4V5 POXmkMgW90xOCpbreJVP11QGWx5xSx7yWMgnKtMJ7SvT1xwZG4woca0s5 CP3zU5XIO+iehPDp2gbn14A7f85Q9PdeRtJyX2wflTWeWvwfWaxYOzNiP g==; IronPort-SDR: ZjktY0n+/l1P9NL9EXtzuTG5XKLEmyRgt7iltFICru9oEsP2aRd9B+38x6dWTp+6HMj4i8KxVu eMhOhez1sVBjl4PcKcFzv1vUKN2q/AGaHEDQf58lg+/8jhxTBnwkz06OEh+GAOGhoQhQvcS20C im92SOA9s0PRxciEbXcrKsLuPemnv6sSo7Us6fl2LM4S+1lmy2wivK05XA8KhJKNQC6sTGQX0c 0tAxbd7GjS0Y+61WvJbqaKBhEJXW1YkEcKTRh50B0sIMIcpJ/LDKeDxUQRmqmbhKlryxDNyhRx YLQ= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="136193252" 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; 27 Apr 2020 00:27:52 +0800 IronPort-SDR: iM6T4RrzbQ8EeHKA/7EJqReU8nBxy4X+opaK+9L3l7P0xeV5Rjv4lFdz/mmD1W3MQhLfbdDoYI QnHXI1qydz6WapJwL96Jfscn4tnMZvlCY= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:18:03 -0700 IronPort-SDR: SGaupjqEcHQFAZQrUPVMz1ZZ5FYOMPzuP/wT/a7Fu2TLhseBGtGo5ByuKLqU0BlSshgFaTq1kT mz2cv/jBblMw== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip01.wdc.com with ESMTP; 26 Apr 2020 09:27:52 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 11/15] target/riscv: Update the Hypervisor trap return/entry Date: Sun, 26 Apr 2020 09:19:42 -0700 Message-Id: <31d19dbb4166af92c9daf266054e74b4618000c4.1587917657.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:21 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.42 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 1 + target/riscv/cpu_helper.c | 8 +------- target/riscv/op_helper.c | 8 ++------ target/riscv/translate.c | 10 ---------- 4 files changed, 4 insertions(+), 23 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 028e268faa..6b97c27711 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -430,6 +430,7 @@ #define HSTATUS_VTSR 0x00400000 #define HSTATUS_HU 0x00000200 #define HSTATUS_GVA 0x00000040 +#define HSTATUS_SPVP 0x00000100 #define HSTATUS32_WPRI 0xFF8FF87E #define HSTATUS64_WPRI 0xFFFFFFFFFF8FF87EULL diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index f7ada23861..84a5b20f56 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -938,9 +938,7 @@ void riscv_cpu_do_interrupt(CPUState *cs) } else if (riscv_cpu_virt_enabled(env)) { /* Trap into HS mode, from virt */ riscv_cpu_swap_hypervisor_regs(env); - env->hstatus = set_field(env->hstatus, HSTATUS_SP2V, - get_field(env->hstatus, HSTATUS_SPV)); - env->hstatus = set_field(env->hstatus, HSTATUS_SP2P, + env->hstatus = set_field(env->hstatus, HSTATUS_SPVP, get_field(env->mstatus, SSTATUS_SPP)); env->hstatus = set_field(env->hstatus, HSTATUS_SPV, riscv_cpu_virt_enabled(env)); @@ -951,10 +949,6 @@ void riscv_cpu_do_interrupt(CPUState *cs) riscv_cpu_set_force_hs_excep(env, 0); } else { /* Trap into HS mode */ - env->hstatus = set_field(env->hstatus, HSTATUS_SP2V, - get_field(env->hstatus, HSTATUS_SPV)); - env->hstatus = set_field(env->hstatus, HSTATUS_SP2P, - get_field(env->mstatus, SSTATUS_SPP)); env->hstatus = set_field(env->hstatus, HSTATUS_SPV, riscv_cpu_virt_enabled(env)); diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index d7f26b22f3..c94aba78b3 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -98,12 +98,8 @@ target_ulong helper_sret(CPURISCVState *env, target_ulong cpu_pc_deb) prev_priv = get_field(mstatus, MSTATUS_SPP); prev_virt = get_field(hstatus, HSTATUS_SPV); - hstatus = set_field(hstatus, HSTATUS_SPV, - get_field(hstatus, HSTATUS_SP2V)); - mstatus = set_field(mstatus, MSTATUS_SPP, - get_field(hstatus, HSTATUS_SP2P)); - hstatus = set_field(hstatus, HSTATUS_SP2V, 0); - hstatus = set_field(hstatus, HSTATUS_SP2P, 0); + hstatus = set_field(hstatus, HSTATUS_SPV, 0); + mstatus = set_field(mstatus, MSTATUS_SPP, 0); mstatus = set_field(mstatus, SSTATUS_SIE, get_field(mstatus, SSTATUS_SPIE)); mstatus = set_field(mstatus, SSTATUS_SPIE, 1); diff --git a/target/riscv/translate.c b/target/riscv/translate.c index ce71ca7a92..1d973b62e9 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -754,16 +754,6 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) #if !defined(CONFIG_USER_ONLY) if (riscv_has_ext(env, RVH)) { ctx->virt_enabled = riscv_cpu_virt_enabled(env); - if (env->priv_ver == PRV_M && - get_field(env->mstatus, MSTATUS_MPRV) && - MSTATUS_MPV_ISSET(env)) { - ctx->virt_enabled = true; - } else if (env->priv == PRV_S && - !riscv_cpu_virt_enabled(env) && - get_field(env->hstatus, HSTATUS_SPRV) && - get_field(env->hstatus, HSTATUS_SPV)) { - ctx->virt_enabled = true; - } } else { ctx->virt_enabled = false; } From patchwork Sun Apr 26 16:19:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283940 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EA7F9C54FCB for ; Sun, 26 Apr 2020 16:29:17 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B3EDC20700 for ; Sun, 26 Apr 2020 16:29:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="kUYR4SLc" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B3EDC20700 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk9c-0007vV-Kc for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:29:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44520) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk8M-0005WA-CH for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk8L-0004rv-TK for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:27:58 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:30903) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk8L-0004rb-An; Sun, 26 Apr 2020 12:27:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918477; x=1619454477; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eCEctXu2r/noDa+f6W0xRPXi0SV6hI35JY1T8wGTdzI=; b=kUYR4SLcwdNnnWlVU7tbGpOEoIOo7fmlu3jOJ40G4PBtfwkMax+OMkV+ QSlL6hhVZ5gTgcqrj0G1c0jfcNyIQHiJw1k7JEkMpDaydarR0cYlub7GD 3hv79wrWzQZLWxCjtwbYRLmmBA6kBQESr89+rDXiZcRgyCqs9OAcy9LlW s43rV4LhfxQ6VrQbIZnTwJrXPPR4R1l+1u3bjcW6aKZeFYQ/f8D9KKpAK +tfNu76BN3EeuStvZGPGx5ZmqV99gI6bcia6MQyQca/kpBnK16Cepl1C2 GZRGZwAy5g8wLPXDnGE9PO6wpAW/5WSQ7+Af24cpXwbYPmXQYQbyhry7L Q==; IronPort-SDR: 1lt3D0tphzjBs5U4aJXlqwkeTI0mEHJSjDYwniMsUcSJyT4hTHvYHc3FOTfo57o/I1446jSbCg TVU2M+ygd1cWnbk78U3SMwcD3MqTI7OLddjplg+B8iZsbnu4avm+Nv0yhPXxx44bBOJCO0n73y TDivEBo1xNMZIqdTiiv6WN6UwWt07Di0MUggH5Vk8XNgJmXISVeX/L5zD8TpaHkVJbWLWsLLYe MPqofyvADmMT2Qnpsv+xwMpwagmNfv9FB9qU7fP7soTNakZSQgZKmrl0glW0wo8uqIMb25MFvJ yl4= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="136193255" 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; 27 Apr 2020 00:27:55 +0800 IronPort-SDR: TEfzyvoS1pGT1Gkfd9K6JMXUKCVDdg+cWivK+ysMNYlJCUVAdwXFO8ZBpWX8jgtU2dElp61JY0 ldD1OlGhgO18E3Vux6p01okT5de1cvTCE= Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:18:05 -0700 IronPort-SDR: vYfbP9q0nEV6GUU84tc2QuOTnvBbiUASAVZX88RmAbZk3vb3iWB5umraWjTwUQPdCsEFmrVDhg /lQyl9OvfeNg== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip01.wdc.com with ESMTP; 26 Apr 2020 09:27:55 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 12/15] target/riscv: Update the CSRs to the v0.6 Hyp extension Date: Sun, 26 Apr 2020 09:19:45 -0700 Message-Id: <87318882f7b08e93dae29f26d62b1eb823a136d7.1587917657.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:21 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.42 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/cpu_bits.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index 6b97c27711..8a145e0a32 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -422,15 +422,17 @@ #endif /* hstatus CSR bits */ -#define HSTATUS_SPRV 0x00000001 +#define HSTATUS_VSBE 0x00000020 +#define HSTATUS_GVA 0x00000040 #define HSTATUS_SPV 0x00000080 -#define HSTATUS_SP2P 0x00000100 -#define HSTATUS_SP2V 0x00000200 +#define HSTATUS_SPVP 0x00000100 +#define HSTATUS_HU 0x00000200 +#define HSTATUS_VGEIN 0x0003F000 #define HSTATUS_VTVM 0x00100000 #define HSTATUS_VTSR 0x00400000 -#define HSTATUS_HU 0x00000200 -#define HSTATUS_GVA 0x00000040 -#define HSTATUS_SPVP 0x00000100 +#if defined(TARGET_RISCV64) +#define HSTATUS_VSXL 0x300000000 +#endif #define HSTATUS32_WPRI 0xFF8FF87E #define HSTATUS64_WPRI 0xFFFFFFFFFF8FF87EULL From patchwork Sun Apr 26 16:19:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 283938 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D68FC54FCB for ; Sun, 26 Apr 2020 16:32:20 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 33B802080C for ; Sun, 26 Apr 2020 16:32:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=wdc.com header.i=@wdc.com header.b="SCc6Hdej" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 33B802080C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35488 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSkCZ-0004jm-5c for qemu-devel@archiver.kernel.org; Sun, 26 Apr 2020 12:32:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44548) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSk8T-0005lP-4a for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:28:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSk8R-00056F-F0 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 12:28:03 -0400 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:30903) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSk8Q-0004rb-Sf; Sun, 26 Apr 2020 12:28:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1587918482; x=1619454482; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DR4pbdEl2I6apEpDDvJPJ6ayCnFWiVFUUlsbgdB7IIo=; b=SCc6HdejltBxvETBMhNSH/xUSKX5YykfBIojArrifmm+0M9z2Tl+adg+ GAb3BHPrN0O/Z1++BoG1KTEt4xTkJ2UwEUqUOR43GBL1HTroKDMUgSjXv O9yLkBRagj6fIRNeooHzUyK0OIKVg+nv4+04U09V/te0gO8qH9l9dxcHJ awULY3L2NlKivU5SVk5jh0roOfJ+gCxUpFUUBu6hPkcwBAkLYdya2Wv5x FVrxiL5SQf+t5uBzPXiycFp/IKf+WVXuEdy6mcpVSEZcM/zfpC4NsmG7T aOHIPNYKSO9CZqDlioxS17v99gafkY5uXd2AqlfGS1Powc56a6obz+JTO w==; IronPort-SDR: oFu8XAqIrA+XYiBojdekTblIeiSVx3jVL6dYN1BeF18JRLHz97AIc3sTjLmfthzu4Iaxxyilq9 n0CCh90piZxht5/E8dEcTzPFFPESZ790PueUqJQ6+XlkliIYNVW5BIiQJp/0o54f/5tzL5e2oN ldLkf3GaZL/n4Z0xgAlg7dZj1xCzTca45zfiPkAwsSzsWoelCetPtxIP8NKbIY4VPJ/IkNYMsx GmayivDtYOYHqcRkPM6WOW7JZgTMP1EVSSZ9xivYFSV7D2CtnKjeOG+8Nwsh7uUK/1UjrxTPMT qy4= X-IronPort-AV: E=Sophos;i="5.73,320,1583164800"; d="scan'208";a="136193262" 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; 27 Apr 2020 00:28:01 +0800 IronPort-SDR: iKWuPKqilS8S5b+fBXI5lwnzshntvthh2J7I1lwqbj2xxA5PCdj4zWX0t7whdSXxy7R/A1idXP S3PmBIg1tAe3QE1iY4oNDwrrLkohhTWxM= Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2020 09:18:11 -0700 IronPort-SDR: MOuZamxbp/QOib8VHHUwrksXZrtQlMy2mZvwsPDAXu5qk3mwvQjpHDt+DnSBfZhDewryVIkP6U Ue4iojcz5d+w== WDCIronportException: Internal Received: from wdthnc17-0189.ad.shared (HELO risc6-mainframe.hgst.com) ([10.86.56.50]) by uls-op-cesaip02.wdc.com with ESMTP; 26 Apr 2020 09:28:01 -0700 From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 14/15] target/riscv: Only support little endian guests Date: Sun, 26 Apr 2020 09:19:51 -0700 Message-Id: X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.42; envelope-from=prvs=378a396a1=alistair.francis@wdc.com; helo=esa4.hgst.iphmx.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 12:27:21 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Received-From: 216.71.154.42 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: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Alistair Francis --- target/riscv/csr.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 438d0a61ee..04f3471f2e 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -858,6 +858,8 @@ static int read_hstatus(CPURISCVState *env, int csrno, target_ulong *val) /* We only support 64-bit VSXL */ *val = set_field(*val, HSTATUS_VSXL, 2); #endif + /* We only support little endian */ + *val = set_field(*val, HSTATUS_VSBE, 0); return 0; } @@ -869,6 +871,9 @@ static int write_hstatus(CPURISCVState *env, int csrno, target_ulong val) qemu_log_mask(LOG_UNIMP, "QEMU does not support mixed HSXLEN options."); } #endif + if (get_field(val, HSTATUS_VSBE) != 0) { + qemu_log_mask(LOG_UNIMP, "QEMU does not support big endian guests."); + } return 0; }