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=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 7145AC10F13 for ; Tue, 16 Apr 2019 18:39:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 45D4B20684 for ; Tue, 16 Apr 2019 18:39:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XwKD064r" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729354AbfDPSjY (ORCPT ); Tue, 16 Apr 2019 14:39:24 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:33291 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730426AbfDPSi7 (ORCPT ); Tue, 16 Apr 2019 14:38:59 -0400 Received: by mail-wr1-f68.google.com with SMTP id q1so28526321wrp.0; Tue, 16 Apr 2019 11:38:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=JeBlbexg079RZIlnX/Tm9rmA/UxC3OfguN8akv7z74g=; b=XwKD064rKWxHzoMMm4gKJqm8wil2WwGUuB/Mg582rXmSb6/MkAXDl5vFbkKL5kcf9C Y7JocFy+Hf+2q5PtMsgrXep7rxKoLHmB3kyMw7TZ7EOHsupcvKBBrZQD71pv7Fvqj3rq aCL+5ymfd/fFg5eQsZE6oq6Uix5X85UU2zJ7pFmNPv+EF/XFDXSb2fpVHzrGBwWRRiJF nXa/AtYc+FxVcYtlgffUSIpBufmd+JY6lpOhIgjO+0C3SNhqtMp3ecj06IEOdjz3wEPf eF0zi8WFp4XrNUXudrY4Scx31W1o0PuY2XNR3FWT8fJh+SrCwnax9WDnZUPkpaDBY4ST EpMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JeBlbexg079RZIlnX/Tm9rmA/UxC3OfguN8akv7z74g=; b=uGv3vyC4p5S/tP8p/8cgIMx+UviOKMdVXXdYfxK/j+nnOTmq2N0QBTIKQrfZeQR17b g3Y0i1kw3bBUBzLmWCjVelvex/zCAaFngWG0EhGzWSplEYofQr4gUbs1g+shYWh2ys+i zmuQOOmw4IZoISqIfay2Y6f2oXNMCrUpjKC+SOe5G1xrUL8wtzaKv9uiqgJa0F3InCZn JN/eUP2Bjo9wD9zToKi+g3kUXtOhyomtxB3OCOUaw4uJDdpOm768UhHQ8WoudRuTY9Eg pGRxARIMavXezQlIVfN8dF3QpMGY2+3EObmNmtFnmFxd2Mr8goHUl6UTqAI0D4U9kupf ae2A== X-Gm-Message-State: APjAAAX0UEGplib1Qhhx69911uOTv9DQY6gyZzODGPHS+QggzPbzNPS6 hBwQ1bUWPXTb34w6bnHzoY4= X-Google-Smtp-Source: APXvYqzQDu0rooj+lH+tX8mk8Eeul1orwZ2Q3u5RFHJB/13lOykkVDg0nkaWswSe+EuBeI8akmx/qw== X-Received: by 2002:adf:f64d:: with SMTP id x13mr55446489wrp.298.1555439937182; Tue, 16 Apr 2019 11:38:57 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:fcfa:e34f:82c0:3f66]) by smtp.gmail.com with ESMTPSA id m13sm128823wmg.42.2019.04.16.11.38.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 16 Apr 2019 11:38:56 -0700 (PDT) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: sumit.semwal@linaro.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org Subject: [PATCH 12/12] drm/amdgpu: add DMA-buf invalidation callback v2 Date: Tue, 16 Apr 2019 20:38:41 +0200 Message-Id: <20190416183841.1577-13-christian.koenig@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190416183841.1577-1-christian.koenig@amd.com> References: <20190416183841.1577-1-christian.koenig@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allow for invalidation of imported DMA-bufs. v2: add dma_buf_pin/dma_buf_unpin support Signed-off-by: Christian König --- drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 6 ++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c | 24 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index fdb98eb562db..c3a5a115bfc6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -848,6 +848,9 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain, return 0; } + if (bo->gem_base.import_attach) + dma_buf_pin(bo->gem_base.import_attach->dmabuf); + bo->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; /* force to pin into visible video ram */ if (!(bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)) @@ -931,6 +934,9 @@ int amdgpu_bo_unpin(struct amdgpu_bo *bo) amdgpu_bo_subtract_pin_size(bo); + if (bo->gem_base.import_attach) + dma_buf_unpin(bo->gem_base.import_attach->dmabuf); + for (i = 0; i < bo->placement.num_placement; i++) { bo->placements[i].lpfn = 0; bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c index 40cd89271b20..30634396719b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c @@ -459,6 +459,28 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, return buf; } +/** + * amdgpu_gem_prime_invalidate_mappings - &attach.invalidate implementation + * + * @attach: the DMA-buf attachment + * + * Invalidate the DMA-buf attachment, making sure that the we re-create the + * mapping before the next use. + */ +static void +amdgpu_gem_prime_invalidate_mappings(struct dma_buf_attachment *attach) +{ + struct ttm_operation_ctx ctx = { false, false }; + struct drm_gem_object *obj = attach->importer_priv; + struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj); + struct ttm_placement placement = {}; + int r; + + r = ttm_bo_validate(&bo->tbo, &placement, &ctx); + if (r) + DRM_ERROR("Failed to invalidate DMA-buf import (%d))\n", r); +} + /** * amdgpu_gem_prime_import - &drm_driver.gem_prime_import implementation * @dev: DRM device @@ -476,6 +498,7 @@ struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, struct dma_buf_attach_info attach_info = { .dev = dev->dev, .dmabuf = dma_buf, + .invalidate = amdgpu_gem_prime_invalidate_mappings }; struct dma_buf_attachment *attach; struct drm_gem_object *obj; @@ -496,6 +519,7 @@ struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, if (IS_ERR(obj)) return obj; + attach_info.importer_priv = obj; attach = dma_buf_attach(&attach_info); if (IS_ERR(attach)) { drm_gem_object_put(obj); -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" Subject: [PATCH 12/12] drm/amdgpu: add DMA-buf invalidation callback v2 Date: Tue, 16 Apr 2019 20:38:41 +0200 Message-ID: <20190416183841.1577-13-christian.koenig@amd.com> References: <20190416183841.1577-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190416183841.1577-1-christian.koenig-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: sumit.semwal-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org QWxsb3cgZm9yIGludmFsaWRhdGlvbiBvZiBpbXBvcnRlZCBETUEtYnVmcy4KCnYyOiBhZGQgZG1h X2J1Zl9waW4vZG1hX2J1Zl91bnBpbiBzdXBwb3J0CgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4g S8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jIHwgIDYgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcHJpbWUuYyAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrCiAyIGZp bGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfb2JqZWN0LmMKaW5kZXggZmRiOThlYjU2MmRiLi5jM2E1YTExNWJmYzYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKQEAgLTg0OCw2ICs4NDgs OSBAQCBpbnQgYW1kZ3B1X2JvX3Bpbl9yZXN0cmljdGVkKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB1 MzIgZG9tYWluLAogCQlyZXR1cm4gMDsKIAl9CiAKKwlpZiAoYm8tPmdlbV9iYXNlLmltcG9ydF9h dHRhY2gpCisJCWRtYV9idWZfcGluKGJvLT5nZW1fYmFzZS5pbXBvcnRfYXR0YWNoLT5kbWFidWYp OworCiAJYm8tPmZsYWdzIHw9IEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUzsKIAkv KiBmb3JjZSB0byBwaW4gaW50byB2aXNpYmxlIHZpZGVvIHJhbSAqLwogCWlmICghKGJvLT5mbGFn cyAmIEFNREdQVV9HRU1fQ1JFQVRFX05PX0NQVV9BQ0NFU1MpKQpAQCAtOTMxLDYgKzkzNCw5IEBA IGludCBhbWRncHVfYm9fdW5waW4oc3RydWN0IGFtZGdwdV9ibyAqYm8pCiAKIAlhbWRncHVfYm9f c3VidHJhY3RfcGluX3NpemUoYm8pOwogCisJaWYgKGJvLT5nZW1fYmFzZS5pbXBvcnRfYXR0YWNo KQorCQlkbWFfYnVmX3VucGluKGJvLT5nZW1fYmFzZS5pbXBvcnRfYXR0YWNoLT5kbWFidWYpOwor CiAJZm9yIChpID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudDsgaSsrKSB7CiAJ CWJvLT5wbGFjZW1lbnRzW2ldLmxwZm4gPSAwOwogCQliby0+cGxhY2VtZW50c1tpXS5mbGFncyAm PSB+VFRNX1BMX0ZMQUdfTk9fRVZJQ1Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9wcmltZS5jCmluZGV4IDQwY2Q4OTI3MWIyMC4uMzA2MzQzOTY3MTliIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwpAQCAtNDU5LDYgKzQ1OSwyOCBAQCBzdHJ1 Y3QgZG1hX2J1ZiAqYW1kZ3B1X2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlyZXR1cm4gYnVmOwogfQogCisvKioKKyAqIGFtZGdwdV9nZW1fcHJpbWVfaW52YWxpZGF0 ZV9tYXBwaW5ncyAtICZhdHRhY2guaW52YWxpZGF0ZSBpbXBsZW1lbnRhdGlvbgorICoKKyAqIEBh dHRhY2g6IHRoZSBETUEtYnVmIGF0dGFjaG1lbnQKKyAqCisgKiBJbnZhbGlkYXRlIHRoZSBETUEt YnVmIGF0dGFjaG1lbnQsIG1ha2luZyBzdXJlIHRoYXQgdGhlIHdlIHJlLWNyZWF0ZSB0aGUKKyAq IG1hcHBpbmcgYmVmb3JlIHRoZSBuZXh0IHVzZS4KKyAqLworc3RhdGljIHZvaWQKK2FtZGdwdV9n ZW1fcHJpbWVfaW52YWxpZGF0ZV9tYXBwaW5ncyhzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2gpCit7CisJc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNl IH07CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBhdHRhY2gtPmltcG9ydGVyX3ByaXY7 CisJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7CisJc3RydWN0 IHR0bV9wbGFjZW1lbnQgcGxhY2VtZW50ID0ge307CisJaW50IHI7CisKKwlyID0gdHRtX2JvX3Zh bGlkYXRlKCZiby0+dGJvLCAmcGxhY2VtZW50LCAmY3R4KTsKKwlpZiAocikKKwkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gaW52YWxpZGF0ZSBETUEtYnVmIGltcG9ydCAoJWQpKVxuIiwgcik7Cit9CisK IC8qKgogICogYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQgLSAmZHJtX2RyaXZlci5nZW1fcHJpbWVf aW1wb3J0IGltcGxlbWVudGF0aW9uCiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC00NzYsNiArNDk4 LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICphbWRncHVfZ2VtX3ByaW1lX2ltcG9ydChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBkbWFfYnVmX2F0dGFjaF9pbmZvIGF0dGFjaF9p bmZvID0gewogCQkuZGV2ID0gZGV2LT5kZXYsCiAJCS5kbWFidWYgPSBkbWFfYnVmLAorCQkuaW52 YWxpZGF0ZSA9IGFtZGdwdV9nZW1fcHJpbWVfaW52YWxpZGF0ZV9tYXBwaW5ncwogCX07CiAJc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoOwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqOwpAQCAtNDk2LDYgKzUxOSw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYW1kZ3B1X2dl bV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoSVNfRVJSKG9iaikp CiAJCXJldHVybiBvYmo7CiAKKwlhdHRhY2hfaW5mby5pbXBvcnRlcl9wcml2ID0gb2JqOwogCWF0 dGFjaCA9IGRtYV9idWZfYXR0YWNoKCZhdHRhY2hfaW5mbyk7CiAJaWYgKElTX0VSUihhdHRhY2gp KSB7CiAJCWRybV9nZW1fb2JqZWN0X3B1dChvYmopOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAph bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=