Bug 2883 - 82855PM: some interrupt links are not routed as I specified in BIOS
Summary: 82855PM: some interrupt links are not routed as I specified in BIOS
Status: REJECTED INVALID
Alias: None
Product: ACPI
Classification: Unclassified
Component: Config-Interrupts (show other bugs)
Hardware: i386 Linux
: P2 low
Assignee: Len Brown
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-06-13 12:20 UTC by Paul Ionescu
Modified: 2007-08-18 10:28 UTC (History)
1 user (show)

See Also:
Kernel Version: 2.6.5
Subsystem:
Regression: ---
Bisected commit-id:


Attachments
full dmesg (22.85 KB, text/plain)
2004-07-22 23:39 UTC, Paul Ionescu
Details
lspci -vv (9.88 KB, text/plain)
2004-07-22 23:40 UTC, Paul Ionescu
Details
output of acpidmp (216.73 KB, text/plain)
2004-07-22 23:41 UTC, Paul Ionescu
Details

Description Paul Ionescu 2004-06-13 12:20:19 UTC
Distribution:
FC2

Hardware Environment:
IBM T41/R50p

Software Environment:
FC2 Full install

Problem Description:
some  interrupt links are not routed as I specified in BIOS

Steps to reproduce:
I specify in BIOS like this
[LNKA] = IRQs 10 
[LNKB] = IRQs 3
[LNKC] = IRQs 4
[LNKD] = IRQs 5
[LNKE] = IRQs 6
[LNKF] = IRQs 7
[LNKG] = IRQs 11
[LNKH] = IRQs 11 

When booting, ACPI says like this:

ACPI: Using PIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 *10 11)
ACPI: PCI Interrupt Link [LNKB] (IRQs *3 4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 *4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)

So it seems it cannot map LINK[e,f,g] to IRQ values i specified in BIOS.
The same happens if I boot with pci=noacpi.

This means that some devices are sharing some irq, and I don't want that.
Can this be changed ? 
Can I mannualy allocate irq x to LNK y  thru a kernel parameter ?
Comment 1 Shaohua 2004-06-13 17:42:50 UTC
why do you want allocate an IRQ to LNKE? if LNKE has no active IRQ, this means 
no PCI devices use LNKE. If one PCI device does use LNKE, ACPI will assign an 
IRQ to LNKE.
Comment 2 Paul Ionescu 2004-06-16 14:32:47 UTC
Well,
Right now I have some devices sharing IRQ as you can see in:

cat /proc/interrupts 
           CPU0       
  0:   13596725          XT-PIC  timer
  1:      26695          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  3:          0          XT-PIC  Intel 82801DB-ICH4
  4:          0          XT-PIC  uhci_hcd
  5:          0          XT-PIC  uhci_hcd
  8:          1          XT-PIC  rtc
  9:       1827          XT-PIC  acpi
 10:     762076          XT-PIC  uhci_hcd, eth0, radeon@PCI:1:0:0
 12:     776798          XT-PIC  i8042
 14:      53842          XT-PIC  ide0
 15:       2263          XT-PIC  ide1

So I wanted to manualy specify the IRQ for eth0 to be 11.
If I put in BIOS LNKF pointing to IRQ 11, nothing happens.
It is true that the eth0 is on another PCI bus.
Maybe what I want is not possible, but I don't know then why do I have that
option in BIOS.
Comment 3 Paul Ionescu 2004-06-16 14:35:14 UTC
The main reason I don't want to share IRQ, is because when I resume from S3, I
experience some interrupt instabilities.
So I tried to keep each device with his IRQ and not sharing them.
If, for instance something goes wrong with the USB, then it will not affect
other devices.
Comment 4 Paul Ionescu 2004-06-16 14:38:14 UTC
Now I booted 2.6.7-rc3 and I have:

ACPI: Using PIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 *10 11)
ACPI: PCI Interrupt Link [LNKB] (IRQs *3 4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 *4 5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 6 7 9 10 11)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
PCI: Transparent bridge - 0000:00:1e.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: Embedded Controller [EC] (gpe 28)
ACPI: Power Resource [PUBS] (on)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]
Comment 5 Len Brown 2004-06-23 23:12:14 UTC
please attache the output from lspci -vv
please attach the *complete* dmesg
Comment 6 Len Brown 2004-06-23 23:13:39 UTC
oh, and also we'll need the output from acpidmp,
available in /usr/sbin or in pmtools:
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/utils/
Comment 7 Paul Ionescu 2004-07-22 23:39:23 UTC
Created attachment 3418 [details]
full dmesg

I changed to kernel 2.6.8-rc2 with latest acpi patch as you can see from dmesg
Comment 8 Paul Ionescu 2004-07-22 23:40:09 UTC
Created attachment 3419 [details]
lspci -vv
Comment 9 Paul Ionescu 2004-07-22 23:41:12 UTC
Created attachment 3420 [details]
output of acpidmp
Comment 10 Len Brown 2004-11-14 20:49:48 UTC
any change with 2.6.9? 
Comment 11 Len Brown 2005-01-03 15:06:34 UTC
any change with linux 2.6.10?
Comment 12 Paul Ionescu 2005-01-23 12:01:30 UTC
Hi Len,

No change yet.
Tested with 2.6.9, 2.6.10, 2.6.11rc2
Comment 13 Len Brown 2007-08-18 10:28:00 UTC
The reason that LNKE, LNKF, LNKG are not set as specified
in BIOS SETUP is because they are unused
and are disabled.  The dmesg from the latest kernel should
have the word "disabled" on those links.

Note that it is not possible to change the association
of devices to Interrupt Links, for that reflects physical
wires on the motherboard.  This association can only be
changed when you can physically move a device to another slot.

On this machine, the following devices are physically tied to LNKA:

            Device (AGP)
            {
                Name (_ADR, 0x00010000)
                Name (_PRT, Package (0x02)
                {
                    Package (0x04)
                    {
                        0xFFFF,
                        0x00,
                        \_SB.LNKA,
                        0x00
                    },

int-A of your graphics (PCI bus 1, device 0)

                Package (0x04)
                {
                    0x001DFFFF,
                    0x00,
                    \_SB.LNKA,
                    0x00
                },

USB Universal Host Controller Interface driver v2.2
ACPI: PCI interrupt 0000:00:1d.0[A] -> GSI 10 (level, low) -> IRQ 10

            Device (PCI1)
            {
                Name (_ADR, 0x001E0000)
                Name (_PRT, Package (0x0D)
                {
                    Package (0x04)
                    {
                        0xFFFF,
                        0x00,
                        \_SB.LNKA,
                        0x00
                    },

int-A of device 0 on PCI bus 2 

                    Package (0x04)
                    {
                        0x0001FFFF,
                        0x00,
                        \_SB.LNKA,
                        0x00
                    },

Intel(R) PRO/1000 Network Driver - version 5.2.52-k4
Copyright (c) 1999-2004 Intel Corporation.
ACPI: PCI interrupt 0000:02:01.0[A] -> GSI 10 (level, low) -> IRQ 10

                    Package (0x04)
                    {
                        0x0002FFFF,
                        0x02,
                        \_SB.LNKA,
                        0x00
                    },

int-C of device 2
                    Package (0x04)
                    {
                        0x0004FFFF,
                        0x02,
                        \_SB.LNKA,
                        0x00
                    },

int-C of device 4
                Device (DOCK)
                {
                    Name (_ADR, 0x00030000)
                    Name (_S3D, 0x02)
                    Name (_PRT, Package (0x06)
                    {
                        Package (0x04)
                        {
                            0xFFFF,
                            0x00,
                            \_SB.LNKA,
                            0x00
                        },

int-A of device 0 on the dock device

> 10:     762076          XT-PIC  uhci_hcd, eth0, radeon@PCI:1:0:0

In summary, you'll be able to move these three devices around, 
but you'll not be able to split them from each other.
Linux is working properly here, and the machine is working
as it was designed -- though one might wish that it were designed
with less interrupt wire sharing...

BTW. a more recent kernel would illustrate this better
in dmesg, as the links that are used for each device are
specified when the device interrupt is configured.

Note You need to log in before you can comment on or make changes to this bug.