* [RFC PATCH v2] preliminary support for sparse IRQ
@ 2010-05-18 10:34 Eric Miao
2010-05-18 21:45 ` Marek Vasut
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Eric Miao @ 2010-05-18 10:34 UTC (permalink / raw)
To: linux-arm-kernel
commit 2e2e087d96630c95dbce57036680cf917e906cf1
Author: Eric Miao <eric.y.miao@gmail.com>
Date: Mon Dec 28 12:59:59 2009 +0800
[ARM] preliminary support for sparse IRQ
So to allow NR_IRQS to be dynamic and platforms to specify the number
of IRQs really needed.
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index c5408bf..727703c 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1282,6 +1282,18 @@ config HW_PERF_EVENTS
Enable hardware performance counter support for perf events. If
disabled, perf events will use software events only.
+config SPARSE_IRQ
+ bool "Support sparse irq numbering"
+ depends on EXPERIMENTAL
+ help
+ This enables support for sparse irqs. This is useful in general
+ as most CPUs have a fairly sparse array of IRQ vectors, which
+ the irq_desc then maps directly on to. Systems with a high
+ number of off-chip IRQs will want to treat this as
+ experimental until they have been independently verified.
+
+ If you don't know what to do here, say N.
+
source "mm/Kconfig"
config LEDS
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h
index 237282f..2721a58 100644
--- a/arch/arm/include/asm/irq.h
+++ b/arch/arm/include/asm/irq.h
@@ -7,6 +7,8 @@
#define irq_canonicalize(i) (i)
#endif
+#define NR_IRQS_LEGACY 16
+
/*
* Use this value to indicate lack of interrupt
* capability
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h
index c59842d..5ee6f85 100644
--- a/arch/arm/include/asm/mach/arch.h
+++ b/arch/arm/include/asm/mach/arch.h
@@ -20,6 +20,7 @@ struct machine_desc {
* by assembler code in head.S, head-common.S
*/
unsigned int nr; /* architecture number */
+ unsigned int nr_irqs; /* number of IRQs */
unsigned int phys_io; /* start of physical io */
unsigned int io_pg_offst; /* byte offset for io
* page tabe entry */
diff --git a/arch/arm/include/asm/mach/irq.h b/arch/arm/include/asm/mach/irq.h
index 8920b2d..ce3eee9 100644
--- a/arch/arm/include/asm/mach/irq.h
+++ b/arch/arm/include/asm/mach/irq.h
@@ -17,6 +17,7 @@ struct seq_file;
/*
* This is internal. Do not use it.
*/
+extern unsigned int arch_nr_irqs;
extern void (*init_arch_irq)(void);
extern void init_FIQ(void);
extern int show_fiq_list(struct seq_file *, void *);
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 3b3d2c8..c0d5c3b 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -47,12 +47,14 @@
#define irq_finish(irq) do { } while (0)
#endif
+unsigned int arch_nr_irqs;
void (*init_arch_irq)(void) __initdata = NULL;
unsigned long irq_err_count;
int show_interrupts(struct seq_file *p, void *v)
{
int i = *(loff_t *) v, cpu;
+ struct irq_desc *desc;
struct irqaction * action;
unsigned long flags;
@@ -67,24 +69,25 @@ int show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n');
}
- if (i < NR_IRQS) {
- raw_spin_lock_irqsave(&irq_desc[i].lock, flags);
- action = irq_desc[i].action;
+ if (i < nr_irqs) {
+ desc = irq_to_desc(i);
+ raw_spin_lock_irqsave(&desc->lock, flags);
+ action = desc->action;
if (!action)
goto unlock;
seq_printf(p, "%3d: ", i);
for_each_present_cpu(cpu)
seq_printf(p, "%10u ", kstat_irqs_cpu(i, cpu));
- seq_printf(p, " %10s", irq_desc[i].chip->name ? : "-");
+ seq_printf(p, " %10s", desc->chip->name ? : "-");
seq_printf(p, " %s", action->name);
for (action = action->next; action; action = action->next)
seq_printf(p, ", %s", action->name);
seq_putc(p, '\n');
unlock:
- raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags);
- } else if (i == NR_IRQS) {
+ raw_spin_unlock_irqrestore(&desc->lock, flags);
+ } else if (i == nr_irqs) {
#ifdef CONFIG_FIQ
show_fiq_list(p, v);
#endif
@@ -112,7 +115,7 @@ asmlinkage void __exception asm_do_IRQ(unsigned
int irq, struct pt_regs *regs)
* Some hardware gives randomly wrong interrupts. Rather
* than crashing, do something sensible.
*/
- if (unlikely(irq >= NR_IRQS)) {
+ if (unlikely(irq >= nr_irqs)) {
if (printk_ratelimit())
printk(KERN_WARNING "Bad IRQ%u\n", irq);
ack_bad_irq(irq);
@@ -132,12 +135,12 @@ void set_irq_flags(unsigned int irq, unsigned int iflags)
struct irq_desc *desc;
unsigned long flags;
- if (irq >= NR_IRQS) {
+ if (irq >= nr_irqs) {
printk(KERN_ERR "Trying to set irq flags for IRQ%d\n", irq);
return;
}
- desc = irq_desc + irq;
+ desc = irq_to_desc(irq);
raw_spin_lock_irqsave(&desc->lock, flags);
desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
if (iflags & IRQF_VALID)
@@ -151,14 +154,25 @@ void set_irq_flags(unsigned int irq, unsigned int iflags)
void __init init_IRQ(void)
{
+ struct irq_desc *desc;
int irq;
- for (irq = 0; irq < NR_IRQS; irq++)
- irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE;
+ for (irq = 0; irq < nr_irqs; irq++) {
+ desc = irq_to_desc_alloc_node(irq, 0);
+ desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE;
+ }
init_arch_irq();
}
+#ifdef CONFIG_SPARSE_IRQ
+int __init arch_probe_nr_irqs(void)
+{
+ nr_irqs = arch_nr_irqs ? arch_nr_irqs : NR_IRQS;
+ return 0;
+}
+#endif
+
#ifdef CONFIG_HOTPLUG_CPU
static void route_irq(struct irq_desc *desc, unsigned int irq,
unsigned int cpu)
@@ -178,10 +192,9 @@ static void route_irq(struct irq_desc *desc,
unsigned int irq, unsigned int cpu)
void migrate_irqs(void)
{
unsigned int i, cpu = smp_processor_id();
+ struct irq_desc *desc;
- for (i = 0; i < NR_IRQS; i++) {
- struct irq_desc *desc = irq_desc + i;
-
+ for_each_irq_desc(i, desc) {
if (desc->node == cpu) {
unsigned int newcpu = cpumask_any_and(desc->affinity,
cpu_online_mask);
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index c91c77b..112cd1b 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -727,6 +727,7 @@ void __init setup_arch(char **cmdline_p)
/*
* Set up various architecture-specific pointers
*/
+ arch_nr_irqs = mdesc->nr_irqs;
init_arch_irq = mdesc->init_irq;
system_timer = mdesc->timer;
init_machine = mdesc->init_machine;
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-18 10:34 [RFC PATCH v2] preliminary support for sparse IRQ Eric Miao
@ 2010-05-18 21:45 ` Marek Vasut
2010-05-19 6:53 ` Eric Miao
2010-05-20 8:28 ` Paul Mundt
` (2 subsequent siblings)
3 siblings, 1 reply; 12+ messages in thread
From: Marek Vasut @ 2010-05-18 21:45 UTC (permalink / raw)
To: linux-arm-kernel
Dne ?t 18. kv?tna 2010 12:34:49 Eric Miao napsal(a):
> commit 2e2e087d96630c95dbce57036680cf917e906cf1
> Author: Eric Miao <eric.y.miao@gmail.com>
> Date: Mon Dec 28 12:59:59 2009 +0800
>
> [ARM] preliminary support for sparse IRQ
>
> So to allow NR_IRQS to be dynamic and platforms to specify the number
> of IRQs really needed.
>
> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index c5408bf..727703c 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -1282,6 +1282,18 @@ config HW_PERF_EVENTS
> Enable hardware performance counter support for perf events. If
> disabled, perf events will use software events only.
>
> +config SPARSE_IRQ
> + bool "Support sparse irq numbering"
> + depends on EXPERIMENTAL
> + help
> + This enables support for sparse irqs. This is useful in general
> + as most CPUs have a fairly sparse array of IRQ vectors, which
> + the irq_desc then maps directly on to. Systems with a high
> + number of off-chip IRQs will want to treat this as
> + experimental until they have been independently verified.
> +
> + If you don't know what to do here, say N.
> +
> source "mm/Kconfig"
>
> config LEDS
> diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h
> index 237282f..2721a58 100644
> --- a/arch/arm/include/asm/irq.h
> +++ b/arch/arm/include/asm/irq.h
> @@ -7,6 +7,8 @@
> #define irq_canonicalize(i) (i)
> #endif
>
> +#define NR_IRQS_LEGACY 16
> +
> /*
> * Use this value to indicate lack of interrupt
> * capability
> diff --git a/arch/arm/include/asm/mach/arch.h
> b/arch/arm/include/asm/mach/arch.h index c59842d..5ee6f85 100644
> --- a/arch/arm/include/asm/mach/arch.h
> +++ b/arch/arm/include/asm/mach/arch.h
> @@ -20,6 +20,7 @@ struct machine_desc {
> * by assembler code in head.S, head-common.S
> */
> unsigned int nr; /* architecture number */
> + unsigned int nr_irqs; /* number of IRQs */
> unsigned int phys_io; /* start of physical io */
> unsigned int io_pg_offst; /* byte offset for io
> * page tabe entry */
> diff --git a/arch/arm/include/asm/mach/irq.h
> b/arch/arm/include/asm/mach/irq.h index 8920b2d..ce3eee9 100644
> --- a/arch/arm/include/asm/mach/irq.h
> +++ b/arch/arm/include/asm/mach/irq.h
> @@ -17,6 +17,7 @@ struct seq_file;
> /*
> * This is internal. Do not use it.
> */
> +extern unsigned int arch_nr_irqs;
> extern void (*init_arch_irq)(void);
> extern void init_FIQ(void);
> extern int show_fiq_list(struct seq_file *, void *);
> diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
> index 3b3d2c8..c0d5c3b 100644
> --- a/arch/arm/kernel/irq.c
> +++ b/arch/arm/kernel/irq.c
> @@ -47,12 +47,14 @@
> #define irq_finish(irq) do { } while (0)
> #endif
>
> +unsigned int arch_nr_irqs;
> void (*init_arch_irq)(void) __initdata = NULL;
> unsigned long irq_err_count;
>
> int show_interrupts(struct seq_file *p, void *v)
> {
> int i = *(loff_t *) v, cpu;
> + struct irq_desc *desc;
> struct irqaction * action;
> unsigned long flags;
>
> @@ -67,24 +69,25 @@ int show_interrupts(struct seq_file *p, void *v)
> seq_putc(p, '\n');
> }
>
> - if (i < NR_IRQS) {
> - raw_spin_lock_irqsave(&irq_desc[i].lock, flags);
> - action = irq_desc[i].action;
> + if (i < nr_irqs) {
> + desc = irq_to_desc(i);
> + raw_spin_lock_irqsave(&desc->lock, flags);
> + action = desc->action;
Possibly stupid question, but shouldn't you asign 'desc' after locking ?
> if (!action)
> goto unlock;
>
> seq_printf(p, "%3d: ", i);
> for_each_present_cpu(cpu)
> seq_printf(p, "%10u ", kstat_irqs_cpu(i, cpu));
> - seq_printf(p, " %10s", irq_desc[i].chip->name ? : "-");
> + seq_printf(p, " %10s", desc->chip->name ? : "-");
> seq_printf(p, " %s", action->name);
> for (action = action->next; action; action = action->next)
> seq_printf(p, ", %s", action->name);
>
> seq_putc(p, '\n');
> unlock:
> - raw_spin_unlock_irqrestore(&irq_desc[i].lock, flags);
> - } else if (i == NR_IRQS) {
> + raw_spin_unlock_irqrestore(&desc->lock, flags);
> + } else if (i == nr_irqs) {
> #ifdef CONFIG_FIQ
> show_fiq_list(p, v);
> #endif
> @@ -112,7 +115,7 @@ asmlinkage void __exception asm_do_IRQ(unsigned
> int irq, struct pt_regs *regs)
> * Some hardware gives randomly wrong interrupts. Rather
> * than crashing, do something sensible.
> */
> - if (unlikely(irq >= NR_IRQS)) {
> + if (unlikely(irq >= nr_irqs)) {
> if (printk_ratelimit())
> printk(KERN_WARNING "Bad IRQ%u\n", irq);
> ack_bad_irq(irq);
> @@ -132,12 +135,12 @@ void set_irq_flags(unsigned int irq, unsigned int
> iflags) struct irq_desc *desc;
> unsigned long flags;
>
> - if (irq >= NR_IRQS) {
> + if (irq >= nr_irqs) {
> printk(KERN_ERR "Trying to set irq flags for IRQ%d\n", irq);
> return;
> }
>
> - desc = irq_desc + irq;
> + desc = irq_to_desc(irq);
> raw_spin_lock_irqsave(&desc->lock, flags);
> desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
> if (iflags & IRQF_VALID)
> @@ -151,14 +154,25 @@ void set_irq_flags(unsigned int irq, unsigned int
> iflags)
>
> void __init init_IRQ(void)
> {
> + struct irq_desc *desc;
> int irq;
>
> - for (irq = 0; irq < NR_IRQS; irq++)
> - irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE;
> + for (irq = 0; irq < nr_irqs; irq++) {
> + desc = irq_to_desc_alloc_node(irq, 0);
> + desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE;
> + }
>
> init_arch_irq();
> }
>
> +#ifdef CONFIG_SPARSE_IRQ
> +int __init arch_probe_nr_irqs(void)
> +{
> + nr_irqs = arch_nr_irqs ? arch_nr_irqs : NR_IRQS;
> + return 0;
> +}
> +#endif
> +
> #ifdef CONFIG_HOTPLUG_CPU
>
> static void route_irq(struct irq_desc *desc, unsigned int irq,
> unsigned int cpu)
> @@ -178,10 +192,9 @@ static void route_irq(struct irq_desc *desc,
> unsigned int irq, unsigned int cpu)
> void migrate_irqs(void)
> {
> unsigned int i, cpu = smp_processor_id();
> + struct irq_desc *desc;
>
> - for (i = 0; i < NR_IRQS; i++) {
> - struct irq_desc *desc = irq_desc + i;
> -
> + for_each_irq_desc(i, desc) {
> if (desc->node == cpu) {
> unsigned int newcpu = cpumask_any_and(desc->affinity,
> cpu_online_mask);
> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
> index c91c77b..112cd1b 100644
> --- a/arch/arm/kernel/setup.c
> +++ b/arch/arm/kernel/setup.c
> @@ -727,6 +727,7 @@ void __init setup_arch(char **cmdline_p)
> /*
> * Set up various architecture-specific pointers
> */
> + arch_nr_irqs = mdesc->nr_irqs;
> init_arch_irq = mdesc->init_irq;
> system_timer = mdesc->timer;
> init_machine = mdesc->init_machine;
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-18 21:45 ` Marek Vasut
@ 2010-05-19 6:53 ` Eric Miao
0 siblings, 0 replies; 12+ messages in thread
From: Eric Miao @ 2010-05-19 6:53 UTC (permalink / raw)
To: linux-arm-kernel
>>
>> - ? ? if (i < NR_IRQS) {
>> - ? ? ? ? ? ? raw_spin_lock_irqsave(&irq_desc[i].lock, flags);
>> - ? ? ? ? ? ? action = irq_desc[i].action;
>> + ? ? if (i < nr_irqs) {
>> + ? ? ? ? ? ? desc = irq_to_desc(i);
>> + ? ? ? ? ? ? raw_spin_lock_irqsave(&desc->lock, flags);
>> + ? ? ? ? ? ? action = desc->action;
>
> Possibly stupid question, but shouldn't you asign 'desc' after locking ?
>
Locking is actually performed on desc->lock, that's why it needs desc to
be first assigned.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-18 10:34 [RFC PATCH v2] preliminary support for sparse IRQ Eric Miao
2010-05-18 21:45 ` Marek Vasut
@ 2010-05-20 8:28 ` Paul Mundt
2010-05-20 8:37 ` Eric Miao
2010-05-21 19:46 ` Russell King - ARM Linux
2010-05-20 9:21 ` Will Deacon
[not found] ` <3319586236559971954@unknownmsgid>
3 siblings, 2 replies; 12+ messages in thread
From: Paul Mundt @ 2010-05-20 8:28 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 18, 2010 at 06:34:49PM +0800, Eric Miao wrote:
> commit 2e2e087d96630c95dbce57036680cf917e906cf1
> Author: Eric Miao <eric.y.miao@gmail.com>
> Date: Mon Dec 28 12:59:59 2009 +0800
>
> [ARM] preliminary support for sparse IRQ
>
> So to allow NR_IRQS to be dynamic and platforms to specify the number
> of IRQs really needed.
>
> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
>
It would be nice to see this applied, we plan to use sparseirq
unconditionally for shmobile (as sh already does).
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-20 8:28 ` Paul Mundt
@ 2010-05-20 8:37 ` Eric Miao
2010-05-20 8:37 ` Paul Mundt
2010-05-21 19:46 ` Russell King - ARM Linux
1 sibling, 1 reply; 12+ messages in thread
From: Eric Miao @ 2010-05-20 8:37 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 20, 2010 at 4:28 PM, Paul Mundt <lethal@linux-sh.org> wrote:
> On Tue, May 18, 2010 at 06:34:49PM +0800, Eric Miao wrote:
>> commit 2e2e087d96630c95dbce57036680cf917e906cf1
>> Author: Eric Miao <eric.y.miao@gmail.com>
>> Date: ? Mon Dec 28 12:59:59 2009 +0800
>>
>> ? ? [ARM] preliminary support for sparse IRQ
>>
>> ? ? So to allow NR_IRQS to be dynamic and platforms to specify the number
>> ? ? of IRQs really needed.
>>
>> ? ? Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
>>
> It would be nice to see this applied, we plan to use sparseirq
> unconditionally for shmobile (as sh already does).
>
Thanks Paul. Sounds like an Acked-by.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-20 8:37 ` Eric Miao
@ 2010-05-20 8:37 ` Paul Mundt
0 siblings, 0 replies; 12+ messages in thread
From: Paul Mundt @ 2010-05-20 8:37 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 20, 2010 at 04:37:16PM +0800, Eric Miao wrote:
> On Thu, May 20, 2010 at 4:28 PM, Paul Mundt <lethal@linux-sh.org> wrote:
> > On Tue, May 18, 2010 at 06:34:49PM +0800, Eric Miao wrote:
> >> commit 2e2e087d96630c95dbce57036680cf917e906cf1
> >> Author: Eric Miao <eric.y.miao@gmail.com>
> >> Date: ?? Mon Dec 28 12:59:59 2009 +0800
> >>
> >> ?? ?? [ARM] preliminary support for sparse IRQ
> >>
> >> ?? ?? So to allow NR_IRQS to be dynamic and platforms to specify the number
> >> ?? ?? of IRQs really needed.
> >>
> >> ?? ?? Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
> >>
> > It would be nice to see this applied, we plan to use sparseirq
> > unconditionally for shmobile (as sh already does).
> >
>
> Thanks Paul. Sounds like an Acked-by.
Indeed.
Acked-by: Paul Mundt <lethal@linux-sh.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-18 10:34 [RFC PATCH v2] preliminary support for sparse IRQ Eric Miao
2010-05-18 21:45 ` Marek Vasut
2010-05-20 8:28 ` Paul Mundt
@ 2010-05-20 9:21 ` Will Deacon
[not found] ` <3319586236559971954@unknownmsgid>
3 siblings, 0 replies; 12+ messages in thread
From: Will Deacon @ 2010-05-20 9:21 UTC (permalink / raw)
To: linux-arm-kernel
Hi Eric,
> +#ifdef CONFIG_SPARSE_IRQ
> +int __init arch_probe_nr_irqs(void)
> +{
> + nr_irqs = arch_nr_irqs ? arch_nr_irqs : NR_IRQS;
> + return 0;
> +}
> +#endif
Possibly a daft question, but if CONFIG_SPARSE_IRQ is
not set, where does nr_irqs get assigned to?
Other than that, looks good to me.
Cheers,
Will
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
[not found] ` <3319586236559971954@unknownmsgid>
@ 2010-05-20 9:25 ` Eric Miao
2010-05-20 10:10 ` Eric Miao
0 siblings, 1 reply; 12+ messages in thread
From: Eric Miao @ 2010-05-20 9:25 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 20, 2010 at 5:21 PM, Will Deacon <will.deacon@arm.com> wrote:
> Hi Eric,
>
>> +#ifdef CONFIG_SPARSE_IRQ
>> +int __init arch_probe_nr_irqs(void)
>> +{
>> + ? ? nr_irqs = arch_nr_irqs ? arch_nr_irqs : NR_IRQS;
>> + ? ? return 0;
>> +}
>> +#endif
>
> Possibly a daft question, but if CONFIG_SPARSE_IRQ is
> not set, where does nr_irqs get assigned to?
>
> Other than that, looks good to me.
>
It's defined as NR_IRQS then.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-20 9:25 ` Eric Miao
@ 2010-05-20 10:10 ` Eric Miao
0 siblings, 0 replies; 12+ messages in thread
From: Eric Miao @ 2010-05-20 10:10 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 20, 2010 at 5:25 PM, Eric Miao <eric.y.miao@gmail.com> wrote:
> On Thu, May 20, 2010 at 5:21 PM, Will Deacon <will.deacon@arm.com> wrote:
>> Hi Eric,
>>
>>> +#ifdef CONFIG_SPARSE_IRQ
>>> +int __init arch_probe_nr_irqs(void)
>>> +{
>>> + ? ? nr_irqs = arch_nr_irqs ? arch_nr_irqs : NR_IRQS;
>>> + ? ? return 0;
>>> +}
>>> +#endif
>>
>> Possibly a daft question, but if CONFIG_SPARSE_IRQ is
>> not set, where does nr_irqs get assigned to?
>>
>> Other than that, looks good to me.
>>
>
> It's defined as NR_IRQS then.
>
Sorry, initialized to NR_IRQS. In kernel/irq/handle.c, around line 72.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-20 8:28 ` Paul Mundt
2010-05-20 8:37 ` Eric Miao
@ 2010-05-21 19:46 ` Russell King - ARM Linux
2010-05-22 3:34 ` Eric Miao
2010-06-25 12:50 ` Eric Miao
1 sibling, 2 replies; 12+ messages in thread
From: Russell King - ARM Linux @ 2010-05-21 19:46 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 20, 2010 at 05:28:53PM +0900, Paul Mundt wrote:
> On Tue, May 18, 2010 at 06:34:49PM +0800, Eric Miao wrote:
> > commit 2e2e087d96630c95dbce57036680cf917e906cf1
> > Author: Eric Miao <eric.y.miao@gmail.com>
> > Date: Mon Dec 28 12:59:59 2009 +0800
> >
> > [ARM] preliminary support for sparse IRQ
> >
> > So to allow NR_IRQS to be dynamic and platforms to specify the number
> > of IRQs really needed.
> >
> > Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
> >
> It would be nice to see this applied, we plan to use sparseirq
> unconditionally for shmobile (as sh already does).
However, it's a little late in the day for patches for this merge
window - which could be over as early as Sunday.
However, if Eric wants to submit it to the patch system, I'll see
about queuing it, but I can't make any promises that it'll get in.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-21 19:46 ` Russell King - ARM Linux
@ 2010-05-22 3:34 ` Eric Miao
2010-06-25 12:50 ` Eric Miao
1 sibling, 0 replies; 12+ messages in thread
From: Eric Miao @ 2010-05-22 3:34 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, May 22, 2010 at 3:46 AM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Thu, May 20, 2010 at 05:28:53PM +0900, Paul Mundt wrote:
>> On Tue, May 18, 2010 at 06:34:49PM +0800, Eric Miao wrote:
>> > commit 2e2e087d96630c95dbce57036680cf917e906cf1
>> > Author: Eric Miao <eric.y.miao@gmail.com>
>> > Date: ? Mon Dec 28 12:59:59 2009 +0800
>> >
>> > ? ? [ARM] preliminary support for sparse IRQ
>> >
>> > ? ? So to allow NR_IRQS to be dynamic and platforms to specify the number
>> > ? ? of IRQs really needed.
>> >
>> > ? ? Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
>> >
>> It would be nice to see this applied, we plan to use sparseirq
>> unconditionally for shmobile (as sh already does).
>
> However, it's a little late in the day for patches for this merge
> window - which could be over as early as Sunday.
>
> However, if Eric wants to submit it to the patch system, I'll see
> about queuing it, but I can't make any promises that it'll get in.
>
I'll send it to your patch tracking system, but we can leave it for the
next merge window. I have some other patches depending on this.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH v2] preliminary support for sparse IRQ
2010-05-21 19:46 ` Russell King - ARM Linux
2010-05-22 3:34 ` Eric Miao
@ 2010-06-25 12:50 ` Eric Miao
1 sibling, 0 replies; 12+ messages in thread
From: Eric Miao @ 2010-06-25 12:50 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, May 22, 2010 at 3:46 AM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Thu, May 20, 2010 at 05:28:53PM +0900, Paul Mundt wrote:
>> On Tue, May 18, 2010 at 06:34:49PM +0800, Eric Miao wrote:
>> > commit 2e2e087d96630c95dbce57036680cf917e906cf1
>> > Author: Eric Miao <eric.y.miao@gmail.com>
>> > Date: ? Mon Dec 28 12:59:59 2009 +0800
>> >
>> > ? ? [ARM] preliminary support for sparse IRQ
>> >
>> > ? ? So to allow NR_IRQS to be dynamic and platforms to specify the number
>> > ? ? of IRQs really needed.
>> >
>> > ? ? Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
>> >
>> It would be nice to see this applied, we plan to use sparseirq
>> unconditionally for shmobile (as sh already does).
>
> However, it's a little late in the day for patches for this merge
> window - which could be over as early as Sunday.
>
> However, if Eric wants to submit it to the patch system, I'll see
> about queuing it, but I can't make any promises that it'll get in.
>
Done, as patch #6197.
Russell,
Guess it's better to merge this into -devel-stable, so other patches can rebase?
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-06-25 12:50 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-05-18 10:34 [RFC PATCH v2] preliminary support for sparse IRQ Eric Miao
2010-05-18 21:45 ` Marek Vasut
2010-05-19 6:53 ` Eric Miao
2010-05-20 8:28 ` Paul Mundt
2010-05-20 8:37 ` Eric Miao
2010-05-20 8:37 ` Paul Mundt
2010-05-21 19:46 ` Russell King - ARM Linux
2010-05-22 3:34 ` Eric Miao
2010-06-25 12:50 ` Eric Miao
2010-05-20 9:21 ` Will Deacon
[not found] ` <3319586236559971954@unknownmsgid>
2010-05-20 9:25 ` Eric Miao
2010-05-20 10:10 ` Eric Miao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.