1*4882a593SmuzhiyunFrom 75ac1c5aad1ceec6d373390cfcfd473da6656786 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Wed, 12 Jan 2022 11:42:19 +0800
4*4882a593SmuzhiyunSubject: [PATCH 5/5] HACK: Bypass
5*4882a593Smuzhiyun drm{GetBusid,drmAuthMagic,SetInterfaceVersion} by default
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunA few versions of Mali GBM winsys would try to call those APIs.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSet env "DRM_ALLOW_GET_BUSID" "DRM_ALLOW_AUTH_MAGIC" and
10*4882a593Smuzhiyun"DRM_ALLOW_SET_VERSION" to enable them.
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
13*4882a593Smuzhiyun---
14*4882a593Smuzhiyun xf86drm.c | 9 +++++++++
15*4882a593Smuzhiyun 1 file changed, 9 insertions(+)
16*4882a593Smuzhiyun
17*4882a593Smuzhiyundiff --git a/xf86drm.c b/xf86drm.c
18*4882a593Smuzhiyunindex e44b926..ac9fd85 100644
19*4882a593Smuzhiyun--- a/xf86drm.c
20*4882a593Smuzhiyun+++ b/xf86drm.c
21*4882a593Smuzhiyun@@ -1439,6 +1439,9 @@ drm_public char *drmGetBusid(int fd)
22*4882a593Smuzhiyun {
23*4882a593Smuzhiyun     drm_unique_t u;
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun+    if (!getenv("DRM_ALLOW_GET_BUSID"))
26*4882a593Smuzhiyun+        return strdup("");
27*4882a593Smuzhiyun+
28*4882a593Smuzhiyun     memclear(u);
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun     if (drmIoctl(fd, DRM_IOCTL_GET_UNIQUE, &u))
31*4882a593Smuzhiyun@@ -1497,6 +1500,9 @@ drm_public int drmAuthMagic(int fd, drm_magic_t magic)
32*4882a593Smuzhiyun {
33*4882a593Smuzhiyun     drm_auth_t auth;
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun+    if (!getenv("DRM_ALLOW_AUTH_MAGIC"))
36*4882a593Smuzhiyun+        return 0;
37*4882a593Smuzhiyun+
38*4882a593Smuzhiyun     memclear(auth);
39*4882a593Smuzhiyun     auth.magic = magic;
40*4882a593Smuzhiyun     if (drmIoctl(fd, DRM_IOCTL_AUTH_MAGIC, &auth))
41*4882a593Smuzhiyun@@ -2995,6 +3001,9 @@ drm_public int drmSetInterfaceVersion(int fd, drmSetVersion *version)
42*4882a593Smuzhiyun     int retcode = 0;
43*4882a593Smuzhiyun     drm_set_version_t sv;
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun+    if (!getenv("DRM_ALLOW_SET_VERSION"))
46*4882a593Smuzhiyun+        return 0;
47*4882a593Smuzhiyun+
48*4882a593Smuzhiyun     memclear(sv);
49*4882a593Smuzhiyun     sv.drm_di_major = version->drm_di_major;
50*4882a593Smuzhiyun     sv.drm_di_minor = version->drm_di_minor;
51*4882a593Smuzhiyun--
52*4882a593Smuzhiyun2.20.1
53*4882a593Smuzhiyun
54