[Nouveau] How to check for proper MSI support?

Yijing Wang wangyijing at huawei.com
Thu Jul 3 20:09:55 PDT 2014


On 2014/7/4 10:43, Ilia Mirkin wrote:
> On Thu, Jul 3, 2014 at 10:35 PM, Yijing Wang <wangyijing at huawei.com> wrote:
>> Hi Brian,
>>    From your 01:00.0 VGA compatible controller PCI config register, it supports 1 MSI vector, so I think this
>> card has no problem. But you didn't answer what's the pci_enable_msi() return during it enable MSI fail.
>>
>> You can check PCI bus whether support MSI like:
>>
>> cat /sys/bus/pci/devices/00:0e.0/msi_bus
>>
>> Other, do you call pci_enable_device() before pci_enable_msi() ?
> 
> Yes, the device is enabled. nouveau does generally work for most
> people :) And it works fine here if MSI is forced off.
>
> The problem here is that pci_enable_msi() succeeds, but it probably

It's some strange, pci_enable_msi() succeeds, but there is nothing in MSI address and data register

        Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
Because the address and data is invalid, so MSI can not work.

Because you said pci_enable_msi() return 0 which indicates success, so I guess the device
current power state is not D0, because checking code in __write_msi_msi.

void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
{
    if (entry->dev->current_state != PCI_D0) {
        /* Don't touch the hardware now */
    } else if (entry->msi_attrib.is_msix) {
        void __iomem *base;
        base = entry->mask_base +
            entry->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE;

        writel(msg->address_lo, base + PCI_MSIX_ENTRY_LOWER_ADDR);
        writel(msg->address_hi, base + PCI_MSIX_ENTRY_UPPER_ADDR);
        writel(msg->data, base + PCI_MSIX_ENTRY_DATA);
    ......

> shouldn't. I don't know all the details about MSI, but doesn't the CPU
> or (L)APIC have to support it? In this case, it's a P200MMX on a 430FX
> chipset board. Both quite ancient...

MSI in x86 always send to specific interrupt address(0xfeexxxx), most x86 CPU
should support MSI, but I am not sure, I don't know hardware much.

> 
> So given that the PCI device itself supports MSI, how do we tell that
> it shouldn't actually get turned on?

Generally, some message in dmesg like:
[   17.322311] ahci 0000:00:1f.2: irq 119 for MSI/MSI-X
[   17.322319] ahci 0000:00:1f.2: irq 120 for MSI/MSI-X
[   17.322326] ahci 0000:00:1f.2: irq 121 for MSI/MSI-X
[   17.322333] ahci 0000:00:1f.2: irq 122 for MSI/MSI-X
[   17.322339] ahci 0000:00:1f.2: irq 123 for MSI/MSI-X

Also you can check /proc/interrupts I think.

> 
>   -ilia
> 
>>
>> On 2014/7/4 8:35, Brian Becker wrote:
>>> I mistakenly only replied to Yijing Wang the first time. Here are the further details.
>>>
>>> uname -a: Linux p5-133 3.15.2-p5-133 #1 Thu Jun 26 22:56:27 EDT 2014 i586 GNU/Linux
>>>
>>> Here is the output from lspci -vvvxxx:
>>>
>>> root at p5-133:~# cat lspci.txt
>>> 00:00.0 Host bridge: Intel Corporation 430FX - 82437FX TSC [Triton I] (rev 01)
>>>         Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>         Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
>>>         Latency: 64
>>> 00: 86 80 2d 12 06 00 00 22 01 00 00 06 00 40 00 00
>>> 10: 00 00 00 00 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 00 00 00 00
>>> 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 50: 88 00 41 00 00 00 00 03 49 10 55 55 55 05 55 05
>>> 60: 08 10 18 20 20 00 00 00 0f 00 00 00 00 00 00 00
>>> 70: 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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 20 00 00
>>>
>>> 00:07.0 ISA bridge: Intel Corporation 82371FB PIIX ISA [Triton I] (rev 02)
>>>         Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>         Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 0
>>> 00: 86 80 2e 12 0f 00 80 02 02 00 01 06 00 00 80 00
>>> 10: 00 00 00 00 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 00 00 00 00
>>> 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 40: 00 00 00 00 00 00 00 00 00 00 00 00 4d 00 60 00
>>> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 0b 0b 0b 09 00 00 00 00 00 f2 05 00 00 00 00 00
>>> 70: 0f 80 00 00 00 00 04 04 02 00 00 00 00 00 00 00
>>> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 03 00 e0 00 02 d0 00 a0 13 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 08 02 00 00 00 00 00 00
>>>
>>> 00:07.1 IDE interface: Intel Corporation 82371FB PIIX IDE [Triton I] (rev 02) (prog-if 80 [Master])
>>>         Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>         Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 64
>>>         Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
>>>         Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [size=1]
>>>         Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
>>>         Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [size=1]
>>>         Region 4: I/O ports at ef80 [size=16]
>>>         Kernel driver in use: pata_oldpiix
>>> 00: 86 80 30 12 05 00 80 02 02 80 01 01 00 40 00 00
>>> 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 20: 81 ef 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 40: 36 a3 07 a3 00 00 00 00 00 00 00 00 00 00 00 00
>>> 50: 00 00 00 00 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: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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 08 02 00 00 00 00 00 00
>>>
>>> 00:0e.0 PCI bridge: PLX Technology, Inc. PEX8112 x1 Lane PCI Express-to-PCI Bridge (rev aa) (prog-if 00 [Normal decode])
>>>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 66, Cache Line Size: 32 bytes
>>>
>>>         Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
>>>         I/O behind bridge: 0000f000-0000ffff
>>>         Memory behind bridge: f5e00000-fbffffff
>>>         Prefetchable memory behind bridge: d5d00000-f5dfffff
>>>         Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
>>>         BridgeCtl: Parity+ SERR+ NoISA- VGA+ MAbort- >Reset- FastB2B-
>>>                 PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>>>
>>>         Capabilities: [40] 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: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
>>>                 Address: 0000000000000000  Data: 0000
>>>         Capabilities: [60] Express (v1) PCI/PCI-X to PCI-Express Bridge, MSI 00
>>>                 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
>>>                         ExtTag- RBE- FLReset-
>>>                 DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>>>                         RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- BrConfRtry-
>>>                         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 <1us, L1 <16us
>>>                         ClockPM- Surprise- LLActRep- BwNot-
>>>                 LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk-
>>>                         ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>>>                 LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
>>> 00: b5 10 12 81 17 01 30 02 aa 00 04 06 08 42 01 00
>>> 10: 00 00 00 00 00 00 00 00 00 01 01 00 f0 f0 00 00
>>> 20: e0 f5 f0 fb d0 d5 d0 f5 00 00 00 00 00 00 00 00
>>> 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 01 0b 00
>>> 40: 01 50 02 5a 00 00 00 00 10 28 0e 00 00 00 00 00
>>> 50: 05 60 80 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 10 00 81 00 00 00 00 00 00 20 00 00 11 4c 02 00
>>> 70: 00 00 11 00 80 0c 00 00 00 00 40 00 00 00 00 00
>>> 80: 00 00 00 00 00 00 00 00 33 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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
>>>
>>> 00:0f.0 USB controller: ULi Electronics Inc. USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
>>>         Subsystem: ULi Electronics Inc. ASRock 939Dual-SATA2 Motherboard
>>>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 64 (20000ns max), Cache Line Size: 32 bytes
>>>         Interrupt: pin B routed to IRQ 9
>>>         Region 0: Memory at ffbeb000 (32-bit, non-prefetchable) [size=4K]
>>>         Capabilities: [60] 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-
>>>         Kernel driver in use: ohci-pci
>>> 00: b9 10 37 52 17 01 b0 02 03 10 03 0c 08 40 80 00
>>> 10: 00 b0 be ff 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 b9 10 37 52
>>> 30: 00 00 00 00 60 00 00 00 00 00 00 00 09 02 00 50
>>> 40: 00 00 1f 00 e0 02 00 00 00 00 00 00 00 00 00 00
>>> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 01 00 02 d8 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: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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
>>>
>>> 00:0f.1 USB controller: ULi Electronics Inc. USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
>>>         Subsystem: ULi Electronics Inc. ASRock 939Dual-SATA2 Motherboard
>>>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 64 (20000ns max), Cache Line Size: 32 bytes
>>>         Interrupt: pin C routed to IRQ 11
>>>         Region 0: Memory at ffbec000 (32-bit, non-prefetchable) [size=4K]
>>>         Capabilities: [60] 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-
>>>         Kernel driver in use: ohci-pci
>>> 00: b9 10 37 52 17 01 b0 02 03 10 03 0c 08 40 80 00
>>> 10: 00 c0 be ff 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 b9 10 37 52
>>> 30: 00 00 00 00 60 00 00 00 00 00 00 00 0b 03 00 50
>>> 40: 00 00 1f 00 e0 02 00 00 00 00 00 00 00 00 00 00
>>> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 01 00 02 d8 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: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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
>>>
>>> 00:0f.2 USB controller: ULi Electronics Inc. USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
>>>         Subsystem: ULi Electronics Inc. ASRock 939Dual-SATA2 Motherboard
>>>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 64 (20000ns max), Cache Line Size: 32 bytes
>>>         Interrupt: pin D routed to IRQ 11
>>>         Region 0: Memory at ffbed000 (32-bit, non-prefetchable) [size=4K]
>>>         Capabilities: [60] 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-
>>>         Kernel driver in use: ohci-pci
>>> 00: b9 10 37 52 17 01 b0 02 03 10 03 0c 08 40 80 00
>>> 10: 00 d0 be ff 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 b9 10 37 52
>>> 30: 00 00 00 00 60 00 00 00 00 00 00 00 0b 04 00 50
>>> 40: 00 00 1f 00 e0 02 00 00 00 00 00 00 00 00 00 00
>>> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 01 00 02 d8 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: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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
>>>
>>> 00:0f.3 USB controller: ULi Electronics Inc. USB 2.0 Controller (rev 01) (prog-if 20 [EHCI])
>>>         Subsystem: ULi Electronics Inc. Device 5272
>>>         Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 64 (20000ns max), Cache Line Size: 32 bytes
>>>         Interrupt: pin A routed to IRQ 11
>>>         Region 0: Memory at ffbefc00 (32-bit, non-prefetchable) [size=256]
>>>         Capabilities: [50] 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: [58] Debug port: BAR=1 offset=0090
>>>         Kernel driver in use: ehci-pci
>>> 00: b9 10 39 52 16 01 b0 02 01 20 03 0c 08 40 80 00
>>> 10: 00 fc be ff 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 b9 10 72 52
>>> 30: 00 00 00 00 50 00 00 00 00 00 00 00 0b 01 00 50
>>> 40: 01 02 00 ee 00 00 10 c4 00 00 00 00 00 00 00 00
>>> 50: 01 58 02 c8 00 00 00 00 0a 00 90 20 00 00 00 00
>>> 60: 20 20 7f 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 70: 01 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 00
>>> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 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
>>>
>>> 00:10.0 RAID bus controller: Silicon Image, Inc. PCI0680 Ultra ATA-133 Host Controller (rev 02)
>>>         Subsystem: Silicon Image, Inc. Winic W-680 (Silicon Image 680 based)
>>>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>         Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>         Latency: 64, Cache Line Size: 4 bytes
>>>         Interrupt: pin A routed to IRQ 9
>>>         Region 0: I/O ports at eff0 [size=8]
>>>         Region 1: I/O ports at efe4 [size=4]
>>>         Region 2: I/O ports at efa8 [size=8]
>>>         Region 3: I/O ports at efe0 [size=4]
>>>         Region 4: I/O ports at ef90 [size=16]
>>>         Region 5: Memory at ffbeec00 (32-bit, non-prefetchable) [size=256]
>>>         [virtual] Expansion ROM at 08000000 [disabled] [size=512K]
>>>         Capabilities: [60] 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=2 PME-
>>>         Kernel driver in use: pata_sil680
>>> 00: 95 10 80 06 07 01 90 02 02 00 04 01 01 40 00 00
>>> 10: f1 ef 00 00 e5 ef 00 00 a9 ef 00 00 e1 ef 00 00
>>> 20: 91 ef 00 00 00 ec be ff 00 00 00 00 95 10 80 36
>>> 30: 00 00 00 00 60 00 00 00 00 00 00 00 09 01 00 00
>>> 40: 00 00 00 00 90 14 19 08 00 00 00 00 00 00 00 00
>>> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 01 00 22 06 00 40 00 64 00 00 00 00 00 00 00 00
>>> 70: 08 00 00 00 00 70 57 07 00 00 00 00 00 00 00 00
>>> 80: 03 00 00 00 00 00 00 00 00 00 11 00 d9 7d ff 7b
>>> 90: 00 fe 00 0d ff ff ff 3b 33 00 00 19 ff 00 00 00
>>> a0: 00 62 c1 10 c1 10 8a 32 c1 10 92 43 07 40 09 40
>>> b0: 01 60 8a 32 8a 32 8a 32 92 43 92 43 09 40 09 40
>>> 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
>>>
>>> 01:00.0 VGA compatible controller: NVIDIA Corporation G96 [GeForce 9400 GT] (rev a1) (prog-if 00 [VGA controller])
>>>         Subsystem: Jaton Corp Device 0641
>>>         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 11
>>>         Region 0: Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
>>>         Region 1: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>>>         Region 3: Memory at f8000000 (64-bit, non-prefetchable) [size=32M]
>>>         Region 5: I/O ports at fc80 [size=128]
>>>
>>>         [virtual] Expansion ROM at d5d00000 [disabled] [size=512K]
>>>         Capabilities: [60] Power Management version 3
>>>                 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>>>                 Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>
>>>         Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
>>>                 Address: 0000000000000000  Data: 0000
>>>         Capabilities: [78] Express (v1) Endpoint, MSI 00
>>>                 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us
>>>                         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 x16, ASPM L0s L1, Latency L0 <512ns, L1 <1us
>>>                         ClockPM- Surprise- LLActRep- BwNot-
>>>                 LnkCtl: ASPM Disabled; RCB 128 bytes Disabled- Retrain- CommClk-
>>>                         ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>>>                 LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>>>
>>>         Capabilities: [b4] Vendor Specific Information: Len=14 <?>
>>>         Kernel driver in use: nouveau
>>> 00: de 10 41 06 07 01 10 00 a1 00 00 03 08 00 00 00
>>> 10: 00 00 00 fb 0c 00 00 e0 00 00 00 00 04 00 00 f8
>>> 20: 00 00 00 00 81 fc 00 00 00 00 00 00 13 1b 41 06
>>> 30: 00 00 00 00 60 00 00 00 00 00 00 00 0b 01 00 00
>>> 40: 13 1b 41 06 00 00 00 00 00 00 00 00 00 00 00 00
>>> 50: 01 00 00 00 01 00 00 00 ce d6 23 00 00 00 00 00
>>> 60: 01 68 03 00 00 00 00 00 05 78 80 00 00 00 00 00
>>> 70: 00 00 00 00 00 00 00 00 10 b4 01 00 e0 84 64 00
>>> 80: 10 28 00 00 01 3d 00 00 08 00 11 10 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> b0: 00 00 00 00 09 00 14 01 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
>>>
>>>
>>>
>>> On Thu, Jul 3, 2014 at 1:58 AM, Yijing Wang <wangyijing at huawei.com <mailto:wangyijing at huawei.com>> wrote:
>>>
>>>     On 2014/7/3 11:20, Ilia Mirkin wrote:
>>>     > Hello,
>>>     >
>>>     > A user (cc'd) reported that nouveau's enabling of MSI causes the card
>>>     > to not work on his setup [1]. I think the situation is that MSI is
>>>     > just not supported by the underlying motherboard, even though the
>>>     > card, and probably bridge, support it just fine. It's a very old
>>>     > board. The nouveau code does:
>>>
>>>
>>>     What is the kernel version running in your board ?
>>>
>>>     >
>>>     > pmc->use_msi = pci_enable_msi(device->pdev) == 0;
>>>
>>>     Driver call pci_enable_msi() and always return 0 ?
>>>
>>>     >
>>>     > Does it need to do more checking than that before trying to enable MSI
>>>     > on the device? Could it be that the linux pci subsystem is missing on
>>>     > inheriting MSI capabilities somewhere?
>>>
>>>     pci_enable_msi() will checking your device whether it supports MSI.
>>>     Can you provide the detailed lspci information ? eg. lspci -vvvxxx ?
>>>
>>>
>>>     >
>>>     >   -ilia
>>>     >
>>>     > [1]
>>>     >
>>>     > 00:00.0 Host bridge [0600]: Intel Corporation 430FX - 82437FX TSC
>>>     > [Triton I] [8086:122d] (rev 01)
>>>     >         Flags: bus master, medium devsel, latency 64
>>>     >
>>>     > 00:0e.0 PCI bridge [0604]: PLX Technology, Inc. PEX8112 x1 Lane PCI
>>>     > Express-to-PCI Bridge [10b5:8112] (rev aa) (prog-if 00 [Normal
>>>     > decode])
>>>     >         Flags: bus master, 66MHz, medium devsel, latency 66
>>>     >         Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
>>>     >         I/O behind bridge: 0000f000-0000ffff
>>>     >         Memory behind bridge: f5e00000-fbffffff
>>>     >         Prefetchable memory behind bridge: d5d00000-f5dfffff
>>>     >         Capabilities: [40] Power Management version 2
>>>     >         Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
>>>     >         Capabilities: [60] Express PCI/PCI-X to PCI-Express Bridge, MSI 00
>>>     >
>>>     > 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation G96
>>>     > [GeForce 9400 GT] [10de:0641] (rev a1) (prog-if 00 [VGA controller])
>>>     >         Subsystem: Jaton Corp Device [1b13:0641]
>>>     >         Flags: bus master, fast devsel, latency 0, IRQ 11
>>>     >         Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
>>>     >         Memory at e0000000 (64-bit, prefetchable) [size=256M]
>>>     >         Memory at f8000000 (64-bit, non-prefetchable) [size=32M]
>>>     >         I/O ports at fc80 [size=128]
>>>     >         [virtual] Expansion ROM at d5d00000 [disabled] [size=512K]
>>>     >         Capabilities: [60] Power Management version 3
>>>     >         Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
>>>     >         Capabilities: [78] Express Endpoint, MSI 00
>>>     >         Capabilities: [b4] Vendor Specific Information: Len=14 <?>
>>>     >         Kernel driver in use: nouveau
>>>     > --
>>>     > To unsubscribe from this list: send the line "unsubscribe linux-pci" in
>>>     > the body of a message to majordomo at vger.kernel.org <mailto:majordomo at vger.kernel.org>
>>>     > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>     >
>>>     >
>>>
>>>
>>>     --
>>>     Thanks!
>>>     Yijing
>>>
>>>
>>
>>
>> --
>> Thanks!
>> Yijing
>>
> 
> .
> 


-- 
Thanks!
Yijing



More information about the Nouveau mailing list