Lines Matching refs:vgic

178         if ( !v->domain->arch.vgic.has_its )  in __vgic_v3_rdistr_rd_mmio_read()
182 spin_lock_irqsave(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_read()
183 *r = vreg_reg32_extract(!!(v->arch.vgic.flags & VGIC_V3_LPIS_ENABLED), in __vgic_v3_rdistr_rd_mmio_read()
185 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_read()
207 if ( v->arch.vgic.flags & VGIC_V3_RDIST_LAST ) in __vgic_v3_rdistr_rd_mmio_read()
210 if ( v->domain->arch.vgic.has_its ) in __vgic_v3_rdistr_rd_mmio_read()
244 if ( !v->domain->arch.vgic.has_its ) in __vgic_v3_rdistr_rd_mmio_read()
249 *r = vreg_reg64_extract(v->domain->arch.vgic.rdist_propbase, info); in __vgic_v3_rdistr_rd_mmio_read()
257 if ( !v->domain->arch.vgic.has_its ) in __vgic_v3_rdistr_rd_mmio_read()
261 spin_lock_irqsave(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_read()
262 *r = vreg_reg64_extract(v->arch.vgic.rdist_pendbase, info); in __vgic_v3_rdistr_rd_mmio_read()
264 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_read()
448 uint64_t reg = v->domain->arch.vgic.rdist_propbase; in vgic_vcpu_enable_lpis()
452 ASSERT(spin_is_locked(&v->domain->arch.vgic.lock)); in vgic_vcpu_enable_lpis()
459 if ( !v->domain->arch.vgic.rdists_enabled ) in vgic_vcpu_enable_lpis()
461 v->domain->arch.vgic.nr_lpis = nr_lpis; in vgic_vcpu_enable_lpis()
469 v->domain->arch.vgic.rdists_enabled = true; in vgic_vcpu_enable_lpis()
477 v->arch.vgic.flags |= VGIC_V3_LPIS_ENABLED; in vgic_vcpu_enable_lpis()
493 if ( !v->domain->arch.vgic.has_its ) in __vgic_v3_rdistr_rd_mmio_write()
498 spin_lock_irqsave(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_write()
502 !(v->arch.vgic.flags & VGIC_V3_LPIS_ENABLED) ) in __vgic_v3_rdistr_rd_mmio_write()
505 spin_unlock_irqrestore(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_write()
545 if ( !v->domain->arch.vgic.has_its ) in __vgic_v3_rdistr_rd_mmio_write()
555 if ( !(v->domain->arch.vgic.rdists_enabled) ) in __vgic_v3_rdistr_rd_mmio_write()
557 reg = v->domain->arch.vgic.rdist_propbase; in __vgic_v3_rdistr_rd_mmio_write()
560 v->domain->arch.vgic.rdist_propbase = reg; in __vgic_v3_rdistr_rd_mmio_write()
571 if ( !v->domain->arch.vgic.has_its ) in __vgic_v3_rdistr_rd_mmio_write()
575 spin_lock_irqsave(&v->arch.vgic.lock, flags); in __vgic_v3_rdistr_rd_mmio_write()
578 if ( !(v->arch.vgic.flags & VGIC_V3_LPIS_ENABLED) ) in __vgic_v3_rdistr_rd_mmio_write()
580 reg = v->arch.vgic.rdist_pendbase; in __vgic_v3_rdistr_rd_mmio_write()
583 v->arch.vgic.rdist_pendbase = reg; in __vgic_v3_rdistr_rd_mmio_write()
586 spin_unlock_irqrestore(&v->arch.vgic.lock, false); in __vgic_v3_rdistr_rd_mmio_write()
1033 uint32_t stride = d->arch.vgic.rdist_stride; in get_vcpu_from_rdist()
1042 *offset = gpa - v->arch.vgic.rdist_base; in get_vcpu_from_rdist()
1101 int gicd_reg = (int)(info->gpa - v->domain->arch.vgic.dbase); in vgic_v3_distr_mmio_read()
1110 *r = vreg_reg32_extract(v->domain->arch.vgic.ctlr, info); in vgic_v3_distr_mmio_read()
1130 DIV_ROUND_UP(v->domain->arch.vgic.nr_spis, 32)); in vgic_v3_distr_mmio_read()
1132 if ( v->domain->arch.vgic.has_its ) in vgic_v3_distr_mmio_read()
1135 typer |= (v->domain->arch.vgic.intid_bits - 1) << GICD_TYPE_ID_BITS_SHIFT; in vgic_v3_distr_mmio_read()
1304 int gicd_reg = (int)(info->gpa - v->domain->arch.vgic.dbase); in vgic_v3_distr_mmio_write()
1322 v->domain->arch.vgic.ctlr |= GICD_CTLR_ENABLE_G1A; in vgic_v3_distr_mmio_write()
1324 v->domain->arch.vgic.ctlr &= ~GICD_CTLR_ENABLE_G1A; in vgic_v3_distr_mmio_write()
1597 uint32_t rdist_stride = d->arch.vgic.rdist_stride; in vgic_v3_vcpu_init()
1603 for ( i = 1; i < d->arch.vgic.nr_regions; i++ ) in vgic_v3_vcpu_init()
1605 if ( v->vcpu_id < d->arch.vgic.rdist_regions[i].first_cpu ) in vgic_v3_vcpu_init()
1609 region = &d->arch.vgic.rdist_regions[i - 1]; in vgic_v3_vcpu_init()
1625 v->arch.vgic.rdist_base = rdist_base; in vgic_v3_vcpu_init()
1636 v->arch.vgic.flags |= VGIC_V3_RDIST_LAST; in vgic_v3_vcpu_init()
1659 d->arch.vgic.nr_regions = rdist_count; in vgic_v3_domain_init()
1660 d->arch.vgic.rdist_regions = rdist_regions; in vgic_v3_domain_init()
1662 rwlock_init(&d->arch.vgic.pend_lpi_tree_lock); in vgic_v3_domain_init()
1663 radix_tree_init(&d->arch.vgic.pend_lpi_tree); in vgic_v3_domain_init()
1673 d->arch.vgic.dbase = vgic_v3_hw.dbase; in vgic_v3_domain_init()
1675 d->arch.vgic.rdist_stride = vgic_v3_hw.rdist_stride; in vgic_v3_domain_init()
1681 if ( !d->arch.vgic.rdist_stride ) in vgic_v3_domain_init()
1682 d->arch.vgic.rdist_stride = 2 * SZ_64K; in vgic_v3_domain_init()
1688 d->arch.vgic.rdist_regions[i].base = vgic_v3_hw.regions[i].base; in vgic_v3_domain_init()
1689 d->arch.vgic.rdist_regions[i].size = size; in vgic_v3_domain_init()
1692 d->arch.vgic.rdist_regions[i].first_cpu = first_cpu; in vgic_v3_domain_init()
1694 first_cpu += size / d->arch.vgic.rdist_stride; in vgic_v3_domain_init()
1697 d->arch.vgic.intid_bits = vgic_v3_hw.intid_bits; in vgic_v3_domain_init()
1701 d->arch.vgic.dbase = GUEST_GICV3_GICD_BASE; in vgic_v3_domain_init()
1706 d->arch.vgic.rdist_stride = GUEST_GICV3_RDIST_STRIDE; in vgic_v3_domain_init()
1710 d->arch.vgic.rdist_regions[0].base = GUEST_GICV3_GICR0_BASE; in vgic_v3_domain_init()
1711 d->arch.vgic.rdist_regions[0].size = GUEST_GICV3_GICR0_SIZE; in vgic_v3_domain_init()
1712 d->arch.vgic.rdist_regions[0].first_cpu = 0; in vgic_v3_domain_init()
1721 d->arch.vgic.intid_bits = 10; in vgic_v3_domain_init()
1729 register_mmio_handler(d, &vgic_distr_mmio_handler, d->arch.vgic.dbase, in vgic_v3_domain_init()
1737 for ( i = 0; i < d->arch.vgic.nr_regions; i++ ) in vgic_v3_domain_init()
1739 struct vgic_rdist_region *region = &d->arch.vgic.rdist_regions[i]; in vgic_v3_domain_init()
1745 d->arch.vgic.ctlr = VGICD_CTLR_DEFAULT; in vgic_v3_domain_init()
1760 radix_tree_destroy(&d->arch.vgic.pend_lpi_tree, NULL); in vgic_v3_domain_free()
1761 xfree(d->arch.vgic.rdist_regions); in vgic_v3_domain_free()
1775 read_lock(&d->arch.vgic.pend_lpi_tree_lock); in vgic_v3_lpi_to_pending()
1776 pirq = radix_tree_lookup(&d->arch.vgic.pend_lpi_tree, lpi); in vgic_v3_lpi_to_pending()
1777 read_unlock(&d->arch.vgic.pend_lpi_tree_lock); in vgic_v3_lpi_to_pending()