mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: "Randy.Dunlap" <rdunlap@xenotime.net>
Cc: ak@suse.de, len.brown@intel.com, Natalie.Protasevich@unisys.com,
	sergio@sergiomb.no-ip.org, kimball.murray@gmail.com,
	linux-kernel@vger.kernel.org, akpm@digeo.com, kmurray@redhat.com,
	linux-acpi@vger.kernel.org
Subject: Re: [RFC][PATCH] Document what in IRQ is.
Date: Wed, 03 May 2006 20:48:27 -0600	[thread overview]
Message-ID: <m1mzdy7bes.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <20060503170155.e8e9a92b.rdunlap@xenotime.net> (Randy Dunlap's message of "Wed, 3 May 2006 17:01:55 -0700")

"Randy.Dunlap" <rdunlap@xenotime.net> writes:

> On Tue, 02 May 2006 07:52:22 -0600 Eric W. Biederman wrote:
>
>> Andi Kleen <ak@suse.de> writes:
>> 
>> > P.S.: There seems to be a lot of confusion about all this.
>> > Maybe it would make sense to do a write up defining all the terms
>> > and stick it into Documentation/* ? 
>> 
>> How does this look?
>> 
>> I am pretty horrible when it comes to Documentation,
>> but this seems to be the essence of what I was saying earlier.
>> 
>> Eric
>> 
>> 
>> diff --git a/Documentation/IRQ.txt b/Documentation/IRQ.txt
>> new file mode 100644
>> index 0000000..5340369
>> --- /dev/null
>> +++ b/Documentation/IRQ.txt
>> @@ -0,0 +1,22 @@
>> +What is an IRQ?
>> +
>> +An IRQ is an interrupt request from a device.
>> +Currently they can come in over a pin, or over a packet.
>
> No comma.  Change packet to message?

Sounds good.

>> +IRQs at the source can be shared.
>
> Huh?  That simple sentence confuses me.  Should "source" really be
> "sink" or "destination"?  Or maybe say "IRQs at an interrupt controller
> can be shared."  Or is that too hardware-specific?
> Anyway, what source is meant here?  It doesn't mean that IRQs
> at the producer device can be shared, right?  It's more at the
> consumer device where they can be shared.

By source I was thinking at the irq controller pin. 

Interrupts are usually thrown from interrupt controllers to
something in the chipset that interrupts the cpu, giving the
cpu a token (ie an interrupt vector) that uniquely identifies
which interrupt source threw the interrupt.

Linux does not have generic infrastructure to allow two interrupt
sources to share the same token passed to the kernel. 

In addition there are good reasons on some systems to change the 
token dynamically, (say to point the IRQ at a different CPU).  So
no generic code in the code should know about the token the cpu
receives.  The fact that msi.c actually knows about that token
today makes is inflexible and maintenance problem.

I guess I need to figure out how to work this additional information
into my documentation then.

>> +An IRQ number is a kernel identifier used to talk about a hardware
>> +interrupt source.  Typically this is an index into the global irq_desc
>> +array, but except for what linux/interrupt.h implements the details
>> +are architecture specific.
>> +
>> +An IRQ number is an enumeration of the possible interrupt sources on a
>> +machine.  Typically what is enumerated is the number of input pins on
>> +all of the interrupt controller in the system.  In the case of ISA
>                         controllers
>> +what is enumerated are the 16 input pins to the pair of i8259
>                       is
>> +interrupt controllers.
>> +
>> +Architectures can assign additional meaning to the IRQ numbers, and
>> +are encouraged to in the case  where there is any manual configuration
>> +of the hardware involved.  The ISA IRQ case on x86 where anyone who
>> +has been around a while can tell you how the first 16 IRQs map to the
>                    awhile
>> +input pins on a pair of i8259s is the classic example.

Eric


  reply	other threads:[~2006-05-04  2:49 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-02  7:41 [(repost) git Patch 1/1] avoid IRQ0 ioapic pin collision Brown, Len
2006-05-02  7:46 ` Andi Kleen
2006-05-02 13:52   ` [RFC][PATCH] Document what in IRQ is Eric W. Biederman
2006-05-04  0:01     ` Randy.Dunlap
2006-05-04  2:48       ` Eric W. Biederman [this message]
2006-05-02  8:33 ` [(repost) git Patch 1/1] avoid IRQ0 ioapic pin collision Eric W. Biederman
2006-05-04  5:42 [RFC][PATCH] Document what in IRQ is Brown, Len

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=m1mzdy7bes.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=rdunlap@xenotime.net \
    --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

all inboxes | Powered by JetHome®