* [PATCH 00/10] armada-370-xp irqchip updates round 3
@ 2024-07-11 11:57 Marek Behún
2024-07-11 11:57 ` [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency Marek Behún
` (10 more replies)
0 siblings, 11 replies; 20+ messages in thread
From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw)
To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth,
Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko,
Hans de Goede, Ilpo Järvinen
Cc: Marek Behún
Hi Thomas, Andrew, Ilpo et al.,
this is 3rd round of refactors for the armada-370-xp irqchip driver,
containing another 10 patches. This series depends on v3 of round 2 [1]
from, which in turn depends on patches merged into tip/irq/core [2].
With the expection of patch 06/10 (which is already reviewed by Andrew),
these patches are small and so should be easy to review.
Marek
[1] https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=869325
[2] https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/log/?h=irq/core
Marek Behún (10):
irqchip/armada-370-xp: Rename variable for consistency
irqchip/armada-370-xp: Use unsigned int type for virqs
irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition
irqchip/armada-370-xp: Simplify ipi_resume() code
irqchip/armada-370-xp: Improve indentation
irqchip/armada-370-xp: Change symbol prefixes to mpic
irqchip/armada-370-xp: Don't read number of supported interrupts
multiple times
irqchip/armada-370-xp: Use FIELD_GET() and named register constant
irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code
irqchip/armada-370-xp: Refactor handling IPI interrupts
drivers/irqchip/irq-armada-370-xp.c | 420 +++++++++++++---------------
1 file changed, 201 insertions(+), 219 deletions(-)
--
2.44.2
^ permalink raw reply [flat|nested] 20+ messages in thread* [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:24 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 02/10] irqchip/armada-370-xp: Use unsigned int type for virqs Marek Behún ` (9 subsequent siblings) 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Rename the irq variable to virq in the ipi_resume() function for consistency with the rest of the code. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index 22e1a493abae..7016b206bddd 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -462,14 +462,14 @@ static const struct irq_domain_ops ipi_domain_ops = { static void ipi_resume(void) { for (int i = 0; i < IPI_DOORBELL_END; i++) { - int irq; + int virq; - irq = irq_find_mapping(ipi_domain, i); - if (irq <= 0) + virq = irq_find_mapping(ipi_domain, i); + if (virq <= 0) continue; - if (irq_percpu_is_enabled(irq)) { + if (irq_percpu_is_enabled(virq)) { struct irq_data *d; - d = irq_domain_get_irq_data(ipi_domain, irq); + d = irq_domain_get_irq_data(ipi_domain, virq); armada_370_xp_ipi_unmask(d); } } -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency 2024-07-11 11:57 ` [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency Marek Behún @ 2024-07-11 14:24 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:24 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:39PM +0200, Marek Behún wrote: > Rename the irq variable to virq in the ipi_resume() function for > consistency with the rest of the code. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 02/10] irqchip/armada-370-xp: Use unsigned int type for virqs 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún 2024-07-11 11:57 ` [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:24 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 03/10] irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition Marek Behún ` (8 subsequent siblings) 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún The return type of irq_find_mapping() and irq_linear_revmap() is unsigned int. Use the unsigned int type for the variables storing the return value. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index 7016b206bddd..b29f3bbfb1c3 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -462,10 +462,10 @@ static const struct irq_domain_ops ipi_domain_ops = { static void ipi_resume(void) { for (int i = 0; i < IPI_DOORBELL_END; i++) { - int virq; + unsigned int virq; virq = irq_find_mapping(ipi_domain, i); - if (virq <= 0) + if (!virq) continue; if (irq_percpu_is_enabled(virq)) { struct irq_data *d; @@ -539,7 +539,7 @@ static void armada_xp_mpic_reenable_percpu(void) /* Re-enable per-CPU interrupts that were enabled before suspend */ for (unsigned int irq = 0; irq < MPIC_MAX_PER_CPU_IRQS; irq++) { struct irq_data *data; - int virq; + unsigned int virq; virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq); if (virq == 0) @@ -734,7 +734,7 @@ static void armada_370_xp_mpic_resume(void) nirqs = (readl(main_int_base + MPIC_INT_CONTROL) >> 2) & 0x3ff; for (irq_hw_number_t irq = 0; irq < nirqs; irq++) { struct irq_data *data; - int virq; + unsigned int virq; virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq); if (virq == 0) -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 02/10] irqchip/armada-370-xp: Use unsigned int type for virqs 2024-07-11 11:57 ` [PATCH 02/10] irqchip/armada-370-xp: Use unsigned int type for virqs Marek Behún @ 2024-07-11 14:24 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:24 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:40PM +0200, Marek Behún wrote: > The return type of irq_find_mapping() and irq_linear_revmap() is > unsigned int. Use the unsigned int type for the variables storing the > return value. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 03/10] irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún 2024-07-11 11:57 ` [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency Marek Behún 2024-07-11 11:57 ` [PATCH 02/10] irqchip/armada-370-xp: Use unsigned int type for virqs Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:25 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 04/10] irqchip/armada-370-xp: Simplify ipi_resume() code Marek Behún ` (7 subsequent siblings) 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Use !virq instead of virq == 0 when checking for availability of the virq. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index b29f3bbfb1c3..c007610413fe 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -542,7 +542,7 @@ static void armada_xp_mpic_reenable_percpu(void) unsigned int virq; virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq); - if (virq == 0) + if (!virq) continue; data = irq_get_irq_data(virq); @@ -737,7 +737,7 @@ static void armada_370_xp_mpic_resume(void) unsigned int virq; virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq); - if (virq == 0) + if (!virq) continue; data = irq_get_irq_data(virq); -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 03/10] irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition 2024-07-11 11:57 ` [PATCH 03/10] irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition Marek Behún @ 2024-07-11 14:25 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:25 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:41PM +0200, Marek Behún wrote: > Use !virq instead of virq == 0 when checking for availability of the > virq. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 04/10] irqchip/armada-370-xp: Simplify ipi_resume() code 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (2 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 03/10] irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:25 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 05/10] irqchip/armada-370-xp: Improve indentation Marek Behún ` (6 subsequent siblings) 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Refactor the ipi_resume() function to drop one indentation level. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index c007610413fe..316c27c97951 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -462,16 +462,14 @@ static const struct irq_domain_ops ipi_domain_ops = { static void ipi_resume(void) { for (int i = 0; i < IPI_DOORBELL_END; i++) { - unsigned int virq; + unsigned int virq = irq_find_mapping(ipi_domain, i); + struct irq_data *d; - virq = irq_find_mapping(ipi_domain, i); - if (!virq) + if (!virq || !irq_percpu_is_enabled(virq)) continue; - if (irq_percpu_is_enabled(virq)) { - struct irq_data *d; - d = irq_domain_get_irq_data(ipi_domain, virq); - armada_370_xp_ipi_unmask(d); - } + + d = irq_domain_get_irq_data(ipi_domain, virq); + armada_370_xp_ipi_unmask(d); } } -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 04/10] irqchip/armada-370-xp: Simplify ipi_resume() code 2024-07-11 11:57 ` [PATCH 04/10] irqchip/armada-370-xp: Simplify ipi_resume() code Marek Behún @ 2024-07-11 14:25 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:25 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:42PM +0200, Marek Behún wrote: > Refactor the ipi_resume() function to drop one indentation level. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 05/10] irqchip/armada-370-xp: Improve indentation 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (3 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 04/10] irqchip/armada-370-xp: Simplify ipi_resume() code Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:27 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 06/10] irqchip/armada-370-xp: Change symbol prefixes to mpic Marek Behún ` (5 subsequent siblings) 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Add some blank lines and other indentation improvements. Checkpatch now stops complaining. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 55 +++++++++++++++-------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index 316c27c97951..b849a57633c1 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -229,9 +229,9 @@ static void armada_370_xp_irq_unmask(struct irq_data *d) #ifdef CONFIG_PCI_MSI static struct irq_chip armada_370_xp_msi_irq_chip = { - .name = "MPIC MSI", - .irq_mask = pci_msi_mask_irq, - .irq_unmask = pci_msi_unmask_irq, + .name = "MPIC MSI", + .irq_mask = pci_msi_mask_irq, + .irq_unmask = pci_msi_unmask_irq, }; static struct msi_domain_info armada_370_xp_msi_domain_info = { @@ -386,6 +386,7 @@ static struct irq_domain *ipi_domain; static void armada_370_xp_ipi_mask(struct irq_data *d) { u32 reg; + reg = readl(per_cpu_int_base + MPIC_IN_DRBEL_MASK); reg &= ~BIT(d->hwirq); writel(reg, per_cpu_int_base + MPIC_IN_DRBEL_MASK); @@ -394,6 +395,7 @@ static void armada_370_xp_ipi_mask(struct irq_data *d) static void armada_370_xp_ipi_unmask(struct irq_data *d) { u32 reg; + reg = readl(per_cpu_int_base + MPIC_IN_DRBEL_MASK); reg |= BIT(d->hwirq); writel(reg, per_cpu_int_base + MPIC_IN_DRBEL_MASK); @@ -432,24 +434,20 @@ static struct irq_chip ipi_irqchip = { .ipi_send_mask = armada_370_xp_ipi_send_mask, }; -static int armada_370_xp_ipi_alloc(struct irq_domain *d, - unsigned int virq, - unsigned int nr_irqs, void *args) +static int armada_370_xp_ipi_alloc(struct irq_domain *d, unsigned int virq, + unsigned int nr_irqs, void *args) { for (int i = 0; i < nr_irqs; i++) { irq_set_percpu_devid(virq + i); - irq_domain_set_info(d, virq + i, i, &ipi_irqchip, - d->host_data, - handle_percpu_devid_irq, - NULL, NULL); + irq_domain_set_info(d, virq + i, i, &ipi_irqchip, d->host_data, + handle_percpu_devid_irq, NULL, NULL); } return 0; } -static void armada_370_xp_ipi_free(struct irq_domain *d, - unsigned int virq, - unsigned int nr_irqs) +static void armada_370_xp_ipi_free(struct irq_domain *d, unsigned int virq, + unsigned int nr_irqs) { /* Not freeing IPIs */ } @@ -484,7 +482,8 @@ static __init void armada_xp_ipi_init(struct device_node *node) return; irq_domain_update_bus_token(ipi_domain, DOMAIN_BUS_IPI); - base_ipi = irq_domain_alloc_irqs(ipi_domain, IPI_DOORBELL_END, NUMA_NO_NODE, NULL); + base_ipi = irq_domain_alloc_irqs(ipi_domain, IPI_DOORBELL_END, + NUMA_NO_NODE, NULL); if (WARN_ON(!base_ipi)) return; @@ -562,6 +561,7 @@ static int armada_xp_mpic_starting_cpu(unsigned int cpu) armada_xp_mpic_perf_init(); armada_xp_mpic_smp_cpu_init(); armada_xp_mpic_reenable_percpu(); + return 0; } @@ -570,6 +570,7 @@ static int mpic_cascaded_starting_cpu(unsigned int cpu) armada_xp_mpic_perf_init(); armada_xp_mpic_reenable_percpu(); enable_percpu_irq(parent_irq, IRQ_TYPE_NONE); + return 0; } #else @@ -579,9 +580,9 @@ static void ipi_resume(void) {} static struct irq_chip armada_370_xp_irq_chip = { .name = "MPIC", - .irq_mask = armada_370_xp_irq_mask, - .irq_mask_ack = armada_370_xp_irq_mask, - .irq_unmask = armada_370_xp_irq_unmask, + .irq_mask = armada_370_xp_irq_mask, + .irq_mask_ack = armada_370_xp_irq_mask, + .irq_unmask = armada_370_xp_irq_unmask, #ifdef CONFIG_SMP .irq_set_affinity = armada_xp_set_affinity, #endif @@ -605,10 +606,10 @@ static int armada_370_xp_mpic_irq_map(struct irq_domain *h, if (is_percpu_irq(hw)) { irq_set_percpu_devid(virq); irq_set_chip_and_handler(virq, &armada_370_xp_irq_chip, - handle_percpu_devid_irq); + handle_percpu_devid_irq); } else { irq_set_chip_and_handler(virq, &armada_370_xp_irq_chip, - handle_level_irq); + handle_level_irq); irqd_set_single_target(irq_desc_get_irq_data(irq_to_desc(virq))); } irq_set_probe(virq); @@ -617,8 +618,8 @@ static int armada_370_xp_mpic_irq_map(struct irq_domain *h, } static const struct irq_domain_ops armada_370_xp_mpic_irq_ops = { - .map = armada_370_xp_mpic_irq_map, - .xlate = irq_domain_xlate_onecell, + .map = armada_370_xp_mpic_irq_map, + .xlate = irq_domain_xlate_onecell, }; #ifdef CONFIG_PCI_MSI @@ -706,20 +707,20 @@ armada_370_xp_handle_irq(struct pt_regs *regs) int ipi; ipimask = readl_relaxed(per_cpu_int_base + - MPIC_IN_DRBEL_CAUSE) - & IPI_DOORBELL_MASK; + MPIC_IN_DRBEL_CAUSE) & + IPI_DOORBELL_MASK; for_each_set_bit(ipi, &ipimask, IPI_DOORBELL_END) generic_handle_domain_irq(ipi_domain, ipi); } #endif - } while (1); } static int armada_370_xp_mpic_suspend(void) { doorbell_mask_reg = readl(per_cpu_int_base + MPIC_IN_DRBEL_MASK); + return 0; } @@ -815,9 +816,9 @@ static int __init armada_370_xp_mpic_of_init(struct device_node *node, for (int i = 0; i < nr_irqs; i++) writel(i, main_int_base + MPIC_INT_CLEAR_ENABLE); - armada_370_xp_mpic_domain = - irq_domain_add_linear(node, nr_irqs, - &armada_370_xp_mpic_irq_ops, NULL); + armada_370_xp_mpic_domain = irq_domain_add_linear(node, nr_irqs, + &armada_370_xp_mpic_irq_ops, + NULL); BUG_ON(!armada_370_xp_mpic_domain); irq_domain_update_bus_token(armada_370_xp_mpic_domain, DOMAIN_BUS_WIRED); -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 05/10] irqchip/armada-370-xp: Improve indentation 2024-07-11 11:57 ` [PATCH 05/10] irqchip/armada-370-xp: Improve indentation Marek Behún @ 2024-07-11 14:27 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:27 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:43PM +0200, Marek Behún wrote: > Add some blank lines and other indentation improvements. > > Checkpatch now stops complaining. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 06/10] irqchip/armada-370-xp: Change symbol prefixes to mpic 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (4 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 05/10] irqchip/armada-370-xp: Improve indentation Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 11:57 ` [PATCH 07/10] irqchip/armada-370-xp: Don't read number of supported interrupts multiple times Marek Behún ` (4 subsequent siblings) 10 siblings, 0 replies; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Change symbol prefixes from armada_370_xp_ or others to mpic_. The rationale is that it is shorter and more generic (this controller is called MPIC and is also used on Armada 38x and 39x). Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> --- drivers/irqchip/irq-armada-370-xp.c | 316 ++++++++++++++-------------- 1 file changed, 154 insertions(+), 162 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index b849a57633c1..ab18dae174a8 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -150,18 +150,18 @@ static void __iomem *per_cpu_int_base; static void __iomem *main_int_base; -static struct irq_domain *armada_370_xp_mpic_domain; +static struct irq_domain *mpic_domain; static u32 doorbell_mask_reg; static int parent_irq; #ifdef CONFIG_PCI_MSI -static struct irq_domain *armada_370_xp_msi_domain; -static struct irq_domain *armada_370_xp_msi_inner_domain; +static struct irq_domain *mpic_msi_domain; +static struct irq_domain *mpic_msi_inner_domain; static DECLARE_BITMAP(msi_used, PCI_MSI_FULL_DOORBELL_NR); static DEFINE_MUTEX(msi_used_lock); static phys_addr_t msi_doorbell_addr; #endif -static inline bool is_ipi_available(void) +static inline bool mpic_is_ipi_available(void) { /* * We distinguish IPI availability in the IC by the IC not having a @@ -174,29 +174,29 @@ static inline bool is_ipi_available(void) static inline u32 msi_doorbell_mask(void) { - return is_ipi_available() ? PCI_MSI_DOORBELL_MASK : - PCI_MSI_FULL_DOORBELL_MASK; + return mpic_is_ipi_available() ? PCI_MSI_DOORBELL_MASK : + PCI_MSI_FULL_DOORBELL_MASK; } static inline unsigned int msi_doorbell_start(void) { - return is_ipi_available() ? PCI_MSI_DOORBELL_START : - PCI_MSI_FULL_DOORBELL_START; + return mpic_is_ipi_available() ? PCI_MSI_DOORBELL_START : + PCI_MSI_FULL_DOORBELL_START; } static inline unsigned int msi_doorbell_size(void) { - return is_ipi_available() ? PCI_MSI_DOORBELL_NR : - PCI_MSI_FULL_DOORBELL_NR; + return mpic_is_ipi_available() ? PCI_MSI_DOORBELL_NR : + PCI_MSI_FULL_DOORBELL_NR; } static inline unsigned int msi_doorbell_end(void) { - return is_ipi_available() ? PCI_MSI_DOORBELL_END : - PCI_MSI_FULL_DOORBELL_END; + return mpic_is_ipi_available() ? PCI_MSI_DOORBELL_END : + PCI_MSI_FULL_DOORBELL_END; } -static inline bool is_percpu_irq(irq_hw_number_t irq) +static inline bool mpic_is_percpu_irq(irq_hw_number_t irq) { return irq <= MPIC_MAX_PER_CPU_IRQS; } @@ -206,21 +206,21 @@ static inline bool is_percpu_irq(irq_hw_number_t irq) * For shared global interrupts, mask/unmask global enable bit * For CPU interrupts, mask/unmask the calling CPU's bit */ -static void armada_370_xp_irq_mask(struct irq_data *d) +static void mpic_irq_mask(struct irq_data *d) { irq_hw_number_t hwirq = irqd_to_hwirq(d); - if (!is_percpu_irq(hwirq)) + if (!mpic_is_percpu_irq(hwirq)) writel(hwirq, main_int_base + MPIC_INT_CLEAR_ENABLE); else writel(hwirq, per_cpu_int_base + MPIC_INT_SET_MASK); } -static void armada_370_xp_irq_unmask(struct irq_data *d) +static void mpic_irq_unmask(struct irq_data *d) { irq_hw_number_t hwirq = irqd_to_hwirq(d); - if (!is_percpu_irq(hwirq)) + if (!mpic_is_percpu_irq(hwirq)) writel(hwirq, main_int_base + MPIC_INT_SET_ENABLE); else writel(hwirq, per_cpu_int_base + MPIC_INT_CLEAR_MASK); @@ -228,19 +228,19 @@ static void armada_370_xp_irq_unmask(struct irq_data *d) #ifdef CONFIG_PCI_MSI -static struct irq_chip armada_370_xp_msi_irq_chip = { +static struct irq_chip mpic_msi_irq_chip = { .name = "MPIC MSI", .irq_mask = pci_msi_mask_irq, .irq_unmask = pci_msi_unmask_irq, }; -static struct msi_domain_info armada_370_xp_msi_domain_info = { +static struct msi_domain_info mpic_msi_domain_info = { .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS | MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX), - .chip = &armada_370_xp_msi_irq_chip, + .chip = &mpic_msi_irq_chip, }; -static void armada_370_xp_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) +static void mpic_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) { unsigned int cpu = cpumask_first(irq_data_get_effective_affinity_mask(data)); @@ -249,8 +249,8 @@ static void armada_370_xp_compose_msi_msg(struct irq_data *data, struct msi_msg msg->data = BIT(cpu + 8) | (data->hwirq + msi_doorbell_start()); } -static int armada_370_xp_msi_set_affinity(struct irq_data *irq_data, - const struct cpumask *mask, bool force) +static int mpic_msi_set_affinity(struct irq_data *irq_data, + const struct cpumask *mask, bool force) { unsigned int cpu; @@ -267,14 +267,14 @@ static int armada_370_xp_msi_set_affinity(struct irq_data *irq_data, return IRQ_SET_MASK_OK; } -static struct irq_chip armada_370_xp_msi_bottom_irq_chip = { +static struct irq_chip mpic_msi_bottom_irq_chip = { .name = "MPIC MSI", - .irq_compose_msi_msg = armada_370_xp_compose_msi_msg, - .irq_set_affinity = armada_370_xp_msi_set_affinity, + .irq_compose_msi_msg = mpic_compose_msi_msg, + .irq_set_affinity = mpic_msi_set_affinity, }; -static int armada_370_xp_msi_alloc(struct irq_domain *domain, unsigned int virq, - unsigned int nr_irqs, void *args) +static int mpic_msi_alloc(struct irq_domain *domain, unsigned int virq, + unsigned int nr_irqs, void *args) { int hwirq; @@ -288,7 +288,7 @@ static int armada_370_xp_msi_alloc(struct irq_domain *domain, unsigned int virq, for (int i = 0; i < nr_irqs; i++) { irq_domain_set_info(domain, virq + i, hwirq + i, - &armada_370_xp_msi_bottom_irq_chip, + &mpic_msi_bottom_irq_chip, domain->host_data, handle_simple_irq, NULL, NULL); } @@ -296,8 +296,8 @@ static int armada_370_xp_msi_alloc(struct irq_domain *domain, unsigned int virq, return 0; } -static void armada_370_xp_msi_free(struct irq_domain *domain, - unsigned int virq, unsigned int nr_irqs) +static void mpic_msi_free(struct irq_domain *domain, unsigned int virq, + unsigned int nr_irqs) { struct irq_data *d = irq_domain_get_irq_data(domain, virq); @@ -306,12 +306,12 @@ static void armada_370_xp_msi_free(struct irq_domain *domain, mutex_unlock(&msi_used_lock); } -static const struct irq_domain_ops armada_370_xp_msi_domain_ops = { - .alloc = armada_370_xp_msi_alloc, - .free = armada_370_xp_msi_free, +static const struct irq_domain_ops mpic_msi_domain_ops = { + .alloc = mpic_msi_alloc, + .free = mpic_msi_free, }; -static void armada_370_xp_msi_reenable_percpu(void) +static void mpic_msi_reenable_percpu(void) { u32 reg; @@ -324,45 +324,44 @@ static void armada_370_xp_msi_reenable_percpu(void) writel(1, per_cpu_int_base + MPIC_INT_CLEAR_MASK); } -static int armada_370_xp_msi_init(struct device_node *node, - phys_addr_t main_int_phys_base) +static int mpic_msi_init(struct device_node *node, + phys_addr_t main_int_phys_base) { msi_doorbell_addr = main_int_phys_base + MPIC_SW_TRIG_INT; - armada_370_xp_msi_inner_domain = - irq_domain_add_linear(NULL, msi_doorbell_size(), - &armada_370_xp_msi_domain_ops, NULL); - if (!armada_370_xp_msi_inner_domain) + mpic_msi_inner_domain = irq_domain_add_linear(NULL, msi_doorbell_size(), + &mpic_msi_domain_ops, + NULL); + if (!mpic_msi_inner_domain) return -ENOMEM; - armada_370_xp_msi_domain = - pci_msi_create_irq_domain(of_node_to_fwnode(node), - &armada_370_xp_msi_domain_info, - armada_370_xp_msi_inner_domain); - if (!armada_370_xp_msi_domain) { - irq_domain_remove(armada_370_xp_msi_inner_domain); + mpic_msi_domain = pci_msi_create_irq_domain(of_node_to_fwnode(node), + &mpic_msi_domain_info, + mpic_msi_inner_domain); + if (!mpic_msi_domain) { + irq_domain_remove(mpic_msi_inner_domain); return -ENOMEM; } - armada_370_xp_msi_reenable_percpu(); + mpic_msi_reenable_percpu(); /* Unmask low 16 MSI irqs on non-IPI platforms */ - if (!is_ipi_available()) + if (!mpic_is_ipi_available()) writel(0, per_cpu_int_base + MPIC_INT_CLEAR_MASK); return 0; } #else -static __maybe_unused void armada_370_xp_msi_reenable_percpu(void) {} +static __maybe_unused void mpic_msi_reenable_percpu(void) {} -static inline int armada_370_xp_msi_init(struct device_node *node, - phys_addr_t main_int_phys_base) +static inline int mpic_msi_init(struct device_node *node, + phys_addr_t main_int_phys_base) { return 0; } #endif -static void armada_xp_mpic_perf_init(void) +static void mpic_perf_init(void) { unsigned long cpuid; @@ -381,9 +380,9 @@ static void armada_xp_mpic_perf_init(void) } #ifdef CONFIG_SMP -static struct irq_domain *ipi_domain; +static struct irq_domain *mpic_ipi_domain; -static void armada_370_xp_ipi_mask(struct irq_data *d) +static void mpic_ipi_mask(struct irq_data *d) { u32 reg; @@ -392,7 +391,7 @@ static void armada_370_xp_ipi_mask(struct irq_data *d) writel(reg, per_cpu_int_base + MPIC_IN_DRBEL_MASK); } -static void armada_370_xp_ipi_unmask(struct irq_data *d) +static void mpic_ipi_unmask(struct irq_data *d) { u32 reg; @@ -401,8 +400,7 @@ static void armada_370_xp_ipi_unmask(struct irq_data *d) writel(reg, per_cpu_int_base + MPIC_IN_DRBEL_MASK); } -static void armada_370_xp_ipi_send_mask(struct irq_data *d, - const struct cpumask *mask) +static void mpic_ipi_send_mask(struct irq_data *d, const struct cpumask *mask) { unsigned long map = 0; unsigned int cpu; @@ -421,68 +419,69 @@ static void armada_370_xp_ipi_send_mask(struct irq_data *d, writel((map << 8) | d->hwirq, main_int_base + MPIC_SW_TRIG_INT); } -static void armada_370_xp_ipi_ack(struct irq_data *d) +static void mpic_ipi_ack(struct irq_data *d) { writel(~BIT(d->hwirq), per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); } -static struct irq_chip ipi_irqchip = { +static struct irq_chip mpic_ipi_irqchip = { .name = "IPI", - .irq_ack = armada_370_xp_ipi_ack, - .irq_mask = armada_370_xp_ipi_mask, - .irq_unmask = armada_370_xp_ipi_unmask, - .ipi_send_mask = armada_370_xp_ipi_send_mask, + .irq_ack = mpic_ipi_ack, + .irq_mask = mpic_ipi_mask, + .irq_unmask = mpic_ipi_unmask, + .ipi_send_mask = mpic_ipi_send_mask, }; -static int armada_370_xp_ipi_alloc(struct irq_domain *d, unsigned int virq, - unsigned int nr_irqs, void *args) +static int mpic_ipi_alloc(struct irq_domain *d, unsigned int virq, + unsigned int nr_irqs, void *args) { for (int i = 0; i < nr_irqs; i++) { irq_set_percpu_devid(virq + i); - irq_domain_set_info(d, virq + i, i, &ipi_irqchip, d->host_data, - handle_percpu_devid_irq, NULL, NULL); + irq_domain_set_info(d, virq + i, i, &mpic_ipi_irqchip, + d->host_data, handle_percpu_devid_irq, + NULL, NULL); } return 0; } -static void armada_370_xp_ipi_free(struct irq_domain *d, unsigned int virq, - unsigned int nr_irqs) +static void mpic_ipi_free(struct irq_domain *d, unsigned int virq, + unsigned int nr_irqs) { /* Not freeing IPIs */ } -static const struct irq_domain_ops ipi_domain_ops = { - .alloc = armada_370_xp_ipi_alloc, - .free = armada_370_xp_ipi_free, +static const struct irq_domain_ops mpic_ipi_domain_ops = { + .alloc = mpic_ipi_alloc, + .free = mpic_ipi_free, }; -static void ipi_resume(void) +static void mpic_ipi_resume(void) { for (int i = 0; i < IPI_DOORBELL_END; i++) { - unsigned int virq = irq_find_mapping(ipi_domain, i); + unsigned int virq = irq_find_mapping(mpic_ipi_domain, i); struct irq_data *d; if (!virq || !irq_percpu_is_enabled(virq)) continue; - d = irq_domain_get_irq_data(ipi_domain, virq); - armada_370_xp_ipi_unmask(d); + d = irq_domain_get_irq_data(mpic_ipi_domain, virq); + mpic_ipi_unmask(d); } } -static __init void armada_xp_ipi_init(struct device_node *node) +static __init void mpic_ipi_init(struct device_node *node) { int base_ipi; - ipi_domain = irq_domain_create_linear(of_node_to_fwnode(node), - IPI_DOORBELL_END, - &ipi_domain_ops, NULL); - if (WARN_ON(!ipi_domain)) + mpic_ipi_domain = irq_domain_create_linear(of_node_to_fwnode(node), + IPI_DOORBELL_END, + &mpic_ipi_domain_ops, NULL); + if (WARN_ON(!mpic_ipi_domain)) return; - irq_domain_update_bus_token(ipi_domain, DOMAIN_BUS_IPI); - base_ipi = irq_domain_alloc_irqs(ipi_domain, IPI_DOORBELL_END, + irq_domain_update_bus_token(mpic_ipi_domain, DOMAIN_BUS_IPI); + base_ipi = irq_domain_alloc_irqs(mpic_ipi_domain, IPI_DOORBELL_END, NUMA_NO_NODE, NULL); if (WARN_ON(!base_ipi)) return; @@ -490,8 +489,8 @@ static __init void armada_xp_ipi_init(struct device_node *node) set_smp_ipi_range(base_ipi, IPI_DOORBELL_END); } -static int armada_xp_set_affinity(struct irq_data *d, - const struct cpumask *mask_val, bool force) +static int mpic_set_affinity(struct irq_data *d, const struct cpumask *mask_val, + bool force) { irq_hw_number_t hwirq = irqd_to_hwirq(d); unsigned int cpu; @@ -507,7 +506,7 @@ static int armada_xp_set_affinity(struct irq_data *d, return IRQ_SET_MASK_OK; } -static void armada_xp_mpic_smp_cpu_init(void) +static void mpic_smp_cpu_init(void) { u32 control; int nr_irqs; @@ -518,7 +517,7 @@ static void armada_xp_mpic_smp_cpu_init(void) for (int i = 0; i < nr_irqs; i++) writel(i, per_cpu_int_base + MPIC_INT_SET_MASK); - if (!is_ipi_available()) + if (!mpic_is_ipi_available()) return; /* Disable all IPIs */ @@ -531,14 +530,14 @@ static void armada_xp_mpic_smp_cpu_init(void) writel(0, per_cpu_int_base + MPIC_INT_CLEAR_MASK); } -static void armada_xp_mpic_reenable_percpu(void) +static void mpic_reenable_percpu(void) { /* Re-enable per-CPU interrupts that were enabled before suspend */ for (unsigned int irq = 0; irq < MPIC_MAX_PER_CPU_IRQS; irq++) { struct irq_data *data; unsigned int virq; - virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq); + virq = irq_linear_revmap(mpic_domain, irq); if (!virq) continue; @@ -547,69 +546,68 @@ static void armada_xp_mpic_reenable_percpu(void) if (!irq_percpu_is_enabled(virq)) continue; - armada_370_xp_irq_unmask(data); + mpic_irq_unmask(data); } - if (is_ipi_available()) - ipi_resume(); + if (mpic_is_ipi_available()) + mpic_ipi_resume(); - armada_370_xp_msi_reenable_percpu(); + mpic_msi_reenable_percpu(); } -static int armada_xp_mpic_starting_cpu(unsigned int cpu) +static int mpic_starting_cpu(unsigned int cpu) { - armada_xp_mpic_perf_init(); - armada_xp_mpic_smp_cpu_init(); - armada_xp_mpic_reenable_percpu(); + mpic_perf_init(); + mpic_smp_cpu_init(); + mpic_reenable_percpu(); return 0; } static int mpic_cascaded_starting_cpu(unsigned int cpu) { - armada_xp_mpic_perf_init(); - armada_xp_mpic_reenable_percpu(); + mpic_perf_init(); + mpic_reenable_percpu(); enable_percpu_irq(parent_irq, IRQ_TYPE_NONE); return 0; } #else -static void armada_xp_mpic_smp_cpu_init(void) {} -static void ipi_resume(void) {} +static void mpic_smp_cpu_init(void) {} +static void mpic_ipi_resume(void) {} #endif -static struct irq_chip armada_370_xp_irq_chip = { +static struct irq_chip mpic_irq_chip = { .name = "MPIC", - .irq_mask = armada_370_xp_irq_mask, - .irq_mask_ack = armada_370_xp_irq_mask, - .irq_unmask = armada_370_xp_irq_unmask, + .irq_mask = mpic_irq_mask, + .irq_mask_ack = mpic_irq_mask, + .irq_unmask = mpic_irq_unmask, #ifdef CONFIG_SMP - .irq_set_affinity = armada_xp_set_affinity, + .irq_set_affinity = mpic_set_affinity, #endif .flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND, }; -static int armada_370_xp_mpic_irq_map(struct irq_domain *h, - unsigned int virq, irq_hw_number_t hw) +static int mpic_irq_map(struct irq_domain *h, unsigned int virq, + irq_hw_number_t hw) { /* IRQs 0 and 1 cannot be mapped, they are handled internally */ if (hw <= 1) return -EINVAL; - armada_370_xp_irq_mask(irq_get_irq_data(virq)); - if (!is_percpu_irq(hw)) + mpic_irq_mask(irq_get_irq_data(virq)); + if (!mpic_is_percpu_irq(hw)) writel(hw, per_cpu_int_base + MPIC_INT_CLEAR_MASK); else writel(hw, main_int_base + MPIC_INT_SET_ENABLE); irq_set_status_flags(virq, IRQ_LEVEL); - if (is_percpu_irq(hw)) { + if (mpic_is_percpu_irq(hw)) { irq_set_percpu_devid(virq); - irq_set_chip_and_handler(virq, &armada_370_xp_irq_chip, + irq_set_chip_and_handler(virq, &mpic_irq_chip, handle_percpu_devid_irq); } else { - irq_set_chip_and_handler(virq, &armada_370_xp_irq_chip, - handle_level_irq); + irq_set_chip_and_handler(virq, &mpic_irq_chip, handle_level_irq); irqd_set_single_target(irq_desc_get_irq_data(irq_to_desc(virq))); } irq_set_probe(virq); @@ -617,13 +615,13 @@ static int armada_370_xp_mpic_irq_map(struct irq_domain *h, return 0; } -static const struct irq_domain_ops armada_370_xp_mpic_irq_ops = { - .map = armada_370_xp_mpic_irq_map, +static const struct irq_domain_ops mpic_irq_ops = { + .map = mpic_irq_map, .xlate = irq_domain_xlate_onecell, }; #ifdef CONFIG_PCI_MSI -static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained) +static void mpic_handle_msi_irq(struct pt_regs *regs, bool is_chained) { u32 msimask, msinr; @@ -641,14 +639,14 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained) irq = msinr - msi_doorbell_start(); - generic_handle_domain_irq(armada_370_xp_msi_inner_domain, irq); + generic_handle_domain_irq(mpic_msi_inner_domain, irq); } } #else -static void armada_370_xp_handle_msi_irq(struct pt_regs *r, bool b) {} +static void mpic_handle_msi_irq(struct pt_regs *r, bool b) {} #endif -static void armada_370_xp_mpic_handle_cascade_irq(struct irq_desc *desc) +static void mpic_handle_cascade_irq(struct irq_desc *desc) { struct irq_chip *chip = irq_desc_get_chip(desc); unsigned long irqmap, irqn, irqsrc, cpuid; @@ -668,18 +666,17 @@ static void armada_370_xp_mpic_handle_cascade_irq(struct irq_desc *desc) continue; if (irqn == 0 || irqn == 1) { - armada_370_xp_handle_msi_irq(NULL, true); + mpic_handle_msi_irq(NULL, true); continue; } - generic_handle_domain_irq(armada_370_xp_mpic_domain, irqn); + generic_handle_domain_irq(mpic_domain, irqn); } chained_irq_exit(chip, desc); } -static void __exception_irq_entry -armada_370_xp_handle_irq(struct pt_regs *regs) +static void __exception_irq_entry mpic_handle_irq(struct pt_regs *regs) { u32 irqstat, irqnr; @@ -691,14 +688,13 @@ armada_370_xp_handle_irq(struct pt_regs *regs) break; if (irqnr > 1) { - generic_handle_domain_irq(armada_370_xp_mpic_domain, - irqnr); + generic_handle_domain_irq(mpic_domain, irqnr); continue; } /* MSI handling */ if (irqnr == 1) - armada_370_xp_handle_msi_irq(regs, false); + mpic_handle_msi_irq(regs, false); #ifdef CONFIG_SMP /* IPI Handling */ @@ -711,20 +707,20 @@ armada_370_xp_handle_irq(struct pt_regs *regs) IPI_DOORBELL_MASK; for_each_set_bit(ipi, &ipimask, IPI_DOORBELL_END) - generic_handle_domain_irq(ipi_domain, ipi); + generic_handle_domain_irq(mpic_ipi_domain, ipi); } #endif } while (1); } -static int armada_370_xp_mpic_suspend(void) +static int mpic_suspend(void) { doorbell_mask_reg = readl(per_cpu_int_base + MPIC_IN_DRBEL_MASK); return 0; } -static void armada_370_xp_mpic_resume(void) +static void mpic_resume(void) { bool src0, src1; int nirqs; @@ -735,35 +731,34 @@ static void armada_370_xp_mpic_resume(void) struct irq_data *data; unsigned int virq; - virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq); + virq = irq_linear_revmap(mpic_domain, irq); if (!virq) continue; data = irq_get_irq_data(virq); - if (!is_percpu_irq(irq)) { + if (!mpic_is_percpu_irq(irq)) { /* Non per-CPU interrupts */ writel(irq, per_cpu_int_base + MPIC_INT_CLEAR_MASK); if (!irqd_irq_disabled(data)) - armada_370_xp_irq_unmask(data); + mpic_irq_unmask(data); } else { /* Per-CPU interrupts */ writel(irq, main_int_base + MPIC_INT_SET_ENABLE); /* - * Re-enable on the current CPU, - * armada_xp_mpic_reenable_percpu() will take - * care of secondary CPUs when they come up. + * Re-enable on the current CPU, mpic_reenable_percpu() + * will take care of secondary CPUs when they come up. */ if (irq_percpu_is_enabled(virq)) - armada_370_xp_irq_unmask(data); + mpic_irq_unmask(data); } } /* Reconfigure doorbells for IPIs and MSIs */ writel(doorbell_mask_reg, per_cpu_int_base + MPIC_IN_DRBEL_MASK); - if (is_ipi_available()) { + if (mpic_is_ipi_available()) { src0 = doorbell_mask_reg & IPI_DOORBELL_MASK; src1 = doorbell_mask_reg & PCI_MSI_DOORBELL_MASK; } else { @@ -776,17 +771,17 @@ static void armada_370_xp_mpic_resume(void) if (src1) writel(1, per_cpu_int_base + MPIC_INT_CLEAR_MASK); - if (is_ipi_available()) - ipi_resume(); + if (mpic_is_ipi_available()) + mpic_ipi_resume(); } -static struct syscore_ops armada_370_xp_mpic_syscore_ops = { - .suspend = armada_370_xp_mpic_suspend, - .resume = armada_370_xp_mpic_resume, +static struct syscore_ops mpic_syscore_ops = { + .suspend = mpic_suspend, + .resume = mpic_resume, }; -static int __init armada_370_xp_mpic_of_init(struct device_node *node, - struct device_node *parent) +static int __init mpic_of_init(struct device_node *node, + struct device_node *parent) { struct resource main_int_res, per_cpu_int_res; int nr_irqs; @@ -816,11 +811,9 @@ static int __init armada_370_xp_mpic_of_init(struct device_node *node, for (int i = 0; i < nr_irqs; i++) writel(i, main_int_base + MPIC_INT_CLEAR_ENABLE); - armada_370_xp_mpic_domain = irq_domain_add_linear(node, nr_irqs, - &armada_370_xp_mpic_irq_ops, - NULL); - BUG_ON(!armada_370_xp_mpic_domain); - irq_domain_update_bus_token(armada_370_xp_mpic_domain, DOMAIN_BUS_WIRED); + mpic_domain = irq_domain_add_linear(node, nr_irqs, &mpic_irq_ops, NULL); + BUG_ON(!mpic_domain); + irq_domain_update_bus_token(mpic_domain, DOMAIN_BUS_WIRED); /* * Initialize parent_irq before calling any other functions, since it is @@ -829,19 +822,19 @@ static int __init armada_370_xp_mpic_of_init(struct device_node *node, parent_irq = irq_of_parse_and_map(node, 0); /* Setup for the boot CPU */ - armada_xp_mpic_perf_init(); - armada_xp_mpic_smp_cpu_init(); + mpic_perf_init(); + mpic_smp_cpu_init(); - armada_370_xp_msi_init(node, main_int_res.start); + mpic_msi_init(node, main_int_res.start); if (parent_irq <= 0) { - irq_set_default_host(armada_370_xp_mpic_domain); - set_handle_irq(armada_370_xp_handle_irq); + irq_set_default_host(mpic_domain); + set_handle_irq(mpic_handle_irq); #ifdef CONFIG_SMP - armada_xp_ipi_init(node); + mpic_ipi_init(node); cpuhp_setup_state_nocalls(CPUHP_AP_IRQ_ARMADA_XP_STARTING, "irqchip/armada/ipi:starting", - armada_xp_mpic_starting_cpu, NULL); + mpic_starting_cpu, NULL); #endif } else { #ifdef CONFIG_SMP @@ -849,13 +842,12 @@ static int __init armada_370_xp_mpic_of_init(struct device_node *node, "irqchip/armada/cascade:starting", mpic_cascaded_starting_cpu, NULL); #endif - irq_set_chained_handler(parent_irq, - armada_370_xp_mpic_handle_cascade_irq); + irq_set_chained_handler(parent_irq, mpic_handle_cascade_irq); } - register_syscore_ops(&armada_370_xp_mpic_syscore_ops); + register_syscore_ops(&mpic_syscore_ops); return 0; } -IRQCHIP_DECLARE(armada_370_xp_mpic, "marvell,mpic", armada_370_xp_mpic_of_init); +IRQCHIP_DECLARE(marvell_mpic, "marvell,mpic", mpic_of_init); -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 07/10] irqchip/armada-370-xp: Don't read number of supported interrupts multiple times 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (5 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 06/10] irqchip/armada-370-xp: Change symbol prefixes to mpic Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 11:57 ` [PATCH 08/10] irqchip/armada-370-xp: Use FIELD_GET() and named register constant Marek Behún ` (3 subsequent siblings) 10 siblings, 0 replies; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Get the number of supported interrupts, originally from the MPIC_INT_CONTROL register, from the mpic_domain structure member when it is already initialized. Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> --- drivers/irqchip/irq-armada-370-xp.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index ab18dae174a8..151f0fd0389a 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -508,13 +508,7 @@ static int mpic_set_affinity(struct irq_data *d, const struct cpumask *mask_val, static void mpic_smp_cpu_init(void) { - u32 control; - int nr_irqs; - - control = readl(main_int_base + MPIC_INT_CONTROL); - nr_irqs = (control >> 2) & 0x3ff; - - for (int i = 0; i < nr_irqs; i++) + for (int i = 0; i < mpic_domain->hwirq_max; i++) writel(i, per_cpu_int_base + MPIC_INT_SET_MASK); if (!mpic_is_ipi_available()) @@ -723,11 +717,9 @@ static int mpic_suspend(void) static void mpic_resume(void) { bool src0, src1; - int nirqs; /* Re-enable interrupts */ - nirqs = (readl(main_int_base + MPIC_INT_CONTROL) >> 2) & 0x3ff; - for (irq_hw_number_t irq = 0; irq < nirqs; irq++) { + for (irq_hw_number_t irq = 0; irq < mpic_domain->hwirq_max; irq++) { struct irq_data *data; unsigned int virq; -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 08/10] irqchip/armada-370-xp: Use FIELD_GET() and named register constant 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (6 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 07/10] irqchip/armada-370-xp: Don't read number of supported interrupts multiple times Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:28 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 09/10] irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code Marek Behún ` (2 subsequent siblings) 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Use FIELD_GET() and named register mask constant when reading the number of supported interrupts / current interrupt. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index 151f0fd0389a..6f71bf08831f 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -10,6 +10,7 @@ * Ben Dooks <ben.dooks@codethink.co.uk> */ +#include <linux/bitfield.h> #include <linux/bits.h> #include <linux/kernel.h> #include <linux/module.h> @@ -112,6 +113,7 @@ /* Registers relative to main_int_base */ #define MPIC_INT_CONTROL 0x00 +#define MPIC_INT_CONTROL_NUMINT_MASK GENMASK(12, 2) #define MPIC_SW_TRIG_INT 0x04 #define MPIC_INT_SET_ENABLE 0x30 #define MPIC_INT_CLEAR_ENABLE 0x34 @@ -124,6 +126,7 @@ #define MPIC_IN_DRBEL_MASK 0x0c #define MPIC_PPI_CAUSE 0x10 #define MPIC_CPU_INTACK 0x44 +#define MPIC_CPU_INTACK_IID_MASK GENMASK(9, 0) #define MPIC_INT_SET_MASK 0x48 #define MPIC_INT_CLEAR_MASK 0x4C #define MPIC_INT_FABRIC_MASK 0x54 @@ -676,7 +679,7 @@ static void __exception_irq_entry mpic_handle_irq(struct pt_regs *regs) do { irqstat = readl_relaxed(per_cpu_int_base + MPIC_CPU_INTACK); - irqnr = irqstat & 0x3FF; + irqnr = FIELD_GET(MPIC_CPU_INTACK_IID_MASK, irqstat); if (irqnr > 1022) break; @@ -776,8 +779,7 @@ static int __init mpic_of_init(struct device_node *node, struct device_node *parent) { struct resource main_int_res, per_cpu_int_res; - int nr_irqs; - u32 control; + unsigned int nr_irqs; BUG_ON(of_address_to_resource(node, 0, &main_int_res)); BUG_ON(of_address_to_resource(node, 1, &per_cpu_int_res)); @@ -797,8 +799,8 @@ static int __init mpic_of_init(struct device_node *node, resource_size(&per_cpu_int_res)); BUG_ON(!per_cpu_int_base); - control = readl(main_int_base + MPIC_INT_CONTROL); - nr_irqs = (control >> 2) & 0x3ff; + nr_irqs = FIELD_GET(MPIC_INT_CONTROL_NUMINT_MASK, + readl(main_int_base + MPIC_INT_CONTROL)); for (int i = 0; i < nr_irqs; i++) writel(i, main_int_base + MPIC_INT_CLEAR_ENABLE); -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 08/10] irqchip/armada-370-xp: Use FIELD_GET() and named register constant 2024-07-11 11:57 ` [PATCH 08/10] irqchip/armada-370-xp: Use FIELD_GET() and named register constant Marek Behún @ 2024-07-11 14:28 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:28 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:46PM +0200, Marek Behún wrote: > Use FIELD_GET() and named register mask constant when reading the number > of supported interrupts / current interrupt. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 09/10] irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (7 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 08/10] irqchip/armada-370-xp: Use FIELD_GET() and named register constant Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:29 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 10/10] irqchip/armada-370-xp: Refactor handling IPI interrupts Marek Behún 2024-07-11 14:10 ` [PATCH 00/10] armada-370-xp irqchip updates round 3 Ilpo Järvinen 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Refactor the mpic_handle_msi_irq() function to make it simpler: - drop the function arguments, they are not needed - rename the variable holding the doorbell cause register to "cause" - rename the iterating variable to "i" - use for_each_set_bit() (requires retyping "cause" to unsigned long) Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 32 +++++++++++------------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index 6f71bf08831f..b31bf6c43a8b 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -618,29 +618,21 @@ static const struct irq_domain_ops mpic_irq_ops = { }; #ifdef CONFIG_PCI_MSI -static void mpic_handle_msi_irq(struct pt_regs *regs, bool is_chained) +static void mpic_handle_msi_irq(void) { - u32 msimask, msinr; + unsigned long cause; + unsigned int i; - msimask = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); - msimask &= msi_doorbell_mask(); + cause = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); + cause &= msi_doorbell_mask(); + writel(~cause, per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); - writel(~msimask, per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); - - for (msinr = msi_doorbell_start(); - msinr < msi_doorbell_end(); msinr++) { - unsigned int irq; - - if (!(msimask & BIT(msinr))) - continue; - - irq = msinr - msi_doorbell_start(); - - generic_handle_domain_irq(mpic_msi_inner_domain, irq); - } + for_each_set_bit(i, &cause, BITS_PER_LONG) + generic_handle_domain_irq(mpic_msi_inner_domain, + i - msi_doorbell_start()); } #else -static void mpic_handle_msi_irq(struct pt_regs *r, bool b) {} +static void mpic_handle_msi_irq(void) {} #endif static void mpic_handle_cascade_irq(struct irq_desc *desc) @@ -663,7 +655,7 @@ static void mpic_handle_cascade_irq(struct irq_desc *desc) continue; if (irqn == 0 || irqn == 1) { - mpic_handle_msi_irq(NULL, true); + mpic_handle_msi_irq(); continue; } @@ -691,7 +683,7 @@ static void __exception_irq_entry mpic_handle_irq(struct pt_regs *regs) /* MSI handling */ if (irqnr == 1) - mpic_handle_msi_irq(regs, false); + mpic_handle_msi_irq(); #ifdef CONFIG_SMP /* IPI Handling */ -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 09/10] irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code 2024-07-11 11:57 ` [PATCH 09/10] irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code Marek Behún @ 2024-07-11 14:29 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:29 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:47PM +0200, Marek Behún wrote: > Refactor the mpic_handle_msi_irq() function to make it simpler: > - drop the function arguments, they are not needed > - rename the variable holding the doorbell cause register to "cause" > - rename the iterating variable to "i" > - use for_each_set_bit() (requires retyping "cause" to unsigned long) > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 10/10] irqchip/armada-370-xp: Refactor handling IPI interrupts 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (8 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 09/10] irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code Marek Behún @ 2024-07-11 11:57 ` Marek Behún 2024-07-11 14:29 ` Andrew Lunn 2024-07-11 14:10 ` [PATCH 00/10] armada-370-xp irqchip updates round 3 Ilpo Järvinen 10 siblings, 1 reply; 20+ messages in thread From: Marek Behún @ 2024-07-11 11:57 UTC (permalink / raw) To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen Cc: Marek Behún Refactor the handling of IPI interrupts - put into own function mpic_handle_ipi_irq(), similar to mpic_handle_msi_irq() - rename the variable holding the doorbell cause register to "cause" - retype and rename the variable holding the IPI HW IRQ number to "irq_hw_number_t i" Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/irqchip/irq-armada-370-xp.c | 31 +++++++++++++++++------------ 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c index b31bf6c43a8b..be1c3721f980 100644 --- a/drivers/irqchip/irq-armada-370-xp.c +++ b/drivers/irqchip/irq-armada-370-xp.c @@ -635,6 +635,22 @@ static void mpic_handle_msi_irq(void) static void mpic_handle_msi_irq(void) {} #endif +#ifdef CONFIG_SMP +static void mpic_handle_ipi_irq(void) +{ + unsigned long cause; + irq_hw_number_t i; + + cause = readl_relaxed(per_cpu_int_base + MPIC_IN_DRBEL_CAUSE); + cause &= IPI_DOORBELL_MASK; + + for_each_set_bit(i, &cause, IPI_DOORBELL_END) + generic_handle_domain_irq(mpic_ipi_domain, i); +} +#else +static inline void mpic_handle_ipi_irq(void) {} +#endif + static void mpic_handle_cascade_irq(struct irq_desc *desc) { struct irq_chip *chip = irq_desc_get_chip(desc); @@ -685,20 +701,9 @@ static void __exception_irq_entry mpic_handle_irq(struct pt_regs *regs) if (irqnr == 1) mpic_handle_msi_irq(); -#ifdef CONFIG_SMP /* IPI Handling */ - if (irqnr == 0) { - unsigned long ipimask; - int ipi; - - ipimask = readl_relaxed(per_cpu_int_base + - MPIC_IN_DRBEL_CAUSE) & - IPI_DOORBELL_MASK; - - for_each_set_bit(ipi, &ipimask, IPI_DOORBELL_END) - generic_handle_domain_irq(mpic_ipi_domain, ipi); - } -#endif + if (irqnr == 0) + mpic_handle_ipi_irq(); } while (1); } -- 2.44.2 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 10/10] irqchip/armada-370-xp: Refactor handling IPI interrupts 2024-07-11 11:57 ` [PATCH 10/10] irqchip/armada-370-xp: Refactor handling IPI interrupts Marek Behún @ 2024-07-11 14:29 ` Andrew Lunn 0 siblings, 0 replies; 20+ messages in thread From: Andrew Lunn @ 2024-07-11 14:29 UTC (permalink / raw) To: Marek Behún Cc: Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede, Ilpo Järvinen On Thu, Jul 11, 2024 at 01:57:48PM +0200, Marek Behún wrote: > Refactor the handling of IPI interrupts > - put into own function mpic_handle_ipi_irq(), similar to > mpic_handle_msi_irq() > - rename the variable holding the doorbell cause register to "cause" > - retype and rename the variable holding the IPI HW IRQ number to > "irq_hw_number_t i" > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 00/10] armada-370-xp irqchip updates round 3 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún ` (9 preceding siblings ...) 2024-07-11 11:57 ` [PATCH 10/10] irqchip/armada-370-xp: Refactor handling IPI interrupts Marek Behún @ 2024-07-11 14:10 ` Ilpo Järvinen 10 siblings, 0 replies; 20+ messages in thread From: Ilpo Järvinen @ 2024-07-11 14:10 UTC (permalink / raw) To: Marek Behún Cc: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth, Thomas Gleixner, linux-arm-kernel, arm, Andy Shevchenko, Hans de Goede [-- Attachment #1: Type: text/plain, Size: 1557 bytes --] On Thu, 11 Jul 2024, Marek Behún wrote: > Hi Thomas, Andrew, Ilpo et al., > > this is 3rd round of refactors for the armada-370-xp irqchip driver, > containing another 10 patches. This series depends on v3 of round 2 [1] > from, which in turn depends on patches merged into tip/irq/core [2]. > > With the expection of patch 06/10 (which is already reviewed by Andrew), > these patches are small and so should be easy to review. Yeah, they were easy to review... For all 1-10, Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> -- i. > Marek > > [1] https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=869325 > [2] https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/log/?h=irq/core > > Marek Behún (10): > irqchip/armada-370-xp: Rename variable for consistency > irqchip/armada-370-xp: Use unsigned int type for virqs > irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition > irqchip/armada-370-xp: Simplify ipi_resume() code > irqchip/armada-370-xp: Improve indentation > irqchip/armada-370-xp: Change symbol prefixes to mpic > irqchip/armada-370-xp: Don't read number of supported interrupts > multiple times > irqchip/armada-370-xp: Use FIELD_GET() and named register constant > irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code > irqchip/armada-370-xp: Refactor handling IPI interrupts > > drivers/irqchip/irq-armada-370-xp.c | 420 +++++++++++++--------------- > 1 file changed, 201 insertions(+), 219 deletions(-) > > ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2024-07-11 14:30 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-07-11 11:57 [PATCH 00/10] armada-370-xp irqchip updates round 3 Marek Behún 2024-07-11 11:57 ` [PATCH 01/10] irqchip/armada-370-xp: Rename variable for consistency Marek Behún 2024-07-11 14:24 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 02/10] irqchip/armada-370-xp: Use unsigned int type for virqs Marek Behún 2024-07-11 14:24 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 03/10] irqchip/armada-370-xp: Use !virq instead of virq == 0 in condition Marek Behún 2024-07-11 14:25 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 04/10] irqchip/armada-370-xp: Simplify ipi_resume() code Marek Behún 2024-07-11 14:25 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 05/10] irqchip/armada-370-xp: Improve indentation Marek Behún 2024-07-11 14:27 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 06/10] irqchip/armada-370-xp: Change symbol prefixes to mpic Marek Behún 2024-07-11 11:57 ` [PATCH 07/10] irqchip/armada-370-xp: Don't read number of supported interrupts multiple times Marek Behún 2024-07-11 11:57 ` [PATCH 08/10] irqchip/armada-370-xp: Use FIELD_GET() and named register constant Marek Behún 2024-07-11 14:28 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 09/10] irqchip/armada-370-xp: Refactor mpic_handle_msi_irq() code Marek Behún 2024-07-11 14:29 ` Andrew Lunn 2024-07-11 11:57 ` [PATCH 10/10] irqchip/armada-370-xp: Refactor handling IPI interrupts Marek Behún 2024-07-11 14:29 ` Andrew Lunn 2024-07-11 14:10 ` [PATCH 00/10] armada-370-xp irqchip updates round 3 Ilpo Järvinen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).