ACPI Problems: IRQ conflicts on USB controllers and SATA controller

Erik Norgaard norgaard at locolomo.org
Thu Oct 12 13:09:01 UTC 2006


Hi:

I have previously written about my buggy Sony VAIO (FJ3S) and some 
problems was resolved.

In brief:

I have IRQ conflicts on the USB controllers causing two controllers to 
be non-functional:

uhci0 at pci0:29:0: IRQ 5
uhci1 at pci0:29:1: IRQ 10
uhci2 at pci0:29:2: IRQ 255
uhci3 at pci0:29:3: IRQ 255
ehci0 at pci0:29:7: IRQ 5

Further USB devices are slow or not found, it takes 30 seconds before 
da0s1 on a USB stick appears among the devices, and it may not be mountable.

Also, atapci0 at pci0:31:2 Intel Corporation 82801FBM (ICH6M) SATA 
Controller seems to cause an IRQ storm on IRQ 9 and is disabled. (wonder 
how I can boot then).

I believe this relates to the IRQ problems. How do I manually assign 
IRQ's to these? Which IRQ's should I assign?


Background:

ACPI and APIC conflicts on this hardware, /if/ system successfully boots 
it grinds almost to a halt with 85% interrupt activity. Disabling apic 
solves the problem.

Booting with apic disabled, /if/ successful, the system freezes after a 
while, but all devices are configured, there is still some 3.5% 
interrupt activity. Disabling acpi pci_link solves the issue.

There remains interrupt conflicts and interrupt storms: The wireless iwi 
card caused interrupt storm on IRQ 5, this has been resolved by setting 
it manually in loader.conf.


The problem:

USB Controllers:

As described above, two of the 4 UCHI controllers are not assigned IRQ's 
when pci_link is disabled (dmesg):

uhci2: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-C> at
     device 29.2 on pci0
uhci2: Could not allocate irq
device_attach: uhci2 attach returned 6
uhci3: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-D> at
     device 29.3 on pci0
uhci3: Could not allocate irq
device_attach: uhci3 attach returned 6

If booting with pci_link enabled IRQ's are assigned to all 4 
controllers, but I do not know if device numbering change or IRQ's are 
assigned differently, the devices get the following IRQ's:

uhci0 at pci0:29:0: IRQ 5
uhci1 at pci0:29:1: IRQ 9
uhci2 at pci0:29:2: IRQ 3
uhci3 at pci0:29:3: IRQ 10
ehci0 at pci0:29:7: IRQ 5

I do not know if these IRQ's are the correct ones, afterall, the system 
freezes after a while when pci_link is enabled. Things get more messy, 
there is a built in USB web cam attached to the ehci controler. I do not 
know if this interferes or causes problems, but I can't physically 
disconnect it.

SATA Controller:

There is an interrupt storm on IRQ 9 right before the ATA disks are 
identified. With pci_link disabled I have the following:

00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface
         Subsystem: Sony Corporation Unknown device 81f1
         Flags: bus master, medium devsel, latency 0
00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA
         Subsystem: Sony Corporation Unknown device 81f1
         Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 255
00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family)
         Subsystem: Sony Corporation Unknown device 81f1
         Flags: medium devsel, IRQ 10

Enabling pci_link I have:

00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface
         Subsystem: Sony Corporation Unknown device 81f1
         Flags: bus master, medium devsel, latency 0
00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA
         Subsystem: Sony Corporation Unknown device 81f1
         Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 255
00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) 

         Subsystem: Sony Corporation Unknown device 81f1
         Flags: medium devsel, IRQ 9

This interrupt storm ALSO occurs with pci_link enabled.

QUESTION:

How do I resolve the conflicts: How do I specify IRQ's for the above 
devices? Which IRQ's should I assign?

The correct solution may be to load a custom ASL to load. I tried to 
dump and compile the existing ASL and got only one warning:

/tmp/sony.asl  3527:                     Method (SODV, 1, NotSerialized)
Warning  2019 -                                     ^ Not all control 
paths return a value (SODV)

ASL Input:  /tmp/sony.asl - 5293 lines, 169636 bytes, 2529 keywords
AML Output: DSDT.aml - 20447 bytes 586 named objects 1943 executable opcodes

Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 584 Optimizations

Is there any documentation on how to debug/write the ASL code?

Thanks for reading all the way to the bottom, double up thanks if you 
can provide any hints or help resolving these issues.

Cheers, Erik

-- 
Ph: +34.666334818                      web: http://www.locolomo.org
X.509 Certificate: http://www.locolomo.org/crt/8D03551FFCE04F0C.crt
Key ID: 69:79:B8:2C:E3:8F:E7:BE:5D:C3:C3:B1:74:62:B8:3F:9F:1F:69:B9


More information about the freebsd-mobile mailing list