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));
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));
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);
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);
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);
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) )
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;
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;
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
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;
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) );
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) );
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 */
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 */
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 */
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)
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);
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);
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;