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=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 9CCA6C47089 for ; Thu, 27 May 2021 11:11:56 +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 4AE26601FA for ; Thu, 27 May 2021 11:11:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4AE26601FA 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 D4AFB6EE79; Thu, 27 May 2021 11:11:51 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCCEF6E067; Thu, 27 May 2021 11:11:49 +0000 (UTC) IronPort-SDR: kRpaS6XGw6eSr6sbHOvpq1xKoUNQQL58Z3CYu8e7cz8xq/HAOritiCqEZOx+SXcFe1bFfmOYaa S/S5dbapoeqA== X-IronPort-AV: E=McAfee;i="6200,9189,9996"; a="183043324" X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="183043324" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 04:11:49 -0700 IronPort-SDR: 0tuc535lpn4iDHHJvCyoSQkWL8S/hAAtPFBURXVeVYEKdpXvMb0nL3Nu/qUJGnfQZAw1BwtDW4 AaVbFzoVHSFg== X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="443517424" Received: from vsorokin-mobl.ccr.corp.intel.com (HELO [10.249.39.216]) ([10.249.39.216]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 04:11:47 -0700 To: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210526113259.1661914-1-thomas.hellstrom@linux.intel.com> <20210526113259.1661914-16-thomas.hellstrom@linux.intel.com> <75e1d09a-95f6-6de0-7fee-4a11cf383ce5@linux.intel.com> From: Maarten Lankhorst Message-ID: <494db352-0faa-bcdb-eff1-b714f63b664d@linux.intel.com> Date: Thu, 27 May 2021 13:11:45 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <75e1d09a-95f6-6de0-7fee-4a11cf383ce5@linux.intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v4 15/15] drm/i915: Use ttm mmap handling for ttm bo's. 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T3AgMjAyMS0wNS0yNiBvbSAxOTo0MCBzY2hyZWVmIFRob21hcyBIZWxsc3Ryw7ZtOgo+Cj4gT24g NS8yNi8yMSAxOjMyIFBNLCBUaG9tYXMgSGVsbHN0csO2bSB3cm90ZToKPj4gRnJvbTogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4KPj4gVXNl IHRoZSB0dG0gaGFuZGxlcnMgZm9yIHNlcnZpY2luZyBwYWdlIGZhdWx0cywgYW5kIHZtX2FjY2Vz cy4KPj4KPj4gV2UgZG8gb3VyIG93biB2YWxpZGF0aW9uIG9mIHJlYWQtb25seSBhY2Nlc3MsIG90 aGVyd2lzZSB1c2UgdGhlCj4+IHR0bSBoYW5kbGVycyBhcyBtdWNoIGFzIHBvc3NpYmxlLgo+Pgo+ PiBCZWNhdXNlIHRoZSB0dG0gaGFuZGxlcnMgZXhwZWN0IHRoZSB2bWFfbm9kZSBhdCB2bWEtPmJh c2UsIHdlIHNsaWdodGx5Cj4+IG5lZWQgdG8gbWFzc2FnZSB0aGUgbW1hcCBoYW5kbGVycyB0byBs b29rIGF0IHZtYV9ub2RlLT5kcml2ZXJfcHJpdmF0ZQo+PiB0byBmZXRjaCB0aGUgYm8sIGlmIGl0 J3MgTlVMTCwgd2UgYXNzdW1lIGk5MTUncyBub3JtYWwgbW1hcF9vZmZzZXQgdWFwaQo+PiBpcyB1 c2VkLgo+Pgo+PiBUaGlzIGlzIHRoZSBlYXNpZXN0IHdheSB0byBhY2hpZXZlIGNvbXBhdGliaWxp dHkgd2l0aG91dCBjaGFuZ2luZyB0dG0ncwo+PiBzZW1hbnRpY3MuCj4+Cj4+IFNpZ25lZC1vZmYt Ynk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jwqDC oMKgwqDCoCB8wqAgNzggKysrKysrKy0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5owqDCoMKgIHzCoMKgIDYgKy0KPj4gwqAgLi4uL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmjCoCB8wqDCoCAzICsKPj4gwqAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BhZ2VzLmPCoMKgwqDCoCB8wqDCoCAzICstCj4+IMKg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uY8KgwqDCoMKgwqDCoCB8IDEy MiArKysrKysrKysrKysrKysrKy0KPj4gwqAgLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkx NV9nZW1fbW1hbi5jwqDCoMKgIHzCoCA5MCArKysrKysrLS0tLS0tCj4+IMKgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbW1hcC5jwqDCoMKgwqAgfMKgIDI1ICsrKy0KPj4gwqAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9tbWFwLmjCoMKgwqDCoCB8wqAgMTIg Ky0KPj4gwqAgOCBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5zZXJ0aW9ucygrKSwgOTIgZGVsZXRpb25z KC0pCj4KPiBUaGVyZSBhcmUgYSBjb3VwbGUgb2YgY2hlY2twYXRjaC5wbCAtLXN0cmljdCB3YXJu aW5ncy9jaGVja3Mgd2l0aCB0aGlzIHBhdGNoLgo+Cj4KPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fbW1hbi5jCj4+IGluZGV4IGZkMWM5NzE0ZjhkOC4uYWYwNGVhNTkzMDkx IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKPj4gQEAg LTE5LDYgKzE5LDcgQEAKPj4gwqAgI2luY2x1ZGUgImk5MTVfZ2VtX21tYW4uaCIKPj4gwqAgI2lu Y2x1ZGUgImk5MTVfdHJhY2UuaCIKPj4gwqAgI2luY2x1ZGUgImk5MTVfdXNlcl9leHRlbnNpb25z LmgiCj4+ICsjaW5jbHVkZSAiaTkxNV9nZW1fdHRtLmgiCj4+IMKgICNpbmNsdWRlICJpOTE1X3Zt YS5oIgo+PiDCoCDCoCBzdGF0aWMgaW5saW5lIGJvb2wKPj4gQEAgLTYyMiw2ICs2MjMsOCBAQCBt bWFwX29mZnNldF9hdHRhY2goc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDC oMKgwqDCoCBzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCAqbW1vOwo+PiDCoMKgwqDCoMKgIGludCBl cnI7Cj4+IMKgICvCoMKgwqAgR0VNX0JVR19PTihvYmotPm9wcy0+bW1hcF9vZmZzZXQgfHwgb2Jq LT5vcHMtPm1tYXBfb3BzKTsKPj4gKwo+PiDCoMKgwqDCoMKgIG1tbyA9IGxvb2t1cF9tbW8ob2Jq LCBtbWFwX3R5cGUpOwo+PiDCoMKgwqDCoMKgIGlmIChtbW8pCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBnb3RvIG91dDsKPj4gQEAgLTY2NCw0MCArNjY3LDQ3IEBAIG1tYXBfb2Zmc2V0X2F0dGFjaChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyBp bnQKPj4gLV9fYXNzaWduX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaGFuZGxlLAo+PiArX19hc3NpZ25fbW1hcF9vZmZz ZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBlbnVtIGk5MTVfbW1hcF90eXBlIG1tYXBfdHlwZSwKPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1NjQgKm9mZnNldCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 NjQgKm9mZnNldCwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgaTkxNV9t bWFwX29mZnNldCAqbW1vOwo+PiAtwqDCoMKgIGludCBlcnI7Cj4+IMKgIC3CoMKgwqAgb2JqID0g aTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBoYW5kbGUpOwo+PiAtwqDCoMKgIGlmICghb2Jq KQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9FTlQ7Cj4+ICvCoMKgwqAgaWYgKGk5MTVf Z2VtX29iamVjdF9uZXZlcl9tbWFwKG9iaikpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVO T0RFVjsKPj4gwqAgLcKgwqDCoCBpZiAoaTkxNV9nZW1fb2JqZWN0X25ldmVyX21tYXAob2JqKSkg ewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyID0gLUVOT0RFVjsKPj4gLcKgwqDCoMKgwqDCoMKgIGdv dG8gb3V0Owo+PiArwqDCoMKgIGlmIChvYmotPm9wcy0+bW1hcF9vZmZzZXQpwqAgewo+PiArwqDC oMKgwqDCoMKgwqAgKm9mZnNldCA9IG9iai0+b3BzLT5tbWFwX29mZnNldChvYmopOwo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIGlm IChtbWFwX3R5cGUgIT0gSTkxNV9NTUFQX1RZUEVfR1RUICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAhaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopICYmCj4+IC3CoMKgwqDCoMKg wqDCoCAhaTkxNV9nZW1fb2JqZWN0X3R5cGVfaGFzKG9iaiwgSTkxNV9HRU1fT0JKRUNUX0hBU19J T01FTSkpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGVyciA9IC1FTk9ERVY7Cj4+IC3CoMKgwqDCoMKg wqDCoCBnb3RvIG91dDsKPj4gLcKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCAhaTkxNV9nZW1f b2JqZWN0X3R5cGVfaGFzKG9iaiwgSTkxNV9HRU1fT0JKRUNUX0hBU19JT01FTSkpCj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsKPj4gwqAgwqDCoMKgwqDCoCBtbW8gPSBtbWFwX29m ZnNldF9hdHRhY2gob2JqLCBtbWFwX3R5cGUsIGZpbGUpOwo+PiAtwqDCoMKgIGlmIChJU19FUlIo bW1vKSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgZXJyID0gUFRSX0VSUihtbW8pOwo+PiAtwqDCoMKg wqDCoMKgwqAgZ290byBvdXQ7Cj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmIChJU19FUlIobW1v KSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKG1tbyk7Cj4+IMKgIMKgwqDCoMKg wqAgKm9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmbW1vLT52bWFfbm9kZSk7Cj4+ IC3CoMKgwqAgZXJyID0gMDsKPj4gLW91dDoKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGludAo+PiArX19hc3NpZ25fbW1hcF9vZmZzZXRfaGFuZGxlKHN0cnVjdCBk cm1fZmlsZSAqZmlsZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgaGFu ZGxlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gaTkxNV9tbWFwX3R5 cGUgbW1hcF90eXBlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU2NCAqb2Zm c2V0KQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+ ICvCoMKgwqAgaW50IGVycjsKPj4gKwo+PiArwqDCoMKgIG9iaiA9IGk5MTVfZ2VtX29iamVjdF9s b29rdXAoZmlsZSwgaGFuZGxlKTsKPj4gK8KgwqDCoCBpZiAoIW9iaikKPj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiAtRU5PRU5UOwo+PiArCj4+ICvCoMKgwqAgZXJyID0gX19hc3NpZ25fbW1hcF9v ZmZzZXQob2JqLCBtbWFwX3R5cGUsIG9mZnNldCwgZmlsZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9n ZW1fb2JqZWN0X3B1dChvYmopOwo+PiDCoMKgwqDCoMKgIHJldHVybiBlcnI7Cj4+IMKgIH0KPj4g QEAgLTcxNyw3ICs3MjcsNyBAQCBpOTE1X2dlbV9kdW1iX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSwKPj4gwqDCoMKgwqDCoCBlbHNlCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtbWFw X3R5cGUgPSBJOTE1X01NQVBfVFlQRV9HVFQ7Cj4+IMKgIC3CoMKgwqAgcmV0dXJuIF9fYXNzaWdu X21tYXBfb2Zmc2V0KGZpbGUsIGhhbmRsZSwgbW1hcF90eXBlLCBvZmZzZXQpOwo+PiArwqDCoMKg IHJldHVybiBfX2Fzc2lnbl9tbWFwX29mZnNldF9oYW5kbGUoZmlsZSwgaGFuZGxlLCBtbWFwX3R5 cGUsIG9mZnNldCk7Cj4+IMKgIH0KPj4gwqAgwqAgLyoqCj4+IEBAIC03ODUsNyArNzk1LDcgQEAg aTkxNV9nZW1fbW1hcF9vZmZzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiDCoMKgwqDCoMKg IH0KPj4gwqAgLcKgwqDCoCByZXR1cm4gX19hc3NpZ25fbW1hcF9vZmZzZXQoZmlsZSwgYXJncy0+ aGFuZGxlLCB0eXBlLCAmYXJncy0+b2Zmc2V0KTsKPj4gK8KgwqDCoCByZXR1cm4gX19hc3NpZ25f bW1hcF9vZmZzZXRfaGFuZGxlKGZpbGUsIGFyZ3MtPmhhbmRsZSwgdHlwZSwgJmFyZ3MtPm9mZnNl dCk7Cj4+IMKgIH0KPj4gwqAgwqAgc3RhdGljIHZvaWQgdm1fb3BlbihzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSkKPj4gQEAgLTg4OSw4ICs4OTksMTYgQEAgaW50IGk5MTVfZ2VtX21tYXAoc3Ry dWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIGRlc3Ryb3llZCBhbmQgd2lsbCBiZSBpbnZhbGlkIHdoZW4gdGhlIHZtYSBt YW5hZ2VyIGxvY2sKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpcyByZWxlYXNlZC4KPj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoMKgwqDCoMKgIG1tbyA9IGNvbnRhaW5lcl9v Zihub2RlLCBzdHJ1Y3QgaTkxNV9tbWFwX29mZnNldCwgdm1hX25vZGUpOwo+PiAtwqDCoMKgwqDC oMKgwqAgb2JqID0gaTkxNV9nZW1fb2JqZWN0X2dldF9yY3UobW1vLT5vYmopOwo+PiArwqDCoMKg wqDCoMKgwqAgaWYgKCFub2RlLT5kcml2ZXJfcHJpdmF0ZSkgewo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBtbW8gPSBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGk5MTVfbW1hcF9vZmZzZXQs IHZtYV9ub2RlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2dldF9yY3UobW1vLT5vYmopOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdF TV9CVUdfT04ob2JqICYmIG9iai0+b3BzLT5tbWFwX29wcyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9 IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvYmogPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3JjdShjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIGJh c2Uudm1hX25vZGUpKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09O KG9iaiAmJiAhb2JqLT5vcHMtPm1tYXBfb3BzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gwqDC oMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAgZHJtX3ZtYV9vZmZzZXRfdW5sb2NrX2xvb2t1cChkZXYt PnZtYV9vZmZzZXRfbWFuYWdlcik7Cj4+IMKgwqDCoMKgwqAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4+ IEBAIC05MTIsNyArOTMwLDYgQEAgaW50IGk5MTVfZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgwqDCoMKg wqDCoCB2bWEtPnZtX2ZsYWdzIHw9IFZNX1BGTk1BUCB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05U RFVNUDsKPj4gLcKgwqDCoCB2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IG1tbzsKPj4gwqAgwqDCoMKg wqDCoCAvKgo+PiDCoMKgwqDCoMKgwqAgKiBXZSBrZWVwIHRoZSByZWYgb24gbW1vLT5vYmosIG5v dCB2bV9maWxlLCBidXQgd2UgcmVxdWlyZQo+PiBAQCAtOTI2LDYgKzk0MywxNSBAQCBpbnQgaTkx NV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEp Cj4+IMKgwqDCoMKgwqAgLyogRHJvcCB0aGUgaW5pdGlhbCBjcmVhdGlvbiByZWZlcmVuY2UsIHRo ZSB2bWEgaXMgbm93IGhvbGRpbmcgb25lLiAqLwo+PiDCoMKgwqDCoMKgIGZwdXQoYW5vbik7Cj4+ IMKgICvCoMKgwqAgaWYgKG9iai0+b3BzLT5tbWFwX29wcykgewo+PiArwqDCoMKgwqDCoMKgwqAg dm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGVjcnlwdGVkKHZtX2dldF9wYWdlX3Byb3Qodm1h LT52bV9mbGFncykpOwo+PiArwqDCoMKgwqDCoMKgwqAgdm1hLT52bV9vcHMgPSBvYmotPm9wcy0+ bW1hcF9vcHM7Cj4+ICvCoMKgwqDCoMKgwqDCoCB2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IG5vZGUt PmRyaXZlcl9wcml2YXRlOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAg fQo+PiArCj4+ICvCoMKgwqAgdm1hLT52bV9wcml2YXRlX2RhdGEgPSBtbW87Cj4+ICsKPj4gwqDC oMKgwqDCoCBzd2l0Y2ggKG1tby0+bW1hcF90eXBlKSB7Cj4+IMKgwqDCoMKgwqAgY2FzZSBJOTE1 X01NQVBfVFlQRV9XQzoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHZtYS0+dm1fcGFnZV9wcm90ID0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAo+PiBpbmRleCBh M2FkOGNmNGVlZmQuLmZmNTllNmM2NDBlNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9vYmplY3QuaAo+PiBAQCAtMzQyLDE0ICszNDIsMTQgQEAgc3RydWN0IHNj YXR0ZXJsaXN0ICoKPj4gwqAgX19pOTE1X2dlbV9vYmplY3RfZ2V0X3NnKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgKml0ZXIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdW5zaWduZWQgaW50IG4sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5z aWduZWQgaW50ICpvZmZzZXQsIGJvb2wgYWxsb3dfYWxsb2MpOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVuc2lnbmVkIGludCAqb2Zmc2V0LCBib29sIGFsbG93X2FsbG9jLCBib29sIGRt YSk7Cj4+IMKgIMKgIHN0YXRpYyBpbmxpbmUgc3RydWN0IHNjYXR0ZXJsaXN0ICoKPj4gwqAgaTkx NV9nZW1fb2JqZWN0X2dldF9zZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbiwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50ICpvZmZzZXQsIGJvb2wgYWxs b3dfYWxsb2MpCj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4gX19pOTE1X2dlbV9vYmplY3RfZ2V0 X3NnKG9iaiwgJm9iai0+bW0uZ2V0X3BhZ2UsIG4sIG9mZnNldCwgYWxsb3dfYWxsb2MpOwo+PiAr wqDCoMKgIHJldHVybiBfX2k5MTVfZ2VtX29iamVjdF9nZXRfc2cob2JqLCAmb2JqLT5tbS5nZXRf cGFnZSwgbiwgb2Zmc2V0LCBhbGxvd19hbGxvYywgZmFsc2UpOwo+PiDCoCB9Cj4+IMKgIMKgIHN0 YXRpYyBpbmxpbmUgc3RydWN0IHNjYXR0ZXJsaXN0ICoKPj4gQEAgLTM1Nyw3ICszNTcsNyBAQCBp OTE1X2dlbV9vYmplY3RfZ2V0X3NnX2RtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbiwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50ICpvZmZzZXQsIGJv b2wgYWxsb3dfYWxsb2MpCj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4gX19pOTE1X2dlbV9vYmpl Y3RfZ2V0X3NnKG9iaiwgJm9iai0+bW0uZ2V0X2RtYV9wYWdlLCBuLCBvZmZzZXQsIGFsbG93X2Fs bG9jKTsKPj4gK8KgwqDCoCByZXR1cm4gX19pOTE1X2dlbV9vYmplY3RfZ2V0X3NnKG9iaiwgJm9i ai0+bW0uZ2V0X2RtYV9wYWdlLCBuLCBvZmZzZXQsIGFsbG93X2FsbG9jLCB0cnVlKTsKPj4gwqAg fQo+PiDCoCDCoCBzdHJ1Y3QgcGFnZSAqCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKPj4gaW5kZXggNjgzMTM0NzRlNmE2Li4yYTIzYjc3 NDI0YjMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9v YmplY3RfdHlwZXMuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0X3R5cGVzLmgKPj4gQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Rfb3BzIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3ByZWFkICphcmcpOwo+PiDCoMKgwqDCoMKgIGludCAoKnB3cml0ZSkoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlICphcmcpOwo+PiArwqDCoMKg IHU2NCAoKm1tYXBfb2Zmc2V0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPj4g wqAgwqDCoMKgwqDCoCBpbnQgKCpkbWFidWZfZXhwb3J0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKTsKPj4gwqAgQEAgLTc5LDYgKzgwLDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Rfb3BzIHsKPj4gwqDCoMKgwqDCoCB2b2lkICgqZGVsYXllZF9mcmVlKShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPj4gwqDCoMKgwqDCoCB2b2lkICgqcmVsZWFzZSkoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4+IMKgICvCoMKgwqAgY29uc3Qgc3RydWN0 IHZtX29wZXJhdGlvbnNfc3RydWN0ICptbWFwX29wczsKPj4gwqDCoMKgwqDCoCBjb25zdCBjaGFy ICpuYW1lOyAvKiBmcmllbmRseSBuYW1lIGZvciBkZWJ1ZywgZS5nLiBsb2NrZGVwIGNsYXNzZXMg Ki8KPj4gwqAgfTsKPj4gwqAgQEAgLTMyOCw2ICszMzAsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCB7Cj4+IMKgIMKgwqDCoMKgwqAgc3RydWN0IHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBzZ190YWJsZSAqY2FjaGVkX2lvX3N0Owo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgZ2V0X2lvX3BhZ2U7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBib29sIGNyZWF0ZWQ6MTsKPj4gwqDCoMKgwqDCoCB9IHR0bTsKPj4gwqAgZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BhZ2VzLmMKPj4gaW5kZXggNjQ0NGUwOTcwMTZkLi4w ODYwMDVjMWM3ZWEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9wYWdlcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9w YWdlcy5jCj4+IEBAIC00NjcsOSArNDY3LDggQEAgX19pOTE1X2dlbV9vYmplY3RfZ2V0X3NnKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgKml0ZXIsCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IG4sCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdW5zaWduZWQgaW50ICpvZmZzZXQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYm9vbCBhbGxvd19hbGxvYykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29s IGFsbG93X2FsbG9jLCBib29sIGRtYSkKPj4gwqAgewo+PiAtwqDCoMKgIGNvbnN0IGJvb2wgZG1h ID0gaXRlciA9PSAmb2JqLT5tbS5nZXRfZG1hX3BhZ2U7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IHNj YXR0ZXJsaXN0ICpzZzsKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaWR4LCBjb3VudDsKPj4g wqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYwo+PiBpbmRleCAxNzU5ODkz MGE5OWUuLmQwYmU5NTczMjZlMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX3R0bS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV90dG0uYwo+PiBAQCAtMTMsNiArMTMsNyBAQAo+PiDCoCAjaW5jbHVkZSAiZ2VtL2k5MTVf Z2VtX29iamVjdC5oIgo+PiDCoCAjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5oIgo+PiDC oCAjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3R0bS5oIgo+PiArI2luY2x1ZGUgImdlbS9pOTE1X2dl bV9tbWFuLmgiCj4+IMKgIMKgICNkZWZpbmUgSTkxNV9QTF9MTUVNMCBUVE1fUExfUFJJVgo+PiDC oCAjZGVmaW5lIEk5MTVfUExfU1lTVEVNIFRUTV9QTF9TWVNURU0KPj4gQEAgLTE1OCwxMSArMTU5 LDIwIEBAIHN0YXRpYyBpbnQgaTkxNV90dG1fbW92ZV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICpibykKPj4gwqAgwqAgc3RhdGljIHZvaWQgaTkxNV90dG1fZnJlZV9jYWNoZWRfaW9f c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gwqAgewo+PiAtwqDCoMKgIGlm IChvYmotPnR0bS5jYWNoZWRfaW9fc3QpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHNnX2ZyZWVfdGFi bGUob2JqLT50dG0uY2FjaGVkX2lvX3N0KTsKPj4gLcKgwqDCoMKgwqDCoMKgIGtmcmVlKG9iai0+ dHRtLmNhY2hlZF9pb19zdCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBvYmotPnR0bS5jYWNoZWRfaW9f c3QgPSBOVUxMOwo+PiAtwqDCoMKgIH0KPj4gK8KgwqDCoCBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVy IGl0ZXI7Cj4+ICvCoMKgwqAgdm9pZCBfX3JjdSAqKnNsb3Q7Cj4+ICsKPj4gK8KgwqDCoCBpZiAo IW9iai0+dHRtLmNhY2hlZF9pb19zdCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+ PiArwqDCoMKgIHJjdV9yZWFkX2xvY2soKTsKPj4gK8KgwqDCoCByYWRpeF90cmVlX2Zvcl9lYWNo X3Nsb3Qoc2xvdCwgJm9iai0+dHRtLmdldF9pb19wYWdlLnJhZGl4LCAmaXRlciwgMCkKPj4gK8Kg wqDCoMKgwqDCoMKgIHJhZGl4X3RyZWVfZGVsZXRlKCZvYmotPnR0bS5nZXRfaW9fcGFnZS5yYWRp eCwgaXRlci5pbmRleCk7Cj4+ICvCoMKgwqAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4+ICsKPj4gK8Kg wqDCoCBzZ19mcmVlX3RhYmxlKG9iai0+dHRtLmNhY2hlZF9pb19zdCk7Cj4+ICvCoMKgwqAga2Zy ZWUob2JqLT50dG0uY2FjaGVkX2lvX3N0KTsKPj4gK8KgwqDCoCBvYmotPnR0bS5jYWNoZWRfaW9f c3QgPSBOVUxMOwo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyB2b2lkIGk5MTVfdHRtX3B1cmdlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+IEBAIC0zMzgsMTIgKzM0OCw0MiBAQCBz dGF0aWMgaW50IGk5MTVfdHRtX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgYm9v bCBldmljdCwKPj4gwqDCoMKgwqDCoCB0dG1fYm9fbW92ZV9zeW5jX2NsZWFudXAoYm8sIGRzdF9t ZW0pOwo+PiDCoMKgwqDCoMKgIGk5MTVfdHRtX2ZyZWVfY2FjaGVkX2lvX3N0KG9iaik7Cj4+IMKg IC3CoMKgwqAgaWYgKCFkc3RfbWFuLT51c2VfdHQpCj4+ICvCoMKgwqAgaWYgKCFkc3RfbWFuLT51 c2VfdHQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG9iai0+dHRtLmNhY2hlZF9pb19zdCA9IGRz dF9zdDsKPj4gK8KgwqDCoMKgwqDCoMKgIG9iai0+dHRtLmdldF9pb19wYWdlLnNnX3BvcyA9IGRz dF9zdC0+c2dsOwo+PiArwqDCoMKgwqDCoMKgwqAgb2JqLT50dG0uZ2V0X2lvX3BhZ2Uuc2dfaWR4 ID0gMDsKPj4gK8KgwqDCoCB9Cj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4g wqAgK3N0YXRpYyBpbnQgaTkxNV90dG1faW9fbWVtX3Jlc2VydmUoc3RydWN0IHR0bV9kZXZpY2Ug KmJkZXYsIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1lbSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAobWVt LT5tZW1fdHlwZSA8IEk5MTVfUExfTE1FTTApCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsK Pj4gKwo+PiArwqDCoMKgIC8qIFdlIG1heSBuZWVkIHRvIHJldmlzaXQgdGhpcyBsYXRlciwgYnV0 IHRoaXMgYWxsb3dzIGFsbCBjYWNoaW5nIHRvIGJlIHVzZWQgaW4gbW1hcCAqLwo+PiArwqDCoMKg IG1lbS0+YnVzLmNhY2hpbmcgPSB0dG1fY2FjaGVkOwo+Cj4gU2luY2Ugd2UncmUgbm93IHVzaW5n IHRoZSBUVE0gYm8gb2Zmc2V0cywgd2UgbWlnaHQgYXMgd2VsbCBqdXN0IG1ha2UgdGhpcyB0dG1f d3JpdGVfY29tYmluZWQgbm93LgoKQ29ycmVjdC4gVGhhdCB3b3VsZCBiZSB0aGUgY29ycmVjdCB2 YWx1ZS4gVFRNIHdpbGwgdXNlIHRoZSBjb3JyZWN0IGNhY2hpbmcgdGhhdCB3YXkuCgp+TWFhcnRl bgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== 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=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 C63AEC4707F for ; Thu, 27 May 2021 11:11:52 +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 6F43A601FA for ; Thu, 27 May 2021 11:11:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6F43A601FA 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 6EF1A6E067; Thu, 27 May 2021 11:11:51 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCCEF6E067; Thu, 27 May 2021 11:11:49 +0000 (UTC) IronPort-SDR: kRpaS6XGw6eSr6sbHOvpq1xKoUNQQL58Z3CYu8e7cz8xq/HAOritiCqEZOx+SXcFe1bFfmOYaa S/S5dbapoeqA== X-IronPort-AV: E=McAfee;i="6200,9189,9996"; a="183043324" X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="183043324" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 04:11:49 -0700 IronPort-SDR: 0tuc535lpn4iDHHJvCyoSQkWL8S/hAAtPFBURXVeVYEKdpXvMb0nL3Nu/qUJGnfQZAw1BwtDW4 AaVbFzoVHSFg== X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="443517424" Received: from vsorokin-mobl.ccr.corp.intel.com (HELO [10.249.39.216]) ([10.249.39.216]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 04:11:47 -0700 Subject: Re: [PATCH v4 15/15] drm/i915: Use ttm mmap handling for ttm bo's. To: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210526113259.1661914-1-thomas.hellstrom@linux.intel.com> <20210526113259.1661914-16-thomas.hellstrom@linux.intel.com> <75e1d09a-95f6-6de0-7fee-4a11cf383ce5@linux.intel.com> From: Maarten Lankhorst Message-ID: <494db352-0faa-bcdb-eff1-b714f63b664d@linux.intel.com> Date: Thu, 27 May 2021 13:11:45 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <75e1d09a-95f6-6de0-7fee-4a11cf383ce5@linux.intel.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US 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: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Op 2021-05-26 om 19:40 schreef Thomas Hellström: > > On 5/26/21 1:32 PM, Thomas Hellström wrote: >> From: Maarten Lankhorst >> >> Use the ttm handlers for servicing page faults, and vm_access. >> >> We do our own validation of read-only access, otherwise use the >> ttm handlers as much as possible. >> >> Because the ttm handlers expect the vma_node at vma->base, we slightly >> need to massage the mmap handlers to look at vma_node->driver_private >> to fetch the bo, if it's NULL, we assume i915's normal mmap_offset uapi >> is used. >> >> This is the easiest way to achieve compatibility without changing ttm's >> semantics. >> >> Signed-off-by: Maarten Lankhorst >> --- >>   drivers/gpu/drm/i915/gem/i915_gem_mman.c      |  78 +++++++---- >>   drivers/gpu/drm/i915/gem/i915_gem_object.h    |   6 +- >>   .../gpu/drm/i915/gem/i915_gem_object_types.h  |   3 + >>   drivers/gpu/drm/i915/gem/i915_gem_pages.c     |   3 +- >>   drivers/gpu/drm/i915/gem/i915_gem_ttm.c       | 122 +++++++++++++++++- >>   .../drm/i915/gem/selftests/i915_gem_mman.c    |  90 +++++++------ >>   drivers/gpu/drm/i915/selftests/igt_mmap.c     |  25 +++- >>   drivers/gpu/drm/i915/selftests/igt_mmap.h     |  12 +- >>   8 files changed, 247 insertions(+), 92 deletions(-) > > There are a couple of checkpatch.pl --strict warnings/checks with this patch. > > >> >> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c >> index fd1c9714f8d8..af04ea593091 100644 >> --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c >> +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c >> @@ -19,6 +19,7 @@ >>   #include "i915_gem_mman.h" >>   #include "i915_trace.h" >>   #include "i915_user_extensions.h" >> +#include "i915_gem_ttm.h" >>   #include "i915_vma.h" >>     static inline bool >> @@ -622,6 +623,8 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, >>       struct i915_mmap_offset *mmo; >>       int err; >>   +    GEM_BUG_ON(obj->ops->mmap_offset || obj->ops->mmap_ops); >> + >>       mmo = lookup_mmo(obj, mmap_type); >>       if (mmo) >>           goto out; >> @@ -664,40 +667,47 @@ mmap_offset_attach(struct drm_i915_gem_object *obj, >>   } >>     static int >> -__assign_mmap_offset(struct drm_file *file, >> -             u32 handle, >> +__assign_mmap_offset(struct drm_i915_gem_object *obj, >>                enum i915_mmap_type mmap_type, >> -             u64 *offset) >> +             u64 *offset, struct drm_file *file) >>   { >> -    struct drm_i915_gem_object *obj; >>       struct i915_mmap_offset *mmo; >> -    int err; >>   -    obj = i915_gem_object_lookup(file, handle); >> -    if (!obj) >> -        return -ENOENT; >> +    if (i915_gem_object_never_mmap(obj)) >> +        return -ENODEV; >>   -    if (i915_gem_object_never_mmap(obj)) { >> -        err = -ENODEV; >> -        goto out; >> +    if (obj->ops->mmap_offset)  { >> +        *offset = obj->ops->mmap_offset(obj); >> +        return 0; >>       } >>         if (mmap_type != I915_MMAP_TYPE_GTT && >>           !i915_gem_object_has_struct_page(obj) && >> -        !i915_gem_object_type_has(obj, I915_GEM_OBJECT_HAS_IOMEM)) { >> -        err = -ENODEV; >> -        goto out; >> -    } >> +        !i915_gem_object_type_has(obj, I915_GEM_OBJECT_HAS_IOMEM)) >> +        return -ENODEV; >>         mmo = mmap_offset_attach(obj, mmap_type, file); >> -    if (IS_ERR(mmo)) { >> -        err = PTR_ERR(mmo); >> -        goto out; >> -    } >> +    if (IS_ERR(mmo)) >> +        return PTR_ERR(mmo); >>         *offset = drm_vma_node_offset_addr(&mmo->vma_node); >> -    err = 0; >> -out: >> +    return 0; >> +} >> + >> +static int >> +__assign_mmap_offset_handle(struct drm_file *file, >> +                u32 handle, >> +                enum i915_mmap_type mmap_type, >> +                u64 *offset) >> +{ >> +    struct drm_i915_gem_object *obj; >> +    int err; >> + >> +    obj = i915_gem_object_lookup(file, handle); >> +    if (!obj) >> +        return -ENOENT; >> + >> +    err = __assign_mmap_offset(obj, mmap_type, offset, file); >>       i915_gem_object_put(obj); >>       return err; >>   } >> @@ -717,7 +727,7 @@ i915_gem_dumb_mmap_offset(struct drm_file *file, >>       else >>           mmap_type = I915_MMAP_TYPE_GTT; >>   -    return __assign_mmap_offset(file, handle, mmap_type, offset); >> +    return __assign_mmap_offset_handle(file, handle, mmap_type, offset); >>   } >>     /** >> @@ -785,7 +795,7 @@ i915_gem_mmap_offset_ioctl(struct drm_device *dev, void *data, >>           return -EINVAL; >>       } >>   -    return __assign_mmap_offset(file, args->handle, type, &args->offset); >> +    return __assign_mmap_offset_handle(file, args->handle, type, &args->offset); >>   } >>     static void vm_open(struct vm_area_struct *vma) >> @@ -889,8 +899,16 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma) >>            * destroyed and will be invalid when the vma manager lock >>            * is released. >>            */ >> -        mmo = container_of(node, struct i915_mmap_offset, vma_node); >> -        obj = i915_gem_object_get_rcu(mmo->obj); >> +        if (!node->driver_private) { >> +            mmo = container_of(node, struct i915_mmap_offset, vma_node); >> +            obj = i915_gem_object_get_rcu(mmo->obj); >> + >> +            GEM_BUG_ON(obj && obj->ops->mmap_ops); >> +        } else { >> +            obj = i915_gem_object_get_rcu(container_of(node, struct drm_i915_gem_object, base.vma_node)); >> + >> +            GEM_BUG_ON(obj && !obj->ops->mmap_ops); >> +        } >>       } >>       drm_vma_offset_unlock_lookup(dev->vma_offset_manager); >>       rcu_read_unlock(); >> @@ -912,7 +930,6 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma) >>       } >>         vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP; >> -    vma->vm_private_data = mmo; >>         /* >>        * We keep the ref on mmo->obj, not vm_file, but we require >> @@ -926,6 +943,15 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma) >>       /* Drop the initial creation reference, the vma is now holding one. */ >>       fput(anon); >>   +    if (obj->ops->mmap_ops) { >> +        vma->vm_page_prot = pgprot_decrypted(vm_get_page_prot(vma->vm_flags)); >> +        vma->vm_ops = obj->ops->mmap_ops; >> +        vma->vm_private_data = node->driver_private; >> +        return 0; >> +    } >> + >> +    vma->vm_private_data = mmo; >> + >>       switch (mmo->mmap_type) { >>       case I915_MMAP_TYPE_WC: >>           vma->vm_page_prot = >> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h >> index a3ad8cf4eefd..ff59e6c640e6 100644 >> --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h >> +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h >> @@ -342,14 +342,14 @@ struct scatterlist * >>   __i915_gem_object_get_sg(struct drm_i915_gem_object *obj, >>                struct i915_gem_object_page_iter *iter, >>                unsigned int n, >> -             unsigned int *offset, bool allow_alloc); >> +             unsigned int *offset, bool allow_alloc, bool dma); >>     static inline struct scatterlist * >>   i915_gem_object_get_sg(struct drm_i915_gem_object *obj, >>                  unsigned int n, >>                  unsigned int *offset, bool allow_alloc) >>   { >> -    return __i915_gem_object_get_sg(obj, &obj->mm.get_page, n, offset, allow_alloc); >> +    return __i915_gem_object_get_sg(obj, &obj->mm.get_page, n, offset, allow_alloc, false); >>   } >>     static inline struct scatterlist * >> @@ -357,7 +357,7 @@ i915_gem_object_get_sg_dma(struct drm_i915_gem_object *obj, >>                  unsigned int n, >>                  unsigned int *offset, bool allow_alloc) >>   { >> -    return __i915_gem_object_get_sg(obj, &obj->mm.get_dma_page, n, offset, allow_alloc); >> +    return __i915_gem_object_get_sg(obj, &obj->mm.get_dma_page, n, offset, allow_alloc, true); >>   } >>     struct page * >> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h >> index 68313474e6a6..2a23b77424b3 100644 >> --- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h >> +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h >> @@ -61,6 +61,7 @@ struct drm_i915_gem_object_ops { >>                const struct drm_i915_gem_pread *arg); >>       int (*pwrite)(struct drm_i915_gem_object *obj, >>                 const struct drm_i915_gem_pwrite *arg); >> +    u64 (*mmap_offset)(struct drm_i915_gem_object *obj); >>         int (*dmabuf_export)(struct drm_i915_gem_object *obj); >>   @@ -79,6 +80,7 @@ struct drm_i915_gem_object_ops { >>       void (*delayed_free)(struct drm_i915_gem_object *obj); >>       void (*release)(struct drm_i915_gem_object *obj); >>   +    const struct vm_operations_struct *mmap_ops; >>       const char *name; /* friendly name for debug, e.g. lockdep classes */ >>   }; >>   @@ -328,6 +330,7 @@ struct drm_i915_gem_object { >>         struct { >>           struct sg_table *cached_io_st; >> +        struct i915_gem_object_page_iter get_io_page; >>           bool created:1; >>       } ttm; >>   diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c b/drivers/gpu/drm/i915/gem/i915_gem_pages.c >> index 6444e097016d..086005c1c7ea 100644 >> --- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c >> +++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c >> @@ -467,9 +467,8 @@ __i915_gem_object_get_sg(struct drm_i915_gem_object *obj, >>                struct i915_gem_object_page_iter *iter, >>                unsigned int n, >>                unsigned int *offset, >> -             bool allow_alloc) >> +             bool allow_alloc, bool dma) >>   { >> -    const bool dma = iter == &obj->mm.get_dma_page; >>       struct scatterlist *sg; >>       unsigned int idx, count; >>   diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c >> index 17598930a99e..d0be957326e0 100644 >> --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c >> +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c >> @@ -13,6 +13,7 @@ >>   #include "gem/i915_gem_object.h" >>   #include "gem/i915_gem_region.h" >>   #include "gem/i915_gem_ttm.h" >> +#include "gem/i915_gem_mman.h" >>     #define I915_PL_LMEM0 TTM_PL_PRIV >>   #define I915_PL_SYSTEM TTM_PL_SYSTEM >> @@ -158,11 +159,20 @@ static int i915_ttm_move_notify(struct ttm_buffer_object *bo) >>     static void i915_ttm_free_cached_io_st(struct drm_i915_gem_object *obj) >>   { >> -    if (obj->ttm.cached_io_st) { >> -        sg_free_table(obj->ttm.cached_io_st); >> -        kfree(obj->ttm.cached_io_st); >> -        obj->ttm.cached_io_st = NULL; >> -    } >> +    struct radix_tree_iter iter; >> +    void __rcu **slot; >> + >> +    if (!obj->ttm.cached_io_st) >> +        return; >> + >> +    rcu_read_lock(); >> +    radix_tree_for_each_slot(slot, &obj->ttm.get_io_page.radix, &iter, 0) >> +        radix_tree_delete(&obj->ttm.get_io_page.radix, iter.index); >> +    rcu_read_unlock(); >> + >> +    sg_free_table(obj->ttm.cached_io_st); >> +    kfree(obj->ttm.cached_io_st); >> +    obj->ttm.cached_io_st = NULL; >>   } >>     static void i915_ttm_purge(struct drm_i915_gem_object *obj) >> @@ -338,12 +348,42 @@ static int i915_ttm_move(struct ttm_buffer_object *bo, bool evict, >>       ttm_bo_move_sync_cleanup(bo, dst_mem); >>       i915_ttm_free_cached_io_st(obj); >>   -    if (!dst_man->use_tt) >> +    if (!dst_man->use_tt) { >>           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; >> +    } >>         return 0; >>   } >>   +static int i915_ttm_io_mem_reserve(struct ttm_device *bdev, struct ttm_resource *mem) >> +{ >> +    if (mem->mem_type < I915_PL_LMEM0) >> +        return 0; >> + >> +    /* We may need to revisit this later, but this allows all caching to be used in mmap */ >> +    mem->bus.caching = ttm_cached; > > Since we're now using the TTM bo offsets, we might as well just make this ttm_write_combined now. Correct. That would be the correct value. TTM will use the correct caching that way. ~Maarten