On Wed, Apr 10, 2013 at 11:05:40PM -0700, Bryce Harrington wrote:
> Revert 70739e817b2d64bc020ea491f23a3574bdb6155e and mostly revert
> c31eac647a9ecf0fb20dc98266cadf0ba923ba14.
> 
> Further investigation shows the encountered race condition is between
> lightdm and plymouth-splash, as implemented in the Ubuntu distribution
> within the limitations of upstart's job coordination logic, and can (and
> should) be fixed within those limiations.  Not in xserver itself.
> 
> This leaves some of the diagnostic improvements from the recent patch
> series, in case others run into a similar situation.
> 
> Signed-off-by: Bryce Harrington <[email protected]>

Reviewed-by: Peter Hutterer <[email protected]>

and merged. the 2s wait delayed server startup in the test suite, causing
the test runs to go up from 200-400ms per test to 4.5s per test, which is
rather unacceptable if you're running a few hundred tests.

(get_drm_info is called twice for each device)

Cheers,
   Peter


> ---
>  hw/xfree86/os-support/linux/lnx_platform.c |   30 
> ++++++----------------------
>  1 file changed, 6 insertions(+), 24 deletions(-)
> 
> diff --git a/hw/xfree86/os-support/linux/lnx_platform.c 
> b/hw/xfree86/os-support/linux/lnx_platform.c
> index 444f8f5..33a953c 100644
> --- a/hw/xfree86/os-support/linux/lnx_platform.c
> +++ b/hw/xfree86/os-support/linux/lnx_platform.c
> @@ -26,35 +26,17 @@ get_drm_info(struct OdevAttributes *attribs, char *path)
>      char *buf;
>      int fd;
>      int err = 0;
> -    int tries = 0;
>  
>      fd = open(path, O_RDWR, O_CLOEXEC);
>      if (fd == -1)
>          return FALSE;
>  
> -    while (tries++ < 200) {
> -     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 */
> -
> -     err = drmSetInterfaceVersion(fd, &sv);
> -     if (!err) {
> -         if (tries > 1)
> -             LogMessage(X_INFO, "setversion 1.4 succeeded on try #%d\n", 
> tries);
> -         break;
> -     } if (err == -EACCES) {
> -         if (tries % 500 == 0)
> -             LogMessage(X_INFO, "waiting on drm device...\n");
> -     } else {
> -         break;
> -     }
> -
> -     usleep(10000);
> -
> -     if (!drmSetMaster(fd))
> -         LogMessage(X_INFO, "drmSetMaster succeeded\n");
> -    }
> +    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 */
> +
> +    err = drmSetInterfaceVersion(fd, &sv);
>      if (err) {
>          ErrorF("setversion 1.4 failed: %s\n", strerror(-err));
>       goto out;
> -- 
> 1.7.9.5
> 
> _______________________________________________
> [email protected]: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to