Lines Matching refs:args

26  * Stores the user specified args; it's passed to the guest and to every test
84 struct kvm_inject_args *args);
133 #define for_each_supported_inject_fn(args, t, f) \
135 if ((args)->kvm_supports_irqfd || (f)->cmd != KVM_INJECT_IRQFD)
137 #define for_each_supported_activate_fn(args, t, f) \
138 for_each_supported_inject_fn((args), (t), (f))
200 struct kvm_inject_args args = {
207 GUEST_SYNC(&args);
237 static void reset_priorities(struct test_args *args)
241 for (i = 0; i < args->nr_irqs; i++)
250 static void test_inject_fail(struct test_args *args,
262 static void guest_inject(struct test_args *args,
291 reset_priorities(args);
300 static void guest_restore_active(struct test_args *args,
335 if (args->eoi_split)
368 static void test_inject_preemption(struct test_args *args,
393 if (args->level_sensitive)
401 if (args->eoi_split)
412 reset_priorities(args);
415 static void test_injection(struct test_args *args, struct kvm_inject_desc *f)
417 uint32_t nr_irqs = args->nr_irqs;
420 guest_inject(args, MIN_SGI, 1, f->cmd);
421 guest_inject(args, 0, 16, f->cmd);
425 guest_inject(args, MIN_PPI, 1, f->cmd);
428 guest_inject(args, MIN_SPI, 1, f->cmd);
429 guest_inject(args, nr_irqs - 1, 1, f->cmd);
430 guest_inject(args, MIN_SPI, nr_irqs - MIN_SPI, f->cmd);
434 static void test_injection_failure(struct test_args *args,
437 uint32_t bad_intid[] = { args->nr_irqs, 1020, 1024, 1120, 5120, ~0U, };
441 test_inject_fail(args, bad_intid[i], f->cmd);
444 static void test_preemption(struct test_args *args, struct kvm_inject_desc *f)
453 test_inject_preemption(args, MIN_SGI, 4, f->cmd);
456 test_inject_preemption(args, MIN_PPI, 4, f->cmd);
459 test_inject_preemption(args, MIN_SPI, 4, f->cmd);
462 static void test_restore_active(struct test_args *args, struct kvm_inject_desc *f)
466 guest_restore_active(args, MIN_SGI, 4, f->cmd);
469 guest_restore_active(args, MIN_PPI, 4, f->cmd);
472 guest_restore_active(args, MIN_SPI, 4, f->cmd);
475 static void guest_code(struct test_args *args)
477 uint32_t i, nr_irqs = args->nr_irqs;
478 bool level_sensitive = args->level_sensitive;
489 gic_set_eoi_split(args->eoi_split);
491 reset_priorities(args);
500 for_each_supported_inject_fn(args, inject_fns, f) {
501 test_injection(args, f);
502 test_preemption(args, f);
503 test_injection_failure(args, f);
510 for_each_supported_activate_fn(args, set_active_fns, f)
511 test_restore_active(args, f);
721 struct kvm_inject_args *args)
726 kvm_args_gva = uc->args[1];
728 memcpy(args, kvm_args_hva, sizeof(struct kvm_inject_args));
731 static void print_args(struct test_args *args)
734 args->nr_irqs, args->level_sensitive,
735 args->eoi_split);
747 struct test_args args = {
755 print_args(&args);
762 /* Setup the guest args page (so it gets the args). */
764 memcpy(addr_gva2hva(vm, args_gva), &args, sizeof(args));
772 guest_irq_handlers[args.eoi_split][args.level_sensitive]);
780 run_guest_cmd(vcpu, gic_fd, &inject_args, &args);