Skip to content

Commit

Permalink
KVM: arm-vgic: Make vgic mmio functions more generic
Browse files Browse the repository at this point in the history
Rename the vgic_ranges array to vgic_dist_ranges to be more specific and
to prepare for handling CPU interface register access as well (for
save/restore of VGIC state).

Pass offset from distributor or interface MMIO base to
find_matching_range function instead of the physical address of the
access in the VM memory map.  This allows other callers unaware of the
VM specifics, but with generic VGIC knowledge to reuse the function.

Acked-by: Marc Zyngier <[email protected]>
Signed-off-by: Christoffer Dall <[email protected]>
  • Loading branch information
chazy committed Dec 21, 2013
1 parent 0307e17 commit 1006e8c
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions virt/kvm/arm/vgic.c
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ struct mmio_range {
phys_addr_t offset);
};

static const struct mmio_range vgic_ranges[] = {
static const struct mmio_range vgic_dist_ranges[] = {
{
.base = GIC_DIST_CTRL,
.len = 12,
Expand Down Expand Up @@ -669,14 +669,13 @@ static const struct mmio_range vgic_ranges[] = {
static const
struct mmio_range *find_matching_range(const struct mmio_range *ranges,
struct kvm_exit_mmio *mmio,
phys_addr_t base)
phys_addr_t offset)
{
const struct mmio_range *r = ranges;
phys_addr_t addr = mmio->phys_addr - base;

while (r->len) {
if (addr >= r->base &&
(addr + mmio->len) <= (r->base + r->len))
if (offset >= r->base &&
(offset + mmio->len) <= (r->base + r->len))
return r;
r++;
}
Expand Down Expand Up @@ -713,7 +712,8 @@ bool vgic_handle_mmio(struct kvm_vcpu *vcpu, struct kvm_run *run,
return true;
}

range = find_matching_range(vgic_ranges, mmio, base);
offset = mmio->phys_addr - base;
range = find_matching_range(vgic_dist_ranges, mmio, offset);
if (unlikely(!range || !range->handle_mmio)) {
pr_warn("Unhandled access %d %08llx %d\n",
mmio->is_write, mmio->phys_addr, mmio->len);
Expand Down

0 comments on commit 1006e8c

Please sign in to comment.