KVM
|
#include <linux/cpu.h>
#include <linux/kvm.h>
#include <linux/kvm_host.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/uaccess.h>
#include <linux/list_sort.h>
#include <linux/irqchip/arm-gic-v3.h>
#include <asm/kvm_emulate.h>
#include <asm/kvm_arm.h>
#include <asm/kvm_mmu.h>
#include "vgic.h"
#include "vgic-mmio.h"
Go to the source code of this file.
Classes | |
struct | its_device |
struct | its_collection |
struct | its_ite |
struct | vgic_translation_cache_entry |
struct | vgic_its_abi |
Macros | |
#define | COLLECTION_NOT_MAPPED ((u32)~0) |
#define | its_is_collection_mapped(coll) |
#define | ABI_0_ESZ 8 |
#define | ESZ_MAX ABI_0_ESZ |
#define | NR_ITS_ABIS ARRAY_SIZE(its_table_abi_versions) |
#define | for_each_lpi_its(dev, ite, its) |
#define | GIC_LPI_OFFSET 8192 |
#define | VITS_TYPER_IDBITS 16 |
#define | VITS_TYPER_DEVBITS 16 |
#define | VITS_DTE_MAX_DEVID_OFFSET (BIT(14) - 1) |
#define | VITS_ITE_MAX_EVENTID_OFFSET (BIT(16) - 1) |
#define | LPI_PROP_ENABLE_BIT(p) ((p) & LPI_PROP_ENABLED) |
#define | LPI_PROP_PRIORITY(p) ((p) & 0xfc) |
#define | its_cmd_get_command(cmd) its_cmd_mask_field(cmd, 0, 0, 8) |
#define | its_cmd_get_deviceid(cmd) its_cmd_mask_field(cmd, 0, 32, 32) |
#define | its_cmd_get_size(cmd) (its_cmd_mask_field(cmd, 1, 0, 5) + 1) |
#define | its_cmd_get_id(cmd) its_cmd_mask_field(cmd, 1, 0, 32) |
#define | its_cmd_get_physical_id(cmd) its_cmd_mask_field(cmd, 1, 32, 32) |
#define | its_cmd_get_collection(cmd) its_cmd_mask_field(cmd, 2, 0, 16) |
#define | its_cmd_get_ittaddr(cmd) (its_cmd_mask_field(cmd, 2, 8, 44) << 8) |
#define | its_cmd_get_target_addr(cmd) its_cmd_mask_field(cmd, 2, 16, 32) |
#define | its_cmd_get_validbit(cmd) its_cmd_mask_field(cmd, 2, 63, 1) |
#define | ITS_CMD_BUFFER_SIZE(baser) ((((baser) & 0xff) + 1) << 12) |
#define | ITS_CMD_SIZE 32 |
#define | ITS_CMD_OFFSET(reg) ((reg) & GENMASK(19, 5)) |
#define | BASER_INDEX(addr) (((addr) / sizeof(u64)) & 0x7) |
#define | GITS_BASER_RO_MASK (GENMASK_ULL(52, 48) | GENMASK_ULL(58, 56)) |
#define | REGISTER_ITS_DESC(off, rd, wr, length, acc) |
#define | REGISTER_ITS_DESC_UACCESS(off, rd, wr, uwr, length, acc) |
#define | LPI_DEFAULT_PCPU_CACHE_SIZE 16 |
#define | INITIAL_BASER_VALUE |
#define | INITIAL_PROPBASER_VALUE |
Typedefs | |
typedef int(* | entry_fn_t) (struct vgic_its *its, u32 id, void *entry, void *opaque) |
Functions | |
static int | vgic_its_save_tables_v0 (struct vgic_its *its) |
static int | vgic_its_restore_tables_v0 (struct vgic_its *its) |
static int | vgic_its_commit_v0 (struct vgic_its *its) |
static int | update_lpi_config (struct kvm *kvm, struct vgic_irq *irq, struct kvm_vcpu *filter_vcpu, bool needs_inv) |
static struct vgic_irq * | vgic_add_lpi (struct kvm *kvm, u32 intid, struct kvm_vcpu *vcpu) |
const struct vgic_its_abi * | vgic_its_get_abi (struct vgic_its *its) |
static int | vgic_its_set_abi (struct vgic_its *its, u32 rev) |
static struct its_device * | find_its_device (struct vgic_its *its, u32 device_id) |
static struct its_ite * | find_ite (struct vgic_its *its, u32 device_id, u32 event_id) |
static struct its_collection * | find_collection (struct vgic_its *its, int coll_id) |
int | vgic_copy_lpi_list (struct kvm *kvm, struct kvm_vcpu *vcpu, u32 **intid_ptr) |
static int | update_affinity (struct vgic_irq *irq, struct kvm_vcpu *vcpu) |
static struct kvm_vcpu * | collection_to_vcpu (struct kvm *kvm, struct its_collection *col) |
static void | update_affinity_ite (struct kvm *kvm, struct its_ite *ite) |
static void | update_affinity_collection (struct kvm *kvm, struct vgic_its *its, struct its_collection *coll) |
static u32 | max_lpis_propbaser (u64 propbaser) |
static int | its_sync_lpi_pending_table (struct kvm_vcpu *vcpu) |
static unsigned long | vgic_mmio_read_its_typer (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static unsigned long | vgic_mmio_read_its_iidr (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static int | vgic_mmio_uaccess_write_its_iidr (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
static unsigned long | vgic_mmio_read_its_idregs (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static struct vgic_irq * | __vgic_its_check_cache (struct vgic_dist *dist, phys_addr_t db, u32 devid, u32 eventid) |
static struct vgic_irq * | vgic_its_check_cache (struct kvm *kvm, phys_addr_t db, u32 devid, u32 eventid) |
static void | vgic_its_cache_translation (struct kvm *kvm, struct vgic_its *its, u32 devid, u32 eventid, struct vgic_irq *irq) |
void | vgic_its_invalidate_cache (struct kvm *kvm) |
int | vgic_its_resolve_lpi (struct kvm *kvm, struct vgic_its *its, u32 devid, u32 eventid, struct vgic_irq **irq) |
struct vgic_its * | vgic_msi_to_its (struct kvm *kvm, struct kvm_msi *msi) |
static int | vgic_its_trigger_msi (struct kvm *kvm, struct vgic_its *its, u32 devid, u32 eventid) |
int | vgic_its_inject_cached_translation (struct kvm *kvm, struct kvm_msi *msi) |
int | vgic_its_inject_msi (struct kvm *kvm, struct kvm_msi *msi) |
static void | its_free_ite (struct kvm *kvm, struct its_ite *ite) |
static u64 | its_cmd_mask_field (u64 *its_cmd, int word, int shift, int size) |
static int | vgic_its_cmd_handle_discard (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static int | vgic_its_cmd_handle_movi (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static bool | __is_visible_gfn_locked (struct vgic_its *its, gpa_t gpa) |
static bool | vgic_its_check_id (struct vgic_its *its, u64 baser, u32 id, gpa_t *eaddr) |
static bool | vgic_its_check_event_id (struct vgic_its *its, struct its_device *device, u32 event_id) |
static int | vgic_its_alloc_collection (struct vgic_its *its, struct its_collection **colp, u32 coll_id) |
static void | vgic_its_free_collection (struct vgic_its *its, u32 coll_id) |
static struct its_ite * | vgic_its_alloc_ite (struct its_device *device, struct its_collection *collection, u32 event_id) |
static int | vgic_its_cmd_handle_mapi (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static void | vgic_its_free_device (struct kvm *kvm, struct its_device *device) |
static void | vgic_its_free_device_list (struct kvm *kvm, struct vgic_its *its) |
static void | vgic_its_free_collection_list (struct kvm *kvm, struct vgic_its *its) |
static struct its_device * | vgic_its_alloc_device (struct vgic_its *its, u32 device_id, gpa_t itt_addr, u8 num_eventid_bits) |
static int | vgic_its_cmd_handle_mapd (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static int | vgic_its_cmd_handle_mapc (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static int | vgic_its_cmd_handle_clear (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
int | vgic_its_inv_lpi (struct kvm *kvm, struct vgic_irq *irq) |
static int | vgic_its_cmd_handle_inv (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
int | vgic_its_invall (struct kvm_vcpu *vcpu) |
static int | vgic_its_cmd_handle_invall (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static int | vgic_its_cmd_handle_movall (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static int | vgic_its_cmd_handle_int (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static int | vgic_its_handle_command (struct kvm *kvm, struct vgic_its *its, u64 *its_cmd) |
static u64 | vgic_sanitise_its_baser (u64 reg) |
static u64 | vgic_sanitise_its_cbaser (u64 reg) |
static unsigned long | vgic_mmio_read_its_cbaser (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static void | vgic_mmio_write_its_cbaser (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
static void | vgic_its_process_commands (struct kvm *kvm, struct vgic_its *its) |
static void | vgic_mmio_write_its_cwriter (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
static unsigned long | vgic_mmio_read_its_cwriter (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static unsigned long | vgic_mmio_read_its_creadr (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static int | vgic_mmio_uaccess_write_its_creadr (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
static unsigned long | vgic_mmio_read_its_baser (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len) |
static void | vgic_mmio_write_its_baser (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
static unsigned long | vgic_mmio_read_its_ctlr (struct kvm *vcpu, struct vgic_its *its, gpa_t addr, unsigned int len) |
static void | vgic_mmio_write_its_ctlr (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
static void | its_mmio_write_wi (struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val) |
void | vgic_enable_lpis (struct kvm_vcpu *vcpu) |
static int | vgic_register_its_iodev (struct kvm *kvm, struct vgic_its *its, u64 addr) |
void | vgic_lpi_translation_cache_init (struct kvm *kvm) |
void | vgic_lpi_translation_cache_destroy (struct kvm *kvm) |
static int | vgic_its_create (struct kvm_device *dev, u32 type) |
static void | vgic_its_destroy (struct kvm_device *kvm_dev) |
static int | vgic_its_has_attr_regs (struct kvm_device *dev, struct kvm_device_attr *attr) |
static int | vgic_its_attr_regs_access (struct kvm_device *dev, struct kvm_device_attr *attr, u64 *reg, bool is_write) |
static u32 | compute_next_devid_offset (struct list_head *h, struct its_device *dev) |
static u32 | compute_next_eventid_offset (struct list_head *h, struct its_ite *ite) |
static int | scan_its_table (struct vgic_its *its, gpa_t base, int size, u32 esz, int start_id, entry_fn_t fn, void *opaque) |
static int | vgic_its_save_ite (struct vgic_its *its, struct its_device *dev, struct its_ite *ite, gpa_t gpa, int ite_esz) |
static int | vgic_its_restore_ite (struct vgic_its *its, u32 event_id, void *ptr, void *opaque) |
static int | vgic_its_ite_cmp (void *priv, const struct list_head *a, const struct list_head *b) |
static int | vgic_its_save_itt (struct vgic_its *its, struct its_device *device) |
static int | vgic_its_restore_itt (struct vgic_its *its, struct its_device *dev) |
static int | vgic_its_save_dte (struct vgic_its *its, struct its_device *dev, gpa_t ptr, int dte_esz) |
static int | vgic_its_restore_dte (struct vgic_its *its, u32 id, void *ptr, void *opaque) |
static int | vgic_its_device_cmp (void *priv, const struct list_head *a, const struct list_head *b) |
static int | vgic_its_save_device_tables (struct vgic_its *its) |
static int | handle_l1_dte (struct vgic_its *its, u32 id, void *addr, void *opaque) |
static int | vgic_its_restore_device_tables (struct vgic_its *its) |
static int | vgic_its_save_cte (struct vgic_its *its, struct its_collection *collection, gpa_t gpa, int esz) |
static int | vgic_its_restore_cte (struct vgic_its *its, gpa_t gpa, int esz) |
static int | vgic_its_save_collection_table (struct vgic_its *its) |
static int | vgic_its_restore_collection_table (struct vgic_its *its) |
static void | vgic_its_reset (struct kvm *kvm, struct vgic_its *its) |
static int | vgic_its_has_attr (struct kvm_device *dev, struct kvm_device_attr *attr) |
static int | vgic_its_ctrl (struct kvm *kvm, struct vgic_its *its, u64 attr) |
bool | kvm_arch_allow_write_without_running_vcpu (struct kvm *kvm) |
static int | vgic_its_set_attr (struct kvm_device *dev, struct kvm_device_attr *attr) |
static int | vgic_its_get_attr (struct kvm_device *dev, struct kvm_device_attr *attr) |
int | kvm_vgic_register_its_device (void) |
Variables | |
static const struct vgic_its_abi | its_table_abi_versions [] |
static struct vgic_register_region | its_registers [] |
static struct kvm_device_ops | kvm_arm_vgic_its_ops |
#define ABI_0_ESZ 8 |
Definition at line 176 of file vgic-its.c.
#define BASER_INDEX | ( | addr | ) | (((addr) / sizeof(u64)) & 0x7) |
Definition at line 1688 of file vgic-its.c.
#define COLLECTION_NOT_MAPPED ((u32)~0) |
Definition at line 128 of file vgic-its.c.
#define ESZ_MAX ABI_0_ESZ |
Definition at line 177 of file vgic-its.c.
#define for_each_lpi_its | ( | dev, | |
ite, | |||
its | |||
) |
Definition at line 244 of file vgic-its.c.
#define GIC_LPI_OFFSET 8192 |
Definition at line 248 of file vgic-its.c.
#define GITS_BASER_RO_MASK (GENMASK_ULL(52, 48) | GENMASK_ULL(58, 56)) |
Definition at line 1710 of file vgic-its.c.
#define INITIAL_BASER_VALUE |
Definition at line 1941 of file vgic-its.c.
#define INITIAL_PROPBASER_VALUE |
Definition at line 1947 of file vgic-its.c.
#define ITS_CMD_BUFFER_SIZE | ( | baser | ) | ((((baser) & 0xff) + 1) << 12) |
Definition at line 1582 of file vgic-its.c.
#define its_cmd_get_collection | ( | cmd | ) | its_cmd_mask_field(cmd, 2, 0, 16) |
Definition at line 846 of file vgic-its.c.
#define its_cmd_get_command | ( | cmd | ) | its_cmd_mask_field(cmd, 0, 0, 8) |
Definition at line 841 of file vgic-its.c.
#define its_cmd_get_deviceid | ( | cmd | ) | its_cmd_mask_field(cmd, 0, 32, 32) |
Definition at line 842 of file vgic-its.c.
#define its_cmd_get_id | ( | cmd | ) | its_cmd_mask_field(cmd, 1, 0, 32) |
Definition at line 844 of file vgic-its.c.
#define its_cmd_get_ittaddr | ( | cmd | ) | (its_cmd_mask_field(cmd, 2, 8, 44) << 8) |
Definition at line 847 of file vgic-its.c.
#define its_cmd_get_physical_id | ( | cmd | ) | its_cmd_mask_field(cmd, 1, 32, 32) |
Definition at line 845 of file vgic-its.c.
#define its_cmd_get_size | ( | cmd | ) | (its_cmd_mask_field(cmd, 1, 0, 5) + 1) |
Definition at line 843 of file vgic-its.c.
#define its_cmd_get_target_addr | ( | cmd | ) | its_cmd_mask_field(cmd, 2, 16, 32) |
Definition at line 848 of file vgic-its.c.
#define its_cmd_get_validbit | ( | cmd | ) | its_cmd_mask_field(cmd, 2, 63, 1) |
Definition at line 849 of file vgic-its.c.
#define ITS_CMD_OFFSET | ( | reg | ) | ((reg) & GENMASK(19, 5)) |
Definition at line 1584 of file vgic-its.c.
#define ITS_CMD_SIZE 32 |
Definition at line 1583 of file vgic-its.c.
#define its_is_collection_mapped | ( | coll | ) |
Definition at line 137 of file vgic-its.c.
#define LPI_DEFAULT_PCPU_CACHE_SIZE 16 |
Definition at line 1901 of file vgic-its.c.
#define LPI_PROP_ENABLE_BIT | ( | p | ) | ((p) & LPI_PROP_ENABLED) |
Definition at line 271 of file vgic-its.c.
#define LPI_PROP_PRIORITY | ( | p | ) | ((p) & 0xfc) |
Definition at line 272 of file vgic-its.c.
#define NR_ITS_ABIS ARRAY_SIZE(its_table_abi_versions) |
Definition at line 190 of file vgic-its.c.
#define REGISTER_ITS_DESC | ( | off, | |
rd, | |||
wr, | |||
length, | |||
acc | |||
) |
Definition at line 1811 of file vgic-its.c.
#define REGISTER_ITS_DESC_UACCESS | ( | off, | |
rd, | |||
wr, | |||
uwr, | |||
length, | |||
acc | |||
) |
Definition at line 1820 of file vgic-its.c.
#define VITS_DTE_MAX_DEVID_OFFSET (BIT(14) - 1) |
Definition at line 252 of file vgic-its.c.
#define VITS_ITE_MAX_EVENTID_OFFSET (BIT(16) - 1) |
Definition at line 253 of file vgic-its.c.
#define VITS_TYPER_DEVBITS 16 |
Definition at line 251 of file vgic-its.c.
#define VITS_TYPER_IDBITS 16 |
Definition at line 250 of file vgic-its.c.
typedef int(* entry_fn_t) (struct vgic_its *its, u32 id, void *entry, void *opaque) |
entry_fn_t - Callback called on a table entry restore path @its: its handle @id: id of the entry @entry: pointer to the entry @opaque: pointer to an opaque data
Return: < 0 on error, 0 if last element was identified, id offset to next element otherwise
Definition at line 2156 of file vgic-its.c.
|
static |
Definition at line 911 of file vgic-its.c.
|
static |
Definition at line 557 of file vgic-its.c.
|
static |
|
static |
Definition at line 2119 of file vgic-its.c.
|
static |
Definition at line 2133 of file vgic-its.c.
|
static |
Definition at line 259 of file vgic-its.c.
Definition at line 226 of file vgic-its.c.
|
static |
|
static |
handle_l1_dte - callback used for L1 device table entries (2 stage case)
@its: its handle @id: index of the entry in the L1 table @addr: kernel VA @opaque: unused
L1 table entries are scanned by steps of 1 entry Return < 0 if error, 0 if last dte was found when scanning the L2 table, +1 otherwise (meaning next L1 entry must be scanned)
Definition at line 2493 of file vgic-its.c.
|
static |
|
static |
Definition at line 821 of file vgic-its.c.
|
static |
Definition at line 1830 of file vgic-its.c.
|
static |
Definition at line 434 of file vgic-its.c.
bool kvm_arch_allow_write_without_running_vcpu | ( | struct kvm * | kvm | ) |
Definition at line 2824 of file vgic-its.c.
int kvm_vgic_register_its_device | ( | void | ) |
Definition at line 2914 of file vgic-its.c.
|
static |
|
static |
|
static |
|
static |
Definition at line 408 of file vgic-its.c.
|
static |
Definition at line 393 of file vgic-its.c.
|
static |
Definition at line 280 of file vgic-its.c.
|
static |
Definition at line 39 of file vgic-its.c.
int vgic_copy_lpi_list | ( | struct kvm * | kvm, |
struct kvm_vcpu * | vcpu, | ||
u32 ** | intid_ptr | ||
) |
void vgic_enable_lpis | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 1866 of file vgic-its.c.
|
static |
|
static |
|
static |
|
static |
Definition at line 2049 of file vgic-its.c.
|
static |
Definition at line 606 of file vgic-its.c.
|
static |
Definition at line 588 of file vgic-its.c.
|
static |
Definition at line 1001 of file vgic-its.c.
|
static |
Definition at line 930 of file vgic-its.c.
|
static |
Definition at line 1302 of file vgic-its.c.
|
static |
Definition at line 855 of file vgic-its.c.
|
static |
Definition at line 1456 of file vgic-its.c.
|
static |
Definition at line 1332 of file vgic-its.c.
|
static |
Definition at line 1389 of file vgic-its.c.
|
static |
Definition at line 1255 of file vgic-its.c.
|
static |
Definition at line 1213 of file vgic-its.c.
|
static |
Definition at line 1085 of file vgic-its.c.
|
static |
Definition at line 1414 of file vgic-its.c.
|
static |
Definition at line 882 of file vgic-its.c.
|
static |
|
static |
Definition at line 1952 of file vgic-its.c.
|
static |
Definition at line 2777 of file vgic-its.c.
|
static |
Definition at line 2013 of file vgic-its.c.
|
static |
|
static |
Definition at line 1039 of file vgic-its.c.
|
static |
Definition at line 1181 of file vgic-its.c.
|
static |
Definition at line 1153 of file vgic-its.c.
|
static |
Definition at line 1172 of file vgic-its.c.
|
inline |
Definition at line 192 of file vgic-its.c.
|
static |
Definition at line 2871 of file vgic-its.c.
|
static |
Definition at line 1469 of file vgic-its.c.
|
static |
Definition at line 2749 of file vgic-its.c.
|
static |
Definition at line 2028 of file vgic-its.c.
int vgic_its_inject_cached_translation | ( | struct kvm * | kvm, |
struct kvm_msi * | msi | ||
) |
Definition at line 765 of file vgic-its.c.
int vgic_its_inject_msi | ( | struct kvm * | kvm, |
struct kvm_msi * | msi | ||
) |
Definition at line 790 of file vgic-its.c.
int vgic_its_inv_lpi | ( | struct kvm * | kvm, |
struct vgic_irq * | irq | ||
) |
Definition at line 1323 of file vgic-its.c.
void vgic_its_invalidate_cache | ( | struct kvm * | kvm | ) |
Definition at line 659 of file vgic-its.c.
int vgic_its_invall | ( | struct kvm_vcpu * | vcpu | ) |
vgic_its_invall - invalidate all LPIs targetting a given vcpu @vcpu: the vcpu for which the RD is targetted by an invalidation
Contrary to the INVALL command, this targets a RD instead of a collection, and we don't need to hold the its_lock, since no ITS is involved here.
Definition at line 1355 of file vgic-its.c.
|
static |
|
static |
Definition at line 1587 of file vgic-its.c.
|
static |
Definition at line 2736 of file vgic-its.c.
int vgic_its_resolve_lpi | ( | struct kvm * | kvm, |
struct vgic_its * | its, | ||
u32 | devid, | ||
u32 | eventid, | ||
struct vgic_irq ** | irq | ||
) |
Definition at line 682 of file vgic-its.c.
|
static |
vgic_its_restore_collection_table - reads the collection table in guest memory and restores the ITS internal state. Requires the BASER registers to be restored before.
Definition at line 2653 of file vgic-its.c.
|
static |
Definition at line 2571 of file vgic-its.c.
|
static |
vgic_its_restore_device_tables - Restore the device table and all ITT from guest RAM to internal data structs
Definition at line 2520 of file vgic-its.c.
|
static |
vgic_its_restore_dte - restore a device table entry
@its: its handle @id: device id the DTE corresponds to @ptr: kernel VA where the 8 byte DTE is located @opaque: unused
Return: < 0 on error, 0 if the dte is the last one, id offset to the next dte otherwise
Definition at line 2390 of file vgic-its.c.
|
static |
vgic_its_restore_ite - restore an interrupt translation entry @event_id: id used for indexing @ptr: pointer to the ITE entry @opaque: pointer to the its_device
Definition at line 2233 of file vgic-its.c.
|
static |
vgic_its_restore_itt - restore the ITT of a device
@its: its handle @dev: device handle
Return 0 on success, < 0 on error
Definition at line 2337 of file vgic-its.c.
|
static |
vgic_its_restore_tables_v0 - Restore the ITS tables from guest RAM to internal data structs according to V0 ABI
Definition at line 2706 of file vgic-its.c.
|
static |
vgic_its_save_collection_table - Save the collection table into guest RAM
Definition at line 2612 of file vgic-its.c.
|
static |
Definition at line 2553 of file vgic-its.c.
|
static |
vgic_its_save_device_tables - Save the device table and all ITT into guest RAM
L1/L2 handling is hidden by vgic_its_check_id() helper which directly returns the GPA of the device entry
Definition at line 2450 of file vgic-its.c.
|
static |
vgic_its_save_dte - Save a device table entry at a given GPA
@its: ITS handle @dev: ITS device @ptr: GPA
Definition at line 2362 of file vgic-its.c.
|
static |
vgic_its_save_ite - Save an interrupt translation entry at @gpa
Definition at line 2212 of file vgic-its.c.
|
static |
Definition at line 2300 of file vgic-its.c.
|
static |
vgic_its_save_tables_v0 - Save the ITS tables into guest ARM according to v0 ABI
Definition at line 2690 of file vgic-its.c.
|
static |
Definition at line 197 of file vgic-its.c.
|
static |
Definition at line 2831 of file vgic-its.c.
|
static |
Definition at line 743 of file vgic-its.c.
void vgic_lpi_translation_cache_destroy | ( | struct kvm * | kvm | ) |
Definition at line 1927 of file vgic-its.c.
void vgic_lpi_translation_cache_init | ( | struct kvm * | kvm | ) |
|
static |
Definition at line 1689 of file vgic-its.c.
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 530 of file vgic-its.c.
|
static |
Definition at line 507 of file vgic-its.c.
|
static |
|
static |
Definition at line 1661 of file vgic-its.c.
|
static |
|
static |
Definition at line 1711 of file vgic-its.c.
|
static |
|
static |
Definition at line 1781 of file vgic-its.c.
|
static |
struct vgic_its* vgic_msi_to_its | ( | struct kvm * | kvm, |
struct kvm_msi * | msi | ||
) |
Definition at line 708 of file vgic-its.c.
|
static |
Definition at line 1872 of file vgic-its.c.
|
static |
Definition at line 1519 of file vgic-its.c.
|
static |
Definition at line 1537 of file vgic-its.c.
|
static |
Definition at line 1830 of file vgic-its.c.
|
static |
Definition at line 39 of file vgic-its.c.
|
static |
Definition at line 2871 of file vgic-its.c.