Skip to content

Commit e680613

Browse files
committed
Merge tag 'irq_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Borislav Petkov: - Fix a kernel panic in mips-cpu due to invalid irq domain hierarchy. - Fix to not lose IPIs on bcm2836. - Fix for a bogus marking of ITS devices as shared due to unitialized stack variable. - Clear a phantom interrupt on qcom-pdc to unblock suspend. - Small cleanups, warning and build fixes. * tag 'irq_urgent_for_v5.11_rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: genirq: Export irq_check_status_bit() irqchip/mips-cpu: Set IPI domain parent chip irqchip/pruss: Simplify the TI_PRUSS_INTC Kconfig irqchip/loongson-liointc: Fix build warnings driver core: platform: Add extra error check in devm_platform_get_irqs_affinity() irqchip/bcm2836: Fix IPI acknowledgement after conversion to handle_percpu_devid_irq irqchip/irq-sl28cpld: Convert comma to semicolon genirq/msi: Initialize msi_alloc_info before calling msi_domain_prepare_irqs()
2 parents 32d4327 + ce09ccc commit e680613

File tree

8 files changed

+19
-8
lines changed

8 files changed

+19
-8
lines changed

drivers/base/platform.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,8 @@ int devm_platform_get_irqs_affinity(struct platform_device *dev,
366366
return -ERANGE;
367367

368368
nvec = platform_irq_count(dev);
369+
if (nvec < 0)
370+
return nvec;
369371

370372
if (nvec < minvec)
371373
return -ENOSPC;

drivers/irqchip/Kconfig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,8 +493,9 @@ config TI_SCI_INTA_IRQCHIP
493493
TI System Controller, say Y here. Otherwise, say N.
494494

495495
config TI_PRUSS_INTC
496-
tristate "TI PRU-ICSS Interrupt Controller"
497-
depends on ARCH_DAVINCI || SOC_AM33XX || SOC_AM43XX || SOC_DRA7XX || ARCH_KEYSTONE || ARCH_K3
496+
tristate
497+
depends on TI_PRUSS
498+
default TI_PRUSS
498499
select IRQ_DOMAIN
499500
help
500501
This enables support for the PRU-ICSS Local Interrupt Controller

drivers/irqchip/irq-bcm2836.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ static void bcm2836_arm_irqchip_handle_ipi(struct irq_desc *desc)
167167
chained_irq_exit(chip, desc);
168168
}
169169

170-
static void bcm2836_arm_irqchip_ipi_eoi(struct irq_data *d)
170+
static void bcm2836_arm_irqchip_ipi_ack(struct irq_data *d)
171171
{
172172
int cpu = smp_processor_id();
173173

@@ -195,7 +195,7 @@ static struct irq_chip bcm2836_arm_irqchip_ipi = {
195195
.name = "IPI",
196196
.irq_mask = bcm2836_arm_irqchip_dummy_op,
197197
.irq_unmask = bcm2836_arm_irqchip_dummy_op,
198-
.irq_eoi = bcm2836_arm_irqchip_ipi_eoi,
198+
.irq_ack = bcm2836_arm_irqchip_ipi_ack,
199199
.ipi_send_mask = bcm2836_arm_irqchip_ipi_send_mask,
200200
};
201201

drivers/irqchip/irq-loongson-liointc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ static void liointc_resume(struct irq_chip_generic *gc)
142142

143143
static const char * const parent_names[] = {"int0", "int1", "int2", "int3"};
144144

145-
int __init liointc_of_init(struct device_node *node,
146-
struct device_node *parent)
145+
static int __init liointc_of_init(struct device_node *node,
146+
struct device_node *parent)
147147
{
148148
struct irq_chip_generic *gc;
149149
struct irq_domain *domain;

drivers/irqchip/irq-mips-cpu.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,13 @@ static int mips_cpu_ipi_alloc(struct irq_domain *domain, unsigned int virq,
197197
if (ret)
198198
return ret;
199199

200+
ret = irq_domain_set_hwirq_and_chip(domain->parent, virq + i, hwirq,
201+
&mips_mt_cpu_irq_controller,
202+
NULL);
203+
204+
if (ret)
205+
return ret;
206+
200207
ret = irq_set_irq_type(virq + i, IRQ_TYPE_LEVEL_HIGH);
201208
if (ret)
202209
return ret;

drivers/irqchip/irq-sl28cpld.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ static int sl28cpld_intc_probe(struct platform_device *pdev)
6666
irqchip->chip.num_regs = 1;
6767
irqchip->chip.status_base = base + INTC_IP;
6868
irqchip->chip.mask_base = base + INTC_IE;
69-
irqchip->chip.mask_invert = true,
69+
irqchip->chip.mask_invert = true;
7070
irqchip->chip.ack_base = base + INTC_IP;
7171

7272
return devm_regmap_add_irq_chip_fwnode(dev, dev_fwnode(dev),

kernel/irq/manage.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2859,3 +2859,4 @@ bool irq_check_status_bit(unsigned int irq, unsigned int bitmask)
28592859
rcu_read_unlock();
28602860
return res;
28612861
}
2862+
EXPORT_SYMBOL_GPL(irq_check_status_bit);

kernel/irq/msi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ int __msi_domain_alloc_irqs(struct irq_domain *domain, struct device *dev,
402402
struct msi_domain_ops *ops = info->ops;
403403
struct irq_data *irq_data;
404404
struct msi_desc *desc;
405-
msi_alloc_info_t arg;
405+
msi_alloc_info_t arg = { };
406406
int i, ret, virq;
407407
bool can_reserve;
408408

0 commit comments

Comments
 (0)