All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.