KVM: arm64: vgic-v3: Expose GICR_TYPER.Last for userspace
authorEric Auger <eric.auger@redhat.com>
Mon, 5 Apr 2021 16:39:40 +0000 (18:39 +0200)
committerMarc Zyngier <maz@kernel.org>
Tue, 6 Apr 2021 13:51:38 +0000 (14:51 +0100)
commit28e9d4bce3be9b8fec6c854f87923db99c8fb874
tree78ebce0a0c541f16786c52ce58e4f47ca8e57281
parente5a35635464bc5304674b84ea42615a3fd0bd949
KVM: arm64: vgic-v3: Expose GICR_TYPER.Last for userspace

Commit 23bde34771f1 ("KVM: arm64: vgic-v3: Drop the
reporting of GICR_TYPER.Last for userspace") temporarily fixed
a bug identified when attempting to access the GICR_TYPER
register before the redistributor region setting, but dropped
the support of the LAST bit.

Emulating the GICR_TYPER.Last bit still makes sense for
architecture compliance though. This patch restores its support
(if the redistributor region was set) while keeping the code safe.

We introduce a new helper, vgic_mmio_vcpu_rdist_is_last() which
computes whether a redistributor is the highest one of a series
of redistributor contributor pages.

With this new implementation we do not need to have a uaccess
read accessor anymore.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210405163941.510258-9-eric.auger@redhat.com
arch/arm64/kvm/vgic/vgic-mmio-v3.c
include/kvm/arm_vgic.h