* [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).