[PATCH libdrm 1/2] xf86drm: Pass PCI path rather than maj/min when parsing sysfs files

Alistair Popple <[email protected]>
Newsgroups org.freedesktop.lists.dri-devel,dev.linux.lists.nova-gpu
Message-ID <[email protected]>
Both parse_separate_sysfs_files() and parse_config_sysfs_file()
take a maj/min device numbers and resolve the actual PCI path using
get_pci_path(). This was to allow virtio to resolve the correct path.

However there is no reason to call get_pci_path() in these functions -
in all cases the caller can call get_pci_path() prior to calling these
functions. This results in a minor code simplification for a future
change which allows callers to provide the PCI device path instead of
using get_pci_path().

Signed-off-by: Alistair Popple <[email protected]>
---
 xf86drm.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/xf86drm.c b/xf86drm.c
index a8b39a31..25f2a3ff 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -3833,7 +3833,7 @@ static int drmGetMaxNodeName(void)
 }
 
 #ifdef __linux__
-static int parse_separate_sysfs_files(int maj, int min,
+static int parse_separate_sysfs_files(const char *pci_path,
                                       drmPciDeviceInfoPtr device,
                                       bool ignore_revision)
 {
@@ -3844,13 +3844,11 @@ static int parse_separate_sysfs_files(int maj, int min,
       "subsystem_vendor",
       "subsystem_device",
     };
-    char path[PATH_MAX + 1], pci_path[PATH_MAX + 1];
+    char path[PATH_MAX + 1];
     unsigned int data[ARRAY_SIZE(attrs)];
     FILE *fp;
     int ret;
 
-    get_pci_path(maj, min, pci_path);
-
     for (unsigned i = ignore_revision ? 1 : 0; i < ARRAY_SIZE(attrs); i++) {
         if (snprintf(path, PATH_MAX, "%s/%s", pci_path, attrs[i]) < 0)
             return -errno;
@@ -3875,15 +3873,13 @@ static int parse_separate_sysfs_files(int maj, int min,
     return 0;
 }
 
-static int parse_config_sysfs_file(int maj, int min,
+static int parse_config_sysfs_file(const char *pci_path,
                                    drmPciDeviceInfoPtr device)
 {
-    char path[PATH_MAX + 1], pci_path[PATH_MAX + 1];
+    char path[PATH_MAX + 1];
     unsigned char config[64];
     int fd, ret;
 
-    get_pci_path(maj, min, pci_path);
-
     if (snprintf(path, PATH_MAX, "%s/config", pci_path) < 0)
         return -errno;
 
@@ -3911,11 +3907,15 @@ static int drmParsePciDeviceInfo(int maj, int min,
                                  uint32_t flags)
 {
 #ifdef __linux__
+    char pci_path[PATH_MAX + 1];
+
+    get_pci_path(maj, min, pci_path);
+
     if (!(flags & DRM_DEVICE_GET_PCI_REVISION))
-        return parse_separate_sysfs_files(maj, min, device, true);
+        return parse_separate_sysfs_files(pci_path, device, true);
 
-    if (parse_separate_sysfs_files(maj, min, device, false))
-        return parse_config_sysfs_file(maj, min, device);
+    if (parse_separate_sysfs_files(pci_path, device, false))
+        return parse_config_sysfs_file(pci_path, device);
 
     return 0;
 #elif defined(__OpenBSD__) || defined(__DragonFly__)
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.