| /linux/arch/arm64/kvm/ |
| H A D | Makefile | 19 vgic-sys-reg-v3.o fpsimd.o pkvm.o \ 21 vgic/vgic.o vgic/vgic-init.o \ 22 vgic/vgic-irqfd.o vgic/vgic-v2.o \ 23 vgic/vgic-v3.o vgic/vgic-v4.o \ 24 vgic/vgic-mmio.o vgic/vgic-mmio-v2.o \ 25 vgic/vgic-mmio-v3.o vgic/vgic-kvm-device.o \ 26 vgic/vgic-its.o vgic/vgic-debug.o vgic/vgic-v3-nested.o \ 27 vgic/vgic-v5.o
|
| H A D | arm.c | 363 r = kvm->arch.vgic.msis_require_devid; in kvm_vm_ioctl_check_extension() 573 vcpu->kvm->arch.vgic.nassgireq); in kvm_vcpu_should_clear_twi()
|
| /linux/arch/arm64/kvm/hyp/ |
| H A D | vgic-v2-cpuif-proxy.c | 40 struct vgic_dist *vgic = &kvm->arch.vgic; in __vgic_v2_perform_cpuif_access() local 50 if (fault_ipa < vgic->vgic_cpu_base || in __vgic_v2_perform_cpuif_access() 51 fault_ipa >= (vgic->vgic_cpu_base + KVM_VGIC_V2_CPU_SIZE)) in __vgic_v2_perform_cpuif_access() 67 if ((fault_ipa - vgic->vgic_cpu_base) >= GIC_CPU_DEACTIVATE) in __vgic_v2_perform_cpuif_access() 72 addr += fault_ipa - vgic->vgic_cpu_base; in __vgic_v2_perform_cpuif_access()
|
| H A D | vgic-v3-sr.c | 1169 if (kern_hyp_va(vcpu->kvm)->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V3) in __vgic_v3_perform_cpuif_access()
|
| /linux/arch/arm64/kvm/vgic/ |
| H A D | vgic-init.c | 54 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_early_init() 159 kvm->arch.vgic.in_kernel = true; in kvm_vgic_create() 160 kvm->arch.vgic.vgic_model = type; in kvm_vgic_create() 161 kvm->arch.vgic.implementation_rev = KVM_VGIC_IMP_REV_LATEST; in kvm_vgic_create() 163 kvm->arch.vgic.vgic_dist_base = VGIC_ADDR_UNDEF; in kvm_vgic_create() 169 kvm->arch.vgic.vgic_cpu_base = VGIC_ADDR_UNDEF; in kvm_vgic_create() 171 INIT_LIST_HEAD(&kvm->arch.vgic.rd_regions); in kvm_vgic_create() 180 kvm->arch.vgic.nassgicap = system_supports_direct_sgis(); in kvm_vgic_create() 197 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_dist_init() 255 if (vcpu->kvm->arch.vgic.mi_intid == 0) in kvm_vgic_vcpu_nv_init() [all …]
|
| H A D | vgic-kvm-device.c | 40 if (kvm->arch.vgic.vgic_model != type_needed) in vgic_check_type() 48 struct vgic_dist *vgic = &kvm->arch.vgic; in kvm_set_legacy_vgic_v2_addr() local 56 r = vgic_check_iorange(kvm, vgic->vgic_dist_base, dev_addr->addr, in kvm_set_legacy_vgic_v2_addr() 59 vgic->vgic_dist_base = dev_addr->addr; in kvm_set_legacy_vgic_v2_addr() 64 r = vgic_check_iorange(kvm, vgic->vgic_cpu_base, dev_addr->addr, in kvm_set_legacy_vgic_v2_addr() 67 vgic->vgic_cpu_base = dev_addr->addr; in kvm_set_legacy_vgic_v2_addr() 96 struct vgic_dist *vgic = &kvm->arch.vgic; in kvm_vgic_addr() local 115 addr_ptr = &vgic->vgic_dist_base; in kvm_vgic_addr() 121 addr_ptr = &vgic->vgic_cpu_base; in kvm_vgic_addr() 127 addr_ptr = &vgic->vgic_dist_base; in kvm_vgic_addr() [all …]
|
| H A D | vgic-debug.c | 37 struct vgic_dist *dist = &kvm->arch.vgic; in iter_next() 66 struct vgic_dist *dist = &kvm->arch.vgic; in iter_mark_lpis() 88 struct vgic_dist *dist = &kvm->arch.vgic; in iter_unmark_lpis() 110 iter->nr_spis = kvm->arch.vgic.nr_spis; in iter_init() 111 if (kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) in iter_init() 133 iter = kvm->arch.vgic.iter; in vgic_debug_start() 146 kvm->arch.vgic.iter = iter; in vgic_debug_start() 158 struct vgic_state_iter *iter = kvm->arch.vgic.iter; in vgic_debug_next() 180 iter = kvm->arch.vgic.iter; in vgic_debug_stop() 183 kvm->arch.vgic.iter = NULL; in vgic_debug_stop() [all …]
|
| H A D | vgic-v3.c | 64 atomic_read(&vcpu->kvm->arch.vgic.active_spis)) in vgic_v3_configure_hcr() 81 if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) { in vgic_v3_fold_lr() 130 atomic_dec_if_positive(&vcpu->kvm->arch.vgic.active_spis); in vgic_v3_fold_lr() 199 u32 model = vcpu->kvm->arch.vgic.vgic_model; in vgic_v3_deactivate() 219 val >= vcpu->kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS) in vgic_v3_deactivate() 300 u32 model = vcpu->kvm->arch.vgic.vgic_model; in vgic_v3_compute_lr() 368 u32 model = vcpu->kvm->arch.vgic.vgic_model; in vgic_v3_populate_lr() 407 u32 model = vcpu->kvm->arch.vgic.vgic_model; in vgic_v3_set_vmcr() 437 u32 model = vcpu->kvm->arch.vgic.vgic_model; in vgic_v3_get_vmcr() 487 if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) { in vgic_v3_reset() [all …]
|
| H A D | vgic-mmio-v3.c | 43 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_has_its() 71 return kvm->arch.vgic.nassgicap; in vgic_supports_direct_sgis() 84 struct vgic_dist *vgic = &vcpu->kvm->arch.vgic; in vgic_mmio_read_v3_misc() local 89 if (vgic->enabled) in vgic_mmio_read_v3_misc() 92 if (vgic->nassgireq) in vgic_mmio_read_v3_misc() 96 value = vgic->nr_spis + VGIC_NR_PRIVATE_IRQS; in vgic_mmio_read_v3_misc() 111 (vgic->implementation_rev << GICD_IIDR_REVISION_SHIFT) | in vgic_mmio_read_v3_misc() 125 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in vgic_mmio_write_v3_misc() 174 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in vgic_mmio_uaccess_write_v3_misc() 321 struct vgic_dist *vgic = &vcpu->kvm->arch.vgic; in vgic_mmio_vcpu_rdist_is_last() local [all …]
|
| H A D | vgic-mmio-v2.c | 28 struct vgic_dist *vgic = &vcpu->kvm->arch.vgic; in vgic_mmio_read_v2_misc() local 33 value = vgic->enabled ? GICD_ENABLE : 0; in vgic_mmio_read_v2_misc() 36 value = vgic->nr_spis + VGIC_NR_PRIVATE_IRQS; in vgic_mmio_read_v2_misc() 42 (vgic->implementation_rev << GICD_IIDR_REVISION_SHIFT) | in vgic_mmio_read_v2_misc() 56 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in vgic_mmio_write_v2_misc() 76 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in vgic_mmio_uaccess_write_v2_misc() 98 vcpu->kvm->arch.vgic.v2_groups_user_writable = true; in vgic_mmio_uaccess_write_v2_misc() 114 if (vcpu->kvm->arch.vgic.v2_groups_user_writable) in vgic_mmio_uaccess_write_v2_group()
|
| H A D | vgic-v4.c | 192 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_v4_configure_vsgis() 244 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_v4_init() 320 struct its_vm *its_vm = &kvm->arch.vgic.its_vm; in vgic_v4_teardown() 389 err = its_make_vpe_resident(vpe, false, vcpu->kvm->arch.vgic.enabled); in vgic_v4_load() 476 .vm = &kvm->arch.vgic.its_vm, in kvm_vgic_v4_set_forwarding() 520 xa_for_each(&kvm->arch.vgic.lpi_xa, idx, irq) { in __vgic_host_irq_get_vlpi()
|
| H A D | vgic.c | 68 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_get_lpi() 91 intid < (kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS)) { in vgic_get_irq() 92 intid = array_index_nospec(intid, kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS); in vgic_get_irq() 93 return &kvm->arch.vgic.spis[intid - VGIC_NR_PRIVATE_IRQS]; in vgic_get_irq() 143 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_put_irq() 165 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_release_deleted_lpis() 263 !irq->target_vcpu->kvm->arch.vgic.enabled)) in vgic_target_oracle() 388 kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3); in vgic_model_needs_bcst_kick() 481 atomic_fetch_inc(&vcpu->kvm->arch.vgic.active_spis) == 0); in vgic_queue_irq_unlock() 1125 if (!vcpu->kvm->arch.vgic.enabled) in kvm_vgic_vcpu_pending_irq()
|
| H A D | vgic-mmio.c | 264 switch (vcpu->kvm->arch.vgic.vgic_model) { in __read_pending() 301 vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2); in is_vgic_v2_sgi() 473 if ((vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3 && in vgic_access_active_prepare() 482 if ((vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3 && in vgic_access_active_finish() 564 u32 model = vcpu->kvm->arch.vgic.vgic_model; in vgic_mmio_change_active() 770 int nr_irqs = vcpu->kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS; in vgic_read_irq_line_level_info() 792 int nr_irqs = vcpu->kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS; in vgic_write_irq_line_level_info() 922 int flags, nr_irqs = kvm->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS; in check_region() 1083 struct vgic_io_device *io_device = &kvm->arch.vgic.dist_iodev; in vgic_register_dist_iodev()
|
| H A D | trace.h | 33 #define TRACE_INCLUDE_PATH ../../arch/arm64/kvm/vgic
|
| H A D | vgic.h | 123 return vcpu->kvm->arch.vgic.implementation_rev; in vgic_get_implementation_rev() 157 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_write_guest_lock() 410 struct vgic_dist *d = &kvm->arch.vgic; in vgic_dist_overlap()
|
| H A D | vgic-v3-nested.c | 395 vcpu->kvm->arch.vgic.mi_intid, state, vcpu); in vgic_v3_handle_nested_maint_irq() 406 vcpu->kvm->arch.vgic.mi_intid, level, vcpu); in vgic_v3_nested_update_mi()
|
| H A D | vgic-its.c | 79 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_add_lpi() 283 u64 propbase = GICR_PROPBASER_ADDRESS(kvm->arch.vgic.propbaser); in update_lpi_config() 392 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in its_sync_lpi_pending_table() 1047 lpi_nr >= max_lpis_propbaser(kvm->arch.vgic.propbaser)) in vgic_its_cmd_handle_mapi() 1297 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_its_invall() 1352 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_its_cmd_handle_movall() 1881 dev->kvm->arch.vgic.msis_require_devid = true; in vgic_its_create() 1882 dev->kvm->arch.vgic.has_its = true; in vgic_its_create() 1890 dev->kvm->arch.vgic.propbaser = INITIAL_PROPBASER_VALUE; in vgic_its_create() 2718 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_arch_allow_write_without_running_vcpu()
|
| H A D | vgic-irqfd.c | 139 struct vgic_dist *dist = &kvm->arch.vgic; in kvm_vgic_setup_default_irq_routing()
|
| H A D | vgic-v2.c | 422 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_v2_map_resources()
|
| /linux/Documentation/virt/kvm/devices/ |
| H A D | index.rst | 10 arm-vgic-its 11 arm-vgic 12 arm-vgic-v3
|
| H A D | arm-vgic.rst | 18 device and guest ITS devices, see arm-vgic-v3.txt. It is not possible to 155 -ENOMEM memory shortage when allocating vgic internal data
|
| /linux/arch/arm64/kvm/hyp/vhe/ |
| H A D | Makefile | 12 obj-y += ../vgic-v3-sr.o ../aarch32.o ../vgic-v2-cpuif-proxy.o ../entry.o \
|
| /linux/include/kvm/ |
| H A D | arm_vgic.h | 419 #define irqchip_in_kernel(k) (!!((k)->arch.vgic.in_kernel)) 420 #define vgic_initialized(k) ((k)->arch.vgic.initialized) 422 ((i) < (k)->arch.vgic.nr_spis + VGIC_NR_PRIVATE_IRQS))
|
| /linux/tools/testing/selftests/kvm/ |
| H A D | Makefile.kvm | 40 LIBKVM_arm64 += lib/arm64/vgic.c 177 TEST_GEN_PROGS_arm64 += arm64/no-vgic-v3
|
| /linux/arch/arm64/kvm/hyp/nvhe/ |
| H A D | pkvm.c | 341 hyp_vm->kvm.arch.vgic.vgic_model = host_kvm->arch.vgic.vgic_model; in pkvm_init_features_from_host()
|