xfree86: Keep trying to set interface on drm for 2 seconds.
And if we've had to delay booting due to not being able to set the interface, fess up. Signed-off-by: Bryce Harrington <bryce@canonical.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
d1cc210de8
commit
c31eac647a
|
@ -26,16 +26,26 @@ get_drm_info(struct OdevAttributes *attribs, char *path)
|
||||||
char *buf;
|
char *buf;
|
||||||
int fd;
|
int fd;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
int tries = 0;
|
||||||
|
|
||||||
fd = open(path, O_RDWR, O_CLOEXEC);
|
fd = open(path, O_RDWR, O_CLOEXEC);
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
sv.drm_di_major = 1;
|
while (tries++ < 200) {
|
||||||
sv.drm_di_minor = 4;
|
sv.drm_di_major = 1;
|
||||||
sv.drm_dd_major = -1; /* Don't care */
|
sv.drm_di_minor = 4;
|
||||||
sv.drm_dd_minor = -1; /* Don't care */
|
sv.drm_dd_major = -1; /* Don't care */
|
||||||
err = drmSetInterfaceVersion(fd, &sv);
|
sv.drm_dd_minor = -1; /* Don't care */
|
||||||
|
|
||||||
|
err = drmSetInterfaceVersion(fd, &sv);
|
||||||
|
if (!err) {
|
||||||
|
if (tries > 1)
|
||||||
|
LogMessage(X_INFO, "setversion 1.4 succeeded on try #%d\n", tries);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
usleep(10000);
|
||||||
|
}
|
||||||
if (err) {
|
if (err) {
|
||||||
ErrorF("setversion 1.4 failed: %s\n", strerror(-err));
|
ErrorF("setversion 1.4 failed: %s\n", strerror(-err));
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in New Issue