* ACPI SCI IOAPIC bug (Re: Fixes for nforce2 hard lockup, apic, io-apic, udma133 covered)
[not found] <BF1FE1855350A0479097B3A0D2A80EE0023ED17F@hdsmsx402.hd.intel.com>
@ 2004-02-14 2:31 ` Len Brown
2004-02-18 17:43 ` Maciej W. Rozycki
0 siblings, 1 reply; 4+ messages in thread
From: Len Brown @ 2004-02-14 2:31 UTC (permalink / raw)
To: Maciej W. Rozycki
Cc: Ross Dickson, linux-kernel, AMartin, kernel, Ian Kumlien
On Thu, 2003-12-11 at 10:15, Maciej W. Rozycki wrote:
> On Thu, 11 Dec 2003, Ross Dickson wrote:
> > ACPI: INT_SRC_OVR (bus[0] irq[0x9] global_irq[0x9] polarity[0x1]
> trigger[0x3])
> > Int: type 0, pol 1, trig 3, bus 0, irq 9, 2-9
>
> ...
>
> > IRQ to pin mappings:
...
> > IRQ9 -> 0:9-> 0:9
>
> ... wrong -- the interrupts are set up as if they were
> connected to multiple I/O APIC inputs.
Maciej,
You're right. This bug is in mp_config_ioapic_for_sci(), which calls
io_apic_set_pci_routing(), which uncondnitionally calls
add_pin_to_irq(). Problem is that this IRQ has already been initialized
back in setup_IO_APIC_irqs().
Clearly in this case we shouldn't be calling io_apic_set_pci_routing()
at all. But I've got to look more closely at the case where the SCI is
not identity mapped before simply ripping it out.
thanks,
-Len
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ACPI SCI IOAPIC bug (Re: Fixes for nforce2 hard lockup, apic, io-apic, udma133 covered)
2004-02-14 2:31 ` Len Brown
@ 2004-02-18 17:43 ` Maciej W. Rozycki
0 siblings, 0 replies; 4+ messages in thread
From: Maciej W. Rozycki @ 2004-02-18 17:43 UTC (permalink / raw)
To: Len Brown; +Cc: Ross Dickson, linux-kernel, AMartin, kernel, Ian Kumlien
On Sat, 13 Feb 2004, Len Brown wrote:
> > > ACPI: INT_SRC_OVR (bus[0] irq[0x9] global_irq[0x9] polarity[0x1]
> > trigger[0x3])
> > > Int: type 0, pol 1, trig 3, bus 0, irq 9, 2-9
> >
> > ...
> >
> > > IRQ to pin mappings:
> ...
> > > IRQ9 -> 0:9-> 0:9
> >
> > ... wrong -- the interrupts are set up as if they were
> > connected to multiple I/O APIC inputs.
>
> Maciej,
> You're right. This bug is in mp_config_ioapic_for_sci(), which calls
> io_apic_set_pci_routing(), which uncondnitionally calls
> add_pin_to_irq(). Problem is that this IRQ has already been initialized
> back in setup_IO_APIC_irqs().
Note that if changing an I/O APIC input was indeed needed, the
replace_pin_at_irq() function could be used.
> Clearly in this case we shouldn't be calling io_apic_set_pci_routing()
> at all. But I've got to look more closely at the case where the SCI is
> not identity mapped before simply ripping it out.
I still wonder why these arrangements are made so late in a boot -- after
all, ACPI IRQ configuration is table-driven and does not require any
specific hardware initialization to work. So it could be done at the
stage MP-table parsing happens, couldn't it?
Maciej
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ACPI SCI IOAPIC bug (Re: Fixes for nforce2 hard lockup, apic, io-apic, udma133 covered)
[not found] <A6974D8E5F98D511BB910002A50A6647615F0C10@hdsmsx402.hd.intel.com>
@ 2004-03-31 22:19 ` Len Brown
2004-04-01 11:52 ` Maciej W. Rozycki
0 siblings, 1 reply; 4+ messages in thread
From: Len Brown @ 2004-03-31 22:19 UTC (permalink / raw)
To: Maciej W. Rozycki
Cc: Ross Dickson, linux-kernel, AMartin, kernel, Ian Kumlien
On Wed, 2004-02-18 at 12:43, Maciej W. Rozycki wrote:
> Note that if changing an I/O APIC input was indeed needed, the
> replace_pin_at_irq() function could be used.
Why is it that all IRQs get their name from the
IOAPIC pin number, but the timer connected to
pin 2 is called IRQ0 instead of IRQ2?
Are there other exceptions to this rule,
or is all the code for re-naming IRQs & pins
effectively just for the timer?
I wonder if we should't be moving to at least a build option which
deletes support for multiple pins at an IRQ, and deletes
suport for non-identity pin->IRQ mapping.
> I still wonder why these arrangements are made so late in a boot --
> after
> all, ACPI IRQ configuration is table-driven and does not require any
> specific hardware initialization to work. So it could be done at the
> stage MP-table parsing happens, couldn't it?
While the ACPI table parsing is very early, the _PRT parsing
can happen only after the ACPI interpreter is up, because
the _PRT's are encoded in AML.
thanks,
-Len
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ACPI SCI IOAPIC bug (Re: Fixes for nforce2 hard lockup, apic, io-apic, udma133 covered)
2004-03-31 22:19 ` ACPI SCI IOAPIC bug (Re: Fixes for nforce2 hard lockup, apic, io-apic, udma133 covered) Len Brown
@ 2004-04-01 11:52 ` Maciej W. Rozycki
0 siblings, 0 replies; 4+ messages in thread
From: Maciej W. Rozycki @ 2004-04-01 11:52 UTC (permalink / raw)
To: Len Brown; +Cc: Ross Dickson, linux-kernel, AMartin, kernel, Ian Kumlien
On Thu, 31 Mar 2004, Len Brown wrote:
> Why is it that all IRQs get their name from the
> IOAPIC pin number, but the timer connected to
> pin 2 is called IRQ0 instead of IRQ2?
ISA interrupts get their numbers from 8259A IRQ numbers they would be
routed to in the PIC mode. This lets the code operate in the mixed mode
sanely (which happens for certain hardware), although it's not necessarily
the reason for the numbering used. Note that the MP Specification does
not mandate an identity map of ISA interrupts, although it seems to be
what vendors do.
Also note that depending on the configuration, the timer can effectively
be routed to INTIN2 or INTIN0 by Linux -- one of the alternatives being a
direct connection and the other one being done through the 8259A
configured to be transparent for its IRQ 0.
> I wonder if we should't be moving to at least a build option which
> deletes support for multiple pins at an IRQ, and deletes
> suport for non-identity pin->IRQ mapping.
This can't be done for the timer due to configuration variations.
> While the ACPI table parsing is very early, the _PRT parsing
> can happen only after the ACPI interpreter is up, because
> the _PRT's are encoded in AML.
Hmm, that's unfortunate. Couldn't the interpreter be started earlier?
Maciej
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-04-01 11:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <A6974D8E5F98D511BB910002A50A6647615F0C10@hdsmsx402.hd.intel.com>
2004-03-31 22:19 ` ACPI SCI IOAPIC bug (Re: Fixes for nforce2 hard lockup, apic, io-apic, udma133 covered) Len Brown
2004-04-01 11:52 ` Maciej W. Rozycki
[not found] <BF1FE1855350A0479097B3A0D2A80EE0023ED17F@hdsmsx402.hd.intel.com>
2004-02-14 2:31 ` Len Brown
2004-02-18 17:43 ` Maciej W. Rozycki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox