[PATCH] KVM: arm64: selftests: Add support for GICv2 on v3

Ricardo Koller ricarkol at google.com
Thu Jul 14 11:30:17 PDT 2022


Hi Marc,

On Thu, Jul 14, 2022 at 04:41:08PM +0100, Marc Zyngier wrote:
> The current vgic_init test wrongly assumes that the host cannot
> multiple versions of the GIC architecture, while v2 emulation
> on v3 has almost always been supported (it was supported before
> the standalone v3 emulation).

Thanks for the fix. This was my mistake (also I was taking too long to
send the fix).

> 
> Tweak the test to support multiple GIC incarnations.
> 

Nit. You could add a fixes tag:

Fixes: 3f4db37e203b ("KVM: arm64: selftests: Make vgic_init gic version agnostic")

> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
>  tools/testing/selftests/kvm/aarch64/vgic_init.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testing/selftests/kvm/aarch64/vgic_init.c
> index 34379c98d2f4..21ba4002fc18 100644
> --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c
> +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c
> @@ -670,7 +670,7 @@ int test_kvm_device(uint32_t gic_dev_type)
>  
>  	if (!_kvm_create_device(v.vm, other, true, &fd)) {
>  		ret = _kvm_create_device(v.vm, other, false, &fd);
> -		TEST_ASSERT(ret && errno == EINVAL,
> +		TEST_ASSERT(ret && (errno == EINVAL || errno == EEXIST),
>  				"create GIC device while other version exists");
>  	}
>  
> @@ -698,6 +698,7 @@ int main(int ac, char **av)
>  {
>  	int ret;
>  	int pa_bits;
> +	int cnt_impl = 0;
>  
>  	pa_bits = vm_guest_mode_params[VM_MODE_DEFAULT].pa_bits;
>  	max_phys_size = 1ULL << pa_bits;
> @@ -706,17 +707,19 @@ int main(int ac, char **av)
>  	if (!ret) {
>  		pr_info("Running GIC_v3 tests.\n");
>  		run_tests(KVM_DEV_TYPE_ARM_VGIC_V3);
> -		return 0;
> +		cnt_impl++;
>  	}
>  
>  	ret = test_kvm_device(KVM_DEV_TYPE_ARM_VGIC_V2);
>  	if (!ret) {
>  		pr_info("Running GIC_v2 tests.\n");
>  		run_tests(KVM_DEV_TYPE_ARM_VGIC_V2);
> -		return 0;
> +		cnt_impl++;
>  	}
>  
> -	print_skip("No GICv2 nor GICv3 support");
> -	exit(KSFT_SKIP);
> +	if (!cnt_impl) {
> +		print_skip("No GICv2 nor GICv3 support");
> +		exit(KSFT_SKIP);
> +	}
>  	return 0;
>  }
> -- 
> 2.34.1
>

Reviewed-by: Ricardo Koller <ricarkol at google.com>



More information about the linux-arm-kernel mailing list