From: Mike Travis <travis@sgi.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Andrew Morton <akpm@linux-foundation.org>,
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 4/4] kstat: modify kstat_irqs_legacy to be variable sized
Date: Sat, 10 Jan 2009 15:08:00 -0800 [thread overview]
Message-ID: <49692A50.7010402@sgi.com> (raw)
In-Reply-To: <20090110225229.GE17917@elte.hu>
Ingo Molnar wrote:
> * Mike Travis <travis@sgi.com> wrote:
>
>> Impact: reduce memory usage.
>>
>> Allocate kstat_irqs_legacy based on nr_cpu_ids to deal with this
>> memory usage bump when NR_CPUS bumped from 128 to 4096:
>>
>> 8192 +253952 262144 +3100% kstat_irqs_legacy(.bss)
>>
>> This is only when CONFIG_SPARSE_IRQS=y.
>>
>> Signed-off-by: Mike Travis <travis@sgi.com>
>> ---
>> kernel/irq/handle.c | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> --- linux-2.6-for-ingo.orig/kernel/irq/handle.c
>> +++ linux-2.6-for-ingo/kernel/irq/handle.c
>> @@ -124,8 +124,7 @@ static struct irq_desc irq_desc_legacy[N
>> }
>> };
>>
>> -/* FIXME: use bootmem alloc ...*/
>> -static unsigned int kstat_irqs_legacy[NR_IRQS_LEGACY][NR_CPUS];
>> +static unsigned int *kstat_irqs_legacy;
>>
>> int __init early_irq_init(void)
>> {
>> @@ -146,9 +145,13 @@ int __init early_irq_init(void)
>> /* allocate irq_desc_ptrs array based on nr_irqs */
>> irq_desc_ptrs = alloc_bootmem(nr_irqs * sizeof(void *));
>>
>> + /* allocate based on nr_cpu_ids */
>> + kstat_irqs_legacy = alloc_bootmem(NR_IRQS_LEGACY * nr_cpu_ids *
>> + sizeof(int));
>> +
>> for (i = 0; i < legacy_count; i++) {
>> desc[i].irq = i;
>> - desc[i].kstat_irqs = kstat_irqs_legacy[i];
>> + desc[i].kstat_irqs = kstat_irqs_legacy + i * NR_IRQS_LEGACY;
>> lockdep_set_class(&desc[i].lock, &irq_desc_lock_class);
>> init_alloc_desc_masks(&desc[i], 0, true);
>> irq_desc_ptrs[i] = desc + i;
>
> btw., while at it - dont we want to upgrade this to a 'long' (in a
> separate commit)? Having more than 4 billion irqs after bootup is easily
> possible.
>
> Ingo
Yes, I can do that. There are two places where it allocated, both for
legacy and dynamically added desc's.
You want basically this, yes?
--- linux-2.6-for-ingo.orig/include/linux/irq.h
+++ linux-2.6-for-ingo/include/linux/irq.h
@@ -162,7 +162,7 @@ struct irq_desc {
unsigned int irq;
#ifdef CONFIG_SPARSE_IRQ
struct timer_rand_state *timer_rand_state;
- unsigned int *kstat_irqs;
+ unsigned long *kstat_irqs;
# ifdef CONFIG_INTR_REMAP
struct irq_2_iommu *irq_2_iommu;
# endif
Thanks,
Mike
next prev parent reply other threads:[~2009-01-10 23:08 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
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 [this message]
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=49692A50.7010402@sgi.com \
--to=travis@sgi.com \
--cc=akpm@linux-foundation.org \
--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.