From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Pitoiset Subject: Re: [PATCH RFC 05/20] pm: reorganize the nvif interface Date: Sun, 14 Jun 2015 13:54:22 +0200 Message-ID: <557D6B6E.3070107@gmail.com> References: <1433709630-3293-1-git-send-email-samuel.pitoiset@gmail.com> <1433709630-3293-6-git-send-email-samuel.pitoiset@gmail.com> <55776056.9010302@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Ben Skeggs Cc: "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: nouveau.vger.kernel.org CgpPbiAwNi8xNC8yMDE1IDA0OjMyIEFNLCBCZW4gU2tlZ2dzIHdyb3RlOgo+IE9uIDEwIEp1bmUg MjAxNSBhdCAwNzo1MywgU2FtdWVsIFBpdG9pc2V0IDxzYW11ZWwucGl0b2lzZXRAZ21haWwuY29t PiB3cm90ZToKPj4KPj4gT24gMDYvMDkvMjAxNSAxMjowMiBBTSwgQmVuIFNrZWdncyB3cm90ZToK Pj4+IE9uIDggSnVuZSAyMDE1IGF0IDA2OjQwLCBTYW11ZWwgUGl0b2lzZXQgPHNhbXVlbC5waXRv aXNldEBnbWFpbC5jb20+Cj4+PiB3cm90ZToKPj4+PiBUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIHRo ZSBOVklGX0lPQ1RMX05FV19WMF9QRVJGTU9OIGNsYXNzIHdoaWNoIHdpbGwgYmUKPj4+PiB1c2Vk IGluIG9yZGVyIHRvIHF1ZXJ5IGRvbWFpbnMsIHNpZ25hbHMgYW5kIHNvdXJjZXMuIFRoaXMgc2Vw YXJhdGVzIHRoZQo+Pj4+IHF1ZXJ5aW5nIGFuZCB0aGUgY291bnRpbmcgaW50ZXJmYWNlLgo+Pj4g SGV5IFNhbXVlbCwKPj4+Cj4+PiBJJ3ZlIG1lcmdlZCBwYXRjaGVzIDEtNCBhbHJlYWR5LCBJJ3Zl IGdvdCBzb21lIGNvbW1lbnRzIG9uIHRoaXMgb25lLAo+Pj4gYnV0IGFmdGVyIHRoZXkncmUgc29s dmVkIEknbSBoYXBweSB0byBtZXJnZSB1cCB0byAoYW5kIGluY2x1ZGluZykKPj4+IHBhdGNoIDE4 LiAgUGF0Y2hlcyAxOS8yMCwgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHNvbWUgbW9yZS4KPj4+Cj4+ IEhleSBCZW4sCj4+Cj4+IFRoYW5rcyBmb3IgcmV2aWV3aW5nIHRoaXMgc2VyaWVzIHNvIHF1aWNr bHkuIDotKQo+Pgo+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6IFNhbXVlbCBQaXRvaXNldCA8c2FtdWVs LnBpdG9pc2V0QGdtYWlsLmNvbT4KPj4+PiAtLS0KPj4+PiAgICBiaW4vbnZfcGVyZm1vbi5jICAg ICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KPj4+PiAgICBkcm0vbm91dmVhdS9pbmNs dWRlL252aWYvY2xhc3MuaCAgfCAyNiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+Pj4+ICAg IGRybS9ub3V2ZWF1L2luY2x1ZGUvbnZpZi9pb2N0bC5oICB8ICA1ICsrKy0tCj4+Pj4gICAgZHJt L25vdXZlYXUvbnZrbS9lbmdpbmUvcG0vYmFzZS5jIHwgMzgKPj4+PiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLQo+Pj4+ICAgIDQgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0 aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvYmluL252X3Bl cmZtb24uYyBiL2Jpbi9udl9wZXJmbW9uLmMKPj4+PiBpbmRleCBhOGM1ODM4Li4zMGEzMTM4IDEw MDY0NAo+Pj4+IC0tLSBhL2Jpbi9udl9wZXJmbW9uLmMKPj4+PiArKysgYi9iaW4vbnZfcGVyZm1v bi5jCj4+Pj4gQEAgLTYwMCw3ICs2MDAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK Pj4+PiAgICAgICAgICAgY29uc3QgY2hhciAqY2ZnID0gTlVMTDsKPj4+PiAgICAgICAgICAgY29u c3QgY2hhciAqZGJnID0gImVycm9yIjsKPj4+PiAgICAgICAgICAgdTY0IGRldiA9IH4wVUxMOwo+ Pj4+IC0gICAgICAgc3RydWN0IG52aWZfcGVyZmN0cl9xdWVyeV92MCBhcmdzID0ge307Cj4+Pj4g KyAgICAgICBzdHJ1Y3QgbnZpZl9wZXJmbW9uX3F1ZXJ5X3NpZ25hbF92MCBhcmdzID0ge307Cj4+ Pj4gICAgICAgICAgIHN0cnVjdCBudmlmX2NsaWVudCAqY2xpZW50Owo+Pj4+ICAgICAgICAgICBz dHJ1Y3QgbnZpZl9vYmplY3Qgb2JqZWN0Owo+Pj4+ICAgICAgICAgICBpbnQgcmV0LCBjLCBrOwo+ Pj4+IEBAIC02NDQsMTUgKzY0NCwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPj4+ PiAgICAgICAgICAgfQo+Pj4+Cj4+Pj4gICAgICAgICAgIHJldCA9IG52aWZfb2JqZWN0X2luaXQo bnZpZl9vYmplY3QoZGV2aWNlKSwgTlVMTCwgMHhkZWFkYmVlZiwKPj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlZJRl9JT0NUTF9ORVdfVjBfUEVSRkNUUiwKPj4+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJihzdHJ1Y3QgbnZpZl9wZXJmY3RyX3YwKSB7Cj4+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpemVvZihzdHJ1Y3QgbnZpZl9wZXJm Y3RyX3YwKSwKPj4+PiAmb2JqZWN0KTsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlZJRl9JT0NUTF9ORVdfVjBfUEVSRk1PTiwgTlVMTCwgMCwKPj4+PiAmb2JqZWN0KTsKPj4+ PiAgICAgICAgICAgYXNzZXJ0KHJldCA9PSAwKTsKPj4+PiAgICAgICAgICAgZG8gewo+Pj4+ICAg ICAgICAgICAgICAgICAgIHUzMiBwcmV2X2l0ZXIgPSBhcmdzLml0ZXI7Cj4+Pj4KPj4+PiAgICAg ICAgICAgICAgICAgICBhcmdzLm5hbWVbMF0gPSAnXDAnOwo+Pj4+IC0gICAgICAgICAgICAgICBy ZXQgPSBudmlmX210aGQoJm9iamVjdCwgTlZJRl9QRVJGQ1RSX1YwX1FVRVJZLCAmYXJncywKPj4+ PiBzaXplb2YoYXJncykpOwo+Pj4+ICsgICAgICAgICAgICAgICByZXQgPSBudmlmX210aGQoJm9i amVjdCwgTlZJRl9QRVJGTU9OX1YwX1FVRVJZX1NJR05BTCwKPj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZhcmdzLCBzaXplb2YoYXJncykpOwo+Pj4+ICAgICAgICAgICAgICAg ICAgIGFzc2VydChyZXQgPT0gMCk7Cj4+Pj4KPj4+PiAgICAgICAgICAgICAgICAgICBpZiAocHJl dl9pdGVyKSB7Cj4+Pj4gQEAgLTY2Myw3ICs2NjIsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuaXRlciA9IHByZXZfaXRl cjsKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm5jcHkoc2lnbmFsc1tucl9zaWdu YWxzIC0gMV0sIGFyZ3MubmFtZSwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGFyZ3MubmFtZSkpOwo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldCA9 IG52aWZfbXRoZCgmb2JqZWN0LCBOVklGX1BFUkZDVFJfVjBfUVVFUlksCj4+Pj4gJmFyZ3MsIHNp emVvZihhcmdzKSk7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gbnZpZl9tdGhk KCZvYmplY3QsCj4+Pj4gTlZJRl9QRVJGTU9OX1YwX1FVRVJZX1NJR05BTCwKPj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3MsIHNpemVvZihhcmdzKSk7Cj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocmV0ID09IDApOwo+Pj4+ICAgICAg ICAgICAgICAgICAgIH0KPj4+PiAgICAgICAgICAgfSB3aGlsZSAoYXJncy5pdGVyICE9IDB4ZmZm ZmZmZmYpOwo+Pj4+IGRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9pbmNsdWRlL252aWYvY2xhc3Mu aAo+Pj4+IGIvZHJtL25vdXZlYXUvaW5jbHVkZS9udmlmL2NsYXNzLmgKPj4+PiBpbmRleCA2NGY4 YjJmLi4xMTkzNWEwIDEwMDY0NAo+Pj4+IC0tLSBhL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZpZi9j bGFzcy5oCj4+Pj4gKysrIGIvZHJtL25vdXZlYXUvaW5jbHVkZS9udmlmL2NsYXNzLmgKPj4+PiBA QCAtMjUxLDYgKzI1MSwyMCBAQCBzdHJ1Y3QgZ2YxMTBfZG1hX3YwIHsKPj4+PiAgICAgKiBwZXJm bW9uCj4+Pj4KPj4+PiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4+Pj4KPj4+PiArI2RlZmluZSBO VklGX1BFUkZNT05fVjBfUVVFUllfU0lHTkFMCj4+Pj4gMHgwMAo+Pj4+ICsKPj4+PiArc3RydWN0 IG52aWZfcGVyZm1vbl9xdWVyeV9zaWduYWxfdjAgewo+Pj4+ICsgICAgICAgX191OCAgdmVyc2lv bjsKPj4+PiArICAgICAgIF9fdTggIHBhZDAxWzNdOwo+Pj4+ICsgICAgICAgX191MzIgaXRlcjsK Pj4+PiArICAgICAgIGNoYXIgIG5hbWVbNjRdOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArCj4+Pj4K Pj4+PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+PiArICogcGVyZmN0cgo+Pj4+ICsKPj4+ PiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCj4+Pj4gKwo+Pj4+ICAgIHN0cnVjdCBudmlmX3BlcmZj dHJfdjAgewo+Pj4+ICAgICAgICAgICBfX3U4ICB2ZXJzaW9uOwo+Pj4+ICAgICAgICAgICBfX3U4 ICBwYWQwMVsxXTsKPj4+PiBAQCAtMjU5LDE2ICsyNzMsOCBAQCBzdHJ1Y3QgbnZpZl9wZXJmY3Ry X3YwIHsKPj4+PiAgICAgICAgICAgY2hhciAgbmFtZVs0XVs2NF07Cj4+Pj4gICAgfTsKPj4+Pgo+ Pj4+IC0jZGVmaW5lIE5WSUZfUEVSRkNUUl9WMF9RVUVSWQo+Pj4+IDB4MDAKPj4+PiAtI2RlZmlu ZSBOVklGX1BFUkZDVFJfVjBfU0FNUExFCj4+Pj4gMHgwMQo+Pj4+IC0jZGVmaW5lIE5WSUZfUEVS RkNUUl9WMF9SRUFECj4+Pj4gMHgwMgo+Pj4+IC0KPj4+PiAtc3RydWN0IG52aWZfcGVyZmN0cl9x dWVyeV92MCB7Cj4+Pj4gLSAgICAgICBfX3U4ICB2ZXJzaW9uOwo+Pj4+IC0gICAgICAgX191OCAg cGFkMDFbM107Cj4+Pj4gLSAgICAgICBfX3UzMiBpdGVyOwo+Pj4+IC0gICAgICAgY2hhciAgbmFt ZVs2NF07Cj4+Pj4gLX07Cj4+Pj4gKyNkZWZpbmUgTlZJRl9QRVJGQ1RSX1YwX1NBTVBMRQo+Pj4+ IDB4MDAKPj4+PiArI2RlZmluZSBOVklGX1BFUkZDVFJfVjBfUkVBRAo+Pj4+IDB4MDEKPj4+Pgo+ Pj4+ICAgIHN0cnVjdCBudmlmX3BlcmZjdHJfc2FtcGxlIHsKPj4+PiAgICB9Owo+Pj4+IGRpZmYg LS1naXQgYS9kcm0vbm91dmVhdS9pbmNsdWRlL252aWYvaW9jdGwuaAo+Pj4+IGIvZHJtL25vdXZl YXUvaW5jbHVkZS9udmlmL2lvY3RsLmgKPj4+PiBpbmRleCA0Y2Q4ZTMyLi41MTdjZDI3IDEwMDY0 NAo+Pj4+IC0tLSBhL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZpZi9pb2N0bC5oCj4+Pj4gKysrIGIv ZHJtL25vdXZlYXUvaW5jbHVkZS9udmlmL2lvY3RsLmgKPj4+PiBAQCAtNDksOCArNDksOSBAQCBz dHJ1Y3QgbnZpZl9pb2N0bF9uZXdfdjAgewo+Pj4+ICAgICAgICAgICBfX3U2NCB0b2tlbjsKPj4+ PiAgICAgICAgICAgX191MzIgaGFuZGxlOwo+Pj4+ICAgIC8qIHRoZXNlIGNsYXNzIG51bWJlcnMg YXJlIG1hZGUgdXAgYnkgdXMsIGFuZCBub3QgbnZpZGlhLWFzc2lnbmVkICovCj4+Pj4gLSNkZWZp bmUgTlZJRl9JT0NUTF9ORVdfVjBfUEVSRkNUUgo+Pj4+IDB4MDAwMGZmZmYKPj4+PiAtI2RlZmlu ZSBOVklGX0lPQ1RMX05FV19WMF9DT05UUk9MCj4+Pj4gMHgwMDAwZmZmZQo+Pj4+ICsjZGVmaW5l IE5WSUZfSU9DVExfTkVXX1YwX1BFUkZNT04KPj4+PiAweDAwMDBmZmZmCj4+Pj4gKyNkZWZpbmUg TlZJRl9JT0NUTF9ORVdfVjBfUEVSRkNUUgo+Pj4+IDB4MDAwMGZmZmUKPj4+PiArI2RlZmluZSBO VklGX0lPQ1RMX05FV19WMF9DT05UUk9MCj4+Pj4gMHgwMDAwZmZmZAo+Pj4gSXQgZG9lc24ndCBt YXR0ZXIgdGhpcyB0aW1lLCBiZWNhdXNlIHdlJ3JlIHRlY2huaWNhbGx5IGJyZWFraW5nIEFCSQo+ Pj4gYWxyZWFkeSBhbnl3YXkgYW5kIGN1cnJlbnQgdXNlcnNwYWNlIHdvbid0IGJlIGVmZmVjdGVk LCBidXQgYmVzdCB0bwo+Pj4gYXZvaWQgY2hhbmdpbmcgY2xhc3MgbnVtYmVycyBsaWtlIHRoaXMg OikgIEl0J3MgZmluZSB0aGlzIHRpbWUgdGhvdWdoLgo+Pgo+PiBTdXJlLCBzaW5jZSB0aGUgbnZp ZiBpbnRlcmZhY2UgaXMgc3RpbGwgbm90IGV4cG9zZWQgdGhyb3VnaCBsaWJkcm0sIHRoaXMgaXMK Pj4gbm90IGdvaW5nIHRvIGFmZmVjdCB1c2Vyc3BhY2UuCj4+IEJ0dywgd2hhdCBpcyB5b3VyIHBs YW4gYWJvdXQgdGhpcz8gQXJlIHlvdSBnb2luZyB0byBtZXJnZSBudmlmIHN1cHBvcnQgdG8KPj4g bGliZHJtID8KPiBXZWxsLCBJbGlhIGhhc24ndCBxdWl0ZSByZXZpZXdlZCB0aGUgcGF0Y2hlcyB5 ZXQgc3RpbGwgOykgIEJ1dCwgeW91J3ZlCj4gYmVlbiB1c2luZyB0aGVtIHN1Y2Nlc3NmdWxseSBz byBmYXIsIHNvIHRoYXQgY291bnRzIGFzIHJldmlldy4KPgo+IEkgaGF2ZSBzb21lIGNoYW5nZXMg dGhhdCBJIGhhdmVuJ3QgcXVpdGUgcHVzaGVkIHlldCB0aGF0J2xsIG5lZWQgc29tZQo+IHNsaWdo dCByZS1qaWdnaW5nIG9mIHRoZSBsaWJkcm0gc2VyaWVzLCBidXQgSSdsbCBwdXNoIHRvIG1lcmdl IGl0Cj4gKGZpbmFsbHkpIG9uY2UgdGhhdCdzIGRvbmUuCgpTb3VuZHMgZ29vZCB0byBtZS4gOi0p Cgo+Cj4+Cj4+Pj4gICAgICAgICAgIF9fdTMyIG9jbGFzczsKPj4+PiAgICAgICAgICAgX191OCAg ZGF0YVtdOyAgICAgICAgICAgLyogY2xhc3MgZGF0YSAoY2xhc3MuaCkgKi8KPj4+PiAgICB9Owo+ Pj4+IGRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9wbS9iYXNlLmMKPj4+PiBi L2RybS9ub3V2ZWF1L252a20vZW5naW5lL3BtL2Jhc2UuYwo+Pj4+IGluZGV4IDdiMDdlOGIuLmNi ODgxNzAgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvcG0vYmFzZS5j Cj4+Pj4gKysrIGIvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvcG0vYmFzZS5jCj4+Pj4gQEAgLTgz LDEwICs4MywxMCBAQCBudmttX3BlcmZzaWdfZmluZChzdHJ1Y3QgbnZrbV9wbSAqcHBtLCBjb25z dCBjaGFyCj4+Pj4gKm5hbWUsIHUzMiBzaXplLAo+Pj4+ICAgICAqIFBlcmZtb24gb2JqZWN0IGNs YXNzZXMKPj4+Pgo+Pj4+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPj4+PiAgICBzdGF0aWMgaW50 Cj4+Pj4gLW52a21fcGVyZmN0cl9xdWVyeShzdHJ1Y3QgbnZrbV9vYmplY3QgKm9iamVjdCwgdm9p ZCAqZGF0YSwgdTMyIHNpemUpCj4+Pj4gK252a21fcGVyZm1vbl9tdGhkX3F1ZXJ5X3NpZ25hbChz dHJ1Y3QgbnZrbV9vYmplY3QgKm9iamVjdCwgdm9pZCAqZGF0YSwKPj4+PiB1MzIgc2l6ZSkKPj4+ PiAgICB7Cj4+Pj4gICAgICAgICAgIHVuaW9uIHsKPj4+PiAtICAgICAgICAgICAgICAgc3RydWN0 IG52aWZfcGVyZmN0cl9xdWVyeV92MCB2MDsKPj4+PiArICAgICAgICAgICAgICAgc3RydWN0IG52 aWZfcGVyZm1vbl9xdWVyeV9zaWduYWxfdjAgdjA7Cj4+Pj4gICAgICAgICAgIH0gKmFyZ3MgPSBk YXRhOwo+Pj4+ICAgICAgICAgICBzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSA9IG52X2Rldmlj ZShvYmplY3QpOwo+Pj4+ICAgICAgICAgICBzdHJ1Y3QgbnZrbV9wbSAqcHBtID0gKHZvaWQgKilv YmplY3QtPmVuZ2luZTsKPj4+PiBAQCAtOTcsOSArOTcsOSBAQCBudmttX3BlcmZjdHJfcXVlcnko c3RydWN0IG52a21fb2JqZWN0ICpvYmplY3QsIHZvaWQKPj4+PiAqZGF0YSwgdTMyIHNpemUpCj4+ Pj4gICAgICAgICAgIGludCB0bXAgPSAwLCBkaSwgc2k7Cj4+Pj4gICAgICAgICAgIGludCByZXQ7 Cj4+Pj4KPj4+PiAtICAgICAgIG52X2lvY3RsKG9iamVjdCwgInBlcmZjdHIgcXVlcnkgc2l6ZSAl ZFxuIiwgc2l6ZSk7Cj4+Pj4gKyAgICAgICBudl9pb2N0bChvYmplY3QsICJwZXJmbW9uIHF1ZXJ5 IHNpZ25hbCBzaXplICVkXG4iLCBzaXplKTsKPj4+PiAgICAgICAgICAgaWYgKG52aWZfdW5wYWNr KGFyZ3MtPnYwLCAwLCAwLCBmYWxzZSkpIHsKPj4+PiAtICAgICAgICAgICAgICAgbnZfaW9jdGwo b2JqZWN0LCAicGVyZmN0ciBxdWVyeSB2ZXJzICVkIGl0ZXIgJTA4eFxuIiwKPj4+PiArICAgICAg ICAgICAgICAgbnZfaW9jdGwob2JqZWN0LCAicGVyZm1vbiBxdWVyeSBzaWduYWwgdmVycyAlZCBp dGVyCj4+Pj4gJTA4eFxuIiwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT52 MC52ZXJzaW9uLCBhcmdzLT52MC5pdGVyKTsKPj4+PiAgICAgICAgICAgICAgICAgICBkaSA9IChh cmdzLT52MC5pdGVyICYgMHhmZjAwMDAwMCkgPj4gMjQ7Cj4+Pj4gICAgICAgICAgICAgICAgICAg c2kgPSAoYXJncy0+djAuaXRlciAmIDB4MDBmZmZmZmYpIC0gMTsKPj4+PiBAQCAtMTQyLDYgKzE0 MiwzMCBAQCBudmttX3BlcmZjdHJfcXVlcnkoc3RydWN0IG52a21fb2JqZWN0ICpvYmplY3QsIHZv aWQKPj4+PiAqZGF0YSwgdTMyIHNpemUpCj4+Pj4gICAgfQo+Pj4+Cj4+Pj4gICAgc3RhdGljIGlu dAo+Pj4+ICtudmttX3BlcmZtb25fbXRoZChzdHJ1Y3QgbnZrbV9vYmplY3QgKm9iamVjdCwgdTMy IG10aGQsIHZvaWQgKmRhdGEsIHUzMgo+Pj4+IHNpemUpCj4+Pj4gK3sKPj4+PiArICAgICAgIHN3 aXRjaCAobXRoZCkgewo+Pj4+ICsgICAgICAgY2FzZSBOVklGX1BFUkZNT05fVjBfUVVFUllfU0lH TkFMOgo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gbnZrbV9wZXJmbW9uX210aGRfcXVlcnlf c2lnbmFsKG9iamVjdCwgZGF0YSwKPj4+PiBzaXplKTsKPj4+PiArICAgICAgIGRlZmF1bHQ6Cj4+ Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgfQo+Pj4+ICsgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgbnZrbV9vZnVu Y3MKPj4+PiArbnZrbV9wZXJmbW9uX29mdW5jcyA9IHsKPj4+PiArICAgICAgIC5jdG9yID0gX252 a21fb2JqZWN0X2N0b3IsCj4+Pj4gKyAgICAgICAuZHRvciA9IG52a21fb2JqZWN0X2Rlc3Ryb3ks Cj4+Pj4gKyAgICAgICAuaW5pdCA9IG52a21fb2JqZWN0X2luaXQsCj4+Pj4gKyAgICAgICAuZmlu aSA9IG52a21fb2JqZWN0X2ZpbmksCj4+Pj4gKyAgICAgICAubXRoZCA9IG52a21fcGVyZm1vbl9t dGhkLAo+Pj4+ICt9Owo+Pj4+ICsKPj4+Pgo+Pj4+ICsvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ Pj4+ICsgKiBQZXJmY3RyIG9iamVjdCBjbGFzc2VzCj4+Pj4gKwo+Pj4+ICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KPj4+PiArc3RhdGljIGludAo+Pj4+ICAgIG52a21fcGVyZmN0cl9zYW1wbGUoc3Ry dWN0IG52a21fb2JqZWN0ICpvYmplY3QsIHZvaWQgKmRhdGEsIHUzMiBzaXplKQo+Pj4+ICAgIHsK Pj4+PiAgICAgICAgICAgdW5pb24gewo+Pj4+IEBAIC0yMjEsOCArMjQ1LDYgQEAgc3RhdGljIGlu dAo+Pj4+ICAgIG52a21fcGVyZmN0cl9tdGhkKHN0cnVjdCBudmttX29iamVjdCAqb2JqZWN0LCB1 MzIgbXRoZCwgdm9pZCAqZGF0YSwgdTMyCj4+Pj4gc2l6ZSkKPj4+PiAgICB7Cj4+Pj4gICAgICAg ICAgIHN3aXRjaCAobXRoZCkgewo+Pj4+IC0gICAgICAgY2FzZSBOVklGX1BFUkZDVFJfVjBfUVVF Ulk6Cj4+Pj4gLSAgICAgICAgICAgICAgIHJldHVybiBudmttX3BlcmZjdHJfcXVlcnkob2JqZWN0 LCBkYXRhLCBzaXplKTsKPj4+PiAgICAgICAgICAgY2FzZSBOVklGX1BFUkZDVFJfVjBfU0FNUExF Ogo+Pj4+ICAgICAgICAgICAgICAgICAgIHJldHVybiBudmttX3BlcmZjdHJfc2FtcGxlKG9iamVj dCwgZGF0YSwgc2l6ZSk7Cj4+Pj4gICAgICAgICAgIGNhc2UgTlZJRl9QRVJGQ1RSX1YwX1JFQUQ6 Cj4+Pj4gQEAgLTI5OSw2ICszMjEsMTAgQEAgbnZrbV9wZXJmY3RyX29mdW5jcyA9IHsKPj4+Pgo+ Pj4+ICAgIHN0cnVjdCBudmttX29jbGFzcwo+Pj4+ICAgIG52a21fcG1fc2NsYXNzW10gPSB7Cj4+ Pj4gKyAgICAgICB7Cj4+Pj4gKyAgICAgICAgIC5oYW5kbGUgPSBOVklGX0lPQ1RMX05FV19WMF9Q RVJGTU9OLAo+Pj4+ICsgICAgICAgICAub2Z1bmNzID0gJm52a21fcGVyZm1vbl9vZnVuY3MsCj4+ Pj4gKyAgICAgICB9LAo+Pj4+ICAgICAgICAgICB7IC5oYW5kbGUgPSBOVklGX0lPQ1RMX05FV19W MF9QRVJGQ1RSLAo+Pj4+ICAgICAgICAgICAgIC5vZnVuY3MgPSAmbnZrbV9wZXJmY3RyX29mdW5j cywKPj4+PiAgICAgICAgICAgfSwKPj4+IFdoYXQgSSdkIGxpa2UgdG8gc2VlIGhlcmUgaXMgdGhh dCBudmttX3BtX3NjbGFzcygpIG9ubHkgaGFzIFBFUkZNT04sCj4+PiBhbmQgUEVSRkNUUiBpcyBj cmVhdGVkIGFzIGEgY2hpbGQgb2YgaXQgKGxpa2UgaG93IGFsbCB0aGUgUERJU1AKPj4+IGNoYW5u ZWwgb2JqZWN0cyBhcmUgY2hpbGRyZW4gb2YgdGhlIG1haW4gZGlzcCBjbGFzcykuICBUbyBkbyB0 aGlzLCB5b3UKPj4+IG5lZWQgdG8gY3JlYXRlIFBFUkZNT04gYXMgYSBudmttX3BhcmVudCBpbnN0 ZWFkIG9mIGFuIG52a21fb2JqZWN0LCBhbmQKPj4+IGhhdmUgaXRzIHBhcmVudC5zY2xhc3MgY29u dGFpbiBQRVJGTU9OLiAgVGhpcyB3aWxsIHBlcmhhcHMgbG9vayBhIGJpdAo+Pj4geXVja3kgZm9y IHRoZSBtb21lbnQsIGJ1dCBJJ20gd29ya2luZyBvbiBtYWtpbmcgdGhpbmdzIGNsZWFuZXIgc28g SSdsbAo+Pj4gZml4IGl0IGxhdGVyLiAgRmVlbCBmcmVlIHRvIHBpbmcgbWUgb24gSVJDIGlmIHlv dSBuZWVkIGEgaGFuZCBtYWtpbmcKPj4+IHRoZSBjaGFuZ2UgdGhvdWdoLgo+Pj4KPj4+IEkgYWN0 dWFsbHkgaGF2ZSBhIGxhcmdlIHBhdGNoIHNlcmllcyB3aXRoIHRoZSBmaXJzdCBwYXJ0IG9mIHRo aXMKPj4+IGNsZWFudXAgd29yayBxdWV1ZWQgdXAsIGJ1dCBpZiB5b3UgY2FuIG1ha2UgdGhlIGFi b3ZlIGNoYW5nZSBmaXJzdCwKPj4+IEknbGwgcmViYXNlIG15IHdvcmsgb24geW91cnMgc28geW91 IGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoIHRoYXQuCj4+Cj4+IE9rYXksIEknbGwgdGFrZSBhIGxv b2sgYXQgdGhlIFBESVNQIGVuZ2luZSBhbmQgbWFrZSB0aGlzIGNoYW5nZSBmb3IgdGhlIFBNCj4+ IGVuZ2luZSB0aGlzIHdlZWsuCj4+IEFuZCBpZiBJIGhhdmUgc29tZSBvdGhlciBxdWVzdGlvbnMs IEknbGwgcGluZyB5b3Ugb24gSVJDLgo+IFNvbWUgd29yayBJJ3ZlIGdvdCBxdWV1ZWQgdXAgd291 bGQgY29uZmxpY3Qgd2l0aCB0aGVzZSwgc28gSSd2ZSBtZXJnZWQKPiB5b3VyIHBhdGNoZXMgYWhl YWQgb2YgdGltZSBhbmQgbWFkZSB0aGF0IGNoYW5nZSBteXNlbGYgdG8gYXZvaWQgeW91Cj4gaGF2 aW5nIHRvIHJlYmFzZSB5b3VyIHdob2xlIHNlcmllcy4gIEFueSBmaXhlcyBldGMgdGhhdCdkIGJl ZW4gZG9uZQo+IHNpbmNlIGNhbiBiZSBkb25lIGFzIHNlcGFyYXRlIHBhdGNoZXMgYmVmb3JlIGdv aW5nIHRvIExpbnVzLgoKV2VsbCwgSSBzdWJtaXR0ZWQgdHdvIHBhdGNoZXMgd2hpY2ggZml4IHNv bWUgbWlub3Igc3R1ZmYgdG8gdGhlIHNlcmllcy4KTGV0IG1ldCBrbm93IGlmIHRoZXkgYXJlIG9r YXkgZm9yIHlvdS4KCkJ5IHRoZSB3YXksIEkgYWxzbyBzdWJtaXR0ZWQgYSBwYXRjaCB3aGljaCBh ZGRzIGNvbXB1dGUgc2lnbmFscy9zb3VyY2VzIApvbiBGZXJtaS4KClRoYW5rcywKU2FtdWVsLgoK Pgo+IFRoYW5rcywKPiBCZW4uCj4KPj4gVGhhbmtzLAo+PiBTYW11ZWwuCj4+Cj4+Cj4+PiBUaGFu a3MsCj4+PiBCZW4uCj4+Pgo+Pj4+IC0tCj4+Pj4gMi40LjIKPj4+Pgo+Pj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4gTm91dmVhdSBtYWlsaW5n IGxpc3QKPj4+PiBOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cj4+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlz dApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=