RE: PCI interrupt queries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Rene,

Thanks for the reply.

> On 19-08-08 07:11, Rajat Jain wrote:
> 
>> I want to understand who decides the IRQ number that a agiven PCI
>> card will use. I understand that from a PCI device drivers point of
>> view, it'll find the IRQ vector that it needs to attach by reading
>> it from the configuration space of the device.
> 
> Actually, a quick look at struct pci_dev suggests you should
> be using pci_dev->irq. Note sure why that is; maybe odd
> bridged setups.
> 

Where in source code is pci_dev->irq getting populated? I tried but
could not exactly locate it...

> 
>> 1) My first question is WHO writes that IRQ value in the device
>> configuration space? Is it hardwired on the card? Is it written by
>> the PCI controller driver or some other kernel component? Or some
>> other piece of software takes care of it?
> 
> The thing hardwired on the card is the interrupt PIN(s) it
> uses; A, B, C and/or D (one pin per device and thus per
> config space). The thing that writes the LINE value into the
> register is generally the BIOS; being motherboard specific it
> knows which IRQ line it is that pin X (A, B, C or D) from
> slot N is routed to and it writes those values back into the device.
> 

OK. But who does it in an embedded environment (PPC for eg) where there
is no POST software. The first piece of code that gets executed is
U-boot and then the kernel. So who writes the LINE value into the config
space?

> 
>> 2) Secondly, irrespective of whoever writes it, what determines the
>> irq vector VALUE that will be written? So given that a PCI card uses
>> PCI INTA, what determines the IRQ vector associated with it? My
>> understanding is that the board specifications say something like
>> "The INTA from this PCI slot goes to IRQx input of interrupt
>> controller". And then from interrupt controller dosument we can find
>> out which IRQ vector is associated with input IRQx. Is this right?
> 
> That's the basic form but in reality things are not hardwired
> on the motherboard either; there's a programmable interrupt
> router (part of the PCI chipset) between the lines coming
> from the bus and the lines going into the interrupt
> controller that enables software control of the routing.
> 

Thanks, I got it.

> 
>> 3) Lastly, if we boot linux and a different OS, on the same board
>> with the same PCI card plugged in, are they bound to use the same
>> IRQ number? Why or why not?
> 
> Not bound then. The programmable interrupt router could be
> set up differently.

Ok. Thanks.

Thank you very much for the informative reply,

Rajat
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

[Index of Archives]     [Audio]     [Hams]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Fedora Users]

  Powered by Linux