Lines Matching full:intid

7  * host to inject a specific intid via a GUEST_SYNC call, and then checks that
86 #define _KVM_INJECT_MULTI(cmd, intid, num, expect_failure) \ argument
87 kvm_inject_call(cmd, intid, num, -1 /* not used */, expect_failure)
89 #define KVM_INJECT_MULTI(cmd, intid, num) \ argument
90 _KVM_INJECT_MULTI(cmd, intid, num, false)
92 #define _KVM_INJECT(cmd, intid, expect_failure) \ argument
93 _KVM_INJECT_MULTI(cmd, intid, 1, expect_failure)
95 #define KVM_INJECT(cmd, intid) \ argument
96 _KVM_INJECT_MULTI(cmd, intid, 1, false)
98 #define KVM_ACTIVATE(cmd, intid) \ argument
99 kvm_inject_call(cmd, intid, 1, 1, false);
167 static void guest_set_irq_line(uint32_t intid, uint32_t level);
171 uint32_t intid = gic_get_and_ack_irq(); in guest_irq_generic_handler() local
173 if (intid == IAR_SPURIOUS) in guest_irq_generic_handler()
176 GUEST_ASSERT(gic_irq_get_active(intid)); in guest_irq_generic_handler()
179 GUEST_ASSERT(!gic_irq_get_pending(intid)); in guest_irq_generic_handler()
182 guest_set_irq_line(intid, 0); in guest_irq_generic_handler()
184 GUEST_ASSERT(intid < MAX_SPI); in guest_irq_generic_handler()
185 irqnr_received[intid] += 1; in guest_irq_generic_handler()
188 gic_set_eoi(intid); in guest_irq_generic_handler()
191 gic_set_dir(intid); in guest_irq_generic_handler()
193 GUEST_ASSERT(!gic_irq_get_active(intid)); in guest_irq_generic_handler()
194 GUEST_ASSERT(!gic_irq_get_pending(intid)); in guest_irq_generic_handler()
245 static void guest_set_irq_line(uint32_t intid, uint32_t level) in guest_set_irq_line() argument
247 kvm_inject_call(KVM_SET_IRQ_LINE, intid, 1, level, false); in guest_set_irq_line()
251 uint32_t intid, kvm_inject_cmd cmd) in test_inject_fail() argument
255 _KVM_INJECT(cmd, intid, true); in test_inject_fail()
304 uint32_t prio, intid, ap1r; in guest_restore_active() local
309 * in descending order, so intid+1 can preempt intid. in guest_restore_active()
313 intid = i + first_intid; in guest_restore_active()
314 gic_set_priority(intid, prio); in guest_restore_active()
322 intid = i + first_intid; in guest_restore_active()
323 KVM_ACTIVATE(cmd, intid); in guest_restore_active()
333 intid = num - i - 1 + first_intid; in guest_restore_active()
334 gic_set_eoi(intid); in guest_restore_active()
336 gic_set_dir(intid); in guest_restore_active()
353 uint32_t intid; in wait_for_and_activate_irq() local
357 intid = gic_get_and_ack_irq(); in wait_for_and_activate_irq()
358 } while (intid == IAR_SPURIOUS); in wait_for_and_activate_irq()
360 return intid; in wait_for_and_activate_irq()
372 uint32_t intid, prio, step = KVM_PRIO_STEPS; in test_inject_preemption() local
376 * in descending order, so intid+1 can preempt intid. in test_inject_preemption()
380 intid = i + first_intid; in test_inject_preemption()
381 gic_set_priority(intid, prio); in test_inject_preemption()
388 intid = i + first_intid; in test_inject_preemption()
389 KVM_INJECT(cmd, intid); in test_inject_preemption()
392 GUEST_ASSERT_EQ(tmp, intid); in test_inject_preemption()
394 guest_set_irq_line(intid, 0); in test_inject_preemption()
399 intid = num - i - 1 + first_intid; in test_inject_preemption()
400 gic_set_eoi(intid); in test_inject_preemption()
402 gic_set_dir(intid); in test_inject_preemption()
516 static void kvm_irq_line_check(struct kvm_vm *vm, uint32_t intid, int level, in kvm_irq_line_check() argument
522 kvm_arm_irq_line(vm, intid, level); in kvm_irq_line_check()
524 /* The interface doesn't allow larger intid's. */ in kvm_irq_line_check()
525 if (intid > KVM_ARM_IRQ_NUM_MASK) in kvm_irq_line_check()
528 ret = _kvm_arm_irq_line(vm, intid, level); in kvm_irq_line_check()
530 "Bad intid %i did not cause KVM_IRQ_LINE " in kvm_irq_line_check()
531 "error: rc: %i errno: %i", intid, ret, errno); in kvm_irq_line_check()
535 void kvm_irq_set_level_info_check(int gic_fd, uint32_t intid, int level, in kvm_irq_set_level_info_check() argument
539 kvm_irq_set_level_info(gic_fd, intid, level); in kvm_irq_set_level_info_check()
541 int ret = _kvm_irq_set_level_info(gic_fd, intid, level); in kvm_irq_set_level_info_check()
544 * are not level-sensitive). It only checks for intid to not in kvm_irq_set_level_info_check()
546 * are supposed to mask the intid with 0x3ff (1023). in kvm_irq_set_level_info_check()
548 if (intid > VGIC_MAX_RESERVED) in kvm_irq_set_level_info_check()
550 "Bad intid %i did not cause VGIC_GRP_LEVEL_INFO " in kvm_irq_set_level_info_check()
551 "error: rc: %i errno: %i", intid, ret, errno); in kvm_irq_set_level_info_check()
554 "for intid %i failed, rc: %i errno: %i", in kvm_irq_set_level_info_check()
555 intid, ret, errno); in kvm_irq_set_level_info_check()
560 uint32_t intid, uint32_t num, uint32_t kvm_max_routes, in kvm_set_gsi_routing_irqchip_check() argument
570 for (i = intid; i < (uint64_t)intid + num; i++) in kvm_set_gsi_routing_irqchip_check()
578 if (((uint64_t)intid + num - 1 - MIN_SPI) >= KVM_IRQCHIP_NUM_PINS) in kvm_set_gsi_routing_irqchip_check()
580 "Bad intid %u did not cause KVM_SET_GSI_ROUTING " in kvm_set_gsi_routing_irqchip_check()
581 "error: rc: %i errno: %i", intid, ret, errno); in kvm_set_gsi_routing_irqchip_check()
584 "for intid %i failed, rc: %i errno: %i", in kvm_set_gsi_routing_irqchip_check()
585 intid, ret, errno); in kvm_set_gsi_routing_irqchip_check()
589 static void kvm_irq_write_ispendr_check(int gic_fd, uint32_t intid, in kvm_irq_write_ispendr_check() argument
601 kvm_irq_write_ispendr(gic_fd, intid, vcpu); in kvm_irq_write_ispendr_check()
605 uint32_t intid, uint32_t num, uint32_t kvm_max_routes, in kvm_routing_and_irqfd_check() argument
618 if (INTID_IS_SGI(intid) || INTID_IS_PPI(intid)) in kvm_routing_and_irqfd_check()
621 kvm_set_gsi_routing_irqchip_check(vm, intid, num, in kvm_routing_and_irqfd_check()
630 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++) { in kvm_routing_and_irqfd_check()
635 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++) { in kvm_routing_and_irqfd_check()
644 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++) { in kvm_routing_and_irqfd_check()
651 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++) in kvm_routing_and_irqfd_check()
655 /* handles the valid case: intid=0xffffffff num=1 */
666 uint32_t intid = inject_args->first_intid; in run_guest_cmd() local
674 /* handles the valid case: intid=0xffffffff num=1 */ in run_guest_cmd()
675 assert(intid < UINT_MAX - num || num == 1); in run_guest_cmd()
679 for_each_intid(intid, num, tmp, i) in run_guest_cmd()
682 for_each_intid(intid, num, tmp, i) in run_guest_cmd()
687 for_each_intid(intid, num, tmp, i) in run_guest_cmd()
692 for_each_intid(intid, num, tmp, i) in run_guest_cmd()
697 for_each_intid(intid, num, tmp, i) in run_guest_cmd()
702 kvm_routing_and_irqfd_check(vm, intid, num, in run_guest_cmd()
707 for (i = intid; i < intid + num; i++) in run_guest_cmd()
712 for (i = intid; i < intid + num; i++) in run_guest_cmd()