libdrm: Changes to 'debian-unstable'
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.dev@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.dev@gmail.com> Tue, 10 May 2016 14:45:31 +0200
+ -- Andreas Boll <andreas.boll.dev@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.dev@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.dev@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 <eric@anholt.net>
Date: Wed Jul 20 11:42:45 2016 -0700
Bump version to 2.4.69 for release.
Signed-off-by: Eric Anholt <eric@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 <eric@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 <eric@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 <vapier@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 <vapier@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.vesely@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 <faith@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.
Reply to: