mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Andi Kleen <ak@suse.de>
Cc: "Brown, Len" <len.brown@intel.com>,
	"Protasevich, Natalie" <Natalie.Protasevich@unisys.com>,
	sergio@sergiomb.no-ip.org,
	"Kimball Murray" <kimball.murray@gmail.com>,
	linux-kernel@vger.kernel.org, akpm@digeo.com, kmurray@redhat.com,
	linux-acpi@vger.kernel.org
Subject: Re: [(repost) git Patch 1/1] avoid IRQ0 ioapic pin collision
Date: Tue, 02 May 2006 00:57:59 -0600	[thread overview]
Message-ID: <m1d5ewap6w.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <200605020814.49144.ak@suse.de> (Andi Kleen's message of "Tue, 2 May 2006 08:14:48 +0200")

Andi Kleen <ak@suse.de> writes:

>> >- Modify do_IRQ to get passed an interrupt vector# from the
>> >  interrupt vector instead of an irq number, and then lookup
>> >  the irq number in vector_irq.  This means we don't need
>> >  a code stub per irq, and allows us to handle more irqs
>> >  by simply increasing NR_IRQS.
>> 
>> isn't the vector number already on the stack from
>> ENTRY(interrupt)
>> 	pushl $vector-256
>
> Yes - and interrupts/vectors are currently always identical. 

No.  At best there is a fixed offset.  They can't be
identical because the first 32 vectors are reserved,
for processor exceptions.  

Beyond that the kernel would not need the vector_irq and irq_vector
arrays if they were always identical, or even if they were one to one.

If you look at assign_irq_vector you will see that by default we
allocate every 8th vector.  Looking at the comment in
init_IO_APIC_traps() this seems to be because we want to avoid
apic bugs with multiple interrupts of the same priority.
Although why we skip 8 instead of 16 is beyond me.

> If we go
> to per CPU IDTs I suspect the stubs will just need to be generated
> at runtime and start passing interrupts.

If we can generate the stubs at run time that will remove my
biggest problem with them, that we can't easily make the number
of stubs track NR_IRQS.  Not needing an extra table lookup is
certainly desirable, and probably worth the extra 4-8 bytes that a stub
is larger that a per cpu table entry.

Although now that I think about it, using some assembler macros
instead of cpp macros could probably solve the problem more easily
than generating the stubs at runtime.  I think the worst case is
256 cpus * 32 irqs per cpu * 10 bytes per stub = 80K.

At 8 cpus we are about where we are now.

Eric

  reply	other threads:[~2006-05-02  6:58 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-01 23:21 Brown, Len
2006-05-02  6:14 ` Andi Kleen
2006-05-02  6:57   ` Eric W. Biederman [this message]
2006-05-02  7:11     ` Andi Kleen
2006-05-02  7:39       ` Eric W. Biederman
2006-05-02  6:24 ` Eric W. Biederman
  -- strict thread matches above, loose matches on Subject: below --
2006-05-09  5:14 Protasevich, Natalie
2006-05-09  4:25 Brown, Len
2006-05-09  3:10 Protasevich, Natalie
2006-05-08 21:51 Brown, Len
2006-05-08 18:37 Protasevich, Natalie
2006-05-06  6:42 Protasevich, Natalie
2006-05-06  6:18 Brown, Len
2006-05-04 16:42 Protasevich, Natalie
2006-05-04 16:04 Brown, Len
2006-05-04 22:41 ` Eric W. Biederman
2006-05-04 15:33 Brown, Len
2006-05-04  5:07 Brown, Len
2006-05-04 15:31 ` Eric W. Biederman
2006-05-02 23:52 Protasevich, Natalie
2006-05-02  7:41 Brown, Len
2006-05-02  7:46 ` Andi Kleen
2006-05-02  8:33 ` Eric W. Biederman
2006-04-27 20:36 Protasevich, Natalie
2006-04-30 23:17 ` Eric W. Biederman
2006-04-27 19:32 Brown, Len
2006-04-27 19:26 Protasevich, Natalie
2006-04-27 19:10 Protasevich, Natalie
2006-04-27 19:13 ` Andi Kleen
2006-04-27 18:13 Brown, Len
2006-04-27 18:16 ` Andi Kleen
2006-04-26 14:00 Protasevich, Natalie
2006-04-25 19:53 Brown, Len
2006-04-26 12:58 ` Sergio Monteiro Basto
2006-04-26 13:17 ` Andi Kleen
2006-04-26 13:56   ` Kimball Murray
2006-04-26 14:01     ` Kimball Murray
2006-04-25 16:06 Kimball Murray
2006-04-26 11:27 ` Andi Kleen

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=m1d5ewap6w.fsf@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=Natalie.Protasevich@unisys.com \
    --cc=ak@suse.de \
    --cc=akpm@digeo.com \
    --cc=kimball.murray@gmail.com \
    --cc=kmurray@redhat.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sergio@sergiomb.no-ip.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome