|
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.