[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241210102148.760383417@linutronix.de>
Date: Tue, 10 Dec 2024 11:34:09 +0100 (CET)
From: Thomas Gleixner <tglx@...utronix.de>
To: LKML <linux-kernel@...r.kernel.org>
Cc: x86@...nel.org,
Anup Patel <apatel@...tanamicro.com>,
Vineet Gupta <vgupta@...nel.org>,
Brian Cain <bcain@...cinc.com>,
Wei Liu <wei.liu@...nel.org>,
Steve Wahl <steve.wahl@....com>,
Joerg Roedel <joro@...tes.org>,
Lu Baolu <baolu.lu@...ux.intel.com>,
Juergen Gross <jgross@...e.com>
Subject: [patch 0/5] genirq, x86: Rework deferred interrupt affinity logic
In a recent discussion about the potential race condition with unmaskable
MSI interrupts on RISC-V:
https;//lore.kernel.org/all/87r06gq2di.ffs@...x
it turned out that RISC-V needs the GENERIC_PENDING_IRQ infrastructure to
close the gap.
It turns out that the logic behind GENERIC_PENDING_IRQ is slighly
convoluted and backwards for the general case:
1) The default is to defer, which is not what the majority of interrupt
controllers need.
2) Deferrement is handled as per interrupt flag. That's a pointless
exercise as the requirement is actually per interrupt controller.
To ease the conversion of RISC-V, rework the logic to make the deferrement
based on an interrupt chip flag and convert x86 over, which then allows to
remove the current double book keeping of the non-deferrement flag.
The conversion is done in two steps with an intermediate config switch as
RISC-V needs a trivial way to backport the changes.
Thanks,
tglx
---
arch/arc/Kconfig | 1 -
arch/arc/kernel/mcip.c | 2 --
arch/hexagon/Kconfig | 1 -
arch/x86/hyperv/irqdomain.c | 2 +-
arch/x86/kernel/apic/io_apic.c | 2 +-
arch/x86/kernel/apic/msi.c | 3 ++-
arch/x86/kernel/hpet.c | 8 --------
arch/x86/platform/uv/uv_irq.c | 2 --
drivers/iommu/amd/init.c | 2 +-
drivers/iommu/amd/iommu.c | 1 -
drivers/iommu/intel/irq_remapping.c | 1 -
drivers/pci/controller/pci-hyperv.c | 1 +
drivers/xen/events/events_base.c | 6 ------
include/linux/irq.h | 14 +++-----------
kernel/irq/Kconfig | 4 ++++
kernel/irq/chip.c | 4 +---
kernel/irq/debugfs.c | 2 +-
kernel/irq/internals.h | 2 +-
kernel/irq/settings.h | 6 ------
19 files changed, 16 insertions(+), 48 deletions(-)
Powered by blists - more mailing lists