Lines Matching full:intid
7 * host to inject a specific intid via a GUEST_SYNC call, and then checks that
80 #define _KVM_INJECT_MULTI(cmd, intid, num, expect_failure) \
81 kvm_inject_call(cmd, intid, num, -1 /* not used */, expect_failure)
83 #define KVM_INJECT_MULTI(cmd, intid, num) \
84 _KVM_INJECT_MULTI(cmd, intid, num, false)
86 #define _KVM_INJECT(cmd, intid, expect_failure) \
87 _KVM_INJECT_MULTI(cmd, intid, 1, expect_failure)
89 #define KVM_INJECT(cmd, intid) \
90 _KVM_INJECT_MULTI(cmd, intid, 1, false)
92 #define KVM_ACTIVATE(cmd, intid) \
93 kvm_inject_call(cmd, intid, 1, 1, false);
161 static void guest_set_irq_line(uint32_t intid, uint32_t level);
165 uint32_t intid = gic_get_and_ack_irq();
167 if (intid == IAR_SPURIOUS)
170 GUEST_ASSERT(gic_irq_get_active(intid));
173 GUEST_ASSERT(!gic_irq_get_pending(intid));
176 guest_set_irq_line(intid, 0);
178 GUEST_ASSERT(intid < MAX_SPI);
179 irqnr_received[intid] += 1;
182 gic_set_eoi(intid);
185 gic_set_dir(intid);
187 GUEST_ASSERT(!gic_irq_get_active(intid));
188 GUEST_ASSERT(!gic_irq_get_pending(intid));
239 static void guest_set_irq_line(uint32_t intid, uint32_t level)
241 kvm_inject_call(KVM_SET_IRQ_LINE, intid, 1, level, false);
245 uint32_t intid, kvm_inject_cmd cmd)
249 _KVM_INJECT(cmd, intid, true);
297 uint32_t prio, intid, ap1r;
302 * in descending order, so intid+1 can preempt intid.
306 intid = i + first_intid;
307 gic_set_priority(intid, prio);
315 intid = i + first_intid;
316 KVM_ACTIVATE(cmd, intid);
326 intid = num - i - 1 + first_intid;
327 gic_set_eoi(intid);
329 gic_set_dir(intid);
346 uint32_t intid;
350 intid = gic_get_and_ack_irq();
351 } while (intid == IAR_SPURIOUS);
353 return intid;
365 uint32_t intid, prio, step = KVM_PRIO_STEPS;
369 * in descending order, so intid+1 can preempt intid.
373 intid = i + first_intid;
374 gic_set_priority(intid, prio);
381 intid = i + first_intid;
382 KVM_INJECT(cmd, intid);
385 GUEST_ASSERT_EQ(tmp, intid);
387 guest_set_irq_line(intid, 0);
392 intid = num - i - 1 + first_intid;
393 gic_set_eoi(intid);
395 gic_set_dir(intid);
509 static void kvm_irq_line_check(struct kvm_vm *vm, uint32_t intid, int level,
515 kvm_arm_irq_line(vm, intid, level);
517 /* The interface doesn't allow larger intid's. */
518 if (intid > KVM_ARM_IRQ_NUM_MASK)
521 ret = _kvm_arm_irq_line(vm, intid, level);
523 "Bad intid %i did not cause KVM_IRQ_LINE "
524 "error: rc: %i errno: %i", intid, ret, errno);
528 void kvm_irq_set_level_info_check(int gic_fd, uint32_t intid, int level,
532 kvm_irq_set_level_info(gic_fd, intid, level);
534 int ret = _kvm_irq_set_level_info(gic_fd, intid, level);
537 * are not level-sensitive). It only checks for intid to not
539 * are supposed to mask the intid with 0x3ff (1023).
541 if (intid > VGIC_MAX_RESERVED)
543 "Bad intid %i did not cause VGIC_GRP_LEVEL_INFO "
544 "error: rc: %i errno: %i", intid, ret, errno);
547 "for intid %i failed, rc: %i errno: %i",
548 intid, ret, errno);
553 uint32_t intid, uint32_t num, uint32_t kvm_max_routes,
563 for (i = intid; i < (uint64_t)intid + num; i++)
571 if (((uint64_t)intid + num - 1 - MIN_SPI) >= KVM_IRQCHIP_NUM_PINS)
573 "Bad intid %u did not cause KVM_SET_GSI_ROUTING "
574 "error: rc: %i errno: %i", intid, ret, errno);
577 "for intid %i failed, rc: %i errno: %i",
578 intid, ret, errno);
582 static void kvm_irq_write_ispendr_check(int gic_fd, uint32_t intid,
594 kvm_irq_write_ispendr(gic_fd, intid, vcpu);
598 uint32_t intid, uint32_t num, uint32_t kvm_max_routes,
611 if (INTID_IS_SGI(intid) || INTID_IS_PPI(intid))
614 kvm_set_gsi_routing_irqchip_check(vm, intid, num,
623 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++)
626 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++) {
631 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++) {
638 for (f = 0, i = intid; i < (uint64_t)intid + num; i++, f++)
642 /* handles the valid case: intid=0xffffffff num=1 */
653 uint32_t intid = inject_args->first_intid;
661 /* handles the valid case: intid=0xffffffff num=1 */
662 assert(intid < UINT_MAX - num || num == 1);
666 for_each_intid(intid, num, tmp, i)
669 for_each_intid(intid, num, tmp, i)
674 for_each_intid(intid, num, tmp, i)
679 for_each_intid(intid, num, tmp, i)
684 for_each_intid(intid, num, tmp, i)
689 kvm_routing_and_irqfd_check(vm, intid, num,
694 for (i = intid; i < intid + num; i++)
699 for (i = intid; i < intid + num; i++)