Lines Matching refs:rank

105 static uint64_t vgic_fetch_irouter(struct vgic_irq_rank *rank,  in vgic_fetch_irouter()  argument
108 ASSERT(spin_is_locked(&rank->lock)); in vgic_fetch_irouter()
116 return vcpuid_to_vaffinity(read_atomic(&rank->vcpu[offset])); in vgic_fetch_irouter()
125 static void vgic_store_irouter(struct domain *d, struct vgic_irq_rank *rank, in vgic_store_irouter() argument
144 old_vcpu = d->vcpu[read_atomic(&rank->vcpu[offset])]; in vgic_store_irouter()
162 write_atomic(&rank->vcpu[offset], new_vcpu->vcpu_id); in vgic_store_irouter()
680 struct vgic_irq_rank *rank; in __vgic_v3_distr_common_mmio_read() local
692 rank = vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WORD); in __vgic_v3_distr_common_mmio_read()
693 if ( rank == NULL ) goto read_as_zero; in __vgic_v3_distr_common_mmio_read()
694 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
695 *r = vreg_reg32_extract(rank->ienable, info); in __vgic_v3_distr_common_mmio_read()
696 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
701 rank = vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WORD); in __vgic_v3_distr_common_mmio_read()
702 if ( rank == NULL ) goto read_as_zero; in __vgic_v3_distr_common_mmio_read()
703 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
704 *r = vreg_reg32_extract(rank->ienable, info); in __vgic_v3_distr_common_mmio_read()
705 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
724 rank = vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WORD); in __vgic_v3_distr_common_mmio_read()
725 if ( rank == NULL ) goto read_as_zero; in __vgic_v3_distr_common_mmio_read()
728 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
729 ipriorityr = ACCESS_ONCE(rank->ipriorityr[rank_index]); in __vgic_v3_distr_common_mmio_read()
730 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
742 rank = vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); in __vgic_v3_distr_common_mmio_read()
743 if ( rank == NULL ) goto read_as_zero; in __vgic_v3_distr_common_mmio_read()
744 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
745 icfgr = rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGR, DABT_WORD)]; in __vgic_v3_distr_common_mmio_read()
746 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_read()
776 struct vgic_irq_rank *rank; in __vgic_v3_distr_common_mmio_write() local
788 rank = vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WORD); in __vgic_v3_distr_common_mmio_write()
789 if ( rank == NULL ) goto write_ignore; in __vgic_v3_distr_common_mmio_write()
790 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
791 tr = rank->ienable; in __vgic_v3_distr_common_mmio_write()
792 vreg_reg32_setbits(&rank->ienable, r, info); in __vgic_v3_distr_common_mmio_write()
793 vgic_enable_irqs(v, (rank->ienable) & (~tr), rank->index); in __vgic_v3_distr_common_mmio_write()
794 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
799 rank = vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WORD); in __vgic_v3_distr_common_mmio_write()
800 if ( rank == NULL ) goto write_ignore; in __vgic_v3_distr_common_mmio_write()
801 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
802 tr = rank->ienable; in __vgic_v3_distr_common_mmio_write()
803 vreg_reg32_clearbits(&rank->ienable, r, info); in __vgic_v3_distr_common_mmio_write()
804 vgic_disable_irqs(v, (~rank->ienable) & tr, rank->index); in __vgic_v3_distr_common_mmio_write()
805 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
840 rank = vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WORD); in __vgic_v3_distr_common_mmio_write()
841 if ( rank == NULL ) goto write_ignore; in __vgic_v3_distr_common_mmio_write()
842 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
843 ipriorityr = &rank->ipriorityr[REG_RANK_INDEX(8, reg - GICD_IPRIORITYR, in __vgic_v3_distr_common_mmio_write()
848 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
859 rank = vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); in __vgic_v3_distr_common_mmio_write()
860 if ( rank == NULL ) goto write_ignore; in __vgic_v3_distr_common_mmio_write()
861 vgic_lock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
862 vreg_reg32_update(&rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGR, in __vgic_v3_distr_common_mmio_write()
865 vgic_unlock_rank(v, rank, flags); in __vgic_v3_distr_common_mmio_write()
1099 struct vgic_irq_rank *rank; in vgic_v3_distr_mmio_read() local
1230 rank = vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, in vgic_v3_distr_mmio_read()
1232 if ( rank == NULL ) goto read_as_zero; in vgic_v3_distr_mmio_read()
1233 vgic_lock_rank(v, rank, flags); in vgic_v3_distr_mmio_read()
1234 irouter = vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); in vgic_v3_distr_mmio_read()
1235 vgic_unlock_rank(v, rank, flags); in vgic_v3_distr_mmio_read()
1302 struct vgic_irq_rank *rank; in vgic_v3_distr_mmio_write() local
1419 rank = vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, in vgic_v3_distr_mmio_write()
1421 if ( rank == NULL ) goto write_ignore; in vgic_v3_distr_mmio_write()
1422 vgic_lock_rank(v, rank, flags); in vgic_v3_distr_mmio_write()
1423 irouter = vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); in vgic_v3_distr_mmio_write()
1425 vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTER, irouter); in vgic_v3_distr_mmio_write()
1426 vgic_unlock_rank(v, rank, flags); in vgic_v3_distr_mmio_write()