From: Christoffer Dall <cdall@linaro.org> To: kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Cc: Marc Zyngier <marc.zyngier@arm.com>, Christoffer Dall <cdall@linaro.org>, Thomas Gleixner <tglx@linutronix.de>, kvm@vger.kernel.org Subject: [RFC PATCH v2 11/19] genirq: Document vcpu_info usage for per-CPU interrupts Date: Mon, 17 Jul 2017 16:27:10 +0200 [thread overview] Message-ID: <20170717142718.13853-12-cdall@linaro.org> (raw) In-Reply-To: <20170717142718.13853-1-cdall@linaro.org> It is currently unclear how to set the VCPU affinity for an interrupt which is of the per-CPU kind, since the Linux irq_data structure describes the state for multiple interrupts when the interrupt is a per-CPU interrupt, one for each physical CPU on the system. Since each such interrupt can be associated with different VCPUs or none at all, associating a single VCPU state with such an interrupt does not capture the necessary semantics. The implementers of irq_set_affinity are the Intel and AMD IOMMUs, and the ARM GIC irqchip. The Intel and AMD callers do not appear to use per-CPU interrupts, and the ARM GIC implementation only checks the pointer against NULL vs. non-NULL. Therefore, simply update the function documentation to explain the expected use in the context of per-CPU interrupts, allowing future changes or additions to irqchip implementers to do the right thing. This allows us to set the VCPU affinity for the virtual timer interrupt in KVM/ARM, which is a per-CPU (PPI) interrupt. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Christoffer Dall <cdall@linaro.org> --- kernel/irq/manage.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 5624b2d..050b9f6 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -381,7 +381,8 @@ int irq_select_affinity_usr(unsigned int irq) /** * irq_set_vcpu_affinity - Set vcpu affinity for the interrupt * @irq: interrupt number to set affinity - * @vcpu_info: vCPU specific data + * @vcpu_info: vCPU specific data or pointer to a percpu array of vCPU + * specific data for per-CPU interrupts * * This function uses the vCPU specific data to set the vCPU * affinity for an irq. The vCPU specific data is passed from -- 2.9.0
WARNING: multiple messages have this Message-ID (diff)
From: cdall@linaro.org (Christoffer Dall) To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH v2 11/19] genirq: Document vcpu_info usage for per-CPU interrupts Date: Mon, 17 Jul 2017 16:27:10 +0200 [thread overview] Message-ID: <20170717142718.13853-12-cdall@linaro.org> (raw) In-Reply-To: <20170717142718.13853-1-cdall@linaro.org> It is currently unclear how to set the VCPU affinity for an interrupt which is of the per-CPU kind, since the Linux irq_data structure describes the state for multiple interrupts when the interrupt is a per-CPU interrupt, one for each physical CPU on the system. Since each such interrupt can be associated with different VCPUs or none at all, associating a single VCPU state with such an interrupt does not capture the necessary semantics. The implementers of irq_set_affinity are the Intel and AMD IOMMUs, and the ARM GIC irqchip. The Intel and AMD callers do not appear to use per-CPU interrupts, and the ARM GIC implementation only checks the pointer against NULL vs. non-NULL. Therefore, simply update the function documentation to explain the expected use in the context of per-CPU interrupts, allowing future changes or additions to irqchip implementers to do the right thing. This allows us to set the VCPU affinity for the virtual timer interrupt in KVM/ARM, which is a per-CPU (PPI) interrupt. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Christoffer Dall <cdall@linaro.org> --- kernel/irq/manage.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 5624b2d..050b9f6 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -381,7 +381,8 @@ int irq_select_affinity_usr(unsigned int irq) /** * irq_set_vcpu_affinity - Set vcpu affinity for the interrupt * @irq: interrupt number to set affinity - * @vcpu_info: vCPU specific data + * @vcpu_info: vCPU specific data or pointer to a percpu array of vCPU + * specific data for per-CPU interrupts * * This function uses the vCPU specific data to set the vCPU * affinity for an irq. The vCPU specific data is passed from -- 2.9.0
next prev parent reply other threads:[~2017-07-17 14:27 UTC|newest] Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-07-17 14:26 [RFC PATCH v2 00/19] KVM: arm/arm64: Optimize arch timer register handling Christoffer Dall 2017-07-17 14:26 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 01/19] arm64: Use physical counter for in-kernel reads Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 02/19] arm64: Use the physical counter when available for read_cycles Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-25 9:43 ` Will Deacon 2017-07-25 9:43 ` Will Deacon 2017-07-25 14:36 ` Christoffer Dall 2017-07-25 14:36 ` Christoffer Dall 2017-07-26 17:17 ` Will Deacon 2017-07-26 17:17 ` Will Deacon 2017-07-27 7:14 ` Christoffer Dall 2017-07-27 7:14 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 03/19] KVM: arm/arm64: Guard kvm_vgic_map_is_active against !vgic_initialized Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 04/19] KVM: arm/arm64: Support calling vgic_update_irq_pending from irq context Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 05/19] KVM: arm/arm64: Check that system supports split eoi/deactivate Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-08-01 11:35 ` Marc Zyngier 2017-08-01 11:35 ` Marc Zyngier 2017-08-01 12:26 ` Christoffer Dall 2017-08-01 12:26 ` Christoffer Dall 2017-08-01 12:37 ` Marc Zyngier 2017-08-01 12:37 ` Marc Zyngier 2017-08-01 12:54 ` Christoffer Dall 2017-08-01 12:54 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 06/19] KVM: arm/arm64: Make timer_arm and timer_disarm helpers more generic Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-08-01 14:10 ` Marc Zyngier 2017-08-01 14:10 ` Marc Zyngier 2017-08-01 14:57 ` Christoffer Dall 2017-08-01 14:57 ` Christoffer Dall 2017-08-01 15:41 ` Marc Zyngier 2017-08-01 15:41 ` Marc Zyngier 2017-07-17 14:27 ` [RFC PATCH v2 07/19] KVM: arm/arm64: Rename soft timer to bg_timer Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 08/19] KVM: arm/arm64: Use separate timer for phys timer emulation Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 09/19] KVM: arm/arm64: Move timer/vgic flush/sync under disabled irq Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 10/19] KVM: arm/arm64: Move timer save/restore out of the hyp code Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall [this message] 2017-07-17 14:27 ` [RFC PATCH v2 11/19] genirq: Document vcpu_info usage for per-CPU interrupts Christoffer Dall 2017-08-01 16:15 ` Marc Zyngier 2017-08-01 16:15 ` Marc Zyngier 2017-08-01 16:57 ` Christoffer Dall 2017-08-01 16:57 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 12/19] KVM: arm/arm64: Set VCPU affinity for virt timer irq Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 13/19] KVM: arm/arm64: Avoid timer save/restore in vcpu entry/exit Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 14/19] KVM: arm/arm64: Support EL1 phys timer register access in set/get reg Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 15/19] KVM: arm/arm64: Use kvm_arm_timer_set/get_reg for guest register traps Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 16/19] KVM: arm/arm64: Move phys_timer_emulate function Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 17/19] KVM: arm/arm64: Avoid phys timer emulation in vcpu entry/exit Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 18/19] KVM: arm/arm64: Get rid of kvm_timer_flush_hwstate Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall 2017-07-17 14:27 ` [RFC PATCH v2 19/19] KVM: arm/arm64: Rework kvm_timer_should_fire Christoffer Dall 2017-07-17 14:27 ` Christoffer Dall
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170717142718.13853-12-cdall@linaro.org \ --to=cdall@linaro.org \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=marc.zyngier@arm.com \ --cc=tglx@linutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.