Re: [PATCH v2] LoongArch: KVM: Advertise already-supported capabilities

From: Tao Cui

Date: Mon Aug 10 2026 - 00:08:56 EST


Hi, Huacai

I missed my Signed-off-by tag for this patch, my mistake.
Could you append:
Signed-off-by: Tao Cui <cuitao@xxxxxxxxxx>
If it’s not workable, no problem at all.

于 2026年8月9日 GMT+08:00 12:06:36,Huacai Chen <chenhuacai@xxxxxxxxxx> 写道:
>Applied, thanks.
>
>Huacai
>
>On Wed, Aug 5, 2026 at 1:46 PM Tao Cui <cui.tao@xxxxxxxxx> wrote:
>>
>> Several LoongArch KVM features are fully implemented but were never
>> reported through their standard KVM_CHECK_EXTENSION probes, so userspace
>> cannot discover them. Advertise the ones that already work and have a
>> real consumer:
>>
>> - KVM_CAP_STEAL_TIME: steal time works end-to-end (host-side record
>> plus guest paravirt side), and the probe returns kvm_pvtime_supported().
>>
>> - KVM_CAP_VCPU_ATTRIBUTES: per-vCPU device-attribute ioctls are
>> implemented (CPUCFG, PVTIME control); advertise the discovery cap.
>>
>> This adds no new functionality; it only makes existing features
>> discoverable via the standard probe.
>>
>> Signed-off-by: Tao Cui <cui.tao@xxxxxxxxx>
>> ---
>> Changes in v2:
>> - Drop KVM_CAP_IRQFD_RESAMPLE: the only consumer is VFIO INTx, which
>> needs IOMMU/VFIO not yet available on LoongArch.
>> - Drop KVM_CAP_VM_GPA_BITS: the cap implies a GPA-width setter that
>> LoongArch does not implement.
>>
>> arch/loongarch/kvm/vm.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/arch/loongarch/kvm/vm.c b/arch/loongarch/kvm/vm.c
>> index 1317c718f896..0a51931d6f6e 100644
>> --- a/arch/loongarch/kvm/vm.c
>> +++ b/arch/loongarch/kvm/vm.c
>> @@ -122,6 +122,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
>> case KVM_CAP_IOEVENTFD:
>> case KVM_CAP_MP_STATE:
>> case KVM_CAP_SET_GUEST_DEBUG:
>> + case KVM_CAP_VCPU_ATTRIBUTES:
>> r = 1;
>> break;
>> case KVM_CAP_NR_VCPUS:
>> @@ -136,6 +137,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
>> case KVM_CAP_NR_MEMSLOTS:
>> r = KVM_USER_MEM_SLOTS;
>> break;
>> + case KVM_CAP_STEAL_TIME:
>> + r = kvm_pvtime_supported();
>> + break;
>> default:
>> r = 0;
>> break;
>>