summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kvm/vgic/vgic.h
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2023-02-06 09:25:56 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2023-02-06 09:25:56 -0300
commitab809efaeba0cca20cfcda23852b0ee958f6ea69 (patch)
tree36b168deb9908cba8605bb8fa026bdacc26560db /arch/arm64/kvm/vgic/vgic.h
parent17f248aa8664ff5b3643491136283e73b5c18166 (diff)
parentd2d11f342b179f1894a901f143ec7c008caba43e (diff)
downloadlinux-stable-ab809efaeba0cca20cfcda23852b0ee958f6ea69.tar.gz
linux-stable-ab809efaeba0cca20cfcda23852b0ee958f6ea69.tar.bz2
linux-stable-ab809efaeba0cca20cfcda23852b0ee958f6ea69.zip
Merge remote-tracking branch 'torvalds/master' into perf/core
To sync with libbpf, etc. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'arch/arm64/kvm/vgic/vgic.h')
-rw-r--r--arch/arm64/kvm/vgic/vgic.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm64/kvm/vgic/vgic.h b/arch/arm64/kvm/vgic/vgic.h
index 0c8da72953f0..7f7f3c5ed85a 100644
--- a/arch/arm64/kvm/vgic/vgic.h
+++ b/arch/arm64/kvm/vgic/vgic.h
@@ -6,6 +6,7 @@
#define __KVM_ARM_VGIC_NEW_H__
#include <linux/irqchip/arm-gic-common.h>
+#include <asm/kvm_mmu.h>
#define PRODUCT_ID_KVM 0x4b /* ASCII code K */
#define IMPLEMENTER_ARM 0x43b
@@ -131,6 +132,19 @@ static inline bool vgic_irq_is_multi_sgi(struct vgic_irq *irq)
return vgic_irq_get_lr_count(irq) > 1;
}
+static inline int vgic_write_guest_lock(struct kvm *kvm, gpa_t gpa,
+ const void *data, unsigned long len)
+{
+ struct vgic_dist *dist = &kvm->arch.vgic;
+ int ret;
+
+ dist->table_write_in_progress = true;
+ ret = kvm_write_guest_lock(kvm, gpa, data, len);
+ dist->table_write_in_progress = false;
+
+ return ret;
+}
+
/*
* This struct provides an intermediate representation of the fields contained
* in the GICH_VMCR and ICH_VMCR registers, such that code exporting the GIC
@@ -331,5 +345,6 @@ int vgic_v4_init(struct kvm *kvm);
void vgic_v4_teardown(struct kvm *kvm);
void vgic_v4_configure_vsgis(struct kvm *kvm);
void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val);
+int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq);
#endif