(In reply to Len Brown from comment #5)
> Does this still fail if you use the proprietary nvidia driver?
I have not tried the proprietary driver, but AFAIK the blob does no attempts to put the device in D3 state.
(In reply to Lv Zheng from comment #6)
> Peter:
> Should you first try this: attachment 239241 [details]
I can try, but would it really help? Not all firmware have this loop and they will just assume that the link state is correct. This is the affected loop:
While ((\_SB.PCI0.PEG0.LNKS < 0x07)) {
Local0 = 0x20
While (Local0) {
If ((\_SB.PCI0.PEG0.LNKS < 0x07)) { Stall (0x64) Local0--
} Else { Break
}
}
If ((Local0 == Zero)) { \_SB.PCI0.PEG0.RTLK = One
Stall (0x64)
}
}
In one trace I observed that the outer loop was executed 29 times which means that about 29 * (32 * 100us + 100us) = 95.7ms.
(In reply to Len Brown from comment #5)
> Does this still fail if you use the proprietary nvidia driver?
I have not tried the proprietary driver, but AFAIK the blob does no attempts to put the device in D3 state.
(In reply to Lv Zheng from comment #6)
> Peter:
> Should you first try this: attachment 239241 [details]
I can try, but would it really help? Not all firmware have this loop and they will just assume that the link state is correct. This is the affected loop:
While ((\_SB. PCI0.PEG0. LNKS < 0x07)) { PCI0.PEG0. LNKS < 0x07)) {
Stall (0x64)
Local0- -
Break
Local0 = 0x20
While (Local0) {
If ((\_SB.
} Else {
}
}
If ((Local0 == Zero)) {
\_ SB.PCI0. PEG0.RTLK = One
Stall (0x64)
}
}
In one trace I observed that the outer loop was executed 29 times which means that about 29 * (32 * 100us + 100us) = 95.7ms.