From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 0365826461F for ; Wed, 29 Jul 2026 23:25:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785367547; cv=none; b=R8vjEx21Mmpzhgv+cY+PkH+5MMV+WrPJV1m46yfoZt2CDwqAZTDGbV2lz000/zwuA/aJvBgJWLHNFh/AOLgaHAEffeAx/ZozZSrta2StMzlb/SiNr3EcTP7jefBOmyvtFP2jmdrdlc0W5UrGN470Ay495w3ZRV+fJj0pemQfoyU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785367547; c=relaxed/simple; bh=q8qlrs4nCmmr/1qrzy3ueNPoW25hLnxO8i8kBJxKgj4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WNFcv1iPjyd4ADd89DoMJCmTV980toRUOmkMI6qNRss5uQ9AO5qHrnL0564vDhOE/xq8QkZY9XN5zo4ujVvEVW1vVDJTxwZ3S+rdtVUgQj2vKxHG18x5WodrvmdJH5Lrxasfd0Y6BOH7lDZFtdXAk6HKHUUGNmvPWyx7Kv/Ky80= 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=hgqN7mSi; arc=none smtp.client-ip=209.85.216.43 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="hgqN7mSi" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-38101f85591so165711a91.1 for ; Wed, 29 Jul 2026 16:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785367545; x=1785972345; 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:content-type; bh=Ig1ihYaIcCdMTQNvyfvc5KxHcD85RFL0JcLOryGs+LA=; b=hgqN7mSiv1/t9TwapJHBm4YAAS6dgkdv+9KRUYz0Y4hBCv7S7G5a/GHjUxvZODwCwt rdByhdSdjY/2BhUyWYQ4Lk63NROJnN3OCO+KZAG09tS1rDIWvpxOyQIKc7Dc6g6v9x1g 5N8+a49+xxlpqbT7FmOC0gkJYXzyU09ljff14M6VQ1WZIh6sHLgSHtceMOw+Gf1OJE4s rp7KdPODv45OLEKIYikHIjCojPEE8yQjBj6l/s/nEuGF4hokUyAsOZa+kvnQ23wcal3M UdWAwBcsjQhS8sZye1iHUppf8kGVhLNwkIecP+JZrtVB0SMCRqfrLoGg0e0sYUk53yJn yIlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785367545; x=1785972345; 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:content-type; bh=Ig1ihYaIcCdMTQNvyfvc5KxHcD85RFL0JcLOryGs+LA=; b=El5KCoccxM3tjt6HZ18Ku38QutxiqPOabPuEZjM0Pw62Ue4j/ecgZhAxJrZuAX7rcM 9KnPAe7o3lW7TjyeUWO1/1dweOruLkK2wfORlad27mLHi8/xRiWVb6YFJexJqWb77Js/ FFj5Xcx5tIOvdqagxrFfbAYOAiVZ5cw7Tl3jlchTXb1DvzB4a8R6WcrsdgxRd1wrMJj7 hpGeEWebGJrzGrnxV63FdMUcdlp9TsHUHd42sPsU9lnkjlPVhdl8Q57MPdVbyPhEEjFd lxR5YPoJOQEwfdefe+kxyG6WilENw5UwfaboEXQODtudlaKgusouqQLP5zUqNZs43dm0 oxLA== X-Forwarded-Encrypted: i=1; AHgh+Rrp8a7hYY/EujI1rDNgEkBbnDdKGbw2imxEju6FaKn1ueDUlI1J/VEEu73NejPdKMSShLfsmBxD0D6R0uk=@vger.kernel.org X-Gm-Message-State: AOJu0YyirVGBFQDmktYkhxa+/dIVwt5Xm3c379pb+yVNZHgbQzqkb3qH qzB9dz5K29b5InjcdbRiBGNheOo4wJgJ/qKLevO7IlcyF1k3T8wJlXFp X-Gm-Gg: AR+sD12gVIpRo2zVbp/tT9BA4harjhtPRKd7p7/UaU4d4Ub5FBA//M0JvppMDHEKFAQ 78AIsoGKfLvqaLeShN81qiEXTNueO0CQApIVlBv8lz8DDQhsdnBwgM6jGiJhYwvL7+MiWaV2qFv yV2dxau3fog3/+OfJqI1uu6uGg4kwYK6hn4qfBKhho+8Ndv3stfrpDmR9HjI63C1jZbumPUZk7e AFzjm+1DCtOMXYbt1POZ/kY7Nzq7PFqvRo4vwf+CG+6zR4BzjDOtaxYqD4+p6Yuv/ITbUZtBEuI /TncSd6j4IRtoBDAgtUCGfC93CdkE0EdvdKeQNxQpC7iLh1fpiAyulkEqWu8gXyX3ZMv2hhten1 1LXHZcTOS0HfFoVCb5Nws3sAR05TjsqA69w/Y/M4wXX+GWhbr2rcsAFdAuVnrBrWTxSnY5xLQW6 8OEVJ40R4XUgJAD5SmAwz3EeQbinM2/6FY8pFMr64VOM3gquNLFRqJNfT8afk= X-Received: by 2002:a17:90b:2b4e:b0:37f:9e21:91d6 with SMTP id 98e67ed59e1d1-38f9bb15cd4mr230876a91.13.1785367545337; Wed, 29 Jul 2026 16:25:45 -0700 (PDT) Received: from localhost ([2001:19f0:8000:3e6e:5400:6ff:fe38:3d01]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f9b770e54sm90102a91.13.2026.07.29.16.25.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2026 16:25:44 -0700 (PDT) From: Inochi Amaoto To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Inochi Amaoto , kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v3 2/4] RISC-V: KVM: Add SBI FWFT validation support Date: Thu, 30 Jul 2026 07:25:23 +0800 Message-ID: <20260729232527.139183-3-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260729232527.139183-1-inochiama@gmail.com> References: <20260729232527.139183-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: 8bit Since the KVM SBI has extension parameters validation support, implement it for the SBI FWFT support. Signed-off-by: Inochi Amaoto Reviewed-by: Anup Patel --- arch/riscv/kvm/vcpu_sbi_fwft.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/arch/riscv/kvm/vcpu_sbi_fwft.c b/arch/riscv/kvm/vcpu_sbi_fwft.c index 03153fd8d15f..56fb59afe02a 100644 --- a/arch/riscv/kvm/vcpu_sbi_fwft.c +++ b/arch/riscv/kvm/vcpu_sbi_fwft.c @@ -603,6 +603,30 @@ static void kvm_sbi_ext_fwft_reset(struct kvm_vcpu *vcpu) } } +static void kvm_sbi_ext_fwft_validate(struct kvm_vcpu *vcpu) +{ + struct kvm_sbi_fwft *fwft = vcpu_to_fwft(vcpu); + const struct kvm_sbi_fwft_feature *feature; + struct kvm_sbi_fwft_config *conf; + int i; + + for (i = 0; i < ARRAY_SIZE(features); i++) { + feature = &features[i]; + conf = &fwft->configs[i]; + if (!conf->supported) + continue; + + if (!feature->supported || feature->supported(vcpu)) + continue; + + conf->enabled = false; + conf->flags = 0; + + if (feature->reset) + feature->reset(vcpu); + } +} + static unsigned long kvm_sbi_ext_fwft_get_reg_count(struct kvm_vcpu *vcpu) { unsigned long max_reg_count = sizeof(struct kvm_riscv_sbi_fwft) / sizeof(unsigned long); @@ -755,6 +779,7 @@ const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_fwft = { .init = kvm_sbi_ext_fwft_init, .deinit = kvm_sbi_ext_fwft_deinit, .reset = kvm_sbi_ext_fwft_reset, + .validate = kvm_sbi_ext_fwft_validate, .state_reg_subtype = KVM_REG_RISCV_SBI_FWFT, .get_state_reg_count = kvm_sbi_ext_fwft_get_reg_count, .get_state_reg_id = kvm_sbi_ext_fwft_get_reg_id, -- 2.55.0