kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Suzuki K Poulose" <suzuki.poulose@arm.com>
Cc: kvm@vger.kernel.org, "Oliver Upton" <oupton@kernel.org>,
	"Marc Zyngier" <maz@kernel.org>,
	kvmarm@lists.linux.dev
Subject: Re: [PATCH v19 02/20] KVM: arm64: Disable Steal time accounting for protected guests
Date: Sun, 20 Sep 2026 21:44:21 +0000	[thread overview]
Message-ID: <20260920214421.D84B81F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260920212845.707-3-suzuki.poulose@arm.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] arm64: kvm: contradictory SMCCC advertisement for PV_TIME on protected VMs
--

commit db2c057e4ceefd58162587d4fd417788a4db3dbc
Author: Suzuki K Poulose <suzuki.poulose@arm.com>

    KVM: arm64: Disable Steal time accounting for protected guests
    
    PVTIME support is advertised by KVM_CAP_STEAL_TIME, which doesn't take into
    account the kvm instance. Even with that, a VMM could skip the CAP check
    and proceed to configure the PVTIME as we don't do further check on the
    DEVICE_CTRL. Tighten this up by passing the KVM instance around wherever
    possible and catch things early.

> diff --git a/arch/arm64/kvm/pvtime.c b/arch/arm64/kvm/pvtime.c
> index 4ceabaa4c30bd..579e0a4720ad2 100644
> --- a/arch/arm64/kvm/pvtime.c
> +++ b/arch/arm64/kvm/pvtime.c
> @@ -67,9 +67,9 @@ gpa_t kvm_init_stolen_time(struct kvm_vcpu *vcpu)
>  	return base;
>  }
>  
> -bool kvm_arm_pvtime_supported(void)
> +bool kvm_arm_pvtime_supported(struct kvm *kvm)
>  {
> -	return !!sched_info_on();
> +	return !!sched_info_on() && (!kvm || !kvm_vm_is_protected(kvm));
>  }

[Severity: Medium]
Does this create a contradictory SMCCC advertisement for protected VMs?

A protected guest querying ARM_SMCCC_ARCH_FEATURES_FUNC_ID for
ARM_SMCCC_HV_PV_TIME_FEATURES in kvm_smccc_call_handler() will receive
SMCCC_RET_SUCCESS because the KVM_REG_ARM_STD_HYP_BIT_PV_TIME bit is
still set in std_hyp_bmap:

arch/arm64/kvm/hypercalls.c:kvm_smccc_call_handler() {
	...
	case ARM_SMCCC_HV_PV_TIME_FEATURES:
		if (test_bit(KVM_REG_ARM_STD_HYP_BIT_PV_TIME,
			     &smccc_feat->std_hyp_bmap))
			val[0] = SMCCC_RET_SUCCESS;
		break;
	...
}

However, when the guest actually invokes the feature,
kvm_hypercall_pv_features() returns SMCCC_RET_NOT_SUPPORTED because
the IPA is unconfigured:

arch/arm64/kvm/pvtime.c:kvm_hypercall_pv_features() {
	...
	case ARM_SMCCC_HV_PV_TIME_FEATURES:
	case ARM_SMCCC_HV_PV_TIME_ST:
		if (vcpu->arch.steal.base != INVALID_GPA)
			val = SMCCC_RET_SUCCESS;
		break;
	...
}

This violates the SMCCC ABI by advertising ARM_SMCCC_HV_PV_TIME_FEATURES
as supported but returning NOT_SUPPORTED when it is invoked. Should the
KVM_REG_ARM_STD_HYP_BIT_PV_TIME bit be cleared for protected VMs?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260920212845.707-1-suzuki.poulose@arm.com?part=2

  reply	other threads:[~2026-09-20 21:44 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-20 21:28 [PATCH v19 00/20] KVM: arm64: CCA: Add basic plumbing for Realms Suzuki K Poulose
2026-09-20 21:28 ` [PATCH v19 01/20] KVM: arm64: protected VM: Handle user writes to CNTVCT_EL0/CNTPCT_EL0 Suzuki K Poulose
2026-09-22 19:25   ` Jonathan Cameron
2026-09-22 21:53     ` Suzuki K Poulose
2026-09-23 16:48       ` Jonathan Cameron
2026-09-22 22:04     ` Suzuki K Poulose
2026-09-23 16:51       ` Jonathan Cameron
2026-09-20 21:28 ` [PATCH v19 02/20] KVM: arm64: Disable Steal time accounting for protected guests Suzuki K Poulose
2026-09-20 21:44   ` sashiko-bot [this message]
2026-09-20 22:24     ` Suzuki K Poulose
2026-09-21 23:07       ` Suzuki K Poulose
2026-09-28  0:14   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 03/20] KVM: arm64: Include kvm_emulate.h in kvm/arm_psci.h Suzuki K Poulose
2026-09-22 19:32   ` Jonathan Cameron
2026-09-20 21:28 ` [PATCH v19 04/20] KVM: arm64: Avoid including linux/kvm_host.h in kvm_pgtable.h Suzuki K Poulose
2026-09-20 21:38   ` sashiko-bot
2026-09-21  8:25     ` Suzuki K Poulose
2026-09-20 21:28 ` [PATCH v19 05/20] KVM: arm64: Track the type of VM in kvm_arch Suzuki K Poulose
2026-09-20 21:38   ` sashiko-bot
2026-09-21  8:18     ` Suzuki K Poulose
2026-09-22 19:40   ` Jonathan Cameron
2026-09-23  6:05   ` Gavin Shan
2026-09-23  6:19     ` Gavin Shan
2026-09-23 10:24       ` Suzuki K Poulose
2026-09-23 13:23         ` Gavin Shan
2026-09-23 13:29           ` Gavin Shan
2026-09-23 13:54             ` Suzuki K Poulose
2026-09-23 16:27           ` Suzuki K Poulose
2026-09-23 21:37             ` Suzuki K Poulose
2026-09-24  1:11               ` Gavin Shan
2026-09-24  8:48                 ` Suzuki K Poulose
2026-09-24 10:37                   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 06/20] KVM: arm64: Refactor the vcpu_load to allow for VM specific callbacks Suzuki K Poulose
2026-09-22 19:57   ` Jonathan Cameron
2026-09-22 22:09     ` Suzuki K Poulose
2026-09-20 21:28 ` [PATCH v19 07/20] KVM: arm64: Add vcpu load/put call backs for flavors Suzuki K Poulose
2026-09-22 22:12   ` Jonathan Cameron
2026-09-20 21:28 ` [PATCH v19 08/20] KVM: arm64: Reuse kvm_stage2_unmap_range in kvm_unmap_gfn_range Suzuki K Poulose
2026-09-22 22:15   ` Jonathan Cameron
2026-09-28  0:17   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 09/20] KVM: arm64: Add VM specific callback for S2 MMU operations Suzuki K Poulose
2026-09-22 22:29   ` Jonathan Cameron
2026-09-22 23:21     ` Suzuki K Poulose
2026-09-23 16:54       ` Jonathan Cameron
2026-09-24 15:11         ` Suzuki K Poulose
2026-09-28  1:09   ` Gavin Shan
2026-09-28  1:25     ` Gavin Shan
2026-09-28  8:13       ` Suzuki K Poulose
2026-09-28  8:10     ` Suzuki K Poulose
2026-09-20 21:28 ` [PATCH v19 10/20] KVM: arm64: Abstract out memory abort handling Suzuki K Poulose
2026-09-22 22:38   ` Jonathan Cameron
2026-09-22 23:55     ` Suzuki K Poulose
2026-09-20 21:28 ` [PATCH v19 11/20] KVM: arm64: Mandate VGIC v3 for for VMs running on hyp that don't trust the host Suzuki K Poulose
2026-09-22 22:42   ` Jonathan Cameron
2026-09-22 23:38     ` Suzuki K Poulose
2026-09-28  1:10   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 12/20] KVM: arm64: CCA: Add a new mode for supporting Realm guests Suzuki K Poulose
2026-09-22 22:43   ` Jonathan Cameron
2026-09-20 21:28 ` [PATCH v19 13/20] KVM: arm64: CCA: Add VCPU load/put for Realms Suzuki K Poulose
2026-09-28  1:22   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 14/20] KVM: arm64: CCA: Add bare minimal S2 operations for Realm Suzuki K Poulose
2026-09-28  1:27   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 15/20] KVM: arm64: CCA: Introduce Realms Suzuki K Poulose
2026-09-22 22:49   ` Jonathan Cameron
2026-09-28  1:27   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 16/20] KVM: arm64: CCA: Don't expose unsupported capabilities for realm guests Suzuki K Poulose
2026-09-22 22:53   ` Jonathan Cameron
2026-09-20 21:28 ` [PATCH v19 17/20] KVM: arm64: CCA: WARN on injected undef exceptions Suzuki K Poulose
2026-09-22 22:54   ` Jonathan Cameron
2026-09-28  1:28   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 18/20] KVM: arm64: CCA: Support timers in realm RECs Suzuki K Poulose
2026-09-20 21:28 ` [PATCH v19 19/20] KVM: arm64: CCA: Expose SVE VL register before VCPU finalization Suzuki K Poulose
2026-09-28  1:29   ` Gavin Shan
2026-09-20 21:28 ` [PATCH v19 20/20] KVM: arm64: CCA: Control user register access for Realms Suzuki K Poulose
2026-09-28  1:30   ` Gavin Shan
2026-09-24 10:40 ` [PATCH v19 00/20] KVM: arm64: CCA: Add basic plumbing " Gavin Shan
2026-09-24 10:49   ` Suzuki K Poulose

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260920214421.D84B81F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=maz@kernel.org \
    --cc=oupton@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=suzuki.poulose@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).