> 1.Why aren't the BIOS assigned IRQS respected by the IO-Apic code? Is
> there a fundamental reason or it's just more practical doing it this
> way.

APICs are Intel's way of escaping from 16 interrupts per motherboard.  With 
the APICs enabled you can have up to 254 interrupts.

The `bios assigned values' you refer to are the PIC values.  the APIC code 
also uses bios assigned values, it just picks them up from a different place 
(the MP table).

> 3. For what I can see the the bios32.c code that initializes the PCI
> Hardware gets it's IRQ values from "mp_irqs[i].mpc_dstirq" in
> "io_apic.c" wich is totally unrelated with "pirq". Where is this
> initialized? (I couldn't find it anywhere) Is it safe to change this
> values making use of the pirq values at an early point (where?).

pirq values were an old way of specifying where the PCI interrupts go.  In 
order to utilise the APICs correctly, the OS must be able to find the new 
interrupt values.  These are encoded in the MP table in the bios area.  If 
your computer has a buggy bios you can override this with pirq values, but it 
shouldn't be necessary.

> I changed this values in the call to "irq_2_pin". The computer booted
> with my intend irq values but some programs slowed down to a crawl or
> just crashed (the kernel it self is up and running).

The MP interrupt values are read only.  The bios is telling the kernel what it 
has done, the kernel isn't allowed to change them.  It can either accept the 
values and start symmetric IO mode (use the APICs) or reject them and continue 
in XT-PIC mode.

If you want to use pirq, you must know what values the bios has picked and 
tell the kernel, you can't use pirq to assign arbitrary values.

All of this is detailed in the MP specification which is available from:

ftp://download.intel.com/design/pro/datashts/24201606.pdf

James Bottomley


-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/mentre/smp-faq/
To Unsubscribe: send "unsubscribe linux-smp" to [EMAIL PROTECTED]

Reply via email to