Setting / locking PCIe link configuration?

The Nvidia Settings utility shows PCIe link data - width and speed. Is there any way to get control over the way the PCIe link is (dynamically) configured?

image

nvidia-smi --query has even more output (see below) and on there, I’d really love to try setting

  • PCIe Generation = 4
  • Link Width = 16x

(I do not know whether GPU memory clock and PCIe configuration are tightly coupled; basically, I simply want to have the “pipeline” == PCIe open as much as possible, because I can afford this, on this notebook)

    PCI
        Bus                               : 0x01
        Device                            : 0x00
        Domain                            : 0x0000
        Device Id                         : 0x252010DE
        Bus Id                            : 00000000:01:00.0
        Sub System Id                     : 0x0A831028
        GPU Link Info
            PCIe Generation
                Max                       : 4
                Current                   : 1
            Link Width
                Max                       : 16x
                Current                   : 8x
        Bridge Chip
            Type                          : N/A
            Firmware                      : N/A
        Replays Since Reset               : 0
        Replay Number Rollovers           : 0
        Tx Throughput                     : 97000 KB/s
        Rx Throughput                     : 921000 KB/s

The link width shown is hw dependant, i.e. the chip supports 16 lanes but only 8 are wired to the pcie bus. Obviously not changeable without soldering…
The pcie gen or better said, speed is automatically raised/lowered depending on the performance state. To see, set nvidia-settings/powermizer to “prefer maximum performance” and the speed will raise to gen 4. It lowered to gen 1 for powersaving reasons.

Cool - how can I get PCIE to generation 4 and have it stay there, without forcing clocking to the max?

Basically I wan to run the nvidia-smi command below - and I never want to see any changes on the PCIE generation, power saving or not :)

Why? It would seem as if the (current = 510 + 515) Linux driver is extremely happy to switch the generation, with the very very nasty and very audible side-effect that sound over (my) DisplayPort out (sound also through the Nvidia chip) cuts in and out every other second across generation switches.

Or, put differently: Nvidia Linux driver power management on PCI generation destroys my audio experience.

This is very specific to the Nvidia Linux driver, because when run under an alternative operating system, the PCIE generation is stable at 4 (and has very low clocking on components), so this very hardware configuration here (RTX 3060 mobile, Optimus, see above) is capable of having very low clocking at PCIE generation 4.

Alternatively, I would not mind flawless audio if the PCIE generation flips - whatever can be fixed faster, cheaper ;)

For more context, see nvidia sound cutting out randomly on external screen (#2375) · Issues · PipeWire / pipewire · GitLab

nvidia-smi --query-gpu=timestamp,pstate,power.draw,pcie.link.gen.current,pcie.link.width.current,temperature.gpu,utilization.gpu,clocks.current.graphics,clocks.current.memory,clocks.current.sm --format=csv -lms 100