Home
last modified time | relevance | path

Searched full:intid (Results 1 – 25 of 36) sorted by relevance

12

/linux/tools/testing/selftests/kvm/arm64/
H A Dvgic_irq.c7 * host to inject a specific intid via a GUEST_SYNC call, and then checks that
81 #define _KVM_INJECT_MULTI(cmd, intid, num, expect_failure) \ argument
82 kvm_inject_call(cmd, intid, num, -1 /* not used */, expect_failure)
84 #define KVM_INJECT_MULTI(cmd, intid, num) \ argument
85 _KVM_INJECT_MULTI(cmd, intid, num, false)
87 #define _KVM_INJECT(cmd, intid, expect_failure) \ argument
88 _KVM_INJECT_MULTI(cmd, intid, 1, expect_failure)
90 #define KVM_INJECT(cmd, intid) \ argument
91 _KVM_INJECT_MULTI(cmd, intid, 1, false)
93 #define KVM_ACTIVATE(cmd, intid) \ argument
[all …]
H A Darch_timer.c55 static void guest_validate_irq(unsigned int intid, in guest_validate_irq() argument
64 if (intid == IAR_SPURIOUS) in guest_validate_irq()
94 GUEST_ASSERT_EQ(intid, timer_irq); in guest_validate_irq()
107 unsigned int intid = gic_get_and_ack_irq(); in guest_irq_handler() local
111 guest_validate_irq(intid, shared_data); in guest_irq_handler()
113 gic_set_eoi(intid); in guest_irq_handler()
H A Dvgic_lpi_stress.c54 u32 intid = gic_get_and_ack_irq(); in guest_irq_handler() local
56 if (intid == IAR_SPURIOUS) in guest_irq_handler()
59 GUEST_ASSERT(intid >= GIC_LPI_OFFSET); in guest_irq_handler()
60 gic_set_eoi(intid); in guest_irq_handler()
65 u32 coll_id, device_id, event_id, intid = GIC_LPI_OFFSET; in guest_setup_its_mappings() local
83 event_id, coll_id, intid++); in guest_setup_its_mappings()
/linux/tools/testing/selftests/kvm/lib/arm64/
H A Dgic.c62 void gic_irq_enable(unsigned int intid) in gic_irq_enable() argument
65 gic_common_ops->gic_irq_enable(intid); in gic_irq_enable()
68 void gic_irq_disable(unsigned int intid) in gic_irq_disable() argument
71 gic_common_ops->gic_irq_disable(intid); in gic_irq_disable()
77 unsigned int intid; in gic_get_and_ack_irq() local
82 intid = irqstat & GENMASK(23, 0); in gic_get_and_ack_irq()
84 return intid; in gic_get_and_ack_irq()
87 void gic_set_eoi(unsigned int intid) in gic_set_eoi() argument
90 gic_common_ops->gic_write_eoir(intid); in gic_set_eoi()
93 void gic_set_dir(unsigned int intid) in gic_set_dir() argument
[all …]
H A Dgic_v3.c77 static enum gicv3_intid_range get_intid_range(unsigned int intid) in get_intid_range() argument
79 switch (intid) { in get_intid_range()
168 static void gicv3_access_reg(u32 intid, u64 offset, in gicv3_access_reg() argument
173 enum gicv3_intid_range intid_range = get_intid_range(intid); in gicv3_access_reg()
186 index = intid % fields_per_reg; in gicv3_access_reg()
190 /* Set offset to the actual register holding intid's config. */ in gicv3_access_reg()
191 offset += (intid / fields_per_reg) * (reg_bits / 8); in gicv3_access_reg()
200 static void gicv3_write_reg(u32 intid, u64 offset, in gicv3_write_reg() argument
203 gicv3_access_reg(intid, offset, reg_bits, in gicv3_write_reg()
207 static u32 gicv3_read_reg(u32 intid, u64 offset, in gicv3_read_reg() argument
[all …]
H A Dvgic.c107 int _kvm_irq_set_level_info(int gic_fd, u32 intid, int level) in _kvm_irq_set_level_info() argument
109 u64 attr = 32 * (intid / 32); in _kvm_irq_set_level_info()
110 u64 index = intid % 32; in _kvm_irq_set_level_info()
125 void kvm_irq_set_level_info(int gic_fd, u32 intid, int level) in kvm_irq_set_level_info() argument
127 int ret = _kvm_irq_set_level_info(gic_fd, intid, level); in kvm_irq_set_level_info()
132 int _kvm_arm_irq_line(struct kvm_vm *vm, u32 intid, int level) in _kvm_arm_irq_line() argument
134 u32 irq = intid & KVM_ARM_IRQ_NUM_MASK; in _kvm_arm_irq_line()
136 TEST_ASSERT(!INTID_IS_SGI(intid), "KVM_IRQ_LINE's interface itself " in _kvm_arm_irq_line()
139 if (INTID_IS_PPI(intid)) in _kvm_arm_irq_line()
147 void kvm_arm_irq_line(struct kvm_vm *vm, u32 intid, int level) in kvm_arm_irq_line() argument
[all …]
H A Dgic_private.h13 void (*gic_irq_enable)(unsigned int intid);
14 void (*gic_irq_disable)(unsigned int intid);
20 void (*gic_set_priority)(u32 intid, u32 prio);
21 void (*gic_irq_set_active)(u32 intid);
22 void (*gic_irq_clear_active)(u32 intid);
23 bool (*gic_irq_get_active)(u32 intid);
24 void (*gic_irq_set_pending)(u32 intid);
25 void (*gic_irq_clear_pending)(u32 intid);
26 bool (*gic_irq_get_pending)(u32 intid);
27 void (*gic_irq_set_config)(u32 intid, bool is_edge);
[all …]
H A Dgic_v3_its.c233 u32 collection_id, u32 intid) in its_send_mapti_cmd() argument
240 its_encode_phys_id(&cmd, intid); in its_send_mapti_cmd()
/linux/tools/testing/selftests/kvm/include/arm64/
H A Dgic.h35 #define INTID_IS_SGI(intid) (0 <= (intid) && (intid) < MIN_PPI) argument
36 #define INTID_IS_PPI(intid) (MIN_PPI <= (intid) && (intid) < MIN_SPI) argument
37 #define INTID_IS_SPI(intid) (MIN_SPI <= (intid) && (intid) <= MAX_SPI) argument
40 void gic_irq_enable(unsigned int intid);
41 void gic_irq_disable(unsigned int intid);
43 void gic_set_eoi(unsigned int intid);
44 void gic_set_dir(unsigned int intid);
52 void gic_set_priority(u32 intid, u32 prio);
53 void gic_irq_set_active(unsigned int intid);
54 void gic_irq_clear_active(unsigned int intid);
[all …]
H A Dvgic.h26 void kvm_irq_set_level_info(int gic_fd, u32 intid, int level);
27 int _kvm_irq_set_level_info(int gic_fd, u32 intid, int level);
29 void kvm_arm_irq_line(struct kvm_vm *vm, u32 intid, int level);
30 int _kvm_arm_irq_line(struct kvm_vm *vm, u32 intid, int level);
33 void kvm_irq_write_ispendr(int gic_fd, u32 intid, struct kvm_vcpu *vcpu);
34 void kvm_irq_write_isactiver(int gic_fd, u32 intid, struct kvm_vcpu *vcpu);
H A Darch_timer.h160 u32 intid; in vcpu_get_vtimer_irq() local
165 vcpu_device_attr_get(vcpu, KVM_ARM_VCPU_TIMER_CTRL, attr, &intid); in vcpu_get_vtimer_irq()
167 return intid; in vcpu_get_vtimer_irq()
172 u32 intid; in vcpu_get_ptimer_irq() local
177 vcpu_device_attr_get(vcpu, KVM_ARM_VCPU_TIMER_CTRL, attr, &intid); in vcpu_get_ptimer_irq()
179 return intid; in vcpu_get_ptimer_irq()
/linux/arch/arm64/kvm/vgic/
H A Dvgic-debug.c30 unsigned long intid; member
44 * has exhausted the sequentially-allocated INTID space. in iter_next()
46 if (iter->intid >= (iter->nr_spis + VGIC_NR_PRIVATE_IRQS - 1)) { in iter_next()
47 if (iter->intid == VGIC_LPI_MAX_INTID + 1) in iter_next()
51 if (!xa_find_after(&dist->lpi_xa, &iter->intid, in iter_next()
53 iter->intid = VGIC_LPI_MAX_INTID + 1; in iter_next()
58 iter->intid++; in iter_next()
59 if (iter->intid == VGIC_NR_PRIVATE_IRQS && in iter_next()
61 iter->intid = 0; in iter_next()
68 unsigned long intid; in vgic_count_lpis() local
[all …]
H A Dvgic.c66 static struct vgic_irq *vgic_get_lpi(struct kvm *kvm, u32 intid) in vgic_get_lpi() argument
73 irq = xa_load(&dist->lpi_xa, intid); in vgic_get_lpi()
87 struct vgic_irq *vgic_get_irq(struct kvm *kvm, u32 intid) in vgic_get_irq() argument
94 if (intid >= VGIC_NR_PRIVATE_IRQS && in vgic_get_irq()
95 intid < (kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS)) { in vgic_get_irq()
96 intid = array_index_nospec(intid, kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS); in vgic_get_irq()
97 return &kvm->arch.vgic.spis[intid - VGIC_NR_PRIVATE_IRQS]; in vgic_get_irq()
101 if (irq_is_lpi(kvm, intid)) in vgic_get_irq()
102 return vgic_get_lpi(kvm, intid); in vgic_get_irq()
107 struct vgic_irq *vgic_get_vcpu_irq(struct kvm_vcpu *vcpu, u32 intid) in vgic_get_vcpu_irq() argument
[all …]
H A Dvgic-mmio-v2.c125 int intid = val & 0xf; in vgic_mmio_write_sgir() local
151 irq = vgic_get_vcpu_irq(vcpu, intid); in vgic_mmio_write_sgir()
165 u32 intid = VGIC_ADDR_TO_INTID(addr, 8); in vgic_mmio_read_target() local
170 struct vgic_irq *irq = vgic_get_vcpu_irq(vcpu, intid + i); in vgic_mmio_read_target()
184 u32 intid = VGIC_ADDR_TO_INTID(addr, 8); in vgic_mmio_write_target() local
190 if (intid < VGIC_NR_PRIVATE_IRQS) in vgic_mmio_write_target()
194 struct vgic_irq *irq = vgic_get_irq(vcpu->kvm, intid + i); in vgic_mmio_write_target()
211 u32 intid = addr & 0x0f; in vgic_mmio_read_sgipend() local
216 struct vgic_irq *irq = vgic_get_vcpu_irq(vcpu, intid + i); in vgic_mmio_read_sgipend()
229 u32 intid = addr & 0x0f; in vgic_mmio_write_sgipendc() local
[all …]
H A Dvgic-v3.c79 u32 intid; in vgic_v3_fold_lr() local
82 intid = val & ICH_LR_VIRTUAL_ID_MASK; in vgic_v3_fold_lr()
84 intid = val & GICH_LR_VIRTUALID; in vgic_v3_fold_lr()
85 is_v2_sgi = vgic_irq_is_sgi(intid); in vgic_v3_fold_lr()
88 irq = vgic_get_vcpu_irq(vcpu, intid); in vgic_v3_fold_lr()
94 if (irq->intid >= VGIC_MIN_LPI) in vgic_v3_fold_lr()
127 if (deactivated && lr_signals_eoi_mi(val) && vgic_valid_spi(vcpu->kvm, intid)) { in vgic_v3_fold_lr()
129 intid - VGIC_NR_PRIVATE_IRQS); in vgic_v3_fold_lr()
138 static void vgic_v3_deactivate_phys(u32 intid) in vgic_v3_deactivate_phys() argument
141 gic_insn(intid | FIELD_PREP(GICV5_GIC_CDDI_TYPE_MASK, 1), CDDI); in vgic_v3_deactivate_phys()
[all …]
H A Dvgic-v2.c58 u32 cpuid, intid = val & GICH_LR_VIRTUALID; in vgic_v2_fold_lr() local
66 if (lr_signals_eoi_mi(val) && vgic_valid_spi(vcpu->kvm, intid)) in vgic_v2_fold_lr()
68 intid - VGIC_NR_PRIVATE_IRQS); in vgic_v2_fold_lr()
70 irq = vgic_get_vcpu_irq(vcpu, intid); in vgic_v2_fold_lr()
77 if (irq->active && vgic_irq_is_sgi(intid)) in vgic_v2_fold_lr()
85 if (vgic_irq_is_sgi(intid)) in vgic_v2_fold_lr()
162 /* Snapshot CPUID, and remove it from the INTID */ in vgic_v2_deactivate()
226 u32 val = irq->intid; in vgic_v2_compute_lr()
233 if (vgic_irq_is_sgi(irq->intid)) in vgic_v2_compute_lr()
270 if (vgic_irq_is_sgi(irq->intid)) { in vgic_v2_compute_lr()
[all …]
H A Dvgic-mmio-v3.c223 int intid = VGIC_ADDR_TO_INTID(addr, 64); in vgic_mmio_read_irouter() local
224 struct vgic_irq *irq = vgic_get_irq(vcpu->kvm, intid); in vgic_mmio_read_irouter()
242 int intid = VGIC_ADDR_TO_INTID(addr, 64); in vgic_mmio_write_irouter() local
250 irq = vgic_get_irq(vcpu->kvm, intid); in vgic_mmio_write_irouter()
560 u32 intid; in vgic_mmio_write_invlpi() local
572 intid = lower_32_bits(val); in vgic_mmio_write_invlpi()
573 if (intid < VGIC_MIN_LPI) in vgic_mmio_write_invlpi()
578 irq = vgic_get_irq(vcpu->kvm, intid); in vgic_mmio_write_invlpi()
1161 u32 intid, u32 *val) in vgic_v3_line_level_info_uaccess() argument
1163 if (intid % 32) in vgic_v3_line_level_info_uaccess()
[all …]
H A Dvgic-v4.c110 vpe->sgi_config[irq->intid].enabled = irq->enabled; in vgic_v4_sync_sgi_config()
111 vpe->sgi_config[irq->intid].group = irq->group; in vgic_v4_sync_sgi_config()
112 vpe->sgi_config[irq->intid].priority = irq->priority; in vgic_v4_sync_sgi_config()
219 int mask = BIT(irq->intid % BITS_PER_BYTE); in vgic_v4_get_vlpi_state()
224 ptr = va + irq->intid / BITS_PER_BYTE; in vgic_v4_get_vlpi_state()
478 .vintid = irq->intid, in kvm_vgic_v4_set_forwarding()
H A Dvgic-its.c76 static struct vgic_irq *vgic_add_lpi(struct kvm *kvm, u32 intid, in vgic_add_lpi() argument
80 struct vgic_irq *irq = vgic_get_irq(kvm, intid), *oldirq; in vgic_add_lpi()
92 ret = xa_reserve_irq(&dist->lpi_xa, intid, GFP_KERNEL_ACCOUNT); in vgic_add_lpi()
103 irq->intid = intid; in vgic_add_lpi()
113 oldirq = xa_load(&dist->lpi_xa, intid); in vgic_add_lpi()
119 ret = xa_err(__xa_store(&dist->lpi_xa, intid, irq, 0)); in vgic_add_lpi()
125 xa_release(&dist->lpi_xa, intid); in vgic_add_lpi()
288 ret = kvm_read_guest_lock(kvm, propbase + irq->intid - GIC_LPI_OFFSET, in update_lpi_config()
393 unsigned long intid, flags; in its_sync_lpi_pending_table() local
399 xa_for_each(&dist->lpi_xa, intid, irq) { in its_sync_lpi_pending_table()
[all …]
H A Dvgic-init.c229 irq->intid = i + VGIC_NR_PRIVATE_IRQS; in kvm_vgic_dist_init()
253 /* Default GICv3 Maintenance Interrupt INTID, as per SBSA */
284 irq->intid = i; in vgic_allocate_private_irq()
309 u32 intid = vgic_v5_make_ppi(i); in vgic_v5_allocate_private_irq() local
317 irq->intid = intid; in vgic_v5_allocate_private_irq()
326 vgic_v5_set_ppi_ops(vcpu, intid); in vgic_v5_allocate_private_irq()
H A Dvgic-mmio.h210 u32 vgic_read_irq_line_level_info(struct kvm_vcpu *vcpu, u32 intid);
212 void vgic_write_irq_line_level_info(struct kvm_vcpu *vcpu, u32 intid,
/linux/tools/testing/selftests/kvm/loongarch/
H A Darch_timer.c14 unsigned int intid; in do_idle() local
20 intid = !!(estat & BIT(INT_TI)); in do_idle()
23 GUEST_ASSERT_EQ(intid, 1); in do_idle()
29 unsigned int intid; in guest_irq_handler() local
34 intid = !!(regs->estat & BIT(INT_TI)); in guest_irq_handler()
37 GUEST_ASSERT_EQ(intid, 1); in guest_irq_handler()
H A Dpmu_test.c106 unsigned int intid; in guest_irq_handler() local
109 intid = !!(regs->estat & BIT(INT_PMI)); in guest_irq_handler()
110 GUEST_ASSERT_EQ(intid, 1); in guest_irq_handler()
/linux/Documentation/devicetree/bindings/interrupt-controller/
H A Darm,gic-v5.yaml46 The 1st cell corresponds to the INTID.Type field in the INTID; 1 for PPI,
50 The 2nd cell contains the interrupt INTID.ID field.
/linux/tools/testing/selftests/kvm/riscv/
H A Darch_timer.c21 unsigned int intid = regs->cause & ~CAUSE_IRQ_FLAG; in guest_irq_handler() local
32 GUEST_ASSERT_EQ(intid, timer_irq); in guest_irq_handler()

12