lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 5 May 2022 16:59:49 -0700 From: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com> To: Thomas Gleixner <tglx@...utronix.de>, x86@...nel.org Cc: Tony Luck <tony.luck@...el.com>, Andi Kleen <ak@...ux.intel.com>, Stephane Eranian <eranian@...gle.com>, Andrew Morton <akpm@...ux-foundation.org>, Joerg Roedel <joro@...tes.org>, Suravee Suthikulpanit <Suravee.Suthikulpanit@....com>, David Woodhouse <dwmw2@...radead.org>, Lu Baolu <baolu.lu@...ux.intel.com>, Nicholas Piggin <npiggin@...il.com>, "Ravi V. Shankar" <ravi.v.shankar@...el.com>, Ricardo Neri <ricardo.neri@...el.com>, iommu@...ts.linux-foundation.org, linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org, Ricardo Neri <ricardo.neri-calderon@...ux.intel.com> Subject: [PATCH v6 10/29] iommu/vt-d: Implement minor tweaks for NMI irqs The Intel IOMMU interrupt remapping driver already programs correctly the delivery mode of individual irqs as per their irq_data. Improve handling of NMIs. Allow only one irq per NMI. Also, it is not necessary to cleanup irq vectors after updating affinity. NMIs do not have associated vectors. Cc: Andi Kleen <ak@...ux.intel.com> Cc: David Woodhouse <dwmw2@...radead.org> Cc: "Ravi V. Shankar" <ravi.v.shankar@...el.com> Cc: Lu Baolu <baolu.lu@...ux.intel.com> Cc: Stephane Eranian <eranian@...gle.com> Cc: iommu@...ts.linux-foundation.org Cc: linuxppc-dev@...ts.ozlabs.org Cc: x86@...nel.org Reviewed-by: Lu Baolu <baolu.lu@...ux.intel.com> Signed-off-by: Ricardo Neri <ricardo.neri-calderon@...ux.intel.com> --- Changes since v5: * Introduced this patch. Changes since v4: * N/A Changes since v3: * N/A Changes since v2: * N/A Changes since v1: * N/A --- drivers/iommu/intel/irq_remapping.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c index fb2d71bea98d..791a9331e257 100644 --- a/drivers/iommu/intel/irq_remapping.c +++ b/drivers/iommu/intel/irq_remapping.c @@ -1198,8 +1198,12 @@ intel_ir_set_affinity(struct irq_data *data, const struct cpumask *mask, * After this point, all the interrupts will start arriving * at the new destination. So, time to cleanup the previous * vector allocation. + * + * Do it only for non-NMI irqs. NMIs don't have associated + * vectors. */ - send_cleanup_vector(cfg); + if (cfg->delivery_mode != APIC_DELIVERY_MODE_NMI) + send_cleanup_vector(cfg); return IRQ_SET_MASK_OK_DONE; } @@ -1352,6 +1356,9 @@ static int intel_irq_remapping_alloc(struct irq_domain *domain, if (info->type == X86_IRQ_ALLOC_TYPE_PCI_MSI) info->flags &= ~X86_IRQ_ALLOC_CONTIGUOUS_VECTORS; + if ((info->flags & X86_IRQ_ALLOC_AS_NMI) && nr_irqs != 1) + return -EINVAL; + ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg); if (ret < 0) return ret; -- 2.17.1
Powered by blists - more mailing lists