From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Gundersen Subject: Re: [PATCH v5 4/7] video: add generic framebuffer eviction Date: Fri, 2 Sep 2016 12:21:26 +0200 Message-ID: References: <20160902082245.7119-1-dh.herrmann@gmail.com> <20160902082245.7119-5-dh.herrmann@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-vk0-x244.google.com (mail-vk0-x244.google.com [IPv6:2607:f8b0:400c:c05::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 08A326EA58 for ; Fri, 2 Sep 2016 10:21:48 +0000 (UTC) Received: by mail-vk0-x244.google.com with SMTP id x187so732037vkx.1 for ; Fri, 02 Sep 2016 03:21:47 -0700 (PDT) In-Reply-To: <20160902082245.7119-5-dh.herrmann@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Herrmann Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBTZXAgMiwgMjAxNiBhdCAxMDoyMiBBTSwgRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJt YW5uQGdtYWlsLmNvbT4gd3JvdGU6Cj4gVGhlcmUgYXJlIHNldmVyYWwgc2l0dWF0aW9ucyB3aGVy ZSB3ZSB3YW50IGhhcmR3YXJlIGhhbmRvdmVyIGZyb20gYW4gZWFybHkKPiBib290IEdGWCBkcml2 ZXIgKGUuZy4sIHZnYWNvbiwgdmVzYWZiLCBlZmlmYiwgc2ltcGxlZmIpIHRvIGEgZnVsbCBmbGV0 Y2hlZAo+IEdGWCBkcml2ZXIgKGUuZy4sIG1vc3QgRFJNIGRyaXZlcnMpLiBTbyBmYXIsIHdlIHJl bGllZCBvbgo+IHJlbW92ZV9jb25mbGljdGluZ19mcmFtZWJ1ZmZlcnMoKSB0byBkbyB0aGlzIGZv ciB1cywgaG93ZXZlciwgdGhpcyBoYWQgYQo+IGJ1bmNoIG9mIGRvd25zaWRlczoKPgo+ICAgbyBJ dCBvbmx5IHJlbW92ZXMgY29uZmxpY3RpbmcgZmJkZXYgZHJpdmVycy4gSXQgZG9lcyBub3QgZHJv cCB2Z2Fjb24sCj4gICAgIGVhcmx5IGJvb3QgY29uc29sZSBkcml2ZXJzLCBjb25mbGljdGluZyBE Uk0gZHJpdmVycywgZXRjLgo+Cj4gICBvIEl0IG9ubHkgdW5sb2FkcyB0aGUgZmJkZXYgZHJpdmVy LCBpdCBkb2VzIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcKPiAgICAgZGV2aWNlIG9yIHJlc291 cmNlcy4gSW4gY2FzZSBvZiAic2NyZWVuX2luZm8iIGRyaXZlcnMgKGUuZy4sIGVmaWZiKQo+ICAg ICB0aGlzIGlzIGZpbmUsIHNpbmNlIG5vIHJlc291cmNlcyBhcmUgcGlubmVkLiBIb3dldmVyLCBp ZiB0aGUgZHJpdmVyCj4gICAgIGJpbmRzIHRvIGEgcGxhdGZvcm0tZGV2aWNlIGxpa2UgInNpbXBs ZS1mcmFtZWJ1ZmZlciIsIHdlIG11c3QgbWFrZQo+ICAgICBzdXJlIHRvIHVucmVnaXN0ZXIgdGhh dCBkZXZpY2UgYXMgd2VsbC4gT3RoZXJ3aXNlLCBwaW5uZWQgcmVzb3VyY2VzCj4gICAgIGxpa2Ug SU9SRVNPVVJDRV9NRU0gc3RheSBhcm91bmQsIHRyaWdnZXJpbmcgV0FSTl9PTnMgaWYgdGhlIGZv bGxvd2luZwo+ICAgICBkcml2ZXIgcmVxdWVzdHMgdGhvc2UgcmVzb3VyY2VzLgo+Cj4gICBvIEl0 IGlzIG9ubHkgYXZhaWxhYmxlIGlmIENPTkZJR19GQiBpcyBzZWxlY3RlZC4KPgo+IFRoaXMgY29t bWl0IGFkZHMgYSBuZXcgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBtYW5hZ2VzIHN5c3RlbS1mcmFtZWJ1 ZmZlcnMKPiAoc2hvcnQ6IHN5c2ZiKS4gVGhlIGluaXRpYWwgY29tbWl0IHByb3ZpZGVzIGNvbmZs aWN0LXJlc29sdXRpb24gZm9yCj4gc3lzdGVtLWZyYW1lYnVmZmVycy4gQXQgaXRzIGNvcmUgaXQg cHJvdmlkZXMgc3lzZmJfZXZpY3RfY29uZmxpY3RzKCksCj4gd2hpY2ggaW1wbGVtZW50cyBjb25m bGljdCBkZXRlY3Rpb24gYW5kIHJlbW92YWwgZm9yIGFsbCBrbm93biB0eXBlcyBvZgo+IEdGWCBk cml2ZXIgaGFuZC1vdmVycy4gU28gZmFyLCB0aGlzIGluY2x1ZGVzIHBsYXRmb3JtLWRldmljZSBy ZW1vdmFsLAo+IGZiZGV2LWZpcm13YXJlLWRldmljZSByZW1vdmFsLCB2Z2Fjb24gcmVtb3ZhbCBh bmQgVkJFIGRldGVjdGlvbi4gVG8KPiBmdXJ0aGVyIHNpbXBsaWZ5IHRoZSBjYWxsZXJzLCBpdCBh bHNvIHByb3ZpZGVzIGhlbHBlcnMgdG8gZmlndXJlIG91dCB3aGF0Cj4gaGFuZC1vdmVyIHRvIGRv LCBiYXNlZCBvbiB0aGUgZGV2aWNlIHRoZSBuZXcgZHJpdmVycyBiaW5kcyB0bzoKPgo+ICAgbyBQ Q0kgZHJpdmVycyBjYW4gdXNlIHN5c2ZiX2V2aWN0X2NvbmZsaWN0c19wY2koKSwgd2hpY2ggd2ls bCBmaWd1cmUgb3V0Cj4gICAgIHRoZSBhcGVydHVyZXMgYXV0b21hdGljYWxseSwgYW5kIGRvZXMg VkdBL1ZCRSBkZXRlY3Rpb24uCj4KPiAgIG8gR2VuZXJpYyBmaXJtd2FyZSBkcml2ZXJzIHRoYXQg bWlnaHQgYmUgc2hhZG93ZWQgYXQgYW55IGFkZHJlc3MgaW4KPiAgICAgbWVtb3J5IGNhbiB1c2Ug c3lzZmJfZXZpY3RfY29uZmxpY3RzX2Zpcm13YXJlKCksIGJhc2ljYWxseSByZW1vdmluZwo+ICAg ICAqYWxsKiBmaXJtd2FyZSBmcmFtZWJ1ZmZlcnMgaW4gZWZmZWN0Lgo+Cj4gVGhpcyBvbmx5IGFk ZHMgdGhlIGdlbmVyaWMgc3lzZmIgaGVscGVycy4gTm8gdXNlcnMgYXJlIGNvbnZlcnRlZCwgeWV0 Lgo+Cj4gU2lnbmVkLW9mZi1ieTogRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5uQGdtYWlsLmNv bT4KClJldmlld2VkLWJ5OiBUb20gR3VuZGVyc2VuIDx0ZWdAamtsbS5ubz4KCj4gLS0tCj4gIGRy aXZlcnMvdmlkZW8vS2NvbmZpZyAgfCAgIDQgKwo+ICBkcml2ZXJzL3ZpZGVvL01ha2VmaWxlIHwg ICAxICsKPiAgZHJpdmVycy92aWRlby9zeXNmYi5jICB8IDMyNyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUvbGludXgvc3lzZmIuaCAg fCAgMzQgKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAzNjYgaW5zZXJ0aW9ucygrKQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9zeXNmYi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL2xpbnV4L3N5c2ZiLmgKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL0tj b25maWcgYi9kcml2ZXJzL3ZpZGVvL0tjb25maWcKPiBpbmRleCAzYzIwYWY5Li41NmE4Mjk0IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v S2NvbmZpZwo+IEBAIC0zNiw2ICszNiwxMCBAQCBjb25maWcgVklERU9NT0RFX0hFTFBFUlMKPiAg Y29uZmlnIEhETUkKPiAgICAgICAgIGJvb2wKPgo+ICtjb25maWcgU1lTRkIKPiArICAgICAgIGJv b2wKPiArICAgICAgIHNlbGVjdCBEVU1NWV9DT05TT0xFIGlmIFZUCj4gKwo+ICBpZiBWVAo+ICAg ICAgICAgc291cmNlICJkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZyIKPiAgZW5kaWYKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9NYWtlZmlsZSBiL2RyaXZlcnMvdmlkZW8vTWFrZWZp bGUKPiBpbmRleCA5YWQzYzE3Li5kZjdiZDc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8v TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3ZpZGVvL01ha2VmaWxlCj4gQEAgLTEsNSArMSw2IEBA Cj4gIG9iai0kKENPTkZJR19WR0FTVEFURSkgICAgICAgICAgICArPSB2Z2FzdGF0ZS5vCj4gIG9i ai0kKENPTkZJR19IRE1JKSAgICAgICAgICAgICAgICArPSBoZG1pLm8KPiArb2JqLSQoQ09ORklH X1NZU0ZCKSAgICAgICAgICAgICAgKz0gc3lzZmIubwo+Cj4gIG9iai0kKENPTkZJR19WVCkgICAg ICAgICAgICAgICAgICs9IGNvbnNvbGUvCj4gIG9iai0kKENPTkZJR19MT0dPKSAgICAgICAgICAg ICAgICs9IGxvZ28vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vc3lzZmIuYyBiL2RyaXZl cnMvdmlkZW8vc3lzZmIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u MDA1ODVjOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3ZpZGVvL3N5c2ZiLmMKPiBA QCAtMCwwICsxLDMyNyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBSZWQg SGF0LCBJbmMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUKPiArICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCj4gKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCj4gKyAqLwo+ICsKPiArI2RlZmluZSBwcl9mbXQoZm10KSAic3lzZmI6ICIgZm10Cj4gKyNp bmNsdWRlIDxsaW51eC9jb25zb2xlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9mYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9vZl9wbGF0Zm9ybS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3N5c2ZiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC92dC5oPgo+ICsK PiArc3RhdGljIGJvb2wgc3lzZmJfZXZpY3RfbWF0Y2hfcmVzb3VyY2Uoc3RydWN0IHN5c2ZiX2V2 aWN0X2N0eCAqY3R4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCByZXNvdXJjZSAqbWVtKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgYXBlcnR1cmUgKmc7Cj4g KyAgICAgICB1bnNpZ25lZCBpbnQgaTsKPiArCj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3R4 LT5hcC0+Y291bnQ7ICsraSkgewo+ICsgICAgICAgICAgICAgICBnID0gJmN0eC0+YXAtPnJhbmdl c1tpXTsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChtZW0tPnN0YXJ0ID09IGctPmJhc2UpCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gKyAgICAgICAgICAgICAgIGlm IChtZW0tPnN0YXJ0ID49IGctPmJhc2UgJiYgbWVtLT5lbmQgPCBnLT5iYXNlICsgZy0+c2l6ZSkK PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiArICAgICAgICAgICAgICAg aWYgKChjdHgtPmZsYWdzICYgU1lTRkJfRVZJQ1RfVkJFKSAmJiBtZW0tPnN0YXJ0ID09IDB4QTAw MDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gKyAgICAgICB9Cj4g Kwo+ICsgICAgICAgcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHN5c2ZiX2V2 aWN0X3BsYXRmb3JtX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnVzZXJkYXRhKQo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3Qgc3lzZmJfZXZpY3RfY3R4ICpjdHggPSB1c2VyZGF0YTsKPiAr ICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2Uo ZGV2KTsKPiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAqbWVtOwo+ICsKPiArICAgICAgIGlmICgh cGRldi0+bmFtZSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgICAgaWYg KCFzdHJjbXAocGRldi0+bmFtZSwgInNpbXBsZS1mcmFtZWJ1ZmZlciIpKSB7Cj4gKyAgICAgICAg ICAgICAgIG1lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwg MCk7Cj4gKyAgICAgICAgICAgICAgIGlmICghbWVtKQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAwOwo+ICsgICAgICAgICAgICAgICBpZiAoIXN5c2ZiX2V2aWN0X21hdGNoX3Jlc291 cmNlKGN0eCwgbWVtKSkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiArCj4g KyNpZmRlZiBDT05GSUdfT0ZfQUREUkVTUwo+ICsgICAgICAgICAgICAgICBpZiAoZGV2LT5vZl9u b2RlKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mX3BsYXRmb3JtX2RldmljZV9kZXN0cm95 KGRldik7Cj4gKyAgICAgICAgICAgICAgIGVsc2UKPiArI2VuZGlmCj4gKyAgICAgICAgICAgICAg IGlmIChkZXZfZ2V0X3BsYXRkYXRhKCZwZGV2LT5kZXYpKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHBsYXRmb3JtX2RldmljZV9kZWwocGRldik7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAg cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc3lzZmJfZXZpY3RfcGxhdGZvcm0oc3Ry dWN0IHN5c2ZiX2V2aWN0X2N0eCAqY3R4KQo+ICt7Cj4gKyAgICAgICAvKgo+ICsgICAgICAgICog RWFybHktYm9vdCBhcmNoaXRlY3R1cmUgc2V0dXAgYW5kIGJvb3QtbG9hcmRlcnMgc29tZXRpbWVz IGNyZWF0ZQo+ICsgICAgICAgICogcHJlbGltaW5hcnkgcGxhdGZvcm0gZGV2aWNlcyB3aXRoIGEg Z2VuZXJpYyBmcmFtZWJ1ZmZlciBzZXR1cC4gVGhpcwo+ICsgICAgICAgICogYWxsb3dzIGdyYXBo aWNzIGFjY2VzcyBkdXJpbmcgYm9vdC11cCwgd2l0aG91dCBhIHJlYWwgZ3JhcGhpY3MKPiArICAg ICAgICAqIGRyaXZlciBsb2FkZWQuIEhvd2V2ZXIsIG9uY2UgYSByZWFsIGdyYXBoaWNzIGRyaXZl ciB0YWtlcyBvdmVyLCB3ZQo+ICsgICAgICAgICogaGF2ZSB0byBkZXN0cm95IHRob3NlIHBsYXRm b3JtIGRldmljZXMuIEluIHRoZSBsZWdhY3kgZmJkZXYgY2FzZSwgd2UKPiArICAgICAgICAqIGp1 c3QgdXNlZCB0byB1bmxvYWQgdGhlIGZiZGV2IGRyaXZlci4gSG93ZXZlciwgdG8gbWFrZSBzdXJl IGFueSBraW5kCj4gKyAgICAgICAgKiBvZiBkcml2ZXIgaXMgdW5sb2FkZWQsIHRoZSBwbGF0Zm9y bS1ldmljdGlvbiBjb2RlIGhlcmUgc2ltcGx5Cj4gKyAgICAgICAgKiByZW1vdmVzIGFueSBjb25m bGljdGluZyBwbGF0Zm9ybSBkZXZpY2UgZGlyZWN0bHkuIFRoaXMgY2F1c2VzIGFueQo+ICsgICAg ICAgICogYm91bmQgZHJpdmVyIHRvIGJlIGRldGFjaGVkLCBhbmQgdGhlbiByZW1vdmVzIHRoZSBk ZXZpY2UgZW50aXJlbHkgc28KPiArICAgICAgICAqIGl0IGNhbm5vdCBiZSBib3VuZCB0byBsYXRl ciBvbi4KPiArICAgICAgICAqCj4gKyAgICAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IGFueSBzdWNo IHBsYXRmb3JtIGRldmljZSBtdXN0IGJlIHJlZ2lzdGVyZWQgYnkKPiArICAgICAgICAqIGVhcmx5 IGFyY2hpdGVjdHVyZSBzZXR1cCBjb2RlLiBJZiB0aGV5IGFyZSByZWdpc3RlcmVkIGFmdGVyIHJl Z3VsYXIKPiArICAgICAgICAqIEdGWCBkcml2ZXJzLCB0aGlzIHdpbGwgZmFpbCBob3JyaWJseS4K PiArICAgICAgICAqLwo+ICsKPiArICAgICAgIHN0YXRpYyBERUZJTkVfTVVURVgobG9jayk7Cj4g KyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBJbiBjYXNlIG9m IHN0YXRpYyBwbGF0Zm9ybS1kZXZpY2VzLCB3ZSBtdXN0IGl0ZXJhdGUgdGhlIGJ1cyBhbmQKPiAr ICAgICAgICAqIHJlbW92ZSB0aGVtIG1hbnVhbGx5LiBXZSBrbm93IHRoYXQgd2UncmUgdGhlIG9u bHkgY29kZSB0aGF0IG1pZ2h0Cj4gKyAgICAgICAgKiByZW1vdmUgdGhlbSwgc28gYSBzaW1wbGUg c3RhdGljIGxvY2sgc2VyaWFsaXplcyBhbGwgY2FsbHMgaGVyZS4KPiArICAgICAgICAqLwo+ICsg ICAgICAgbXV0ZXhfbG9jaygmbG9jayk7Cj4gKyAgICAgICByZXQgPSBidXNfZm9yX2VhY2hfZGV2 KCZwbGF0Zm9ybV9idXNfdHlwZSwgTlVMTCwgY3R4LAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzeXNmYl9ldmljdF9wbGF0Zm9ybV9kZXZpY2UpOwo+ICsgICAgICAgbXV0ZXhfdW5s b2NrKCZsb2NrKTsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg c3lzZmJfZXZpY3RfZmJkZXYoc3RydWN0IHN5c2ZiX2V2aWN0X2N0eCAqY3R4KQo+ICt7Cj4gKyAg ICAgICAvKgo+ICsgICAgICAgICogVXN1YWxseSwgZXZpY3RpbmcgcGxhdGZvcm0gZGV2aWNlcyBz aG91bGQgYmUgZW5vdWdoIHRvIGFsc28gdHJpZ2dlcgo+ICsgICAgICAgICogZmJkZXYgdW5sb2Fk aW5nLiBIb3dldmVyLCBzb21lIGxlZ2FjeSBkZXZpY2VzIChlLmcuLCB1dmVzYWZiKSBoYXZlCj4g KyAgICAgICAgKiBubyBwbGF0Zm9ybSBkZXZpY2VzIHRoYXQgY2FuIGJlIGV2aWN0ZWQsIHNvIHdl IHN0aWxsIGZhbGwgYmFjayB0bwo+ICsgICAgICAgICogdGhlIGxlZ2FjeSBmYmRldiByZW1vdmFs IGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9ubHkgcmVtb3ZlcyBmYmRldgo+ICsgICAgICAgICogZGV2 aWNlcyBtYXJrZWQgYXMgRkJJTkZPX01JU0NfRklSTVdBUkUuIEFueXRoaW5nIGVsc2UgaXMgbGVm dAo+ICsgICAgICAgICogdW50b3VjaGVkLgo+ICsgICAgICAgICoKPiArICAgICAgICAqIEFzIHVz dWFsLCB0aGlzIG9ubHkgd29ya3MgaWYgdGhlIGZiZGV2IGRldmljZSBpcyBwcm9iZWQgZWFybHks Cj4gKyAgICAgICAgKiBiZWZvcmUgYW55IHJlYWwgR0ZYIGRyaXZlciB3YW50cyB0byB0YWtlIG92 ZXIuCj4gKyAgICAgICAgKi8KPiArCj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPiArCj4gKyNpZmRl ZiBDT05GSUdfRkIKPiArICAgICAgIHJldCA9IHJlbW92ZV9jb25mbGljdGluZ19mcmFtZWJ1ZmZl cnMoY3R4LT5hcCwgInN5c2ZiIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LT5mbGFncyAmIFNZU0ZCX0VWSUNUX1ZCRSk7Cj4gKyNlbmRpZgo+ICsK PiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc3lzZmJfZXZpY3Rf dmdhY29uKHN0cnVjdCBzeXNmYl9ldmljdF9jdHggKmN0eCkKPiArewo+ICsgICAgICAgLyoKPiAr ICAgICAgICAqIFRoZSBWR0FDT04gY29uc29sZSBkcml2ZXIgcG9rZXMgYXQgVkdBIHJlZ2lzdGVy cyByYW5kb21seS4gSWYgYSBHRlgKPiArICAgICAgICAqIGRyaXZlciBjYW5ub3Qga2VlcCB0aGUg VkdBIHN1cHBvcnQgYWxpdmUsIGl0IGJldHRlciBtYWtlcyBzdXJlIHRvCj4gKyAgICAgICAgKiB1 bmxvYWQgVkdBQ09OIGJlZm9yZSBwcm9iaW5nLgo+ICsgICAgICAgICoKPiArICAgICAgICAqIFVu bG9hZGluZyBWR0FDT04gcmVxdWlyZXMgdXMgdG8gZmlyc3QgZm9yY2UgZHVtbXljb24gdG8gdGFr ZSBvdmVyCj4gKyAgICAgICAgKiBmcm9tIHZnYWNvbiAoYnV0IG9ubHkgaWYgdmdhY29uIGlzIHJl YWxseSBpbiB1c2UpLCBmb2xsb3dlZCBieSBhCj4gKyAgICAgICAgKiBkZXJlZ2lzdHJhdGlvbiBv ZiB2Z2Fjb24uIE5vdGUgdGhhdCB0aGlzIHByZXZlbnRzIHZnYWNvbiBmcm9tIGJlaW5nCj4gKyAg ICAgICAgKiB1c2VkIGFnYWluIGFmdGVyIHRoZSBHRlggZHJpdmVyIGlzIHVubG9hZGVkLiBCdXQg dGhhdCBpcyB1c3VhbGx5Cj4gKyAgICAgICAgKiBmaW5lLCBzaW5jZSBWR0Egc3RhdGUgaXMgcmFy ZWx5IHJlc3RvcmVkIG9uIGRyaXZlci11bmxvYWQsIGFueXdheS4KPiArICAgICAgICAqCj4gKyAg ICAgICAgKiBOb3RlIHRoYXQgd2UgcmVseSBvbiBWR0FDT04gdG8gYmUgcHJvYmVkIGluIGVhcmx5 IGJvb3QgKGFjdHVhbGx5Cj4gKyAgICAgICAgKiBkb25lIGJ5IEFSQ0ggc2V0dXAgY29kZSkuIElm IGl0IGlzIHByb2JlZCBhZnRlciBHRlggZHJpdmVycywgdGhpcwo+ICsgICAgICAgICogd2lsbCBm YWlsIGhvcnJpYmx5LiBZb3UgYmV0dGVyIG1ha2Ugc3VyZSBWR0FDT04gaXMgcHJvYmVkIGVhcmx5 IGFuZAo+ICsgICAgICAgICogR0ZYIGRyaXZlcnMgYXJlIHByb2JlZCBhcyBub3JtYWwgbW9kdWxl cy4KPiArICAgICAgICAqLwo+ICsKPiArICAgICAgIGludCByZXQgPSAwOwo+ICsKPiArI2lmZGVm IENPTkZJR19WR0FfQ09OU09MRQo+ICsgICAgICAgY29uc29sZV9sb2NrKCk7Cj4gKyAgICAgICBp ZiAoY29uX2lzX2JvdW5kKCZ2Z2FfY29uKSkKPiArICAgICAgICAgICAgICAgcmV0ID0gZG9fdGFr ZV9vdmVyX2NvbnNvbGUoJmR1bW15X2NvbiwgMCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUFYX05SX0NPTlNPTEVTIC0gMSwgMSk7Cj4gKyAgICAgICBpZiAo cmV0ID09IDApIHsKPiArICAgICAgICAgICAgICAgcmV0ID0gZG9fdW5yZWdpc3Rlcl9jb25fZHJp dmVyKCZ2Z2FfY29uKTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCA9PSAtRU5PREVWKSAvKiBp Z25vcmUgImFscmVhZHkgdW5yZWdpc3RlcmVkIiAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldCA9IDA7Cj4gKyAgICAgICB9Cj4gKyAgICAgICBjb25zb2xlX3VubG9jaygpOwo+ICsjZW5k aWYKPiArCj4gKyAgICAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKioKPiArICogc3lzZmJf ZXZpY3RfY29uZmxpY3RzIC0gcmVtb3ZlIGFueSBjb25mbGljdGluZyBzeXN0ZW0tZnJhbWVidWZm ZXJzCj4gKyAqIEBjdHg6ICAgICAgICAgICAgICAgZXZpY3Rpb24gY29udGV4dAo+ICsgKgo+ICsg KiBUaGlzIGZ1bmN0aW9uIGV2aWN0cyBhbnkgY29uZmxpY3Rpbmcgc3lzdGVtLWZyYW1lYnVmZmVy cyBhbmQgdGhlaXIgYm91bmQKPiArICogZHJpdmVycywgYWNjb3JkaW5nIHRvIHRoZSBkYXRhIGdp dmVuIGluIEBjdHguCj4gKyAqCj4gKyAqIERlcGVuZGluZyBvbiBAY3R4LT5mbGFncywgdGhlIGZv bGxvd2luZyBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQ6Cj4gKyAqCj4gKyAqICAgU1lTRkJfRVZJ Q1RfUExBVEZPUk06IEZpcm13YXJlIGZyYW1lYnVmZmVyIHBsYXRmb3JtIGRldmljZXMgKGVnLiwK PiArICogICAgICAgICAgICAgICAgICAgICAgICAgJ3NpbXBsZS1mcmFtZWJ1ZmZlcicpIHRoYXQg b3ZlcmxhcCBAY3R4IGFyZSByZW1vdmVkCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgIGZy b20gdGhlIHN5c3RlbSwgY2F1c2luZyBkcml2ZXJzIHRvIGJlIHVuYm91bmQuCj4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgIElmIFNZU0ZCX0VWSUNUX1ZCRSBpcyBnaXZlbiwgdGhpcyBhbHNv IGFmZmVjdHMKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyB0aGF0IG93biB0 aGUgVkdBIHJlZ2lvbi4KPiArICoKPiArICogICBTWVNGQl9FVklDVF9GQkRFVjogQW55IGZpcm13 YXJlIGZiZGV2IGRyaXZlcnMgdGhhdCBvdmVybGFwIEBjdHggYXJlCj4gKyAqICAgICAgICAgICAg ICAgICAgICAgIHVubG9hZGVkLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9y ZSwgaWYgU1lTRkJfRVZJQ1RfVkJFIGlzIGdpdmVuIGFzIHdlbGwsIGFueQo+ICsgKiAgICAgICAg ICAgICAgICAgICAgICBmYmRldiBkcml2ZXIgdGhhdCBtYXBzIHRoZSBWR0EgcmVnaW9uIGlzIHVu bG9hZGVkLgo+ICsgKgo+ICsgKiAgIFNZU0ZCX0VWSUNUX1ZHQUNPTjogVGhlIHZnYWNvbiBjb25z b2xlIGRyaXZlciBpcyB1bmJvdW5kIGFuZCB1bnJlZ2lzdGVyZWQuCj4gKyAqCj4gKyAqIFRoaXMg bWlnaHQgY2FsbCBpbnRvIGZiZGV2IGRyaXZlciB1bnJlZ2lzdHJhdGlvbiwgb3IgZXZlbiBkZXZp Y2VfZGVsKCkgb24KPiArICogc29tZSBidXNlcy4gSGVuY2UsIG1ha2Ugc3VyZSB5b3UgY2FsbCB0 aGlzIGZyb20geW91ciB0b3AtbGV2ZWwKPiArICogcHJvYmUtY2FsbGJhY2tzLCByYXRoZXIgdGhh biB3aXRoIGFueSBnZngtc3Vic3lzdGVtIGxvY2tzIGhlbGQuCj4gKyAqCj4gKyAqIFJFVFVSTlM6 Cj4gKyAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsg Ki8KPiAraW50IHN5c2ZiX2V2aWN0X2NvbmZsaWN0cyhzdHJ1Y3Qgc3lzZmJfZXZpY3RfY3R4ICpj dHgpCj4gK3sKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgaWYgKFdBUk5fT04oIWN0 eCB8fCAhY3R4LT5hcCkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiAr ICAgICAgIHByX2luZm8oInJlbW92aW5nIGNvbmZsaWN0cyAoc3lzZmIlcyVzJXMlcylcbiIsCj4g KyAgICAgICAgICAgICAgIChjdHgtPmZsYWdzICYgU1lTRkJfRVZJQ1RfUExBVEZPUk0pID8gIiwg cGxhdGZvcm0iIDogIiIsCj4gKyAgICAgICAgICAgICAgIChjdHgtPmZsYWdzICYgU1lTRkJfRVZJ Q1RfRkJERVYpID8gIiwgZmJkZXYiIDogIiIsCj4gKyAgICAgICAgICAgICAgIChjdHgtPmZsYWdz ICYgU1lTRkJfRVZJQ1RfVkdBQ09OKSA/ICIsIHZnYWNvbiIgOiAiIiwKPiArICAgICAgICAgICAg ICAgKGN0eC0+ZmxhZ3MgJiBTWVNGQl9FVklDVF9WQkUpID8gIiwgdmJlIiA6ICIiKTsKPiArCj4g KyAgICAgICBpZiAoY3R4LT5mbGFncyAmIFNZU0ZCX0VWSUNUX1BMQVRGT1JNKSB7Cj4gKyAgICAg ICAgICAgICAgIHJldCA9IHN5c2ZiX2V2aWN0X3BsYXRmb3JtKGN0eCk7Cj4gKyAgICAgICAgICAg ICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g KyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGN0eC0+ZmxhZ3MgJiBTWVNGQl9FVklDVF9GQkRF Vikgewo+ICsgICAgICAgICAgICAgICByZXQgPSBzeXNmYl9ldmljdF9mYmRldihjdHgpOwo+ICsg ICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChjdHgtPmZsYWdzICYgU1lTRkJf RVZJQ1RfVkdBQ09OKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IHN5c2ZiX2V2aWN0X3ZnYWNv bihjdHgpOwo+ICsgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gK0VYUE9SVF9TWU1CT0woc3lzZmJfZXZpY3RfY29uZmxpY3RzKTsKPiArCj4gKy8qKgo+ ICsgKiBzeXNmYl9ldmljdF9jb25mbGljdHNfZmlybXdhcmUoKSAtIHJlbW92ZSBhbGwgZmlybXdh cmUgZnJhbWVidWZmZXJzCj4gKyAqCj4gKyAqIFRoaXMgaXMgc2ltaWxhciB0byBzeXNmYl9ldmlj dF9jb25mbGljdHMoKSBidXQgdXNlcyBhIGZha2UgYXBlcnR1cmUgc3Bhbm5pbmcKPiArICogdGhl IGVudGlyZSBhZGRyZXNzLXNwYWNlLiBUaGlzIGlzIHN1aXRhYmxlIGZvciBhbnkgR0ZYIGRyaXZl ciB0aGF0IGp1c3QKPiArICogd2FudHMgdG8gZ2V0IHJpZCBvZiBhbGwgYXZhaWxhYmxlIGZpcm13 YXJlIGZyYW1lYnVmZmVycy4KPiArICoKPiArICogUkVUVVJOUzoKPiArICogMCBvbiBzdWNjZXNz LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgc3lzZmJfZXZp Y3RfY29uZmxpY3RzX2Zpcm13YXJlKHZvaWQpCj4gK3sKPiArICAgICAgIHN0cnVjdCBzeXNmYl9l dmljdF9jdHggY3R4ID0ge307Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGN0eC5h cCA9IGFsbG9jX2FwZXJ0dXJlcygxKTsKPiArICAgICAgIGlmICghY3R4LmFwKQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBjdHguYXAtPnJhbmdlc1swXS5i YXNlID0gMDsKPiArICAgICAgIGN0eC5hcC0+cmFuZ2VzWzBdLnNpemUgPSB+MDsKPiArCj4gKyAg ICAgICBjdHguZmxhZ3MgfD0gU1lTRkJfRVZJQ1RfRkJERVYgfCBTWVNGQl9FVklDVF9QTEFURk9S TTsKPiArICAgICAgIHJldCA9IHN5c2ZiX2V2aWN0X2NvbmZsaWN0cygmY3R4KTsKPiArCj4gKyAg ICAgICBrZnJlZShjdHguYXApOwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiArfQo+ICtFWFBPUlRf U1lNQk9MKHN5c2ZiX2V2aWN0X2NvbmZsaWN0c19maXJtd2FyZSk7Cj4gKwo+ICsjaWZkZWYgQ09O RklHX1BDSQo+ICsvKioKPiArICogc3lzZmJfZXZpY3RfY29uZmxpY3RzX3BjaSgpIC0gcmVtb3Zl IGFsbCBzeXN0ZW0gZnJhbWVidWZmZXJzIGNvbmZsaWN0aW5nCj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdpdGggdGhlIGdpdmVuIHBjaSBkZXZpY2UKPiArICogQHBkZXY6ICAg ICAgICAgICAgICBwY2kgZGV2aWNlCj4gKyAqCj4gKyAqIFRoaXMgaXMgc2ltaWxhciB0byBzeXNm Yl9ldmljdF9jb25mbGljdHMoKSBidXQgZ2VuZXJhdGVzIHRoZSBldmljdGlvbgo+ICsgKiBjb250 ZXh0IGJhc2VkIG9uIHRoZSBnaXZlbiBwY2kgZGV2aWNlIEBwZGV2Lgo+ICsgKgo+ICsgKiBSRVRV Uk5TOgo+ICsgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4K PiArICovCj4gK2ludCBzeXNmYl9ldmljdF9jb25mbGljdHNfcGNpKHN0cnVjdCBwY2lfZGV2ICpw ZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qgc3lzZmJfZXZpY3RfY3R4IGN0eCA9IHt9Owo+ICsg ICAgICAgc2l6ZV90IGksIG4sIG9mZnNldDsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAg ICAgLyoKPiArICAgICAgICAqIElmIHRoaXMgZGV2aWNlIGlzIHVzZWQgYXMgcHJpbWFyeSBWR0Eg ZGV2aWNlLCBpdCBpcyBzaGFkb3dlZCBhdCB0aGUKPiArICAgICAgICAqIFZCRSBiYXNlIGFkZHJl c3MsIHNvIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGl0IGluIHRoZSBhcGVydHVyZXMuCj4gKyAgICAg ICAgKi8KPiArICAgICAgIGlmIChwZGV2LT5yZXNvdXJjZVtQQ0lfUk9NX1JFU09VUkNFXS5mbGFn cyAmIElPUkVTT1VSQ0VfUk9NX1NIQURPVykKPiArICAgICAgICAgICAgICAgY3R4LmZsYWdzIHw9 IFNZU0ZCX0VWSUNUX1ZCRTsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogSWYgYSBkZXZp Y2UgaXMgYSBWR0EgZGV2aWNlLCBtYWtlIHN1cmUgdG8ga2ljayBvdXQgdmdhY29uLiBXZSBjYW5u b3QKPiArICAgICAgICAqIHJlbHkgb24gdGhlIElPUkVTT1VSQ0VfUk9NX1NIQURPVywgc2luY2Ug dmdhY29uIGNhbiBzd2l0Y2ggYmV0d2Vlbgo+ICsgICAgICAgICogdmdhIGRldmljZXMgYXQgcnVu dGltZS4gU28ga2ljayBvdXQgdmdhY29uIGFueXdheS4KPiArICAgICAgICAqLwo+ICsgICAgICAg aWYgKChwZGV2LT5jbGFzcyA+PiA4KSA9PSBQQ0lfQ0xBU1NfRElTUExBWV9WR0EpCj4gKyAgICAg ICAgICAgICAgIGN0eC5mbGFncyB8PSBTWVNGQl9FVklDVF9WR0FDT047Cj4gKwo+ICsgICAgICAg LyoKPiArICAgICAgICAqIEFsbG9jYXRlIGFwZXJ0dXJlcyBmb3IgYWxsIHN0YW5kYXJkIFBDSSBy ZXNvdXJjZXMuIFNraXAgdGhlbSBpbiBjYXNlCj4gKyAgICAgICAgKiB0aGV5IGFyZSBlbXB0eS4K PiArICAgICAgICAqLwo+ICsgICAgICAgY3R4LmFwID0gYWxsb2NfYXBlcnR1cmVzKFBDSV9TVERf UkVTT1VSQ0VfRU5EIC0gUENJX1NURF9SRVNPVVJDRVMgKyAxKTsKPiArICAgICAgIGlmICghY3R4 LmFwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBvZmZz ZXQgPSBQQ0lfU1REX1JFU09VUkNFUzsKPiArICAgICAgIGZvciAobiA9IDAsIGkgPSAwOyBpIDwg Y3R4LmFwLT5jb3VudDsgKytpKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChwY2lfcmVzb3VyY2Vf bGVuKHBkZXYsIG9mZnNldCArIGkpIDwgMSkKPiArICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKPiArCj4gKyAgICAgICAgICAgICAgIGN0eC5hcC0+cmFuZ2VzW25dLmJhc2UgPSBwY2lf cmVzb3VyY2Vfc3RhcnQocGRldiwgb2Zmc2V0ICsgaSk7Cj4gKyAgICAgICAgICAgICAgIGN0eC5h cC0+cmFuZ2VzW25dLnNpemUgPSBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIG9mZnNldCArIGkpOwo+ ICsgICAgICAgICAgICAgICArK247Cj4gKyAgICAgICB9Cj4gKyAgICAgICBjdHguYXAtPmNvdW50 ID0gbjsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogRXZpY3QgYWxsIG1hdGNoaW5nIGZi ZGV2IGRldmljZXMsIFZCRSBkZXZpY2VzIGlmIHRoZXkgc2hhZG93IHRoaXMKPiArICAgICAgICAq IGRldmljZSwgdmdhY29uIGlmIHRoaXMgaXMgYSB2Z2EgZGV2aWNlLCBhbmQgcGxhdGZvcm0gZGV2 aWNlcyBpZiB0aGV5Cj4gKyAgICAgICAgKiBtYXRjaC4KPiArICAgICAgICAqLwo+ICsgICAgICAg Y3R4LmZsYWdzIHw9IFNZU0ZCX0VWSUNUX0ZCREVWIHwgU1lTRkJfRVZJQ1RfUExBVEZPUk07Cj4g KyAgICAgICByZXQgPSBzeXNmYl9ldmljdF9jb25mbGljdHMoJmN0eCk7Cj4gKwo+ICsgICAgICAg a2ZyZWUoY3R4LmFwKTsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJP TChzeXNmYl9ldmljdF9jb25mbGljdHNfcGNpKTsKPiArI2VuZGlmIC8qIENPTkZJR19QQ0kgKi8K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zeXNmYi5oIGIvaW5jbHVkZS9saW51eC9zeXNm Yi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5iNjdjNzRhCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvbGludXgvc3lzZmIuaAo+IEBAIC0wLDAgKzEsMzQg QEAKPiArI2lmbmRlZiBfX0xJTlVYX1NZU0ZCX0gKPiArI2RlZmluZSBfX0xJTlVYX1NZU0ZCX0gK PiArCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IFJlZCBIYXQsIEluYy4KPiAr ICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQo+ICsgKiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIKPiArICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4g Kwo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKwo+ICtzdHJ1Y3QgYXBlcnR1cmVzX3N0 cnVjdDsKPiArc3RydWN0IHBjaV9kZXY7Cj4gKwo+ICtlbnVtIHsKPiArICAgICAgIFNZU0ZCX0VW SUNUX1BMQVRGT1JNICAgICAgICAgICAgICAgICAgICA9ICgxVSA8PCAgMCksCj4gKyAgICAgICBT WVNGQl9FVklDVF9GQkRFViAgICAgICAgICAgICAgICAgICAgICAgPSAoMVUgPDwgIDEpLAo+ICsg ICAgICAgU1lTRkJfRVZJQ1RfVkdBQ09OICAgICAgICAgICAgICAgICAgICAgID0gKDFVIDw8ICAy KSwKPiArICAgICAgIFNZU0ZCX0VWSUNUX1ZCRSAgICAgICAgICAgICAgICAgICAgICAgICA9ICgx VSA8PCAgMyksCj4gK307Cj4gKwo+ICtzdHJ1Y3Qgc3lzZmJfZXZpY3RfY3R4IHsKPiArICAgICAg IHN0cnVjdCBhcGVydHVyZXNfc3RydWN0ICphcDsKPiArICAgICAgIHVuc2lnbmVkIGludCBmbGFn czsKPiArfTsKPiArCj4gK2ludCBzeXNmYl9ldmljdF9jb25mbGljdHMoc3RydWN0IHN5c2ZiX2V2 aWN0X2N0eCAqY3R4KTsKPiAraW50IHN5c2ZiX2V2aWN0X2NvbmZsaWN0c19maXJtd2FyZSh2b2lk KTsKPiAraW50IHN5c2ZiX2V2aWN0X2NvbmZsaWN0c19wY2koc3RydWN0IHBjaV9kZXYgKnBkZXYp Owo+ICsKPiArI2VuZGlmIC8qIF9fTElOVVhfU1lTRkJfSCAqLwo+IC0tCj4gMi45LjMKPgo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVs IG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK