From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933287AbcJUOMo (ORCPT ); Fri, 21 Oct 2016 10:12:44 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:35348 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933770AbcJUOLo (ORCPT ); Fri, 21 Oct 2016 10:11:44 -0400 From: Tvrtko Ursulin X-Google-Original-From: Tvrtko Ursulin To: Intel-gfx@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Chris Wilson , Tvrtko Ursulin Subject: [PATCH 5/5] drm/i915: Use __sg_alloc_table_from_pages for userptr allocations Date: Fri, 21 Oct 2016 15:11:23 +0100 Message-Id: <1477059083-3500-6-git-send-email-tvrtko.ursulin@linux.intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tvrtko Ursulin With the addition of __sg_alloc_table_from_pages we can control the maximum coallescing size and eliminate a separate path for allocating backing store here. This also makes the tables as compact as possible in all cases. Signed-off-by: Tvrtko Ursulin --- drivers/gpu/drm/i915/i915_drv.h | 9 +++++++++ drivers/gpu/drm/i915/i915_gem.c | 11 +---------- drivers/gpu/drm/i915/i915_gem_userptr.c | 29 +++++++---------------------- 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 5b2b7f3c6e76..577a3a87f680 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -4001,4 +4001,13 @@ int remap_io_mapping(struct vm_area_struct *vma, __T; \ }) +static inline unsigned int i915_swiotlb_max_size(void) +{ +#if IS_ENABLED(CONFIG_SWIOTLB) + return swiotlb_nr_tbl() << IO_TLB_SHIFT; +#else + return UINT_MAX; +#endif +} + #endif diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 4bf675568a37..18125d7279c6 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2205,15 +2205,6 @@ i915_gem_object_put_pages(struct drm_i915_gem_object *obj) return 0; } -static unsigned int swiotlb_max_size(void) -{ -#if IS_ENABLED(CONFIG_SWIOTLB) - return swiotlb_nr_tbl() << IO_TLB_SHIFT; -#else - return UINT_MAX; -#endif -} - static int i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) { @@ -2222,7 +2213,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) struct address_space *mapping; struct sg_table *st; struct page *page, **pages; - unsigned int max_segment = swiotlb_max_size(); + unsigned int max_segment = i915_swiotlb_max_size(); int ret; gfp_t gfp; diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c index e537930c64b5..17dca225a3e0 100644 --- a/drivers/gpu/drm/i915/i915_gem_userptr.c +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c @@ -397,36 +397,21 @@ struct get_pages_work { struct task_struct *task; }; -#if IS_ENABLED(CONFIG_SWIOTLB) -#define swiotlb_active() swiotlb_nr_tbl() -#else -#define swiotlb_active() 0 -#endif - static int st_set_pages(struct sg_table **st, struct page **pvec, int num_pages) { - struct scatterlist *sg; - int ret, n; + unsigned int max_segment = i915_swiotlb_max_size(); + int ret; *st = kmalloc(sizeof(**st), GFP_KERNEL); if (*st == NULL) return -ENOMEM; - if (swiotlb_active()) { - ret = sg_alloc_table(*st, num_pages, GFP_KERNEL); - if (ret) - goto err; - - for_each_sg((*st)->sgl, sg, num_pages, n) - sg_set_page(sg, pvec[n], PAGE_SIZE, 0); - } else { - ret = sg_alloc_table_from_pages(*st, pvec, num_pages, - 0, num_pages << PAGE_SHIFT, - GFP_KERNEL); - if (ret) - goto err; - } + ret = __sg_alloc_table_from_pages(*st, pvec, num_pages, 0, + num_pages << PAGE_SHIFT, + GFP_KERNEL, max_segment); + if (ret) + goto err; return 0; -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/5] drm/i915: Use __sg_alloc_table_from_pages for userptr allocations Date: Fri, 21 Oct 2016 15:11:23 +0100 Message-ID: <1477059083-3500-6-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 85CDB6E02C for ; Fri, 21 Oct 2016 14:11:44 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id x23so5871221lfi.1 for ; Fri, 21 Oct 2016 07:11:44 -0700 (PDT) In-Reply-To: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldpdGggdGhl IGFkZGl0aW9uIG9mIF9fc2dfYWxsb2NfdGFibGVfZnJvbV9wYWdlcyB3ZSBjYW4gY29udHJvbAp0 aGUgbWF4aW11bSBjb2FsbGVzY2luZyBzaXplIGFuZCBlbGltaW5hdGUgYSBzZXBhcmF0ZSBwYXRo IGZvcgphbGxvY2F0aW5nIGJhY2tpbmcgc3RvcmUgaGVyZS4KClRoaXMgYWxzbyBtYWtlcyB0aGUg dGFibGVzIGFzIGNvbXBhY3QgYXMgcG9zc2libGUgaW4gYWxsIGNhc2VzLgoKU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgOSArKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDExICstLS0tLS0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgfCAyOSArKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA1YjJiN2YzYzZlNzYuLjU3N2EzYTg3 ZjY4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00MDAxLDQgKzQwMDEsMTMgQEAgaW50 IHJlbWFwX2lvX21hcHBpbmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJX19UOwkJCQkJ CQkJXAogfSkKIAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV9zd2lvdGxiX21heF9z aXplKHZvaWQpCit7CisjaWYgSVNfRU5BQkxFRChDT05GSUdfU1dJT1RMQikKKwlyZXR1cm4gc3dp b3RsYl9ucl90YmwoKSA8PCBJT19UTEJfU0hJRlQ7CisjZWxzZQorCXJldHVybiBVSU5UX01BWDsK KyNlbmRpZgorfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDRiZjY3NTU2 OGEzNy4uMTgxMjVkNzI3OWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTIyMDUsMTUg KzIyMDUsNiBAQCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgc3dpb3Rs Yl9tYXhfc2l6ZSh2b2lkKQotewotI2lmIElTX0VOQUJMRUQoQ09ORklHX1NXSU9UTEIpCi0JcmV0 dXJuIHN3aW90bGJfbnJfdGJsKCkgPDwgSU9fVExCX1NISUZUOwotI2Vsc2UKLQlyZXR1cm4gVUlO VF9NQVg7Ci0jZW5kaWYKLX0KLQogc3RhdGljIGludAogaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdl c19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKQEAgLTIyMjIsNyArMjIx Myw3IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAJc3RydWN0IHNn X3RhYmxlICpzdDsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSwgKipwYWdlczsKLQl1bnNpZ25lZCBpbnQg bWF4X3NlZ21lbnQgPSBzd2lvdGxiX21heF9zaXplKCk7CisJdW5zaWduZWQgaW50IG1heF9zZWdt ZW50ID0gaTkxNV9zd2lvdGxiX21heF9zaXplKCk7CiAJaW50IHJldDsKIAlnZnBfdCBnZnA7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwppbmRleCBlNTM3OTMwYzY0YjUu LjE3ZGNhMjI1YTNlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dXNlcnB0ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwpA QCAtMzk3LDM2ICszOTcsMjEgQEAgc3RydWN0IGdldF9wYWdlc193b3JrIHsKIAlzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhc2s7CiB9OwogCi0jaWYgSVNfRU5BQkxFRChDT05GSUdfU1dJT1RMQikKLSNk ZWZpbmUgc3dpb3RsYl9hY3RpdmUoKSBzd2lvdGxiX25yX3RibCgpCi0jZWxzZQotI2RlZmluZSBz d2lvdGxiX2FjdGl2ZSgpIDAKLSNlbmRpZgotCiBzdGF0aWMgaW50CiBzdF9zZXRfcGFnZXMoc3Ry dWN0IHNnX3RhYmxlICoqc3QsIHN0cnVjdCBwYWdlICoqcHZlYywgaW50IG51bV9wYWdlcykKIHsK LQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwotCWludCByZXQsIG47CisJdW5zaWduZWQgaW50IG1h eF9zZWdtZW50ID0gaTkxNV9zd2lvdGxiX21heF9zaXplKCk7CisJaW50IHJldDsKIAogCSpzdCA9 IGttYWxsb2Moc2l6ZW9mKCoqc3QpLCBHRlBfS0VSTkVMKTsKIAlpZiAoKnN0ID09IE5VTEwpCiAJ CXJldHVybiAtRU5PTUVNOwogCi0JaWYgKHN3aW90bGJfYWN0aXZlKCkpIHsKLQkJcmV0ID0gc2df YWxsb2NfdGFibGUoKnN0LCBudW1fcGFnZXMsIEdGUF9LRVJORUwpOwotCQlpZiAocmV0KQotCQkJ Z290byBlcnI7Ci0KLQkJZm9yX2VhY2hfc2coKCpzdCktPnNnbCwgc2csIG51bV9wYWdlcywgbikK LQkJCXNnX3NldF9wYWdlKHNnLCBwdmVjW25dLCBQQUdFX1NJWkUsIDApOwotCX0gZWxzZSB7Ci0J CXJldCA9IHNnX2FsbG9jX3RhYmxlX2Zyb21fcGFnZXMoKnN0LCBwdmVjLCBudW1fcGFnZXMsCi0J CQkJCQkwLCBudW1fcGFnZXMgPDwgUEFHRV9TSElGVCwKLQkJCQkJCUdGUF9LRVJORUwpOwotCQlp ZiAocmV0KQotCQkJZ290byBlcnI7Ci0JfQorCXJldCA9IF9fc2dfYWxsb2NfdGFibGVfZnJvbV9w YWdlcygqc3QsIHB2ZWMsIG51bV9wYWdlcywgMCwKKwkJCQkJICBudW1fcGFnZXMgPDwgUEFHRV9T SElGVCwKKwkJCQkJICBHRlBfS0VSTkVMLCBtYXhfc2VnbWVudCk7CisJaWYgKHJldCkKKwkJZ290 byBlcnI7CiAKIAlyZXR1cm4gMDsKIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=