forked from Minki/linux
ARM: KVM: Bugfix: vgic_bytemap_get_reg per cpu regs
For bytemaps each IRQ field is 1 byte wide, so we pack 4 irq fields in one word and since there are 32 private (per cpu) irqs, we have 8 private u32 fields on the vgic_bytemap struct. We shift the offset from the base of the register group right by 2, giving us the word index instead of the field index. But then there are 8 private words, not 4, which is also why we subtract 8 words from the offset of the shared words. Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Gleb Natapov <gleb@redhat.com>
This commit is contained in:
parent
6545eae3d7
commit
8d98915b6b
@ -149,7 +149,7 @@ static u32 *vgic_bytemap_get_reg(struct vgic_bytemap *x, int cpuid, u32 offset)
|
||||
{
|
||||
offset >>= 2;
|
||||
BUG_ON(offset > (VGIC_NR_IRQS / 4));
|
||||
if (offset < 4)
|
||||
if (offset < 8)
|
||||
return x->percpu[cpuid] + offset;
|
||||
else
|
||||
return x->shared + offset - 8;
|
||||
|
Loading…
Reference in New Issue
Block a user