From 7f46dacd0b3fd301df11b15ee00db93dee60215c Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 16 Sep 2021 18:13:33 -0400 Subject: [PATCH] Drop kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch Signed-off-by: Sasha Levin --- ...ove-irq-get_input_level-into-an-ops-.patch | 169 ------------------ queue-5.13/series | 1 - 2 files changed, 170 deletions(-) delete mode 100644 queue-5.13/kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch 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 index 6764f093df2..00000000000 --- a/queue-5.13/kvm-arm64-vgic-move-irq-get_input_level-into-an-ops-.patch +++ /dev/null @@ -1,169 +0,0 @@ -From a2d3e0d9335a9de04e9441bc1766f0fd601a49af Mon Sep 17 00:00:00 2001 -From: Sasha Levin -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 - -[ 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 -Signed-off-by: Sasha Levin ---- - 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 - diff --git a/queue-5.13/series b/queue-5.13/series index 3ca13b9d1a2..f2647ea4a4f 100644 --- a/queue-5.13/series +++ b/queue-5.13/series @@ -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 -- 2.47.2