All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Travis <travis@sgi.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Ingo Molnar <mingo@redhat.com>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Yinghai Lu <yinghai@kernel.org>, Jack Steiner <steiner@sgi.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] irq: initialize nr_irqs based on nr_cpu_ids
Date: Sat, 10 Jan 2009 18:00:17 -0800	[thread overview]
Message-ID: <496952B1.5070303@sgi.com> (raw)
In-Reply-To: <20090110225010.GD17917@elte.hu>

Ingo Molnar wrote:
> * Mike Travis <travis@sgi.com> wrote:
> 
>> Impact: Reduce memory usage.
>>
>> This is the second half of the changes to make the irq_desc_ptrs be
>> variable sized based on nr_cpu_ids.  The algorithm is the same as the
>> setting of NR_IRQS except use nr_cpu_ids instead of NR_CPUS.  This is
>> only when CONFIG_SPARSE_IRQS=y.
>>
>> Signed-off-by: Mike Travis <travis@sgi.com>
>> ---
>>  kernel/irq/handle.c |    5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> Files linux-2.6-for-ingo.orig/kernel/irq/.handle.c.swp and linux-2.6-for-ingo/kernel/irq/.handle.c.swp differ
>> --- linux-2.6-for-ingo.orig/kernel/irq/handle.c
>> +++ linux-2.6-for-ingo/kernel/irq/handle.c
>> @@ -133,6 +133,11 @@ int __init early_irq_init(void)
>>  	int legacy_count;
>>  	int i;
>>  
>> +	/* initialize nr_irqs based on nr_cpu_ids */
>> + 	nr_irqs =  (8 * nr_cpu_ids) > (32 * MAX_IO_APICS) ?
>> + 			NR_VECTORS + (8 * nr_cpu_ids) :
>> + 			NR_VECTORS + (32 * MAX_IO_APICS);
>> +
> 
> this will break non-x86. Please move this to the x86 early-irq-init 
> function instead, and also sync it up with the current NR_IRQS sizing 
> macro.
> 
> I.e. do not duplicate the numbers but introduce some sort of 
> max_nr_irqs(nr_cpus) define that is used to initialize NR_IRQS and also 
> used later on to narrow down nr_irqs later on.

The way it is laid out is:

kernel/softirq.c:

	int __init __weak early_irq_init(void)
	{
        	return 0;
	}

kernel/irq/handle.c:

	#ifdef CONFIG_SPARSE_IRQ
	:
	struct irq_desc **irq_desc_ptrs __read_mostly;
	:
	int __init early_irq_init(void)
	{
		:
		nr_irqs = ...

	#else
	:
	struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = {
	:
	int __init early_irq_init(void)
	{
		<don't set nr_irqs>

So I don't see an x86 specific early_irq_init.

Since NR_IRQS is defined in a lot of different ways (in different places),
I think I'll have to do something like;

arch/x86/include/asm/irq_vectors.h:
	
	#define max_nr_irqs(nr_cpus)	\

include/linux/irqnr.h:

	#ifndef max_nr_irqs
	#define max_nr_irqs(unused)	NR_IRQS
	#endif

Would that work for you?

Thanks,
Mike


  parent reply	other threads:[~2009-01-11  2:00 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-10 22:38 [PATCH 0/4] irq: change irq_desc and kstat_irq_legacy to variable sized arrays Mike Travis
2009-01-10 22:38 ` [PATCH 1/4] irq: change references from NR_IRQS to nr_irqs Mike Travis
2009-01-10 22:45   ` Ingo Molnar
2009-01-10 23:10     ` Mike Travis
2009-01-11  1:06       ` Ingo Molnar
2009-01-10 22:38 ` [PATCH 2/4] irq: allocate irq_desc_ptrs array based on nr_irqs Mike Travis
2009-01-10 22:47   ` Ingo Molnar
2009-01-10 23:03     ` Mike Travis
2009-01-11  1:06       ` Ingo Molnar
2009-01-10 22:38 ` [PATCH 3/4] irq: initialize nr_irqs based on nr_cpu_ids Mike Travis
2009-01-10 22:50   ` Ingo Molnar
2009-01-10 23:20     ` Mike Travis
2009-01-11  1:07       ` Ingo Molnar
2009-01-11  2:00     ` Mike Travis [this message]
2009-01-10 22:38 ` [PATCH 4/4] kstat: modify kstat_irqs_legacy to be variable sized Mike Travis
2009-01-10 22:52   ` Ingo Molnar
2009-01-10 23:08     ` Mike Travis
2009-01-11  1:08       ` Ingo Molnar
2009-01-11  4:32         ` Mike Travis
2009-01-11  7:01   ` Yinghai Lu
2009-01-11 12:17     ` Ingo Molnar
2009-01-11 17:50       ` Mike Travis
2009-01-11 17:40     ` Mike Travis
2009-01-11 17:48       ` Mike Travis
2009-01-10 22:43 ` [PATCH 0/4] irq: change irq_desc and kstat_irq_legacy to variable sized arrays Ingo Molnar
2009-01-11  0:15   ` Mike Travis
2009-01-11  1:10     ` Ingo Molnar
2009-01-11  1:19       ` Mike Travis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=496952B1.5070303@sgi.com \
    --to=travis@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@redhat.com \
    --cc=rusty@rustcorp.com.au \
    --cc=steiner@sgi.com \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.