Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3662745imm; Mon, 30 Jul 2018 00:54:04 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeO6PiVlJnLs4iDGAvB84PCqg4IdSb/mlczfzhEg9tq/7mSoPLH01aSUNDGeYtszg4HY1S+ X-Received: by 2002:a17:902:102b:: with SMTP id b40-v6mr15363624pla.125.1532937244915; Mon, 30 Jul 2018 00:54:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532937244; cv=none; d=google.com; s=arc-20160816; b=G09MqYx4YArAUKVgFf9YJ7irYvlH3csMjLhC3h/GzgrUPxJ4UtufFZGBFRsuwJfn9z PTFkDbX+5uMjQnuaAed3KkyYk8L7hBGB40Q3Nt55nZrRAIUkUpPfSshwVEMj818+YkeS X/2pVMV5hEyIQ10lmc24tRFSQdsyhjFnxvIL3oFR49MQBIfICA9cjY0VZK6Lvhnv9pbn pwqPun+SKbRXjeQ8SRDX5Hd8juhAWL/roYl45/N3bSAu/ThOha9cQP83BSvrRuuskJa9 O831iQCu3sQGKJYUSRQnHErIaWRKx7MCPZXiD3VZPlxvHKylAojGDS9NsSTt8EeJG73c G1xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=F+DF0cqzEqD+tqkvsiMGpzhqXYo0aMtw36h5fO3HcPQ=; b=0d0MFQFg48+2ZfzkzHcNOgZaMJ+TkSOO9iW+PTpGBv3dCE/BjALUKq+hc4o6K4vpbr 0NZcW01l55Qu8BYABUV0qXBIE51zaq++CYZSSSLWnXJlfjPpif86p/9m3eDmjE71RGtW IeGmkS5u4vWUxXN+Fc0psBtrYm5un2oD7F4ICu9lD6ifQ3crA4s2BTEMIf/ZQLFOcKVN Jsk02YVw24OMog/R7DVx5A+RGxWQTbyT0rNyUY5VV/U6v1Kek3wTTsFmN/SjAduhCa82 X8WKl0IlgXQxMlnwW9cOJAtvGq95Urd5i95ZzmXcnnwbSgArCQ2nOfZSGiOo4fAJGBYu RsKA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b35-v6si2214321plb.273.2018.07.30.00.53.50; Mon, 30 Jul 2018 00:54:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726508AbeG3J0r (ORCPT + 99 others); Mon, 30 Jul 2018 05:26:47 -0400 Received: from mga14.intel.com ([192.55.52.115]:34962 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726370AbeG3J0r (ORCPT ); Mon, 30 Jul 2018 05:26:47 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jul 2018 00:53:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,422,1526367600"; d="scan'208";a="75665730" Received: from chanse1-mobl.ger.corp.intel.com (HELO [10.252.51.109]) ([10.252.51.109]) by fmsmga004.fm.intel.com with ESMTP; 30 Jul 2018 00:53:01 -0700 Subject: Re: [PATCH] drm/kms/plane: Avoiding redundant checks in case of EDEADLK retries To: Satendra Singh Thakur , Gustavo Padovan , Sean Paul , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: vineet.j@samsung.com, hemanshu.s@samsung.com, nishant.y08@samsung.com, sst2005@gmail.com References: <20180730055515epcas5p3358ce6d5e80b66256ea92aa5659f74bb~GD9F1P8zb2847928479epcas5p3D@epcas5p3.samsung.com> From: Maarten Lankhorst Message-ID: <9fa529a6-8ad0-9e9d-99a4-1db8284ecefd@linux.intel.com> Date: Mon, 30 Jul 2018 09:53:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180730055515epcas5p3358ce6d5e80b66256ea92aa5659f74bb~GD9F1P8zb2847928479epcas5p3D@epcas5p3.samsung.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Op 30-07-18 om 07:18 schreef Satendra Singh Thakur: > 1. Currently, if modeset_lock is re-tried many times in case of EDEADLK > error, then this will be the code flow > > retry: > ret = drm_modeset_lock(); > > if (ret)-->this is true > goto out; > > out: > if (fb) > if (plane->old_fb) > if (ret == -EDEADLK) > goto retry; > It can be observed that checks on fb, old_fb are redundant > in retry-case. > If we keep if (ret == -EDEADLK) right after the out label, > that will avoid redundant checks. > It won't affect normal scenario (non-retry case). > 2. Moved NULL assignment inside if statement related to NULL check > > Signed-off-by: Satendra Singh Thakur > --- > drivers/gpu/drm/drm_plane.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c > index 0350544..ed42cd4 100644 > --- a/drivers/gpu/drm/drm_plane.c > +++ b/drivers/gpu/drm/drm_plane.c > @@ -658,9 +658,10 @@ static int __setplane_internal(struct drm_plane *plane, > } > > out: > - if (plane->old_fb) > + if (plane->old_fb) { > drm_framebuffer_put(plane->old_fb); > - plane->old_fb = NULL; > + plane->old_fb = NULL; > + } > > return ret; > } > @@ -1097,17 +1098,17 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, > } > > out: > - if (fb) > - drm_framebuffer_put(fb); > - if (plane->old_fb) > - drm_framebuffer_put(plane->old_fb); > - plane->old_fb = NULL; > - > if (ret == -EDEADLK) { > ret = drm_modeset_backoff(&ctx); > if (!ret) > goto retry; > } > + if (fb) > + drm_framebuffer_put(fb); > + if (plane->old_fb) { > + drm_framebuffer_put(plane->old_fb); > + plane->old_fb = NULL; > + } > > drm_modeset_drop_locks(&ctx); > drm_modeset_acquire_fini(&ctx); It's not redundant. plane->old_fb is protected by the plane_mutex lock and should be null before dropping the locks in drm_modeset_backoff(). Else other code will trip with a WARN_ON(plane->old_fb != NULL); Before sending any more patches I would strongly suggest setting CONFIG_DEBUG_WW_MUTEX_SLOWPATH and CONFIG_PROVE_LOCKING in your kernel, and try to run the IGT testsuite. ~Maarten