From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 06/18] drm/i915: Defer default hardware context initialisation until first open Date: Fri, 27 Mar 2015 09:45:27 +0100 Message-ID: <20150327084527.GI23521@phenom.ffwll.local> References: <1427398885-31988-1-git-send-email-yu.dai@intel.com> <1427398885-31988-7-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by gabe.freedesktop.org (Postfix) with ESMTP id E97556E356 for ; Fri, 27 Mar 2015 01:43:41 -0700 (PDT) Received: by wiaa2 with SMTP id a2so21455183wia.0 for ; Fri, 27 Mar 2015 01:43:41 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1427398885-31988-7-git-send-email-yu.dai@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: yu.dai@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXIgMjYsIDIwMTUgYXQgMTI6NDE6MTNQTSAtMDcwMCwgeXUuZGFpQGludGVsLmNv bSB3cm90ZToKPiBGcm9tOiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+ IAo+IEluIG9yZGVyIHRvIGZ1bGx5IGluaXRpYWxpc2UgdGhlIGRlZmF1bHQgY29udGV4dHMsIHdl IGhhdmUgdG8gZXhlY3V0ZQo+IGJhdGNoYnVmZmVyIGNvbW1hbmRzIG9uIHRoZSBHUFUgZW5naW5l cy4gQnV0IHdlIGNhbid0IGRvIHRoYXQgdW50aWwgYW55Cj4gcmVxdWlyZWQgZmlybXdhcmUgaGFz IGJlZW4gbG9hZGVkLCB3aGljaCBtYXkgbm90IGJlIHBvc3NpYmxlIGR1cmluZwo+IGRyaXZlciBs b2FkLCBiZWNhdXNlIHRoZSBmaWxlc3lzdGVtKHMpIGNvbnRhaW5pbmcgdGhlIGZpcm13YXJlIG1h eSBub3QKPiBiZSBtb3VudGVkIHVudGlsIGxhdGVyLgo+IAo+IFRoZXJlZm9yZSwgd2Ugbm93IGFs bG93IHRoZSBmaXJzdCBjYWxsIHRvIHRoZSBmaXJtd2FyZS1sb2FkaW5nIGNvZGUgdG8KPiByZXR1 cm4gLUVBR0FJTiB0byBpbmRpY2F0ZSB0aGF0IGl0J3Mgbm90IHlldCByZWFkeSwgYW5kIHRoYXQg aXQgc2hvdWxkCj4gYmUgcmV0cmllZCB3aGVuIHRoZSBkZXZpY2UgaXMgZmlyc3Qgb3BlbmVkIGZy b20gdXNlciBjb2RlLCBieSB3aGljaAo+IHRpbWUgd2UgZXhwZWN0IHRoYXQgYWxsIHJlcXVpcmVk IGZpbGVzeXN0ZW1zIHdpbGwgaGF2ZSBiZWVuIG1vdW50ZWQuCj4gVGhlIGxhdGUtcmV0cnkgY29k ZSB3aWxsIHRoZW4gcmUtYXR0ZW1wdCB0byBsb2FkIHRoZSBmaXJtd2FyZSBpZiB0aGUKPiBlYXJs eSBhdHRlbXB0IGZhaWxlZC4KCldlJ3ZlIHRyaWVkIGEgc2ltaWxhciBhcHByb2FjaCBhIHdoaWxl IGJhY2sgYW5kIGl0IGRvZXNuJ3Qgd29yayB3ZWxsIGluCmNvbmp1bmN0aW9uIHdpdGggcnBzIC0g dGhlIGh3IHRlbmRzIHRvIGZhbGwgb3ZlciBpZiB0aGUgY29udGV4dCBzdGF0ZQppc24ndCBwcm9w ZXJseSBpbml0aWFsaXplZCB3aGVuIGdvaW5nIGludG8gcmM2LgoKV2h5IGV4YWN0bHkgY2FuJ3Qg d2UgbG9hZCB0aGF0IGZpcm13YXJlIHJpZ2h0IGF0IGJvb3QtdXAsIG9yIGF0IGxlYXN0CnN0YWxs IGNvcnJlY3RseSB1bnRpbCBpdCdzIHRoZXJlPwotRGFuaWVsCgo+IAo+IElzc3VlOiBWSVotNDg4 NAo+IFNpZ25lZC1vZmYtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxICsKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgIDkgKysrKysrKystCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAg fCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCAyMiAr KysrKysrKysrKysrKysrKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfbG9h ZGVyLmMgIHwgMTIgKysrKysrKysrLS0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25z KCspLCAxMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAx YTYwZjg2Li40NWJkZjMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE3NTUs NiArMTc1NSw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCS8qIGhkYS9pOTE1IGF1 ZGlvIGNvbXBvbmVudCAqLwo+ICAJYm9vbCBhdWRpb19jb21wb25lbnRfcmVnaXN0ZXJlZDsKPiAg Cj4gKwlib29sIGNvbnRleHRzX3JlYWR5Owo+ICAJdWludDMyX3QgaHdfY29udGV4dF9zaXplOwo+ ICAJc3RydWN0IGxpc3RfaGVhZCBjb250ZXh0X2xpc3Q7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IGluZGV4IDM4ZTQ5ZDkuLjAwMzdjY2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPiBAQCAtNDgyOCw4ICs0ODI4LDE1IEBAIGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKPiAgCX0K PiAgCj4gKwkvKiBXZSBjYW4ndCBlbmFibGUgY29udGV4dHMgdW50aWwgYWxsIGZpcm13YXJlIGlz IGxvYWRlZCAqLwo+ICsJcmV0ID0gaW50ZWxfZ3VjX2xvYWRfdWNvZGUoZGV2LCBmYWxzZSk7Cj4g KwlpZiAocmV0ID09IC1FQUdBSU4pCj4gKwkJcmV0dXJuIDA7CQkvKiB0b28gZWFybHkgKi8KPiAr Cj4gIAlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X2VuYWJsZShkZXZfcHJpdik7Cj4gLQlpZiAocmV0 ICYmIHJldCAhPSAtRUlPKSB7Cj4gKwlpZiAocmV0ID09IDApIHsKPiArCQlkZXZfcHJpdi0+Y29u dGV4dHNfcmVhZHkgPSB0cnVlOwo+ICsJfSBlbHNlIGlmIChyZXQgJiYgcmV0ICE9IC1FSU8pIHsK PiAgCQlEUk1fRVJST1IoIkNvbnRleHQgZW5hYmxlIGZhaWxlZCAlZFxuIiwgcmV0KTsKPiAgCQlp OTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGYzZTg0YzQuLjIzNTNkOGYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTQ0NSwyMyArNDQ1LDQ4IEBA IHN0YXRpYyBpbnQgY29udGV4dF9pZHJfY2xlYW51cChpbnQgaWQsIHZvaWQgKnAsIHZvaWQgKmRh dGEpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArLyogQ29tcGxldGUgYW55IGxhdGUgaW5pdGlh bGlzYXRpb24gaGVyZSAqLwo+ICtzdGF0aWMgaW50IGk5MTVfZ2VtX2NvbnRleHRfZmlyc3Rfb3Bl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IHJldDsKPiArCj4gKwkvKiBX ZSBjYW4ndCBlbmFibGUgY29udGV4dHMgdW50aWwgYWxsIGZpcm13YXJlIGlzIGxvYWRlZCAqLwo+ ICsJcmV0ID0gaW50ZWxfZ3VjX2xvYWRfdWNvZGUoZGV2LCB0cnVlKTsKPiArCVdBUk5fT04ocmV0 ID09IC1FQUdBSU4pOwo+ICsKPiArCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfZW5hYmxlKGRldl9w cml2KTsKPiArCWlmIChyZXQgPT0gMCkKPiArCQlkZXZfcHJpdi0+Y29udGV4dHNfcmVhZHkgPSB0 cnVlOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAgaW50IGk5MTVfZ2VtX2NvbnRleHRfb3Bl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gIHsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJf cHJpdjsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHg7Cj4gKwlpbnQgcmV0ID0gMDsKPiAg Cj4gIAlpZHJfaW5pdCgmZmlsZV9wcml2LT5jb250ZXh0X2lkcik7Cj4gIAo+ICAJbXV0ZXhfbG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQo ZGV2LCBmaWxlX3ByaXYpOwo+ICsKPiArCWlmICghZGV2X3ByaXYtPmNvbnRleHRzX3JlYWR5KQo+ ICsJCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfZmlyc3Rfb3BlbihkZXYpOwo+ICsKPiArCWlmIChy ZXQgPT0gMCkgewo+ICsJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGRldiwgZmlsZV9w cml2KTsKPiArCQlpZiAoSVNfRVJSKGN0eCkpCj4gKwkJCXJldCA9IFBUUl9FUlIoY3R4KTsKPiAr CX0KPiArCj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gLQlpZiAo SVNfRVJSKGN0eCkpIHsKPiArCWlmIChyZXQpCj4gIAkJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+ Y29udGV4dF9pZHIpOwo+IC0JCXJldHVybiBQVFJfRVJSKGN0eCk7Cj4gLQl9Cj4gIAo+IC0JcmV0 dXJuIDA7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRf Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gaW5kZXggYTA2YTdiMy4uZDgyNjJjZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IGludGVsX2d1 YyB7Cj4gIAkJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0ZPUl9XT1BDTV9EQVRBKQo+ICAKPiAg LyogaW50ZWxfZ3VjX2xvYWRlci5jICovCj4gLWV4dGVybiBpbnQgaW50ZWxfZ3VjX2xvYWRfdWNv ZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK2V4dGVybiBpbnQgaW50ZWxfZ3VjX2xvYWRf dWNvZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCB3YWl0KTsKPiAgZXh0ZXJuIHZvaWQg aW50ZWxfZ3VjX3Vjb2RlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGV4dGVybiB2 b2lkIGludGVsX2d1Y191Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gaW5kZXggYjk5MjNiNy4uMzE1 ZTVkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBAQCAt MjE3LDI1ICsyMTcsNDEgQEAgb3V0Ogo+ICB9Cj4gIAo+ICAvKgo+IC0gKiBDYWxsZWQgZnJvbSBn ZW1faW5pdF9odygpIGR1cmluZyBkcml2ZXIgbG9hZGluZyBhbmQgYWxzbyBhZnRlciBhIEdQVSBy ZXNldC4KPiAgICogQ2hlY2sgdGhhdCB0aGUgZmlybXdhcmUgZmV0Y2hpbmcgcHJvY2VzcyBoYXMg c3VjY2VlZGVkLCBhbmQgaWYgc28gdHJhbnNmZXIKPiAgICogdGhlIGxvYWRlZCBpbWFnZSB0byB0 aGUgaGFyZHdhcmUuCj4gKyAqCj4gKyAqIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGZldyBjaGVja3Mg dG8gZG8gZmlyc3QuIFRoZSB2ZXJ5IGZpcnN0IGNhbGwgc2hvdWxkIGhhdmUKPiArICogKHdhaXQg PT0gRkFMU0UpLCBidXQgdGhlIGZldGNoX3N0YXRlIHdpbGwgc3RpbGwgYmUgUEVORElORyBhcyB0 aGUgZmlybXdhcmUgbWF5Cj4gKyAqIG5vdCBiZSBhdmFpbGFibGUgdGhhdCBlYXJseS4gVGhlcmVm b3JlLCBvbiB0aGlzIGZpcnN0IGNhbGwsIHdlIGp1c3QgcmV0dXJuLgo+ICsgKgo+ICsgKiBUaGUg c2Vjb25kIGNhbGwgc2hvdWxkIGNvbWUgZnJvbSB0aGUgZmlyc3Qgb3BlbiBvZiB0aGUgZGV2aWNl ICh3YWl0ID09IFRSVUUpLgo+ICsgKiBUaGlzIGlzIGEgZ29vZCB0aW1lIHRvIGxvYWQgdGhlIGZp cm13YXJlIGludG8gdGhlIGRldmljZSwgYXMgYnkgdGhpcyBwb2ludCBpdAo+ICsgKiBtdXN0IGJl IGF2YWlsYWJsZS4KPiArICoKPiArICogQW55IHN1YnNlcXVlbnQgY2FsbHMgYXJlIGV4cGVjdGVk IHRvIGhhdmUgd2FpdCA9PSBGQUxTRSwgYW5kIGluZGljYXRlIHRoYXQgdGhlCj4gKyAqIGhhcmR3 YXJlIGhhcyBiZWVuIHJlc2V0IGFuZCBzbyB0aGUgZmlybXdhcmUgc2hvdWxkIGJlIHJlbG9hZGVk Lgo+ICAgKi8KPiAtaW50IGludGVsX2d1Y19sb2FkX3Vjb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gK2ludCBpbnRlbF9ndWNfbG9hZF91Y29kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBi b29sIHdhaXQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKPiAgCWludCBlcnI7Cj4gIAo+ICsJRFJNX0RFQlVHX0RSSVZFUigiR3VD OiB3YWl0ICVkLCBmZXRjaCBzdGF0dXMgJWQsIGxvYWQgc3RhdHVzICVkXG4iLAo+ICsJCXdhaXQs IGd1Y19mdy0+dWNfZndfZmV0Y2hfc3RhdHVzLCBndWNfZnctPnVjX2Z3X2xvYWRfc3RhdHVzKTsK PiArCj4gKwlpZiAoZ3VjX2Z3LT51Y19md19mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdB UkVfUEVORElORyAmJiAhd2FpdCkKPiArCQlyZXR1cm4gLUVBR0FJTjsKPiArCj4gIAlndWNfZnct PnVjX2Z3X2xvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKPiAgCWlmIChndWNf ZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FKQo+ICAJCXJl dHVybiAwOwo+ICAKPiAtCWd1Y19mdy0+dWNfZndfbG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJN V0FSRV9QRU5ESU5HOwo+ICAJZXJyID0gaW50ZWxfdWNfZndfY2hlY2soZGV2LCBndWNfZncpOwo+ ICAJaWYgKGVycikKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+ICsJZ3VjX2Z3LT51Y19md19sb2FkX3N0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gIAllcnIgPSBndWNfbG9hZF91Y29k ZShkZXYpOwo+ICAJaWYgKGVycikKPiAgCQlnb3RvIGZhaWw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWNfbG9hZGVyLmMKPiBpbmRleCA5ODZkY2YzLi5iYzRiMWU1IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdWNfbG9hZGVyLmMKPiBAQCAtNDksOCArNDksMTYgQEAgc3RhdGlj IHZvaWQgdWNfZndfZmluaXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91 Y19mdyAqdWNfZncpCj4gIAkJdWNfZnctPnVjX25hbWUsIHVjX2Z3LT51Y19md19mZXRjaF9zdGF0 dXMsIHVjX2Z3LT51Y19md19ibG9iKTsKPiAgCj4gIAlmdyA9IHVjX2Z3LT51Y19md19ibG9iOwo+ IC0JaWYgKCFmdykKPiAtCQlnb3RvIGZhaWw7Cj4gKwlpZiAoIWZ3KSB7Cj4gKwkJLyogbm8gZmly bXdhcmUgZm91bmQ7IHRyeSBhZ2FpbiBpbiBjYXNlIEZTIHdhcyBub3QgbW91bnRlZCAqLwo+ICsJ CURSTV9ERUJVR19EUklWRVIoInJldHJ5IGZldGNoaW5nICVzIGZ3IGZyb20gPCVzPlxuIiwKPiAr CQkJdWNfZnctPnVjX25hbWUsIHVjX2Z3LT51Y19md19wYXRoKTsKPiArCQlpZiAocmVxdWVzdF9m aXJtd2FyZSgmZncsIHVjX2Z3LT51Y19md19wYXRoLCAmZGV2LT5wZGV2LT5kZXYpKQo+ICsJCQln b3RvIGZhaWw7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggJXMgZncgZnJvbSA8JXM+IHN1 Y2NlZWRlZCwgZncgJXBcbiIsCj4gKwkJCXVjX2Z3LT51Y19uYW1lLCB1Y19mdy0+dWNfZndfcGF0 aCwgZncpOwo+ICsJCXVjX2Z3LT51Y19md19ibG9iID0gZnc7Cj4gKwl9Cj4gIAo+ICAJaWYgKHVj X2Z3LT51Y19md19jaGVjayAmJiAhdWNfZnctPnVjX2Z3X2NoZWNrKHVjX2Z3KSkKPiAgCQlnb3Rv IGZhaWw7Cj4gLS0gCj4gMS45LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==