From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 2/6] drm/msm: add special _get_vaddr_active() for cmdstream dumps Date: Tue, 24 Oct 2017 09:22:49 -0400 Message-ID: <20171024132256.20286-3-robdclark@gmail.com> References: <20171024132256.20286-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171024132256.20286-1-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Rob Clark , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Jordan Crouse , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org UHJlcCB3b3JrIGZvciBhZGRpbmcgYSBkZWJ1Z2ZzIGZpbGUgdGhhdCBkdW1wcyBqdXN0IHN1Ym1p dHMgd2hpY2gKdHJpZ2dlciBoYW5ncy9mYXVsdHMuICBJbiB0aGlzIGNhc2UgdGhlIGJvIG1heSBh bHJlYWR5IGJlIGluIHRoZQpNQURWX0RPTlRORUVEIHN0YXRlLCBidXQgd2lsbCBiZSBzdGlsbCBv biB0aGUgYWN0aXZlIGxpc3QgKHNpbmNlCnRoZSBzdWJtaXQgaGFzbid0IGNvbXBsZXRlZCB5ZXQp LiAgU28gdGhlIG5vcm1hbCBjaGVjayB0aGF0IHRoZQpibyBpcyBpbiB0aGUgV0lMTE5FRUQgc3Rh dGUgZG9lcyBub3QgYXBwbHkuICAoQnV0IG9mIGNvdXJzZSB0aGUgYm8Kc2hvdWxkIGRlZmluaXRl bHkgbm90IGJlIGluIHRoZSBQVVJHRUQgc3RhdGUhKQoKU2lnbmVkLW9mZi1ieTogUm9iIENsYXJr IDxyb2JkY2xhcmtAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o IHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMgfCAyMiArKysrKysrKysrKysr KysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yZC5jICB8ICAyICstCiAzIGZpbGVz IGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9k cnYuaAppbmRleCBjNDZkYzEyZGJiY2MuLjY2NmZjZTY2ZjlkZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmgKQEAgLTIxMyw2ICsyMTMsNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm1zbV9nZW1fcHJp bWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiBpbnQgbXNtX2dlbV9w cmltZV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCBtc21fZ2VtX3ByaW1l X3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgKm1zbV9nZW1fZ2V0X3Zh ZGRyKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgKm1zbV9nZW1fZ2V0X3ZhZGRy X2FjdGl2ZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIG1zbV9nZW1fcHV0X3Zh ZGRyKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIGludCBtc21fZ2VtX21hZHZpc2Uoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIG1hZHYpOwogaW50IG1zbV9nZW1fc3lu Y19vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5jCmlu ZGV4IGVhNWJiMGUxNjMyYy4uODFmZTZkNjc0MGNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwpAQCAt NDcwLDE0ICs0NzAsMTYgQEAgaW50IG1zbV9nZW1fZHVtYl9tYXBfb2Zmc2V0KHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gcmV0OwogfQogCi12 b2lkICptc21fZ2VtX2dldF92YWRkcihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3N0YXRp YyB2b2lkICpnZXRfdmFkZHIoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIG1h ZHYpCiB7CiAJc3RydWN0IG1zbV9nZW1fb2JqZWN0ICptc21fb2JqID0gdG9fbXNtX2JvKG9iaik7 CiAJaW50IHJldCA9IDA7CiAKIAltdXRleF9sb2NrKCZtc21fb2JqLT5sb2NrKTsKIAotCWlmIChX QVJOX09OKG1zbV9vYmotPm1hZHYgIT0gTVNNX01BRFZfV0lMTE5FRUQpKSB7CisJaWYgKFdBUk5f T04obXNtX29iai0+bWFkdiA+IG1hZHYpKSB7CisJCWRldl9lcnIob2JqLT5kZXYtPmRldiwgIklu dmFsaWQgbWFkdiBzdGF0ZTogJXUgdnMgJXVcbiIsCisJCQltc21fb2JqLT5tYWR2LCBtYWR2KTsK IAkJbXV0ZXhfdW5sb2NrKCZtc21fb2JqLT5sb2NrKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVCVVNZ KTsKIAl9CkBAIC01MTMsNiArNTE1LDIyIEBAIHZvaWQgKm1zbV9nZW1fZ2V0X3ZhZGRyKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKK3ZvaWQg Km1zbV9nZW1fZ2V0X3ZhZGRyKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXJldHVy biBnZXRfdmFkZHIob2JqLCBNU01fTUFEVl9XSUxMTkVFRCk7Cit9CisKKy8qCisgKiBEb24ndCB1 c2UgdGhpcyEgIEl0IGlzIGZvciB0aGUgdmVyeSBzcGVjaWFsIGNhc2Ugb2YgZHVtcGluZworICog c3VibWl0cyBmcm9tIEdQVSBoYW5ncyBvciBmYXVsdHMsIHdlcmUgdGhlIGJvIG1heSBhbHJlYWR5 CisgKiBiZSBNU01fTUFEVl9ET05UTkVFRCwgYnV0IHdlIGtub3cgdGhlIGJ1ZmZlciBpcyBzdGls bCBvbiB0aGUKKyAqIGFjdGl2ZSBsaXN0LgorICovCit2b2lkICptc21fZ2VtX2dldF92YWRkcl9h Y3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJcmV0dXJuIGdldF92YWRkcihv YmosIF9fTVNNX01BRFZfUFVSR0VEKTsKK30KKwogdm9pZCBtc21fZ2VtX3B1dF92YWRkcihzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgbXNtX2dlbV9vYmplY3QgKm1zbV9v YmogPSB0b19tc21fYm8ob2JqKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X3JkLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yZC5jCmluZGV4IDM1ZGEwYTA3ZTU2Ny4u OTgxYmIxN2MxMWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yZC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JkLmMKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0 aWMgdm9pZCBzbmFwc2hvdF9idWYoc3RydWN0IG1zbV9yZF9zdGF0ZSAqcmQsCiAJaWYgKCEoc3Vi bWl0LT5ib3NbaWR4XS5mbGFncyAmIE1TTV9TVUJNSVRfQk9fUkVBRCkpCiAJCXJldHVybjsKIAot CWJ1ZiA9IG1zbV9nZW1fZ2V0X3ZhZGRyKCZvYmotPmJhc2UpOworCWJ1ZiA9IG1zbV9nZW1fZ2V0 X3ZhZGRyX2FjdGl2ZSgmb2JqLT5iYXNlKTsKIAlpZiAoSVNfRVJSKGJ1ZikpCiAJCXJldHVybjsK IAotLSAKMi4xMy42CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJl bm8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934128AbdJXNYZ (ORCPT ); Tue, 24 Oct 2017 09:24:25 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:44469 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933974AbdJXNXQ (ORCPT ); Tue, 24 Oct 2017 09:23:16 -0400 X-Google-Smtp-Source: ABhQp+TPub1gtDM6bzIUA81h0QRJtyU+FZjXFj9L6pvYLPItbyFmUcSHhbS8z67/YNleugRSzm15YA== From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jordan Crouse , Rob Clark , David Airlie , linux-kernel@vger.kernel.org Subject: [PATCH 2/6] drm/msm: add special _get_vaddr_active() for cmdstream dumps Date: Tue, 24 Oct 2017 09:22:49 -0400 Message-Id: <20171024132256.20286-3-robdclark@gmail.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171024132256.20286-1-robdclark@gmail.com> References: <20171024132256.20286-1-robdclark@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Prep work for adding a debugfs file that dumps just submits which trigger hangs/faults. In this case the bo may already be in the MADV_DONTNEED state, but will be still on the active list (since the submit hasn't completed yet). So the normal check that the bo is in the WILLNEED state does not apply. (But of course the bo should definitely not be in the PURGED state!) Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_drv.h | 1 + drivers/gpu/drm/msm/msm_gem.c | 22 ++++++++++++++++++++-- drivers/gpu/drm/msm/msm_rd.c | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index c46dc12dbbcc..666fce66f9dd 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -213,6 +213,7 @@ struct drm_gem_object *msm_gem_prime_import_sg_table(struct drm_device *dev, int msm_gem_prime_pin(struct drm_gem_object *obj); void msm_gem_prime_unpin(struct drm_gem_object *obj); void *msm_gem_get_vaddr(struct drm_gem_object *obj); +void *msm_gem_get_vaddr_active(struct drm_gem_object *obj); void msm_gem_put_vaddr(struct drm_gem_object *obj); int msm_gem_madvise(struct drm_gem_object *obj, unsigned madv); int msm_gem_sync_object(struct drm_gem_object *obj, diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index ea5bb0e1632c..81fe6d6740ce 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -470,14 +470,16 @@ int msm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, return ret; } -void *msm_gem_get_vaddr(struct drm_gem_object *obj) +static void *get_vaddr(struct drm_gem_object *obj, unsigned madv) { struct msm_gem_object *msm_obj = to_msm_bo(obj); int ret = 0; mutex_lock(&msm_obj->lock); - if (WARN_ON(msm_obj->madv != MSM_MADV_WILLNEED)) { + if (WARN_ON(msm_obj->madv > madv)) { + dev_err(obj->dev->dev, "Invalid madv state: %u vs %u\n", + msm_obj->madv, madv); mutex_unlock(&msm_obj->lock); return ERR_PTR(-EBUSY); } @@ -513,6 +515,22 @@ void *msm_gem_get_vaddr(struct drm_gem_object *obj) return ERR_PTR(ret); } +void *msm_gem_get_vaddr(struct drm_gem_object *obj) +{ + return get_vaddr(obj, MSM_MADV_WILLNEED); +} + +/* + * Don't use this! It is for the very special case of dumping + * submits from GPU hangs or faults, were the bo may already + * be MSM_MADV_DONTNEED, but we know the buffer is still on the + * active list. + */ +void *msm_gem_get_vaddr_active(struct drm_gem_object *obj) +{ + return get_vaddr(obj, __MSM_MADV_PURGED); +} + void msm_gem_put_vaddr(struct drm_gem_object *obj) { struct msm_gem_object *msm_obj = to_msm_bo(obj); diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c index 35da0a07e567..981bb17c11a7 100644 --- a/drivers/gpu/drm/msm/msm_rd.c +++ b/drivers/gpu/drm/msm/msm_rd.c @@ -294,7 +294,7 @@ static void snapshot_buf(struct msm_rd_state *rd, if (!(submit->bos[idx].flags & MSM_SUBMIT_BO_READ)) return; - buf = msm_gem_get_vaddr(&obj->base); + buf = msm_gem_get_vaddr_active(&obj->base); if (IS_ERR(buf)) return; -- 2.13.6