From patchwork Fri Mar 15 18:02:56 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryce Harrington X-Patchwork-Id: 2279881 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id 47FA73FC8F for ; Fri, 15 Mar 2013 18:06:42 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 423BDE6066 for ; Fri, 15 Mar 2013 11:06:42 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from smtp.outflux.net (smtp.outflux.net [198.145.64.163]) by gabe.freedesktop.org (Postfix) with ESMTP id 2A417E6ABE for ; Fri, 15 Mar 2013 11:03:18 -0700 (PDT) Received: from humber.bryceharrington.org (static-50-53-70-170.bvtn.or.frontiernet.net [50.53.70.170]) (authenticated bits=0) by vinyl.outflux.net (8.14.4/8.14.4/Debian-2ubuntu2) with ESMTP id r2FI36UO013852 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 15 Mar 2013 11:03:13 -0700 From: Bryce Harrington To: intel-gfx@lists.freedesktop.org, chris@chris-wilson.co.uk Date: Fri, 15 Mar 2013 11:02:56 -0700 Message-Id: <1363370578-30443-7-git-send-email-bryce@canonical.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1363370578-30443-1-git-send-email-bryce@canonical.com> References: <1363370578-30443-1-git-send-email-bryce@canonical.com> X-MIMEDefang-Filter: outflux$Revision: 1.316 $ X-HELO: humber.bryceharrington.org X-Scanned-By: MIMEDefang 2.71 on 198.145.64.163 Cc: Bryce Harrington Subject: [Intel-gfx] [PATCH 6/8] xfree86: Fix race condition failure opening drm. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org If other processes have had drm open previously, xserver may attempt to open the device too early and fail, with xserver error exit "Cannot run in framebuffer mode" or Xorg.0.log messages about "setversion 1.4 failed". In this situation, we're receiving back -EACCES from libdrm. To address this we need to re-set ourselves as the drm master, and keep trying to set the interface until it works (or until we give up). See https://bugs.launchpad.net/ubuntu/+source/libdrm/+bug/982889 Signed-off-by: Bryce Harrington --- hw/xfree86/os-support/linux/lnx_platform.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c index 4094866..bb76d90 100644 --- a/hw/xfree86/os-support/linux/lnx_platform.c +++ b/hw/xfree86/os-support/linux/lnx_platform.c @@ -43,8 +43,14 @@ get_drm_info(struct OdevAttributes *attribs, char *path) if (tries > 1) LogMessage(X_INFO, "setversion 1.4 succeeded on try #%d\n", tries); break; + } if (err != -EACCES) { + break; } + usleep(1000); + + if (!drmSetMaster(fd)) + LogMessage(X_INFO, "drmSetMaster succeeded\n"); } if (err) { ErrorF("setversion 1.4 failed: %s\n", strerror(-err));