mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-17 13:58:46 +00:00
- 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. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmANZ4kACgkQEsHwGGHe VUohthAAtkwq9kXmn1H4hQuay8Zly7L5D7dn6EUrVl+347cZi+DZmjYRv0Mu/5Ad L7KhLHDJ6XqGW4qsPxGkYJPgaWiXyo+C0OQXLdwFcrT0kOvjbOYoFCAarRkqIdQb 5jr6J6t1MWb5Ktb8xTebUXv5kn91rvYj8ArcdlaVB8Kdp6jB8Irq9AROjZMK3Seh AHC9jWnf3tGPUXRhNk0rpBeDzdkI6G82KjO2LdZMT2SC9WLX2vH710wBeY8+Um42 5rseckupLl7KJb02WpK0IDi/6bidWc9K3NsOh9QqjQme4O9a0459q7f6SoR8/PYi FWwB95NwGWahnVk26qfLwiV/Sd3RKM72uQxICu6XaI0+asrbOflIuK1NbEAbpf+S ZgtVqV3c8i09ij3NsJIWsZ5vjwtFyRUU26JgTxzWKzRf4FftSW0pHWr/VvMflXhK l0E68kvB4KmV7Bd5r3gavctWVFeMrZhTGAHxiiG91oISUpp+X634CCa4NyMh+Ryr 6V+LhIADlzNOuyzHsG8xpsUmtSwutcsHSFQtqUkcXpG/1o2OpSPmhYQRySD4lz+4 dpo3CFtvrBUWRAHo2bsaLorqU0LlBFc+h9sTUlYMLgyRKkOQtde1UN1lTIu7z0Ll GFqAYmttyjSlDKo/5MeBQeWp4Oq8d+Ckz9xkNIL4qJV0LLTUvMs= =Z32e -----END PGP SIGNATURE----- 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()
This commit is contained in:
commit
e68061375f
@ -366,6 +366,8 @@ int devm_platform_get_irqs_affinity(struct platform_device *dev,
|
|||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
|
|
||||||
nvec = platform_irq_count(dev);
|
nvec = platform_irq_count(dev);
|
||||||
|
if (nvec < 0)
|
||||||
|
return nvec;
|
||||||
|
|
||||||
if (nvec < minvec)
|
if (nvec < minvec)
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
|
@ -493,8 +493,9 @@ config TI_SCI_INTA_IRQCHIP
|
|||||||
TI System Controller, say Y here. Otherwise, say N.
|
TI System Controller, say Y here. Otherwise, say N.
|
||||||
|
|
||||||
config TI_PRUSS_INTC
|
config TI_PRUSS_INTC
|
||||||
tristate "TI PRU-ICSS Interrupt Controller"
|
tristate
|
||||||
depends on ARCH_DAVINCI || SOC_AM33XX || SOC_AM43XX || SOC_DRA7XX || ARCH_KEYSTONE || ARCH_K3
|
depends on TI_PRUSS
|
||||||
|
default TI_PRUSS
|
||||||
select IRQ_DOMAIN
|
select IRQ_DOMAIN
|
||||||
help
|
help
|
||||||
This enables support for the PRU-ICSS Local Interrupt Controller
|
This enables support for the PRU-ICSS Local Interrupt Controller
|
||||||
|
@ -167,7 +167,7 @@ static void bcm2836_arm_irqchip_handle_ipi(struct irq_desc *desc)
|
|||||||
chained_irq_exit(chip, desc);
|
chained_irq_exit(chip, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bcm2836_arm_irqchip_ipi_eoi(struct irq_data *d)
|
static void bcm2836_arm_irqchip_ipi_ack(struct irq_data *d)
|
||||||
{
|
{
|
||||||
int cpu = smp_processor_id();
|
int cpu = smp_processor_id();
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ static struct irq_chip bcm2836_arm_irqchip_ipi = {
|
|||||||
.name = "IPI",
|
.name = "IPI",
|
||||||
.irq_mask = bcm2836_arm_irqchip_dummy_op,
|
.irq_mask = bcm2836_arm_irqchip_dummy_op,
|
||||||
.irq_unmask = bcm2836_arm_irqchip_dummy_op,
|
.irq_unmask = bcm2836_arm_irqchip_dummy_op,
|
||||||
.irq_eoi = bcm2836_arm_irqchip_ipi_eoi,
|
.irq_ack = bcm2836_arm_irqchip_ipi_ack,
|
||||||
.ipi_send_mask = bcm2836_arm_irqchip_ipi_send_mask,
|
.ipi_send_mask = bcm2836_arm_irqchip_ipi_send_mask,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -142,8 +142,8 @@ static void liointc_resume(struct irq_chip_generic *gc)
|
|||||||
|
|
||||||
static const char * const parent_names[] = {"int0", "int1", "int2", "int3"};
|
static const char * const parent_names[] = {"int0", "int1", "int2", "int3"};
|
||||||
|
|
||||||
int __init liointc_of_init(struct device_node *node,
|
static int __init liointc_of_init(struct device_node *node,
|
||||||
struct device_node *parent)
|
struct device_node *parent)
|
||||||
{
|
{
|
||||||
struct irq_chip_generic *gc;
|
struct irq_chip_generic *gc;
|
||||||
struct irq_domain *domain;
|
struct irq_domain *domain;
|
||||||
|
@ -197,6 +197,13 @@ static int mips_cpu_ipi_alloc(struct irq_domain *domain, unsigned int virq,
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
ret = irq_domain_set_hwirq_and_chip(domain->parent, virq + i, hwirq,
|
||||||
|
&mips_mt_cpu_irq_controller,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
ret = irq_set_irq_type(virq + i, IRQ_TYPE_LEVEL_HIGH);
|
ret = irq_set_irq_type(virq + i, IRQ_TYPE_LEVEL_HIGH);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -66,7 +66,7 @@ static int sl28cpld_intc_probe(struct platform_device *pdev)
|
|||||||
irqchip->chip.num_regs = 1;
|
irqchip->chip.num_regs = 1;
|
||||||
irqchip->chip.status_base = base + INTC_IP;
|
irqchip->chip.status_base = base + INTC_IP;
|
||||||
irqchip->chip.mask_base = base + INTC_IE;
|
irqchip->chip.mask_base = base + INTC_IE;
|
||||||
irqchip->chip.mask_invert = true,
|
irqchip->chip.mask_invert = true;
|
||||||
irqchip->chip.ack_base = base + INTC_IP;
|
irqchip->chip.ack_base = base + INTC_IP;
|
||||||
|
|
||||||
return devm_regmap_add_irq_chip_fwnode(dev, dev_fwnode(dev),
|
return devm_regmap_add_irq_chip_fwnode(dev, dev_fwnode(dev),
|
||||||
|
@ -2859,3 +2859,4 @@ bool irq_check_status_bit(unsigned int irq, unsigned int bitmask)
|
|||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(irq_check_status_bit);
|
||||||
|
@ -402,7 +402,7 @@ int __msi_domain_alloc_irqs(struct irq_domain *domain, struct device *dev,
|
|||||||
struct msi_domain_ops *ops = info->ops;
|
struct msi_domain_ops *ops = info->ops;
|
||||||
struct irq_data *irq_data;
|
struct irq_data *irq_data;
|
||||||
struct msi_desc *desc;
|
struct msi_desc *desc;
|
||||||
msi_alloc_info_t arg;
|
msi_alloc_info_t arg = { };
|
||||||
int i, ret, virq;
|
int i, ret, virq;
|
||||||
bool can_reserve;
|
bool can_reserve;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user