Lines Matching refs:rank

69 static uint32_t vgic_fetch_itargetsr(struct vgic_irq_rank *rank,  in vgic_fetch_itargetsr()  argument
75 ASSERT(spin_is_locked(&rank->lock)); in vgic_fetch_itargetsr()
81 reg |= (1 << read_atomic(&rank->vcpu[offset])) << (i * NR_BITS_PER_TARGET); in vgic_fetch_itargetsr()
92 static void vgic_store_itargetsr(struct domain *d, struct vgic_irq_rank *rank, in vgic_store_itargetsr() argument
98 ASSERT(spin_is_locked(&rank->lock)); in vgic_store_itargetsr()
107 ASSERT(rank->index >= 1); in vgic_store_itargetsr()
112 virq = rank->index * NR_INTERRUPT_PER_RANK + offset; in vgic_store_itargetsr()
154 old_target = read_atomic(&rank->vcpu[offset]); in vgic_store_itargetsr()
162 write_atomic(&rank->vcpu[offset], new_target); in vgic_store_itargetsr()
171 struct vgic_irq_rank *rank; in vgic_v2_distr_mmio_read() local
226 rank = vgic_rank_offset(v, 1, gicd_reg - GICD_ISENABLER, DABT_WORD); in vgic_v2_distr_mmio_read()
227 if ( rank == NULL) goto read_as_zero; in vgic_v2_distr_mmio_read()
228 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
229 *r = vreg_reg32_extract(rank->ienable, info); in vgic_v2_distr_mmio_read()
230 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
235 rank = vgic_rank_offset(v, 1, gicd_reg - GICD_ICENABLER, DABT_WORD); in vgic_v2_distr_mmio_read()
236 if ( rank == NULL) goto read_as_zero; in vgic_v2_distr_mmio_read()
237 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
238 *r = vreg_reg32_extract(rank->ienable, info); in vgic_v2_distr_mmio_read()
239 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
258 rank = vgic_rank_offset(v, 8, gicd_reg - GICD_IPRIORITYR, DABT_WORD); in vgic_v2_distr_mmio_read()
259 if ( rank == NULL ) goto read_as_zero; in vgic_v2_distr_mmio_read()
262 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
263 ipriorityr = ACCESS_ONCE(rank->ipriorityr[rank_index]); in vgic_v2_distr_mmio_read()
264 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
278 rank = vgic_rank_offset(v, 8, gicd_reg - GICD_ITARGETSR, DABT_WORD); in vgic_v2_distr_mmio_read()
279 if ( rank == NULL) goto read_as_zero; in vgic_v2_distr_mmio_read()
280 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
281 itargetsr = vgic_fetch_itargetsr(rank, gicd_reg - GICD_ITARGETSR); in vgic_v2_distr_mmio_read()
282 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
296 rank = vgic_rank_offset(v, 2, gicd_reg - GICD_ICFGR, DABT_WORD); in vgic_v2_distr_mmio_read()
297 if ( rank == NULL) goto read_as_zero; in vgic_v2_distr_mmio_read()
298 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
299 icfgr = rank->icfg[REG_RANK_INDEX(2, gicd_reg - GICD_ICFGR, DABT_WORD)]; in vgic_v2_distr_mmio_read()
300 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_read()
414 struct vgic_irq_rank *rank; in vgic_v2_distr_mmio_write() local
453 rank = vgic_rank_offset(v, 1, gicd_reg - GICD_ISENABLER, DABT_WORD); in vgic_v2_distr_mmio_write()
454 if ( rank == NULL) goto write_ignore; in vgic_v2_distr_mmio_write()
455 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
456 tr = rank->ienable; in vgic_v2_distr_mmio_write()
457 vreg_reg32_setbits(&rank->ienable, r, info); in vgic_v2_distr_mmio_write()
458 vgic_enable_irqs(v, (rank->ienable) & (~tr), rank->index); in vgic_v2_distr_mmio_write()
459 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
464 rank = vgic_rank_offset(v, 1, gicd_reg - GICD_ICENABLER, DABT_WORD); in vgic_v2_distr_mmio_write()
465 if ( rank == NULL) goto write_ignore; in vgic_v2_distr_mmio_write()
466 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
467 tr = rank->ienable; in vgic_v2_distr_mmio_write()
468 vreg_reg32_clearbits(&rank->ienable, r, info); in vgic_v2_distr_mmio_write()
469 vgic_disable_irqs(v, (~rank->ienable) & tr, rank->index); in vgic_v2_distr_mmio_write()
470 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
505 rank = vgic_rank_offset(v, 8, gicd_reg - GICD_IPRIORITYR, DABT_WORD); in vgic_v2_distr_mmio_write()
506 if ( rank == NULL) goto write_ignore; in vgic_v2_distr_mmio_write()
507 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
508 ipriorityr = &rank->ipriorityr[REG_RANK_INDEX(8, in vgic_v2_distr_mmio_write()
515 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
531 rank = vgic_rank_offset(v, 8, gicd_reg - GICD_ITARGETSR, DABT_WORD); in vgic_v2_distr_mmio_write()
532 if ( rank == NULL) goto write_ignore; in vgic_v2_distr_mmio_write()
533 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
534 itargetsr = vgic_fetch_itargetsr(rank, gicd_reg - GICD_ITARGETSR); in vgic_v2_distr_mmio_write()
536 vgic_store_itargetsr(v->domain, rank, gicd_reg - GICD_ITARGETSR, in vgic_v2_distr_mmio_write()
538 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
554 rank = vgic_rank_offset(v, 2, gicd_reg - GICD_ICFGR, DABT_WORD); in vgic_v2_distr_mmio_write()
555 if ( rank == NULL) goto write_ignore; in vgic_v2_distr_mmio_write()
556 vgic_lock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()
557 vreg_reg32_update(&rank->icfg[REG_RANK_INDEX(2, gicd_reg - GICD_ICFGR, in vgic_v2_distr_mmio_write()
560 vgic_unlock_rank(v, rank, flags); in vgic_v2_distr_mmio_write()