]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Drop kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch
authorSasha Levin <sashal@kernel.org>
Thu, 16 Sep 2021 22:13:33 +0000 (18:13 -0400)
committerSasha Levin <sashal@kernel.org>
Thu, 16 Sep 2021 22:13:33 +0000 (18:13 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.13/kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch [deleted file]
queue-5.13/series

diff --git a/queue-5.13/kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch b/queue-5.13/kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch
deleted file mode 100644 (file)
index 6764f09..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-From a2d3e0d9335a9de04e9441bc1766f0fd601a49af Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 1 Mar 2021 17:39:39 +0000
-Subject: KVM: arm64: vgic: move irq->get_input_level into an ops structure
-
-From: Marc Zyngier <maz@kernel.org>
-
-[ Upstream commit db75f1a33f82ad332b6e139c5960e01999969d2c ]
-
-We already have the option to attach a callback to an interrupt
-to retrieve its pending state. As we are planning to expand this
-facility, move this callback into its own data structure.
-
-This will limit the size of individual interrupts as the ops
-structures can be shared across multiple interrupts.
-
-Signed-off-by: Marc Zyngier <maz@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm64/kvm/arch_timer.c |  8 ++++++--
- arch/arm64/kvm/vgic/vgic.c  | 14 +++++++-------
- include/kvm/arm_vgic.h      | 28 +++++++++++++++++-----------
- 3 files changed, 30 insertions(+), 20 deletions(-)
-
-diff --git a/arch/arm64/kvm/arch_timer.c b/arch/arm64/kvm/arch_timer.c
-index 74e0699661e9..e2288b6bf435 100644
---- a/arch/arm64/kvm/arch_timer.c
-+++ b/arch/arm64/kvm/arch_timer.c
-@@ -1116,6 +1116,10 @@ bool kvm_arch_timer_get_input_level(int vintid)
-       return kvm_timer_should_fire(timer);
- }
-+static struct irq_ops arch_timer_irq_ops = {
-+      .get_input_level = kvm_arch_timer_get_input_level,
-+};
-+
- int kvm_timer_enable(struct kvm_vcpu *vcpu)
- {
-       struct arch_timer_cpu *timer = vcpu_timer(vcpu);
-@@ -1143,7 +1147,7 @@ int kvm_timer_enable(struct kvm_vcpu *vcpu)
-       ret = kvm_vgic_map_phys_irq(vcpu,
-                                   map.direct_vtimer->host_timer_irq,
-                                   map.direct_vtimer->irq.irq,
--                                  kvm_arch_timer_get_input_level);
-+                                  &arch_timer_irq_ops);
-       if (ret)
-               return ret;
-@@ -1151,7 +1155,7 @@ int kvm_timer_enable(struct kvm_vcpu *vcpu)
-               ret = kvm_vgic_map_phys_irq(vcpu,
-                                           map.direct_ptimer->host_timer_irq,
-                                           map.direct_ptimer->irq.irq,
--                                          kvm_arch_timer_get_input_level);
-+                                          &arch_timer_irq_ops);
-       }
-       if (ret)
-diff --git a/arch/arm64/kvm/vgic/vgic.c b/arch/arm64/kvm/vgic/vgic.c
-index 15b666200f0b..111bff47e471 100644
---- a/arch/arm64/kvm/vgic/vgic.c
-+++ b/arch/arm64/kvm/vgic/vgic.c
-@@ -182,8 +182,8 @@ bool vgic_get_phys_line_level(struct vgic_irq *irq)
-       BUG_ON(!irq->hw);
--      if (irq->get_input_level)
--              return irq->get_input_level(irq->intid);
-+      if (irq->ops && irq->ops->get_input_level)
-+              return irq->ops->get_input_level(irq->intid);
-       WARN_ON(irq_get_irqchip_state(irq->host_irq,
-                                     IRQCHIP_STATE_PENDING,
-@@ -480,7 +480,7 @@ int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid,
- /* @irq->irq_lock must be held */
- static int kvm_vgic_map_irq(struct kvm_vcpu *vcpu, struct vgic_irq *irq,
-                           unsigned int host_irq,
--                          bool (*get_input_level)(int vindid))
-+                          struct irq_ops *ops)
- {
-       struct irq_desc *desc;
-       struct irq_data *data;
-@@ -500,7 +500,7 @@ static int kvm_vgic_map_irq(struct kvm_vcpu *vcpu, struct vgic_irq *irq,
-       irq->hw = true;
-       irq->host_irq = host_irq;
-       irq->hwintid = data->hwirq;
--      irq->get_input_level = get_input_level;
-+      irq->ops = ops;
-       return 0;
- }
-@@ -509,11 +509,11 @@ static inline void kvm_vgic_unmap_irq(struct vgic_irq *irq)
- {
-       irq->hw = false;
-       irq->hwintid = 0;
--      irq->get_input_level = NULL;
-+      irq->ops = NULL;
- }
- int kvm_vgic_map_phys_irq(struct kvm_vcpu *vcpu, unsigned int host_irq,
--                        u32 vintid, bool (*get_input_level)(int vindid))
-+                        u32 vintid, struct irq_ops *ops)
- {
-       struct vgic_irq *irq = vgic_get_irq(vcpu->kvm, vcpu, vintid);
-       unsigned long flags;
-@@ -522,7 +522,7 @@ int kvm_vgic_map_phys_irq(struct kvm_vcpu *vcpu, unsigned int host_irq,
-       BUG_ON(!irq);
-       raw_spin_lock_irqsave(&irq->irq_lock, flags);
--      ret = kvm_vgic_map_irq(vcpu, irq, host_irq, get_input_level);
-+      ret = kvm_vgic_map_irq(vcpu, irq, host_irq, ops);
-       raw_spin_unlock_irqrestore(&irq->irq_lock, flags);
-       vgic_put_irq(vcpu->kvm, irq);
-diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
-index ec621180ef09..feaffeaffeec 100644
---- a/include/kvm/arm_vgic.h
-+++ b/include/kvm/arm_vgic.h
-@@ -89,6 +89,21 @@ enum vgic_irq_config {
-       VGIC_CONFIG_LEVEL
- };
-+/*
-+ * Per-irq ops overriding some common behavious.
-+ *
-+ * Always called in non-preemptible section and the functions can use
-+ * kvm_arm_get_running_vcpu() to get the vcpu pointer for private IRQs.
-+ */
-+struct irq_ops {
-+      /*
-+       * Callback function pointer to in-kernel devices that can tell us the
-+       * state of the input level of mapped level-triggered IRQ faster than
-+       * peaking into the physical GIC.
-+       */
-+      bool (*get_input_level)(int vintid);
-+};
-+
- struct vgic_irq {
-       raw_spinlock_t irq_lock;        /* Protects the content of the struct */
-       struct list_head lpi_list;      /* Used to link all LPIs together */
-@@ -126,16 +141,7 @@ struct vgic_irq {
-       u8 group;                       /* 0 == group 0, 1 == group 1 */
-       enum vgic_irq_config config;    /* Level or edge */
--      /*
--       * Callback function pointer to in-kernel devices that can tell us the
--       * state of the input level of mapped level-triggered IRQ faster than
--       * peaking into the physical GIC.
--       *
--       * Always called in non-preemptible section and the functions can use
--       * kvm_arm_get_running_vcpu() to get the vcpu pointer for private
--       * IRQs.
--       */
--      bool (*get_input_level)(int vintid);
-+      struct irq_ops *ops;
-       void *owner;                    /* Opaque pointer to reserve an interrupt
-                                          for in-kernel devices. */
-@@ -352,7 +358,7 @@ void kvm_vgic_init_cpu_hardware(void);
- int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid,
-                       bool level, void *owner);
- int kvm_vgic_map_phys_irq(struct kvm_vcpu *vcpu, unsigned int host_irq,
--                        u32 vintid, bool (*get_input_level)(int vindid));
-+                        u32 vintid, struct irq_ops *ops);
- int kvm_vgic_unmap_phys_irq(struct kvm_vcpu *vcpu, unsigned int vintid);
- bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int vintid);
--- 
-2.30.2
-
index 3ca13b9d1a27e0c75b0b957a40ca1a26d433a0bb..f2647ea4a4f5023b59b29d8da1f722b29d56a43c 100644 (file)
@@ -341,7 +341,6 @@ net-fix-null-pointer-reference-in-cipso_v4_doi_free.patch
 fix-array-index-out-of-bounds-in-taprio_change.patch
 net-w5100-check-return-value-after-calling-platform_.patch
 net-hns3-clean-up-a-type-mismatch-warning.patch
-kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch
 parisc-fix-crash-with-signals-and-alloca.patch
 parisc-fix-compile-failure-when-building-64-bit-kernel-natively.patch
 printk-console-check-consistent-sequence-number-when-handling-race-in-console_unlock.patch