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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 8B740C432C3 for ; Fri, 22 Nov 2019 18:35:21 +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 6CDBD2068F for ; Fri, 22 Nov 2019 18:35:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6CDBD2068F 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 8ADDB6F54F; Fri, 22 Nov 2019 18:35:19 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id A30406F53F; Fri, 22 Nov 2019 18:35:17 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Nov 2019 10:35:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,230,1571727600"; d="scan'208";a="205480170" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by fmsmga008.fm.intel.com with SMTP; 22 Nov 2019 10:35:14 -0800 Received: by stinkbox (sSMTP sendmail emulation); Fri, 22 Nov 2019 20:35:13 +0200 Date: Fri, 22 Nov 2019 20:35:13 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Daniel Vetter Subject: Re: [Intel-gfx] [PATCH 3/7] drm: Extract page_flip_{internal, atomic}() Message-ID: <20191122183513.GQ1208@intel.com> References: <20191115194204.22244-1-ville.syrjala@linux.intel.com> <20191115194204.22244-4-ville.syrjala@linux.intel.com> <20191119101443.GA30416@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191119101443.GA30416@phenom.ffwll.local> User-Agent: Mutt/1.10.1 (2018-07-13) X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191122183513.CjSqMpAEX86yRq29cY8chUhY0fKWX_j94C0PuJTlTYY@z> T24gVHVlLCBOb3YgMTksIDIwMTkgYXQgMTE6MTQ6NDNBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIE5vdiAxNSwgMjAxOSBhdCAwOTo0MjowMFBNICswMjAwLCBWaWxsZSBT eXJqYWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiA+IAo+ID4gWWFuayBvdXQgdGhlIGNvZGUgZm9yIHRoZSBwbGFuZS0+ ZmIvb2xkX2ZiL2NydGMgaGFuZGxpbmcgZnJvbQo+ID4gdGhlIHBhZ2UgZmxpcCBwYXRoIGludG8g cGFnZV9mbGlwX2ludGVybmFsKCksIGFuZCBwcm92aWRlIGEKPiA+IHNpbXBsZXIgdmFyaWFudCBm b3IgYXRvbWljIGRyaXZlcnMuCj4gPiAKPiA+IFdlJ2xsIGFsc28gbW92ZSB0aGUgZmIgdnMuIHNy YyB2aWV3cG9ydCBjaGVja3MgaW50byB0aGUgbmV3Cj4gPiBmdW5jdGlvbnMgYXMgdGhleSBhcmUg c2xpZ2h0bHkgZGlmZmVyZW50IGJldHdlZW4gdGhlIHR3byBwYXRocy4KPiA+IElmIHRoZSBhdG9t aWMgLnBhZ2VfZmxpcCgpIGltcGxlbWVudGF0aW9ucyBhcmUgZ3VhcmFudGVlZAo+ID4gdG8gY2Fs bCBkcm1fYXRvbWljX3BsYW5lX2NoZWNrKCkgd2UgY291bGQgZXZlbiBkcm9wIHRoZSBjaGVjawo+ ID4gZW50aXJlbHkgZnJvbSBwYWdlX2ZsaXBfYXRvbWljKCkuIEZvciBub3cgdG9zcyBpbiBhIEZJ WE1FLgo+ID4gCj4gPiB2MjogQml0IG1vcmUgcG9saXNoIGluIHBhZ2VfZmxpcF9pbnRlcm5hbCgp Cj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMg fCAxNTkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gPiAgMSBmaWxlIGNo YW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cGxhbmUuYwo+ID4gaW5kZXggMzg4NzhkYTViNzA0Li42MDUyNDc1YTIwYTUgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fcGxhbmUuYwo+ID4gQEAgLTEwMzEsMTMgKzEwMzEsMTA5IEBAIGludCBkcm1fbW9kZV9j dXJzb3IyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCXJldHVybiBkcm1fbW9k ZV9jdXJzb3JfY29tbW9uKGRldiwgcmVxLCBmaWxlX3ByaXYpOwo+ID4gIH0KPiA+ICAKPiA+ICtz dGF0aWMgaW50IHBhZ2VfZmxpcF9jaGVja19mYnMoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIsCj4gPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9m YikKPiA+ICt7Cj4gPiArCS8qIFRoZSBmcmFtZWJ1ZmZlciBpcyBjdXJyZW50bHkgdW5ib3VuZCwg cHJlc3VtYWJseQo+ID4gKwkgKiBkdWUgdG8gYSBob3RwbHVnIGV2ZW50LCB0aGF0IHVzZXJzcGFj ZSBoYXMgbm90Cj4gPiArCSAqIHlldCBkaXNjb3ZlcmVkLgo+ID4gKwkgKi8KPiA+ICsJaWYgKCFv bGRfZmIpCj4gPiArCQlyZXR1cm4gLUVCVVNZOwo+ID4gKwo+ID4gKwlpZiAob2xkX2ZiLT5mb3Jt YXQgIT0gZmItPmZvcm1hdCkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiUGFnZSBmbGlwIGlzIG5v dCBhbGxvd2VkIHRvIGNoYW5nZSBmcmFtZSBidWZmZXIgZm9ybWF0LlxuIik7Cj4gPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIGludCBwYWdlX2ZsaXBfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ID4gKwkJCSAgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gKwkJCSAgICAgIHN0 cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUsCj4gPiArCQkJICAgICAgdTMyIGZsYWdz LAo+ID4gKwkJCSAgICAgIHUzMiB0YXJnZXRfdmJsYW5rLAo+ID4gKwkJCSAgICAgIHN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUgPSBjcnRjLT5wcmltYXJ5Owo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlXQVJO X09OKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChjcnRjLT5kZXYpKTsKPiA+ICsKPiA+ICsJ cmV0ID0gZHJtX2NydGNfY2hlY2tfdmlld3BvcnQoY3J0YywgY3J0Yy0+eCwgY3J0Yy0+eSwKPiA+ ICsJCQkJICAgICAgJmNydGMtPm1vZGUsIGZiKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCXJldHVy biByZXQ7Cj4gPiArCj4gPiArCXJldCA9IHBhZ2VfZmxpcF9jaGVja19mYnMoZmIsIHBsYW5lLT5m Yik7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwo+ID4gKwlwbGFuZS0+ b2xkX2ZiID0gcGxhbmUtPmZiOwo+ID4gKwlpZiAoY3J0Yy0+ZnVuY3MtPnBhZ2VfZmxpcF90YXJn ZXQpCj4gPiArCQlyZXQgPSBjcnRjLT5mdW5jcy0+cGFnZV9mbGlwX3RhcmdldChjcnRjLCBmYiwg ZSwgZmxhZ3MsCj4gPiArCQkJCQkJICAgIHRhcmdldF92YmxhbmssIGN0eCk7Cj4gPiArCWVsc2UK PiA+ICsJCXJldCA9IGNydGMtPmZ1bmNzLT5wYWdlX2ZsaXAoY3J0YywgZmIsIGUsIGZsYWdzLCBj dHgpOwo+ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlwbGFuZS0+b2xkX2ZiID0gTlVMTDsKPiA+ICsJ CXJldHVybiByZXQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcGxhbmUtPmZiID0gZmI7Cj4gPiArCWRy bV9mcmFtZWJ1ZmZlcl9nZXQocGxhbmUtPmZiKTsKPiA+ICsKPiA+ICsJZHJtX2ZyYW1lYnVmZmVy X3B1dChwbGFuZS0+b2xkX2ZiKTsKPiA+ICsJcGxhbmUtPm9sZF9mYiA9IE5VTEw7Cj4gPiArCj4g PiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBhZ2VfZmxpcF9hdG9t aWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gKwkJCSAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKPiA+ICsJCQkgICAgc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSwK PiA+ICsJCQkgICAgdTMyIGZsYWdzLAo+ID4gKwkJCSAgICB1MzIgdGFyZ2V0X3ZibGFuaywKPiA+ ICsJCQkgICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgpCj4gPiArewo+ID4g KwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IGNydGMtPnByaW1hcnk7Cj4gPiArCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gcGxhbmUtPnN0YXRlOwo+ID4gKwlpbnQgcmV0 Owo+ID4gKwo+ID4gKwlXQVJOX09OKCFkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoY3J0Yy0+ ZGV2KSk7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIEZJWE1FOiBDYW4gd2UgYXNzdW1lIGFsbCBk cml2ZXJzIGVuZCB1cCBjYWxsaW5nCj4gPiArCSAqIGRybV9hdG9taWNfcGxhbmVfY2hlY2soKSBp biB0aGVpciBwYWdlIGZsaXAgcGF0aHM/Cj4gPiArCSAqIElmIHNvIHdlIGNvdWxkIHJlbW92ZSB0 aGlzLgo+ID4gKwkgKi8KPiAKPiBUaGlzIGlzIGRlZmluaXRlbHkgd3JvbmcsIGNvcmUgaGFzIHRv IGNoZWNrIHRoZXNlLiBDdXJyZW50bHkgbm8gZHJpdmVyCj4gY2hlY2tzIHRoaXMgYXQgYWxsLiBJ IHRoaW5rIHlvdSdyZSB0aGlua2luZyBvZgo+IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5l X3N0YXRlKCkuCgpObywgSSdtIHRoaW5raW5nIG9mIGRybV9hdG9taWNfcGxhbmVfY2hlY2soKS4g VGhhdCBvbmUgYWxyZWFkeSBkb2VzIHRoZQoiZG9lcyB0aGUgc3JjIHJlY3QgZml0IGludG8gdGhl IGZiIiBjaGVjay4gSXQgZ2V0cyBjYWxsZWQgZnJvbQpkcm1fYXRvbWljX2NvbW1pdCgpLT5kcm1f YXRvbWljX2NoZWNrX29ubHkoKSBidXQgSSB3YXNuJ3Qgc3VyZSBpZiBzb21lCmRyaXZlcnMgbWln aHQgdGFrZSBzb21lIHNob3J0IGNpcmN1aXQgcGF0aCBwYXN0IHRoYXQgZm9yIHBhZ2VfZmxpcCgp LgoKPiAKPiBUaGF0IGFzaWRlIEknbSBraW5kYSBub3QgZ2V0dGluZyB0aGUgcG9pbnQgb2YgdGhl IHNodWZmbGluZy9jbGVhbnVwIGluIHRoZQo+IGZpcnN0IDQgcGF0Y2hlcyBoZXJlLCBzbyB3aWxs IHNraXAgdGhlbS4KClRoZSBwb2ludCB3YXMgdG8gZ2V0IHRoYXQgbGVnYWN5IHBsYW5lLT5mYi9v bGRfZmIgc3R1ZmYgdG90YWxseQpvdXQgZnJvbSB0aGUgYXRvbWljIGNvZGVwYXRoLiBSaWdodCBu b3cgaXQncyBwb2xsdXRpbmcgdGhlCnN1cHBvc2VkbHkgaGlnaGVyIGxldmVsIGNvZGUgc2hhcmVk IGJ5IGJvdGggYXRvbWljIGFuZCBsZWdhY3kKZHJpdmVycy4KCj4gLURhbmllbAo+IAo+ID4gKwly ZXQgPSBkcm1fZnJhbWVidWZmZXJfY2hlY2tfc3JjX2Nvb3JkcyhwbGFuZV9zdGF0ZS0+c3JjX3gs Cj4gPiArCQkJCQkgICAgICAgcGxhbmVfc3RhdGUtPnNyY195LAo+ID4gKwkJCQkJICAgICAgIHBs YW5lX3N0YXRlLT5zcmNfdywKPiA+ICsJCQkJCSAgICAgICBwbGFuZV9zdGF0ZS0+c3JjX2gsCj4g PiArCQkJCQkgICAgICAgZmIpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ ICsKPiA+ICsJcmV0ID0gcGFnZV9mbGlwX2NoZWNrX2ZicyhmYiwgcGxhbmVfc3RhdGUtPmZiKTsK PiA+ICsJaWYgKHJldCkKPiA+ICsJCXJldHVybiByZXQ7Cj4gPiArCj4gPiArCWlmIChjcnRjLT5m dW5jcy0+cGFnZV9mbGlwX3RhcmdldCkKPiA+ICsJCXJldHVybiBjcnRjLT5mdW5jcy0+cGFnZV9m bGlwX3RhcmdldChjcnRjLCBmYiwgZSwgZmxhZ3MsCj4gPiArCQkJCQkJICAgICB0YXJnZXRfdmJs YW5rLCBjdHgpOwo+ID4gKwllbHNlCj4gPiArCQlyZXR1cm4gY3J0Yy0+ZnVuY3MtPnBhZ2VfZmxp cChjcnRjLCBmYiwgZSwgZmxhZ3MsIGN0eCk7Cj4gPiArfQo+ID4gKwo+ID4gIGludCBkcm1fbW9k ZV9wYWdlX2ZsaXBfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCQkgICAgIHZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ID4gIHsKPiA+ICAJc3RydWN0 IGRybV9tb2RlX2NydGNfcGFnZV9mbGlwX3RhcmdldCAqcGFnZV9mbGlwID0gZGF0YTsKPiA+ICAJ c3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsICpvbGRfZmI7Cj4gPiArCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiOwo+ID4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpl ID0gTlVMTDsKPiA+ICAJdTMyIHRhcmdldF92YmxhbmsgPSBwYWdlX2ZsaXAtPnNlcXVlbmNlOwo+ ID4gIAlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ID4gQEAgLTExNDUsNjUg KzEyNDEsMTQgQEAgaW50IGRybV9tb2RlX3BhZ2VfZmxpcF9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4gIAlpZiAocmV0KQo+ID4gIAkJZ290byBvdXQ7Cj4gPiAgCj4gPiAtCWlmIChw bGFuZS0+c3RhdGUpCj4gPiAtCQlvbGRfZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+ID4gKwlpZiAo ZHJtX2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KGRldikpCj4gPiArCQlyZXQgPSBwYWdlX2ZsaXBf YXRvbWljKGNydGMsIGZiLCBlLCBwYWdlX2ZsaXAtPmZsYWdzLAo+ID4gKwkJCQkgICAgICAgdGFy Z2V0X3ZibGFuaywgJmN0eCk7Cj4gPiAgCWVsc2UKPiA+IC0JCW9sZF9mYiA9IHBsYW5lLT5mYjsK PiA+IC0KPiA+IC0JaWYgKG9sZF9mYiA9PSBOVUxMKSB7Cj4gPiAtCQkvKiBUaGUgZnJhbWVidWZm ZXIgaXMgY3VycmVudGx5IHVuYm91bmQsIHByZXN1bWFibHkKPiA+IC0JCSAqIGR1ZSB0byBhIGhv dHBsdWcgZXZlbnQsIHRoYXQgdXNlcnNwYWNlIGhhcyBub3QKPiA+IC0JCSAqIHlldCBkaXNjb3Zl cmVkLgo+ID4gLQkJICovCj4gPiAtCQlyZXQgPSAtRUJVU1k7Cj4gPiAtCQlnb3RvIG91dDsKPiA+ IC0JfQo+ID4gLQo+ID4gLQlpZiAocGxhbmUtPnN0YXRlKSB7Cj4gPiAtCQljb25zdCBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKPiA+IC0KPiA+IC0JCXJldCA9 IGRybV9mcmFtZWJ1ZmZlcl9jaGVja19zcmNfY29vcmRzKHN0YXRlLT5zcmNfeCwKPiA+IC0JCQkJ CQkgICAgICAgc3RhdGUtPnNyY195LAo+ID4gLQkJCQkJCSAgICAgICBzdGF0ZS0+c3JjX3csCj4g PiAtCQkJCQkJICAgICAgIHN0YXRlLT5zcmNfaCwKPiA+IC0JCQkJCQkgICAgICAgZmIpOwo+ID4g LQl9IGVsc2Ugewo+ID4gLQkJcmV0ID0gZHJtX2NydGNfY2hlY2tfdmlld3BvcnQoY3J0YywgY3J0 Yy0+eCwgY3J0Yy0+eSwKPiA+IC0JCQkJCSAgICAgICZjcnRjLT5tb2RlLCBmYik7Cj4gPiAtCX0K PiA+IC0JaWYgKHJldCkKPiA+IC0JCWdvdG8gb3V0Owo+ID4gLQo+ID4gLQlpZiAob2xkX2ZiLT5m b3JtYXQgIT0gZmItPmZvcm1hdCkgewo+ID4gLQkJRFJNX0RFQlVHX0tNUygiUGFnZSBmbGlwIGlz IG5vdCBhbGxvd2VkIHRvIGNoYW5nZSBmcmFtZSBidWZmZXIgZm9ybWF0LlxuIik7Cj4gPiAtCQly ZXQgPSAtRUlOVkFMOwo+ID4gLQkJZ290byBvdXQ7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JcGxhbmUt Pm9sZF9mYiA9IHBsYW5lLT5mYjsKPiA+IC0JaWYgKGNydGMtPmZ1bmNzLT5wYWdlX2ZsaXBfdGFy Z2V0KQo+ID4gLQkJcmV0ID0gY3J0Yy0+ZnVuY3MtPnBhZ2VfZmxpcF90YXJnZXQoY3J0YywgZmIs IGUsCj4gPiAtCQkJCQkJICAgIHBhZ2VfZmxpcC0+ZmxhZ3MsCj4gPiAtCQkJCQkJICAgIHRhcmdl dF92YmxhbmssCj4gPiAtCQkJCQkJICAgICZjdHgpOwo+ID4gLQllbHNlCj4gPiAtCQlyZXQgPSBj cnRjLT5mdW5jcy0+cGFnZV9mbGlwKGNydGMsIGZiLCBlLCBwYWdlX2ZsaXAtPmZsYWdzLAo+ID4g LQkJCQkJICAgICAmY3R4KTsKPiA+IC0JaWYgKHJldCkgewo+ID4gLQkJLyogS2VlcCB0aGUgb2xk IGZiLCBkb24ndCB1bnJlZiBpdC4gKi8KPiA+IC0JCXBsYW5lLT5vbGRfZmIgPSBOVUxMOwo+ID4g LQl9IGVsc2Ugewo+ID4gLQkJaWYgKCFwbGFuZS0+c3RhdGUpIHsKPiA+IC0JCQlwbGFuZS0+ZmIg PSBmYjsKPiA+IC0JCQlkcm1fZnJhbWVidWZmZXJfZ2V0KGZiKTsKPiA+IC0JCX0KPiA+IC0JfQo+ ID4gKwkJcmV0ID0gcGFnZV9mbGlwX2ludGVybmFsKGNydGMsIGZiLCBlLCBwYWdlX2ZsaXAtPmZs YWdzLAo+ID4gKwkJCQkJIHRhcmdldF92YmxhbmssICZjdHgpOwo+ID4gIAo+ID4gIG91dDoKPiA+ IC0JaWYgKHBsYW5lLT5vbGRfZmIpCj4gPiAtCQlkcm1fZnJhbWVidWZmZXJfcHV0KHBsYW5lLT5v bGRfZmIpOwo+ID4gLQlwbGFuZS0+b2xkX2ZiID0gTlVMTDsKPiA+IC0KPiA+ICAJaWYgKHJldCA9 PSAtRURFQURMSykgewo+ID4gIAkJcmV0ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiA+ ICAJCWlmICghcmV0KQo+ID4gLS0gCj4gPiAyLjIzLjAKPiA+IAo+ID4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4gLS0gCj4gRGFu aWVsIFZldHRlcgo+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6 Ly9ibG9nLmZmd2xsLmNoCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==