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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 041DDC48BE6 for ; Mon, 14 Jun 2021 11:54:31 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C930861107 for ; Mon, 14 Jun 2021 11:54:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C930861107 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C561A89D4B; Mon, 14 Jun 2021 11:54:24 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 13A7389D56; Mon, 14 Jun 2021 11:54:23 +0000 (UTC) IronPort-SDR: qM7iBEH4D4r9OBUdR4LxTHomA53d0ebDk1tUGmtBstNGkaWsE3TvZbdW3uw9mXZPKfHTkumJPX VGZgoNR8tJhg== X-IronPort-AV: E=McAfee;i="6200,9189,10014"; a="185490616" X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="185490616" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 04:54:22 -0700 IronPort-SDR: lCYdhFYHGx6Ss5eEr42Wr+ftEgWAGwFlTodaJhTHJhc9S9+dOZnw8A0OheogODyiCkdMrPvPdf uCPYDboFbcgA== X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="451570255" Received: from janlundk-mobl1.ger.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.32]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 04:54:20 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Mon, 14 Jun 2021 13:54:05 +0200 Message-Id: <20210614115406.153107-4-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614115406.153107-1-thomas.hellstrom@linux.intel.com> References: <20210614115406.153107-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v4 3/4] drm/i915/ttm: Calculate the object placement at get_pages time X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , matthew.auld@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SW5zdGVhZCBvZiByZWx5aW5nIG9uIGEgc3RhdGljIHBsYWNlbWVudCwgY2FsY3VsYXRlIGF0IGdl dF9wYWdlcygpIHRpbWUuClRoaXMgc2hvdWxkIHdvcmsgZm9yIExNRU0gcmVnaW9ucyBhbmQgc3lz dGVtIGZvciBub3cuIEZvciBzdG9sZW4gd2UgbmVlZAp0byB0YWtlIHByZWFsbG9jYXRlZCByYW5n ZSBpbnRvIGFjY291bnQuIFRoYXQgd2lsbCBpZiBuZWVkZWQgYmUgYWRkZWQKbGF0ZXIuCgpTaWdu ZWQtb2ZmLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRl bC5jb20+ClJldmlld2VkLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+ Ci0tLQp2MjoKLSBGaXhlZCBhIHN0eWxlIGlzc3VlIChSZXBvcnRlZCBieSBNYXR0aGV3IEF1bGQp CnYzOgotIE1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgbW9yZSBwbGFjZW1lbnRzIHRvIHRoZSBzdGFj ay1hbGxvY2F0ZWQgdmVjdG9yCiAgdGhhbiB0aGVyZSBpcyByb29tIGZvci4gKFJlcG9ydGVkIGJ5 IE1hdHRoZXcgQXVsZCkKdjQ6Ci0gUmVtb3ZlIGNvbmZ1c2lvbiBhcm91bmQgc2hyaW5rYWJsZSBv YmplY3RzIChSZXBvcnRlZCBieSBNYXR0aGV3IEF1bGQpCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jIHwgOTUgKysrKysrKysrKysrKysrKysrLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5jIHwgIDggKystCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmggfCAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDc3 IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV90dG0uYwppbmRleCA1MTc2NjgyYTdkMTkuLjFjNDVmOWM4Nzk0NiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYwpAQCAtMjQsNiArMjQsMTEgQEAKICNkZWZp bmUgSTkxNV9UVE1fUFJJT19OT19QQUdFUyAgMQogI2RlZmluZSBJOTE1X1RUTV9QUklPX0hBU19Q QUdFUyAyCiAKKy8qCisgKiBTaXplIG9mIHN0cnVjdCB0dG1fcGxhY2UgdmVjdG9yIGluIG9uLXN0 YWNrIHN0cnVjdCB0dG1fcGxhY2VtZW50IGFsbG9jcworICovCisjZGVmaW5lIEk5MTVfVFRNX01B WF9QTEFDRU1FTlRTIElOVEVMX1JFR0lPTl9VTktOT1dOCisKIC8qKgogICogc3RydWN0IGk5MTVf dHRtX3R0IC0gVFRNIHBhZ2UgdmVjdG9yIHdpdGggYWRkaXRpb25hbCBwcml2YXRlIGluZm9ybWF0 aW9uCiAgKiBAdHRtOiBUaGUgYmFzZSBUVE0gcGFnZSB2ZWN0b3IuCkBAIC00MiwzMiArNDcsMTgg QEAgc3RydWN0IGk5MTVfdHRtX3R0IHsKIAlzdHJ1Y3Qgc2dfdGFibGUgKmNhY2hlZF9zdDsKIH07 CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlIGxtZW0wX3N5c19wbGFjZW1lbnRfZmxh Z3NbXSA9IHsKLQl7Ci0JCS5mcGZuID0gMCwKLQkJLmxwZm4gPSAwLAotCQkubWVtX3R5cGUgPSBJ OTE1X1BMX0xNRU0wLAotCQkuZmxhZ3MgPSAwLAotCX0sIHsKLQkJLmZwZm4gPSAwLAotCQkubHBm biA9IDAsCi0JCS5tZW1fdHlwZSA9IEk5MTVfUExfU1lTVEVNLAotCQkuZmxhZ3MgPSAwLAotCX0K LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgdHRtX3BsYWNlbWVudCBpOTE1X2xtZW0wX3BsYWNlbWVudCA9 IHsKLQkubnVtX3BsYWNlbWVudCA9IDEsCi0JLnBsYWNlbWVudCA9ICZsbWVtMF9zeXNfcGxhY2Vt ZW50X2ZsYWdzWzBdLAotCS5udW1fYnVzeV9wbGFjZW1lbnQgPSAxLAotCS5idXN5X3BsYWNlbWVu dCA9ICZsbWVtMF9zeXNfcGxhY2VtZW50X2ZsYWdzWzBdLAorc3RhdGljIGNvbnN0IHN0cnVjdCB0 dG1fcGxhY2Ugc3lzX3BsYWNlbWVudF9mbGFncyA9IHsKKwkuZnBmbiA9IDAsCisJLmxwZm4gPSAw LAorCS5tZW1fdHlwZSA9IEk5MTVfUExfU1lTVEVNLAorCS5mbGFncyA9IDAsCiB9OwogCiBzdGF0 aWMgc3RydWN0IHR0bV9wbGFjZW1lbnQgaTkxNV9zeXNfcGxhY2VtZW50ID0gewogCS5udW1fcGxh Y2VtZW50ID0gMSwKLQkucGxhY2VtZW50ID0gJmxtZW0wX3N5c19wbGFjZW1lbnRfZmxhZ3NbMV0s CisJLnBsYWNlbWVudCA9ICZzeXNfcGxhY2VtZW50X2ZsYWdzLAogCS5udW1fYnVzeV9wbGFjZW1l bnQgPSAxLAotCS5idXN5X3BsYWNlbWVudCA9ICZsbWVtMF9zeXNfcGxhY2VtZW50X2ZsYWdzWzFd LAorCS5idXN5X3BsYWNlbWVudCA9ICZzeXNfcGxhY2VtZW50X2ZsYWdzLAogfTsKIAogc3RhdGlj IGJvb2wgZ3B1X2JpbmRzX2lvbWVtKHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSkKQEAgLTgzLDYg Kzc0LDU1IEBAIHN0YXRpYyBib29sIGNwdV9tYXBzX2lvbWVtKHN0cnVjdCB0dG1fcmVzb3VyY2Ug Km1lbSkKIAogc3RhdGljIHZvaWQgaTkxNV90dG1fYWRqdXN0X2xydShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKIAorc3RhdGljIGVudW0gdHRtX2NhY2hpbmcKK2k5MTVfdHRtX3Nl bGVjdF90dF9jYWNoaW5nKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7 CisJLyoKKwkgKiBPYmplY3RzIG9ubHkgYWxsb3dlZCBpbiBzeXN0ZW0gZ2V0IGNhY2hlZCBjcHUt bWFwcGluZ3MuCisJICogT3RoZXIgb2JqZWN0cyBnZXQgV0MgbWFwcGluZyBmb3Igbm93LiBFdmVu IGlmIGluIHN5c3RlbS4KKwkgKi8KKwlpZiAob2JqLT5tbS5yZWdpb24tPnR5cGUgPT0gSU5URUxf TUVNT1JZX1NZU1RFTSAmJgorCSAgICBvYmotPm1tLm5fcGxhY2VtZW50cyA8PSAxKQorCQlyZXR1 cm4gdHRtX2NhY2hlZDsKKworCXJldHVybiB0dG1fd3JpdGVfY29tYmluZWQ7Cit9CisKK3N0YXRp YyB2b2lkCitpOTE1X3R0bV9wbGFjZV9mcm9tX3JlZ2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfbWVt b3J5X3JlZ2lvbiAqbXIsCisJCQkgICBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSkKK3sKKwltZW1z ZXQocGxhY2UsIDAsIHNpemVvZigqcGxhY2UpKTsKKwlwbGFjZS0+bWVtX3R5cGUgPSBpbnRlbF9y ZWdpb25fdG9fdHRtX3R5cGUobXIpOworfQorCitzdGF0aWMgdm9pZAoraTkxNV90dG1fcGxhY2Vt ZW50X2Zyb21fb2JqKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkg ICAgc3RydWN0IHR0bV9wbGFjZSAqcmVxdWVzdGVkLAorCQkJICAgIHN0cnVjdCB0dG1fcGxhY2Ug KmJ1c3ksCisJCQkgICAgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCkKK3sKKwl1bnNp Z25lZCBpbnQgbnVtX2FsbG93ZWQgPSBvYmotPm1tLm5fcGxhY2VtZW50czsKKwl1bnNpZ25lZCBp bnQgaTsKKworCXBsYWNlbWVudC0+bnVtX3BsYWNlbWVudCA9IDE7CisJaTkxNV90dG1fcGxhY2Vf ZnJvbV9yZWdpb24obnVtX2FsbG93ZWQgPyBvYmotPm1tLnBsYWNlbWVudHNbMF0gOgorCQkJCSAg IG9iai0+bW0ucmVnaW9uLCByZXF1ZXN0ZWQpOworCisJLyogQ2FjaGUgdGhpcyBvbiBvYmplY3Q/ ICovCisJcGxhY2VtZW50LT5udW1fYnVzeV9wbGFjZW1lbnQgPSBudW1fYWxsb3dlZDsKKwlmb3Ig KGkgPSAwOyBpIDwgcGxhY2VtZW50LT5udW1fYnVzeV9wbGFjZW1lbnQ7ICsraSkKKwkJaTkxNV90 dG1fcGxhY2VfZnJvbV9yZWdpb24ob2JqLT5tbS5wbGFjZW1lbnRzW2ldLCBidXN5ICsgaSk7CisK KwlpZiAobnVtX2FsbG93ZWQgPT0gMCkgeworCQkqYnVzeSA9ICpyZXF1ZXN0ZWQ7CisJCXBsYWNl bWVudC0+bnVtX2J1c3lfcGxhY2VtZW50ID0gMTsKKwl9CisKKwlwbGFjZW1lbnQtPnBsYWNlbWVu dCA9IHJlcXVlc3RlZDsKKwlwbGFjZW1lbnQtPmJ1c3lfcGxhY2VtZW50ID0gYnVzeTsKK30KKwog c3RhdGljIHN0cnVjdCB0dG1fdHQgKmk5MTVfdHRtX3R0X2NyZWF0ZShzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvLAogCQkJCQkgdWludDMyX3QgcGFnZV9mbGFncykKIHsKQEAgLTEwMCw3ICsx NDAsOCBAQCBzdGF0aWMgc3RydWN0IHR0bV90dCAqaTkxNV90dG1fdHRfY3JlYXRlKHN0cnVjdCB0 dG1fYnVmZmVyX29iamVjdCAqYm8sCiAJICAgIG1hbi0+dXNlX3R0KQogCQlwYWdlX2ZsYWdzIHw9 IFRUTV9QQUdFX0ZMQUdfWkVST19BTExPQzsKIAotCXJldCA9IHR0bV90dF9pbml0KCZpOTE1X3R0 LT50dG0sIGJvLCBwYWdlX2ZsYWdzLCB0dG1fd3JpdGVfY29tYmluZWQpOworCXJldCA9IHR0bV90 dF9pbml0KCZpOTE1X3R0LT50dG0sIGJvLCBwYWdlX2ZsYWdzLAorCQkJICBpOTE1X3R0bV9zZWxl Y3RfdHRfY2FjaGluZyhvYmopKTsKIAlpZiAocmV0KSB7CiAJCWtmcmVlKGk5MTVfdHQpOwogCQly ZXR1cm4gTlVMTDsKQEAgLTQ2NCwxMCArNTA1LDE1IEBAIHN0YXRpYyBpbnQgaTkxNV90dG1fZ2V0 X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCS5ub193YWl0X2dwdSA9 IGZhbHNlLAogCX07CiAJc3RydWN0IHNnX3RhYmxlICpzdDsKKwlzdHJ1Y3QgdHRtX3BsYWNlIHJl cXVlc3RlZCwgYnVzeVtJOTE1X1RUTV9NQVhfUExBQ0VNRU5UU107CisJc3RydWN0IHR0bV9wbGFj ZW1lbnQgcGxhY2VtZW50OwogCWludCByZXQ7CiAKKwlHRU1fQlVHX09OKG9iai0+bW0ubl9wbGFj ZW1lbnRzID4gSTkxNV9UVE1fTUFYX1BMQUNFTUVOVFMpOworCiAJLyogTW92ZSB0byB0aGUgcmVx dWVzdGVkIHBsYWNlbWVudC4gKi8KLQlyZXQgPSB0dG1fYm9fdmFsaWRhdGUoYm8sICZpOTE1X2xt ZW0wX3BsYWNlbWVudCwgJmN0eCk7CisJaTkxNV90dG1fcGxhY2VtZW50X2Zyb21fb2JqKG9iaiwg JnJlcXVlc3RlZCwgYnVzeSwgJnBsYWNlbWVudCk7CisJcmV0ID0gdHRtX2JvX3ZhbGlkYXRlKGJv LCAmcGxhY2VtZW50LCAmY3R4KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0ID09IC1FTk9TUEMg PyAtRU5YSU8gOiByZXQ7CiAKQEAgLTYyMSw3ICs2NjcsNiBAQCBzdGF0aWMgdTY0IGk5MTVfdHRt X21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV90dG1fb2JqX29wcyA9IHsKIAku bmFtZSA9ICJpOTE1X2dlbV9vYmplY3RfdHRtIiwKLQkuZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1Rf SVNfU0hSSU5LQUJMRSwKIAogCS5nZXRfcGFnZXMgPSBpOTE1X3R0bV9nZXRfcGFnZXMsCiAJLnB1 dF9wYWdlcyA9IGk5MTVfdHRtX3B1dF9wYWdlcywKQEAgLTY4Myw3ICs3MjgsNiBAQCBpbnQgX19p OTE1X2dlbV90dG1fb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwK IAlpOTE1X2dlbV9vYmplY3RfbWFrZV91bnNocmlua2FibGUob2JqKTsKIAlJTklUX1JBRElYX1RS RUUoJm9iai0+dHRtLmdldF9pb19wYWdlLnJhZGl4LCBHRlBfS0VSTkVMIHwgX19HRlBfTk9XQVJO KTsKIAltdXRleF9pbml0KCZvYmotPnR0bS5nZXRfaW9fcGFnZS5sb2NrKTsKLQogCWJvX3R5cGUg PSAob2JqLT5mbGFncyAmIEk5MTVfQk9fQUxMT0NfVVNFUikgPyB0dG1fYm9fdHlwZV9kZXZpY2Ug OgogCQl0dG1fYm9fdHlwZV9rZXJuZWw7CiAKQEAgLTcwNyw3ICs3NTEsNiBAQCBpbnQgX19pOTE1 X2dlbV90dG1fb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIAlp OTE1X3R0bV9hZGp1c3RfZG9tYWluc19hZnRlcl9jcHVfbW92ZShvYmopOwogCWk5MTVfdHRtX2Fk anVzdF9nZW1fYWZ0ZXJfbW92ZShvYmopOwogCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsK LQogb3V0OgogCS8qIGk5MTUgd2FudHMgLUVOWElPIHdoZW4gb3V0IG9mIG1lbW9yeSByZWdpb24g c3BhY2UuICovCiAJcmV0dXJuIChyZXQgPT0gLUVOT1NQQykgPyAtRU5YSU8gOiByZXQ7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMKaW5kZXggMjdmZTA2NjhkMDk0Li41YTY2 NGY2Y2M5M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90 dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMKQEAgLTUw LDEyICs1MCwxNiBAQCB2b2lkIGludGVsX3JlZ2lvbl90dG1fZGV2aWNlX2Zpbmkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICogZHJpdmVyLXByaXZhdGUgdHlwZXMgZm9yIG5v dywgcmVzZXJ2aW5nIFRUTV9QTF9WUkFNIGZvciBzdG9sZW4KICAqIG1lbW9yeSBhbmQgVFRNX1BM X1RUIGZvciBHR1RUIHVzZSBpZiBkZWNpZGVkIHRvIGltcGxlbWVudCB0aGlzLgogICovCi1zdGF0 aWMgaW50IGludGVsX3JlZ2lvbl90b190dG1fdHlwZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtKQoraW50IGludGVsX3JlZ2lvbl90b190dG1fdHlwZShjb25zdCBzdHJ1Y3QgaW50ZWxf bWVtb3J5X3JlZ2lvbiAqbWVtKQogewogCWludCB0eXBlOwogCiAJR0VNX0JVR19PTihtZW0tPnR5 cGUgIT0gSU5URUxfTUVNT1JZX0xPQ0FMICYmCi0JCSAgIG1lbS0+dHlwZSAhPSBJTlRFTF9NRU1P UllfTU9DSyk7CisJCSAgIG1lbS0+dHlwZSAhPSBJTlRFTF9NRU1PUllfTU9DSyAmJgorCQkgICBt ZW0tPnR5cGUgIT0gSU5URUxfTUVNT1JZX1NZU1RFTSk7CisKKwlpZiAobWVtLT50eXBlID09IElO VEVMX01FTU9SWV9TWVNURU0pCisJCXJldHVybiBUVE1fUExfU1lTVEVNOwogCiAJdHlwZSA9IG1l bS0+aW5zdGFuY2UgKyBUVE1fUExfUFJJVjsKIAlHRU1fQlVHX09OKHR5cGUgPj0gVFRNX05VTV9N RU1fVFlQRVMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9u X3R0bS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5oCmluZGV4IGU4 Y2Y4MzBmZGE2Zi4uNjQ5NDkxODQ0ZTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yZWdpb25fdHRtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVn aW9uX3R0bS5oCkBAIC0yOCw2ICsyOCw4IEBAIHN0cnVjdCBzZ190YWJsZSAqaW50ZWxfcmVnaW9u X3R0bV9ub2RlX3RvX3N0KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCiB2b2lkIGlu dGVsX3JlZ2lvbl90dG1fbm9kZV9mcmVlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0s CiAJCQkJc3RydWN0IHR0bV9yZXNvdXJjZSAqbm9kZSk7CiAKK2ludCBpbnRlbF9yZWdpb25fdG9f dHRtX3R5cGUoY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSk7CisKIHN0cnVj dCB0dG1fZGV2aWNlX2Z1bmNzICppOTE1X3R0bV9kcml2ZXIodm9pZCk7CiAKICNpZmRlZiBDT05G SUdfRFJNX0k5MTVfU0VMRlRFU1QKLS0gCjIuMzEuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== 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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 8D19FC48BE8 for ; Mon, 14 Jun 2021 11:54:32 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3C16B61107 for ; Mon, 14 Jun 2021 11:54:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C16B61107 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6F08589D73; Mon, 14 Jun 2021 11:54:26 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 13A7389D56; Mon, 14 Jun 2021 11:54:23 +0000 (UTC) IronPort-SDR: qM7iBEH4D4r9OBUdR4LxTHomA53d0ebDk1tUGmtBstNGkaWsE3TvZbdW3uw9mXZPKfHTkumJPX VGZgoNR8tJhg== X-IronPort-AV: E=McAfee;i="6200,9189,10014"; a="185490616" X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="185490616" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 04:54:22 -0700 IronPort-SDR: lCYdhFYHGx6Ss5eEr42Wr+ftEgWAGwFlTodaJhTHJhc9S9+dOZnw8A0OheogODyiCkdMrPvPdf uCPYDboFbcgA== X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="451570255" Received: from janlundk-mobl1.ger.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.32]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 04:54:20 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH v4 3/4] drm/i915/ttm: Calculate the object placement at get_pages time Date: Mon, 14 Jun 2021 13:54:05 +0200 Message-Id: <20210614115406.153107-4-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210614115406.153107-1-thomas.hellstrom@linux.intel.com> References: <20210614115406.153107-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , matthew.auld@intel.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Instead of relying on a static placement, calculate at get_pages() time. This should work for LMEM regions and system for now. For stolen we need to take preallocated range into account. That will if needed be added later. Signed-off-by: Thomas Hellström Reviewed-by: Matthew Auld --- v2: - Fixed a style issue (Reported by Matthew Auld) v3: - Make sure we don't add more placements to the stack-allocated vector than there is room for. (Reported by Matthew Auld) v4: - Remove confusion around shrinkable objects (Reported by Matthew Auld) --- drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 95 ++++++++++++++++++------- drivers/gpu/drm/i915/intel_region_ttm.c | 8 ++- drivers/gpu/drm/i915/intel_region_ttm.h | 2 + 3 files changed, 77 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c index 5176682a7d19..1c45f9c87946 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c @@ -24,6 +24,11 @@ #define I915_TTM_PRIO_NO_PAGES 1 #define I915_TTM_PRIO_HAS_PAGES 2 +/* + * Size of struct ttm_place vector in on-stack struct ttm_placement allocs + */ +#define I915_TTM_MAX_PLACEMENTS INTEL_REGION_UNKNOWN + /** * struct i915_ttm_tt - TTM page vector with additional private information * @ttm: The base TTM page vector. @@ -42,32 +47,18 @@ struct i915_ttm_tt { struct sg_table *cached_st; }; -static const struct ttm_place lmem0_sys_placement_flags[] = { - { - .fpfn = 0, - .lpfn = 0, - .mem_type = I915_PL_LMEM0, - .flags = 0, - }, { - .fpfn = 0, - .lpfn = 0, - .mem_type = I915_PL_SYSTEM, - .flags = 0, - } -}; - -static struct ttm_placement i915_lmem0_placement = { - .num_placement = 1, - .placement = &lmem0_sys_placement_flags[0], - .num_busy_placement = 1, - .busy_placement = &lmem0_sys_placement_flags[0], +static const struct ttm_place sys_placement_flags = { + .fpfn = 0, + .lpfn = 0, + .mem_type = I915_PL_SYSTEM, + .flags = 0, }; static struct ttm_placement i915_sys_placement = { .num_placement = 1, - .placement = &lmem0_sys_placement_flags[1], + .placement = &sys_placement_flags, .num_busy_placement = 1, - .busy_placement = &lmem0_sys_placement_flags[1], + .busy_placement = &sys_placement_flags, }; static bool gpu_binds_iomem(struct ttm_resource *mem) @@ -83,6 +74,55 @@ static bool cpu_maps_iomem(struct ttm_resource *mem) static void i915_ttm_adjust_lru(struct drm_i915_gem_object *obj); +static enum ttm_caching +i915_ttm_select_tt_caching(const struct drm_i915_gem_object *obj) +{ + /* + * Objects only allowed in system get cached cpu-mappings. + * Other objects get WC mapping for now. Even if in system. + */ + if (obj->mm.region->type == INTEL_MEMORY_SYSTEM && + obj->mm.n_placements <= 1) + return ttm_cached; + + return ttm_write_combined; +} + +static void +i915_ttm_place_from_region(const struct intel_memory_region *mr, + struct ttm_place *place) +{ + memset(place, 0, sizeof(*place)); + place->mem_type = intel_region_to_ttm_type(mr); +} + +static void +i915_ttm_placement_from_obj(const struct drm_i915_gem_object *obj, + struct ttm_place *requested, + struct ttm_place *busy, + struct ttm_placement *placement) +{ + unsigned int num_allowed = obj->mm.n_placements; + unsigned int i; + + placement->num_placement = 1; + i915_ttm_place_from_region(num_allowed ? obj->mm.placements[0] : + obj->mm.region, requested); + + /* Cache this on object? */ + placement->num_busy_placement = num_allowed; + for (i = 0; i < placement->num_busy_placement; ++i) + i915_ttm_place_from_region(obj->mm.placements[i], busy + i); + + if (num_allowed == 0) { + *busy = *requested; + placement->num_busy_placement = 1; + } + + placement->placement = requested; + placement->busy_placement = busy; +} + static struct ttm_tt *i915_ttm_tt_create(struct ttm_buffer_object *bo, uint32_t page_flags) { @@ -100,7 +140,8 @@ static struct ttm_tt *i915_ttm_tt_create(struct ttm_buffer_object *bo, man->use_tt) page_flags |= TTM_PAGE_FLAG_ZERO_ALLOC; - ret = ttm_tt_init(&i915_tt->ttm, bo, page_flags, ttm_write_combined); + ret = ttm_tt_init(&i915_tt->ttm, bo, page_flags, + i915_ttm_select_tt_caching(obj)); if (ret) { kfree(i915_tt); return NULL; @@ -464,10 +505,15 @@ static int i915_ttm_get_pages(struct drm_i915_gem_object *obj) .no_wait_gpu = false, }; struct sg_table *st; + struct ttm_place requested, busy[I915_TTM_MAX_PLACEMENTS]; + struct ttm_placement placement; int ret; + GEM_BUG_ON(obj->mm.n_placements > I915_TTM_MAX_PLACEMENTS); + /* Move to the requested placement. */ - ret = ttm_bo_validate(bo, &i915_lmem0_placement, &ctx); + i915_ttm_placement_from_obj(obj, &requested, busy, &placement); + ret = ttm_bo_validate(bo, &placement, &ctx); if (ret) return ret == -ENOSPC ? -ENXIO : ret; @@ -621,7 +667,6 @@ static u64 i915_ttm_mmap_offset(struct drm_i915_gem_object *obj) const struct drm_i915_gem_object_ops i915_gem_ttm_obj_ops = { .name = "i915_gem_object_ttm", - .flags = I915_GEM_OBJECT_IS_SHRINKABLE, .get_pages = i915_ttm_get_pages, .put_pages = i915_ttm_put_pages, @@ -683,7 +728,6 @@ int __i915_gem_ttm_object_init(struct intel_memory_region *mem, i915_gem_object_make_unshrinkable(obj); INIT_RADIX_TREE(&obj->ttm.get_io_page.radix, GFP_KERNEL | __GFP_NOWARN); mutex_init(&obj->ttm.get_io_page.lock); - bo_type = (obj->flags & I915_BO_ALLOC_USER) ? ttm_bo_type_device : ttm_bo_type_kernel; @@ -707,7 +751,6 @@ int __i915_gem_ttm_object_init(struct intel_memory_region *mem, i915_ttm_adjust_domains_after_cpu_move(obj); i915_ttm_adjust_gem_after_move(obj); i915_gem_object_unlock(obj); - out: /* i915 wants -ENXIO when out of memory region space. */ return (ret == -ENOSPC) ? -ENXIO : ret; diff --git a/drivers/gpu/drm/i915/intel_region_ttm.c b/drivers/gpu/drm/i915/intel_region_ttm.c index 27fe0668d094..5a664f6cc93f 100644 --- a/drivers/gpu/drm/i915/intel_region_ttm.c +++ b/drivers/gpu/drm/i915/intel_region_ttm.c @@ -50,12 +50,16 @@ void intel_region_ttm_device_fini(struct drm_i915_private *dev_priv) * driver-private types for now, reserving TTM_PL_VRAM for stolen * memory and TTM_PL_TT for GGTT use if decided to implement this. */ -static int intel_region_to_ttm_type(struct intel_memory_region *mem) +int intel_region_to_ttm_type(const struct intel_memory_region *mem) { int type; GEM_BUG_ON(mem->type != INTEL_MEMORY_LOCAL && - mem->type != INTEL_MEMORY_MOCK); + mem->type != INTEL_MEMORY_MOCK && + mem->type != INTEL_MEMORY_SYSTEM); + + if (mem->type == INTEL_MEMORY_SYSTEM) + return TTM_PL_SYSTEM; type = mem->instance + TTM_PL_PRIV; GEM_BUG_ON(type >= TTM_NUM_MEM_TYPES); diff --git a/drivers/gpu/drm/i915/intel_region_ttm.h b/drivers/gpu/drm/i915/intel_region_ttm.h index e8cf830fda6f..649491844e79 100644 --- a/drivers/gpu/drm/i915/intel_region_ttm.h +++ b/drivers/gpu/drm/i915/intel_region_ttm.h @@ -28,6 +28,8 @@ struct sg_table *intel_region_ttm_node_to_st(struct intel_memory_region *mem, void intel_region_ttm_node_free(struct intel_memory_region *mem, struct ttm_resource *node); +int intel_region_to_ttm_type(const struct intel_memory_region *mem); + struct ttm_device_funcs *i915_ttm_driver(void); #ifdef CONFIG_DRM_I915_SELFTEST -- 2.31.1