KVM: selftests: aarch64: Add tests for LEVEL_INFO in vgic_irq
authorRicardo Koller <ricarkol@google.com>
Tue, 9 Nov 2021 02:39:01 +0000 (18:39 -0800)
committerMarc Zyngier <maz@kernel.org>
Tue, 28 Dec 2021 19:24:35 +0000 (19:24 +0000)
Add injection tests for the LEVEL_INFO ioctl (level-sensitive specific)
into vgic_irq.

Signed-off-by: Ricardo Koller <ricarkol@google.com>
Acked-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20211109023906.1091208-13-ricarkol@google.com
tools/testing/selftests/kvm/aarch64/vgic_irq.c

index a20d225..bc1b6fd 100644 (file)
@@ -60,6 +60,7 @@ typedef enum {
        KVM_INJECT_EDGE_IRQ_LINE = 1,
        KVM_SET_IRQ_LINE,
        KVM_SET_IRQ_LINE_HIGH,
+       KVM_SET_LEVEL_INFO_HIGH,
 } kvm_inject_cmd;
 
 struct kvm_inject_args {
@@ -98,6 +99,7 @@ static struct kvm_inject_desc inject_edge_fns[] = {
 static struct kvm_inject_desc inject_level_fns[] = {
        /*                                      sgi    ppi    spi */
        { KVM_SET_IRQ_LINE_HIGH,                false, true,  true },
+       { KVM_SET_LEVEL_INFO_HIGH,              false, true,  true },
        { 0, },
 };
 
@@ -406,6 +408,10 @@ static void run_guest_cmd(struct kvm_vm *vm, int gic_fd,
                for (i = intid; i < intid + num; i++)
                        kvm_arm_irq_line(vm, i, 1);
                break;
+       case KVM_SET_LEVEL_INFO_HIGH:
+               for (i = intid; i < intid + num; i++)
+                       kvm_irq_set_level_info(gic_fd, i, 1);
+               break;
        default:
                break;
        }