Skip to content

Commit 205b2bd

Browse files
committed
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
2 parents 56b2b1f + 08fb624 commit 205b2bd

File tree

6 files changed

+10
-10
lines changed

6 files changed

+10
-10
lines changed

drivers/irqchip/irq-gic-v2m.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ static void __init gicv2m_teardown(void)
252252
static struct msi_parent_ops gicv2m_msi_parent_ops = {
253253
.supported_flags = GICV2M_MSI_FLAGS_SUPPORTED,
254254
.required_flags = GICV2M_MSI_FLAGS_REQUIRED,
255-
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
255+
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
256256
.bus_select_token = DOMAIN_BUS_NEXUS,
257257
.bus_select_mask = MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
258258
.prefix = "GICv2m-",

drivers/irqchip/irq-gic-v3-its-msi-parent.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ static bool its_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
203203
const struct msi_parent_ops gic_v3_its_msi_parent_ops = {
204204
.supported_flags = ITS_MSI_FLAGS_SUPPORTED,
205205
.required_flags = ITS_MSI_FLAGS_REQUIRED,
206-
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
206+
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
207207
.bus_select_token = DOMAIN_BUS_NEXUS,
208208
.bus_select_mask = MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
209209
.prefix = "ITS-",

drivers/irqchip/irq-gic-v3-mbi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ static bool mbi_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
197197
static const struct msi_parent_ops gic_v3_mbi_msi_parent_ops = {
198198
.supported_flags = MBI_MSI_FLAGS_SUPPORTED,
199199
.required_flags = MBI_MSI_FLAGS_REQUIRED,
200-
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
200+
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
201201
.bus_select_token = DOMAIN_BUS_NEXUS,
202202
.bus_select_mask = MATCH_PCI_MSI | MATCH_PLATFORM_MSI,
203203
.prefix = "MBI-",

drivers/irqchip/irq-mvebu-gicp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ static const struct irq_domain_ops gicp_domain_ops = {
161161
static const struct msi_parent_ops gicp_msi_parent_ops = {
162162
.supported_flags = GICP_MSI_FLAGS_SUPPORTED,
163163
.required_flags = GICP_MSI_FLAGS_REQUIRED,
164-
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
164+
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
165165
.bus_select_token = DOMAIN_BUS_GENERIC_MSI,
166166
.bus_select_mask = MATCH_PLATFORM_MSI,
167167
.prefix = "GICP-",

drivers/irqchip/irq-mvebu-odmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ static const struct irq_domain_ops odmi_domain_ops = {
157157
static const struct msi_parent_ops odmi_msi_parent_ops = {
158158
.supported_flags = ODMI_MSI_FLAGS_SUPPORTED,
159159
.required_flags = ODMI_MSI_FLAGS_REQUIRED,
160-
.chip_flags = MSI_CHIP_FLAG_SET_EOI | MSI_CHIP_FLAG_SET_ACK,
160+
.chip_flags = MSI_CHIP_FLAG_SET_EOI,
161161
.bus_select_token = DOMAIN_BUS_GENERIC_MSI,
162162
.bus_select_mask = MATCH_PLATFORM_MSI,
163163
.prefix = "ODMI-",

drivers/irqchip/irq-riscv-imsic-state.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,17 +208,17 @@ static bool __imsic_local_sync(struct imsic_local_priv *lpriv)
208208
}
209209

210210
#ifdef CONFIG_SMP
211-
static void __imsic_local_timer_start(struct imsic_local_priv *lpriv)
211+
static void __imsic_local_timer_start(struct imsic_local_priv *lpriv, unsigned int cpu)
212212
{
213213
lockdep_assert_held(&lpriv->lock);
214214

215215
if (!timer_pending(&lpriv->timer)) {
216216
lpriv->timer.expires = jiffies + 1;
217-
add_timer_on(&lpriv->timer, smp_processor_id());
217+
add_timer_on(&lpriv->timer, cpu);
218218
}
219219
}
220220
#else
221-
static inline void __imsic_local_timer_start(struct imsic_local_priv *lpriv)
221+
static inline void __imsic_local_timer_start(struct imsic_local_priv *lpriv, unsigned int cpu)
222222
{
223223
}
224224
#endif
@@ -233,7 +233,7 @@ void imsic_local_sync_all(bool force_all)
233233
if (force_all)
234234
bitmap_fill(lpriv->dirty_bitmap, imsic->global.nr_ids + 1);
235235
if (!__imsic_local_sync(lpriv))
236-
__imsic_local_timer_start(lpriv);
236+
__imsic_local_timer_start(lpriv, smp_processor_id());
237237

238238
raw_spin_unlock_irqrestore(&lpriv->lock, flags);
239239
}
@@ -278,7 +278,7 @@ static void __imsic_remote_sync(struct imsic_local_priv *lpriv, unsigned int cpu
278278
return;
279279
}
280280

281-
__imsic_local_timer_start(lpriv);
281+
__imsic_local_timer_start(lpriv, cpu);
282282
}
283283
}
284284
#else

0 commit comments

Comments
 (0)