/xen/tools/libxc/ |
A D | xc_physdev.c | 39 int *pirq) in xc_physdev_map_pirq() argument 44 if ( !pirq ) in xc_physdev_map_pirq() 53 map.pirq = *pirq < 0 ? index : *pirq; in xc_physdev_map_pirq() 58 *pirq = map.pirq; in xc_physdev_map_pirq() 66 int *pirq, in xc_physdev_map_pirq_msi() argument 75 if ( !pirq ) in xc_physdev_map_pirq_msi() 84 map.pirq = *pirq; in xc_physdev_map_pirq_msi() 93 *pirq = map.pirq; in xc_physdev_map_pirq_msi() 100 int pirq) in xc_physdev_unmap_pirq() argument 107 unmap.pirq = pirq; in xc_physdev_unmap_pirq()
|
A D | xc_flask.c | 263 int xc_flask_add_pirq(xc_interface *xch, unsigned int pirq, char *scontext) in xc_flask_add_pirq() argument 265 return xc_flask_add(xch, OCON_PIRQ, pirq, pirq, scontext); in xc_flask_add_pirq() 297 int xc_flask_del_pirq(xc_interface *xch, unsigned int pirq) in xc_flask_del_pirq() argument 299 return xc_flask_del(xch, OCON_PIRQ, pirq, pirq); in xc_flask_del_pirq()
|
/xen/xen/include/xen/ |
A D | irq.h | 129 struct pirq { struct 130 int pirq; argument 142 extern struct pirq *pirq_get_info(struct domain *, int pirq); 145 const struct pirq *__pi = pirq_info(d, p); \ 148 #define pirq_to_evtchn(d, pirq) pirq_field(d, pirq, evtchn, 0) argument 149 #define pirq_masked(d, pirq) pirq_field(d, pirq, masked, 0) argument 153 #define pirq_cleanup_check(pirq, d) \ argument 154 ((pirq)->evtchn ? pirq_cleanup_check(pirq, d) : (void)0) 156 extern void pirq_guest_eoi(struct pirq *); 165 const struct pirq *, unsigned long *pflags); [all …]
|
A D | pci.h | 210 struct pirq; 211 int msixtbl_pt_register(struct domain *, struct pirq *, uint64_t gtable); 212 void msixtbl_pt_unregister(struct domain *, struct pirq *);
|
A D | iommu.h | 179 struct pirq; 180 int hvm_do_IRQ_dpci(struct domain *, struct pirq *);
|
A D | domain.h | 48 struct pirq *alloc_pirq_struct(struct domain *);
|
/xen/xen/arch/x86/ |
A D | irq.c | 1241 radix_tree_int_to_ptr(pirq->pirq)); in set_domain_irq_pirq() 1300 struct pirq *pirq = xzalloc_bytes(sz); in alloc_pirq_struct() local 1333 if ( radix_tree_delete(&d->pirq_tree, pirq->pirq) != pirq ) 1399 void pirq_guest_eoi(struct pirq *pirq) in pirq_guest_eoi() argument 1472 pirq = pirqs[i]->pirq; in pirq_guest_unmask() 1656 set_pirq_eoi(v->domain, pirq->pirq); in pirq_guest_bind() 1658 clear_pirq_eoi(v->domain, pirq->pirq); in pirq_guest_bind() 1685 d->domain_id, pirq->pirq); in __pirq_guest_unbind() 1817 d->domain_id, pirq->pirq); in pirq_guest_force_unbind() 2316 if ( (pirq < 0) || (pirq >= d->nr_pirqs) ) in unmap_domain_pirq() [all …]
|
A D | physdev.c | 23 int physdev_unmap_pirq(domid_t, int pirq); 67 *pirq = machine_gsi; in physdev_hvm_map_pirq() 68 ret = (*pirq > 0) ? 0 : *pirq; in physdev_hvm_map_pirq() 74 if ( *pirq < 0 ) in physdev_hvm_map_pirq() 167 ret = unmap_domain_pirq(d, pirq); in physdev_unmap_pirq() 187 struct pirq *pirq; in do_physdev_op() local 196 pirq = pirq_info(currd, eoi.irq); in do_physdev_op() 197 if ( !pirq ) { in do_physdev_op() 202 evtchn_unmask(pirq->evtchn); in do_physdev_op() 204 pirq_guest_eoi(pirq); in do_physdev_op() [all …]
|
/xen/xen/drivers/passthrough/ |
A D | io.c | 287 if ( pirq < 0 || pirq >= d->nr_pirqs ) in pt_irq_create_bind() 635 struct pirq *pirq; in pt_irq_destroy_bind() local 811 pirq = pirqs[i]->pirq; in pt_pirq_iterate() 820 int hvm_do_IRQ_dpci(struct domain *d, struct pirq *pirq) in hvm_do_IRQ_dpci() argument 844 struct pirq *pirq = dpci_pirq(pirq_dpci); in __msi_pirq_eoi() local 899 struct pirq *pirq = dpci_pirq(pirq_dpci); in hvm_dirq_assist() local 925 hvm_gsi_assert(d, pirq->pirq); in hvm_dirq_assist() 953 static void hvm_pirq_eoi(struct pirq *pirq, in hvm_pirq_eoi() argument 958 if ( !pirq ) in hvm_pirq_eoi() 983 struct pirq *pirq = pirq_info(d, girq->machine_gsi); in __hvm_dpci_eoi() local [all …]
|
/xen/xen/include/asm-x86/ |
A D | irq.h | 134 struct pirq; 145 #define pirq_dpci(pirq) ((pirq) ? &(pirq)->arch.hvm.dpci : NULL) argument 146 #define dpci_pirq(pd) container_of(pd, struct pirq, arch.hvm.dpci) 150 int map_domain_pirq(struct domain *d, int pirq, int irq, int type, 152 int unmap_domain_pirq(struct domain *d, int pirq); 156 int map_domain_emuirq_pirq(struct domain *d, int pirq, int irq); 157 int unmap_domain_pirq_emuirq(struct domain *d, int pirq); 196 #define domain_pirq_to_irq(d, pirq) pirq_field(d, pirq, arch.irq, 0) argument 202 #define domain_pirq_to_emuirq(d, pirq) pirq_field(d, pirq, \ argument
|
A D | iommu.h | 117 int pi_update_irte(const struct pi_desc *pi_desc, const struct pirq *pirq,
|
/xen/xen/arch/x86/hvm/ |
A D | vmsi.c | 459 int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable) in msixtbl_pt_register() argument 530 void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq) in msixtbl_pt_unregister() argument 690 .machine_irq = pirq + i, in vpci_msi_update() 748 int rc, pirq = INVALID_PIRQ; in vpci_msi_enable() local 775 return pirq; in vpci_msi_enable() 787 msi->arch.pirq = rc; in vpci_msi_arch_enable() 799 ASSERT(pirq != INVALID_PIRQ); in vpci_msi_disable() 823 msi->arch.pirq = INVALID_PIRQ; in vpci_msi_arch_disable() 828 msi->arch.pirq = INVALID_PIRQ; in vpci_msi_arch_init() 841 msi->arch.pirq); in vpci_msi_arch_print() [all …]
|
A D | irq.c | 31 bool hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq) in hvm_domain_use_pirq() argument 33 return is_hvm_domain(d) && pirq && pirq->arch.hvm.emuirq != IRQ_UNBOUND; in hvm_domain_use_pirq() 39 struct pirq *pirq = in assert_gsi() local 42 if ( hvm_domain_use_pirq(d, pirq) ) in assert_gsi() 44 send_guest_pirq(d, pirq); in assert_gsi() 94 struct pirq *pirq = in deassert_irq() local 97 if ( !hvm_domain_use_pirq(d, pirq) ) in deassert_irq() 396 int pirq = ((addr >> 32) & 0xffffff00) | dest; in hvm_inject_msi() local 398 if ( pirq > 0 ) in hvm_inject_msi() 400 struct pirq *info = pirq_info(d, pirq); in hvm_inject_msi() [all …]
|
A D | vioapic.c | 177 int ret, pirq = gsi; in vioapic_hwdom_map_gsi() local 192 ret = allocate_and_map_gsi_pirq(currd, pirq, &pirq); in vioapic_hwdom_map_gsi() 207 unmap_domain_pirq(currd, pirq); in vioapic_hwdom_map_gsi()
|
/xen/xen/common/ |
A D | event_channel.c | 529 evtchn_from_port(d, chn->u.pirq.prev_port)->u.pirq.next_port = in unlink_pirq_port() 534 evtchn_from_port(d, chn->u.pirq.next_port)->u.pirq.prev_port = in unlink_pirq_port() 545 int port = 0, pirq = bind->pirq; in evtchn_bind_pirq() local 548 if ( (pirq < 0) || (pirq >= d->nr_pirqs) ) in evtchn_bind_pirq() 582 chn->u.pirq.irq = pirq; in evtchn_bind_pirq() 637 struct pirq *pirq = pirq_info(d1, chn1->u.pirq.irq); in evtchn_close() local 639 if ( !pirq ) in evtchn_close() 648 unmap_domain_pirq_emuirq(d1, pirq->pirq); in evtchn_close() 854 void send_guest_pirq(struct domain *d, const struct pirq *pirq) in send_guest_pirq() argument 865 if ( pirq == NULL || (port = pirq->evtchn) == 0 ) in send_guest_pirq() [all …]
|
A D | domain.c | 1562 struct pirq *pirq_get_info(struct domain *d, int pirq) in pirq_get_info() argument 1564 struct pirq *info = pirq_info(d, pirq); in pirq_get_info() 1568 info->pirq = pirq; in pirq_get_info() 1569 if ( radix_tree_insert(&d->pirq_tree, pirq, info) ) in pirq_get_info() 1581 xfree(container_of(head, struct pirq, rcu_head)); in _free_pirq_struct() 1586 struct pirq *pirq = ptr; in free_pirq_struct() local 1588 call_rcu(&pirq->rcu_head, _free_pirq_struct); in free_pirq_struct()
|
/xen/xen/include/asm-arm/ |
A D | irq.h | 71 #define domain_pirq_to_irq(d, pirq) (pirq) argument 84 #define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq))) argument
|
/xen/xen/include/public/ |
A D | physdev.h | 166 int pirq; member 183 int pirq; member 264 uint32_t pirq; member
|
A D | event_channel.h | 159 uint32_t pirq; member 230 uint32_t pirq; /* EVTCHNSTAT_pirq */ member
|
/xen/xen/arch/arm/ |
A D | irq.c | 580 struct pirq *alloc_pirq_struct(struct domain *d) in alloc_pirq_struct() 590 int pirq_guest_bind(struct vcpu *v, struct pirq *pirq, int will_share) in pirq_guest_bind() argument 595 void pirq_guest_unbind(struct domain *d, struct pirq *pirq) in pirq_guest_unbind() argument 600 void pirq_set_affinity(struct domain *d, int pirq, const cpumask_t *mask) in pirq_set_affinity() argument
|
A D | gic-v3-its.c | 827 struct pending_irq *pirq = NULL; in get_event_pending_irq() local 833 pirq = &dev->pend_irqs[eventid]; in get_event_pending_irq() 840 return pirq; in get_event_pending_irq() 881 struct pending_irq *pirq; in gicv3_assign_guest_event() local 884 pirq = get_event_pending_irq(d, vdoorbell_address, vdevid, eventid, in gicv3_assign_guest_event() 887 if ( !pirq ) in gicv3_assign_guest_event() 892 return pirq; in gicv3_assign_guest_event()
|
A D | vgic-v3-its.c | 716 struct pending_irq *pirq; in its_handle_mapti() local 758 pirq = gicv3_assign_guest_event(its->d, its->doorbell_address, in its_handle_mapti() 760 if ( !pirq ) in its_handle_mapti() 763 vgic_init_pending_irq(pirq, intid); in its_handle_mapti() 770 ret = update_lpi_property(its->d, pirq); in its_handle_mapti() 774 pirq->lpi_vcpu_id = vcpu->vcpu_id; in its_handle_mapti() 779 set_bit(GIC_IRQ_GUEST_PRISTINE_LPI, &pirq->status); in its_handle_mapti() 786 ret = radix_tree_insert(&its->d->arch.vgic.pend_lpi_tree, intid, pirq); in its_handle_mapti()
|
/xen/xen/include/asm-x86/hvm/ |
A D | io.h | 133 int pirq; member 138 int pirq; member
|
A D | irq.h | 230 struct pirq; 231 bool hvm_domain_use_pirq(const struct domain *, const struct pirq *);
|
/xen/tools/xcutils/ |
A D | lsevtchn.c | 45 printf("Physical IRQ %u", status.u.pirq); in main()
|