From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 33EBE388883 for ; Mon, 1 Jun 2026 08:44:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303443; cv=none; b=pwwWmP3N9a7IaqeUeVfZWIizRFZLuJyolI4WhQ7n3WF+syv5D/TMax9cZD9Q8xK5k46N/ZkRMttntlve2dfI0D/B7oxvbhrt+FKEG9eJZJ0Sm7eZRVyzsxxcj2dokLQBw5HxUwvR5fgJVxKymEBN2yh/EhetC1si2HZD3Kc8lY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303443; c=relaxed/simple; bh=RTxTTusmwHBtYj40ntfpMb5fbqAkYBYXJYk7jt+gJYg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Kap+YsQtxVf3UnsEDCbXj6ZwWX4OzXFC5uxBMmWXznZvu3wKPQEnQD3gybzJZkW8hVQtOZjdahO9P1VwUO0T1QP32gMovulR5HN1uuK/MW+WN7yyiUPkVQMGqFyBIrmjbiuVY166lc5SZBvyTFEnLh10TPVUx0XKfb9VtOc30O8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OV9VF6LI; arc=none smtp.client-ip=209.85.216.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OV9VF6LI" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-36d630c0e35so1480827a91.3 for ; Mon, 01 Jun 2026 01:44:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303439; x=1780908239; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=E0aaMax2/oVHcxkIeEgQqy6mX+q/RNO/BVNGIuJ0S4E=; b=OV9VF6LImMTXbRCH0gqo6VuSw+4G25dgpYx11XPRfWM+3gRT4rKhrIl++o7IVtfWoT 638cHnO6Blbj4U4TninUqkBWSQghFVYpHow7EvYLG3Vkv3VasqYlwEdAR8HTUrBHmglw HfvYiRU1hNnhm5v5g/jVtorGvsNFPY2X7J0kqw5mYsZVUBAV/YDsvEez5QtwuhhtZ+r+ BWIuuJL/GrfoaftvUyGCYD0TaUa8OuFPpObudJeo3/Wj0xvn/duyEVTWD6iacHZg04hU 5Grjp0bcrOKrQtqfphjcH/B7pN9BMJvA3ofZc2tNBudzhNfESLL2T0jw7ySah3mRe3Jg ghNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303439; x=1780908239; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=E0aaMax2/oVHcxkIeEgQqy6mX+q/RNO/BVNGIuJ0S4E=; b=CHlJp8JpRe2edghDMM36mHtFli32VCGDpp4Txe9YczRPWtaM1Wwm3e5OVOMDRaGRkR AIxvE9rj2gIR8Cm3pg4K9yd5VdJ30k7P2KDPivYEHi0jNWLj80kRSUWaroftbGRfYwrt IFcw6w+kSTWlZtBgOo0hBsTWVhRYgHGuf4DOOYGeH26JFO6HPm/f+/EpkDS5/a6Chz6w UYlGASTngrE2NzSNiSJlF09XgCBvVzbLVd7QOmKVleLMRIDIuP+inpbyP4WgwxkbYr+N 4F/XVUTol+CdSRWA8vzWlPZ8wxFFFQ5fJ60+DjBa2Htz+eFXOG8iKYWnc4MVbvAPf4x6 Nu3g== X-Forwarded-Encrypted: i=1; AFNElJ+o+6DDWFpUYK6ZlCmN9WCfHISqyQQhPmv+JXdsjzWjosQlrytmefAradg+tiX4kdU0IlsqtSGj/fN3I/Y=@vger.kernel.org X-Gm-Message-State: AOJu0YwvW2c6K9Fc4dptwNmjTEH9Xy6VMViQ7yx/ouXMEQhocwDh4PD2 F2b81LYQoBOEQQ5n5b6r+1P4w3+wgbcs4g5qRxkEM1rRLbqGU3LFLb5n X-Gm-Gg: Acq92OE5AzuMSTjW4/pabxQ6CTODMx9Fq4IUVezpfC+8aHVvtTCc8/Mpgs7oQleF3yI ZnDSrXM2lGlscvWYhvsuzMSdiJoaGjcsd5SRUs9QiwGR8WVYMh/rLVx9lWBZlA9jc1f9O/jLR9K fWVCJifftCt9LwUDIAu/4JjUliuns0c9lBE/Hfqad4BnbcaPujFceFO3shKTf65PWW0/RzFbG+r P3zdlEbdMCj293FBQlvTJPE9puvfmH+LsmfU5DdW+Xh8spY1kQ5l+jL/fyNSymfcld7zvq5oMzv NZ1fk2vZnK2afQWhNTt8EUFy5B7FQUFiKPcnhBJDnmfX8PthOJViXuv/A7u59BNpqIJnry4NZw8 3HqPzlhTroZZd6qpHDMlczwsWibcJKEUbrMXdbltaw5nC0aRnVgn92g0/RmkhMQ0hNe3i8oSBME 83TunX36uG6lcXp62X9XHOH5kx4+aLu4t95A== X-Received: by 2002:a17:90b:2247:b0:367:d850:6a5f with SMTP id 98e67ed59e1d1-36c68478155mr9638126a91.25.1780303439454; Mon, 01 Jun 2026 01:43:59 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36bbdb6978fsm5733679a91.1.2026.06.01.01.43.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:43:59 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li , Quan Zhou Subject: [PATCH v2 1/7] RISC-V: KVM: Add support for Svadu FWFT features Date: Mon, 1 Jun 2026 16:43:29 +0800 Message-ID: <20260601084336.2601675-2-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hardware updating of PTE A/D bits is controlled through ADUE bit in henvcfg Expose the feature only if the Svadu is supported for VS-mode. Allow the VMM to block access to the feature by disabling the ISA extension in the guest. Assisted-by: YuanSheng:claude-4.7-opus Co-developed-by: Quan Zhou Signed-off-by: Quan Zhou Signed-off-by: Inochi Amaoto --- arch/riscv/include/uapi/asm/kvm.h | 3 ++ arch/riscv/kvm/vcpu_sbi_fwft.c | 72 +++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/arch/riscv/include/uapi/asm/kvm.h b/arch/riscv/include/uapi/as= m/kvm.h index 504e73305343..501e4fc60dd2 100644 --- a/arch/riscv/include/uapi/asm/kvm.h +++ b/arch/riscv/include/uapi/asm/kvm.h @@ -240,6 +240,9 @@ struct kvm_riscv_sbi_fwft_feature { struct kvm_riscv_sbi_fwft { struct kvm_riscv_sbi_fwft_feature misaligned_deleg; struct kvm_riscv_sbi_fwft_feature pointer_masking; + struct kvm_riscv_sbi_fwft_feature pte_ad_hw_updating; + struct kvm_riscv_sbi_fwft_feature landing_pad; + struct kvm_riscv_sbi_fwft_feature shadow_stack; }; =20 /* If you need to interpret the index values, here is the key: */ diff --git a/arch/riscv/kvm/vcpu_sbi_fwft.c b/arch/riscv/kvm/vcpu_sbi_fwft.c index 2eab15339694..375269e43c13 100644 --- a/arch/riscv/kvm/vcpu_sbi_fwft.c +++ b/arch/riscv/kvm/vcpu_sbi_fwft.c @@ -84,6 +84,42 @@ static bool kvm_fwft_is_defined_feature(enum sbi_fwft_fe= ature_t feature) return false; } =20 +static void kvm_sbi_fwft_env_flag_reset_helper(struct kvm_vcpu *vcpu, + unsigned long flag) +{ + vcpu->arch.cfg.henvcfg &=3D ~flag; +} + +static long kvm_sbi_fwft_env_flag_set_helper(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, + unsigned long value, unsigned long flag) +{ + struct kvm_vcpu_config *cfg =3D &vcpu->arch.cfg; + + if (value =3D=3D 0) + cfg->henvcfg &=3D ~flag; + else if (value =3D=3D 1) + cfg->henvcfg |=3D flag; + else + return SBI_ERR_INVALID_PARAM; + + if (!one_reg_access) + csr_write(CSR_HENVCFG, vcpu->arch.cfg.henvcfg); + + return SBI_SUCCESS; +} + +static long kvm_sbi_fwft_env_flag_get_helper(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, + unsigned long *value, unsigned long flag) +{ + *value =3D (vcpu->arch.cfg.henvcfg & flag) =3D=3D flag; + + return SBI_SUCCESS; +} + static bool kvm_sbi_fwft_misaligned_delegation_supported(struct kvm_vcpu *= vcpu) { return misaligned_traps_can_delegate(); @@ -127,6 +163,33 @@ static long kvm_sbi_fwft_get_misaligned_delegation(str= uct kvm_vcpu *vcpu, return SBI_SUCCESS; } =20 +static bool kvm_sbi_fwft_pte_ad_hw_updating_supported(struct kvm_vcpu *vcp= u) +{ + return riscv_isa_extension_available(vcpu->arch.isa, SVADU) && + !riscv_isa_extension_available(vcpu->arch.isa, SVADE); +} + +static void kvm_sbi_fwft_reset_pte_ad_hw_updating(struct kvm_vcpu *vcpu) +{ + kvm_sbi_fwft_env_flag_reset_helper(vcpu, ENVCFG_ADUE); +} + +static long kvm_sbi_fwft_set_pte_ad_hw_updating(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, unsigned long value) +{ + return kvm_sbi_fwft_env_flag_set_helper(vcpu, conf, one_reg_access, + value, ENVCFG_ADUE); +} + +static long kvm_sbi_fwft_get_pte_ad_hw_updating(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, unsigned long *value) +{ + return kvm_sbi_fwft_env_flag_get_helper(vcpu, conf, one_reg_access, + value, ENVCFG_ADUE); +} + #ifndef CONFIG_32BIT =20 static bool try_to_set_pmm(unsigned long value) @@ -225,6 +288,15 @@ static const struct kvm_sbi_fwft_feature features[] = =3D { .set =3D kvm_sbi_fwft_set_misaligned_delegation, .get =3D kvm_sbi_fwft_get_misaligned_delegation, }, + { + .id =3D SBI_FWFT_PTE_AD_HW_UPDATING, + .first_reg_num =3D offsetof(struct kvm_riscv_sbi_fwft, pte_ad_hw_updatin= g.enable) / + sizeof(unsigned long), + .supported =3D kvm_sbi_fwft_pte_ad_hw_updating_supported, + .reset =3D kvm_sbi_fwft_reset_pte_ad_hw_updating, + .set =3D kvm_sbi_fwft_set_pte_ad_hw_updating, + .get =3D kvm_sbi_fwft_get_pte_ad_hw_updating, + }, #ifndef CONFIG_32BIT { .id =3D SBI_FWFT_POINTER_MASKING_PMLEN, --=20 2.54.0 From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08009389108 for ; Mon, 1 Jun 2026 08:44:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303444; cv=none; b=Wc3plA5dgdUgXL3t1Kx6vMvBK/M1XmwkCUQfdDHZytbLV9o9yWxnqRqIbN2xQE8RDe+i6FTgbI9MBI4Rgjv4CWzuvsm6fQrs4260Vjns7YhB/sWuJ+r81Hx3r0hGfbz8v2sznIT9Spq//N4uDsi2rjTXoB9IWXLZBcKiBrilc9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303444; c=relaxed/simple; bh=sMii3fcp84xgrUzG/3AkSPmm2RWBWNn2SHl6UbCXr58=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WWEmGi+s89W5CkPh+z6zdUaN661t8wyj6kLZ7sTMPQKXM/1KPLt9w5LmITKYzSju6q/KjEh9n5ymKueuPdT1Vy0tgMVPqwhOtebqdAy/EhT/Z5OxrGm1DCy62WmvUiquzxmGEpNw1q3INneSR8YTsveE75TayiBNOd5fUqHovC4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=rSncP3mp; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rSncP3mp" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2bf3781ca51so18811325ad.0 for ; Mon, 01 Jun 2026 01:44:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303442; x=1780908242; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xSRGQKpWCLbV+j0YDeovxMcfa4aON74s/dnTPwpNiss=; b=rSncP3mpc4hJ8UYDbDY3aBlLI+nPtJZ3DtxcfcH7R63NXbn42iFd2ZvDsrOkK9Y6+a Z0szbUk0Siw86BPdl+4FHCHXtxF/o8UBJJMEf0t1h2Zdxh8lHidnWVAdAbcQ4Jk1zTFN zMOQhaautKIsc7UfStlZWQ59iJRKEHAGbLaF773y2ryjZL2ulwzpwODbkfSpLdgDxqdy dWgSEtICIi1XyRmFla3eoJ4b3agSneejJQ0MhLiCNJl+bAuZaFD8oaCxpkyI6Cf0lY6Z XXW3l4j44ksCUxrKCygSDCu1D9eroU1H8mEl5fbGVG8BSR8q+M2i+3PnuDPG+VSDrljy qQ1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303442; x=1780908242; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xSRGQKpWCLbV+j0YDeovxMcfa4aON74s/dnTPwpNiss=; b=RMQzh80/fDST1t0LJ1aNuKO0HNBS4XAM13BrTd7DxwMfcwz6RlQbx2fg6za72l1XE+ 6iKV/DZMd8w0BWT5ZSUOoc5LqGgwpiUI/Fz2OGIpfpoDeJ7Vw0FQz5IEwSo6WMAiIDSU fe7VsuqgM5gT0x6zV2jbT4qxT9N1h94U6t1FyDDsLkjHPun1Em6+O6EF7AyXdZTxiFNa kBfc1rV/yI6KHJvT/PT5I3Dl9wgTB0XBz6OpMywg2U+u+JXGP3kTAUAA6UvWYhLPYv3J jXcfg9nmTF4cRoxLKO3RkT+lAQEferFu2t7U4ViaYTw2ph0od6+l5DLR7wtxsAmkkWcv rjjQ== X-Forwarded-Encrypted: i=1; AFNElJ/A88Q4EoQitj9Hvx2s8gDrkBAjmnJnsoYgX03niC4AqvpWamkB4Jzaxq2CLigRHFOHC+HjAFxfYiIA+Tg=@vger.kernel.org X-Gm-Message-State: AOJu0YzzpsObtXpiHbOTTOIiHK05BzMti4tr6PcBlXiLrSiDCMxeiyyv W1SBblKTEZ999ru/geqk49roIlOjLek7OXiPzzqiAliw5YAPpzkjnhZT X-Gm-Gg: Acq92OHYxL/RxYajQ0KbU4bNRiANOspiEW3AESkoKtJy2Ex59uB4bEpssQTOj64MtYm WZwsFk/aphaWw9xxrq2T5gLfaDL9uO9ikOMJNe2PUyGnmX4+FVSs/MECV/nceCi04yRY2H/hwpq nZxctD/n6ErcaEOvHT9wA3rcqwNyGkIRI9bdL5WRNWW+Tft3eBDnXogOWHJHcK+vUsS25Nl2ulv Esz6UqO72i9AwNJdxg05nt4QQJzroASoXm2WKYVrEkDcY0E0efUDnR/CTsiTdUcwVPuE9QsHpV4 zeS5bsyZCAFDH08/mByAYZ15yKAJZ0PAgZ+NE/MxFd4WCzb9HXb+4gXoK8QcRHZe57oi8Tdx+sj Qq7WK/axYnuPSJbY4MtjwMYyMnHaZmm0aUkCcMYs20qQuar5T70iFI9MJUeT6Ndh+2vn6cj96kJ GGKkIjSE5HgdCQBD+HjXDTUqNEVTcLpLMzGKdH+sIe91Hi X-Received: by 2002:a17:902:ea12:b0:2b2:3bb6:fbf8 with SMTP id d9443c01a7336-2bf367aa3a1mr120210065ad.16.1780303442300; Mon, 01 Jun 2026 01:44:02 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23c4dd4csm99949505ad.78.2026.06.01.01.44.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:44:02 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li , Quan Zhou Subject: [PATCH v2 2/7] KVM: riscv: selftests: add Svadu FWFT extension to get-reg-list test Date: Mon, 1 Jun 2026 16:43:30 +0800 Message-ID: <20260601084336.2601675-3-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The KVM RISC-V allows Svadu FWFT for Guest/VM so add this extension to get-reg-list test. Assisted-by: YuanSheng:claude-4.7-opus Co-developed-by: Quan Zhou Signed-off-by: Quan Zhou Signed-off-by: Inochi Amaoto --- tools/testing/selftests/kvm/riscv/get-reg-list.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/kvm/riscv/get-reg-list.c b/tools/testi= ng/selftests/kvm/riscv/get-reg-list.c index 8d6fdb5d38b8..d88edef77ccf 100644 --- a/tools/testing/selftests/kvm/riscv/get-reg-list.c +++ b/tools/testing/selftests/kvm/riscv/get-reg-list.c @@ -712,6 +712,9 @@ static const char *sbi_fwft_id_to_str(__u64 reg_off) case 3: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(point= er_masking.enable)"; case 4: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(point= er_masking.flags)"; case 5: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(point= er_masking.value)"; + case 6: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_a= d_hw_updating.enable)"; + case 7: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_a= d_hw_updating.flags)"; + case 8: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_a= d_hw_updating.value)"; } return strdup_printf("KVM_REG_RISCV_SBI_FWFT | %lld /* UNKNOWN */", reg_o= ff); } @@ -905,6 +908,9 @@ static __u64 sbi_fwft_regs[] =3D { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.enable), KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.flags), KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pointer_masking.value), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_ad_hw_updating.enable), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_ad_hw_updating.flags), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_ad_hw_updating.value), }; =20 static __u64 zicbom_regs[] =3D { --=20 2.54.0 From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 303E938CFFE for ; Mon, 1 Jun 2026 08:44:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303447; cv=none; b=dUApaYYKshttZlP4cTGTnXzGPyZ0RYCAHEaKLm7ziUypZ6FaoMl9ho+0qk4A1a0Ikzv61Qgg3+VsXI3MF7Dc9AgYgTbTs+IH6SGdAiYYPJv9jiy61Uf3BQrhpe80jopUNIws9N6psd/WqGInTyupSFC9l4NWLQIpMxaXqM3uhqE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303447; c=relaxed/simple; bh=OTV4YLKyi5/pvTHkFBjt0E6xg4+vUA3MN6cMYdsyzSc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m+tjpZDl8YFkqZcuAVP0PSg/LD788BF4LTavDg+VFzg0JM2bCd+yIdU8y8ihyGqeXNMKI1rgcL5qaWM3wcTMAti4GlAlU85xHyCxKaEhThGkVCdXDHP/eINKjZIxH2rJJ90cqrv7oTrt6HOIAAh9kTTnKNEOvpfv5zg4rkP9fJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Curd/gtg; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Curd/gtg" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-8423efad617so427060b3a.0 for ; Mon, 01 Jun 2026 01:44:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303445; x=1780908245; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RiMpL3okPlrr37XPCPDIwMU1jHFLDEyhgttQYYvX9pI=; b=Curd/gtgQeFH/Ad/pTi+OIDpgOw5VQghLAWpTwE4bd5BYD7AURZ3p/C2AGpQ4RYoO+ +RCs4yHkgPByodzFmMJHlKZ6j2OyKk2Liwezl/H4P1EYL3M3qt7LTW5EzaNItAJQaBTN oiuSnvrRQqTfPILmZG545x6JlKgjnfJlz3zZmrBcfAGwG5Op/Cr8Cy0IdD+UZdXvaM5B lCYyUBC+0TZwXQ0v0JYnAVxo22aOw9LkWmzdBpZDoeKwKsgYQNOJjAkt7jLydD4b/vvt isHkKpZWFHNfSBrk+SlKwsyrldD5Fsh49PkPxoMc1UzOwZzCB9wEfUT+Umv0CmcdZ6cV MCgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303445; x=1780908245; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RiMpL3okPlrr37XPCPDIwMU1jHFLDEyhgttQYYvX9pI=; b=JHNvrXI9mOCCXVQVmSyfyQSQLbRkIbLUTNPG/lCXkFVtLzWC9EqyBAANOLTUh/efgZ aqCIqq7R8C/GcZrRnnHnxU0AreiTbUf7r2GpFrADebt11NnfkgkChx35pzaTIsaMU2ad KCYHmzccHqn+Z5JqmATWbYBCV2HTRJnSLloG6ydtv9xQ7CkzUGqT3YfeUX1L84t1zohR 0mElPYtChWuyusSqr+olzKe0r5o+t/+uTORjPUhRuMQNIHGr2CyqdaQqplPSeBP26yxx Ox/qBt3QrfavRhrrq3i0woMNg1YwH67nEQGp84df2O/Eghm+crhN8jKAw6UJU1LeGQVZ 0yhw== X-Forwarded-Encrypted: i=1; AFNElJ+i+AUtEr4kadCQlsdYcJHUOg34reg7pXG2Z2Ieqvr+GUStLeTK3BzQeLGdjiWcMte6O+6EWHVhQ+Ficd8=@vger.kernel.org X-Gm-Message-State: AOJu0YzQkwgyxsdbQTSTjn/ftOFlTPoZvrG3O7EAFsy+BJ4t1Y8+79BH 1ZhPVUUG25hbrVQ4U9H0t2eFHS+nn6sC/2Q2Q6YkY5RX1fkQI1LsVfu4 X-Gm-Gg: Acq92OF63SJXXegB6rVALf14xFlaxnC4M2yB2PIsP2SOgCt8jo8G5tpXRxlnU3IdqE9 b9xbYWgXty6fUUKTQLwwDpWLUwwcjZPOX+Q/QwYgnB4NlMirbKzAzbEH8j3ysKcYtJ0XDGymm6a KErSv1Ha6fmqrNt/8u4bYtao32gAgxyYMqFSPBkOHDdjJvNXIOe+1GO/Q+X1J4YuG3sCb1WRO4h YWN8qPXOk/PSVEWAuPT5F1IdWP04c44LvZyT2BPz+jjFdaBdjFLAGvmtkuD5Fc3P9Q4Vrs2AFsn UabGS3ENaKCzESoHyL+08pbUQ+llAz2rbPvsTa7hqsGooKMaaTg38ZVia2cK6UYG5m2t7+7Pzhq c/krc+RYlKUyxHkJ5zijJ/5SFIL/3w0geODFt5/tgMgXyWCsDdBnQ2wNREvWXoFWxkKm+tatIAG BcOc2bHAp3wqy+utxqgZIOviUXn6g/1DqhtQ== X-Received: by 2002:a05:6a00:3982:b0:822:6830:5900 with SMTP id d2e1a72fcca58-84225320cd2mr9410764b3a.6.1780303445292; Mon, 01 Jun 2026 01:44:05 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84214affe1dsm9556085b3a.1.2026.06.01.01.44.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:44:04 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v2 3/7] RISC-V: KVM: Only enable Svadu extension when Guest/VM requests Date: Mon, 1 Jun 2026 16:43:31 +0800 Message-ID: <20260601084336.2601675-4-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Since the Svadu extension can be controlled by the FWFT, there is no need to enable Svadu at startup. Only enable it when it is requested. Signed-off-by: Inochi Amaoto --- arch/riscv/kvm/vcpu_config.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/riscv/kvm/vcpu_config.c b/arch/riscv/kvm/vcpu_config.c index 238418fed2b9..b2a1028106d5 100644 --- a/arch/riscv/kvm/vcpu_config.c +++ b/arch/riscv/kvm/vcpu_config.c @@ -53,10 +53,6 @@ void kvm_riscv_vcpu_config_ran_once(struct kvm_vcpu *vcp= u) if (riscv_isa_extension_available(isa, ZICBOZ)) cfg->henvcfg |=3D ENVCFG_CBZE; =20 - if (riscv_isa_extension_available(isa, SVADU) && - !riscv_isa_extension_available(isa, SVADE)) - cfg->henvcfg |=3D ENVCFG_ADUE; - if (riscv_has_extension_unlikely(RISCV_ISA_EXT_SMSTATEEN)) { cfg->hstateen0 |=3D SMSTATEEN0_HSENVCFG; if (riscv_isa_extension_available(isa, SSAIA)) --=20 2.54.0 From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 441DA3890F9 for ; Mon, 1 Jun 2026 08:44:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303453; cv=none; b=HS5fZDZ/XlQA4BJr4w6dGgOkMp0W4MrOBGI/pMuHd6m4+dt6tlawKHehC00SO48WUC/m+ZB8b/DsOCdcJqJfZ5/aYc5lQDG6wUEt+AZ7R1DtNOUdFCkGi7ypKBvZNaXkOwQARkKoLKyx5UzFOzfpBhTJiERskSZW7TcZUl1zY1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303453; c=relaxed/simple; bh=mkUN0v4wN8ccInklomw+u0PqoFI3IrpqBi/5VrkxjsE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z+zUgleoZpSVwEyZ71SxNQOXU1q1H50xjl5edfOM9qHx6a1MOWJXbHv0IasncIRdCO5H6jXaY1nj2O4V0lQx9/FDln4g03C2a7HQDNQLz56eCQPEHwsrH84F1B5ixvRpqvxcledI2Zmf+l7qtcahWmlyDPNbEZJtDpWFhiqCSKw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FFXASw9V; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FFXASw9V" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2bf02708e8fso28697255ad.2 for ; Mon, 01 Jun 2026 01:44:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303448; x=1780908248; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EmdSZ4nBLUBMfkWYeMqXhgmIblXvsbFhjdlvAKdM29c=; b=FFXASw9VfTj6IyEFGTjyGbRJ1H5Ac9jM4tm3YZeGAe65x61h5Jw0JpWsOIsY0KXnWe eCNJ6eGg8GFIqVBbCnAUvjRYWaYhrRMrAH2HpV6KIsFQiaw3RzJz8qQ9CC1EZzGkBSV+ YCJ6t5Y/DIEal/ihropjnagPuFx3xvbpossdgD33763VoZpwlTb7TBAU7U22rnEosbYB hc8tQA3TiUe66GTfVXbP8119/4APPxrQrjnAM3kd1DCwBKe1Chre2E/32wBFSRk+USym V0mXqDgEluKFQgrfZPoNu8bHEBZLRkZBy0i2RJ8+5iXNgRTJsAED5ws4k4jUXAJ5fOHk eWeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303448; x=1780908248; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EmdSZ4nBLUBMfkWYeMqXhgmIblXvsbFhjdlvAKdM29c=; b=FzNXPznIeK83f3dz094MdsUkFbtamq/YBf0ZY+P8Dq46wzdUAg0mHbtXE5Pzj1mi2n D8nQs6pGAAayZ3W8ZcLW2pejICOVjHIHCC6JRJfiPAV2aoD3wLFPUxUQaowm1qLVdo9H T5U8DVTW03kGzwMjTYkd8GdRBAOnqHY00v+/JWI91wYWZra2WLqzHJSDoic1eObaAo/V W9+BEUU27ulTKHU7hDk0S97kgjo9nAHLOJV1P74n0zsdidpX0vYQa6GMn6mDt+8XuaEA TS9chmIfL0SoQkyIeo953C58p/4Ou5G3PbMf2zQfR8TXpMB9WeQaX0DTIuD8M6MKENkM lo+A== X-Forwarded-Encrypted: i=1; AFNElJ/ZvvFKIqrH+Ng48Tr41r3F8d1KVk3zzzPeDUu9PsEirngQ0Ge660SB+4CJqeza9SSQS89eUv08kc8qhJE=@vger.kernel.org X-Gm-Message-State: AOJu0Yw56Mf9q5DSCvY0Pvu3Bb1YHpXBxEmxmFI1elkylAujMNggxieK 2sXYF3CBdsa82W0qq6AEbNcP6ryHY8o/ZXzPfmUytf8EduUJ1zhgjtQu X-Gm-Gg: Acq92OFWBiZrEGPioT/+abooQG1ePWB4c2V3HoYSS60ZeiEnPWM6EkTYVxg9nDad7gf JRuFyDG4i36Hgz+tKmLFjxoRsWqfpfy9EmKIq42aNiAO6+tIrzOUulbBtoOXc3ET9PcIIVYkcxn YttIhaIdw78AAl9cRAYBMYkGtz4q3i2eYwo2GzyVGWlKIcV2HAdwX5B86Vn9URIgte8DHseD5sc 8tYCYPsJUmm8WDWSKTbGfjORpfJKwHs4Jz56XT8GBAenLhrbJXXgJWeud2PXz9HY666gx+HIvhO Raf938qhq6OGXhzwZdu/heJJQJq53vuAzugRN9yhno1lXXtItoTy07u0hLrwig3BVh+/l1QcnVg MdRv1SbGTmQrtC1r14YNMO07MpgxJosvzW+ggyXgYavq3r3tGMwHn4kzT4DcfddLdha/lKSLh94 G8kzJ3FwwBtgPJoiDXj97T9/ERBhvHRlOILw== X-Received: by 2002:a17:903:3585:b0:2b0:b016:773f with SMTP id d9443c01a7336-2bf367c21a9mr124575685ad.11.1780303448528; Mon, 01 Jun 2026 01:44:08 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23c43f0asm137898535ad.77.2026.06.01.01.44.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:44:08 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li , Quan Zhou Subject: [PATCH v2 4/7] RISC-V: KVM: Allow Zicfiss/Zicfilp extensions for Guest/VM Date: Mon, 1 Jun 2026 16:43:32 +0800 Message-ID: <20260601084336.2601675-5-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Extend the KVM ISA extension array to allow KVM userspace to detect and enable Zicfiss/Zicfilp extensions for Guest/VM. Assisted-by: YuanSheng:claude-4.7-opus Co-developed-by: Quan Zhou Signed-off-by: Quan Zhou Signed-off-by: Inochi Amaoto --- arch/riscv/include/uapi/asm/kvm.h | 2 ++ arch/riscv/kvm/isa.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/riscv/include/uapi/asm/kvm.h b/arch/riscv/include/uapi/as= m/kvm.h index 501e4fc60dd2..9f9c5ababd1e 100644 --- a/arch/riscv/include/uapi/asm/kvm.h +++ b/arch/riscv/include/uapi/asm/kvm.h @@ -199,6 +199,8 @@ enum KVM_RISCV_ISA_EXT_ID { KVM_RISCV_ISA_EXT_ZCLSD, KVM_RISCV_ISA_EXT_ZILSD, KVM_RISCV_ISA_EXT_ZALASR, + KVM_RISCV_ISA_EXT_ZICFILP, + KVM_RISCV_ISA_EXT_ZICFISS, KVM_RISCV_ISA_EXT_MAX, }; =20 diff --git a/arch/riscv/kvm/isa.c b/arch/riscv/kvm/isa.c index 1132d909cc25..9852a91fdecc 100644 --- a/arch/riscv/kvm/isa.c +++ b/arch/riscv/kvm/isa.c @@ -65,6 +65,8 @@ static const unsigned long kvm_isa_ext_arr[] =3D { KVM_ISA_EXT_ARR(ZICBOP), KVM_ISA_EXT_ARR(ZICBOZ), KVM_ISA_EXT_ARR(ZICCRSE), + KVM_ISA_EXT_ARR(ZICFILP), + KVM_ISA_EXT_ARR(ZICFISS), KVM_ISA_EXT_ARR(ZICNTR), KVM_ISA_EXT_ARR(ZICOND), KVM_ISA_EXT_ARR(ZICSR), --=20 2.54.0 From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98EA338D3E1 for ; Mon, 1 Jun 2026 08:44:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303455; cv=none; b=Mw/2jb2D/xVOOGNs4mPejkVZTF/GJ0clcB3s4jKKFVYcPW7kGSbuaH6ZC4+2dpp1klcWYL7OR8SNkej8gkJQKw3IAtfCuJYjh/mieYis8j4FkZSOjOBYV6Bsom5Zite54aDNd+7pdnmuAoon7J3XQy3v7cEnWTbNytUqhglt7f0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303455; c=relaxed/simple; bh=CATGD4oGrzQh1/EsHsvVFO8RwSsQAdGWsawSj+YcGoI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JrT7RQ6dDYG3CGZULHQ7wLRSsybzY2ABpk+kblvQWVCRnsO68BbPvZb6Y9NnNQchTdy1VLBq8asJHhpELuvo/h1FFYcY7u0UxLV/GMmJx0DM47NqwAwocIjC6Bsb1tvuo5zjXqCcQFi6+EckFdi7KJlgD2ezftEnpxz2W0d3U3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Fgvdr/qd; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Fgvdr/qd" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2c0b944f6edso13001025ad.2 for ; Mon, 01 Jun 2026 01:44:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303452; x=1780908252; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6RmuO/Bh/pyYNP3lYnfVLduBl3NGvkZrBTGIwUHKLT0=; b=Fgvdr/qduOaN2q0nr7nHzDMUatg7H3zZrCitT7tDVsVs7ktgDgakNxrrCSaTstJhmD 4yfdVtJXoM2ow8G6tvFpXXOo4rM3q9NgwnZ/7minPSSWOrD3CpWK4HaXnY4uV5RwLS1V Ck0mpH5XpdkqA9LoybifKm8q3GwLT36mwZq9ZzE6OZ4iuiYkaXj8F4PYrbPIblhiSIP4 ql5Tg9GxpA6XGJrJrm7Yug50sCMQhsv4NNlAfFR6nAg4hXbfpPSAub/L6PZpBLEeV97V IXKAblVsqQZgsnt02ZM8FdXhuDMV3TWe21Uvovp6rvsuFaksGJ5RKpG2s04azMeVz9+N zhaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303452; x=1780908252; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6RmuO/Bh/pyYNP3lYnfVLduBl3NGvkZrBTGIwUHKLT0=; b=Q/1TJ1e6N3VQTGD6fY9Hc75NWLNYcmHLWnBzFPw5tTGqXwA6tSIP5mcqS/IOXrmrUG BVtO59xEcqfFX3QfVmcHAaFsBsbXTS7Qka1vXxwC5nBdrjKOgArHLAfo/qm5+E4G6glu T5wgQy1nxLfe9z578mG4S7Lqamvgqa4S9+UvDnDqySK2rY9GhD2E8zl535/kPoy9ygaM onkyywqNZ+gE5EgVUyn/TAaeKLML+gFftTWTtIMw6JRA9sNJ5UTpnWm+wFXTAh+TrgOq bk4dnlM+jq/gLtf/1yLtNDkzzhnjJfNbKPmd2fsHja0BDtkvdG2mw5+5T1/6wDbKL1Gx K3LA== X-Forwarded-Encrypted: i=1; AFNElJ+lcudgsFM2u2s1Ao+bpqaCdKsKyxnp6cBMVxwJPffXac5x7VHT0UA5Ev/nWhb6uYAfHpMyex/JTAVL7A0=@vger.kernel.org X-Gm-Message-State: AOJu0YyZ4keMARoBb9uwnTwTQm+hebVacFyMq6YEOpD0YA9QHudwGfun zFhBZE3RIgWheFKGQZeId2GPu+I0ooKi5eu3nvhleL4H419faenLmnq3 X-Gm-Gg: Acq92OEeZPM6nJHxJFtsa+RuIlbDHNptSiUSqsAzJUAj8jkHpuWmmEegcMByfHwM/UG qSqGQ58sADzh3sUv0AGqeFpLQ2i0DhXixI139ZQ2hxcbHjQrUvW5j3CR4Q9esVZnqegcET20O0C 2r2/xtY5CNreqqV2v2V9a5O2hQ7L9aYXDeR7h5x/2kFrq4HZS4LzBzG0PR5GV6byLegayGu2w77 +RbsqOi2B+Rbvlxvy7m1YwJx+or7k5eOSCgA7kNrAI+wmvF953Gwf4gDBW3hjdidHaPoOFDLbfz ncVGcKnQDmQ5oC7ckD/UmwwmT8vF8gddWFdH+YonAmkma8bTa93V3KAt8qK+3pIt/Lu5uCU7AUD 2GoG3FXtNSPoJQc45dxuCzk4qi8AToTJLmHFc4JzerI90UxxhGwj6W1zrCY5xwx1TIGnCEMMXsr 0R4sEiqLbSeSXqPHD0shjewIBWumrMzcPuiXAhVRzugBxk X-Received: by 2002:a17:903:41ce:b0:2c0:bcff:e198 with SMTP id d9443c01a7336-2c0bcffe31cmr77989875ad.41.1780303451867; Mon, 01 Jun 2026 01:44:11 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf239fd8dbsm101815365ad.21.2026.06.01.01.44.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:44:11 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li , Quan Zhou Subject: [PATCH v2 5/7] RISC-V: KVM: Handle software-check exits for VCPU Date: Mon, 1 Jun 2026 16:43:33 +0800 Message-ID: <20260601084336.2601675-6-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The extension Zicfiss/Zicfilp introduces a software-check exception to the privilege architecture. Delegate this exception to VS mode so the CFI violations in VU/VS could be reported. Assisted-by: YuanSheng:claude-4.7-opus Co-developed-by: Quan Zhou Signed-off-by: Quan Zhou Signed-off-by: Inochi Amaoto --- arch/riscv/include/asm/csr.h | 1 + arch/riscv/kvm/vcpu_config.c | 4 ++++ arch/riscv/kvm/vcpu_exit.c | 3 +++ 3 files changed, 8 insertions(+) diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h index 31b8988f4488..224af9facf1f 100644 --- a/arch/riscv/include/asm/csr.h +++ b/arch/riscv/include/asm/csr.h @@ -117,6 +117,7 @@ #define EXC_INST_PAGE_FAULT 12 #define EXC_LOAD_PAGE_FAULT 13 #define EXC_STORE_PAGE_FAULT 15 +#define EXC_SOFTWARE_CHECK 18 #define EXC_INST_GUEST_PAGE_FAULT 20 #define EXC_LOAD_GUEST_PAGE_FAULT 21 #define EXC_VIRTUAL_INST_FAULT 22 diff --git a/arch/riscv/kvm/vcpu_config.c b/arch/riscv/kvm/vcpu_config.c index b2a1028106d5..dbe4167ac4f1 100644 --- a/arch/riscv/kvm/vcpu_config.c +++ b/arch/riscv/kvm/vcpu_config.c @@ -65,6 +65,10 @@ void kvm_riscv_vcpu_config_ran_once(struct kvm_vcpu *vcp= u) =20 if (vcpu->guest_debug) cfg->hedeleg &=3D ~BIT(EXC_BREAKPOINT); + + if (riscv_isa_extension_available(isa, ZICFILP) || + riscv_isa_extension_available(isa, ZICFISS)) + cfg->hedeleg |=3D BIT(EXC_SOFTWARE_CHECK); } =20 void kvm_riscv_vcpu_config_load(struct kvm_vcpu *vcpu) diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index 0bb0c51e3c89..5ab8e87ed248 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -243,6 +243,9 @@ int kvm_riscv_vcpu_exit(struct kvm_vcpu *vcpu, struct k= vm_run *run, run->exit_reason =3D KVM_EXIT_DEBUG; ret =3D 0; break; + case EXC_SOFTWARE_CHECK: + ret =3D vcpu_redirect(vcpu, trap); + break; default: break; } --=20 2.54.0 From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCE5738D3FB for ; Mon, 1 Jun 2026 08:44:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303457; cv=none; b=q+0PEF0UJnt6YyHxHZSrlGV5BwDAW1niM/AE8JS9ZI5PAEKK7bOdShCKzX35qKGDW/vlzw9jwWB5mzn5QKaI8lom4P5F/XNUOaBqqmg+xqZKwAHG0zFS+65eXaRcGr9kzXrMyUMN45MWW17mvfETiRp3SmSHfOp/a5MOprVwwbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303457; c=relaxed/simple; bh=rSw8xLVMbspmhOI6/O0Zaty2a8gG9W16fqgOYoREso4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Mgv/cc6Kk6t4eRtkKZBUin/FoAKakQL3pjdAqb3kagUKVtYzp3ayGk3zMZnhYQ+FNe4Sb/ak/nmP1kDkfXhFUOwnYMLa6EnAl5DXvECj4edRyQu8V/42MJph+rgi8PyPuykVaSI0PXwImiUHTuw9qU8jFzw6XmaUtoOQ+OVVI48= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Qv50/QHh; arc=none smtp.client-ip=209.85.214.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Qv50/QHh" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2bf2247e38eso23679815ad.3 for ; Mon, 01 Jun 2026 01:44:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303455; x=1780908255; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AZP5r0J73Q2Ucds4N11ve2c25N4gijVaOCy/mmdW+YU=; b=Qv50/QHh4XPFkhcvvSkSILmJOMfYZXQCtFTHl/Y7BuEEn+12Axhcj/n0L6eDUXhSfR IKO0xS3gS91k3loynFwFqT5rHEw2GV7pH/BsYsjj3qVJdAhTYVf64F/OPTbvBscRYnZq 8OU7FIw4QUYVrwwTgBHQeJC8vNWjYPDfbb/Qx/EtwyxPOLIJ9DA8j7g6l+uTlArT5XJG dQgfykfvrdyMd54RhM5VqHPNQV2IFRmB6b1RJQ97r1UoLYHjvNudjUMXkwS40SBLgT4z Eq43vheK9TyOh2SgKuA6zZ88F1WWhS7FnQQZHRZuhNwewK9+/KdgDTgWbKrEPMemheDl JBQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303455; x=1780908255; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AZP5r0J73Q2Ucds4N11ve2c25N4gijVaOCy/mmdW+YU=; b=Sh2x9PpRC3t02KVBWYt5sPhr6+0B6wogSzQMXS14Shy1SVUvDBdmeYLVfKgXk+ZFiR qlLixXn2FZDuQG4OQPa4PG2/IAWT4kUYpL5sr1YOobMa2BFDytqWc2ofI6qyr9IKlHjk M0k6ug9lcKGC+IVrpwIDpYmh1keG5y2SFP+CWR1GmH3BMNBKsi6jnBsDZFIqy9uJ4WVO xBucQAiSTDs3BaE0oGE2GgqW0Z53gyOBBz66S/K3148dSREEtAWleDwIr0MJGxlLiXGp QNGb3uomjmiYUlqChGG2PiyCYKHlcQoMMKOghyg34vuiSlAHKbMv4wZIJ9bLcZnl2zRD 3ipw== X-Forwarded-Encrypted: i=1; AFNElJ80PvxTC+akjgJTfmUmTX9Wcs+n1gyal3+u9x72Xy8miLPBz8a52FRR7ZT4Cu8uTL7RqMTMqIfSW265Ycs=@vger.kernel.org X-Gm-Message-State: AOJu0YwEHa3rYvO8a40s7gw4pVQEDcuafx3aTm1uPsE+bofjpM9CBgO8 rXoFYC8KNvcZcqgSdRVOuCzbOLT3ceTna4rEHeQnJSogHA4sYwwW6efB X-Gm-Gg: Acq92OHxzHjhWqME32n5RxV+HPaueER3JblSqDi1NXO2TTPRZfC1HfhIdgZqgbyasnU kjzkCxawph1l81LAreno876ZYoNjrzw+ObaBoV8ElxKOAYLOm0xlb9sWHERq+2n1Oce/ZAIvktH aykRWkXkj4tvaGX8zfZK0obts53nxPVC4Q9u1npEfzWMV27eO8YHS/wkfMyuEv2zbMXhzWji2dW UbZRFWHB6KPvUyof+G+jLsclASkWc2ukj3xTvKzGguWyUTRYomyYUAMtmr5BA8Yx1AGhumpf5YA YotcaDOJ7rN+Ri+zZhz2FGLmvTGC3Hb+VXd+turEaubaVZIc7T619jYKz7KH20+GaURrBeIF0Pa mGuKFrBBg13WWVzSGzUTchV9FAaLvxYoBShr869o8ZOjn47DyHH3NFbmJP69POpnqUEmrKPWtMJ drTGEJBwnR00aIrw0GQTJF7LvAW+nCLAYZdw== X-Received: by 2002:a17:902:e749:b0:2c0:b4f5:41d4 with SMTP id d9443c01a7336-2c0b4f5428bmr82594955ad.41.1780303454902; Mon, 01 Jun 2026 01:44:14 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23c26bcesm95822185ad.65.2026.06.01.01.44.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:44:14 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li , Quan Zhou Subject: [PATCH v2 6/7] RISC-V: KVM: Add support for control-flow integrity FWFT features Date: Mon, 1 Jun 2026 16:43:34 +0800 Message-ID: <20260601084336.2601675-7-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Control-flow integrity is controlled through a WARL field in henvcfg. Expose the feature only if the Zicfilp/Zicfiss is supported for VS-mode. Allow the VMM to block access to the feature by disabling the ISA extension in the guest. Assisted-by: YuanSheng:claude-4.7-opus Co-developed-by: Quan Zhou Signed-off-by: Quan Zhou Signed-off-by: Inochi Amaoto --- arch/riscv/kvm/vcpu_sbi_fwft.c | 70 ++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/arch/riscv/kvm/vcpu_sbi_fwft.c b/arch/riscv/kvm/vcpu_sbi_fwft.c index 375269e43c13..278eb95b97de 100644 --- a/arch/riscv/kvm/vcpu_sbi_fwft.c +++ b/arch/riscv/kvm/vcpu_sbi_fwft.c @@ -163,6 +163,58 @@ static long kvm_sbi_fwft_get_misaligned_delegation(str= uct kvm_vcpu *vcpu, return SBI_SUCCESS; } =20 +static bool kvm_sbi_fwft_landing_pad_supported(struct kvm_vcpu *vcpu) +{ + return riscv_isa_extension_available(vcpu->arch.isa, ZICFILP); +} + +static void kvm_sbi_fwft_reset_landing_pad(struct kvm_vcpu *vcpu) +{ + kvm_sbi_fwft_env_flag_reset_helper(vcpu, ENVCFG_LPE); +} + +static long kvm_sbi_fwft_set_landing_pad(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, unsigned long value) +{ + return kvm_sbi_fwft_env_flag_set_helper(vcpu, conf, one_reg_access, + value, ENVCFG_LPE); +} + +static long kvm_sbi_fwft_get_landing_pad(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, unsigned long *value) +{ + return kvm_sbi_fwft_env_flag_get_helper(vcpu, conf, one_reg_access, + value, ENVCFG_LPE); +} + +static bool kvm_sbi_fwft_shadow_stack_supported(struct kvm_vcpu *vcpu) +{ + return riscv_isa_extension_available(vcpu->arch.isa, ZICFISS); +} + +static void kvm_sbi_fwft_reset_shadow_stack(struct kvm_vcpu *vcpu) +{ + kvm_sbi_fwft_env_flag_reset_helper(vcpu, ENVCFG_SSE); +} + +static long kvm_sbi_fwft_set_shadow_stack(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, unsigned long value) +{ + return kvm_sbi_fwft_env_flag_set_helper(vcpu, conf, one_reg_access, + value, ENVCFG_SSE); +} + +static long kvm_sbi_fwft_get_shadow_stack(struct kvm_vcpu *vcpu, + struct kvm_sbi_fwft_config *conf, + bool one_reg_access, unsigned long *value) +{ + return kvm_sbi_fwft_env_flag_get_helper(vcpu, conf, one_reg_access, + value, ENVCFG_SSE); +} + static bool kvm_sbi_fwft_pte_ad_hw_updating_supported(struct kvm_vcpu *vcp= u) { return riscv_isa_extension_available(vcpu->arch.isa, SVADU) && @@ -288,6 +340,24 @@ static const struct kvm_sbi_fwft_feature features[] = =3D { .set =3D kvm_sbi_fwft_set_misaligned_delegation, .get =3D kvm_sbi_fwft_get_misaligned_delegation, }, + { + .id =3D SBI_FWFT_LANDING_PAD, + .first_reg_num =3D offsetof(struct kvm_riscv_sbi_fwft, landing_pad.enabl= e) / + sizeof(unsigned long), + .supported =3D kvm_sbi_fwft_landing_pad_supported, + .reset =3D kvm_sbi_fwft_reset_landing_pad, + .set =3D kvm_sbi_fwft_set_landing_pad, + .get =3D kvm_sbi_fwft_get_landing_pad, + }, + { + .id =3D SBI_FWFT_SHADOW_STACK, + .first_reg_num =3D offsetof(struct kvm_riscv_sbi_fwft, shadow_stack.enab= le) / + sizeof(unsigned long), + .supported =3D kvm_sbi_fwft_shadow_stack_supported, + .reset =3D kvm_sbi_fwft_reset_shadow_stack, + .set =3D kvm_sbi_fwft_set_shadow_stack, + .get =3D kvm_sbi_fwft_get_shadow_stack, + }, { .id =3D SBI_FWFT_PTE_AD_HW_UPDATING, .first_reg_num =3D offsetof(struct kvm_riscv_sbi_fwft, pte_ad_hw_updatin= g.enable) / --=20 2.54.0 From nobody Mon Jun 8 07:22:54 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2165388E63 for ; Mon, 1 Jun 2026 08:44:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303465; cv=none; b=Vcv7Whpn5kyl36JzoktMoQXIv486L4aNpBaWsBnCSho82qzzzZeNmHQBtOr0uzOhuCZq49a9wrVy/GFKLysIwWmII4dVDAV4I9LPvJZiiCzwQxP77GYPxiEhWZBP8ivWozCNpKOQQZ1/xYOFC+M3DZgIWFxhVJiz4vsC7GSfg5M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780303465; c=relaxed/simple; bh=h8lwCwpBvsZAK2xSMui6cpZp1xkNbU+SVH73g8ceUx0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Zb7ipwQq6FCrZXNC4Qvc4mOUhe2JcamkimwkmP+szEbYaIBS2l0v3hCau9NVfhtvuHWR3cHp9nohgoimY8pfxxUCp6BmNRJwQ9MhMyWl7UfIHGHQtlOoe5UvKBz3nl3Y4Oms40WYjAngKwOJ97lGBumThonk4wr4tr5+EYt85jg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bjbXNHuA; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bjbXNHuA" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2bf30d530bdso24808265ad.3 for ; Mon, 01 Jun 2026 01:44:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780303458; x=1780908258; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fS2CUg/Sh/44DwNmonmJi8mUsAkNkldRmQVB8GPLmro=; b=bjbXNHuAP7LFkvBLGc5IqNXM2HTlbnHM8i1/WRKOpr5xEK3TPZ01Ul+H3NAUgR9LcM CHTYlzm6JOF8ACaPJNn+4/oAJFw5JwctRF4rOaO/54Nz1rqcwuyBbmyB49JPITpLrOq4 NmDW6seldzadDFbVBXJUb/b/jOzodsDCN9l7D3wa5h4nY2sUcfi+0+DWXRSnTxGOsaZt xKzodV0nBgLqFkzDGc+1Mp6NLHvE+N2wa/ZEhzUosGf7Gt5WWCJpSa7aoAHQwzqsDyoO nYchj1BZlCZKe8reTOkb95FWqbgOTyq9JGXZaYQ6FAt+J/UK0isyazxgSMRWu9vfK0zG TXgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780303458; x=1780908258; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fS2CUg/Sh/44DwNmonmJi8mUsAkNkldRmQVB8GPLmro=; b=tU37V0RAfL8lE+mG7tSifyIvt+1q7F3o8J2qAAnVRkmCl3JlQR+pI0kcbQwaNnG/Oc ZssEcH7HMJ7TCo/SBtubB1tYsLt6QbfrkVexkLdXM1Gy16N6dlwliigK6Z56vEpPAv1E vlNxkmHNignR0132uL0VVFwVhC02n9FNMkSKkXaQGoySi+KrYFtxrywNsiH5b8tKN4Sc +2+ScM4/NBIeXL7cezJos8u+PPl+w5G5W2oLi/fPG+96K2Nnm5x9ERul1SV3YU53qZCf kJZGXzAZnqZk9SfA2ksW3EqefIqLFPXY3vMAeGEkGGw081taQeAnHjqPJMcBDMPk0IXz iZxw== X-Forwarded-Encrypted: i=1; AFNElJ/YD0bxDmZt/jtZgCCH7nWu7KFJ0iDm595cWyH4UTpkbFYIOAozttABKRCn0Raj1kmSSiSXO3cKlcrjM34=@vger.kernel.org X-Gm-Message-State: AOJu0YwRy85Th3zfO+RN2h7KgNBbJ24V29dkk6YNrm3ogF60Jmk3yYSA NphvlKP3ADBGa1Q971UzRxjA7dcHyeito/V8REOVSY7IxieWPt9P/BX2 X-Gm-Gg: Acq92OFWwPATCm/oQDCmuraYa6mmhlebfTAR9z4s26aXrIkeMADNvqAULkv9P+/oDw1 24PWlmHaYOCMzonZlgVSs79p3pgJWReUN/HblZElcYdAx2LPComEUj/0nnrYVeLUCaIH4vTWmjS sh//QmXrTMRCLg+DsofbQUyiug3dTORxX5ETyGC0lzRjB3kxML92np94PuJMGivce1R8Dw88sZ0 117Z5R4JQdYtoZnHmLhrIf8Qj7wAdxtD515kEnpNa42dF/DeQubaX6ItbMgmlHEWTvqsm2f4de8 qyAUMRnJRS6TRjQj9QBPSvLvdA3OLyMP+V/b8VOBePGWP3/5E6jfnHOtoU/vugb6acWevd/bgST P9pV4vHNrGwDZKVHOkldpC+0jmFpIOiEkghRfsj+PvK5WGhX7/J2Y7eXaQmBn4L5iFQz2U2c1wD xpnVXA4H2DeRojYXk/T64J7L1mZ+kASoawSw== X-Received: by 2002:a17:902:f70d:b0:2bf:379b:53d2 with SMTP id d9443c01a7336-2bf379b561cmr100522325ad.15.1780303458099; Mon, 01 Jun 2026 01:44:18 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23c3eb31sm92807725ad.75.2026.06.01.01.44.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 01:44:17 -0700 (PDT) From: Inochi Amaoto To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Anup Patel , Atish Patra , Paolo Bonzini , Shuah Khan , Deepak Gupta , Thomas Huth , Charlie Jenkins , Sergey Matyukevich , Inochi Amaoto Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, Yixun Lan , Longbin Li , Quan Zhou Subject: [PATCH v2 7/7] KVM: riscv: selftests: add Zicfiss/Zicfilp extension to get-reg-list test Date: Mon, 1 Jun 2026 16:43:35 +0800 Message-ID: <20260601084336.2601675-8-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260601084336.2601675-1-inochiama@gmail.com> References: <20260601084336.2601675-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The KVM RISC-V allows Zicfiss/Zicfilp extensions for Guest/VM so add these extensions to get-reg-list test. Assisted-by: YuanSheng:claude-4.7-opus Co-developed-by: Quan Zhou Signed-off-by: Quan Zhou Signed-off-by: Inochi Amaoto --- tools/testing/selftests/kvm/riscv/get-reg-list.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/testing/selftests/kvm/riscv/get-reg-list.c b/tools/testi= ng/selftests/kvm/riscv/get-reg-list.c index d88edef77ccf..4fab3d2d0b43 100644 --- a/tools/testing/selftests/kvm/riscv/get-reg-list.c +++ b/tools/testing/selftests/kvm/riscv/get-reg-list.c @@ -89,6 +89,8 @@ bool filter_reg(__u64 reg) case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICBOP: case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICBOZ: case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICCRSE: + case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICFILP: + case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICFISS: case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICNTR: case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICOND: case KVM_REG_RISCV_ISA_EXT | KVM_REG_RISCV_ISA_SINGLE | KVM_RISCV_ISA_EXT= _ZICSR: @@ -552,6 +554,8 @@ static const char *isa_ext_single_id_to_str(__u64 reg_o= ff) KVM_ISA_EXT_ARR(ZICBOP), KVM_ISA_EXT_ARR(ZICBOZ), KVM_ISA_EXT_ARR(ZICCRSE), + KVM_ISA_EXT_ARR(ZICFILP), + KVM_ISA_EXT_ARR(ZICFISS), KVM_ISA_EXT_ARR(ZICNTR), KVM_ISA_EXT_ARR(ZICOND), KVM_ISA_EXT_ARR(ZICSR), @@ -715,6 +719,12 @@ static const char *sbi_fwft_id_to_str(__u64 reg_off) case 6: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_a= d_hw_updating.enable)"; case 7: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_a= d_hw_updating.flags)"; case 8: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_a= d_hw_updating.value)"; + case 9: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(landi= ng_pad.enable)"; + case 10: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(land= ing_pad.flags)"; + case 11: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(land= ing_pad.value)"; + case 12: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(shad= ow_stack.enable)"; + case 13: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(shad= ow_stack.flags)"; + case 14: return "KVM_REG_RISCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(shad= ow_stack.value)"; } return strdup_printf("KVM_REG_RISCV_SBI_FWFT | %lld /* UNKNOWN */", reg_o= ff); } @@ -911,6 +921,12 @@ static __u64 sbi_fwft_regs[] =3D { KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_ad_hw_updating.enable), KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_ad_hw_updating.flags), KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(pte_ad_hw_updating.value), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(landing_pad.enable), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(landing_pad.flags), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(landing_pad.value), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(shadow_stack.enable), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(shadow_stack.flags), + KVM_REG_RISCV | KVM_REG_SIZE_ULONG | KVM_REG_RISCV_SBI_STATE | KVM_REG_RI= SCV_SBI_FWFT | KVM_REG_RISCV_SBI_FWFT_REG(shadow_stack.value), }; =20 static __u64 zicbom_regs[] =3D { --=20 2.54.0