Android.mk | 4 amdgpu/Android.mk | 2 configure.ac | 5 debian/changelog | 5 debian/upstream/signing-key.asc | 226 ++++++ freedreno/Android.mk | 2 freedreno/msm/msm_ringbuffer.c | 5 include/drm/vc4_drm.h | 21 intel/Android.mk | 2 intel/intel_chipset.h | 26 libkms/Android.mk | 2 libkms/linux.c | 5 nouveau/Android.mk | 2 radeon/Android.mk | 2 radeon/radeon_surface.c | 6 tests/amdgpu/basic_tests.c | 56 + tests/amdgpu/cs_tests.c | 51 + tests/modetest/Android.mk | 2 tests/proptest/Android.mk | 2 tests/util/Android.mk | 2 xf86drm.c | 1454 ++++++++++++++++++++-------------------- 21 files changed, 1108 insertions(+), 774 deletions(-)
New commits: commit 108c9902ef556e3d841a95f41b0c0431053363f1 Author: Andreas Boll <andreas.boll....@gmail.com> Date: Thu Jul 21 10:25:26 2016 +0200 Upload to unstable. diff --git a/debian/changelog b/debian/changelog index adb8c16..1a625e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -libdrm (2.4.69-1) UNRELEASED; urgency=medium +libdrm (2.4.69-1) unstable; urgency=medium [ Andreas Boll ] * New upstream release. @@ -9,7 +9,7 @@ libdrm (2.4.69-1) UNRELEASED; urgency=medium [ Julien Cristau ] * Build libdrm-tegra on arm64 (closes: #828023). Thanks, Martin Michlmayr! - -- Andreas Boll <andreas.boll....@gmail.com> Tue, 10 May 2016 14:45:31 +0200 + -- Andreas Boll <andreas.boll....@gmail.com> Thu, 21 Jul 2016 10:25:17 +0200 libdrm (2.4.68-1) unstable; urgency=medium commit e36e80c3fefb3bcee9c0b81f7b1b92345a5375bc Author: Andreas Boll <andreas.boll....@gmail.com> Date: Thu Jul 21 09:42:29 2016 +0200 Bump changelog. diff --git a/debian/changelog b/debian/changelog index 5af53f2..adb8c16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ -libdrm (2.4.68-2) UNRELEASED; urgency=medium +libdrm (2.4.69-1) UNRELEASED; urgency=medium [ Andreas Boll ] + * New upstream release. * Update debian/upstream/signing-key.asc. * Bump Standards-Version to 3.9.8, no changes needed. * Update watch url to use https instead of http. commit 9d92a1f02032b2598d44d93567a425356bb8c773 Author: Andreas Boll <andreas.boll....@gmail.com> Date: Thu Jul 21 09:34:11 2016 +0200 Update debian/upstream/signing-key.asc Add Eric Anholt's key D1FC9EE8. diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc index 0feee56..825d341 100644 --- a/debian/upstream/signing-key.asc +++ b/debian/upstream/signing-key.asc @@ -343,3 +343,229 @@ Lz7boQFSm/REGmPIUtRdE7hHCHijczuqvzhRQ1H7N3yGlbiCip6vH9VJTH4tkqK4 F2vRWhurk3aFZO7UT1FhAoX62bY6JPsotqQQJg4XP/M7uM6PMg== =z5S1 -----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +iqrZxglMEU1kp5n7vQ2OKB8g+29kluBxlWkTaQ== +=zFx6 +-----END PGP PUBLIC KEY BLOCK----- commit 5d830819480b089f62637fecc3aad11c5d1d5857 Author: Eric Anholt <e...@anholt.net> Date: Wed Jul 20 11:42:45 2016 -0700 Bump version to 2.4.69 for release. Signed-off-by: Eric Anholt <e...@anholt.net> diff --git a/configure.ac b/configure.ac index 90fc455..0f91d43 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.63]) AC_INIT([libdrm], - [2.4.68], + [2.4.69], [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI], [libdrm]) commit 2212a6465d1597fbc4d4ee0ea5ff87816bfa336e Author: Eric Anholt <e...@anholt.net> Date: Sat Jul 2 14:18:43 2016 -0700 vc4: Update kernel headers for getparam addition. This also brings over the C++ guard introduced recently in the kernel headers. Signed-off-by: Eric Anholt <e...@anholt.net> diff --git a/include/drm/vc4_drm.h b/include/drm/vc4_drm.h index da3caa0..919eece 100644 --- a/include/drm/vc4_drm.h +++ b/include/drm/vc4_drm.h @@ -26,6 +26,10 @@ #include "drm.h" +#if defined(__cplusplus) +extern "C" { +#endif + #define DRM_VC4_SUBMIT_CL 0x00 #define DRM_VC4_WAIT_SEQNO 0x01 #define DRM_VC4_WAIT_BO 0x02 @@ -33,6 +37,7 @@ #define DRM_VC4_MMAP_BO 0x04 #define DRM_VC4_CREATE_SHADER_BO 0x05 #define DRM_VC4_GET_HANG_STATE 0x06 +#define DRM_VC4_GET_PARAM 0x07 #define DRM_IOCTL_VC4_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl) #define DRM_IOCTL_VC4_WAIT_SEQNO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno) @@ -41,6 +46,7 @@ #define DRM_IOCTL_VC4_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo) #define DRM_IOCTL_VC4_CREATE_SHADER_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo) #define DRM_IOCTL_VC4_GET_HANG_STATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state) +#define DRM_IOCTL_VC4_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param) struct drm_vc4_submit_rcl_surface { __u32 hindex; /* Handle index, or ~0 if not present. */ @@ -276,4 +282,19 @@ struct drm_vc4_get_hang_state { __u32 pad[16]; }; +#define DRM_VC4_PARAM_V3D_IDENT0 0 +#define DRM_VC4_PARAM_V3D_IDENT1 1 +#define DRM_VC4_PARAM_V3D_IDENT2 2 +#define DRM_VC4_PARAM_SUPPORTS_BRANCHES 3 + +struct drm_vc4_get_param { + __u32 param; + __u32 pad; + __u64 value; +}; + +#if defined(__cplusplus) +} +#endif + #endif /* _VC4_DRM_H_ */ commit 8c8d5dd76fb80637031e824a48ceaa0f9f65d2dd Author: Mike Frysinger <vap...@gentoo.org> Date: Tue Jun 21 12:18:15 2016 -0400 pull in sys/sysmacros.h when available This header provides major/minor/makedev funcs under most Linux C libs. Pull it in to fix building with newer versions that drop the implicit include via sys/types.h. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94231 Signed-off-by: Mike Frysinger <vap...@gentoo.org> diff --git a/configure.ac b/configure.ac index a04ce87..90fc455 100644 --- a/configure.ac +++ b/configure.ac @@ -53,7 +53,8 @@ AC_USE_SYSTEM_EXTENSIONS AC_SYS_LARGEFILE AC_FUNC_ALLOCA -AC_CHECK_HEADERS([sys/mkdev.h sys/sysctl.h sys/select.h]) +AC_HEADER_MAJOR +AC_CHECK_HEADERS([sys/sysctl.h sys/select.h]) # Initialize libtool LT_PREREQ([2.2]) diff --git a/libkms/linux.c b/libkms/linux.c index 6e0da83..69eb1aa 100644 --- a/libkms/linux.c +++ b/libkms/linux.c @@ -41,9 +41,12 @@ #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> -#ifdef HAVE_SYS_MKDEV_H +#ifdef MAJOR_IN_MKDEV #include <sys/mkdev.h> #endif +#ifdef MAJOR_IN_SYSMACROS +#include <sys/sysmacros.h> +#endif #include "libdrm_macros.h" #include "internal.h" diff --git a/xf86drm.c b/xf86drm.c index e99f2e2..8a858ef 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -54,8 +54,11 @@ #include <sys/ioctl.h> #include <sys/time.h> #include <stdarg.h> -#ifdef HAVE_SYS_MKDEV_H -# include <sys/mkdev.h> /* defines major(), minor(), and makedev() on Solaris */ +#ifdef MAJOR_IN_MKDEV +#include <sys/mkdev.h> +#endif +#ifdef MAJOR_IN_SYSMACROS +#include <sys/sysmacros.h> #endif #include <math.h> commit 50d3c85bdb4ac0b3d546336605a722889aff7066 Author: Jan Vesely <jan.ves...@rutgers.edu> Date: Thu Jun 30 14:22:52 2016 -0400 xf86drm.c: Fix mix of tabs and spaces Remove whitespace at the end of line. diff --git a/xf86drm.c b/xf86drm.c index 804a413..e99f2e2 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -1,5 +1,5 @@ /** - * \file xf86drm.c + * \file xf86drm.c * User-level interface to DRM device * * \author Rickard E. (Rik) Faith <fa...@valinux.com> @@ -70,13 +70,13 @@ #include "util_math.h" #ifdef __OpenBSD__ -#define DRM_PRIMARY_MINOR_NAME "drm" -#define DRM_CONTROL_MINOR_NAME "drmC" -#define DRM_RENDER_MINOR_NAME "drmR" +#define DRM_PRIMARY_MINOR_NAME "drm" +#define DRM_CONTROL_MINOR_NAME "drmC" +#define DRM_RENDER_MINOR_NAME "drmR" #else -#define DRM_PRIMARY_MINOR_NAME "card" -#define DRM_CONTROL_MINOR_NAME "controlD" -#define DRM_RENDER_MINOR_NAME "renderD" +#define DRM_PRIMARY_MINOR_NAME "card" +#define DRM_CONTROL_MINOR_NAME "controlD" +#define DRM_RENDER_MINOR_NAME "renderD" #endif #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) @@ -96,7 +96,7 @@ #endif /* __OpenBSD__ */ #ifndef DRM_MAJOR -#define DRM_MAJOR 226 /* Linux */ +#define DRM_MAJOR 226 /* Linux */ #endif #define DRM_MSG_VERBOSITY 3 @@ -128,18 +128,18 @@ drmDebugPrint(const char *format, va_list ap) void drmMsg(const char *format, ...) { - va_list ap; + va_list ap; const char *env; if (((env = getenv("LIBGL_DEBUG")) && strstr(env, "verbose")) || (drm_server_info && drm_server_info->debug_print)) { - va_start(ap, format); - if (drm_server_info) { - drm_server_info->debug_print(format,ap); - } else { - drmDebugPrint(format, ap); - } - va_end(ap); + va_start(ap, format); + if (drm_server_info) { + drm_server_info->debug_print(format,ap); + } else { + drmDebugPrint(format, ap); + } + va_end(ap); } } @@ -166,10 +166,10 @@ void drmFree(void *pt) int drmIoctl(int fd, unsigned long request, void *arg) { - int ret; + int ret; do { - ret = ioctl(fd, request, arg); + ret = ioctl(fd, request, arg); } while (ret == -1 && (errno == EINTR || errno == EAGAIN)); return ret; } @@ -190,16 +190,16 @@ drmHashEntry *drmGetEntry(int fd) drmHashEntry *entry; if (!drmHashTable) - drmHashTable = drmHashCreate(); + drmHashTable = drmHashCreate(); if (drmHashLookup(drmHashTable, key, &value)) { - entry = drmMalloc(sizeof(*entry)); - entry->fd = fd; - entry->f = NULL; - entry->tagTable = drmHashCreate(); - drmHashInsert(drmHashTable, key, entry); + entry = drmMalloc(sizeof(*entry)); + entry->fd = fd; + entry->f = NULL; + entry->tagTable = drmHashCreate(); + drmHashInsert(drmHashTable, key, entry); } else { - entry = value; + entry = value; } return entry; } @@ -221,41 +221,41 @@ static int drmMatchBusID(const char *id1, const char *id2, int pci_domain_ok) { /* First, check if the IDs are exactly the same */ if (strcasecmp(id1, id2) == 0) - return 1; + return 1; /* Try to match old/new-style PCI bus IDs. */ if (strncasecmp(id1, "pci", 3) == 0) { - unsigned int o1, b1, d1, f1; - unsigned int o2, b2, d2, f2; - int ret; - - ret = sscanf(id1, "pci:%04x:%02x:%02x.%u", &o1, &b1, &d1, &f1); - if (ret != 4) { - o1 = 0; - ret = sscanf(id1, "PCI:%u:%u:%u", &b1, &d1, &f1); - if (ret != 3) - return 0; - } - - ret = sscanf(id2, "pci:%04x:%02x:%02x.%u", &o2, &b2, &d2, &f2); - if (ret != 4) { - o2 = 0; - ret = sscanf(id2, "PCI:%u:%u:%u", &b2, &d2, &f2); - if (ret != 3) - return 0; - } - - /* If domains aren't properly supported by the kernel interface, - * just ignore them, which sucks less than picking a totally random - * card with "open by name" - */ - if (!pci_domain_ok) - o1 = o2 = 0; - - if ((o1 != o2) || (b1 != b2) || (d1 != d2) || (f1 != f2)) - return 0; - else - return 1; + unsigned int o1, b1, d1, f1; + unsigned int o2, b2, d2, f2; + int ret; + + ret = sscanf(id1, "pci:%04x:%02x:%02x.%u", &o1, &b1, &d1, &f1); + if (ret != 4) { + o1 = 0; + ret = sscanf(id1, "PCI:%u:%u:%u", &b1, &d1, &f1); + if (ret != 3) + return 0; + } + + ret = sscanf(id2, "pci:%04x:%02x:%02x.%u", &o2, &b2, &d2, &f2); + if (ret != 4) { + o2 = 0; + ret = sscanf(id2, "PCI:%u:%u:%u", &b2, &d2, &f2); + if (ret != 3) + return 0; + } + + /* If domains aren't properly supported by the kernel interface, + * just ignore them, which sucks less than picking a totally random + * card with "open by name" + */ + if (!pci_domain_ok) + o1 = o2 = 0; + + if ((o1 != o2) || (b1 != b2) || (d1 != d2) || (f1 != f2)) + return 0; + else + return 1; } return 0; } @@ -277,18 +277,18 @@ static int drmMatchBusID(const char *id1, const char *id2, int pci_domain_ok) #if !defined(UDEV) static int chown_check_return(const char *path, uid_t owner, gid_t group) { - int rv; + int rv; - do { - rv = chown(path, owner, group); - } while (rv != 0 && errno == EINTR); + do { + rv = chown(path, owner, group); + } while (rv != 0 && errno == EINTR); - if (rv == 0) - return 0; + if (rv == 0) + return 0; - drmMsg("Failed to change owner or group for file %s! %d: %s\n", - path, errno, strerror(errno)); - return -1; + drmMsg("Failed to change owner or group for file %s! %d: %s\n", + path, errno, strerror(errno)); + return -1; } #endif @@ -297,7 +297,7 @@ static int chown_check_return(const char *path, uid_t owner, gid_t group) * * \param dev major and minor numbers of the device. * \param minor minor number of the device. - * + * * \return a file descriptor on success, or a negative value on error. * * \internal @@ -321,99 +321,99 @@ static int drmOpenDevice(dev_t dev, int minor, int type) switch (type) { case DRM_NODE_PRIMARY: - dev_name = DRM_DEV_NAME; - break; + dev_name = DRM_DEV_NAME; + break; case DRM_NODE_CONTROL: - dev_name = DRM_CONTROL_DEV_NAME; - break; + dev_name = DRM_CONTROL_DEV_NAME; + break; case DRM_NODE_RENDER: - dev_name = DRM_RENDER_DEV_NAME; - break; + dev_name = DRM_RENDER_DEV_NAME; + break; default: - return -EINVAL; + return -EINVAL; }; sprintf(buf, dev_name, DRM_DIR_NAME, minor); drmMsg("drmOpenDevice: node name is %s\n", buf); if (drm_server_info && drm_server_info->get_perms) { - drm_server_info->get_perms(&serv_group, &serv_mode); - devmode = serv_mode ? serv_mode : DRM_DEV_MODE; - devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH); + drm_server_info->get_perms(&serv_group, &serv_mode); + devmode = serv_mode ? serv_mode : DRM_DEV_MODE; + devmode &= ~(S_IXUSR|S_IXGRP|S_IXOTH); } #if !defined(UDEV) if (stat(DRM_DIR_NAME, &st)) { - if (!isroot) - return DRM_ERR_NOT_ROOT; - mkdir(DRM_DIR_NAME, DRM_DEV_DIRMODE); - chown_check_return(DRM_DIR_NAME, 0, 0); /* root:root */ - chmod(DRM_DIR_NAME, DRM_DEV_DIRMODE); + if (!isroot) + return DRM_ERR_NOT_ROOT; + mkdir(DRM_DIR_NAME, DRM_DEV_DIRMODE); + chown_check_return(DRM_DIR_NAME, 0, 0); /* root:root */ + chmod(DRM_DIR_NAME, DRM_DEV_DIRMODE); } /* Check if the device node exists and create it if necessary. */ if (stat(buf, &st)) { - if (!isroot) - return DRM_ERR_NOT_ROOT; - remove(buf); - mknod(buf, S_IFCHR | devmode, dev); + if (!isroot) + return DRM_ERR_NOT_ROOT; + remove(buf); + mknod(buf, S_IFCHR | devmode, dev); } if (drm_server_info && drm_server_info->get_perms) { - group = ((int)serv_group >= 0) ? serv_group : DRM_DEV_GID; - chown_check_return(buf, user, group); - chmod(buf, devmode); + group = ((int)serv_group >= 0) ? serv_group : DRM_DEV_GID; + chown_check_return(buf, user, group); + chmod(buf, devmode); } #else /* if we modprobed then wait for udev */ { - int udev_count = 0; + int udev_count = 0; wait_for_udev: if (stat(DRM_DIR_NAME, &st)) { - usleep(20); - udev_count++; - - if (udev_count == 50) - return -1; - goto wait_for_udev; - } - - if (stat(buf, &st)) { - usleep(20); - udev_count++; - - if (udev_count == 50) - return -1; - goto wait_for_udev; - } + usleep(20); + udev_count++; + + if (udev_count == 50) + return -1; + goto wait_for_udev; + } + + if (stat(buf, &st)) { + usleep(20); + udev_count++; + + if (udev_count == 50) + return -1; + goto wait_for_udev; + } } #endif fd = open(buf, O_RDWR, 0); drmMsg("drmOpenDevice: open result is %d, (%s)\n", - fd, fd < 0 ? strerror(errno) : "OK"); + fd, fd < 0 ? strerror(errno) : "OK"); if (fd >= 0) - return fd; + return fd; #if !defined(UDEV) /* Check if the device node is not what we expect it to be, and recreate it * and try again if so. */ if (st.st_rdev != dev) { - if (!isroot) - return DRM_ERR_NOT_ROOT; - remove(buf); - mknod(buf, S_IFCHR | devmode, dev); - if (drm_server_info && drm_server_info->get_perms) { - chown_check_return(buf, user, group); - chmod(buf, devmode); - } + if (!isroot) + return DRM_ERR_NOT_ROOT; + remove(buf); + mknod(buf, S_IFCHR | devmode, dev); + if (drm_server_info && drm_server_info->get_perms) { + chown_check_return(buf, user, group); + chmod(buf, devmode); + } } fd = open(buf, O_RDWR, 0); drmMsg("drmOpenDevice: open result is %d, (%s)\n", - fd, fd < 0 ? strerror(errno) : "OK"); + fd, fd < 0 ? strerror(errno) : "OK"); if (fd >= 0) - return fd; + return fd; drmMsg("drmOpenDevice: Open failed\n"); remove(buf); @@ -429,7 +429,7 @@ wait_for_udev: * \param create allow to create the device if set. * * \return a file descriptor on success, or a negative value on error. - * + * * \internal * Calls drmOpenDevice() if \p create is set, otherwise assembles the device * name from \p minor and opens it. @@ -439,37 +439,37 @@ static int drmOpenMinor(int minor, int create, int type) int fd; char buf[64]; const char *dev_name; - + if (create) - return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type); - + return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type); + switch (type) { case DRM_NODE_PRIMARY: - dev_name = DRM_DEV_NAME; - break; + dev_name = DRM_DEV_NAME; + break; case DRM_NODE_CONTROL: - dev_name = DRM_CONTROL_DEV_NAME; - break; + dev_name = DRM_CONTROL_DEV_NAME; + break; case DRM_NODE_RENDER: - dev_name = DRM_RENDER_DEV_NAME; - break; + dev_name = DRM_RENDER_DEV_NAME; + break; default: - return -EINVAL; + return -EINVAL; }; sprintf(buf, dev_name, DRM_DIR_NAME, minor); if ((fd = open(buf, O_RDWR, 0)) >= 0) - return fd; + return fd; return -errno; } /** * Determine whether the DRM kernel driver has been loaded. - * + * * \return 1 if the DRM driver is loaded, 0 otherwise. * - * \internal + * \internal * Determine the presence of the kernel driver by attempting to open the 0 * minor and get version information. For backward compatibility with older * Linux implementations, /proc/dri is also checked. @@ -482,16 +482,16 @@ int drmAvailable(void) if ((fd = drmOpenMinor(0, 1, DRM_NODE_PRIMARY)) < 0) { #ifdef __linux__ - /* Try proc for backward Linux compatibility */ - if (!access("/proc/dri/0", R_OK)) - return 1; + /* Try proc for backward Linux compatibility */ + if (!access("/proc/dri/0", R_OK)) + return 1; #endif - return 0; + return 0; } - + if ((version = drmGetVersion(fd))) { - retval = 1; - drmFreeVersion(version); + retval = 1; + drmFreeVersion(version); } close(fd); @@ -570,37 +570,37 @@ static int drmOpenByBusid(const char *busid, int type) drmMsg("drmOpenByBusid: Searching for BusID %s\n", busid); for (i = base; i < base + DRM_MAX_MINOR; i++) { - fd = drmOpenMinor(i, 1, type); - drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd); - if (fd >= 0) { - /* We need to try for 1.4 first for proper PCI domain support - * and if that fails, we know the kernel is busted - */ - sv.drm_di_major = 1; - sv.drm_di_minor = 4; - sv.drm_dd_major = -1; /* Don't care */ - sv.drm_dd_minor = -1; /* Don't care */ - if (drmSetInterfaceVersion(fd, &sv)) { + fd = drmOpenMinor(i, 1, type); + drmMsg("drmOpenByBusid: drmOpenMinor returns %d\n", fd); + if (fd >= 0) { + /* We need to try for 1.4 first for proper PCI domain support + * and if that fails, we know the kernel is busted + */ + sv.drm_di_major = 1; + sv.drm_di_minor = 4; + sv.drm_dd_major = -1; /* Don't care */ + sv.drm_dd_minor = -1; /* Don't care */ + if (drmSetInterfaceVersion(fd, &sv)) { #ifndef __alpha__ - pci_domain_ok = 0; + pci_domain_ok = 0; #endif - sv.drm_di_major = 1; - sv.drm_di_minor = 1; - sv.drm_dd_major = -1; /* Don't care */ - sv.drm_dd_minor = -1; /* Don't care */ - drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n"); - drmSetInterfaceVersion(fd, &sv); - } - buf = drmGetBusid(fd); - drmMsg("drmOpenByBusid: drmGetBusid reports %s\n", buf); - if (buf && drmMatchBusID(buf, busid, pci_domain_ok)) { - drmFreeBusid(buf); - return fd; - } - if (buf) - drmFreeBusid(buf); - close(fd); - } + sv.drm_di_major = 1; + sv.drm_di_minor = 1; + sv.drm_dd_major = -1; /* Don't care */ + sv.drm_dd_minor = -1; /* Don't care */ + drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n"); + drmSetInterfaceVersion(fd, &sv); + } + buf = drmGetBusid(fd); + drmMsg("drmOpenByBusid: drmGetBusid reports %s\n", buf); + if (buf && drmMatchBusID(buf, busid, pci_domain_ok)) { + drmFreeBusid(buf); + return fd; + } + if (buf) + drmFreeBusid(buf); + close(fd); + } } return -1; } @@ -611,14 +611,14 @@ static int drmOpenByBusid(const char *busid, int type) * * \param name driver name. * \param type the device node type. - * + * * \return a file descriptor on success, or a negative value on error. - * + * * \internal * This function opens the first minor number that matches the driver name and * isn't already in use. If it's in use it then it will already have a bus ID * assigned.