[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 2/8] x86/hvm: introduce hvm_domain_irq macro
Introduce a macro to get a pointer to the hvm_irq for a HVM domain. No functional change. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Cc: Kevin Tian <kevin.tian@xxxxxxxxx> --- Changes since v2: - Switch d->arch.hvm_domain.irq.dpci accesses to use the macro also. --- NB: this is a pre-patch in order to make patch #3 smaller. --- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/hvm/irq.c | 30 +++++++++++++++--------------- xen/arch/x86/hvm/vioapic.c | 4 ++-- xen/arch/x86/hvm/vlapic.c | 6 +++--- xen/arch/x86/physdev.c | 2 +- xen/drivers/passthrough/io.c | 8 ++++---- xen/drivers/passthrough/pci.c | 2 +- xen/drivers/passthrough/vtd/x86/vtd.c | 2 +- xen/include/asm-x86/hvm/irq.h | 1 + 9 files changed, 29 insertions(+), 28 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index b6c5c9bf8d..98dede20db 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -457,7 +457,7 @@ void hvm_migrate_pirqs(struct vcpu *v) { struct domain *d = v->domain; - if ( !iommu_enabled || !d->arch.hvm_domain.irq.dpci ) + if ( !iommu_enabled || !hvm_domain_irq(d)->dpci ) return; spin_lock(&d->event_lock); diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index a774ed7450..c2951ccf8a 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -60,7 +60,7 @@ static void deassert_irq(struct domain *d, unsigned isa_irq) static void __hvm_pci_intx_assert( struct domain *d, unsigned int device, unsigned int intx) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int gsi, link, isa_irq; ASSERT((device <= 31) && (intx <= 3)); @@ -90,7 +90,7 @@ void hvm_pci_intx_assert( static void __hvm_pci_intx_deassert( struct domain *d, unsigned int device, unsigned int intx) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int gsi, link, isa_irq; ASSERT((device <= 31) && (intx <= 3)); @@ -119,7 +119,7 @@ void hvm_pci_intx_deassert( void hvm_isa_irq_assert( struct domain *d, unsigned int isa_irq) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int gsi = hvm_isa_irq_to_gsi(isa_irq); ASSERT(isa_irq <= 15); @@ -136,7 +136,7 @@ void hvm_isa_irq_assert( void hvm_isa_irq_deassert( struct domain *d, unsigned int isa_irq) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int gsi = hvm_isa_irq_to_gsi(isa_irq); ASSERT(isa_irq <= 15); @@ -153,7 +153,7 @@ void hvm_isa_irq_deassert( static void hvm_set_callback_irq_level(struct vcpu *v) { struct domain *d = v->domain; - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int gsi, pdev, pintx, asserted; ASSERT(v->vcpu_id == 0); @@ -201,7 +201,7 @@ static void hvm_set_callback_irq_level(struct vcpu *v) void hvm_maybe_deassert_evtchn_irq(void) { struct domain *d = current->domain; - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); if ( hvm_irq->callback_via_asserted && !vcpu_info(d->vcpu[0], evtchn_upcall_pending) ) @@ -230,7 +230,7 @@ void hvm_assert_evtchn_irq(struct vcpu *v) int hvm_set_pci_link_route(struct domain *d, u8 link, u8 isa_irq) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); u8 old_isa_irq; int i; @@ -323,7 +323,7 @@ int hvm_inject_msi(struct domain *d, uint64_t addr, uint32_t data) void hvm_set_callback_via(struct domain *d, uint64_t via) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int gsi=0, pdev=0, pintx=0; uint8_t via_type; @@ -486,7 +486,7 @@ void arch_evtchn_inject(struct vcpu *v) static void irq_dump(struct domain *d) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); int i; printk("Domain %d:\n", d->domain_id); printk("PCI 0x%16.16"PRIx64"%16.16"PRIx64 @@ -541,7 +541,7 @@ __initcall(dump_irq_info_key_init); static int irq_save_pci(struct domain *d, hvm_domain_context_t *h) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int asserted, pdev, pintx; int rc; @@ -573,7 +573,7 @@ static int irq_save_pci(struct domain *d, hvm_domain_context_t *h) static int irq_save_isa(struct domain *d, hvm_domain_context_t *h) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); /* Save ISA IRQ lines */ return ( hvm_save_entry(ISA_IRQ, 0, h, &hvm_irq->isa_irq) ); @@ -581,7 +581,7 @@ static int irq_save_isa(struct domain *d, hvm_domain_context_t *h) static int irq_save_link(struct domain *d, hvm_domain_context_t *h) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); /* Save PCI-ISA link state */ return ( hvm_save_entry(PCI_LINK, 0, h, &hvm_irq->pci_link) ); @@ -589,7 +589,7 @@ static int irq_save_link(struct domain *d, hvm_domain_context_t *h) static int irq_load_pci(struct domain *d, hvm_domain_context_t *h) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); int link, dev, intx, gsi; /* Load the PCI IRQ lines */ @@ -622,7 +622,7 @@ static int irq_load_pci(struct domain *d, hvm_domain_context_t *h) static int irq_load_isa(struct domain *d, hvm_domain_context_t *h) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); int irq; /* Load the ISA IRQ lines */ @@ -641,7 +641,7 @@ static int irq_load_isa(struct domain *d, hvm_domain_context_t *h) static int irq_load_link(struct domain *d, hvm_domain_context_t *h) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); int link, gsi; /* Load the PCI-ISA IRQ link routing table */ diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index 23abdfc4c6..3e92947abf 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -123,7 +123,7 @@ static void vioapic_write_redirent( int top_word, uint32_t val) { struct domain *d = vioapic_domain(vioapic); - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); union vioapic_redir_entry *pent, ent; int unmasked = 0; @@ -389,7 +389,7 @@ void vioapic_irq_positive_edge(struct domain *d, unsigned int irq) void vioapic_update_EOI(struct domain *d, u8 vector) { struct hvm_vioapic *vioapic = domain_vioapic(d); - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); union vioapic_redir_entry *ent; int gsi; diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 14356a78fe..0590d6c69d 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -373,7 +373,7 @@ struct vlapic *vlapic_lowest_prio( struct domain *d, const struct vlapic *source, int short_hand, uint32_t dest, bool_t dest_mode) { - int old = d->arch.hvm_domain.irq.round_robin_prev_vcpu; + int old = hvm_domain_irq(d)->round_robin_prev_vcpu; uint32_t ppr, target_ppr = UINT_MAX; struct vlapic *vlapic, *target = NULL; struct vcpu *v; @@ -394,8 +394,8 @@ struct vlapic *vlapic_lowest_prio( } while ( v->vcpu_id != old ); if ( target != NULL ) - d->arch.hvm_domain.irq.round_robin_prev_vcpu = - vlapic_vcpu(target)->vcpu_id; + hvm_domain_irq(d)->round_robin_prev_vcpu = + vlapic_vcpu(target)->vcpu_id; return target; } diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c index 81cd6c94e7..6c15f9bf49 100644 --- a/xen/arch/x86/physdev.c +++ b/xen/arch/x86/physdev.c @@ -317,7 +317,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) if ( is_hvm_domain(currd) && domain_pirq_to_emuirq(currd, eoi.irq) > 0 ) { - struct hvm_irq *hvm_irq = &currd->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(currd); int gsi = domain_pirq_to_emuirq(currd, eoi.irq); /* if this is a level irq and count > 0, send another diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c index 080183ea31..f48eb31420 100644 --- a/xen/drivers/passthrough/io.c +++ b/xen/drivers/passthrough/io.c @@ -195,7 +195,7 @@ struct hvm_irq_dpci *domain_get_irq_dpci(const struct domain *d) if ( !d || !is_hvm_domain(d) ) return NULL; - return d->arch.hvm_domain.irq.dpci; + return hvm_domain_irq(d)->dpci; } void free_hvm_irq_dpci(struct hvm_irq_dpci *dpci) @@ -333,7 +333,7 @@ int pt_irq_create_bind( for ( i = 0; i < NR_HVM_IRQS; i++ ) INIT_LIST_HEAD(&hvm_irq_dpci->girq[i]); - d->arch.hvm_domain.irq.dpci = hvm_irq_dpci; + hvm_domain_irq(d)->dpci = hvm_irq_dpci; } info = pirq_get_info(d, pirq); @@ -788,7 +788,7 @@ static int _hvm_dpci_msi_eoi(struct domain *d, void hvm_dpci_msi_eoi(struct domain *d, int vector) { - if ( !iommu_enabled || !d->arch.hvm_domain.irq.dpci ) + if ( !iommu_enabled || !hvm_domain_irq(d)->dpci ) return; spin_lock(&d->event_lock); @@ -798,7 +798,7 @@ void hvm_dpci_msi_eoi(struct domain *d, int vector) static void hvm_dirq_assist(struct domain *d, struct hvm_pirq_dpci *pirq_dpci) { - if ( unlikely(!d->arch.hvm_domain.irq.dpci) ) + if ( unlikely(!hvm_domain_irq(d)->dpci) ) { ASSERT_UNREACHABLE(); return; diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index beddd42701..c8e2d2d9a9 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -815,7 +815,7 @@ static int pci_clean_dpci_irqs(struct domain *d) return ret; } - d->arch.hvm_domain.irq.dpci = NULL; + hvm_domain_irq(d)->dpci = NULL; free_hvm_irq_dpci(hvm_irq_dpci); } spin_unlock(&d->event_lock); diff --git a/xen/drivers/passthrough/vtd/x86/vtd.c b/xen/drivers/passthrough/vtd/x86/vtd.c index 8a89f3471f..88a60b3307 100644 --- a/xen/drivers/passthrough/vtd/x86/vtd.c +++ b/xen/drivers/passthrough/vtd/x86/vtd.c @@ -66,7 +66,7 @@ void flush_all_cache() static int _hvm_dpci_isairq_eoi(struct domain *d, struct hvm_pirq_dpci *pirq_dpci, void *arg) { - struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq; + struct hvm_irq *hvm_irq = hvm_domain_irq(d); unsigned int isairq = (long)arg; const struct dev_intx_gsi_link *digl; diff --git a/xen/include/asm-x86/hvm/irq.h b/xen/include/asm-x86/hvm/irq.h index 73b8fb0457..17a957d4b5 100644 --- a/xen/include/asm-x86/hvm/irq.h +++ b/xen/include/asm-x86/hvm/irq.h @@ -95,6 +95,7 @@ struct hvm_irq { (((((dev)<<2) + ((dev)>>3) + (intx)) & 31) + 16) #define hvm_pci_intx_link(dev, intx) \ (((dev) + (intx)) & 3) +#define hvm_domain_irq(d) (&(d)->arch.hvm_domain.irq) #define hvm_isa_irq_to_gsi(isa_irq) ((isa_irq) ? : 2) -- 2.11.0 (Apple Git-81) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |