From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Date: Wed, 09 Oct 2019 17:04:41 +0000 Subject: [PATCH AUTOSEL 5.3 02/68] drm: Free the writeback_job when it with an empty fb Message-Id: <20191009170547.32204-2-sashal@kernel.org> List-Id: References: <20191009170547.32204-1-sashal@kernel.org> In-Reply-To: <20191009170547.32204-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , linux-sh@vger.kernel.org, Liviu Dudau , dri-devel@lists.freedesktop.org, James Qian Wang , Lowry Li From: "Lowry Li (Arm Technology China)" [ Upstream commit 8581d51055a08cc6eb061c8856062290e8582ce4 ] Adds the check if the writeback_job with an empty fb, then it should be freed in atomic_check phase. With this change, the driver users will not check empty fb case any more. So refined accordingly. Signed-off-by: Lowry Li (Arm Technology China) Reviewed-by: Liviu Dudau Reviewed-by: James Qian Wang (Arm Technology China) Signed-off-by: james qian wang (Arm Technology China) Link: https://patchwork.freedesktop.org/patch/msgid/1564571048-15029-2-git-send-email-lowry.li@arm.com Signed-off-by: Sasha Levin --- .../drm/arm/display/komeda/komeda_wb_connector.c | 3 +-- drivers/gpu/drm/arm/malidp_mw.c | 4 ++-- drivers/gpu/drm/drm_atomic.c | 13 +++++++++---- drivers/gpu/drm/rcar-du/rcar_du_writeback.c | 4 ++-- drivers/gpu/drm/vc4/vc4_txp.c | 5 ++--- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c index 2851cac94d869..23fbee268119f 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c @@ -43,9 +43,8 @@ komeda_wb_encoder_atomic_check(struct drm_encoder *encoder, struct komeda_data_flow_cfg dflow; int err; - if (!writeback_job || !writeback_job->fb) { + if (!writeback_job) return 0; - } if (!crtc_st->active) { DRM_DEBUG_ATOMIC("Cannot write the composition result out on a inactive CRTC.\n"); diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_mw.c index 2e812525025dd..a59227b2cdb55 100644 --- a/drivers/gpu/drm/arm/malidp_mw.c +++ b/drivers/gpu/drm/arm/malidp_mw.c @@ -130,7 +130,7 @@ malidp_mw_encoder_atomic_check(struct drm_encoder *encoder, struct drm_framebuffer *fb; int i, n_planes; - if (!conn_state->writeback_job || !conn_state->writeback_job->fb) + if (!conn_state->writeback_job) return 0; fb = conn_state->writeback_job->fb; @@ -247,7 +247,7 @@ void malidp_mw_atomic_commit(struct drm_device *drm, mw_state = to_mw_state(conn_state); - if (conn_state->writeback_job && conn_state->writeback_job->fb) { + if (conn_state->writeback_job) { struct drm_framebuffer *fb = conn_state->writeback_job->fb; DRM_DEV_DEBUG_DRIVER(drm->dev, diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index 419381abbdd16..14aeaf7363210 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -430,10 +430,15 @@ static int drm_atomic_connector_check(struct drm_connector *connector, return -EINVAL; } - if (writeback_job->out_fence && !writeback_job->fb) { - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n", - connector->base.id, connector->name); - return -EINVAL; + if (!writeback_job->fb) { + if (writeback_job->out_fence) { + DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n", + connector->base.id, connector->name); + return -EINVAL; + } + + drm_writeback_cleanup_job(writeback_job); + state->writeback_job = NULL; } return 0; diff --git a/drivers/gpu/drm/rcar-du/rcar_du_writeback.c b/drivers/gpu/drm/rcar-du/rcar_du_writeback.c index ae07290bba6a4..04efa78d70b6e 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_writeback.c @@ -147,7 +147,7 @@ static int rcar_du_wb_enc_atomic_check(struct drm_encoder *encoder, struct drm_device *dev = encoder->dev; struct drm_framebuffer *fb; - if (!conn_state->writeback_job || !conn_state->writeback_job->fb) + if (!conn_state->writeback_job) return 0; fb = conn_state->writeback_job->fb; @@ -221,7 +221,7 @@ void rcar_du_writeback_setup(struct rcar_du_crtc *rcrtc, unsigned int i; state = rcrtc->writeback.base.state; - if (!state || !state->writeback_job || !state->writeback_job->fb) + if (!state || !state->writeback_job) return; fb = state->writeback_job->fb; diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index 96f91c1b4b6e6..e92fa12750343 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -229,7 +229,7 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn, int i; conn_state = drm_atomic_get_new_connector_state(state, conn); - if (!conn_state->writeback_job || !conn_state->writeback_job->fb) + if (!conn_state->writeback_job) return 0; crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc); @@ -269,8 +269,7 @@ static void vc4_txp_connector_atomic_commit(struct drm_connector *conn, u32 ctrl; int i; - if (WARN_ON(!conn_state->writeback_job || - !conn_state->writeback_job->fb)) + if (WARN_ON(!conn_state->writeback_job)) return; mode = &conn_state->crtc->state->adjusted_mode; -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 5.3 02/68] drm: Free the writeback_job when it with an empty fb Date: Wed, 9 Oct 2019 13:04:41 -0400 Message-ID: <20191009170547.32204-2-sashal@kernel.org> References: <20191009170547.32204-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id F39436EA1F for ; Wed, 9 Oct 2019 17:23:53 +0000 (UTC) In-Reply-To: <20191009170547.32204-1-sashal@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , linux-sh@vger.kernel.org, Liviu Dudau , dri-devel@lists.freedesktop.org, James Qian Wang , Lowry Li List-Id: dri-devel@lists.freedesktop.org RnJvbTogIkxvd3J5IExpIChBcm0gVGVjaG5vbG9neSBDaGluYSkiIDxMb3dyeS5MaUBhcm0uY29t PgoKWyBVcHN0cmVhbSBjb21taXQgODU4MWQ1MTA1NWEwOGNjNmViMDYxYzg4NTYwNjIyOTBlODU4 MmNlNCBdCgpBZGRzIHRoZSBjaGVjayBpZiB0aGUgd3JpdGViYWNrX2pvYiB3aXRoIGFuIGVtcHR5 IGZiLCB0aGVuIGl0IHNob3VsZApiZSBmcmVlZCBpbiBhdG9taWNfY2hlY2sgcGhhc2UuCgpXaXRo IHRoaXMgY2hhbmdlLCB0aGUgZHJpdmVyIHVzZXJzIHdpbGwgbm90IGNoZWNrIGVtcHR5IGZiIGNh c2UgYW55IG1vcmUuClNvIHJlZmluZWQgYWNjb3JkaW5nbHkuCgpTaWduZWQtb2ZmLWJ5OiBMb3dy eSBMaSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxsb3dyeS5saUBhcm0uY29tPgpSZXZpZXdlZC1i eTogTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+ClJldmlld2VkLWJ5OiBKYW1lcyBR aWFuIFdhbmcgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8amFtZXMucWlhbi53YW5nQGFybS5jb20+ ClNpZ25lZC1vZmYtYnk6IGphbWVzIHFpYW4gd2FuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxq YW1lcy5xaWFuLndhbmdAYXJtLmNvbT4KTGluazogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0 b3Aub3JnL3BhdGNoL21zZ2lkLzE1NjQ1NzEwNDgtMTUwMjktMi1naXQtc2VuZC1lbWFpbC1sb3dy eS5saUBhcm0uY29tClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxzYXNoYWxAa2VybmVsLm9y Zz4KLS0tCiAuLi4vZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMg ICAgfCAgMyArLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX213LmMgICAgICAgICAgICAg ICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgICAg ICAgICAgICAgICAgICB8IDEzICsrKysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1 L3JjYXJfZHVfd3JpdGViYWNrLmMgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X3R4cC5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrLS0tCiA1IGZpbGVzIGNo YW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3diX2Nvbm5lY3Rvci5jIGIv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMK aW5kZXggMjg1MWNhYzk0ZDg2OS4uMjNmYmVlMjY4MTE5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMKQEAg LTQzLDkgKzQzLDggQEAga29tZWRhX3diX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3Qga29tZWRhX2RhdGFfZmxvd19jZmcgZGZsb3c7CiAJ aW50IGVycjsKIAotCWlmICghd3JpdGViYWNrX2pvYiB8fCAhd3JpdGViYWNrX2pvYi0+ZmIpIHsK KwlpZiAoIXdyaXRlYmFja19qb2IpCiAJCXJldHVybiAwOwotCX0KIAogCWlmICghY3J0Y19zdC0+ YWN0aXZlKSB7CiAJCURSTV9ERUJVR19BVE9NSUMoIkNhbm5vdCB3cml0ZSB0aGUgY29tcG9zaXRp b24gcmVzdWx0IG91dCBvbiBhIGluYWN0aXZlIENSVEMuXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vbWFsaWRwX213LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9t dy5jCmluZGV4IDJlODEyNTI1MDI1ZGQuLmE1OTIyN2IyY2RiNTUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vbWFsaWRwX213LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxp ZHBfbXcuYwpAQCAtMTMwLDcgKzEzMCw3IEBAIG1hbGlkcF9td19lbmNvZGVyX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmI7CiAJaW50IGksIG5fcGxhbmVzOwogCi0JaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i IHx8ICFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iLT5mYikKKwlpZiAoIWNvbm5fc3RhdGUtPndy aXRlYmFja19qb2IpCiAJCXJldHVybiAwOwogCiAJZmIgPSBjb25uX3N0YXRlLT53cml0ZWJhY2tf am9iLT5mYjsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIG1hbGlkcF9td19hdG9taWNfY29tbWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAKIAltd19zdGF0ZSA9IHRvX213X3N0YXRlKGNvbm5f c3RhdGUpOwogCi0JaWYgKGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2IgJiYgY29ubl9zdGF0ZS0+ d3JpdGViYWNrX2pvYi0+ZmIpIHsKKwlpZiAoY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYikgewog CQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2It PmZiOwogCiAJCURSTV9ERVZfREVCVUdfRFJJVkVSKGRybS0+ZGV2LApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMK aW5kZXggNDE5MzgxYWJiZGQxNi4uMTRhZWFmNzM2MzIxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCkBA IC00MzAsMTAgKzQzMCwxNSBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNfY29ubmVjdG9yX2NoZWNr KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCXJldHVybiAtRUlOVkFMOwogCX0K IAotCWlmICh3cml0ZWJhY2tfam9iLT5vdXRfZmVuY2UgJiYgIXdyaXRlYmFja19qb2ItPmZiKSB7 Ci0JCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6JXNdIHJlcXVlc3Rpbmcgb3V0LWZl bmNlIHdpdGhvdXQgZnJhbWVidWZmZXJcbiIsCi0JCQkJIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29u bmVjdG9yLT5uYW1lKTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKCF3cml0ZWJhY2tfam9iLT5m YikgeworCQlpZiAod3JpdGViYWNrX2pvYi0+b3V0X2ZlbmNlKSB7CisJCQlEUk1fREVCVUdfQVRP TUlDKCJbQ09OTkVDVE9SOiVkOiVzXSByZXF1ZXN0aW5nIG91dC1mZW5jZSB3aXRob3V0IGZyYW1l YnVmZmVyXG4iLAorCQkJCQkgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkcm1fd3JpdGViYWNrX2NsZWFudXBfam9iKHdy aXRlYmFja19qb2IpOworCQlzdGF0ZS0+d3JpdGViYWNrX2pvYiA9IE5VTEw7CiAJfQogCiAJcmV0 dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X3dyaXRl YmFjay5jIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV93cml0ZWJhY2suYwppbmRl eCBhZTA3MjkwYmJhNmE0Li4wNGVmYTc4ZDcwYjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcmNhci1kdS9yY2FyX2R1X3dyaXRlYmFjay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2Fy LWR1L3JjYXJfZHVfd3JpdGViYWNrLmMKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgaW50IHJj YXJfZHVfd2JfZW5jX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKIAlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYjsKIAotCWlmICghY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiB8fCAhY29ubl9z dGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIpCisJaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i KQogCQlyZXR1cm4gMDsKIAogCWZiID0gY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmI7CkBA IC0yMjEsNyArMjIxLDcgQEAgdm9pZCByY2FyX2R1X3dyaXRlYmFja19zZXR1cChzdHJ1Y3QgcmNh cl9kdV9jcnRjICpyY3J0YywKIAl1bnNpZ25lZCBpbnQgaTsKIAogCXN0YXRlID0gcmNydGMtPndy aXRlYmFjay5iYXNlLnN0YXRlOwotCWlmICghc3RhdGUgfHwgIXN0YXRlLT53cml0ZWJhY2tfam9i IHx8ICFzdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIpCisJaWYgKCFzdGF0ZSB8fCAhc3RhdGUtPndy aXRlYmFja19qb2IpCiAJCXJldHVybjsKIAogCWZiID0gc3RhdGUtPndyaXRlYmFja19qb2ItPmZi OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdHhwLmMgYi9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF90eHAuYwppbmRleCA5NmY5MWMxYjRiNmU2Li5lOTJmYTEyNzUwMzQzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF90eHAuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF90eHAuYwpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBpbnQgdmM0X3R4 cF9jb25uZWN0b3JfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uLAogCWlu dCBpOwogCiAJY29ubl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jb25uZWN0b3Jfc3RhdGUo c3RhdGUsIGNvbm4pOwotCWlmICghY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiB8fCAhY29ubl9z dGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIpCisJaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i KQogCQlyZXR1cm4gMDsKIAogCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19z dGF0ZShzdGF0ZSwgY29ubl9zdGF0ZS0+Y3J0Yyk7CkBAIC0yNjksOCArMjY5LDcgQEAgc3RhdGlj IHZvaWQgdmM0X3R4cF9jb25uZWN0b3JfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubiwKIAl1MzIgY3RybDsKIAlpbnQgaTsKIAotCWlmIChXQVJOX09OKCFjb25uX3N0YXRl LT53cml0ZWJhY2tfam9iIHx8Ci0JCSAgICAhY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIp KQorCWlmIChXQVJOX09OKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKSkKIAkJcmV0dXJuOwog CiAJbW9kZSA9ICZjb25uX3N0YXRlLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKLS0gCjIu MjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 82CF1C47404 for ; Wed, 9 Oct 2019 17:32:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 54C232190F for ; Wed, 9 Oct 2019 17:32:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570642369; bh=K02rh1HsZkrO5DpDzfg0K9uNvLOc6lHlJ8tW9pFGt+0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=K60gvrppcRMpZ2S0DVOHKN3B7dJXO24gYhjWtk8C9QkcF6yutpCmD0ldCecKWaky/ rE+n95TbemX+GwQPD6YOJM64QyzOz6H+vPPJVsMS3dVJrB3m/skEdxMtH/1BjKZqB0 LhGFbkAgjWK0w0IyOhGkn8/4AADEWevpwsp61K84= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732717AbfJIRcr (ORCPT ); Wed, 9 Oct 2019 13:32:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:47968 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731145AbfJIRXz (ORCPT ); Wed, 9 Oct 2019 13:23:55 -0400 Received: from sasha-vm.mshome.net (unknown [167.220.2.234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AE394218DE; Wed, 9 Oct 2019 17:23:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570641833; bh=K02rh1HsZkrO5DpDzfg0K9uNvLOc6lHlJ8tW9pFGt+0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cd6Q9R6iyZSwnf2sUjMSrLHYgtSpWVD5esuQnyhbfK7iEoIDHW2b8CjpKiva6XWhK cAUskU5vGFLgMo/ivHt9vquVSexuBFOqeax8W8deZNeNzHCwZd6awcxXDGSRK/vT2/ 3ba3Ijblb/bYtAXtLWlSYG3+W52FaJhApWpy8K6c= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: "Lowry Li (Arm Technology China)" , Lowry Li , Liviu Dudau , James Qian Wang , Sasha Levin , dri-devel@lists.freedesktop.org, linux-sh@vger.kernel.org Subject: [PATCH AUTOSEL 5.3 02/68] drm: Free the writeback_job when it with an empty fb Date: Wed, 9 Oct 2019 13:04:41 -0400 Message-Id: <20191009170547.32204-2-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191009170547.32204-1-sashal@kernel.org> References: <20191009170547.32204-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Lowry Li (Arm Technology China)" [ Upstream commit 8581d51055a08cc6eb061c8856062290e8582ce4 ] Adds the check if the writeback_job with an empty fb, then it should be freed in atomic_check phase. With this change, the driver users will not check empty fb case any more. So refined accordingly. Signed-off-by: Lowry Li (Arm Technology China) Reviewed-by: Liviu Dudau Reviewed-by: James Qian Wang (Arm Technology China) Signed-off-by: james qian wang (Arm Technology China) Link: https://patchwork.freedesktop.org/patch/msgid/1564571048-15029-2-git-send-email-lowry.li@arm.com Signed-off-by: Sasha Levin --- .../drm/arm/display/komeda/komeda_wb_connector.c | 3 +-- drivers/gpu/drm/arm/malidp_mw.c | 4 ++-- drivers/gpu/drm/drm_atomic.c | 13 +++++++++---- drivers/gpu/drm/rcar-du/rcar_du_writeback.c | 4 ++-- drivers/gpu/drm/vc4/vc4_txp.c | 5 ++--- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c index 2851cac94d869..23fbee268119f 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c @@ -43,9 +43,8 @@ komeda_wb_encoder_atomic_check(struct drm_encoder *encoder, struct komeda_data_flow_cfg dflow; int err; - if (!writeback_job || !writeback_job->fb) { + if (!writeback_job) return 0; - } if (!crtc_st->active) { DRM_DEBUG_ATOMIC("Cannot write the composition result out on a inactive CRTC.\n"); diff --git a/drivers/gpu/drm/arm/malidp_mw.c b/drivers/gpu/drm/arm/malidp_mw.c index 2e812525025dd..a59227b2cdb55 100644 --- a/drivers/gpu/drm/arm/malidp_mw.c +++ b/drivers/gpu/drm/arm/malidp_mw.c @@ -130,7 +130,7 @@ malidp_mw_encoder_atomic_check(struct drm_encoder *encoder, struct drm_framebuffer *fb; int i, n_planes; - if (!conn_state->writeback_job || !conn_state->writeback_job->fb) + if (!conn_state->writeback_job) return 0; fb = conn_state->writeback_job->fb; @@ -247,7 +247,7 @@ void malidp_mw_atomic_commit(struct drm_device *drm, mw_state = to_mw_state(conn_state); - if (conn_state->writeback_job && conn_state->writeback_job->fb) { + if (conn_state->writeback_job) { struct drm_framebuffer *fb = conn_state->writeback_job->fb; DRM_DEV_DEBUG_DRIVER(drm->dev, diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index 419381abbdd16..14aeaf7363210 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -430,10 +430,15 @@ static int drm_atomic_connector_check(struct drm_connector *connector, return -EINVAL; } - if (writeback_job->out_fence && !writeback_job->fb) { - DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n", - connector->base.id, connector->name); - return -EINVAL; + if (!writeback_job->fb) { + if (writeback_job->out_fence) { + DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n", + connector->base.id, connector->name); + return -EINVAL; + } + + drm_writeback_cleanup_job(writeback_job); + state->writeback_job = NULL; } return 0; diff --git a/drivers/gpu/drm/rcar-du/rcar_du_writeback.c b/drivers/gpu/drm/rcar-du/rcar_du_writeback.c index ae07290bba6a4..04efa78d70b6e 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_writeback.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_writeback.c @@ -147,7 +147,7 @@ static int rcar_du_wb_enc_atomic_check(struct drm_encoder *encoder, struct drm_device *dev = encoder->dev; struct drm_framebuffer *fb; - if (!conn_state->writeback_job || !conn_state->writeback_job->fb) + if (!conn_state->writeback_job) return 0; fb = conn_state->writeback_job->fb; @@ -221,7 +221,7 @@ void rcar_du_writeback_setup(struct rcar_du_crtc *rcrtc, unsigned int i; state = rcrtc->writeback.base.state; - if (!state || !state->writeback_job || !state->writeback_job->fb) + if (!state || !state->writeback_job) return; fb = state->writeback_job->fb; diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index 96f91c1b4b6e6..e92fa12750343 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -229,7 +229,7 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn, int i; conn_state = drm_atomic_get_new_connector_state(state, conn); - if (!conn_state->writeback_job || !conn_state->writeback_job->fb) + if (!conn_state->writeback_job) return 0; crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc); @@ -269,8 +269,7 @@ static void vc4_txp_connector_atomic_commit(struct drm_connector *conn, u32 ctrl; int i; - if (WARN_ON(!conn_state->writeback_job || - !conn_state->writeback_job->fb)) + if (WARN_ON(!conn_state->writeback_job)) return; mode = &conn_state->crtc->state->adjusted_mode; -- 2.20.1