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,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 311C4C4743C for ; Mon, 21 Jun 2021 19:37:17 +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 AEF0061353 for ; Mon, 21 Jun 2021 19:37:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AEF0061353 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 42A886E40C; Mon, 21 Jun 2021 19:37:08 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 198A06E408; Mon, 21 Jun 2021 19:37:05 +0000 (UTC) IronPort-SDR: uygZZSYsZf6FQFkE2FTAV9vY1cX6Pydtows08gnEBnxGQsmRC58waMkzO5YCt1gzoYP599AOJY DpR9v0DtnNBw== X-IronPort-AV: E=McAfee;i="6200,9189,10022"; a="292548371" X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="292548371" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 12:37:04 -0700 IronPort-SDR: C0AoWzX1qLUkqRwgtAr9wfZkgUR4nKA4lEIxm2xvP49wBMB+Jk0x9uRxL/NF3lBF1qmu7Zi1T1 jDFAHWbCo3TQ== X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="489989537" Received: from gperry-mobl.ger.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.94]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 12:37:03 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Mon, 21 Jun 2021 21:36:43 +0200 Message-Id: <20210621193644.105627-3-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210621193644.105627-1-thomas.hellstrom@linux.intel.com> References: <20210621193644.105627-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v6 2/3] drm/i915/ttm: Adjust gem flags and caching settings after a move 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" QWZ0ZXIgYSBUVE0gbW92ZSBvciBvYmplY3QgaW5pdCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgaTkx NSBnZW0gZmxhZ3MgYW5kCmNhY2hpbmcgc2V0dGluZ3MgdG8gcmVmbGVjdCB0aGUgbmV3IHBsYWNl bWVudC4gQ3VycmVudGx5IGNhY2hpbmcgc2V0dGluZ3MKYXJlIG5vdCBjaGFuZ2VkIGR1cmluZyB0 aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0LCBhbHRob3VnaCB0aGF0IG1pZ2h0CmNoYW5nZSBtb3Zp bmcgZm9yd2FyZCBpZiB3ZSBydW4gaW50byBwZXJmb3JtYW5jZSBpc3N1ZXMgb3IgaXNzdWVzIHdp dGgKV0Mgc3lzdGVtIHBhZ2UgYWxsb2NhdGlvbnMuCkFsc28gaW50cm9kdWNlIGdwdV9iaW5kc19p b21lbSgpIGFuZCBjcHVfbWFwc19pb21lbSgpIHRvIGNsZWFuIHVwIHRoZQp2YXJpb3VzIHdheXMg d2UgcHJldmlvdXNseSB1c2VkIHRvIGRldGVjdCB0aGlzLgpGaW5hbGx5LCBpbml0aWFsaXplIHRo ZSBUVE0gb2JqZWN0IHJlc2VydmVkIHRvIGJlIGFibGUgdG8gdXBkYXRlCmZsYWdzIGFuZCBjYWNo aW5nIGJlZm9yZSBhbnlvbmUgZWxzZSBnZXRzIGhvbGQgb2YgdGhlIG9iamVjdC4KClNpZ25lZC1v ZmYtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNv bT4KUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KCnY2 OgotIFJlYmFzZSBvbiBhY2NlbGVyYXRlZCB0dG0gbW92ZXMuCi0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jIHwgMTQzICsrKysrKysrKysrKysrKysrKy0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMKaW5kZXggYjVkZDNiNzAzN2Y0Li45NjZi MjkyZDA3ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90 dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMKQEAgLTkx LDYgKzkxLDI2IEBAIHN0YXRpYyBpbnQgaTkxNV90dG1fZXJyX3RvX2dlbShpbnQgZXJyKQogCXJl dHVybiBlcnI7CiB9CiAKK3N0YXRpYyBib29sIGdwdV9iaW5kc19pb21lbShzdHJ1Y3QgdHRtX3Jl c291cmNlICptZW0pCit7CisJcmV0dXJuIG1lbS0+bWVtX3R5cGUgIT0gVFRNX1BMX1NZU1RFTTsK K30KKworc3RhdGljIGJvb2wgY3B1X21hcHNfaW9tZW0oc3RydWN0IHR0bV9yZXNvdXJjZSAqbWVt KQoreworCS8qIE9uY2UgLyBpZiB3ZSBzdXBwb3J0IEdHVFQsIHRoaXMgaXMgYWxzbyBmYWxzZSBm b3IgY2FjaGVkIHR0bV90dHMgKi8KKwlyZXR1cm4gbWVtLT5tZW1fdHlwZSAhPSBUVE1fUExfU1lT VEVNOworfQorCitzdGF0aWMgZW51bSBpOTE1X2NhY2hlX2xldmVsCitpOTE1X3R0bV9jYWNoZV9s ZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IHR0bV9yZXNvdXJjZSAq cmVzLAorCQkgICAgIHN0cnVjdCB0dG1fdHQgKnR0bSkKK3sKKwlyZXR1cm4gKChIQVNfTExDKGk5 MTUpIHx8IEhBU19TTk9PUChpOTE1KSkgJiYgIWdwdV9iaW5kc19pb21lbShyZXMpICYmCisJCXR0 bS0+Y2FjaGluZyA9PSB0dG1fY2FjaGVkKSA/IEk5MTVfQ0FDSEVfTExDIDoKKwkJSTkxNV9DQUNI RV9OT05FOworfQorCiBzdGF0aWMgdm9pZCBpOTE1X3R0bV9hZGp1c3RfbHJ1KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOwogCiBzdGF0aWMgZW51bSB0dG1fY2FjaGluZwpAQCAtMjQ4 LDYgKzI2OCwzNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3R0bV9mcmVlX2NhY2hlZF9pb19zdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCW9iai0+dHRtLmNhY2hlZF9pb19zdCA9IE5V TEw7CiB9CiAKK3N0YXRpYyB2b2lkCitpOTE1X3R0bV9hZGp1c3RfZG9tYWluc19hZnRlcl9tb3Zl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibyA9IGk5MTVfZ2VtX3RvX3R0bShvYmopOworCisJaWYgKGNwdV9tYXBzX2lvbWVt KGJvLT5yZXNvdXJjZSkgfHwgYm8tPnR0bS0+Y2FjaGluZyAhPSB0dG1fY2FjaGVkKSB7CisJCW9i ai0+d3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1dDOworCQlvYmotPnJlYWRfZG9tYWlu cyA9IEk5MTVfR0VNX0RPTUFJTl9XQzsKKwl9IGVsc2UgeworCQlvYmotPndyaXRlX2RvbWFpbiA9 IEk5MTVfR0VNX0RPTUFJTl9DUFU7CisJCW9iai0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9N QUlOX0NQVTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfdHRtX2FkanVzdF9nZW1fYWZ0ZXJf bW92ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8gPSBpOTE1X2dlbV90b190dG0ob2JqKTsKKwl1bnNpZ25lZCBpbnQgY2Fj aGVfbGV2ZWw7CisKKwlvYmotPm1lbV9mbGFncyAmPSB+KEk5MTVfQk9fRkxBR19TVFJVQ1RfUEFH RSB8IEk5MTVfQk9fRkxBR19JT01FTSk7CisKKwlvYmotPm1lbV9mbGFncyB8PSBjcHVfbWFwc19p b21lbShiby0+cmVzb3VyY2UpID8gSTkxNV9CT19GTEFHX0lPTUVNIDoKKwkJSTkxNV9CT19GTEFH X1NUUlVDVF9QQUdFOworCisJY2FjaGVfbGV2ZWwgPSBpOTE1X3R0bV9jYWNoZV9sZXZlbCh0b19p OTE1KGJvLT5iYXNlLmRldiksIGJvLT5yZXNvdXJjZSwKKwkJCQkJICAgYm8tPnR0bSk7CisJaTkx NV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBjYWNoZV9sZXZlbCk7Cit9CisK IHN0YXRpYyB2b2lkIGk5MTVfdHRtX3B1cmdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCiB7CiAJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IGk5MTVfZ2VtX3RvX3R0bShv YmopOwpAQCAtMjYzLDggKzMxMiwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X3R0bV9wdXJnZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJLyogVFRNJ3MgcHVyZ2UgaW50ZXJmYWNl LiBOb3RlIHRoYXQgd2UgbWlnaHQgYmUgcmVlbnRlcmluZy4gKi8KIAlyZXQgPSB0dG1fYm9fdmFs aWRhdGUoYm8sICZwbGFjZSwgJmN0eCk7Ci0KIAlpZiAoIXJldCkgeworCQlvYmotPndyaXRlX2Rv bWFpbiA9IDA7CisJCW9iai0+cmVhZF9kb21haW5zID0gMDsKKwkJaTkxNV90dG1fYWRqdXN0X2dl bV9hZnRlcl9tb3ZlKG9iaik7CiAJCWk5MTVfdHRtX2ZyZWVfY2FjaGVkX2lvX3N0KG9iaik7CiAJ CW9iai0+bW0ubWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDsKIAl9CkBAIC0zNDcsMTIgKzM5OCwx NSBAQCBpOTE1X3R0bV9yZXNvdXJjZV9nZXRfc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAkJCSBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMpCiB7CiAJc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibyA9IGk5MTVfZ2VtX3RvX3R0bShvYmopOwotCXN0cnVjdCB0dG1fcmVzb3Vy Y2VfbWFuYWdlciAqbWFuID0KLQkJdHRtX21hbmFnZXJfdHlwZShiby0+YmRldiwgcmVzLT5tZW1f dHlwZSk7CiAKLQlpZiAobWFuLT51c2VfdHQpCisJaWYgKCFncHVfYmluZHNfaW9tZW0ocmVzKSkK IAkJcmV0dXJuIGk5MTVfdHRtX3R0X2dldF9zdChiby0+dHRtKTsKIAorCS8qCisJICogSWYgQ1BV IG1hcHBpbmcgZGlmZmVycywgd2UgbmVlZCB0byBhZGQgdGhlIHR0bV90dCBwYWdlcyB0bworCSAq IHRoZSByZXN1bHRpbmcgc3QuIE1pZ2h0IG1ha2Ugc2Vuc2UgZm9yIEdHVFQuCisJICovCisJR0VN X1dBUk5fT04oIWNwdV9tYXBzX2lvbWVtKHJlcykpOwogCXJldHVybiBpbnRlbF9yZWdpb25fdHRt X3Jlc291cmNlX3RvX3N0KG9iai0+bW0ucmVnaW9uLCByZXMpOwogfQogCkBAIC0zNjcsMjMgKzQy MSwyNSBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2FjY2VsX21vdmUoc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibywKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaTkxNV90dG1f dG9fZ2VtKGJvKTsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNyY19zdDsKIAlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycTsKKwlzdHJ1Y3QgdHRtX3R0ICp0dG0gPSBiby0+dHRtOworCWVudW0gaTkxNV9jYWNo ZV9sZXZlbCBzcmNfbGV2ZWwsIGRzdF9sZXZlbDsKIAlpbnQgcmV0OwogCiAJaWYgKCFpOTE1LT5n dC5taWdyYXRlLmNvbnRleHQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKCFiby0+dHRtIHx8 ICF0dG1fdHRfaXNfcG9wdWxhdGVkKGJvLT50dG0pKSB7CisJZHN0X2xldmVsID0gaTkxNV90dG1f Y2FjaGVfbGV2ZWwoaTkxNSwgZHN0X21lbSwgdHRtKTsKKwlpZiAoIXR0bSB8fCAhdHRtX3R0X2lz X3BvcHVsYXRlZCh0dG0pKSB7CiAJCWlmIChiby0+dHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwp CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAotCQlpZiAoYm8tPnR0bSAmJgotCQkgICAgIShiby0+dHRt LT5wYWdlX2ZsYWdzICYgVFRNX1BBR0VfRkxBR19aRVJPX0FMTE9DKSkKKwkJaWYgKHR0bSAmJiAh KHR0bS0+cGFnZV9mbGFncyAmIFRUTV9QQUdFX0ZMQUdfWkVST19BTExPQykpCiAJCQlyZXR1cm4g MDsKIAogCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGk5MTUtPmd0Lm1pZ3JhdGUuY29udGV4dC0+ZW5n aW5lKTsKIAkJcmV0ID0gaW50ZWxfY29udGV4dF9taWdyYXRlX2NsZWFyKGk5MTUtPmd0Lm1pZ3Jh dGUuY29udGV4dCwgTlVMTCwKLQkJCQkJCSAgZHN0X3N0LT5zZ2wsIEk5MTVfQ0FDSEVfTk9ORSwK LQkJCQkJCSAgZHN0X21lbS0+bWVtX3R5cGUgPj0gSTkxNV9QTF9MTUVNMCwKKwkJCQkJCSAgZHN0 X3N0LT5zZ2wsIGRzdF9sZXZlbCwKKwkJCQkJCSAgZ3B1X2JpbmRzX2lvbWVtKGRzdF9tZW0pLAog CQkJCQkJICAwLCAmcnEpOwogCiAJCWlmICghcmV0ICYmIHJxKSB7CkBAIC0zOTIsMTUgKzQ0OCwx NiBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2FjY2VsX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICpibywKIAkJfQogCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGk5MTUtPmd0Lm1pZ3JhdGUuY29u dGV4dC0+ZW5naW5lKTsKIAl9IGVsc2UgewotCQlzcmNfc3QgPSBzcmNfbWFuLT51c2VfdHQgPyBp OTE1X3R0bV90dF9nZXRfc3QoYm8tPnR0bSkgOgotCQkJCQkJb2JqLT50dG0uY2FjaGVkX2lvX3N0 OworCQlzcmNfc3QgPSBzcmNfbWFuLT51c2VfdHQgPyBpOTE1X3R0bV90dF9nZXRfc3QodHRtKSA6 CisJCQlvYmotPnR0bS5jYWNoZWRfaW9fc3Q7CiAKKwkJc3JjX2xldmVsID0gaTkxNV90dG1fY2Fj aGVfbGV2ZWwoaTkxNSwgYm8tPnJlc291cmNlLCB0dG0pOwogCQlpbnRlbF9lbmdpbmVfcG1fZ2V0 KGk5MTUtPmd0Lm1pZ3JhdGUuY29udGV4dC0+ZW5naW5lKTsKIAkJcmV0ID0gaW50ZWxfY29udGV4 dF9taWdyYXRlX2NvcHkoaTkxNS0+Z3QubWlncmF0ZS5jb250ZXh0LAotCQkJCQkJIE5VTEwsIHNy Y19zdC0+c2dsLCBJOTE1X0NBQ0hFX05PTkUsCi0JCQkJCQkgYm8tPnJlc291cmNlLT5tZW1fdHlw ZSA+PSBJOTE1X1BMX0xNRU0wLAotCQkJCQkJIGRzdF9zdC0+c2dsLCBJOTE1X0NBQ0hFX05PTkUs Ci0JCQkJCQkgZHN0X21lbS0+bWVtX3R5cGUgPj0gSTkxNV9QTF9MTUVNMCwKKwkJCQkJCSBOVUxM LCBzcmNfc3QtPnNnbCwgc3JjX2xldmVsLAorCQkJCQkJIGdwdV9iaW5kc19pb21lbShiby0+cmVz b3VyY2UpLAorCQkJCQkJIGRzdF9zdC0+c2dsLCBkc3RfbGV2ZWwsCisJCQkJCQkgZ3B1X2JpbmRz X2lvbWVtKGRzdF9tZW0pLAogCQkJCQkJICZycSk7CiAJCWlmICghcmV0ICYmIHJxKSB7CiAJCQlp OTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwpAQCAtNDIwLDgg KzQ3Nyw2IEBAIHN0YXRpYyBpbnQgaTkxNV90dG1fbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKmJvLCBib29sIGV2aWN0LAogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBp OTE1X3R0bV90b19nZW0oYm8pOwogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqZHN0X21h biA9CiAJCXR0bV9tYW5hZ2VyX3R5cGUoYm8tPmJkZXYsIGRzdF9tZW0tPm1lbV90eXBlKTsKLQlz dHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKnNyY19tYW4gPQotCQl0dG1fbWFuYWdlcl90eXBl KGJvLT5iZGV2LCBiby0+cmVzb3VyY2UtPm1lbV90eXBlKTsKIAlzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbiAqZHN0X3JlZywgKnNyY19yZWc7CiAJdW5pb24gewogCQlzdHJ1Y3QgdHRtX2ttYXBf aXRlcl90dCB0dDsKQEAgLTQ2NSwxMiArNTIwLDEyIEBAIHN0YXRpYyBpbnQgaTkxNV90dG1fbW92 ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBib29sIGV2aWN0LAogCXJldCA9IGk5MTVf dHRtX2FjY2VsX21vdmUoYm8sIGRzdF9tZW0sIGRzdF9zdCk7CiAJaWYgKHJldCkgewogCQkvKiBJ ZiB3ZSBzdGFydCBtYXBwaW5nIEdHVFQsIHdlIGNhbiBubyBsb25nZXIgdXNlIG1hbjo6dXNlX3R0 IGhlcmUuICovCi0JCWRzdF9pdGVyID0gZHN0X21hbi0+dXNlX3R0ID8KKwkJZHN0X2l0ZXIgPSAh Y3B1X21hcHNfaW9tZW0oZHN0X21lbSkgPwogCQkJdHRtX2ttYXBfaXRlcl90dF9pbml0KCZfZHN0 X2l0ZXIudHQsIGJvLT50dG0pIDoKIAkJCXR0bV9rbWFwX2l0ZXJfaW9tYXBfaW5pdCgmX2RzdF9p dGVyLmlvLCAmZHN0X3JlZy0+aW9tYXAsCiAJCQkJCQkgZHN0X3N0LCBkc3RfcmVnLT5yZWdpb24u c3RhcnQpOwogCi0JCXNyY19pdGVyID0gc3JjX21hbi0+dXNlX3R0ID8KKwkJc3JjX2l0ZXIgPSAh Y3B1X21hcHNfaW9tZW0oYm8tPnJlc291cmNlKSA/CiAJCQl0dG1fa21hcF9pdGVyX3R0X2luaXQo Jl9zcmNfaXRlci50dCwgYm8tPnR0bSkgOgogCQkJdHRtX2ttYXBfaXRlcl9pb21hcF9pbml0KCZf c3JjX2l0ZXIuaW8sICZzcmNfcmVnLT5pb21hcCwKIAkJCQkJCSBvYmotPnR0bS5jYWNoZWRfaW9f c3QsCkBAIC00NzgsMjEgKzUzMywyNCBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX21vdmUoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibywgYm9vbCBldmljdCwKIAogCQl0dG1fbW92ZV9tZW1jcHko Ym8sIGRzdF9tZW0tPm51bV9wYWdlcywgZHN0X2l0ZXIsIHNyY19pdGVyKTsKIAl9CisJLyogQmVs b3cgZHN0X21lbSBiZWNvbWVzIGJvLT5yZXNvdXJjZS4gKi8KIAl0dG1fYm9fbW92ZV9zeW5jX2Ns ZWFudXAoYm8sIGRzdF9tZW0pOworCWk5MTVfdHRtX2FkanVzdF9kb21haW5zX2FmdGVyX21vdmUo b2JqKTsKIAlpOTE1X3R0bV9mcmVlX2NhY2hlZF9pb19zdChvYmopOwogCi0JaWYgKCFkc3RfbWFu LT51c2VfdHQpIHsKKwlpZiAoZ3B1X2JpbmRzX2lvbWVtKGRzdF9tZW0pIHx8IGNwdV9tYXBzX2lv bWVtKGRzdF9tZW0pKSB7CiAJCW9iai0+dHRtLmNhY2hlZF9pb19zdCA9IGRzdF9zdDsKIAkJb2Jq LT50dG0uZ2V0X2lvX3BhZ2Uuc2dfcG9zID0gZHN0X3N0LT5zZ2w7CiAJCW9iai0+dHRtLmdldF9p b19wYWdlLnNnX2lkeCA9IDA7CiAJfQogCisJaTkxNV90dG1fYWRqdXN0X2dlbV9hZnRlcl9tb3Zl KG9iaik7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV90dG1faW9fbWVtX3Jlc2Vy dmUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSkKIHsK LQlpZiAobWVtLT5tZW1fdHlwZSA8IEk5MTVfUExfTE1FTTApCisJaWYgKCFjcHVfbWFwc19pb21l bShtZW0pKQogCQlyZXR1cm4gMDsKIAogCW1lbS0+YnVzLmNhY2hpbmcgPSB0dG1fd3JpdGVfY29t YmluZWQ7CkBAIC01OTAsNiArNjQ4LDE2IEBAIHN0YXRpYyBpbnQgaTkxNV90dG1fZ2V0X3BhZ2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCQlyZXR1cm4gaTkxNV90dG1fZXJy X3RvX2dlbShyZXQpOwogCX0KIAorCWk5MTVfdHRtX2FkanVzdF9scnUob2JqKTsKKwlpZiAoYm8t PnR0bSAmJiAhdHRtX3R0X2lzX3BvcHVsYXRlZChiby0+dHRtKSkgeworCQlyZXQgPSB0dG1fdHRf cG9wdWxhdGUoYm8tPmJkZXYsIGJvLT50dG0sICZjdHgpOworCQlpZiAocmV0KQorCQkJcmV0dXJu IHJldDsKKworCQlpOTE1X3R0bV9hZGp1c3RfZG9tYWluc19hZnRlcl9tb3ZlKG9iaik7CisJCWk5 MTVfdHRtX2FkanVzdF9nZW1fYWZ0ZXJfbW92ZShvYmopOworCX0KKwogCS8qIE9iamVjdCBlaXRo ZXIgaGFzIGEgcGFnZSB2ZWN0b3Igb3IgaXMgYW4gaW9tZW0gb2JqZWN0ICovCiAJc3QgPSBiby0+ dHRtID8gaTkxNV90dG1fdHRfZ2V0X3N0KGJvLT50dG0pIDogb2JqLT50dG0uY2FjaGVkX2lvX3N0 OwogCWlmIChJU19FUlIoc3QpKQpAQCAtNTk3LDggKzY2NSw2IEBAIHN0YXRpYyBpbnQgaTkxNV90 dG1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIAlfX2k5MTVf Z2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBzdCwgaTkxNV9zZ19kbWFfc2l6ZXMoc3QtPnNnbCkp OwogCi0JaTkxNV90dG1fYWRqdXN0X2xydShvYmopOwotCiAJcmV0dXJuIHJldDsKIH0KIApAQCAt NzY4LDYgKzgzNCwxMCBAQCBpbnQgX19pOTE1X2dlbV90dG1fb2JqZWN0X2luaXQoc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIHsKIAlzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5 IGxvY2tfY2xhc3M7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBtZW0tPmk5MTU7 CisJc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsKKwkJLmludGVycnVwdGlibGUgPSB0 cnVlLAorCQkubm9fd2FpdF9ncHUgPSBmYWxzZSwKKwl9OwogCWVudW0gdHRtX2JvX3R5cGUgYm9f dHlwZTsKIAlpbnQgcmV0OwogCkBAIC03NzUsMTQgKzg0NSwxMyBAQCBpbnQgX19pOTE1X2dlbV90 dG1fb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIAlpOTE1X2dl bV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV90dG1fb2JqX29wcywgJmxvY2tfY2xhc3MsIGZs YWdzKTsKIAlpOTE1X2dlbV9vYmplY3RfaW5pdF9tZW1vcnlfcmVnaW9uKG9iaiwgbWVtKTsKIAlp OTE1X2dlbV9vYmplY3RfbWFrZV91bnNocmlua2FibGUob2JqKTsKLQlvYmotPnJlYWRfZG9tYWlu cyA9IEk5MTVfR0VNX0RPTUFJTl9XQyB8IEk5MTVfR0VNX0RPTUFJTl9HVFQ7Ci0Jb2JqLT5tZW1f ZmxhZ3MgfD0gSTkxNV9CT19GTEFHX0lPTUVNOwotCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVf Y29oZXJlbmN5KG9iaiwgSTkxNV9DQUNIRV9OT05FKTsKIAlJTklUX1JBRElYX1RSRUUoJm9iai0+ dHRtLmdldF9pb19wYWdlLnJhZGl4LCBHRlBfS0VSTkVMIHwgX19HRlBfTk9XQVJOKTsKIAltdXRl eF9pbml0KCZvYmotPnR0bS5nZXRfaW9fcGFnZS5sb2NrKTsKIAlib190eXBlID0gKG9iai0+Zmxh Z3MgJiBJOTE1X0JPX0FMTE9DX1VTRVIpID8gdHRtX2JvX3R5cGVfZGV2aWNlIDoKIAkJdHRtX2Jv X3R5cGVfa2VybmVsOwogCisJb2JqLT5iYXNlLnZtYV9ub2RlLmRyaXZlcl9wcml2YXRlID0gaTkx NV9nZW1fdG9fdHRtKG9iaik7CisKIAkvKgogCSAqIElmIHRoaXMgZnVuY3Rpb24gZmFpbHMsIGl0 IHdpbGwgY2FsbCB0aGUgZGVzdHJ1Y3RvciwgYnV0CiAJICogb3VyIGNhbGxlciBzdGlsbCBvd25z IHRoZSBvYmplY3QuIFNvIG5vIGZyZWVpbmcgaW4gdGhlCkBAIC03OTAsMTQgKzg1OSwxNiBAQCBp bnQgX19pOTE1X2dlbV90dG1fb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24g Km1lbSwKIAkgKiBTaW1pbGFybHksIGluIGRlbGF5ZWRfZGVzdHJveSwgd2UgY2FuJ3QgY2FsbCB0 dG1fYm9fcHV0KCkKIAkgKiB1bnRpbCBzdWNjZXNzZnVsIGluaXRpYWxpemF0aW9uLgogCSAqLwot CW9iai0+YmFzZS52bWFfbm9kZS5kcml2ZXJfcHJpdmF0ZSA9IGk5MTVfZ2VtX3RvX3R0bShvYmop OwotCXJldCA9IHR0bV9ib19pbml0KCZpOTE1LT5iZGV2LCBpOTE1X2dlbV90b190dG0ob2JqKSwg c2l6ZSwKLQkJCSAgYm9fdHlwZSwgJmk5MTVfc3lzX3BsYWNlbWVudCwKLQkJCSAgbWVtLT5taW5f cGFnZV9zaXplID4+IFBBR0VfU0hJRlQsCi0JCQkgIHRydWUsIE5VTEwsIE5VTEwsIGk5MTVfdHRt X2JvX2Rlc3Ryb3kpOwotCWlmICghcmV0KQotCQlvYmotPnR0bS5jcmVhdGVkID0gdHJ1ZTsKLQot CS8qIGk5MTUgd2FudHMgLUVOWElPIHdoZW4gb3V0IG9mIG1lbW9yeSByZWdpb24gc3BhY2UuICov Ci0JcmV0dXJuIGk5MTVfdHRtX2Vycl90b19nZW0ocmV0KTsKKwlyZXQgPSB0dG1fYm9faW5pdF9y ZXNlcnZlZCgmaTkxNS0+YmRldiwgaTkxNV9nZW1fdG9fdHRtKG9iaiksIHNpemUsCisJCQkJICAg Ym9fdHlwZSwgJmk5MTVfc3lzX3BsYWNlbWVudCwgMSwKKwkJCQkgICAmY3R4LCBOVUxMLCBOVUxM LCBpOTE1X3R0bV9ib19kZXN0cm95KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gaTkxNV90dG1fZXJy X3RvX2dlbShyZXQpOworCisJb2JqLT50dG0uY3JlYXRlZCA9IHRydWU7CisJaTkxNV90dG1fYWRq dXN0X2RvbWFpbnNfYWZ0ZXJfbW92ZShvYmopOworCWk5MTVfdHRtX2FkanVzdF9nZW1fYWZ0ZXJf bW92ZShvYmopOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKKworCXJldHVybiAwOwog fQotLSAKMi4zMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK 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,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 56254C49EA2 for ; Mon, 21 Jun 2021 19:37:14 +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 2551F61352 for ; Mon, 21 Jun 2021 19:37:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2551F61352 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 168876E40B; Mon, 21 Jun 2021 19:37:07 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 198A06E408; Mon, 21 Jun 2021 19:37:05 +0000 (UTC) IronPort-SDR: uygZZSYsZf6FQFkE2FTAV9vY1cX6Pydtows08gnEBnxGQsmRC58waMkzO5YCt1gzoYP599AOJY DpR9v0DtnNBw== X-IronPort-AV: E=McAfee;i="6200,9189,10022"; a="292548371" X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="292548371" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 12:37:04 -0700 IronPort-SDR: C0AoWzX1qLUkqRwgtAr9wfZkgUR4nKA4lEIxm2xvP49wBMB+Jk0x9uRxL/NF3lBF1qmu7Zi1T1 jDFAHWbCo3TQ== X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="489989537" Received: from gperry-mobl.ger.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.94]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 12:37:03 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH v6 2/3] drm/i915/ttm: Adjust gem flags and caching settings after a move Date: Mon, 21 Jun 2021 21:36:43 +0200 Message-Id: <20210621193644.105627-3-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210621193644.105627-1-thomas.hellstrom@linux.intel.com> References: <20210621193644.105627-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" After a TTM move or object init we need to update the i915 gem flags and caching settings to reflect the new placement. Currently caching settings are not changed during the lifetime of an object, although that might change moving forward if we run into performance issues or issues with WC system page allocations. Also introduce gpu_binds_iomem() and cpu_maps_iomem() to clean up the various ways we previously used to detect this. Finally, initialize the TTM object reserved to be able to update flags and caching before anyone else gets hold of the object. Signed-off-by: Thomas Hellström Reviewed-by: Matthew Auld v6: - Rebase on accelerated ttm moves. --- drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 143 ++++++++++++++++++------ 1 file changed, 107 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c index b5dd3b7037f4..966b292d07da 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c @@ -91,6 +91,26 @@ static int i915_ttm_err_to_gem(int err) return err; } +static bool gpu_binds_iomem(struct ttm_resource *mem) +{ + return mem->mem_type != TTM_PL_SYSTEM; +} + +static bool cpu_maps_iomem(struct ttm_resource *mem) +{ + /* Once / if we support GGTT, this is also false for cached ttm_tts */ + return mem->mem_type != TTM_PL_SYSTEM; +} + +static enum i915_cache_level +i915_ttm_cache_level(struct drm_i915_private *i915, struct ttm_resource *res, + struct ttm_tt *ttm) +{ + return ((HAS_LLC(i915) || HAS_SNOOP(i915)) && !gpu_binds_iomem(res) && + ttm->caching == ttm_cached) ? I915_CACHE_LLC : + I915_CACHE_NONE; +} + static void i915_ttm_adjust_lru(struct drm_i915_gem_object *obj); static enum ttm_caching @@ -248,6 +268,35 @@ static void i915_ttm_free_cached_io_st(struct drm_i915_gem_object *obj) obj->ttm.cached_io_st = NULL; } +static void +i915_ttm_adjust_domains_after_move(struct drm_i915_gem_object *obj) +{ + struct ttm_buffer_object *bo = i915_gem_to_ttm(obj); + + if (cpu_maps_iomem(bo->resource) || bo->ttm->caching != ttm_cached) { + obj->write_domain = I915_GEM_DOMAIN_WC; + obj->read_domains = I915_GEM_DOMAIN_WC; + } else { + obj->write_domain = I915_GEM_DOMAIN_CPU; + obj->read_domains = I915_GEM_DOMAIN_CPU; + } +} + +static void i915_ttm_adjust_gem_after_move(struct drm_i915_gem_object *obj) +{ + struct ttm_buffer_object *bo = i915_gem_to_ttm(obj); + unsigned int cache_level; + + obj->mem_flags &= ~(I915_BO_FLAG_STRUCT_PAGE | I915_BO_FLAG_IOMEM); + + obj->mem_flags |= cpu_maps_iomem(bo->resource) ? I915_BO_FLAG_IOMEM : + I915_BO_FLAG_STRUCT_PAGE; + + cache_level = i915_ttm_cache_level(to_i915(bo->base.dev), bo->resource, + bo->ttm); + i915_gem_object_set_cache_coherency(obj, cache_level); +} + static void i915_ttm_purge(struct drm_i915_gem_object *obj) { struct ttm_buffer_object *bo = i915_gem_to_ttm(obj); @@ -263,8 +312,10 @@ static void i915_ttm_purge(struct drm_i915_gem_object *obj) /* TTM's purge interface. Note that we might be reentering. */ ret = ttm_bo_validate(bo, &place, &ctx); - if (!ret) { + obj->write_domain = 0; + obj->read_domains = 0; + i915_ttm_adjust_gem_after_move(obj); i915_ttm_free_cached_io_st(obj); obj->mm.madv = __I915_MADV_PURGED; } @@ -347,12 +398,15 @@ i915_ttm_resource_get_st(struct drm_i915_gem_object *obj, struct ttm_resource *res) { struct ttm_buffer_object *bo = i915_gem_to_ttm(obj); - struct ttm_resource_manager *man = - ttm_manager_type(bo->bdev, res->mem_type); - if (man->use_tt) + if (!gpu_binds_iomem(res)) return i915_ttm_tt_get_st(bo->ttm); + /* + * If CPU mapping differs, we need to add the ttm_tt pages to + * the resulting st. Might make sense for GGTT. + */ + GEM_WARN_ON(!cpu_maps_iomem(res)); return intel_region_ttm_resource_to_st(obj->mm.region, res); } @@ -367,23 +421,25 @@ static int i915_ttm_accel_move(struct ttm_buffer_object *bo, struct drm_i915_gem_object *obj = i915_ttm_to_gem(bo); struct sg_table *src_st; struct i915_request *rq; + struct ttm_tt *ttm = bo->ttm; + enum i915_cache_level src_level, dst_level; int ret; if (!i915->gt.migrate.context) return -EINVAL; - if (!bo->ttm || !ttm_tt_is_populated(bo->ttm)) { + dst_level = i915_ttm_cache_level(i915, dst_mem, ttm); + if (!ttm || !ttm_tt_is_populated(ttm)) { if (bo->type == ttm_bo_type_kernel) return -EINVAL; - if (bo->ttm && - !(bo->ttm->page_flags & TTM_PAGE_FLAG_ZERO_ALLOC)) + if (ttm && !(ttm->page_flags & TTM_PAGE_FLAG_ZERO_ALLOC)) return 0; intel_engine_pm_get(i915->gt.migrate.context->engine); ret = intel_context_migrate_clear(i915->gt.migrate.context, NULL, - dst_st->sgl, I915_CACHE_NONE, - dst_mem->mem_type >= I915_PL_LMEM0, + dst_st->sgl, dst_level, + gpu_binds_iomem(dst_mem), 0, &rq); if (!ret && rq) { @@ -392,15 +448,16 @@ static int i915_ttm_accel_move(struct ttm_buffer_object *bo, } intel_engine_pm_put(i915->gt.migrate.context->engine); } else { - src_st = src_man->use_tt ? i915_ttm_tt_get_st(bo->ttm) : - obj->ttm.cached_io_st; + src_st = src_man->use_tt ? i915_ttm_tt_get_st(ttm) : + obj->ttm.cached_io_st; + src_level = i915_ttm_cache_level(i915, bo->resource, ttm); intel_engine_pm_get(i915->gt.migrate.context->engine); ret = intel_context_migrate_copy(i915->gt.migrate.context, - NULL, src_st->sgl, I915_CACHE_NONE, - bo->resource->mem_type >= I915_PL_LMEM0, - dst_st->sgl, I915_CACHE_NONE, - dst_mem->mem_type >= I915_PL_LMEM0, + NULL, src_st->sgl, src_level, + gpu_binds_iomem(bo->resource), + dst_st->sgl, dst_level, + gpu_binds_iomem(dst_mem), &rq); if (!ret && rq) { i915_request_wait(rq, 0, MAX_SCHEDULE_TIMEOUT); @@ -420,8 +477,6 @@ static int i915_ttm_move(struct ttm_buffer_object *bo, bool evict, struct drm_i915_gem_object *obj = i915_ttm_to_gem(bo); struct ttm_resource_manager *dst_man = ttm_manager_type(bo->bdev, dst_mem->mem_type); - struct ttm_resource_manager *src_man = - ttm_manager_type(bo->bdev, bo->resource->mem_type); struct intel_memory_region *dst_reg, *src_reg; union { struct ttm_kmap_iter_tt tt; @@ -465,12 +520,12 @@ static int i915_ttm_move(struct ttm_buffer_object *bo, bool evict, ret = i915_ttm_accel_move(bo, dst_mem, dst_st); if (ret) { /* If we start mapping GGTT, we can no longer use man::use_tt here. */ - dst_iter = dst_man->use_tt ? + dst_iter = !cpu_maps_iomem(dst_mem) ? ttm_kmap_iter_tt_init(&_dst_iter.tt, bo->ttm) : ttm_kmap_iter_iomap_init(&_dst_iter.io, &dst_reg->iomap, dst_st, dst_reg->region.start); - src_iter = src_man->use_tt ? + src_iter = !cpu_maps_iomem(bo->resource) ? ttm_kmap_iter_tt_init(&_src_iter.tt, bo->ttm) : ttm_kmap_iter_iomap_init(&_src_iter.io, &src_reg->iomap, obj->ttm.cached_io_st, @@ -478,21 +533,24 @@ static int i915_ttm_move(struct ttm_buffer_object *bo, bool evict, ttm_move_memcpy(bo, dst_mem->num_pages, dst_iter, src_iter); } + /* Below dst_mem becomes bo->resource. */ ttm_bo_move_sync_cleanup(bo, dst_mem); + i915_ttm_adjust_domains_after_move(obj); i915_ttm_free_cached_io_st(obj); - if (!dst_man->use_tt) { + if (gpu_binds_iomem(dst_mem) || cpu_maps_iomem(dst_mem)) { obj->ttm.cached_io_st = dst_st; obj->ttm.get_io_page.sg_pos = dst_st->sgl; obj->ttm.get_io_page.sg_idx = 0; } + i915_ttm_adjust_gem_after_move(obj); return 0; } static int i915_ttm_io_mem_reserve(struct ttm_device *bdev, struct ttm_resource *mem) { - if (mem->mem_type < I915_PL_LMEM0) + if (!cpu_maps_iomem(mem)) return 0; mem->bus.caching = ttm_write_combined; @@ -590,6 +648,16 @@ static int i915_ttm_get_pages(struct drm_i915_gem_object *obj) return i915_ttm_err_to_gem(ret); } + i915_ttm_adjust_lru(obj); + if (bo->ttm && !ttm_tt_is_populated(bo->ttm)) { + ret = ttm_tt_populate(bo->bdev, bo->ttm, &ctx); + if (ret) + return ret; + + i915_ttm_adjust_domains_after_move(obj); + i915_ttm_adjust_gem_after_move(obj); + } + /* Object either has a page vector or is an iomem object */ st = bo->ttm ? i915_ttm_tt_get_st(bo->ttm) : obj->ttm.cached_io_st; if (IS_ERR(st)) @@ -597,8 +665,6 @@ static int i915_ttm_get_pages(struct drm_i915_gem_object *obj) __i915_gem_object_set_pages(obj, st, i915_sg_dma_sizes(st->sgl)); - i915_ttm_adjust_lru(obj); - return ret; } @@ -768,6 +834,10 @@ int __i915_gem_ttm_object_init(struct intel_memory_region *mem, { static struct lock_class_key lock_class; struct drm_i915_private *i915 = mem->i915; + struct ttm_operation_ctx ctx = { + .interruptible = true, + .no_wait_gpu = false, + }; enum ttm_bo_type bo_type; int ret; @@ -775,14 +845,13 @@ int __i915_gem_ttm_object_init(struct intel_memory_region *mem, i915_gem_object_init(obj, &i915_gem_ttm_obj_ops, &lock_class, flags); i915_gem_object_init_memory_region(obj, mem); i915_gem_object_make_unshrinkable(obj); - obj->read_domains = I915_GEM_DOMAIN_WC | I915_GEM_DOMAIN_GTT; - obj->mem_flags |= I915_BO_FLAG_IOMEM; - i915_gem_object_set_cache_coherency(obj, I915_CACHE_NONE); 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; + obj->base.vma_node.driver_private = i915_gem_to_ttm(obj); + /* * If this function fails, it will call the destructor, but * our caller still owns the object. So no freeing in the @@ -790,14 +859,16 @@ int __i915_gem_ttm_object_init(struct intel_memory_region *mem, * Similarly, in delayed_destroy, we can't call ttm_bo_put() * until successful initialization. */ - obj->base.vma_node.driver_private = i915_gem_to_ttm(obj); - ret = ttm_bo_init(&i915->bdev, i915_gem_to_ttm(obj), size, - bo_type, &i915_sys_placement, - mem->min_page_size >> PAGE_SHIFT, - true, NULL, NULL, i915_ttm_bo_destroy); - if (!ret) - obj->ttm.created = true; - - /* i915 wants -ENXIO when out of memory region space. */ - return i915_ttm_err_to_gem(ret); + ret = ttm_bo_init_reserved(&i915->bdev, i915_gem_to_ttm(obj), size, + bo_type, &i915_sys_placement, 1, + &ctx, NULL, NULL, i915_ttm_bo_destroy); + if (ret) + return i915_ttm_err_to_gem(ret); + + obj->ttm.created = true; + i915_ttm_adjust_domains_after_move(obj); + i915_ttm_adjust_gem_after_move(obj); + i915_gem_object_unlock(obj); + + return 0; } -- 2.31.1