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 D06C1C43460 for ; Tue, 18 May 2021 08:28:00 +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 9F75E610E9 for ; Tue, 18 May 2021 08:28:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9F75E610E9 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 AF1226EAC0; Tue, 18 May 2021 08:27:59 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73A176EAC5; Tue, 18 May 2021 08:27:56 +0000 (UTC) IronPort-SDR: I1oUp/56I+5J4Mr86zpxlMS0ymH7eM2yvpLDL1eAMXg3Hk16Go60Es8uU3C3EKCW0+XtDDjpRN tMxtYQdJFbHg== X-IronPort-AV: E=McAfee;i="6200,9189,9987"; a="180937237" X-IronPort-AV: E=Sophos;i="5.82,309,1613462400"; d="scan'208";a="180937237" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2021 01:27:55 -0700 IronPort-SDR: UcPDWOXfytZxEyzlJRo0S/g6v/5T0fDkBNQFMs0agfoBH6pkVbxHC39Y9yzVS5bi/KazgObcUg xzEcOqGFs8iw== X-IronPort-AV: E=Sophos;i="5.82,309,1613462400"; d="scan'208";a="611892370" Received: from cmutgix-mobl.gar.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.195]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2021 01:27:42 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Tue, 18 May 2021 10:26:55 +0200 Message-Id: <20210518082701.997251-10-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210518082701.997251-1-thomas.hellstrom@linux.intel.com> References: <20210518082701.997251-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 09/15] drm/ttm, drm/amdgpu: Allow the driver some control over swapping 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?= , =?UTF-8?q?Christian=20K=C3=B6nig?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" V2UgYXJlIGNhbGxpbmcgdGhlIGV2aWN0aW9uX3ZhbHVhYmxlIGRyaXZlciBjYWxsYmFjayBhdCBl dmljdGlvbiB0aW1lIHRvCmRldGVybWluZSB3aGV0aGVyIHdlIGFjdHVhbGx5IGNhbiBldmljdCBh IGJ1ZmZlciBvYmplY3QuClRoZSB1cGNvbWluZyBpOTE1IFRUTSBiYWNrZW5kIG5lZWRzIHRoZSBz YW1lIGZ1bmN0aW9uYWxpdHkgZm9yIHN3YXBvdXQsCmFuZCB0aGF0IG1pZ2h0IGFjdHVhbGx5IGJl IGJlbmVmaWNpYWwgdG8gb3RoZXIgZHJpdmVycyBhcyB3ZWxsLgoKQWRkIGFuIGV2aWN0aW9uX3Zh bHVhYmxlIGNhbGwgYWxzbyBpbiB0aGUgc3dhcG91dCBwYXRoLiBUcnkgdG8ga2VlcCB0aGUKY3Vy cmVudCBiZWhhdmlvdXIgZm9yIGFsbCBkcml2ZXJzIGJ5IHJldHVybmluZyB0cnVlIGlmIHRoZSBi dWZmZXIgb2JqZWN0CmlzIGFscmVhZHkgaW4gdGhlIFRUTV9QTF9TWVNURU0gcGxhY2VtZW50LiBX ZSBjaGFuZ2UgYmVoYXZpb3VyIGZvciB0aGUKY2FzZSB3aGVyZSBhIGJ1ZmZlciBvYmplY3QgaXMg aW4gYSBUVCBiYWNrZWQgcGxhY2VtZW50IHdoZW4gc3dhcHBlZCBvdXQsCmluIHdoaWNoIGNhc2Ug dGhlIGRyaXZlcnMgbm9ybWFsIGV2aWN0aW9uX3ZhbHVhYmxlIHBhdGggaXMgcnVuLgoKRmluYWxs eSBleHBvcnQgdHRtX3R0X3VucG9wdWxhdGUoKSBhbmQgZG9uJ3Qgc3dhcCBvdXQgYm9zCnRoYXQg YXJlIG5vdCBwb3B1bGF0ZWQuIFRoaXMgYWxsb3dzIGEgZHJpdmVyIHRvIHB1cmdlIGEgYm8gYXQK c3dhcG91dCB0aW1lIGlmIGl0cyBjb250ZW50IGlzIG5vIGxvbmdlciB2YWx1YWJsZSByYXRoZXIg dGhhbiB0bwpoYXZlIFRUTSBzd2FwIHRoZSBjb250ZW50cyBvdXQuCgpDYzogQ2hyaXN0aWFuIEvD tm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVs bHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jIHwgIDQgKysrCiBkcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV9iby5jICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKystLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5jICAgICAgICAgICAgfCAgNCArKysKIDMgZmlsZXMg Y2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCmluZGV4IDhjN2VjMDllYjFhNC4uZDVhOWQ3YTg4MzE1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCkBAIC0xMzk5LDYgKzEz OTksMTAgQEAgc3RhdGljIGJvb2wgYW1kZ3B1X3R0bV9ib19ldmljdGlvbl92YWx1YWJsZShzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCXN0cnVjdCBkbWFfZmVuY2UgKmY7CiAJaW50IGk7 CiAKKwkvKiBTd2Fwb3V0PyAqLworCWlmIChiby0+bWVtLm1lbV90eXBlID09IFRUTV9QTF9TWVNU RU0pCisJCXJldHVybiB0cnVlOworCiAJaWYgKGJvLT50eXBlID09IHR0bV9ib190eXBlX2tlcm5l bCAmJgogCSAgICAhYW1kZ3B1X3ZtX2V2aWN0YWJsZSh0dG1fdG9fYW1kZ3B1X2JvKGJvKSkpCiAJ CXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCmluZGV4IDQ0NzljNTVhYWExZC4uNmEzZjMx MTJmNjJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKQEAgLTUzMSw2ICs1MzEsMTAgQEAgc3RhdGljIGlu dCB0dG1fYm9fZXZpY3Qoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIGJvb2wgdHRtX2Jv X2V2aWN0aW9uX3ZhbHVhYmxlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiAJCQkgICAg ICBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSkKIHsKKwlkbWFfcmVzdl9hc3NlcnRfaGVs ZChiby0+YmFzZS5yZXN2KTsKKwlpZiAoYm8tPm1lbS5tZW1fdHlwZSA9PSBUVE1fUExfU1lTVEVN KQorCQlyZXR1cm4gdHJ1ZTsKKwogCS8qIERvbid0IGV2aWN0IHRoaXMgQk8gaWYgaXQncyBvdXRz aWRlIG9mIHRoZQogCSAqIHJlcXVlc3RlZCBwbGFjZW1lbnQgcmFuZ2UKIAkgKi8KQEAgLTU1Myw3 ICs1NTcsOSBAQCBFWFBPUlRfU1lNQk9MKHR0bV9ib19ldmljdGlvbl92YWx1YWJsZSk7CiAgKiBi LiBPdGhlcndpc2UsIHRyeWxvY2sgaXQuCiAgKi8KIHN0YXRpYyBib29sIHR0bV9ib19ldmljdF9z d2Fwb3V0X2FsbG93YWJsZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAotCQkJc3RydWN0 IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsIGJvb2wgKmxvY2tlZCwgYm9vbCAqYnVzeSkKKwkJCQkJ ICAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsCisJCQkJCSAgIGNvbnN0IHN0cnVjdCB0 dG1fcGxhY2UgKnBsYWNlLAorCQkJCQkgICBib29sICpsb2NrZWQsIGJvb2wgKmJ1c3kpCiB7CiAJ Ym9vbCByZXQgPSBmYWxzZTsKIApAQCAtNTcxLDYgKzU3NywxMiBAQCBzdGF0aWMgYm9vbCB0dG1f Ym9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywK IAkJCSpidXN5ID0gIXJldDsKIAl9CiAKKwlpZiAocmV0ICYmIHBsYWNlICYmICFiby0+YmRldi0+ ZnVuY3MtPmV2aWN0aW9uX3ZhbHVhYmxlKGJvLCBwbGFjZSkpIHsKKwkJcmV0ID0gZmFsc2U7CisJ CWlmIChsb2NrZWQpCisJCQlkbWFfcmVzdl91bmxvY2soYm8tPmJhc2UucmVzdik7CisJfQorCiAJ cmV0dXJuIHJldDsKIH0KIApAQCAtNjI1LDIwICs2MzcsMTQgQEAgaW50IHR0bV9tZW1fZXZpY3Rf Zmlyc3Qoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoYm8s ICZtYW4tPmxydVtpXSwgbHJ1KSB7CiAJCQlib29sIGJ1c3k7CiAKLQkJCWlmICghdHRtX2JvX2V2 aWN0X3N3YXBvdXRfYWxsb3dhYmxlKGJvLCBjdHgsICZsb2NrZWQsCi0JCQkJCQkJICAgICZidXN5 KSkgeworCQkJaWYgKCF0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sIGN0eCwgcGxh Y2UsCisJCQkJCQkJICAgICZsb2NrZWQsICZidXN5KSkgewogCQkJCWlmIChidXN5ICYmICFidXN5 X2JvICYmIHRpY2tldCAhPQogCQkJCSAgICBkbWFfcmVzdl9sb2NraW5nX2N0eChiby0+YmFzZS5y ZXN2KSkKIAkJCQkJYnVzeV9ibyA9IGJvOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQlpZiAo cGxhY2UgJiYgIWJkZXYtPmZ1bmNzLT5ldmljdGlvbl92YWx1YWJsZShibywKLQkJCQkJCQkJICAg ICAgcGxhY2UpKSB7Ci0JCQkJaWYgKGxvY2tlZCkKLQkJCQkJZG1hX3Jlc3ZfdW5sb2NrKGJvLT5i YXNlLnJlc3YpOwotCQkJCWNvbnRpbnVlOwotCQkJfQogCQkJaWYgKCF0dG1fYm9fZ2V0X3VubGVz c196ZXJvKGJvKSkgewogCQkJCWlmIChsb2NrZWQpCiAJCQkJCWRtYV9yZXN2X3VubG9jayhiby0+ YmFzZS5yZXN2KTsKQEAgLTExMzgsMTAgKzExNDQsMTggQEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9f d2FpdCk7CiBpbnQgdHRtX2JvX3N3YXBvdXQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywg c3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsCiAJCSAgIGdmcF90IGdmcF9mbGFncykKIHsK KwlzdHJ1Y3QgdHRtX3BsYWNlIHBsYWNlID0ge307CiAJYm9vbCBsb2NrZWQ7CiAJaW50IHJldDsK IAotCWlmICghdHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxlKGJvLCBjdHgsICZsb2NrZWQs IE5VTEwpKQorCS8qCisJICogV2hpbGUgdGhlIGJvIG1heSBhbHJlYWR5IHJlc2lkZSBpbiBTWVNU RU0gcGxhY2VtZW50LCBzZXQKKwkgKiBTWVNURU0gYXMgbmV3IHBsYWNlbWVudCB0byBjb3ZlciBh bHNvIHRoZSBtb3ZlIGZ1cnRoZXIgYmVsb3cuCisJICogVGhlIGRyaXZlciBtYXkgdXNlIHRoZSBm YWN0IHRoYXQgd2UncmUgbW92aW5nIGZyb20gU1lTVEVNCisJICogYXMgYW4gaW5kaWNhdGlvbiB0 aGF0IHdlJ3JlIGFib3V0IHRvIHN3YXAgb3V0LgorCSAqLworCXBsYWNlLm1lbV90eXBlID0gVFRN X1BMX1NZU1RFTTsKKwlpZiAoIXR0bV9ib19ldmljdF9zd2Fwb3V0X2FsbG93YWJsZShibywgY3R4 LCAmcGxhY2UsICZsb2NrZWQsIE5VTEwpKQogCQlyZXR1cm4gLUVCVVNZOwogCiAJaWYgKCF0dG1f Ym9fZ2V0X3VubGVzc196ZXJvKGJvKSkgewpAQCAtMTE2NiwxMiArMTE4MCw3IEBAIGludCB0dG1f Ym9fc3dhcG91dChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgdHRtX29wZXJh dGlvbl9jdHggKmN0eCwKIAlpZiAoYm8tPm1lbS5tZW1fdHlwZSAhPSBUVE1fUExfU1lTVEVNKSB7 CiAJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBmYWxzZSB9OwogCQlz dHJ1Y3QgdHRtX3Jlc291cmNlIGV2aWN0X21lbTsKLQkJc3RydWN0IHR0bV9wbGFjZSBwbGFjZSwg aG9wOwotCi0JCW1lbXNldCgmcGxhY2UsIDAsIHNpemVvZihwbGFjZSkpOwotCQltZW1zZXQoJmhv cCwgMCwgc2l6ZW9mKGhvcCkpOwotCi0JCXBsYWNlLm1lbV90eXBlID0gVFRNX1BMX1NZU1RFTTsK KwkJc3RydWN0IHR0bV9wbGFjZSBob3AgPSB7fTsKIAogCQlyZXQgPSB0dG1fcmVzb3VyY2VfYWxs b2MoYm8sICZwbGFjZSwgJmV2aWN0X21lbSk7CiAJCWlmICh1bmxpa2VseShyZXQpKQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fdHQuYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0v dHRtX3R0LmMKaW5kZXggNTM5ZTAyMzJjYjNiLi43ODc4Y2E0ODc2YzUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1f dHQuYwpAQCAtMjU4LDYgKzI1OCw5IEBAIGludCB0dG1fdHRfc3dhcG91dChzdHJ1Y3QgdHRtX2Rl dmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtLAogCXN0cnVjdCBwYWdlICp0b19wYWdlOwog CWludCBpLCByZXQ7CiAKKwlpZiAoIXR0bV90dF9pc19wb3B1bGF0ZWQodHRtKSkKKwkJcmV0dXJu IDA7CisKIAlzd2FwX3N0b3JhZ2UgPSBzaG1lbV9maWxlX3NldHVwKCJ0dG0gc3dhcCIsIHNpemUs IDApOwogCWlmIChJU19FUlIoc3dhcF9zdG9yYWdlKSkgewogCQlwcl9lcnIoIkZhaWxlZCBhbGxv Y2F0aW5nIHN3YXAgc3RvcmFnZVxuIik7CkBAIC0zOTksNiArNDAyLDcgQEAgdm9pZCB0dG1fdHRf dW5wb3B1bGF0ZShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKQog CiAJdHRtLT5wYWdlX2ZsYWdzICY9IH5UVE1fUEFHRV9GTEFHX1BSSVZfUE9QVUxBVEVEOwogfQor RVhQT1JUX1NZTUJPTCh0dG1fdHRfdW5wb3B1bGF0ZSk7CiAKICNpZmRlZiBDT05GSUdfREVCVUdf RlMKIAotLSAKMi4zMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK 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 33E27C433ED for ; Tue, 18 May 2021 08:28:01 +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 F2456610E9 for ; Tue, 18 May 2021 08:28:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F2456610E9 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 526B96EAC5; Tue, 18 May 2021 08:27:59 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73A176EAC5; Tue, 18 May 2021 08:27:56 +0000 (UTC) IronPort-SDR: I1oUp/56I+5J4Mr86zpxlMS0ymH7eM2yvpLDL1eAMXg3Hk16Go60Es8uU3C3EKCW0+XtDDjpRN tMxtYQdJFbHg== X-IronPort-AV: E=McAfee;i="6200,9189,9987"; a="180937237" X-IronPort-AV: E=Sophos;i="5.82,309,1613462400"; d="scan'208";a="180937237" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2021 01:27:55 -0700 IronPort-SDR: UcPDWOXfytZxEyzlJRo0S/g6v/5T0fDkBNQFMs0agfoBH6pkVbxHC39Y9yzVS5bi/KazgObcUg xzEcOqGFs8iw== X-IronPort-AV: E=Sophos;i="5.82,309,1613462400"; d="scan'208";a="611892370" Received: from cmutgix-mobl.gar.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.195]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2021 01:27:42 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH v2 09/15] drm/ttm, drm/amdgpu: Allow the driver some control over swapping Date: Tue, 18 May 2021 10:26:55 +0200 Message-Id: <20210518082701.997251-10-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210518082701.997251-1-thomas.hellstrom@linux.intel.com> References: <20210518082701.997251-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?= , =?UTF-8?q?Christian=20K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" We are calling the eviction_valuable driver callback at eviction time to determine whether we actually can evict a buffer object. The upcoming i915 TTM backend needs the same functionality for swapout, and that might actually be beneficial to other drivers as well. Add an eviction_valuable call also in the swapout path. Try to keep the current behaviour for all drivers by returning true if the buffer object is already in the TTM_PL_SYSTEM placement. We change behaviour for the case where a buffer object is in a TT backed placement when swapped out, in which case the drivers normal eviction_valuable path is run. Finally export ttm_tt_unpopulate() and don't swap out bos that are not populated. This allows a driver to purge a bo at swapout time if its content is no longer valuable rather than to have TTM swap the contents out. Cc: Christian König Signed-off-by: Thomas Hellström --- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 +++ drivers/gpu/drm/ttm/ttm_bo.c | 41 +++++++++++++++---------- drivers/gpu/drm/ttm/ttm_tt.c | 4 +++ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 8c7ec09eb1a4..d5a9d7a88315 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -1399,6 +1399,10 @@ static bool amdgpu_ttm_bo_eviction_valuable(struct ttm_buffer_object *bo, struct dma_fence *f; int i; + /* Swapout? */ + if (bo->mem.mem_type == TTM_PL_SYSTEM) + return true; + if (bo->type == ttm_bo_type_kernel && !amdgpu_vm_evictable(ttm_to_amdgpu_bo(bo))) return false; diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 4479c55aaa1d..6a3f3112f62a 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -531,6 +531,10 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, bool ttm_bo_eviction_valuable(struct ttm_buffer_object *bo, const struct ttm_place *place) { + dma_resv_assert_held(bo->base.resv); + if (bo->mem.mem_type == TTM_PL_SYSTEM) + return true; + /* Don't evict this BO if it's outside of the * requested placement range */ @@ -553,7 +557,9 @@ EXPORT_SYMBOL(ttm_bo_eviction_valuable); * b. Otherwise, trylock it. */ static bool ttm_bo_evict_swapout_allowable(struct ttm_buffer_object *bo, - struct ttm_operation_ctx *ctx, bool *locked, bool *busy) + struct ttm_operation_ctx *ctx, + const struct ttm_place *place, + bool *locked, bool *busy) { bool ret = false; @@ -571,6 +577,12 @@ static bool ttm_bo_evict_swapout_allowable(struct ttm_buffer_object *bo, *busy = !ret; } + if (ret && place && !bo->bdev->funcs->eviction_valuable(bo, place)) { + ret = false; + if (locked) + dma_resv_unlock(bo->base.resv); + } + return ret; } @@ -625,20 +637,14 @@ int ttm_mem_evict_first(struct ttm_device *bdev, list_for_each_entry(bo, &man->lru[i], lru) { bool busy; - if (!ttm_bo_evict_swapout_allowable(bo, ctx, &locked, - &busy)) { + if (!ttm_bo_evict_swapout_allowable(bo, ctx, place, + &locked, &busy)) { if (busy && !busy_bo && ticket != dma_resv_locking_ctx(bo->base.resv)) busy_bo = bo; continue; } - if (place && !bdev->funcs->eviction_valuable(bo, - place)) { - if (locked) - dma_resv_unlock(bo->base.resv); - continue; - } if (!ttm_bo_get_unless_zero(bo)) { if (locked) dma_resv_unlock(bo->base.resv); @@ -1138,10 +1144,18 @@ EXPORT_SYMBOL(ttm_bo_wait); int ttm_bo_swapout(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx, gfp_t gfp_flags) { + struct ttm_place place = {}; bool locked; int ret; - if (!ttm_bo_evict_swapout_allowable(bo, ctx, &locked, NULL)) + /* + * While the bo may already reside in SYSTEM placement, set + * SYSTEM as new placement to cover also the move further below. + * The driver may use the fact that we're moving from SYSTEM + * as an indication that we're about to swap out. + */ + place.mem_type = TTM_PL_SYSTEM; + if (!ttm_bo_evict_swapout_allowable(bo, ctx, &place, &locked, NULL)) return -EBUSY; if (!ttm_bo_get_unless_zero(bo)) { @@ -1166,12 +1180,7 @@ int ttm_bo_swapout(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx, if (bo->mem.mem_type != TTM_PL_SYSTEM) { struct ttm_operation_ctx ctx = { false, false }; struct ttm_resource evict_mem; - struct ttm_place place, hop; - - memset(&place, 0, sizeof(place)); - memset(&hop, 0, sizeof(hop)); - - place.mem_type = TTM_PL_SYSTEM; + struct ttm_place hop = {}; ret = ttm_resource_alloc(bo, &place, &evict_mem); if (unlikely(ret)) diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index 539e0232cb3b..7878ca4876c5 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c @@ -258,6 +258,9 @@ int ttm_tt_swapout(struct ttm_device *bdev, struct ttm_tt *ttm, struct page *to_page; int i, ret; + if (!ttm_tt_is_populated(ttm)) + return 0; + swap_storage = shmem_file_setup("ttm swap", size, 0); if (IS_ERR(swap_storage)) { pr_err("Failed allocating swap storage\n"); @@ -399,6 +402,7 @@ void ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm) ttm->page_flags &= ~TTM_PAGE_FLAG_PRIV_POPULATED; } +EXPORT_SYMBOL(ttm_tt_unpopulate); #ifdef CONFIG_DEBUG_FS -- 2.31.1