PCIe bridge not working under windows but working under linux

Hi everyone! Trying to find some help to see if I can make something work.

Starting problem: I have a pcie card in a Akitio Node Duo and windows keeps coming up with error code 10 in device manager. The card uses a Pericom Semiconductor PI7C9X111SL PCIe-to-PCI Reversible Bridge, for the rest it is identical to its previous PCI version. I also have a Cardbus one which works through PCIe-ExpressCard->ExpressCard-Cardbus->Card config (!). I already had issues with this card in the past using it in a 2x xeon workstation: it had to be on a specific slot in order to work. The card is an E-Mu (now then creative labs) EM8982 (PCIe version of the EM8960).

Fact is that the issue is at the bridge’s driver, or at least I think so, because Linux can initialize the Pericom and see the PCI audio card while Windows can’t.

TB3 chain works correctly because in the same Akitio Node Duo I have a GPU that is working correctly.

I already tried the HackFlags regedit with 200 400 and 600 but nothing.

also tried the bcdedit pci express forcedisable which results in the device PCIe to PCI bridge device in device maanager become PCI to PCI with same error (code 10).

Error in Windows’ driver:

1
2
3
4
5
6
7
8
9
 
Device PCI\VEN_12D8&DEV_E111&SUBSYS_00000000&REV_02\c&1e83b338&0&000800200020000800D8 had a problem starting.
 
Driver Name: pci.inf
Class Guid: {4d36e97d-e325-11ce-bfc1-08002be10318}
Service: pci
Lower Filters:
Upper Filters:
Problem: 0xA
Problem Status: 0xC0000010
 


Output of lspci in linux:

Below the short and extended (-vvk) version of what I see in lspci under linux. Can anyone suggest a workaround to use the card under windows?

1
2
 
0d:00.0 PCI bridge: Pericom Semiconductor PI7C9X111SL PCIe-to-PCI Reversible Bridge (rev 02)
0e:04.0 Multimedia audio controller: Creative Labs CA0108/CA10300 [Sound Blaster Audigy Series]
 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
0d:00.0 PCI bridge: Pericom Semiconductor PI7C9X111SL PCIe-to-PCI Reversible Bridge (rev 02) (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=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 128 bytes
Interrupt: pin A routed to IRQ 18
Bus: primary=0d, secondary=0e, subordinate=0e, sec-latency=64
I/O behind bridge: 00003000-00003fff [size=4K]
Memory behind bridge: [disabled]
Prefetchable memory behind bridge: [disabled]
Secondary status: 66MHz+ FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [80] PCI-X bridge device
Secondary Status: 64bit- 133MHz- SCD- USC- SCO- SRD- Freq=conv
Status: Dev=0d:00.0 64bit- 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=16 CommitmentLimit=16
Downstream: Capacity=16 CommitmentLimit=16
Capabilities: [90] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [a8] Subsystem: Device 0000:0000
Capabilities: [b0] Express (v1) PCI-Express to PCI/PCI-X Bridge, MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ SlotPowerLimit 0.000W
DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop- BrConfRtry-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ NonFatalErr+ FatalErr- UnsupReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s (ok), Width x1 (ok)
TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
Capabilities: [d8] Vital Product Data
 


thanks!

Remove the audio card. Limit The package ctate to c3 in bios and retry.
If you have also the option: serial irq mode in bios change it from quiet to continous.

Thanks @boombastik . I tried (without removing the card) to switch C3 in BIOS from enabled to disabled but same outcome. Should I remove the card I suppose I should power off, remove the card, change BIOS, save, power off, put back the card, power on, right? (Even though I’d be curious to know why the card should be removed) In the meanwhile I’ve also tested same config under win8.1 and win8.1 doesn’t show the exclamation mark on the bridge and sees the PCI card after the bridge. Problem being that I can’t run the machine under 8.1 as most of its drivers do not exist for 8.1 (iGPU and WiFi to mention a couple).

I was wondering: what’s the difference in terms of resources allocation between Win 10 and 8.1/Linux? Isn’t there any chance to do that mapping manually before windows does his (wrong) own? Thx again.

disable the package c3 and bigger(c6,c7) , i believe that you disabled the core c state.
Package c states and core c states are different things. Package c states dont work well with bridges.

I asked you to remove the card so i will be sure that the motherboard will refresh the dmi pool with the settings and the card.

I also found this:
Some Pericom PCIe-to-PCI bridges in reverse mode need the PCIe Retrain Link bit cleared after starting the link retrain process to allow this
process to finish.

Affected devices: PI7C9X110, PI7C9X111SL, PI7C9X130.

unfortunately through BIOS I can only enable/disable C state :frowning: I thought I specified the system but I didn’t: it’s a Dell Precision 5530 and Dell’s BIOS doesn’t leave much space to tweaking.

Thanks for the explanation, very fascinating considering I didn’t keep my knowledge up-to-date since the old times when we had to specify which resources to use through dip-switches and point the drivers to them through config.sys :slight_smile:

But I feared there wasn’t much space to change things from an end-user perspective: and that’s why I came asking in the kingdom of modders :smiley: I was hoping someone had a hacked version of the BIOS or of the driver allocating resources.

The other interesting parameter in the BIOS is the possibility to switch from native to BIOS (or auto) mode when it comes to Thunderbolt 3 resources allocation but it didn’t help.

Lucky me I can still use the card with PCIe->ExpressCard->Cardbus->Audio card chain but I have 15cm getting out of the slot and that looks anything but safe.

I had found the same note, probably on a linux’ kernel patch and its documentation; In that case though the PI7C9C111SL is working in forward mode (from PCIe to PCI), not in reverse mode (PCI to PCIe) as documented here: https://www.diodes.com/assets/Datasheets/PI7C9X111SL.pdf

But I appreciate very much the time you took for such an in-depth research!

and forgot to say: I can remove and re-insert the card in its slot but don’t know if that has the same effect as in a desktop considering the card is in a PCIe external box connected to the laptop via thunderbolt 3. My only other chance is to replace the akitio node duo with a sonnet III D as soon as I find one at a decent price…

Do you tried to disable the pcie aspm?
-https://en.wikipedia.org/wiki/Active_State_Power_Management

I don’t have/see the option in my power plan:

only sleep, display, battery sections

Capture.PNG

made link state power management appear in the Power options and set it to off for both on battery and plugged in but nothing changed.