From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vince Hsu Subject: Re: [RESEND PATCH nouveau 3/3] volt: add support for GK20A Date: Fri, 28 Nov 2014 19:57:55 +0800 Message-ID: <54786343.4000806@nvidia.com> References: <1417173180-21726-1-git-send-email-vinceh@nvidia.com> <1417173180-21726-3-git-send-email-vinceh@nvidia.com> <54785BBA.50800@nimrod-online.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <54785BBA.50800-FA6nBp6kBxZzu6KWmfFNGwC/G2K4zDHf@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Roy Spliet , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org SGkgUm95LAoKT24gMTEvMjgvMjAxNCAwNzoyNSBQTSwgUm95IFNwbGlldCB3cm90ZToKPiBIZWxs byBWaW5jZSwKPgo+IE9uZSBtaW5vciBxdWVzdGlvbiBpbmxpbmUuCj4KPiBPcCAyOC0xMS0xNCBv bSAxMjoxMyBzY2hyZWVmIFZpbmNlIEhzdToKPj4gVGhlIHZvbHRhZ2UgdmFsdWUgYXJlIGNhbGN1 bGF0ZWQgYnkgdGhlIGhhcmR3YXJlIGNoYXJhY3Rlcml6ZWQKPj4gcmVzdWx0Lgo+Pgo+PiBTaWdu ZWQtb2ZmLWJ5OiBWaW5jZSBIc3UgPHZpbmNlaEBudmlkaWEuY29tPgo+PiAtLS0KPj4KPj4gUmVz ZW5kIHRoaXMgcGF0Y2ggd2l0aCB0aGUgZnVzZSBjaGFuZ2UgYW5kIHByb3BlciBwYXRjaCBwcmVm aXgKPj4gcGVyIFRoaWVycnkncyByZXF1ZXN0Lgo+Pgo+PiAgIGRybS9LYnVpbGQgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+PiAgIGRybS9jb3JlL3N1YmRldi92b2x0L2drMjBhLmMgfCAgIDEg Kwo+PiAgIG52a20vZW5naW5lL2RldmljZS9udmUwLmMgICAgfCAgIDEgKwo+PiAgIG52a20vaW5j bHVkZS9zdWJkZXYvdm9sdC5oICAgfCAgIDEgKwo+PiAgIG52a20vc3ViZGV2L2Nsb2NrL2drMjBh LmMgICAgfCAgMTUgKysrKwo+PiAgIG52a20vc3ViZGV2L3ZvbHQvZ2syMGEuYyAgICAgfCAyMDIg Cj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gICA2IGZp bGVzIGNoYW5nZWQsIDIyMSBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRy bS9jb3JlL3N1YmRldi92b2x0L2drMjBhLmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbnZrbS9z dWJkZXYvdm9sdC9nazIwYS5jCj4+Cj4+IGRpZmYgLS1naXQgYS9kcm0vS2J1aWxkIGIvZHJtL0ti dWlsZAo+PiBpbmRleCA3MjhiYzViNjZiMjkuLjdjNDllNjY1NTA2NiAxMDA2NDQKPj4gLS0tIGEv ZHJtL0tidWlsZAo+PiArKysgYi9kcm0vS2J1aWxkCj4+IEBAIC0yMjUsNiArMjI1LDcgQEAgbm91 dmVhdS15ICs9IGNvcmUvc3ViZGV2L3ZtL252YzAubwo+PiAgIG5vdXZlYXUteSArPSBjb3JlL3N1 YmRldi92b2x0L2Jhc2Uubwo+PiAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L2dwaW8u bwo+PiAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L252NDAubwo+PiArbm91dmVhdS15 ICs9IGNvcmUvc3ViZGV2L3ZvbHQvZ2syMGEubwo+PiAgICAgbm91dmVhdS15ICs9IGNvcmUvZW5n aW5lL2ZhbGNvbi5vCj4+ICAgbm91dmVhdS15ICs9IGNvcmUvZW5naW5lL3h0ZW5zYS5vCj4+IGRp ZmYgLS1naXQgYS9kcm0vY29yZS9zdWJkZXYvdm9sdC9nazIwYS5jIGIvZHJtL2NvcmUvc3ViZGV2 L3ZvbHQvZ2syMGEuYwo+PiBuZXcgZmlsZSBtb2RlIDEyMDAwMAo+PiBpbmRleCAwMDAwMDAwMDAw MDAuLjI4OTRlYjFlZGUxMwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RybS9jb3JlL3N1YmRl di92b2x0L2drMjBhLmMKPj4gQEAgLTAsMCArMSBAQAo+PiArLi4vLi4vLi4vLi4vbnZrbS9zdWJk ZXYvdm9sdC9nazIwYS5jCj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+PiBkaWZmIC0t Z2l0IGEvbnZrbS9lbmdpbmUvZGV2aWNlL252ZTAuYyBiL252a20vZW5naW5lL2RldmljZS9udmUw LmMKPj4gaW5kZXggYjFiMmU0ODRlY2ZhLi42NzRkYTFmMDk1YjIgMTAwNjQ0Cj4+IC0tLSBhL252 a20vZW5naW5lL2RldmljZS9udmUwLmMKPj4gKysrIGIvbnZrbS9lbmdpbmUvZGV2aWNlL252ZTAu Ywo+PiBAQCAtMTc5LDYgKzE3OSw3IEBAIG52ZTBfaWRlbnRpZnkoc3RydWN0IG5vdXZlYXVfZGV2 aWNlICpkZXZpY2UpCj4+ICAgICAgICAgICBkZXZpY2UtPm9jbGFzc1tOVkRFVl9FTkdJTkVfR1Ig ICAgIF0gPSBnazIwYV9ncmFwaF9vY2xhc3M7Cj4+ICAgICAgICAgICBkZXZpY2UtPm9jbGFzc1tO VkRFVl9FTkdJTkVfQ09QWTIgIF0gPSAmbnZlMF9jb3B5Ml9vY2xhc3M7Cj4+ICAgICAgICAgICBk ZXZpY2UtPm9jbGFzc1tOVkRFVl9FTkdJTkVfUEVSRk1PTl0gPSAmbnZlMF9wZXJmbW9uX29jbGFz czsKPj4gKyAgICAgICAgZGV2aWNlLT5vY2xhc3NbTlZERVZfU1VCREVWX1ZPTFQgICBdID0gJmdr MjBhX3ZvbHRfb2NsYXNzOwo+PiAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgIGNhc2UgMHhmMDoK Pj4gICAgICAgICAgIGRldmljZS0+Y25hbWUgPSAiR0sxMTAiOwo+PiBkaWZmIC0tZ2l0IGEvbnZr bS9pbmNsdWRlL3N1YmRldi92b2x0LmggYi9udmttL2luY2x1ZGUvc3ViZGV2L3ZvbHQuaAo+PiBp bmRleCA4MjBiNjJmZmQ3NWIuLjY3ZGI1ZTU4ODgwZCAxMDA2NDQKPj4gLS0tIGEvbnZrbS9pbmNs dWRlL3N1YmRldi92b2x0LmgKPj4gKysrIGIvbnZrbS9pbmNsdWRlL3N1YmRldi92b2x0LmgKPj4g QEAgLTUyLDYgKzUyLDcgQEAgaW50ICBfbm91dmVhdV92b2x0X2luaXQoc3RydWN0IG5vdXZlYXVf b2JqZWN0ICopOwo+PiAgICNkZWZpbmUgX25vdXZlYXVfdm9sdF9maW5pIF9ub3V2ZWF1X3N1YmRl dl9maW5pCj4+ICAgICBleHRlcm4gc3RydWN0IG5vdXZlYXVfb2NsYXNzIG52NDBfdm9sdF9vY2xh c3M7Cj4+ICtleHRlcm4gc3RydWN0IG5vdXZlYXVfb2NsYXNzIGdrMjBhX3ZvbHRfb2NsYXNzOwo+ PiAgICAgaW50IG5vdXZlYXVfdm9sdGdwaW9faW5pdChzdHJ1Y3Qgbm91dmVhdV92b2x0ICopOwo+ PiAgIGludCBub3V2ZWF1X3ZvbHRncGlvX2dldChzdHJ1Y3Qgbm91dmVhdV92b2x0ICopOwo+PiBk aWZmIC0tZ2l0IGEvbnZrbS9zdWJkZXYvY2xvY2svZ2syMGEuYyBiL252a20vc3ViZGV2L2Nsb2Nr L2drMjBhLmMKPj4gaW5kZXggODJhYmJlYTJiZTEyLi5mYjRmYWQzNzRiZGQgMTAwNjQ0Cj4+IC0t LSBhL252a20vc3ViZGV2L2Nsb2NrL2drMjBhLmMKPj4gKysrIGIvbnZrbS9zdWJkZXYvY2xvY2sv Z2syMGEuYwo+PiBAQCAtNDcwLDc2ICs0NzAsOTEgQEAgZ2syMGFfcHN0YXRlc1tdID0gewo+PiAg ICAgICB7Cj4+ICAgICAgICAgICAuYmFzZSA9IHsKPj4gICAgICAgICAgICAgICAuZG9tYWluW252 X2Nsa19zcmNfZ3BjXSA9IDcyMDAwLAo+PiArICAgICAgICAgICAgLnZvbHRhZ2UgPSAwLAo+PiAg ICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICAgICAgewo+PiAgICAgICAgICAgLmJhc2UgPSB7 Cj4+ICAgICAgICAgICAgICAgLmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSAxMDgwMDAsCj4+ICsg ICAgICAgICAgICAudm9sdGFnZSA9IDEsCj4+ICAgICAgICAgICB9LAo+PiAgICAgICB9LAo+PiAg ICAgICB7Cj4+ICAgICAgICAgICAuYmFzZSA9IHsKPj4gICAgICAgICAgICAgICAuZG9tYWluW252 X2Nsa19zcmNfZ3BjXSA9IDE4MDAwMCwKPj4gKyAgICAgICAgICAgIC52b2x0YWdlID0gMiwKPj4g ICAgICAgICAgIH0sCj4+ICAgICAgIH0sCj4+ICAgICAgIHsKPj4gICAgICAgICAgIC5iYXNlID0g ewo+PiAgICAgICAgICAgICAgIC5kb21haW5bbnZfY2xrX3NyY19ncGNdID0gMjUyMDAwLAo+PiAr ICAgICAgICAgICAgLnZvbHRhZ2UgPSAzLAo+PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4g ICAgICAgewo+PiAgICAgICAgICAgLmJhc2UgPSB7Cj4+ICAgICAgICAgICAgICAgLmRvbWFpbltu dl9jbGtfc3JjX2dwY10gPSAzMjQwMDAsCj4+ICsgICAgICAgICAgICAudm9sdGFnZSA9IDQsCj4+ ICAgICAgICAgICB9LAo+PiAgICAgICB9LAo+PiAgICAgICB7Cj4+ICAgICAgICAgICAuYmFzZSA9 IHsKPj4gICAgICAgICAgICAgICAuZG9tYWluW252X2Nsa19zcmNfZ3BjXSA9IDM5NjAwMCwKPj4g KyAgICAgICAgICAgIC52b2x0YWdlID0gNSwKPj4gICAgICAgICAgIH0sCj4+ICAgICAgIH0sCj4+ ICAgICAgIHsKPj4gICAgICAgICAgIC5iYXNlID0gewo+PiAgICAgICAgICAgICAgIC5kb21haW5b bnZfY2xrX3NyY19ncGNdID0gNDY4MDAwLAo+PiArICAgICAgICAgICAgLnZvbHRhZ2UgPSA2LAo+ PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICAgICAgewo+PiAgICAgICAgICAgLmJhc2Ug PSB7Cj4+ICAgICAgICAgICAgICAgLmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA1NDAwMDAsCj4+ ICsgICAgICAgICAgICAudm9sdGFnZSA9IDcsCj4+ICAgICAgICAgICB9LAo+PiAgICAgICB9LAo+ PiAgICAgICB7Cj4+ICAgICAgICAgICAuYmFzZSA9IHsKPj4gICAgICAgICAgICAgICAuZG9tYWlu W252X2Nsa19zcmNfZ3BjXSA9IDYxMjAwMCwKPj4gKyAgICAgICAgICAgIC52b2x0YWdlID0gOCwK Pj4gICAgICAgICAgIH0sCj4+ICAgICAgIH0sCj4+ICAgICAgIHsKPj4gICAgICAgICAgIC5iYXNl ID0gewo+PiAgICAgICAgICAgICAgIC5kb21haW5bbnZfY2xrX3NyY19ncGNdID0gNjQ4MDAwLAo+ PiArICAgICAgICAgICAgLnZvbHRhZ2UgPSA5LAo+PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwK Pj4gICAgICAgewo+PiAgICAgICAgICAgLmJhc2UgPSB7Cj4+ICAgICAgICAgICAgICAgLmRvbWFp bltudl9jbGtfc3JjX2dwY10gPSA2ODQwMDAsCj4+ICsgICAgICAgICAgICAudm9sdGFnZSA9IDEw LAo+PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICAgICAgewo+PiAgICAgICAgICAgLmJh c2UgPSB7Cj4+ICAgICAgICAgICAgICAgLmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA3MDgwMDAs Cj4+ICsgICAgICAgICAgICAudm9sdGFnZSA9IDExLAo+PiAgICAgICAgICAgfSwKPj4gICAgICAg fSwKPj4gICAgICAgewo+PiAgICAgICAgICAgLmJhc2UgPSB7Cj4+ICAgICAgICAgICAgICAgLmRv bWFpbltudl9jbGtfc3JjX2dwY10gPSA3NTYwMDAsCj4+ICsgICAgICAgICAgICAudm9sdGFnZSA9 IDEyLAo+PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICAgICAgewo+PiAgICAgICAgICAg LmJhc2UgPSB7Cj4+ICAgICAgICAgICAgICAgLmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA4MDQw MDAsCj4+ICsgICAgICAgICAgICAudm9sdGFnZSA9IDEzLAo+PiAgICAgICAgICAgfSwKPj4gICAg ICAgfSwKPj4gICAgICAgewo+PiAgICAgICAgICAgLmJhc2UgPSB7Cj4+ICAgICAgICAgICAgICAg LmRvbWFpbltudl9jbGtfc3JjX2dwY10gPSA4NTIwMDAsCj4+ICsgICAgICAgICAgICAudm9sdGFn ZSA9IDE0LAo+PiAgICAgICAgICAgfSwKPj4gICAgICAgfSwKPj4gICB9Owo+Cj4gSXMgdGhlcmUg YSBwYXJ0aWN1bGFyIHJlYXNvbiB3aHkgdGhpcyB0YWJsZSBpcyBoYXJkLWNvZGVkIHJhdGhlciB0 aGFuIAo+IHN0b3JlZCBpbiB0aGUgZGV2aWNlIHRyZWU/IEl0IGRvZXNuJ3Qgc2VlbSB0byBkaWZm ZXIgbXVjaCBiZXR3ZWVuIAo+IGRpZmZlcmVudCBnazIwYSdzIChidXQgdGhpcyBtaWdodCBjaGFu Z2Ugd2l0aCB0aGUgZGVudmVyLWNvcmUgCj4gdmVyc2lvbj8pLCBidXQgSSBkbyBhbnRpY2lwYXRl IGEgbG90IG9mICJjb2RlIiBkdXBsaWNhdGlvbiB3aGVuIAo+IHBvc3QtSzEgY29yZXMgYXJlIHJl bGVhc2VkIGFuZCBzdXBwb3J0ZWQuCkhtbW0uLiBUaGF0J3MgcHJvYmFibHkgYmVjYXVzZSBJIGp1 c3QgcmVhbGl6ZWQgd2UgaGF2ZSBzb21lIG90aGVyIApleGFtcGxlIGxpa2UgdGhlIGJpb3Mgc3Vi ZGV2IGlzIHVzaW5nIHRoZSBkZXZpY2UgdHJlc3Mgc3R1ZmYuIFRoZSB0YWJsZSAKaXMgY2hpcCBz cGVjaWZpYywgbm90IGJvYXJkIHNwZWNpZmljLiBTaG91bGQgd2UgcHV0IGl0IGluIGRldmljZSB0 cmVlPwpBbmQgdGhlIHRhYmxlIHNob3VsZCBiZSB0aGUgc2FtZSBiZXR3ZWVuIGFsbCB0aGUgZ2sy MGEncyBhbHRob3VnaCB0aGVyZSAKaXMgbm8gZ3VhcmFudGVlLiBJZiB0aGUgcG9zdC1LMSBjb3Jl cyBhbHNvIGludGVncmF0ZSB0aGUgZ2syMGEsIHRoZXkgCnNob3VsZCB1c2UgdGhlIHNhbWUgZHJp dmVyIGluY2x1ZGluZyB0aGlzIGZpbGUuIElmIG5vdCwgSSBiZWxpZXZlIHdlIAp3aWxsIGhhdmUg c29tZSBjbGV2ZXIgd2F5IHRvIGhhbmRsZSB0aGF0LiBUaGF0J3MgdW5saWtlbHkgdG8gaGFwcGVu IAp0aG91Z2guIDopCgpUaGFua3MsClZpbmNlCgo+Cj4+IGRpZmYgLS1naXQgYS9udmttL3N1YmRl di92b2x0L2drMjBhLmMgYi9udmttL3N1YmRldi92b2x0L2drMjBhLmMKPj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi44NzM4NTk2NmU2N2YKPj4gLS0tIC9kZXYv bnVsbAo+PiArKysgYi9udmttL3N1YmRldi92b2x0L2drMjBhLmMKPj4gQEAgLTAsMCArMSwyMDIg QEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIE5WSURJQSBDT1JQT1JBVElPTi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiAKPj4gb2J0YWluaW5nIGEKPj4g KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgCj4+ICJTb2Z0d2FyZSIpLAo+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgCj4+IGxpbWl0YXRpb24KPj4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCAKPj4gc3VibGljZW5zZSwKPj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIAo+PiB0aGUKPj4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgCj4+IGluY2x1ZGVkIGluCj4+ICsgKiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPj4gKyAqCj4+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgCj4+IEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgCj4+IE1FUkNIQU5UQUJJTElUWSwKPj4g KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyAKPj4gRVZFTlQgU0hBTEwKPj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIAo+PiBPUiBPVEhFUgo+PiAr ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIAo+PiBBUklTSU5HCj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4+ICsgKiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+PiArI2luY2x1ZGUg PHNvYy90ZWdyYS9mdXNlLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDxub3V2ZWF1X3BsYXRmb3JtLmg+ Cj4+ICsjaW5jbHVkZSA8c3ViZGV2L3ZvbHQuaD4KPj4gKwo+PiArc3RydWN0IGN2Yl9jb2VmIHsK Pj4gKyAgICBpbnQgYzA7Cj4+ICsgICAgaW50IGMxOwo+PiArICAgIGludCBjMjsKPj4gKyAgICBp bnQgYzM7Cj4+ICsgICAgaW50IGM0Owo+PiArICAgIGludCBjNTsKPj4gK307Cj4+ICsKPj4gK3N0 cnVjdCBnazIwYV92b2x0X3ByaXYgewo+PiArICAgIHN0cnVjdCBub3V2ZWF1X3ZvbHQgYmFzZTsK Pj4gKyAgICBzdHJ1Y3QgcmVndWxhdG9yICp2ZGQ7Cj4+ICt9Owo+PiArCj4+ICtjb25zdCBzdHJ1 Y3QgY3ZiX2NvZWYgZ2syMGFfY3ZiX2NvZWZbXSA9IHsKPj4gKyAgICAvKiBNSHosICAgICAgICBj MCwgICAgIGMxLCAgIGMyLCAgICBjMywgICAgIGM0LCAgIGM1ICovCj4+ICsgICAgLyogIDcyICov IHsgMTIwOTg4NiwgLTM2NDY4LCAgNTE1LCAgIDQxNywgLTEzMTIzLCAgMjAzfSwKPj4gKyAgICAv KiAxMDggKi8geyAxMTMwODA0LCAtMjc2NTksICAyOTYsICAgMjk4LCAtMTA4MzQsICAyMjF9LAo+ PiArICAgIC8qIDE4MCAqLyB7IDExNjI4NzEsIC0yNzExMCwgIDI0NywgICAyMzgsIC0xMDY4MSwg IDI2OH0sCj4+ICsgICAgLyogMjUyICovIHsgMTIyMDQ1OCwgLTI4NjU0LCAgMjQ3LCAgIDE3OSwg LTEwMzc2LCAgMjk4fSwKPj4gKyAgICAvKiAzMjQgKi8geyAxMjgwOTUzLCAtMzAyMDQsICAyNDcs ICAgMTE5LCAgLTk3NjYsICAzMDR9LAo+PiArICAgIC8qIDM5NiAqLyB7IDEzNDQ1NDcsIC0zMTc3 NywgIDI0NywgICAxMTksICAtODU0NSwgIDI5Mn0sCj4+ICsgICAgLyogNDY4ICovIHsgMTQyMDE2 OCwgLTM0MjI3LCAgMjY5LCAgICA2MCwgIC03MTcyLCAgMjU2fSwKPj4gKyAgICAvKiA1NDAgKi8g eyAxNDkwNzU3LCAtMzU5NTUsICAyNzQsICAgIDYwLCAgLTUxODgsICAxOTd9LAo+PiArICAgIC8q IDYxMiAqLyB7IDE1OTkxMTIsIC00MjU4MywgIDM5OCwgICAgIDAsICAtMTgzMSwgIDExOX0sCj4+ ICsgICAgLyogNjQ4ICovIHsgMTM2Njk4NiwgLTE2NDU5LCAtMjc0LCAgICAgMCwgIC0zMjA0LCAg IDcyfSwKPj4gKyAgICAvKiA2ODQgKi8geyAxMzkxODg0LCAtMTcwNzgsIC0yNzQsICAgLTYwLCAg LTE1MjYsICAgMzB9LAo+PiArICAgIC8qIDcwOCAqLyB7IDE0MTU1MjIsIC0xNzQ5NywgLTI3NCwg ICAtNjAsICAgLTQ1OCwgICAgMH0sCj4+ICsgICAgLyogNzU2ICovIHsgMTQ2NDA2MSwgLTE4MzMx LCAtMjc0LCAgLTExOSwgICAxODMxLCAgLTcyfSwKPj4gKyAgICAvKiA4MDQgKi8geyAxNTI0MjI1 LCAtMjAwNjQsIC0yNTQsICAtMTE5LCAgIDQyNzIsIC0xNTV9LAo+PiArICAgIC8qIDg1MiAqLyB7 IDE2MDg0MTgsIC0yMTY0MywgLTI2OSwgICAgIDAsICAgIDc2MywgIC00OH0sCj4+ICt9Owo+PiAr Cj4+ICsvKioKPj4gKyAqIGN2Yl9tdiA9ICgoYzIgKiBzcGVlZG8gLyBzX3NjYWxlICsgYzEpICog c3BlZWRvIC8gc19zY2FsZSArIGMwKQo+PiArICovCj4+ICtzdGF0aWMgaW5saW5lIGludAo+PiAr Z2syMGFfdm9sdF9nZXRfY3ZiX3ZvbHRhZ2UoaW50IHNwZWVkbywgaW50IHNfc2NhbGUsCj4+ICsg ICAgICAgIGNvbnN0IHN0cnVjdCBjdmJfY29lZiAqY29lZikKPj4gK3sKPj4gKyAgICBpbnQgbXY7 Cj4+ICsKPj4gKyAgICBtdiA9IERJVl9ST1VORF9DTE9TRVNUKGNvZWYtPmMyICogc3BlZWRvLCBz X3NjYWxlKTsKPj4gKyAgICBtdiA9IERJVl9ST1VORF9DTE9TRVNUKChtdiArIGNvZWYtPmMxKSAq IHNwZWVkbywgc19zY2FsZSkgKyAKPj4gY29lZi0+YzA7Cj4+ICsgICAgcmV0dXJuIG12Owo+PiAr fQo+PiArCj4+ICsvKioKPj4gKyAqIGN2Yl90X212ID0KPj4gKyAqICgoYzIgKiBzcGVlZG8gLyBz X3NjYWxlICsgYzEpICogc3BlZWRvIC8gc19zY2FsZSArIGMwKSArCj4+ICsgKiAoKGMzICogc3Bl ZWRvIC8gc19zY2FsZSArIGM0ICsgYzUgKiBUIC8gdF9zY2FsZSkgKiBUIC8gdF9zY2FsZSkKPj4g KyAqLwo+PiArc3RhdGljIGlubGluZSBpbnQKPj4gK2drMjBhX3ZvbHRfZ2V0X2N2Yl90X3ZvbHRh Z2UoaW50IHNwZWVkbywgaW50IHRlbXAsIGludCBzX3NjYWxlLCBpbnQgCj4+IHRfc2NhbGUsCj4+ ICsgICAgICAgIGNvbnN0IHN0cnVjdCBjdmJfY29lZiAqY29lZikKPj4gK3sKPj4gKyAgICBpbnQg Y3ZiX212LCBtdjsKPj4gKwo+PiArICAgIGN2Yl9tdiA9IGdrMjBhX3ZvbHRfZ2V0X2N2Yl92b2x0 YWdlKHNwZWVkbywgc19zY2FsZSwgY29lZik7Cj4+ICsKPj4gKyAgICBtdiA9IERJVl9ST1VORF9D TE9TRVNUKGNvZWYtPmMzICogc3BlZWRvLCBzX3NjYWxlKSArIGNvZWYtPmM0ICsKPj4gKyAgICAg ICAgRElWX1JPVU5EX0NMT1NFU1QoY29lZi0+YzUgKiB0ZW1wLCB0X3NjYWxlKTsKPj4gKyAgICBt diA9IERJVl9ST1VORF9DTE9TRVNUKG12ICogdGVtcCwgdF9zY2FsZSkgKyBjdmJfbXY7Cj4+ICsg ICAgcmV0dXJuIG12Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50Cj4+ICtnazIwYV92b2x0X2Nh bGNfdm9sdGFnZShjb25zdCBzdHJ1Y3QgY3ZiX2NvZWYgKmNvZWYpCj4+ICt7Cj4+ICsgICAgaW50 IHNwZWVkbywgbXY7Cj4+ICsKPj4gKyAgICBzcGVlZG8gPSB0ZWdyYV9za3VfaW5mby5ncHVfc3Bl ZWRvX3ZhbHVlOwo+PiArCj4+ICsgICAgbXYgPSBnazIwYV92b2x0X2dldF9jdmJfdF92b2x0YWdl KHNwZWVkbywgLTEwLCAxMDAsIDEwLCBjb2VmKTsKPj4gKyAgICBtdiA9IERJVl9ST1VORF9VUCht diwgMTAwMCk7Cj4+ICsKPj4gKyAgICByZXR1cm4gbXYgKiAxMDAwOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW50Cj4+ICtnazIwYV92b2x0X3ZpZF9nZXQoc3RydWN0IG5vdXZlYXVfdm9sdCAqdm9s dCkKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgZ2syMGFfdm9sdF9wcml2ICpwcml2ID0gKHZvaWQgKil2 b2x0Owo+PiArICAgIGludCBpLCB1djsKPj4gKwo+PiArICAgIHV2ID0gcmVndWxhdG9yX2dldF92 b2x0YWdlKHByaXYtPnZkZCk7Cj4+ICsKPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgdm9sdC0+dmlk X25yOyBpKyspCj4+ICsgICAgICAgIGlmICh2b2x0LT52aWRbaV0udXYgPj0gdXYpCj4+ICsgICAg ICAgICAgICByZXR1cm4gaTsKPj4gKwo+PiArICAgIHJldHVybiAtRUlOVkFMOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50Cj4+ICtnazIwYV92b2x0X3ZpZF9zZXQoc3RydWN0IG5vdXZlYXVfdm9s dCAqdm9sdCwgdTggdmlkKQo+PiArewo+PiArICAgIHN0cnVjdCBnazIwYV92b2x0X3ByaXYgKnBy aXYgPSAodm9pZCAqKXZvbHQ7Cj4+ICsKPj4gKyAgICBudl9kZWJ1Zyh2b2x0LCAic2V0IHZvbHRh Z2UgYXMgJWR1dlxuIiwgdm9sdC0+dmlkW3ZpZF0udXYpOwo+PiArICAgIHJldHVybiByZWd1bGF0 b3Jfc2V0X3ZvbHRhZ2UocHJpdi0+dmRkLCB2b2x0LT52aWRbdmlkXS51diwgCj4+IDEyMDAwMDAp Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50Cj4+ICtnazIwYV92b2x0X3NldF9pZChzdHJ1Y3Qg bm91dmVhdV92b2x0ICp2b2x0LCB1OCBpZCwgaW50IGNvbmRpdGlvbikKPj4gK3sKPj4gKyAgICBz dHJ1Y3QgZ2syMGFfdm9sdF9wcml2ICpwcml2ID0gKHZvaWQgKil2b2x0Owo+PiArICAgIGludCBw cmV2X3V2ID0gcmVndWxhdG9yX2dldF92b2x0YWdlKHByaXYtPnZkZCk7Cj4+ICsgICAgaW50IHRh cmdldF91diA9IHZvbHQtPnZpZFtpZF0udXY7Cj4+ICsgICAgaW50IHJldDsKPj4gKwo+PiArICAg IG52X2RlYnVnKHZvbHQsICJwcmV2PSVkLCB0YXJnZXQ9JWQsIGNvbmRpdGlvbj0lZFxuIiwKPj4g KyAgICAgICAgICAgIHByZXZfdXYsIHRhcmdldF91diwgY29uZGl0aW9uKTsKPj4gKyAgICBpZiAo IWNvbmRpdGlvbiB8fAo+PiArICAgICAgICAoY29uZGl0aW9uIDwgMCAmJiB0YXJnZXRfdXYgPCBw cmV2X3V2KSB8fAo+PiArICAgICAgICAoY29uZGl0aW9uID4gMCAmJiB0YXJnZXRfdXYgPiBwcmV2 X3V2KSkgewo+PiArICAgICAgICByZXQgPSBnazIwYV92b2x0X3ZpZF9zZXQodm9sdCwgdm9sdC0+ dmlkW2lkXS52aWQpOwo+PiArICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgIHJldCA9IDA7Cj4+ICsg ICAgfQo+PiArCj4+ICsgICAgcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludAo+ PiArZ2syMGFfdm9sdF9jdG9yKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqcGFyZW50LCBzdHJ1Y3Qg bm91dmVhdV9vYmplY3QgCj4+ICplbmdpbmUsCj4+ICsgICAgICAgICAgIHN0cnVjdCBub3V2ZWF1 X29jbGFzcyAqb2NsYXNzLCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKPj4gKyAgICAgICAgICAgc3Ry dWN0IG5vdXZlYXVfb2JqZWN0ICoqcG9iamVjdCkKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgZ2syMGFf dm9sdF9wcml2ICpwcml2Owo+PiArICAgIHN0cnVjdCBub3V2ZWF1X3ZvbHQgKnZvbHQ7Cj4+ICsg ICAgc3RydWN0IG5vdXZlYXVfcGxhdGZvcm1fZGV2aWNlICpwbGF0Owo+PiArICAgIGludCBpLCBy ZXQsIHV2Owo+PiArCj4+ICsgICAgcmV0ID0gbm91dmVhdV92b2x0X2NyZWF0ZShwYXJlbnQsIGVu Z2luZSwgb2NsYXNzLCAmcHJpdik7Cj4+ICsgICAgKnBvYmplY3QgPSBudl9vYmplY3QocHJpdik7 Cj4+ICsgICAgaWYgKHJldCkKPj4gKyAgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArICAgIHZv bHQgPSAmcHJpdi0+YmFzZTsKPj4gKwo+PiArICAgIHBsYXQgPSBudl9kZXZpY2VfdG9fcGxhdGZv cm0obnZfZGV2aWNlKHBhcmVudCkpOwo+PiArCj4+ICsgICAgdXYgPSByZWd1bGF0b3JfZ2V0X3Zv bHRhZ2UocGxhdC0+Z3B1LT52ZGQpOwo+PiArICAgIG52X2luZm8ocHJpdiwgIlRoZSBkZWZhdWx0 IHZvbHRhZ2UgaXMgJWR1VlxuIiwgdXYpOwo+PiArCj4+ICsgICAgcHJpdi0+dmRkID0gcGxhdC0+ Z3B1LT52ZGQ7Cj4+ICsgICAgcHJpdi0+YmFzZS52aWRfZ2V0ID0gZ2syMGFfdm9sdF92aWRfZ2V0 Owo+PiArICAgIHByaXYtPmJhc2UudmlkX3NldCA9IGdrMjBhX3ZvbHRfdmlkX3NldDsKPj4gKyAg ICBwcml2LT5iYXNlLnNldF9pZCA9IGdrMjBhX3ZvbHRfc2V0X2lkOwo+PiArCj4+ICsgICAgdm9s dC0+dmlkX25yID0gQVJSQVlfU0laRShnazIwYV9jdmJfY29lZik7Cj4+ICsgICAgbnZfZGVidWco cHJpdiwgIiVzIC0gdmlkX25yID0gJWRcbiIsIF9fZnVuY19fLCB2b2x0LT52aWRfbnIpOwo+PiAr ICAgIGZvciAoaSA9IDA7IGkgPCB2b2x0LT52aWRfbnI7IGkrKykgewo+PiArICAgICAgICB2b2x0 LT52aWRbaV0udmlkID0gaTsKPj4gKyAgICAgICAgdm9sdC0+dmlkW2ldLnV2ID0gZ2syMGFfdm9s dF9jYWxjX3ZvbHRhZ2UoJmdrMjBhX2N2Yl9jb2VmW2ldKTsKPj4gKyAgICAgICAgbnZfZGVidWco cHJpdiwgIiUyZDogdmlkPSVkLCB1dj0lZFxuIiwgaSwgdm9sdC0+dmlkW2ldLnZpZCwKPj4gKyAg ICAgICAgICAgICAgICAgICAgdm9sdC0+dmlkW2ldLnV2KTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAg ICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RydWN0IG5vdXZlYXVfb2NsYXNzCj4+ICtnazIw YV92b2x0X29jbGFzcyA9IHsKPj4gKyAgICAuaGFuZGxlID0gTlZfU1VCREVWKFZPTFQsIDB4ZWEp LAo+PiArICAgIC5vZnVuY3MgPSAmKHN0cnVjdCBub3V2ZWF1X29mdW5jcykgewo+PiArICAgICAg ICAuY3RvciA9IGdrMjBhX3ZvbHRfY3RvciwKPj4gKyAgICAgICAgLmR0b3IgPSBfbm91dmVhdV92 b2x0X2R0b3IsCj4+ICsgICAgICAgIC5pbml0ID0gX25vdXZlYXVfdm9sdF9pbml0LAo+PiArICAg ICAgICAuZmluaSA9IF9ub3V2ZWF1X3ZvbHRfZmluaSwKPj4gKyAgICB9LAo+PiArfTsKPgo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTm91dmVhdSBt YWlsaW5nIGxpc3QKPiBOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1CgoKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVGhpcyBlbWFpbCBtZXNzYWdlIGlzIGZvciB0aGUgc29sZSB1c2Ugb2Yg dGhlIGludGVuZGVkIHJlY2lwaWVudChzKSBhbmQgbWF5IGNvbnRhaW4KY29uZmlkZW50aWFsIGlu Zm9ybWF0aW9uLiAgQW55IHVuYXV0aG9yaXplZCByZXZpZXcsIHVzZSwgZGlzY2xvc3VyZSBvciBk aXN0cmlidXRpb24KaXMgcHJvaGliaXRlZC4gIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCBy ZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYnkKcmVwbHkgZW1haWwgYW5kIGRl c3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgb3JpZ2luYWwgbWVzc2FnZS4KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTm91dmVhdSBtYWlsaW5nIGxpc3QKTm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK