KVM
|
#include <linux/bitops.h>
#include <linux/bsearch.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kvm.h>
#include <linux/kvm_host.h>
#include <kvm/iodev.h>
#include <kvm/arm_arch_timer.h>
#include <kvm/arm_vgic.h>
#include "vgic.h"
#include "vgic-mmio.h"
Go to the source code of this file.
Functions | |
unsigned long | vgic_mmio_read_raz (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
unsigned long | vgic_mmio_read_rao (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
void | vgic_mmio_write_wi (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_mmio_uaccess_write_wi (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
unsigned long | vgic_mmio_read_group (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
static void | vgic_update_vsgi (struct vgic_irq *irq) |
void | vgic_mmio_write_group (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
unsigned long | vgic_mmio_read_enable (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
void | vgic_mmio_write_senable (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
void | vgic_mmio_write_cenable (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_uaccess_write_senable (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_uaccess_write_cenable (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
static unsigned long | __read_pending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, bool is_user) |
unsigned long | vgic_mmio_read_pending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
unsigned long | vgic_uaccess_read_pending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
static bool | is_vgic_v2_sgi (struct kvm_vcpu *vcpu, struct vgic_irq *irq) |
static void | __set_pending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val, bool is_user) |
void | vgic_mmio_write_spending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_uaccess_write_spending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
static void | vgic_hw_irq_cpending (struct kvm_vcpu *vcpu, struct vgic_irq *irq) |
static void | __clear_pending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val, bool is_user) |
void | vgic_mmio_write_cpending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_uaccess_write_cpending (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
static void | vgic_access_active_prepare (struct kvm_vcpu *vcpu, u32 intid) |
static void | vgic_access_active_finish (struct kvm_vcpu *vcpu, u32 intid) |
static unsigned long | __vgic_mmio_read_active (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
unsigned long | vgic_mmio_read_active (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
unsigned long | vgic_uaccess_read_active (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
static void | vgic_hw_irq_change_active (struct kvm_vcpu *vcpu, struct vgic_irq *irq, bool active, bool is_uaccess) |
static void | vgic_mmio_change_active (struct kvm_vcpu *vcpu, struct vgic_irq *irq, bool active) |
static void | __vgic_mmio_write_cactive (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
void | vgic_mmio_write_cactive (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_mmio_uaccess_write_cactive (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
static void | __vgic_mmio_write_sactive (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
void | vgic_mmio_write_sactive (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
int | vgic_mmio_uaccess_write_sactive (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
unsigned long | vgic_mmio_read_priority (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
void | vgic_mmio_write_priority (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
unsigned long | vgic_mmio_read_config (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) |
void | vgic_mmio_write_config (struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val) |
u32 | vgic_read_irq_line_level_info (struct kvm_vcpu *vcpu, u32 intid) |
void | vgic_write_irq_line_level_info (struct kvm_vcpu *vcpu, u32 intid, const u32 val) |
static int | match_region (const void *key, const void *elt) |
const struct vgic_register_region * | vgic_find_mmio_region (const struct vgic_register_region *regions, int nr_regions, unsigned int offset) |
void | vgic_set_vmcr (struct kvm_vcpu *vcpu, struct vgic_vmcr *vmcr) |
void | vgic_get_vmcr (struct kvm_vcpu *vcpu, struct vgic_vmcr *vmcr) |
unsigned long | vgic_data_mmio_bus_to_host (const void *val, unsigned int len) |
void | vgic_data_host_to_mmio_bus (void *buf, unsigned int len, unsigned long data) |
static struct vgic_io_device * | kvm_to_vgic_iodev (const struct kvm_io_device *dev) |
static bool | check_region (const struct kvm *kvm, const struct vgic_register_region *region, gpa_t addr, int len) |
const struct vgic_register_region * | vgic_get_mmio_region (struct kvm_vcpu *vcpu, struct vgic_io_device *iodev, gpa_t addr, int len) |
static int | vgic_uaccess_read (struct kvm_vcpu *vcpu, struct vgic_io_device *iodev, gpa_t addr, u32 *val) |
static int | vgic_uaccess_write (struct kvm_vcpu *vcpu, struct vgic_io_device *iodev, gpa_t addr, const u32 *val) |
int | vgic_uaccess (struct kvm_vcpu *vcpu, struct vgic_io_device *dev, bool is_write, int offset, u32 *val) |
static int | dispatch_mmio_read (struct kvm_vcpu *vcpu, struct kvm_io_device *dev, gpa_t addr, int len, void *val) |
static int | dispatch_mmio_write (struct kvm_vcpu *vcpu, struct kvm_io_device *dev, gpa_t addr, int len, const void *val) |
int | vgic_register_dist_iodev (struct kvm *kvm, gpa_t dist_base_address, enum vgic_type type) |
Variables | |
const struct kvm_io_device_ops | kvm_io_gic_ops |
|
static |
Definition at line 389 of file vgic-mmio.c.
|
static |
Definition at line 229 of file vgic-mmio.c.
|
static |
Definition at line 304 of file vgic-mmio.c.
|
static |
Definition at line 488 of file vgic-mmio.c.
|
static |
Definition at line 593 of file vgic-mmio.c.
|
static |
Definition at line 630 of file vgic-mmio.c.
|
static |
|
static |
Definition at line 1014 of file vgic-mmio.c.
|
static |
Definition at line 1046 of file vgic-mmio.c.
|
static |
|
static |
|
static |
|
static |
Definition at line 480 of file vgic-mmio.c.
|
static |
Definition at line 471 of file vgic-mmio.c.
void vgic_data_host_to_mmio_bus | ( | void * | buf, |
unsigned int | len, | ||
unsigned long | data | ||
) |
Definition at line 893 of file vgic-mmio.c.
unsigned long vgic_data_mmio_bus_to_host | ( | const void * | val, |
unsigned int | len | ||
) |
Definition at line 868 of file vgic-mmio.c.
const struct vgic_register_region* vgic_find_mmio_region | ( | const struct vgic_register_region * | regions, |
int | nr_regions, | ||
unsigned int | offset | ||
) |
Definition at line 836 of file vgic-mmio.c.
const struct vgic_register_region* vgic_get_mmio_region | ( | struct kvm_vcpu * | vcpu, |
struct vgic_io_device * | iodev, | ||
gpa_t | addr, | ||
int | len | ||
) |
Definition at line 950 of file vgic-mmio.c.
void vgic_get_vmcr | ( | struct kvm_vcpu * | vcpu, |
struct vgic_vmcr * | vmcr | ||
) |
Definition at line 851 of file vgic-mmio.c.
|
static |
Definition at line 536 of file vgic-mmio.c.
|
static |
Definition at line 369 of file vgic-mmio.c.
|
static |
Definition at line 546 of file vgic-mmio.c.
unsigned long vgic_mmio_read_active | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
Definition at line 512 of file vgic-mmio.c.
unsigned long vgic_mmio_read_config | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
unsigned long vgic_mmio_read_enable | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
unsigned long vgic_mmio_read_group | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
unsigned long vgic_mmio_read_pending | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
Definition at line 286 of file vgic-mmio.c.
unsigned long vgic_mmio_read_priority | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
unsigned long vgic_mmio_read_rao | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
Definition at line 25 of file vgic-mmio.c.
unsigned long vgic_mmio_read_raz | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
Definition at line 19 of file vgic-mmio.c.
int vgic_mmio_uaccess_write_cactive | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 622 of file vgic-mmio.c.
int vgic_mmio_uaccess_write_sactive | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 659 of file vgic-mmio.c.
int vgic_mmio_uaccess_write_wi | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 37 of file vgic-mmio.c.
void vgic_mmio_write_cactive | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
void vgic_mmio_write_cenable | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
void vgic_mmio_write_config | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
void vgic_mmio_write_cpending | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 440 of file vgic-mmio.c.
void vgic_mmio_write_group | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 69 of file vgic-mmio.c.
void vgic_mmio_write_priority | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
void vgic_mmio_write_sactive | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
void vgic_mmio_write_senable | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
void vgic_mmio_write_spending | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 353 of file vgic-mmio.c.
void vgic_mmio_write_wi | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 31 of file vgic-mmio.c.
u32 vgic_read_irq_line_level_info | ( | struct kvm_vcpu * | vcpu, |
u32 | intid | ||
) |
Definition at line 766 of file vgic-mmio.c.
int vgic_register_dist_iodev | ( | struct kvm * | kvm, |
gpa_t | dist_base_address, | ||
enum vgic_type | type | ||
) |
Definition at line 1080 of file vgic-mmio.c.
void vgic_set_vmcr | ( | struct kvm_vcpu * | vcpu, |
struct vgic_vmcr * | vmcr | ||
) |
Definition at line 843 of file vgic-mmio.c.
int vgic_uaccess | ( | struct kvm_vcpu * | vcpu, |
struct vgic_io_device * | dev, | ||
bool | is_write, | ||
int | offset, | ||
u32 * | val | ||
) |
Definition at line 1005 of file vgic-mmio.c.
|
static |
Definition at line 963 of file vgic-mmio.c.
unsigned long vgic_uaccess_read_active | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
unsigned long vgic_uaccess_read_pending | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len | ||
) |
|
static |
Definition at line 984 of file vgic-mmio.c.
int vgic_uaccess_write_cenable | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
int vgic_uaccess_write_cpending | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 447 of file vgic-mmio.c.
int vgic_uaccess_write_senable | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
int vgic_uaccess_write_spending | ( | struct kvm_vcpu * | vcpu, |
gpa_t | addr, | ||
unsigned int | len, | ||
unsigned long | val | ||
) |
Definition at line 360 of file vgic-mmio.c.
|
static |
void vgic_write_irq_line_level_info | ( | struct kvm_vcpu * | vcpu, |
u32 | intid, | ||
const u32 | val | ||
) |
Definition at line 788 of file vgic-mmio.c.
const struct kvm_io_device_ops kvm_io_gic_ops |
Definition at line 1046 of file vgic-mmio.c.