KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs

David Woodhouse posted 1 patch 3 months, 2 weeks ago
arch/arm64/kvm/vgic/vgic-its.c | 3 +++
1 file changed, 3 insertions(+)
KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
Posted by David Woodhouse 3 months, 2 weeks ago
From: David Woodhouse <dwmw@amazon.co.uk>

A preliminary version of a hack to invoke unmap_all_vpes() from an ioctl
didn't work very well. We eventually determined this was because we were
invoking it on the wrong file descriptor, but not getting an error.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 arch/arm64/kvm/vgic/vgic-its.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c
index 534049c7c94b..b34f8976c9cc 100644
--- a/arch/arm64/kvm/vgic/vgic-its.c
+++ b/arch/arm64/kvm/vgic/vgic-its.c
@@ -2694,6 +2694,9 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr)
 	case KVM_DEV_ARM_ITS_RESTORE_TABLES:
 		ret = abi->restore_tables(its);
 		break;
+	default:
+		ret = -ENXIO;
+		break;
 	}
 
 	mutex_unlock(&its->its_lock);
-- 
2.43.0


Re: KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
Posted by Oliver Upton 2 months, 2 weeks ago
On Mon, 23 Jun 2025 15:22:52 +0200, David Woodhouse wrote:
> A preliminary version of a hack to invoke unmap_all_vpes() from an ioctl
> didn't work very well. We eventually determined this was because we were
> invoking it on the wrong file descriptor, but not getting an error.
> 
> 

Applied to next, thanks!

[1/1] KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
      https://git.kernel.org/kvmarm/kvmarm/c/4530256f3699

--
Best,
Oliver
Re: KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
Posted by David Woodhouse 2 months, 2 weeks ago
On Mon, 2025-06-23 at 15:22 +0200, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> A preliminary version of a hack to invoke unmap_all_vpes() from an ioctl
> didn't work very well. We eventually determined this was because we were
> invoking it on the wrong file descriptor, but not getting an error.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>

Ping?
Re: KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
Posted by Eric Auger 3 months, 2 weeks ago
Hi David,

On 6/23/25 3:22 PM, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> A preliminary version of a hack to invoke unmap_all_vpes() from an ioctl
> didn't work very well. We eventually determined this was because we were
> invoking it on the wrong file descriptor, but not getting an error.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
In the corresponding doc (virt/kvm/devices/arm-vgic-its.rst)
it is said about possible returned values:
     -ENXIO  ITS not properly configured as required prior to setting
             this attribute
which does not exactly match your situation. Shouldn't we also update
the doc or change the returned value?

Thanks

Eric

> ---
>  arch/arm64/kvm/vgic/vgic-its.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c
> index 534049c7c94b..b34f8976c9cc 100644
> --- a/arch/arm64/kvm/vgic/vgic-its.c
> +++ b/arch/arm64/kvm/vgic/vgic-its.c
> @@ -2694,6 +2694,9 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr)
>  	case KVM_DEV_ARM_ITS_RESTORE_TABLES:
>  		ret = abi->restore_tables(its);
>  		break;
> +	default:
> +		ret = -ENXIO;
> +		break;
>  	}
>  
>  	mutex_unlock(&its->its_lock);
Re: KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
Posted by David Woodhouse 3 months, 2 weeks ago
On Tue, 2025-06-24 at 09:25 +0200, Eric Auger wrote:
> Hi David,
> 
> On 6/23/25 3:22 PM, David Woodhouse wrote:
> > From: David Woodhouse <dwmw@amazon.co.uk>
> > 
> > A preliminary version of a hack to invoke unmap_all_vpes() from an ioctl
> > didn't work very well. We eventually determined this was because we were
> > invoking it on the wrong file descriptor, but not getting an error.
> > 
> > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>
> In the corresponding doc (virt/kvm/devices/arm-vgic-its.rst)
> it is said about possible returned values:
>      -ENXIO  ITS not properly configured as required prior to setting
>              this attribute
> which does not exactly match your situation. Shouldn't we also update
> the doc or change the returned value?

Hi Eric, thanks for looking at this.

I think this is OK because the -ENXIO return is covered by the high-
level description of KVM_[GS]ET_DEVICE_ATTR in virt/kvm/api.rst:

Errors:

  =====   =============================================================
  ENXIO   The group or attribute is unknown/unsupported for this device
          or hardware support is missing.

Re: KVM: arm64: vgic-its: Return -ENXIO to invalid KVM_DEV_ARM_VGIC_GRP_CTRL attrs
Posted by Eric Auger 3 months, 2 weeks ago
Hi David,

On 6/24/25 11:01 AM, David Woodhouse wrote:
> On Tue, 2025-06-24 at 09:25 +0200, Eric Auger wrote:
>> Hi David,
>>
>> On 6/23/25 3:22 PM, David Woodhouse wrote:
>>> From: David Woodhouse <dwmw@amazon.co.uk>
>>>
>>> A preliminary version of a hack to invoke unmap_all_vpes() from an ioctl
>>> didn't work very well. We eventually determined this was because we were
>>> invoking it on the wrong file descriptor, but not getting an error.
>>>
>>> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>>
>> In the corresponding doc (virt/kvm/devices/arm-vgic-its.rst)
>> it is said about possible returned values:
>>      -ENXIO  ITS not properly configured as required prior to setting
>>              this attribute
>> which does not exactly match your situation. Shouldn't we also update
>> the doc or change the returned value?
> 
> Hi Eric, thanks for looking at this.
> 
> I think this is OK because the -ENXIO return is covered by the high-
> level description of KVM_[GS]ET_DEVICE_ATTR in virt/kvm/api.rst:
> 
> Errors:
> 
>   =====   =============================================================
>   ENXIO   The group or attribute is unknown/unsupported for this device
>           or hardware support is missing.
> 

Ah OK I missed that. Anyway that's not a big deal I think.

Reviewed-by: Eric Auger <eric.auger@redhat.com>

Eric