|
KVM
|
#include <linux/irqchip/arm-gic-v3.h>#include <linux/irq.h>#include <linux/irqdomain.h>#include <linux/kstrtox.h>#include <linux/kvm.h>#include <linux/kvm_host.h>#include <kvm/arm_vgic.h>#include <asm/kvm_hyp.h>#include <asm/kvm_mmu.h>#include <asm/kvm_asm.h>#include "vgic.h"
Go to the source code of this file.
Macros | |
| #define | INITIAL_PENDBASER_VALUE |
Functions | |
| void | vgic_v3_set_underflow (struct kvm_vcpu *vcpu) |
| static bool | lr_signals_eoi_mi (u64 lr_val) |
| void | vgic_v3_fold_lr_state (struct kvm_vcpu *vcpu) |
| void | vgic_v3_populate_lr (struct kvm_vcpu *vcpu, struct vgic_irq *irq, int lr) |
| void | vgic_v3_clear_lr (struct kvm_vcpu *vcpu, int lr) |
| void | vgic_v3_set_vmcr (struct kvm_vcpu *vcpu, struct vgic_vmcr *vmcrp) |
| void | vgic_v3_get_vmcr (struct kvm_vcpu *vcpu, struct vgic_vmcr *vmcrp) |
| void | vgic_v3_enable (struct kvm_vcpu *vcpu) |
| int | vgic_v3_lpi_sync_pending_status (struct kvm *kvm, struct vgic_irq *irq) |
| static void | unmap_all_vpes (struct kvm *kvm) |
| static void | map_all_vpes (struct kvm *kvm) |
| int | vgic_v3_save_pending_tables (struct kvm *kvm) |
| bool | vgic_v3_rdist_overlap (struct kvm *kvm, gpa_t base, size_t size) |
| bool | vgic_v3_check_base (struct kvm *kvm) |
| struct vgic_redist_region * | vgic_v3_rdist_free_slot (struct list_head *rd_regions) |
| struct vgic_redist_region * | vgic_v3_rdist_region_from_index (struct kvm *kvm, u32 index) |
| int | vgic_v3_map_resources (struct kvm *kvm) |
| DEFINE_STATIC_KEY_FALSE (vgic_v3_cpuif_trap) | |
| static int __init | early_group0_trap_cfg (char *buf) |
| early_param ("kvm-arm.vgic_v3_group0_trap", early_group0_trap_cfg) | |
| static int __init | early_group1_trap_cfg (char *buf) |
| early_param ("kvm-arm.vgic_v3_group1_trap", early_group1_trap_cfg) | |
| static int __init | early_common_trap_cfg (char *buf) |
| early_param ("kvm-arm.vgic_v3_common_trap", early_common_trap_cfg) | |
| static int __init | early_gicv4_enable (char *buf) |
| early_param ("kvm-arm.vgic_v4_enable", early_gicv4_enable) | |
| static bool | vgic_v3_broken_seis (void) |
| int | vgic_v3_probe (const struct gic_kvm_info *info) |
| void | vgic_v3_load (struct kvm_vcpu *vcpu) |
| void | vgic_v3_vmcr_sync (struct kvm_vcpu *vcpu) |
| void | vgic_v3_put (struct kvm_vcpu *vcpu) |
Variables | |
| static bool | group0_trap |
| static bool | group1_trap |
| static bool | common_trap |
| static bool | dir_trap |
| static bool | gicv4_enable |
| static const struct midr_range | broken_seis [] |
| #define INITIAL_PENDBASER_VALUE |
| DEFINE_STATIC_KEY_FALSE | ( | vgic_v3_cpuif_trap | ) |
|
static |
|
static |
|
static |
| early_param | ( | "kvm-arm.vgic_v3_common_trap" | , |
| early_common_trap_cfg | |||
| ) |
| early_param | ( | "kvm-arm.vgic_v3_group0_trap" | , |
| early_group0_trap_cfg | |||
| ) |
| early_param | ( | "kvm-arm.vgic_v3_group1_trap" | , |
| early_group1_trap_cfg | |||
| ) |
| early_param | ( | "kvm-arm.vgic_v4_enable" | , |
| early_gicv4_enable | |||
| ) |
|
static |
|
static |
Definition at line 363 of file vgic-v3.c.


|
static |
|
static |
| bool vgic_v3_check_base | ( | struct kvm * | kvm | ) |
Definition at line 477 of file vgic-v3.c.


| void vgic_v3_clear_lr | ( | struct kvm_vcpu * | vcpu, |
| int | lr | ||
| ) |
| void vgic_v3_enable | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 260 of file vgic-v3.c.

| void vgic_v3_fold_lr_state | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 35 of file vgic-v3.c.


| void vgic_v3_get_vmcr | ( | struct kvm_vcpu * | vcpu, |
| struct vgic_vmcr * | vmcrp | ||
| ) |
| void vgic_v3_load | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 720 of file vgic-v3.c.


| int vgic_v3_lpi_sync_pending_status | ( | struct kvm * | kvm, |
| struct vgic_irq * | irq | ||
| ) |
Definition at line 305 of file vgic-v3.c.

| int vgic_v3_map_resources | ( | struct kvm * | kvm | ) |
| void vgic_v3_populate_lr | ( | struct kvm_vcpu * | vcpu, |
| struct vgic_irq * | irq, | ||
| int | lr | ||
| ) |
Definition at line 107 of file vgic-v3.c.


| int vgic_v3_probe | ( | const struct gic_kvm_info * | info | ) |
vgic_v3_probe - probe for a VGICv3 compatible interrupt controller @info: pointer to the GIC description
Returns 0 if the VGICv3 has been probed successfully, returns an error code otherwise
Definition at line 632 of file vgic-v3.c.


| void vgic_v3_put | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 748 of file vgic-v3.c.


| struct vgic_redist_region* vgic_v3_rdist_free_slot | ( | struct list_head * | rd_regions | ) |
vgic_v3_rdist_free_slot - Look up registered rdist regions and identify one which has free space to put a new rdist region.
@rd_regions: redistributor region list head
A redistributor regions maps n redistributors, n = region size / (2 x 64kB). Stride between redistributors is 0 and regions are filled in the index order.
Return: the redist region handle, if any, that has space to map a new rdist region.
Definition at line 513 of file vgic-v3.c.


| bool vgic_v3_rdist_overlap | ( | struct kvm * | kvm, |
| gpa_t | base, | ||
| size_t | size | ||
| ) |
vgic_v3_rdist_overlap - check if a region overlaps with any existing redistributor region
@kvm: kvm handle @base: base of the region @size: size of region
Return: true if there is an overlap
Definition at line 460 of file vgic-v3.c.


| struct vgic_redist_region* vgic_v3_rdist_region_from_index | ( | struct kvm * | kvm, |
| u32 | index | ||
| ) |
| int vgic_v3_save_pending_tables | ( | struct kvm * | kvm | ) |
vgic_v3_save_pending_tables - Save the pending tables into guest RAM kvm lock and all vcpu lock must be held
Definition at line 377 of file vgic-v3.c.


| void vgic_v3_set_underflow | ( | struct kvm_vcpu * | vcpu | ) |
| void vgic_v3_set_vmcr | ( | struct kvm_vcpu * | vcpu, |
| struct vgic_vmcr * | vmcrp | ||
| ) |
| void vgic_v3_vmcr_sync | ( | struct kvm_vcpu * | vcpu | ) |
|
static |