* [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts @ 2009-01-03 4:38 Peter Hoeg 2009-01-03 16:27 ` Hans-Frieder Vogt 0 siblings, 1 reply; 6+ messages in thread From: Peter Hoeg @ 2009-01-03 4:38 UTC (permalink / raw) To: linux-dvb Hi, I'm successfully using a HVR1200, however the board reports MSI capabilities and the driver doesn't seem to enable it. Is there any work happening on supporting MSI? Anyway I can help testing things out? $ lspci -v -s 4:0.0 04:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Hauppauge computer works Inc. Device 71d3 Flags: bus master, fast devsel, latency 0, IRQ 16 Memory at ef800000 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Express Endpoint, MSI 00 Capabilities: [80] Power Management version 2 Capabilities: [90] Vital Product Data <?> Capabilities: [a0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable- Capabilities: [100] Advanced Error Reporting <?> Capabilities: [200] Virtual Channel <?> Kernel driver in use: cx23885 Kernel modules: cx23885 Regards, Peter _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts 2009-01-03 4:38 [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts Peter Hoeg @ 2009-01-03 16:27 ` Hans-Frieder Vogt 2009-01-04 6:27 ` Peter Hoeg 0 siblings, 1 reply; 6+ messages in thread From: Hans-Frieder Vogt @ 2009-01-03 16:27 UTC (permalink / raw) To: linux-dvb Am Samstag, 3. Januar 2009 05:38:47 schrieb Peter Hoeg: > Hi, > > I'm successfully using a HVR1200, however the board reports MSI > capabilities and the driver doesn't seem to enable it. Is there any work > happening on supporting MSI? Anyway I can help testing things out? > > $ lspci -v -s 4:0.0 > 04:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI > Video and Audio Decoder (rev 02) > Subsystem: Hauppauge computer works Inc. Device 71d3 > Flags: bus master, fast devsel, latency 0, IRQ 16 > Memory at ef800000 (64-bit, non-prefetchable) [size=2M] > Capabilities: [40] Express Endpoint, MSI 00 > Capabilities: [80] Power Management version 2 > Capabilities: [90] Vital Product Data <?> > Capabilities: [a0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 > Enable- Capabilities: [100] Advanced Error Reporting <?> > Capabilities: [200] Virtual Channel <?> > Kernel driver in use: cx23885 > Kernel modules: cx23885 > > Regards, > Peter > > > _______________________________________________ > linux-dvb mailing list > linux-dvb@linuxtv.org > http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb Hi Peter, hi List, attached is a patch that enables MSI on the cx23885. I tested this patch for a while now on a Dvico FusionHDTV Dual Express and have not found any side effects. It works on versions 2.6.27.x and 2.6.28. 2.6.28-gitx not tried yet. Regards, Hans-Frieder Signed-off-by: Hans-Frieder Vogt <hfvogt@gmx.net> --- linux-2.6.28.orig/drivers/media/video/cx23885/cx23885-core.c 2008-10-25 18:10:32.000000000 +0200 +++ linux-2.6.28/drivers/media/video/cx23885/cx23885-core.c 2009-01-03 17:08:55.665685231 +0100 @@ -44,6 +44,10 @@ static unsigned int card[] = {[0 ... (C module_param_array(card, int, NULL, 0444); MODULE_PARM_DESC(card, "card type"); +static int enable_msi; +module_param(enable_msi, int, 0444); +MODULE_PARM_DESC(enable_msi, "Enable Message Signaled Interrupt (MSI)"); + #define dprintk(level, fmt, arg...)\ do { if (debug >= level)\ printk(KERN_DEBUG "%s/0: " fmt, dev->name, ## arg);\ @@ -1750,7 +1754,11 @@ static int __devinit cx23885_initdev(str goto fail_irq; } - err = request_irq(pci_dev->irq, cx23885_irq, + if (enable_msi && (pci_enable_msi(pci_dev) >= 0)) + err = request_irq(pci_dev->irq, cx23885_irq, + IRQF_DISABLED, dev->name, dev); + else + err = request_irq(pci_dev->irq, cx23885_irq, IRQF_SHARED | IRQF_DISABLED, dev->name, dev); if (err < 0) { printk(KERN_ERR "%s: can't get IRQ %d\n", @@ -1778,6 +1786,8 @@ static void __devexit cx23885_finidev(st /* unregister stuff */ free_irq(pci_dev->irq, dev); + if (pci_dev->msi_enabled) + pci_disable_msi(pci_dev); pci_set_drvdata(pci_dev, NULL); mutex_lock(&devlist); _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts 2009-01-03 16:27 ` Hans-Frieder Vogt @ 2009-01-04 6:27 ` Peter Hoeg 2009-01-04 22:33 ` Hans-Frieder Vogt 0 siblings, 1 reply; 6+ messages in thread From: Peter Hoeg @ 2009-01-04 6:27 UTC (permalink / raw) To: Hans-Frieder Vogt; +Cc: linux-dvb [-- Attachment #1: Type: text/plain, Size: 710 bytes --] Hans-Frieder, > Hi Peter, hi List, > > attached is a patch that enables MSI on the cx23885. I tested this patch for a > while now on a Dvico FusionHDTV Dual Express and have not found any side > effects. It works on versions 2.6.27.x and 2.6.28. 2.6.28-gitx not tried yet. I applied your patch against trunk v4l-dvb tree on stock Ubuntu kernel 2.6.27-9. While the module loads properly when passed enable_msi=1 and /proc/interrupts as well as lspci tell me that everything should be set up fine, I am not getting any interrupts delivered as per attached output of: cat /proc/interrupts For troubleshooting purposes I have also attached the output of: dmesg | egrep -i "tv|dvb|haupp|cx|tda" /peter [-- Attachment #2: ints.txt --] [-- Type: text/plain, Size: 1816 bytes --] CPU0 CPU1 CPU2 CPU3 0: 97 0 0 0 IO-APIC-edge timer 1: 2 0 0 0 IO-APIC-edge i8042 7: 1 0 0 0 IO-APIC-edge 8: 1 0 0 0 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi 14: 0 0 0 0 IO-APIC-edge pata_amd 15: 0 0 0 0 IO-APIC-edge pata_amd 19: 3 0 0 0 IO-APIC-fasteoi ohci1394 22: 0 0 0 0 IO-APIC-fasteoi ohci_hcd:usb2 23: 36617 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1 2296: 80049 0 0 0 PCI-MSI-edge eth0 2297: 28609 0 0 0 PCI-MSI-edge nvidia 2298: 0 0 0 0 PCI-MSI-edge cx23885[0] 2299: 93157 0 0 0 PCI-MSI-edge HDA Intel 2300: 40654 0 0 0 PCI-MSI-edge ahci NMI: 0 0 0 0 Non-maskable interrupts LOC: 71788 53748 36915 41838 Local timer interrupts RES: 1833 1221 2251 1362 Rescheduling interrupts CAL: 8509 14113 12544 12361 function call interrupts TLB: 904 2409 1062 2674 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts SPU: 0 0 0 0 Spurious interrupts ERR: 1 [-- Attachment #3: dmesg.txt --] [-- Type: text/plain, Size: 1814 bytes --] [ 10.300582] cx23885 driver version 0.0.1 loaded [ 10.301146] cx23885 0000:04:00.0: PCI INT A -> Link[APC8] -> GSI 16 (level, low) -> IRQ 16 [ 10.301284] CORE cx23885[0]: subsystem: 0070:71d3, board: Hauppauge WinTV-HVR1200 [card=7,autodetected] [ 10.467050] tveeprom 0-0050: Hauppauge model 71949, rev H2E9, serial# 3390611 [ 10.467120] tveeprom 0-0050: MAC address is 00-0D-FE-33-BC-93 [ 10.467185] tveeprom 0-0050: tuner model is Philips 18271_8295 (idx 149, type 54) [ 10.467259] tveeprom 0-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4) [ 10.467337] tveeprom 0-0050: audio processor is CX23885 (idx 39) [ 10.467402] tveeprom 0-0050: decoder processor is CX23885 (idx 33) [ 10.467468] tveeprom 0-0050: has no radio [ 10.467531] cx23885[0]: hauppauge eeprom: model=71949 [ 10.467597] cx23885_dvb_register() allocating 1 frontend(s) [ 10.467687] cx23885[0]: cx23885 based dvb card [ 10.926369] tda829x 1-0042: type set to tda8295 [ 11.068189] tda18271 1-0060: creating new instance [ 11.104359] TDA18271HD/C1 detected @ 1-0060 [ 12.165988] DVB: registering new adapter (cx23885[0]) [ 12.166056] DVB: registering adapter 0 frontend 0 (NXP TDA10048HN DVB-T)... [ 12.166548] cx23885_dev_checkrevision() Hardware revision = 0xb0 [ 12.166617] cx23885[0]/0: found at 0000:04:00.0, rev: 2, irq: 16, latency: 0, mmio: 0xef800000 [ 12.166697] cx23885 0000:04:00.0: setting latency timer to 64 [ 373.247511] tda10048_firmware_upload: waiting for firmware upload (dvb-fe-tda10048-1.0.fw)... [ 373.247518] firmware: requesting dvb-fe-tda10048-1.0.fw [ 373.262265] tda10048_firmware_upload: firmware read 24878 bytes. [ 373.262270] tda10048_firmware_upload: firmware uploading [ 375.822028] tda10048_firmware_upload: firmware uploaded [-- Attachment #4: lspci.txt --] [-- Type: text/plain, Size: 633 bytes --] 04:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Hauppauge computer works Inc. Device 71d3 Flags: bus master, fast devsel, latency 0, IRQ 2298 Memory at ef800000 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Express Endpoint, MSI 00 Capabilities: [80] Power Management version 2 Capabilities: [90] Vital Product Data <?> Capabilities: [a0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable+ Capabilities: [100] Advanced Error Reporting <?> Capabilities: [200] Virtual Channel <?> Kernel driver in use: cx23885 Kernel modules: cx23885 [-- Attachment #5: Type: text/plain, Size: 150 bytes --] _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts 2009-01-04 6:27 ` Peter Hoeg @ 2009-01-04 22:33 ` Hans-Frieder Vogt 2009-01-05 3:04 ` Peter Hoeg 0 siblings, 1 reply; 6+ messages in thread From: Hans-Frieder Vogt @ 2009-01-04 22:33 UTC (permalink / raw) To: Peter Hoeg, linux-dvb [-- Attachment #1: Type: text/plain, Size: 1396 bytes --] Am Sunday 04 January 2009 07:27:00 schrieben Sie: > Hans-Frieder, > > > Hi Peter, hi List, > > > > attached is a patch that enables MSI on the cx23885. I tested this patch > > for a while now on a Dvico FusionHDTV Dual Express and have not found any > > side effects. It works on versions 2.6.27.x and 2.6.28. 2.6.28-gitx not > > tried yet. > > I applied your patch against trunk v4l-dvb tree on stock Ubuntu kernel > 2.6.27-9. > > While the module loads properly when passed enable_msi=1 and > /proc/interrupts as well as lspci tell me that everything should be set > up fine, I am not getting any interrupts delivered as per attached > output of: > cat /proc/interrupts > > For troubleshooting purposes I have also attached the output of: > dmesg | egrep -i "tv|dvb|haupp|cx|tda" > > /peter Hm, strange! I attached the same data that you collected for my environment. The only difference that I see is, that I get in dmesg (or kern.log) immediately after the line cx23885 0000:03:00.0: setting latency timer to 64 the confirmation that MSI is activated: cx23885 0000:03:00.0: irq 315 for MSI/MSI-X It seems that for your card, the PCI code is stuck halfways?! As you have other devices running with MSI, can you please check whether you see a line ... irq xyz for MSI/MSI-X for them? This would narrow down the region in the code to search for the problem. Regards, Hans-Frieder [-- Attachment #2: kern.log-cx23885.out --] [-- Type: text/plain, Size: 2650 bytes --] [ 8.928904] cx23885 driver version 0.0.1 loaded [ 8.930726] cx23885 0000:03:00.0: PCI INT A -> Link[LN0A] -> GSI 19 (level, low) -> IRQ 19 [ 8.931185] CORE cx23885[0]: subsystem: 18ac:db78, board: DViCO FusionHDTV DVB-T Dual Express [card=11,autodetected] [ 9.258821] input: i2c IR (FusionHDTV) as /devices/virtual/input/input2 [ 9.317611] ir-kbd-i2c: i2c IR (FusionHDTV) detected at i2c-0/0-006b/ir0 [cx23885[0]] [ 9.318109] cx23885_dvb_register() allocating 1 frontend(s) [ 9.318178] cx23885[0]: cx23885 based dvb card [ 9.398854] xc2028 0-0061: creating new instance [ 9.398916] xc2028 0-0061: type set to XCeive xc2028/xc3028 tuner [ 9.398980] DVB: registering new adapter (cx23885[0]) [ 9.399036] DVB: registering adapter 0 frontend 0 (Zarlink ZL10353 DVB-T)... [ 9.399555] cx23885_dvb_register() allocating 1 frontend(s) [ 9.399612] cx23885[0]: cx23885 based dvb card [ 9.400354] xc2028 1-0061: creating new instance [ 9.400408] xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner [ 9.400464] DVB: registering new adapter (cx23885[0]) [ 9.400519] DVB: registering adapter 1 frontend 0 (Zarlink ZL10353 DVB-T)... [ 9.400927] cx23885_dev_checkrevision() Hardware revision = 0xb0 [ 9.400990] cx23885[0]/0: found at 0000:03:00.0, rev: 2, irq: 19, latency: 0, mmio: 0xfea00000 [ 9.401069] cx23885 0000:03:00.0: setting latency timer to 64 [ 9.401140] cx23885 0000:03:00.0: irq 315 for MSI/MSI-X [ 34.554403] i2c-adapter i2c-0: firmware: requesting xc3028-v27.fw [ 34.655312] xc2028 0-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7 [ 34.856389] xc2028 0-0061: Loading firmware for type=BASE F8MHZ (3), id 0000000000000000. [ 36.003429] xc2028 0-0061: Loading firmware for type=D2633 DTV8 (210), id 0000000000000000. [ 36.017390] xc2028 0-0061: Loading SCODE for type=DTV78 ZARLINK456 SCODE HAS_IF_4760 (62000100), id 0000000000000000. [ 36.381875] i2c-adapter i2c-1: firmware: requesting xc3028-v27.fw [ 36.393020] xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7 [ 36.393225] xc2028 1-0061: Loading firmware for type=BASE F8MHZ (3), id 0000000000000000. [ 37.336752] xc2028 1-0061: Loading firmware for type=D2633 DTV8 (210), id 0000000000000000. [ 37.350886] xc2028 1-0061: Loading SCODE for type=DTV78 ZARLINK456 SCODE HAS_IF_4760 (62000100), id 0000000000000000. [ 177.654931] xc2028 1-0061: Loading firmware for type=D2633 DTV78 (110), id 0000000000000000. [ 177.669134] xc2028 1-0061: Loading SCODE for type=DTV78 ZARLINK456 SCODE HAS_IF_4760 (62000100), id 0000000000000000. [-- Attachment #3: lspci.txt --] [-- Type: text/plain, Size: 620 bytes --] 03:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: DViCO Corporation Device db78 Flags: bus master, fast devsel, latency 0, IRQ 315 Memory at fea00000 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Express Endpoint, MSI 00 Capabilities: [80] Power Management version 2 Capabilities: [90] Vital Product Data <?> Capabilities: [a0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable+ Capabilities: [100] Advanced Error Reporting <?> Capabilities: [200] Virtual Channel <?> Kernel driver in use: cx23885 Kernel modules: cx23885 [-- Attachment #4: proc_int.out --] [-- Type: text/plain, Size: 1314 bytes --] CPU0 CPU1 0: 45 1 IO-APIC-edge timer 1: 0 2 IO-APIC-edge i8042 6: 0 5 IO-APIC-edge floppy 7: 1 0 IO-APIC-edge 8: 0 1 IO-APIC-edge rtc0 9: 0 0 IO-APIC-fasteoi acpi 12: 0 5 IO-APIC-edge i8042 20: 1 668 IO-APIC-fasteoi nvidia 21: 0 0 IO-APIC-fasteoi ehci_hcd:usb3 22: 0 0 IO-APIC-fasteoi ohci_hcd:usb2, ohci_hcd:usb4 23: 0 0 IO-APIC-fasteoi ehci_hcd:usb1 314: 6 13426 PCI-MSI-edge eth1 315: 3 2383 PCI-MSI-edge cx23885[0] 316: 0 215 PCI-MSI-edge HDA Intel 317: 11 11955 PCI-MSI-edge ahci NMI: 0 0 Non-maskable interrupts LOC: 27488 21523 Local timer interrupts RES: 2678 2372 Rescheduling interrupts CAL: 1001 85 Function call interrupts TLB: 417 173 TLB shootdowns TRM: 0 0 Thermal event interrupts THR: 0 0 Threshold APIC interrupts SPU: 0 0 Spurious interrupts ERR: 1 MIS: 0 [-- Attachment #5: Type: text/plain, Size: 150 bytes --] _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts 2009-01-04 22:33 ` Hans-Frieder Vogt @ 2009-01-05 3:04 ` Peter Hoeg 2009-01-06 3:19 ` Peter Hoeg 0 siblings, 1 reply; 6+ messages in thread From: Peter Hoeg @ 2009-01-05 3:04 UTC (permalink / raw) To: Hans-Frieder Vogt, linux-dvb Hi, > cx23885 0000:03:00.0: setting latency timer to 64 > the confirmation that MSI is activated: > cx23885 0000:03:00.0: irq 315 for MSI/MSI-X > > It seems that for your card, the PCI code is stuck halfways?! > As you have other devices running with MSI, can you please check whether you > see a line ... irq xyz for MSI/MSI-X for them? I am not getting that message for any of the other devices. Here is the output of: dmesg | grep -i msi [ 1.533883] pcieport-driver 0000:00:0b.0: found MSI capability [ 1.534197] pcieport-driver 0000:00:0c.0: found MSI capability [ 1.534501] pcieport-driver 0000:00:0d.0: found MSI capability [ 2.905219] forcedeth 0000:00:0f.0: highdma pwrctl mgmt timirq lnktim msi desc-v3 Maybe your message comes because you have some DEBUG_MSI_INTERRUPTS flag set or something (purely guessing here) as my other devices using MSI are working perfectly and this has to be looked for elsewhere. Any other info I can provide that will shed some light on the situation? /peter _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts 2009-01-05 3:04 ` Peter Hoeg @ 2009-01-06 3:19 ` Peter Hoeg 0 siblings, 0 replies; 6+ messages in thread From: Peter Hoeg @ 2009-01-06 3:19 UTC (permalink / raw) To: linux-dvb Peter Hoeg wrote: >> cx23885 0000:03:00.0: setting latency timer to 64 >> the confirmation that MSI is activated: >> cx23885 0000:03:00.0: irq 315 for MSI/MSI-X Has anybody else tried the MSI patch for cx23885 on a HVR1200? /peter _______________________________________________ linux-dvb mailing list linux-dvb@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-01-06 3:20 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-01-03 4:38 [linux-dvb] HVR-1200, cx23885 driver and Message Signaled Interrupts Peter Hoeg 2009-01-03 16:27 ` Hans-Frieder Vogt 2009-01-04 6:27 ` Peter Hoeg 2009-01-04 22:33 ` Hans-Frieder Vogt 2009-01-05 3:04 ` Peter Hoeg 2009-01-06 3:19 ` Peter Hoeg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).