From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v2 1/5] drm/i915/guc: add enable_guc_loading parameter Date: Fri, 13 May 2016 15:36:23 +0100 Message-ID: <5735E667.3010706@intel.com> References: <1461780195-17434-1-git-send-email-david.s.gordon@intel.com> <572377B5.5000901@linux.intel.com> <572CC8B9.7050000@intel.com> <5731F213.6060902@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 8B9DE6E35F for ; Fri, 13 May 2016 14:36:51 +0000 (UTC) In-Reply-To: <5731F213.6060902@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTAvMDUvMTYgMTU6MzcsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMDYvMDUvMTYg MTc6MzksIERhdmUgR29yZG9uIHdyb3RlOgo+PiBPbiAyOS8wNC8xNiAxNjowMywgVHZydGtvIFVy c3VsaW4gd3JvdGU6Cj4KPiBbc25pcF0KPgo+Pj4+ICsgICAgICAgIGdvdG8gZmFpbDsKPj4+PiAr ICAgIGlmIChmd19wYXRoID09IE5VTEwpCj4+Pj4gKyAgICAgICAgZ290byBmYWlsOwo+Pj4+ICsg ICAgaWYgKCpmd19wYXRoID09ICdcMCcpIHsKPj4+PiArICAgICAgICBEUk1fRVJST1IoIk5vIEd1 QyBmaXJtd2FyZSBrbm93biBmb3IgdGhpcyBwbGF0Zm9ybVxuIik7Cj4+Pgo+Pj4gSXQgaXMgbm90 IGFuIGVycm9yIHVubGVzcyBpOTE1LmVuYWJsZV9ndWNfbG9hZGluZyA9PSAyLCBubz8gQW5kIGlm IGJlc3QKPj4+IGVmZm9ydCB0aGVuIGl0IGlzIHByb2JhYmx5IGRlYnVnIG9yIGluZm9ybWF0aW9u YWwuCj4+Cj4+IE5vLCBpdCdzIHN0aWxsIGFuIEVSUk9SLiBZb3UncmUgcnVubmluZyB0aGUgZHJp dmVyIG9uIGEgcGxhdGZvcm0gZm9yCj4+IHdoaWNoIHdlIGRvbid0IGtub3cgd2hhdCBmaXJtd2Fy ZSBpcyByZXF1aXJlZC4gVGhhdCBwcm9iYWJseSBtZWFucyBhbgo+PiBvbGQgZHJpdmVyIG9uIG5l dyBoYXJkd2FyZSwgc28gaXQgbWlnaHQgbm90IHdvcmsgYXQgYWxsLiBZb3UgY2FuCj4+IHN1cHBy ZXNzIHRoZSBlcnJvciBieSBzZXR0aW5nIGk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nPTAgaWYgeW91 IHdhbnQgdG8KPj4gdHJ5IHRoaXMgdmVyc2lvbiBvZiB0aGUgZHJpdmVyIGFueXdheS4gQWxzbyBu b3RlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KPj4gcGF0aCA9PSBOVUxMIChubyBHdUMsIG9yIG5v IGZpcm13YXJlIHJlcXVpcmVkID0+IG5vdCBhbiBlcnJvcikgdnMuIHBhdGgKPj4gPT0gIiIgKGhh cyBHdUMsIHByZXN1bWFibHkgbmVlZHMgZmlybXdhcmUsIGJ1dCB3ZSBkb24ndCBrbm93IHdoZXJl IHRvCj4+IGxvb2sgPT4gRVJST1IpLgo+Cj4gSSB0aGluayB0aGF0IGlmIGk5MTUuZW5hYmxlX2d1 Y19sb2FkaW5nID09IDEgdGhlbiBubyBlcnJvciBzaG91bGQgYmUKPiBsb2dnZWQuIERvY3VtZW50 YXRpb24gc2F5cyB0aGF0IHZhbHVlIG1lYW5kICJ0cnkgdG8gbG9hZC91c2UgdGhlIEd1QywKPiBm YWxsYmFjayBpZiBub3QgYXZhaWxhYmxlIiBhbmQgdG8gbWUgdGhhdCBtZWFucyBpdCBpcyBub3Qg YW4gZXJyb3IgYW5kCj4gYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlIG9ubHkgc2hvdWxkIGJlIGxv Z2dlZC4KCk9LLCB0aGlzIG1lc3NhZ2UgaXMgbm93IERSTV9JTkZPCgo+Pj4gQWxzbywgZG9uJ3Qg dGhlIGNoZWNrcyBhZ2FpbnN0IGZ3X3BhdGggKHRvZ2V0aGVyIHdpdGggdGhlIGVycm9yIG9yIGRl YnVnCj4+PiBtZXNzYWdlKSBiZWxvbmcgaW4gdGhlIGZ3IGZldGNoIGZ1bmN0aW9uPyBJZiB0aGV5 IGFyZSBpbnZhbGlkIGZ3IGZldGNoCj4+PiB3b3VsZCBoYXZlIGZhaWxlZCBhbmQgdGhpcyBmdW5j dGlvbiB3b3VsZCBiZSBhYmxlIHRvIGluc3BlY3QgdGhlIGhpZ2gKPj4+IGxldmVsIHN0YXR1cyBv ZiB0aGF0IHN0ZXAgaGVyZSwgbm8/Cj4+Cj4+IFRoZSBjaGVja3MgYXJlIGRvbmUgaW4gaW50ZWxf Z3VjX3Vjb2RlX2luaXQoKSwgYmVmb3JlIGZ3X2ZldGNoKCkgaXMgZXZlbgo+PiBjYWxsZWQ7IGJ1 dCB0aGF0IGZ1bmN0aW9uIGlzIHZvaWQsIHNvIGNhbid0IHJldHVybiBmYWlsdXJlLiAoQWxzbywg d2UKPj4gb3JpZ2luYWxseSBzdXBwb3J0ZWQgYXN5bmNocm9ub3VzIGxvYWRpbmcsIHdoaWNoIGFs c28gY2FuJ3QgcmV0dXJuCj4+IGZhaWx1cmUpLiBTbyB0aGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGNh bGxlZCBldmVuIHdoZW4gd2UgYWxyZWFkeSBrbm93Cj4+IHRoYXQgd2UgaGF2ZW4ndCBnb3QgYW55 IGZpcm13YXJlIHRvIGxvYWQsIGFuZCB0aGVzZSB0ZXN0cyBhcmUgaW5kZWVkCj4+IGNoZWNraW5n IHRoZSBoaWdoLWxldmVsIHN0YXR1cyBmcm9tIF9pbml0KCkuCj4KPiBBbnlob3cgdGhlIHNwZWNp YWwgbWVhbmluZ3MgY29udmV5ZWQgaW4gZndfcGF0aCA9PSBOVUxMIGFuZCAqZndfcGF0aCA9PQo+ IDAgYXJlIGltaG8ganVzdCB0b28gaGFyZCB0byBmb2xsb3cuIEkgc2VlIGl0IGlzIG5vdCB5b3Vy IGNvZGUsIGJ1dAo+IHJld29ya2luZyB0aGlzIGxvb2tlZCBsaWtlIGFuIG9wcG9ydHVuaXR5IHRv IGNsZWFuIHRoYXQgdXAuIE5ldmVyIG1pbmQuCgpGb3IgZndfcGF0aDoKPT0gTlVMTCAgbWVhbnMg bm8gZmlybXdhcmUgbmVlZGVkLCBub3QgYW4gZXJyb3IuCj09ICIiICAgIG1lYW5zIHRoZSBkcml2 ZXIgYWN0dWFsbHkgZG9lc24ndCBrbm93IHdoYXQgdG8gbG9hZCBpbiB0aGlzCiAgICAgICAgICBz aXR1YXRpb24gLSB0aGUgaGFyZHdhcmUgaXMgbm90IHJlY29nbmlzZWQuIElNSE8gdGhpcyBzaG91 bGQKICAgICAgICAgIGJlIGFuIEVSUk9SLCBidXQgSSd2ZSBtYWRlIGl0IGp1c3QgaW5mb3JtYXRp b25hbCBub3cuCj09IHBhdGggIHRoZSBmaWxlIHdlIHdhbnQuCgpUaG9zZSBhcmUgdGhlIG9ubHkg dGhyZWUgcG9zc2liaWxpdGllcywgaXQncyBzZXQganVzdCBvbmNlIGFjY29yZGluZyB0aGUgCmhh cmR3YXJlIHR5cGUgYW5kIGlzIGNvbnN0YW50IHRoZXJlYWZ0ZXIuIEl0IGRvZXNuJ3QgZGVwZW5k IG9uIHRoZSAKYWN0dWFsIGxvYWQgc3RhdHVzLiBUaGF0IHJlYWxseSBpc24ndCB2ZXJ5IGNvbXBs aWNhdGVkLgoKPj4+PiArICAgICAgICBnb3RvIGZhaWw7Cj4+Pj4gKyAgICB9Cj4+Pj4KPj4+PiAt ICAgIGlmIChndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX05PTkUp Cj4+Pj4gLSAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gKyAgICAvKiBGZXRjaCBmYWlsZWQsIG9yIGFs cmVhZHkgZmV0Y2hlZCBidXQgZmFpbGVkIHRvIGxvYWQ/ICovCj4+Pj4gKyAgICBpZiAoZ3VjX2Z3 LT5ndWNfZndfZmV0Y2hfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQo+Pj4+ICsgICAg ICAgIGdvdG8gZmFpbDsKPj4+PiArICAgIGlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9 PSBHVUNfRklSTVdBUkVfRkFJTCkKPj4+PiArICAgICAgICBnb3RvIGZhaWw7Cj4+Pgo+Pj4gTGVh ZHMgYmFjayB0byB0aGUgcXVlc3Rpb24gb2YgbG9hZCBzdGF0dXMgaW4gdGhpcyBmdW5jdGlvbi4g U28gaXQgaXMKPj4+IGV4cGVjdGVkIHdlIGFsd2F5cyBlbnRlciBoZXJlIHdpdGggbG9hZCBzdGF0 dXMgb2Ygbm9uZT8gSXMgaXQgcG9zc2libGUKPj4+IHRvIGdldCBoZXJlIHdpdGggdGhlIGZpcm13 YXJlIGFscmVhZHkgbG9hZGVkIGFscmVhZHk/Cj4+Cj4+IE5vdCAqYWN0dWFsbHkqIGxvYWRlZCwg YmVjYXVzZSBpdCdzIGJlZW4gZXJhc2VkIGJ5IHBvd2Vyb2ZmLiBCdXQgdGhlCj4+IHN0YXR1cyB0 cmFja2luZyB2YXJpYWJsZXMgYXJlIHBlcnNpc3RlbnQsIHNvIHRoZXkgcmVmbGVjdCB0aGUgbGFz dAo+PiBhdHRlbXB0LiBTbyBvbiByZXN1bWUsIHdlIGFjdHVhbGx5IGV4cGVjdCAiU1VDQ0VTUyIg YXQgdGhpcyBwb2ludCwgYW5kCj4+IHRoZXJlZm9yZSBjaGFuZ2UgaXQgYmFjayB0byBQRU5ESU5H IGJlbG93Lgo+Cj4gU2hvdWxkbid0IHRoZSBjb2RlIHRoZW4gdXBkYXRlIHRoZSBzdGF0dXMgdmFy aWFibGVzIG9uIHN1c3BlbmQvd2hhdGV2ZXI/Cj4gU2FtZSBhcyBhYm92ZSwgSSBmaW5kIGl0IHZl cnkgaGFyZCB0byBmb2xsb3cgdGhlIGxvZ2ljIGhlcmUuCgpJdCBwcm9jZWVkcyBieSBpZGVudGlm eWluZyBhbGwgdGhlIHdheXMgaW4gd2hpY2ggdGhlIGxvYWRpbmcgcHJvY2VzcyBjYW4gCmZhaWw7 IHdoYXQncyBsZWZ0IG11c3QgYmUgVGhlIFBhdGggVG8gU3VjY2VzcyAodG0pIDopCgoxLiBMb2Fk aW5nIGZvcmJpZGRlbiA9PiBmYWlsCjIuIE5vIGZpcm13YXJlIHdhbnRlZCA9PiBmYWlsCjMuIE5v IGZpcm13YXJlIGtub3duID0+IGZhaWwKNC4gRmlybXdhcmUgbm90IGZldGNoZWQgPT4gZmFpbAo1 LiBQcmV2aW91cyBsb2FkIGZhaWxlZCA9PiBmYWlsCgpBdCB0aGlzIHBvaW50IHdlIGNvbW1pdCB0 byB0cnlpbmcgdG8gbG9hZCB0aGUgZmlybXdhcmUgaW50byB0aGUgaC93LgpUaGVuIHdlIHRyeSB0 aHJlZSB0aW1lcyB0byByZXNldC1hbmQtbG9hZCB0aGUgR3VDLgoKPj4+PiAtICAgIGlmIChndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MgJiYKPj4+PiAt ICAgICAgICBndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfRkFJTCkK Pj4+PiAtICAgICAgICByZXR1cm4gLUVOT0VYRUM7Cj4+Pj4gKyAgICBkaXJlY3RfaW50ZXJydXB0 c190b19ob3N0KGRldl9wcml2KTsKPj4+Pgo+Pj4+ICAgICAgIGd1Y19mdy0+Z3VjX2Z3X2xvYWRf c3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4+Pj4KPj4+PiAtICAgIERSTV9ERUJVR19E UklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCj4+Pj4gLSAgICAgICAgaW50ZWxfZ3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+Pj4+IC0KPj4+ PiAtICAgIHN3aXRjaCAoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSB7Cj4+Pj4gLSAgICBj YXNlIEdVQ19GSVJNV0FSRV9GQUlMOgo+Pj4+IC0gICAgICAgIC8qIHNvbWV0aGluZyB3ZW50IHdy b25nIDooICovCj4+Pj4gLSAgICAgICAgZXJyID0gLUVJTzsKPj4+PiAtICAgICAgICBnb3RvIGZh aWw7Cj4+Pj4gLQo+Pj4+IC0gICAgY2FzZSBHVUNfRklSTVdBUkVfTk9ORToKPj4+PiAtICAgIGNh c2UgR1VDX0ZJUk1XQVJFX1BFTkRJTkc6Cj4+Pj4gLSAgICBkZWZhdWx0Ogo+Pj4+IC0gICAgICAg IC8qICJjYW4ndCBoYXBwZW4iICovCj4+Pj4gLSAgICAgICAgV0FSTl9PTkNFKDEsICJHdUMgZncg JXMgaW52YWxpZCBndWNfZndfZmV0Y2hfc3RhdHVzICVzCj4+Pj4gWyVkXVxuIiwKPj4+PiAtICAg ICAgICAgICAgZ3VjX2Z3LT5ndWNfZndfcGF0aCwKPj4+PiAtICAgICAgICAgICAgaW50ZWxfZ3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4+Pj4gLSAgICAg ICAgICAgIGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyk7Cj4+Pj4gLSAgICAgICAgZXJyID0g LUVOWElPOwo+Pj4+IC0gICAgICAgIGdvdG8gZmFpbDsKPj4+PiAtCj4+Pj4gLSAgICBjYXNlIEdV Q19GSVJNV0FSRV9TVUNDRVNTOgo+Pj4+IC0gICAgICAgIGJyZWFrOwo+Pj4+IC0gICAgfQoKTG9v ayBob3cgbWFueSBsaW5lcyBvZiBjb21wbGljYXRlZCBsb2dpYyB0aGlzIHBhdGNoIHJlbW92ZXMg OikKCj4+Pj4gKyAgICBEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywg bG9hZCAlc1xuIiwKPj4+PiArICAgICAgICBpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3 LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKPj4+PiArICAgICAgICBpbnRlbF9ndWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKPj4+Pgo+Pj4+ICAgICAgIGVyciA9 IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXYpOwo+Pj4+ICAgICAgIGlmIChlcnIpCj4+Pj4g QEAgLTQ4Myw2ICs0NzEsNyBAQCBpbnQgaW50ZWxfZ3VjX3Vjb2RlX2xvYWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPj4+Pgo+Pj4+ICAgZmFpbDoKPj4+PiAgICAgICBEUk1fRVJST1IoIkd1QyBm aXJtd2FyZSBsb2FkIGZhaWxlZCwgZXJyICVkXG4iLCBlcnIpOwo+Pj4KPj4+IFNhbWUgYXMgYWJv dmUgSSB0aGluayBlcnJvciBtdXN0IGJlIGRlcGVuZGVudCBvbiB0aGUgcmVxdWVzdGVkIG1vZGUu Cj4+PiBTb21lIGN1c3RvbWVycyBhcmUgdmVyeSBzZW5zaXRpdmUgdG8gZXJyb3JzIHdoaWNoIGFy ZSBub3QgcmVhbGx5IGVycm9ycwo+Pj4gc28gaXQgaXMgYmFkIHRvIGxvZyB0aGVtIHdoZW4gdGhl eSBhcmUgbm90Lgo+Pgo+PiBObywgaXQncyBzdGlsbCBhbiBFUlJPUi4gZW5hYmxlX2d1Y19sb2Fk aW5nIG11c3QgYmUgbm9uemVybywgc28gd2UndmUKPj4gYmVlbiBhc2tlZCB0byAqdHJ5KiB0byBs b2FkIHRoZSBHdUMuIElmIHRoZSBsb2FkIGZhaWxzLCB0aGF0IG1lYW5zCj4+IGJyb2tlbiBoYXJk d2FyZSBvciBhIGNvcnJ1cHQgZmlybXdhcmUgYmxvYiwgb3Igc29tZSBvdGhlciBmb3JtIG9mIHN5 c3RlbQo+PiBtaXNjb25maWd1cmF0aW9uLiBFdmVuIGlmIHdlJ3JlIGdvaW5nIHRvIGZhbGwgYmFj ayB0byBleGVjbGlzdCBtb2RlLAo+PiB0aGF0IG5lZWRzIHRvIGJlIHJlcG9ydGVkOyBmb3IgZXhh bXBsZSwgaXQgbWF5IG1lYW4gdGhhdCBTTFBDIGlzCj4+IGRpc2FibGVkLiBUaGUgdXNlciBjYW4g YXZvaWQgdGhlIGVycm9yIGJ5IGJvb3Rpbmcgd2l0aCBHdUMgbG9hZGluZwo+PiBkaXNhYmxlZCwg YnV0IHRoZXkgc2hvdWxkIHByb2JhYmx5IGZpeCB0aGUgcHJvYmxlbSBpbnN0ZWFkLgo+Cj4gWWVz IGl0IG5lZWRzIHRvIGJlIHJlcG9ydGVkLCBidXQgaWYgd2UgYXJlIGluIGJlc3QgZWZmb3J0IG1v ZGUgaXQgc2hvdWxkCj4gYmUgaW5mb3JtYXRpb25hbCBJIHRoaW5rLiBEZXBlbmRzIGhvdyB5b3Ug dmlldyB0aGUgZXJyb3JzIGluIHRoZSBrZXJuZWwKPiBsb2cgLSBpdCBtYXkgYmUgYSBmaXJtd2Fy ZSBsb2FkaW5nIGVycm9yLCBidXQgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZgo+IHRoZSBzeXN0 ZW0gbG9nLCBpdCBpcyBub3QgYW4gZXJyb3IuIEV2ZXJ5dGhpbmcgc3RpbGwgd29ya3MgYXMgaW50 ZW5kZWQsCj4gbW9yZSBzbywgdGhlIHVzZXIgaGFzIGFza2VkIHVzIHRvIHRyeSBhbmQgY2Fycnkg b24gd2l0aCB0aGUgYWx0ZXJuYXRpdmUuCj4gU28gdGhlIHN5c3RlbSAobG9nKSBleHBlcmllbmNl ZCBubyBlcnJvci4KCk9LLCBJJ3ZlIG1vdmVkIGl0IGxhdGVyLCBhbmQgaXQncyBub3cgRFJNX0VS Uk9SIGlmIHdlJ3JlIGdvaW5nIHRvIHJldHVybiAKLUVJTyAoR1BVIHdlZGdlZCkgYW5kIERSTV9J TkZPIG90aGVyd2lzZS4KCj4+Pj4gKwo+Pj4+ICAgICAgIGlmIChndWNfZnctPmd1Y19md19sb2Fk X3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVORElORykKPj4+PiAgICAgICAgICAgZ3VjX2Z3LT5n dWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKPj4+Pgo+Pj4+IEBAIC00OTAs NiArNDc5LDI5IEBAIGludCBpbnRlbF9ndWNfdWNvZGVfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+Pj4+ICAgICAgIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXYpOwo+Pj4+ICAg ICAgIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXYpOwo+Pj4+Cj4+Pj4gKyAgICAvKgo+Pj4+ ICsgICAgICogV2UndmUgZmFpbGVkIHRvIGxvYWQgdGhlIGZpcm13YXJlIDooCj4+Pj4gKyAgICAg Kgo+Pj4+ICsgICAgICogRGVjaWRlIHdoZXRoZXIgdG8gZGlzYWJsZSBHdUMgc3VibWlzc2lvbiBh bmQgZmFsbCBiYWNrIHRvCj4+Pj4gKyAgICAgKiBleGVjbGlzdCBtb2RlLCBhbmQgd2hldGhlciB0 byBoaWRlIHRoZSBlcnJvciBieSByZXR1cm5pbmcKPj4+PiArICAgICAqIHplcm8gb3IgdG8gcmV0 dXJuIC1FSU8sIHdoaWNoIHRoZSBjYWxsZXIgd2lsbCB0cmVhdCBhcyBhCj4+Pj4gKyAgICAgKiBu b25mYXRhbCBlcnJvciAoaS5lLiBpdCBkb2Vzbid0IHByZXZlbnQgZHJpdmVyIGxvYWQsIGJ1dAo+ Pj4+ICsgICAgICogbWFya3MgdGhlIEdQVSBhcyB3ZWRnZWQgdW50aWwgcmVzZXQpLgo+Pj4+ICsg ICAgICovCj4+Pj4gKyAgICBpZiAoaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcgPiAxKSB7Cj4+Pj4g KyAgICAgICAgZXJyID0gLUVJTzsKPj4+PiArICAgIH0gZWxzZSBpZiAoSEFTX0dVQ19TQ0hFRChk ZXYpICYmICFIQVNfR1VDX1VDT0RFKGRldikpIHsKPj4+PiArICAgICAgICByZXR1cm4gMDsKPj4+ Cj4+PiBpOTE1X2dlbV9pbml0X2h3IGFscmVhZHkgZ3VhcmRzIHRoZSBjYWxsIHRvIGludGVsX2d1 Y191Y29kZV9sb2FkIHdpdGgKPj4+IEhBU19HVUNfVUNPREUgc28gYXQgdGhlIG1vbWVudCBhdCBs ZWFzdCB0aGlzIGlzIGEgZGVhZCBicmFuY2guCj4+Pgo+Pj4gSSBkb24ndCBldmVuIHVuZGVyc3Rh bmQgd2hhdCBpcyB0aGlzIGJyYW5jaCBzdXBwb3NlZCB0byBkbz8gSG93IGNhbgo+Pj4gdGhlcmUg YmUgYSBwbGF0Zm9ybSB3aXRoIG5vIGd1YyBmdyBidXQgZ3VjIHNjaGVkdWxpbmc/Cj4+Cj4+IElt YWdpbmUgYSBHdUMgd2l0aCBmaXJtd2FyZSBpbiBST00gOikgT3IgYXQgbGVhc3QgZmxhc2ggLi4u Cj4+Cj4+IChpdCBhbHJlYWR5IGhhcyBhIEJvb3RST00pCj4KPiBPayBidXQgaXQgaXMgc3RpbGwg YSBkZWFkIGJyYW5jaCwgbm8/IFNob3VsZCB0aGUgSEFTX0dVQ19VQ09ERSBndWFyZCBpbgo+IGk5 MTVfZ2VtX2luaXRfaHcgYmUgcmVtb3ZlZCBhbmQgbGV0IGJlIGhhbmRsZWQgYnkgdGhpcyBjb2Rl IG9ubHk/CgpZZXAsIEkndmUgY2hhbmdlZCB0aGUgY2FsbCBjb25kaXRpb24gOikKCj4+Pj4gKyAg ICB9IGVsc2UgaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID4gMSkgewo+Pj4+ICsgICAg ICAgIGVyciA9IC1FSU87Cj4+Pj4gKyAgICB9IGVsc2Ugewo+Pj4+ICsgICAgICAgIGVyciA9IDA7 Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24g PSAwOwo+Pj4+ICsKPj4+PiArICAgIERSTV9ERUJVR19EUklWRVIoImZhbGxpbmcgYmFjayB0byBl eGVjbGlzdCBtb2RlLCBlcnIgJWRcbiIsIGVycik7Cj4+Pgo+Pj4gVGhpcyB3b3VsZCBsb2cgd2hl biBpOTE1LmVuYWJsZV9ndWNfbG9hZGluZyBpcyBzZXQgdG8gMCB3aGljaCB3b3VsZCBiZQo+Pj4g Y29uZnVzaW5nLiBJIHRoaW5rIGluIHRoaXMgY2FzZSB0aGUgZnVuY3Rpb24gc2hvdWxkIGJhaWwg b3V0IG11Y2gKPj4+IGVhcmxpZXIuCj4+Cj4+IFRoYXQgd2FzIHRlc3RlZCByaWdodCBiYWNrIGF0 IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uISBJdCBiYWlsZWQgb3V0Cj4+IHZlcnkgZWFybHksIHNv IHlvdSBjYW4ndCBnZXQgaGVyZSB3aXRoIEd1QyBsb2FkaW5nIGRpc2FibGVkLgo+Cj4gQUZBSUNT IHRoZSBwYXRjaCByZW1vdmVzIHRoZSBlYXJseSBiYWlsb3V0PyEKPgo+PiBBbHNvLCB0aGF0J3Mg YSBERUJVRyBtZXNzYWdlLCBzbyB1c2VycyB3b24ndCBzZWUgaXQgYnkgZGVmYXVsdC4KPgo+IFNv IGl0IGlzIE9LIHRvIGNvbmZ1c2UgZmVsbG93IGRldmVsb3BlcnM/IDpECgpXaXRoIHRoZSBuZXcg cmVwb3J0aW5nIGFzIGRlc2NyaWJlZCBhYm92ZSwgdGhpcyBtZXNzYWdlIGlzIHByb21vdGVkIHRv IApEUk1fSU5GTywgYnV0IG9ubHkgaWYgZW5hYmxlX2d1Y19zdWJtaXNzaW9uIGlzIG5vdCBhbHJl YWR5IHplcm8uIElmIEd1QyAKc3VibWlzc2lvbiBpcyBhbHJlYWR5IGRpc2FibGVkLCB3ZSB3b24n dCByZXBvcnQgdGhhdCB3ZSdyZSBmYWxsaW5nIGJhY2sgCnRvIGV4ZWNsaXN0IG1vZGUuCgpZb3Ug Y2FuIHN0aWxsIGNvbmZ1c2UgeW91cnNlbGYgYnkgZGlzYWJsaW5nIEd1QyBsb2FkaW5nICp3aXRo b3V0KiBhbHNvIApkaXNhYmxpbmcgR3VDIHN1Ym1pc3Npb24sIGJ1dCBpbiB0aGF0IGNhc2UgdGhl IG1lc3NhZ2Ugc2hvdWxkIGhlbHAgeW91IApyZWFsaXNlIHlvdSBhc2tlZCBmb3Igc29tZXRoaW5n IHJhdGhlciBzdHJhbmdlIDopCgo+Pj4+ICAgICAgIGlmICghSEFTX0dVQ19VQ09ERShkZXYpKSB7 Cj4+Pj4gICAgICAgICAgIGZ3X3BhdGggPSBOVUxMOwo+Pj4+IEBAIC02NDEsMjYgKzY1NiwyMSBA QCB2b2lkIGludGVsX2d1Y191Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+Pj4g ICAgICAgICAgIGd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IDY7Cj4+Pj4gICAgICAgICAg IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IDE7Cj4+Pj4gICAgICAgfSBlbHNlIHsKPj4+ PiAtICAgICAgICBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IGZhbHNlOwo+Pj4+ICAgICAg ICAgICBmd19wYXRoID0gIiI7ICAgIC8qIHVua25vd24gZGV2aWNlICovCj4+Pj4gICAgICAgfQo+ Pj4KPj4+IENvbmZ1c2luZyBibG9jaywgSEFTX0dVQ19VQ09ERSBpcyBkZWZpbmVkIGFzIChJU19H RU45KGRldikgJiYKPj4+ICFJU19LQUJZTEFLRShkZXYpKSBidXQgdGhlbiBoZXJlIHdlIG9ubHkg c3VwcG9ydCBTS0wgaGVyZS4gV2h5IHRoZQo+Pj4gZm9ybWVyIGlzIHRoZW4gbm90IGp1c3QgSVNf U0tZTEFLRT8KPj4+Cj4+PiBXaGVuIEJYVCBzdXBwb3J0IGlzIGFkZGVkIHRoaXMgc3RpbGwgbmVl ZHMgdG8gYmUgbW9kaWZpZWQgYW5kIHdvdWxkIG9ubHkKPj4+IHNhdmUgdG91Y2hpbmcgSEFTX0dV Q19VQ09ERSBpbiB0aGUgaGVhZGVyLiBCdXQgaXQgbXVzdCBiZSBhIGJldHRlcgo+Pj4gcmVhc29u Pwo+Pgo+PiBJIGRvbid0IHNlZSBhbnl0aGluZyBjb25mdXNpbmcuIFRoZSBsb2dpYyBkb2VzIG5v dCBkZXBlbmQgb24gaG93Cj4+IHNvbWVib2R5IGhhcyBkZWZpbmVkIEhBU19HVUNfVUNPREUoKSwg YW5kIHdlIHNob3VsZG4ndCBhc3N1bWUgYW55Cj4+IHJlbGF0aW9uIGJldHdlZW4gaXQgYW5kIHRo ZSBwbGF0Zm9ybSBtYWNyb3MuIFdoYXQgaXQgc2F5cyBoZXJlIGlzOgo+Pgo+PiAxLiAgaWYgdGhp cyBwbGF0Zm9ybSAqZG9lc24ndCogaGF2ZSBHdUMgZmlybXdhcmUsIGZ3X3BhdGggaXMgTlVMTAo+ PiAyYS4gZWxzZSBpZiB0aGlzIGlzIFNLWUxBS0UsIGxvb2sgZm9yIGYvdyB2ZXJzaW9uIDYuMQo+ PiAyYi4gKHJlcGVhdCAyYSBmb3IgZWFjaCBzdXBwb3J0ZWQgcGxhdGZvcm0pCj4+IDMuICAoZWxz ZSkgdW5rbm93biBkZXZpY2UsIHBhdGggaXMgIiIgd2hpY2ggdHJpZ2dlcnMgRVJST1IgbGF0ZXIu Cj4+Cj4+IEltYWdpbmUgYSBTS0wgdmVyc2lvbiB3aXRoIEd1QyB1Q29kZSBpbiBST00gLSB0aGUg SEFTX0dVQ19VQ09ERSgpIHRlc3QKPj4gbXVzdCB0YWtlIHByZWNlZGVuY2UuCj4KPiBNeSBxdWVz dGlvbiB3YXMsIHdoeSBpc24ndCBIQVNfR1VDX1VDT0RFID09IElTX1NLWUxBS0UgdG8gc3RhcnQg d2l0aCA/Cj4gVGhlbiB3aGVuIEJYVCBzdXBwb3J0IGlzIGFkZGVkLCB3aGljaCB3aWxsIG5lZWQg Y29kZSBjaGFuZ2VzIGFueXdheSwgd2UKPiBjaGFuZ2UgSEFTX0dVQ19VQ09ERSBvbmx5LgoKUHJv YmFibHkgYmVjYXVzZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBvZiBIQVNfR1VDX1VDT0RFKCkg d2FzIHNpbXBseSAKSVNfR0VOOSgpIC0tIFBPUiB3YXMgdGhhdCAqQUxMKiBHZW45IHBsYXRmb3Jt cyBzaG91bGQgaGF2ZSBhIEd1QyBhbmQgCmZpcm13YXJlIGZvciBpdC4gVGhlbiBzb21lb25lIGVs c2UgYWRkZWQgS0JMIGFzIGFuIGV4Y2VwdGlvbi4KCkFueXdheSwgd2Ugbm93IGhhdmUgQlhUIHN1 cHBvcnQsIHNvIHRoZSBpZi1lbHNlLWlmIGNvbmRpdGlvbiBsYWRkZXIgaGFzIAphIG1vcmUgb2J2 aW91cyBzdHJ1Y3R1cmUgbm93IDopCgouRGF2ZS4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==