mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
- Fix missing prototypes warnings
- Properly initialize work context when allocating it - Remove a method tracking when managed interrupts are suspended during hotplug, in favor of the code using a IRQ disable depth tracking now, and have interrupts get properly enabled again on restore - Make sure multiple CPUs getting hotplugged don't cause wrong tracking of the managed IRQ disable depth -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmhXxGUACgkQEsHwGGHe VUoByw/+PGya16eguP068pvrd4XxvYs11HlN/HZwQKxOM9n1v7g1dP4xVJB0Cz2C wFKvWYAkJRqu9O+Z92YDsixEF6KEPQzGZApOQ4Ousb2gnX4+5nfjQFswcTArRyKp 7cMJmmhQXRN3U6QcfX6GX3fHj/m6k7sBQYuMqNV/ac67iKBAa41EI5HLHW6Ojxri i02bDQGOQIbmCX/O5IQymJOAMJTYSB3INyeAjRg8Vz5oyJgfJGY3My0LldBFCNFO R7YZ26zZNf2UMLifF3W6FNTJGBsmfxaKoNXWnQ9zOjlxWCccGStxem44RXFzs5lk OkUS1KPmZ7wRvXp5n7/AMaj6XvSm31To8SJVzpgxzGGGAfgC9xA0+MW1TOKU5RUo RLEHqOufz4YY1oz70mb/1eZT225+rOfHDpvPzWb44HyezOzo1rLTvonysV59oXEz oYYHLrXkVeGU9TcMdVqPw8X0ZDqg2VK0BReqFBXKgBKsZPKB5kFCNPKrMi++rgCG 6f+6jD/yhsnvnLitsk2ogqvBA/GExnc2wW0d0BM9xeMQUC1GfDrrs6ktlbOXKyWa +F/yaH2vxzvugNn8M4rxHBGnzsTuRjBgCctqi8uouuXnMBpcgCs0yDolCRMoaRiY slttArffkYCUV5/TRiPSxIIdOdUkQMSEFZA234ZIGtVW1d70Q64= =WBMv -----END PGP SIGNATURE----- Merge tag 'irq_urgent_for_v6.16_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull irq fixes from Borislav Petkov: - Fix missing prototypes warnings - Properly initialize work context when allocating it - Remove a method tracking when managed interrupts are suspended during hotplug, in favor of the code using a IRQ disable depth tracking now, and have interrupts get properly enabled again on restore - Make sure multiple CPUs getting hotplugged don't cause wrong tracking of the managed IRQ disable depth * tag 'irq_urgent_for_v6.16_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: irqchip/ath79-misc: Fix missing prototypes warnings genirq/irq_sim: Initialize work context pointers properly genirq/cpuhotplug: Restore affinity even for suspended IRQ genirq/cpuhotplug: Rebalance managed interrupts across multi-CPU hotplug
This commit is contained in:
commit
33efa7dbab
4 changed files with 11 additions and 26 deletions
|
@ -15,6 +15,8 @@
|
|||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
|
||||
#include <asm/time.h>
|
||||
|
||||
#define AR71XX_RESET_REG_MISC_INT_STATUS 0
|
||||
#define AR71XX_RESET_REG_MISC_INT_ENABLE 4
|
||||
|
||||
|
@ -177,21 +179,3 @@ static int __init ar7240_misc_intc_of_init(
|
|||
|
||||
IRQCHIP_DECLARE(ar7240_misc_intc, "qca,ar7240-misc-intc",
|
||||
ar7240_misc_intc_of_init);
|
||||
|
||||
void __init ath79_misc_irq_init(void __iomem *regs, int irq,
|
||||
int irq_base, bool is_ar71xx)
|
||||
{
|
||||
struct irq_domain *domain;
|
||||
|
||||
if (is_ar71xx)
|
||||
ath79_misc_irq_chip.irq_mask_ack = ar71xx_misc_irq_mask;
|
||||
else
|
||||
ath79_misc_irq_chip.irq_ack = ar724x_misc_irq_ack;
|
||||
|
||||
domain = irq_domain_create_legacy(NULL, ATH79_MISC_IRQ_COUNT,
|
||||
irq_base, 0, &misc_irq_domain_ops, regs);
|
||||
if (!domain)
|
||||
panic("Failed to create MISC irqdomain");
|
||||
|
||||
ath79_misc_intc_domain_init(domain, irq);
|
||||
}
|
||||
|
|
|
@ -205,6 +205,14 @@ __irq_startup_managed(struct irq_desc *desc, const struct cpumask *aff,
|
|||
|
||||
void irq_startup_managed(struct irq_desc *desc)
|
||||
{
|
||||
struct irq_data *d = irq_desc_get_irq_data(desc);
|
||||
|
||||
/*
|
||||
* Clear managed-shutdown flag, so we don't repeat managed-startup for
|
||||
* multiple hotplugs, and cause imbalanced disable depth.
|
||||
*/
|
||||
irqd_clr_managed_shutdown(d);
|
||||
|
||||
/*
|
||||
* Only start it up when the disable depth is 1, so that a disable,
|
||||
* hotunplug, hotplug sequence does not end up enabling it during
|
||||
|
|
|
@ -210,13 +210,6 @@ static void irq_restore_affinity_of_irq(struct irq_desc *desc, unsigned int cpu)
|
|||
!irq_data_get_irq_chip(data) || !cpumask_test_cpu(cpu, affinity))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Don't restore suspended interrupts here when a system comes back
|
||||
* from S3. They are reenabled via resume_device_irqs().
|
||||
*/
|
||||
if (desc->istate & IRQS_SUSPENDED)
|
||||
return;
|
||||
|
||||
if (irqd_is_managed_and_shutdown(data))
|
||||
irq_startup_managed(desc);
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ struct irq_domain *irq_domain_create_sim_full(struct fwnode_handle *fwnode,
|
|||
void *data)
|
||||
{
|
||||
struct irq_sim_work_ctx *work_ctx __free(kfree) =
|
||||
kmalloc(sizeof(*work_ctx), GFP_KERNEL);
|
||||
kzalloc(sizeof(*work_ctx), GFP_KERNEL);
|
||||
|
||||
if (!work_ctx)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
|
Loading…
Add table
Reference in a new issue