<div dir="ltr"><div>I see. Well, those sysfs files are not usable, and I don't think it would be important even if they were usable, but for completeness:</div><div><br></div><div>The ioctl returns:</div><div>    pcie_gen = 1<br>    pcie_num_lanes = 16</div><div><br></div><div>Theoretical bandwidth from those values: 4.0 GB/s<br></div><div></div><div>My DMA test shows this write bandwidth: 3.5 GB/s</div><div></div><div>It matches the expectation.</div><div><br></div><div>Let's see the devices (there is only 1 GPU Navi21 in the system):</div><div>$ lspci |egrep '(PCI|VGA).*Navi'<br>0a:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev c3)<br>0b:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch<br>0c:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (rev c3)</div><div><br></div><div>Let's read sysfs:</div><div><br></div>$ cat /sys/bus/pci/devices/0000:0a:00.0/current_link_width<br>16<br>$ cat /sys/bus/pci/devices/0000:0b:00.0/current_link_width<br>16<br>$ cat /sys/bus/pci/devices/0000:0c:00.0/current_link_width<br>16<br><div>$ cat /sys/bus/pci/devices/0000:0a:00.0/current_link_speed</div><div>2.5 GT/s PCIe</div>$ cat /sys/bus/pci/devices/0000:0b:00.0/current_link_speed<br>16.0 GT/s PCIe<br>$ cat /sys/bus/pci/devices/0000:0c:00.0/current_link_speed<br>16.0 GT/s PCIe<br><div><br></div><div>Problem 1: None of the speed numbers match 4 GB/s.<br></div><div>Problem 2: Userspace doesn't know the bus index of the bridges, and it's not clear which bridge should be used.</div><div>Problem 3: The PCIe gen number is missing.</div><div><br></div><div>That's all irrelevant because all information should be queryable via the INFO ioctl. It doesn't matter what sysfs contains because UMDs shouldn't have to open and parse extra files just to read a couple of integers.<br></div><div><br></div><div>Marek<br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 3, 2023 at 3:31 AM Christian König <<a href="mailto:ckoenig.leichtzumerken@gmail.com">ckoenig.leichtzumerken@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    Sure they can, those files are accessible to everyone.<br>
    <br>
    The massive advantage is that this is standard for all PCIe devices,
    so it should work vendor independent.<br>
    <br>
    Christian.<br>
    <br>
    <div>Am 02.01.23 um 18:55 schrieb Marek
      Olšák:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="auto">Userspace drivers can't access sysfs.
        <div dir="auto"><br>
        </div>
        <div dir="auto">Marek</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Mon, Jan 2, 2023, 10:54
          Christian König <<a href="mailto:ckoenig.leichtzumerken@gmail.com" target="_blank">ckoenig.leichtzumerken@gmail.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div> That stuff is already available as current_link_speed
            and current_link_width in sysfs.<br>
            <br>
            I'm a bit reluctant duplicating this information in the
            IOCTL interface.<br>
            <br>
            Christian. <br>
            <br>
            <div>Am 30.12.22 um 23:07 schrieb Marek Olšák:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">For computing PCIe bandwidth in userspace
                and troubleshooting PCIe<br>
                bandwidth issues.<br>
                <br>
                For example, my Navi21 has been limited to PCIe gen 1
                and this is<br>
                the first time I noticed it after 2 years.<br>
                <br>
                Note that this intentionally fills a hole and padding<br>
                in drm_amdgpu_info_device.<br>
                <br>
                <div>Signed-off-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com" rel="noreferrer" target="_blank">marek.olsak@amd.com</a>></div>
                <div><br>
                </div>
                <div>The patch is attached.</div>
                <div><br>
                </div>
                <div>Marek<br>
                </div>
                <br>
              </div>
            </blockquote>
            <br>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </div>

</blockquote></div>