Re: CX23885 MSI
On Fri, Apr 20, 2012 at 7:34 AM, James Courtier-Dutton james.dut...@gmail.com wrote: Hi, I noticed that the CX23885 driver does not set it up to use MSI. I don't have the datasheets. Is there any know reason not to use MSI with this PCI Express card? I just want to know before I spend time enabling MSI for this device. It is my understanding that MSI is generally preferred over previous IRQ methods. It was disabled intentionally by Andy due to a compatibility problem. Search the ML archives for the following subject for more details: HVR-1250/CX23885 IR Rx Devin -- Devin J. Heitmueller - Kernel Labs http://www.kernellabs.com -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Need info to understand TeVii S470 cx23885 MSI problem
On Tue, 2010-09-14 at 01:08 +0300, Igor M. Liplianin wrote: В сообщении от 13 сентября 2010 23:41:21 автор Igor M. Liplianin написал: В сообщении от 13 сентября 2010 23:38:28 автор Igor M. Liplianin написал: В сообщении от 12 сентября 2010 22:56:57 автор Andy Walls написал: The linux kernel should be writing the MSI IRQ vector into the PCI configuration space of the CX23885. It looks like when you unload and reload the cx23885 module, it is not changing the vector. Error appears only and if you zap actual channel(interrupts actually calls). First time module loaded and zapped some channel. At this point there is no errors. /proc/interrupts shows some irq's for cx23885. Then rmmod-insmod and szap again. Voilla! No irq vector. /proc/interrupts shows zero irq calls for cx23885. In my case Do_irq complains about irq 153, dmesq says cx23885 uses 45. Forget to mention. The tree is media_tree, branch staging/v2.6.37 Hi Igor, On the surface what is going on is now obvious to me: bash-4.1# szap -l10750 bridge-tv -x reading channels from file '/root/.szap/channels.conf' zapping to 6 'bridge-tv': sat 1, frequency = 12303 MHz H, symbolrate 2750, vpid = 0x0134, apid = 0x0100 sid = 0x003b using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' status 1f | signal fde8 | snr e128 | ber | unc 000b | FE_HAS_LOCK bash-4.1# lspci -d 14f1: - - 02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Device d470:9022 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: fee0300c Data: 4191 a0: 05 00 81 00 0c 30 e0 fe 00 00 00 00 91 41 00 00 ^^^ || MSI Enabled--+| | Linux MSI vector (0x91 = 145) + bash-4.1# rmmod cx23885 bash-4.1# insmod cx23885.ko bash-4.1# lspci -d 14f1: - - 02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Device d470:9022 Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: fee0300c Data: 4199 a0: 05 00 81 00 0c 30 e0 fe 00 00 00 00 99 41 00 00 ^^^ || MSI Enabled--+| | Linux MSI vector (0x99 = 153) + bash-4.1# szap -l10750 bridge-tv -x reading channels from file '/root/.szap/channels.conf' zapping to 6 'bridge-tv': sat 1, frequency = 12303 MHz H, symbolrate 2750, vpid = 0x0134, apid = 0x0100 sid = 0x003b using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' status 00 | signal f618 | snr e128 | ber | unc 000b | Message from sysl...@localhost at Tue Sep 14 01:00:50 2010 ... localhost kernel: do_IRQ: 0.145 No irq handler for vector (irq -1) ^^^ | Previous MSI vector used --+ (145 = 0x91 and is not 0x99 ! ) The CX23885 hardware is sending the old/previous MSI data in the PCIe MSI message. The likely reasons I can think of for this to happen are: 1. The CX23885 chip has a bug and send at least one PCIe MSI message with the old MSI data, when the MSI data payload in the PCIe config space of the CX23885 has changed. 2. Your kernel is using the PCI Enhanced Configuration Access Method (Linux calls it MMCONFIG in dmesg) and PCI MMIO Configuration writes to the CX23885 are getting reordered due to motherboard/chipset design problem. Under these conditions, MSI on the CX23885 could be re-enabled before the MSI Data vector is updated in the CX23885's PCI config space. (See page 5 of: http://www.pcisig.com/specifications/pciexpress/PciEx_ECN_MMCONFIG_040217.pdf ) To eliminate #2 being a problem, could you please boot your kernel with pci=nommconf on the kernel command line and see if the MSI data vector problem goes away? Regards, Andy -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Need info to understand TeVii S470 cx23885 MSI problem
В сообщении от 12 сентября 2010 22:56:57 автор Andy Walls написал: Igor, To help understand the problem with the TeVii S470 CX23885 MSI not working after module unload and reload, could you provide the output of # lspci -d 14f1: - - as root before the cx23885 module loads, after the module loads, and after the module is removed and reloaded? please also provide the MSI IRQ number listed in dmesg (or /var/log/messages) assigned to the card. Also the IRQ number of the unhandled IRQ when the module is reloaded. The linux kernel should be writing the MSI IRQ vector into the PCI configuration space of the CX23885. It looks like when you unload and reload the cx23885 module, it is not changing the vector. Regards, Andy Andy, Error appears only and if you zap actual channel(interrupts actually calls). First time module loaded and zapped some channel. At this point there is no errors. /proc/interrupts shows some irq's for cx23885. Then rmmod-insmod and szap again. Voilla! No irq vector. /proc/interrupts shows zero irq calls for cx23885. In my case Do_irq complains about irq 153, dmesq says cx23885 uses 45. My first look not catch anything in lspci. For now I'm using workaround - find register and bit in cx23885 to write to disable MSI registers. In conjunction with particular card, naturally. Regards Igor CPU0 CPU1 0:127 3 IO-APIC-edge timer 1:849856 IO-APIC-edge i8042 4: 1 1 IO-APIC-edge 6: 3 2 IO-APIC-edge floppy 7: 0 0 IO-APIC-edge parport0 8: 0 1 IO-APIC-edge rtc0 9: 0 0 IO-APIC-fasteoi acpi 12: 4639 4641 IO-APIC-edge i8042 14: 0 0 IO-APIC-edge ata_piix 15: 0 0 IO-APIC-edge ata_piix 16: 0 0 IO-APIC-fasteoi uhci_hcd:usb5 18: 0 0 IO-APIC-fasteoi uhci_hcd:usb4 19: 0 0 IO-APIC-fasteoi uhci_hcd:usb3 23: 19871 19882 IO-APIC-fasteoi ata_piix, ehci_hcd:usb1, uhci_hcd:usb2 42:376379 PCI-MSI-edge eth0 43:688688 PCI-MSI-edge i915 44:691669 PCI-MSI-edge hda_intel 45: 0 0 PCI-MSI-edge cx23885[0] NMI: 0 0 Non-maskable interrupts LOC: 165490 139525 Local timer interrupts SPU: 0 0 Spurious interrupts PMI: 0 0 Performance monitoring interrupts PND: 0 0 Performance pending work RES: 1206 1333 Rescheduling interrupts CAL: 45 30 Function call interrupts TLB: 1509 1445 TLB shootdowns TRM: 0 0 Thermal event interrupts THR: 0 0 Threshold APIC interrupts MCE: 0 0 Machine check exceptions MCP: 5 5 Machine check polls ERR: 1 MIS: 0 cx23885 driver version 0.0.2 loaded cx23885 :02:00.0: PCI INT A - GSI 16 (level, low) - IRQ 16 CORE cx23885[0]: subsystem: d470:9022, board: TeVii S470 [card=15,autodetected] cx23885_dvb_register() allocating 1 frontend(s) cx23885[0]: cx23885 based dvb card DS3000 chip version: 0.192 attached. DVB: registering new adapter (cx23885[0]) DVB: registering adapter 0 frontend 0 (Montage Technology DS3000/TS2020)... TeVii S470 MAC= 00:18:BD:5B:12:69 cx23885_dev_checkrevision() Hardware revision = 0xb0 cx23885[0]/0: found at :02:00.0, rev: 2, irq: 16, latency: 0, mmio: 0xfea0 cx23885 :02:00.0: setting latency timer to 64 cx23885 :02:00.0: irq 45 for MSI/MSI-X IR JVC protocol handler initialized IR Sony protocol handler initialized lirc_dev: IR Remote Control driver registered, major 251 IR LIRC bridge handler initialized fuse init (API version 7.14) EXT3-fs (sda8): using internal journal lp0: using parport0 (interrupt-driven). lp0: console ready EXT3-fs: barriers not enabled kjournald starting. Commit interval 5 seconds EXT3-fs (sda9): using internal journal EXT3-fs (sda9): mounted filesystem with ordered data mode EXT3-fs: barriers not enabled kjournald starting. Commit interval 5 seconds EXT3-fs (sdb5): using internal journal EXT3-fs (sdb5): mounted filesystem with ordered data mode r8169 :01:00.0: eth0: link up r8169 :01:00.0: eth0: link up NET: Registered protocol family 10 lo: Disabled Privacy Extensions warning: `named' uses 32-bit capabilities (legacy support in use) Installing knfsd (copyright (C) 1996 o...@monad.swb.de). NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory NFSD: starting 90-second grace period svc: failed to register lockdv1 RPC service (errno 97). eth0: no IPv6 routers present cx23885 driver version 0.0.2 loaded cx23885 :02:00.0: PCI INT A - GSI 16 (level, low) - IRQ 16
Re: Need info to understand TeVii S470 cx23885 MSI problem
В сообщении от 13 сентября 2010 23:38:28 автор Igor M. Liplianin написал: В сообщении от 12 сентября 2010 22:56:57 автор Andy Walls написал: Igor, To help understand the problem with the TeVii S470 CX23885 MSI not working after module unload and reload, could you provide the output of # lspci -d 14f1: - - as root before the cx23885 module loads, after the module loads, and after the module is removed and reloaded? please also provide the MSI IRQ number listed in dmesg (or /var/log/messages) assigned to the card. Also the IRQ number of the unhandled IRQ when the module is reloaded. The linux kernel should be writing the MSI IRQ vector into the PCI configuration space of the CX23885. It looks like when you unload and reload the cx23885 module, it is not changing the vector. Regards, Andy Andy, Error appears only and if you zap actual channel(interrupts actually calls). First time module loaded and zapped some channel. At this point there is no errors. /proc/interrupts shows some irq's for cx23885. Then rmmod-insmod and szap again. Voilla! No irq vector. /proc/interrupts shows zero irq calls for cx23885. In my case Do_irq complains about irq 153, dmesq says cx23885 uses 45. My first look not catch anything in lspci. For now I'm using workaround - find register and bit in cx23885 to write to disable MSI registers. In conjunction with particular card, naturally. Regards Igor Forget to mention. The tree is media_tree, branch staging/v2.6.37 -- Igor M. Liplianin Microsoft Windows Free Zone - Linux used for all Computing Tasks -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Need info to understand TeVii S470 cx23885 MSI problem
В сообщении от 13 сентября 2010 23:41:21 автор Igor M. Liplianin написал: В сообщении от 13 сентября 2010 23:38:28 автор Igor M. Liplianin написал: В сообщении от 12 сентября 2010 22:56:57 автор Andy Walls написал: Igor, To help understand the problem with the TeVii S470 CX23885 MSI not working after module unload and reload, could you provide the output of # lspci -d 14f1: - - as root before the cx23885 module loads, after the module loads, and after the module is removed and reloaded? please also provide the MSI IRQ number listed in dmesg (or /var/log/messages) assigned to the card. Also the IRQ number of the unhandled IRQ when the module is reloaded. The linux kernel should be writing the MSI IRQ vector into the PCI configuration space of the CX23885. It looks like when you unload and reload the cx23885 module, it is not changing the vector. Regards, Andy Andy, Error appears only and if you zap actual channel(interrupts actually calls). First time module loaded and zapped some channel. At this point there is no errors. /proc/interrupts shows some irq's for cx23885. Then rmmod-insmod and szap again. Voilla! No irq vector. /proc/interrupts shows zero irq calls for cx23885. In my case Do_irq complains about irq 153, dmesq says cx23885 uses 45. My first look not catch anything in lspci. For now I'm using workaround - find register and bit in cx23885 to write to disable MSI registers. In conjunction with particular card, naturally. Regards Igor Forget to mention. The tree is media_tree, branch staging/v2.6.37 Sorry, I was inattentive. bash-4.1# lspci -d 14f1: - - 02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Device d470:9022 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast TAbort- TAbort- MAbort- SERR- PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 10 Region 0: Memory at fea0 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Express (v1) Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s 64ns, L1 1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 2us, L1 4us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [90] Vital Product Data Product Name: End Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: Data: Kernel modules: cx23885 00: f1 14 52 88 06 00 10 00 02 00 00 04 08 00 00 00 10: 04 00 a0 fe 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 70 d4 22 90 30: 00 00 00 00 40 00 00 00 00 00 00 00 0a 01 00 00 40: 10 80 01 00 00 00 28 00 10 28 0a 00 11 5c 01 00 50: 40 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 01 90 22 7e 00 00 00 00 00 00 00 00 00 00 00 00 90: 03 a0 04 80 78 00 00 00 00 00 00 00 00 00 00 00 a0: 05 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bash-4.1# insmod cx23885.ko bash-4.1# lspci -d 14f1: - - 02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Device d470:9022 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast TAbort- TAbort- MAbort- SERR- PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 45 Region 0
Re: Need info to understand TeVii S470 cx23885 MSI problem
Thanks. I'll try to look at this closely later in the week. Notice the byte at offset 0xac of the PCI config space: 0x91 - 145 0x99 - 153 I think it may be something to do with PCI bus errors and AER. I have to do more research. In the meantime you can try booting your kernel with commandline options to: 1. Turn off MSI and look for AER messages to be logged 2. Turn of AER and see if the IRQ problem goes away. 3. Don't let PCI use MMCONFIG and see if the errors go away. Regards, Andy Igor M. Liplianin liplia...@me.by wrote: В сообщении от 13 сентября 2010 23:41:21 автор Igor M. Liplianin написал: В сообщении от 13 сентября 2010 23:38:28 автор Igor M. Liplianin написал: В сообщении от 12 сентября 2010 22:56:57 автор Andy Walls написал: Igor, To help understand the problem with the TeVii S470 CX23885 MSI not working after module unload and reload, could you provide the output of # lspci -d 14f1: - - as root before the cx23885 module loads, after the module loads, and after the module is removed and reloaded? please also provide the MSI IRQ number listed in dmesg (or /var/log/messages) assigned to the card. Also the IRQ number of the unhandled IRQ when the module is reloaded. The linux kernel should be writing the MSI IRQ vector into the PCI configuration space of the CX23885. It looks like when you unload and reload the cx23885 module, it is not changing the vector. Regards, Andy Andy, Error appears only and if you zap actual channel(interrupts actually calls). First time module loaded and zapped some channel. At this point there is no errors. /proc/interrupts shows some irq's for cx23885. Then rmmod-insmod and szap again. Voilla! No irq vector. /proc/interrupts shows zero irq calls for cx23885. In my case Do_irq complains about irq 153, dmesq says cx23885 uses 45. My first look not catch anything in lspci. For now I'm using workaround - find register and bit in cx23885 to write to disable MSI registers. In conjunction with particular card, naturally. Regards Igor Forget to mention. The tree is media_tree, branch staging/v2.6.37 Sorry, I was inattentive. bash-4.1# lspci -d 14f1: - - 02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio Decoder (rev 02) Subsystem: Device d470:9022 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast TAbort- TAbort- MAbort- SERR- PERR- INTx- Latency: 0, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 10 Region 0: Memory at fea0 (64-bit, non-prefetchable) [size=2M] Capabilities: [40] Express (v1) Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s 64ns, L1 1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 2us, L1 4us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [80] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [90] Vital Product Data Product Name: End Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: Data: Kernel modules: cx23885 00: f1 14 52 88 06 00 10 00 02 00 00 04 08 00 00 00 10: 04 00 a0 fe 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 70 d4 22 90 30: 00 00 00 00 40 00 00 00 00 00 00 00 0a 01 00 00 40: 10 80 01 00 00 00 28 00 10 28 0a 00 11 5c 01 00 50: 40 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 01 90 22 7e 00 00 00 00 00 00 00 00 00 00 00 00 90: 03 a0 04 80 78 00 00 00 00 00 00 00 00 00 00 00 a0: 05 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00
Need info to understand TeVii S470 cx23885 MSI problem
Igor, To help understand the problem with the TeVii S470 CX23885 MSI not working after module unload and reload, could you provide the output of # lspci -d 14f1: - - as root before the cx23885 module loads, after the module loads, and after the module is removed and reloaded? please also provide the MSI IRQ number listed in dmesg (or /var/log/messages) assigned to the card. Also the IRQ number of the unhandled IRQ when the module is reloaded. The linux kernel should be writing the MSI IRQ vector into the PCI configuration space of the CX23885. It looks like when you unload and reload the cx23885 module, it is not changing the vector. Regards, Andy -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html