mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 14:41:22 -05:00
Merge tag 'irq-urgent-2025-05-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull misc irqchip driver fixes from Ingo Molnar: - Remove the MSI_CHIP_FLAG_SET_ACK flag from 5 irqchip drivers that did not require it - Fix IRQ handling delays in the riscv-imsic irqchip driver * tag 'irq-urgent-2025-05-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/riscv-imsic: Start local sync timer on correct CPU irqchip: Drop MSI_CHIP_FLAG_SET_ACK from unsuspecting MSI drivers
This commit is contained in:
@@ -252,7 +252,7 @@ static void __init gicv2m_teardown(void)
|
||||
static struct msi_parent_ops gicv2m_msi_parent_ops = {
|
||||
.supported_flags = GICV2M_MSI_FLAGS_SUPPORTED,
|
||||
.required_flags = GICV2M_MSI_FLAGS_REQUIRED,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
|
||||
.bus_select_token = DOMAIN_BUS_NEXUS,
|
||||
.bus_select_mask = MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
|
||||
.prefix = "GICv2m-",
|
||||
|
||||
@@ -203,7 +203,7 @@ static bool its_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
|
||||
const struct msi_parent_ops gic_v3_its_msi_parent_ops = {
|
||||
.supported_flags = ITS_MSI_FLAGS_SUPPORTED,
|
||||
.required_flags = ITS_MSI_FLAGS_REQUIRED,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
|
||||
.bus_select_token = DOMAIN_BUS_NEXUS,
|
||||
.bus_select_mask = MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
|
||||
.prefix = "ITS-",
|
||||
|
||||
@@ -197,7 +197,7 @@ static bool mbi_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
|
||||
static const struct msi_parent_ops gic_v3_mbi_msi_parent_ops = {
|
||||
.supported_flags = MBI_MSI_FLAGS_SUPPORTED,
|
||||
.required_flags = MBI_MSI_FLAGS_REQUIRED,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
|
||||
.bus_select_token = DOMAIN_BUS_NEXUS,
|
||||
.bus_select_mask = MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
|
||||
.prefix = "MBI-",
|
||||
|
||||
@@ -161,7 +161,7 @@ static const struct irq_domain_ops gicp_domain_ops = {
|
||||
static const struct msi_parent_ops gicp_msi_parent_ops = {
|
||||
.supported_flags = GICP_MSI_FLAGS_SUPPORTED,
|
||||
.required_flags = GICP_MSI_FLAGS_REQUIRED,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
|
||||
.bus_select_token = DOMAIN_BUS_GENERIC_MSI,
|
||||
.bus_select_mask = MATCH_PLATFORM_MSI,
|
||||
.prefix = "GICP-",
|
||||
|
||||
@@ -157,7 +157,7 @@ static const struct irq_domain_ops odmi_domain_ops = {
|
||||
static const struct msi_parent_ops odmi_msi_parent_ops = {
|
||||
.supported_flags = ODMI_MSI_FLAGS_SUPPORTED,
|
||||
.required_flags = ODMI_MSI_FLAGS_REQUIRED,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
|
||||
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
|
||||
.bus_select_token = DOMAIN_BUS_GENERIC_MSI,
|
||||
.bus_select_mask = MATCH_PLATFORM_MSI,
|
||||
.prefix = "ODMI-",
|
||||
|
||||
@@ -208,17 +208,17 @@ static bool __imsic_local_sync(struct imsic_local_priv *lpriv)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static void __imsic_local_timer_start(struct imsic_local_priv *lpriv)
|
||||
static void __imsic_local_timer_start(struct imsic_local_priv *lpriv, unsigned int cpu)
|
||||
{
|
||||
lockdep_assert_held(&lpriv->lock);
|
||||
|
||||
if (!timer_pending(&lpriv->timer)) {
|
||||
lpriv->timer.expires = jiffies + 1;
|
||||
add_timer_on(&lpriv->timer, smp_processor_id());
|
||||
add_timer_on(&lpriv->timer, cpu);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static inline void __imsic_local_timer_start(struct imsic_local_priv *lpriv)
|
||||
static inline void __imsic_local_timer_start(struct imsic_local_priv *lpriv, unsigned int cpu)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
@@ -233,7 +233,7 @@ void imsic_local_sync_all(bool force_all)
|
||||
if (force_all)
|
||||
bitmap_fill(lpriv->dirty_bitmap, imsic->global.nr_ids + 1);
|
||||
if (!__imsic_local_sync(lpriv))
|
||||
__imsic_local_timer_start(lpriv);
|
||||
__imsic_local_timer_start(lpriv, smp_processor_id());
|
||||
|
||||
raw_spin_unlock_irqrestore(&lpriv->lock, flags);
|
||||
}
|
||||
@@ -278,7 +278,7 @@ static void __imsic_remote_sync(struct imsic_local_priv *lpriv, unsigned int cpu
|
||||
return;
|
||||
}
|
||||
|
||||
__imsic_local_timer_start(lpriv);
|
||||
__imsic_local_timer_start(lpriv, cpu);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user