Bug 1689

Summary: Via quirk fails to move interrupt on 2.6 -- worked on 2.4 -- IOAPIC
Product: ACPI Reporter: SungHyun Nam (namsh)
Component: Config-InterruptsAssignee: Len Brown (lenb)
Status: REJECTED DUPLICATE    
Severity: normal CC: acpi-bugzilla
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.0-test11 Subsystem:
Regression: --- Bisected commit-id:
Attachments: dmesg (kernel-BK + 20031130031859-pci_link.patch)
patch to reserve SCI IRQ with high penalty to avoid sharing
dmesg outputs
2.6.5 debug patch showing PCI-id on fixups
2.6.5 debug patch showing PCI-id on fixups - take 2
dmesg (Current Linus BK tree + patch-2684)
2.6.5 debug patch - take 3

Description SungHyun Nam 2003-12-16 16:36:37 UTC
Distribution: redhat 8.0 based
Hardware Environment: i386
Software Environment: .
Problem Description:

Using vanilla kernel:
$ cat /proc/interrupts
...
10:          0    IO-APIC-edge  acpi, VIA686A
...

Using the patch:
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/2.6.0-test11/20031130031859-pci_link.patch
  

The result was same at the first time.
But if I use the 'acpi_irq_isa=10' cmdline option, then
$ cat /proc/interrupts
           CPU0       
  0:    2552078    IO-APIC-edge  timer
  1:       1644    IO-APIC-edge  i8042
  2:          0          XT-PIC  cascade
  7:          2    IO-APIC-edge  parport0
  8:          1    IO-APIC-edge  rtc
 10:          0    IO-APIC-edge  acpi
 12:      45217    IO-APIC-edge  i8042
 14:      30784    IO-APIC-edge  ide0
 15:         45    IO-APIC-edge  ide1
 16:     207394   IO-APIC-level  nvidia
 18:       8572   IO-APIC-level  eth0
 25:          0   IO-APIC-level  uhci_hcd, uhci_hcd
 27:     252669   IO-APIC-level  VIA686A
NMI:          0 
LOC:    2552097 
ERR:          0
MIS:          0

Now sound works. Because kernel disabled IRQ 27 once, now
I added 'noirqdebug'. Hope it helps the irq disable problem.

To know all my H/W environments, please refer the bug ID 1440.
Comment 1 SungHyun Nam 2003-12-16 16:38:48 UTC
Created attachment 1687 [details]
dmesg (kernel-BK + 20031130031859-pci_link.patch)
Comment 2 Len Brown 2003-12-16 22:05:02 UTC
2.4: 
> Applying VIA southbridge workaround. 
> PCI: Enabling Via external APIC routing 
> PCI: Via IRQ fixup for 00:07.5, from 10 to 9 
 
2.6: 
> Applying VIA southbridge workaround. 
> PCI: Enabling Via external APIC routing 
> PCI: Via IRQ fixup for 0000:00:07.5, from 10 to 11 
 
But we see sounds still on IRQ10 with ACPI -- so this Via quirk didn't work. 
As ACPI is edge triggered at IRQ10 on this board, that isn't going to work. 
 
Re: IRQ27 -- you'll need this patch too: 
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/2.6.0-test9/20031121014213-mpparse_es7000.patch 
 
Maybe simpler to just use the consolidated latest ACPI patch on top of 2.6: 
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/release/2.6.0-test11/ 
 
 
Comment 3 Len Brown 2003-12-16 22:09:31 UTC
Created attachment 1688 [details]
patch to reserve SCI IRQ with high penalty to avoid sharing

Please test this ACPI patch to discourage sharing the SCI interrupt with PCI.
It should be over-kill, as it is necessary only when SCI is edge-triggered,
but if it works it will show that we're on the right track and perhaps we can
deal with this without VIA quirks.  attach full dmesg and /proc/interrupts
please.

thanks,
-Len
Comment 4 SungHyun Nam 2003-12-17 02:49:34 UTC
Created attachment 1689 [details]
dmesg outputs

I applied the patch 'acpi-20031203-2.6.0-test11.diff' and the patch
ID 1688 to get this dmesg outputs.

Can I include /proc/interrupts here?
$ cat /proc/interrupts
	   CPU0       
  0:	 568858    IO-APIC-edge  timer
  1:	   1244    IO-APIC-edge  i8042
  2:	      0 	 XT-PIC  cascade
  7:	      2    IO-APIC-edge  parport0
  8:	      1    IO-APIC-edge  rtc
  9:	      0   IO-APIC-level  uhci_hcd, uhci_hcd
 10:	      0    IO-APIC-edge  acpi
 11:	  45408   IO-APIC-level  VIA686A
 12:	  27749    IO-APIC-edge  i8042
 14:	  11856    IO-APIC-edge  ide0
 15:	     45    IO-APIC-edge  ide1
 16:	  34698   IO-APIC-level  nvidia
 18:	    619   IO-APIC-level  eth0
NMI:	      0 
LOC:	 568856 
ERR:	      0
MIS:	      0

As you can see in the dmesg output, I removed 'noirqdebug' and
'acpi_irq_isa=10' cmdline option.
Comment 5 Len Brown 2004-04-23 21:45:52 UTC
what is the state of this box on 2.4.26 or 2.6.5, do we still have a problem? 
 
Comment 6 Len Brown 2004-04-24 00:54:18 UTC
Created attachment 2683 [details]
2.6.5 debug patch showing PCI-id on fixups

This patch calls pci_fixup_device() directly from pci_acpi_init(), and squawks
it also still calls from pci_init & squawks.
Comment 7 Len Brown 2004-04-24 01:17:55 UTC
Created attachment 2684 [details]
2.6.5 debug patch showing PCI-id on fixups - take 2

improved debug patch
Comment 8 SungHyun Nam 2004-04-25 00:17:41 UTC
Created attachment 2696 [details]
dmesg (Current Linus BK tree + patch-2684)

I lived with 'acpi_irq_isa=10'. Now, I apply the patch id=2684 and
removed 'acpi_irq_isa=10'. I think The problem still exists.

$ cat /proc/interrupts
...
  9:	      0   IO-APIC-level  uhci_hcd, uhci_hcd
 10:	    147   IO-APIC-level  acpi, VIA686A
 12:	   1575    IO-APIC-edge  i8042
...
Comment 9 Len Brown 2004-04-25 23:35:40 UTC
The IOAPIC-edge issue is gone, IRQ10 is now IOAPIC-level, 
so that's a start;-) 
 
Sound is device 00:07.5 (please attach lspci -vv to confirm pin#) 
using LNKA, B, C, D; enabled at 11, 9, 10, 9, respectively. 
So lspci -vv will probably show this device on LNKC. 
 
At this point sound looks correctly programmed at IRQ10. 
The quirk runs, but it doesn't print anything because ACPI 
programmed the device at IRQ10 and the PCI config 
space matches IRQ10 and doesn't need to be updated. 
 
Does sound not respond on IRQ10? 
I assume that acpi_irq_isa=10 still moves sound off IRQ10 and it the device works there? 
 
Comment 10 Len Brown 2004-04-25 23:40:38 UTC
Created attachment 2708 [details]
2.6.5 debug patch - take 3

Please apply this patch to 2.6.5
build with CONFIG_PCI_NAMES=y
and attach the resulting full dmesg and /proc/interrupts
for ACPI+IOAPIC mode.

If sound doesn't work on IRQ10, please reboot with
acpi_irq_isa=10, and again attach the full dmesg and /proc/interrupts
and report if sound works at the !=10 IRQ.

This patch tweaks the VIA quirk to always program pci config space,
even if ACPI did not move the interrupt.
Comment 11 SungHyun Nam 2004-04-26 00:48:12 UTC
When I wrote comment #8, I didn't test sound. I just checked the /proc/interrupts.
Because the acpi and VIA686A shares IRQ 10 like before, I thought the problem
still exists. Sorry!

And now, I just removed 'acpi_irq_isa=10' and reboot.
The /proc/interrupts shows me acpi and VIA686A shares IRQ 10.

$ cat /proc/interrupts
...
  9:          0   IO-APIC-level  uhci_hcd, uhci_hcd
 10:        132   IO-APIC-level  acpi, VIA686A
 12:       1251    IO-APIC-edge  i8042
...

And I have *NO* sound problem. XMMS plays sound well.

So, I don't need the debug patch and send you a dmesg msg any more.
Do you still need dmesg output for patch #2708?

The kernel is linus bk kernel.
$ bk changes
ChangeSet@1.1906, 2004-04-23 06:32:08-07:00, akpm@osdl.org
  [PATCH] writeback livelock fix
...
Comment 12 SungHyun Nam 2004-04-26 01:04:48 UTC
Here is additional information for the comment #9.
First of all, sound worked fine on IRQ 10.
When I used 'acpi_irq_isa=10', VIA686A used IRQ 11.
(Checked the comment #4).

$ lspci -vv
...

00:07.5 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio
Controller (rev 50)
	Subsystem: Trigem Computer Inc.: Unknown device 315c
	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping-
SERR- FastB2B-
	Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
	Interrupt: pin C routed to IRQ 10
	Region 0: I/O ports at 1000 [size=256]
	Region 1: I/O ports at 1854 [size=4]
	Region 2: I/O ports at 1850 [size=4]
	Capabilities: <available only to root>

...

Sorry again. I didn't noticed acpi changed to 'IO-APIC-level'.
Comment 13 Len Brown 2004-05-14 23:12:52 UTC
So everything works now, yes? 
Apparently the problem was that sound was sharing IRQ10 with ACPI 
in IOAPIC-edge mode.  
 
There is no INT_SRC_OVR for the SCI on this system. 
When we fixed the SCI default to be level/low (bug 1622) 
that fixed sound on this system when it shared IRQ10 
with ACPI. 
 
Apparently the VIA quirk part was a red herring. 
 
closing as duplicate of bug 1622. 
 

*** This bug has been marked as a duplicate of 1622 ***