From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tobias Klausmann Subject: Re: [PATCH 4/9] nvkm/fb/ramnv50: Ressurect timing code, use proper timing/rammap handlers Date: Sat, 23 May 2015 01:00:17 +0200 Message-ID: <555FB501.4010206@mni.thm.de> References: <1432334028-15234-1-git-send-email-rspliet@eclipso.eu> <1432334028-15234-5-git-send-email-rspliet@eclipso.eu> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1432334028-15234-5-git-send-email-rspliet-pPYjZ15w/Xhulxpn9UvDqw@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 CgpPbiAyMy4wNS4yMDE1IDAwOjMzLCBSb3kgU3BsaWV0IHdyb3RlOgo+IE1pZ2h0IG5lZWQgc29t ZSBnZW5lcmFsaXNhdGlvbiB0byA8IEdUMjAwLiBGb3IgdGhvc2U6IHVzZSBhdCB5b3VyIG93biBy aXNrIQo+Cj4gU2lnbmVkLW9mZi1ieTogUm95IFNwbGlldCA8cnNwbGlldEBlY2xpcHNvLmV1Pgo+ IC0tLQo+ICAgLi4uL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvYmlvcy9yYW1jZmcu aCAgfCAgMTYgKysKPiAgIC4uLi9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L2Jpb3Mv cmFtbWFwLmggIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2 L2Jpb3MvcmFtbWFwLmMgIHwgIDI5ICsrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vc3ViZGV2L2ZiL3JhbW52NTAuYyAgIHwgMTY3ICsrKysrKysrKysrKysrKysrLS0tLQo+ICAg NCBmaWxlcyBjaGFuZ2VkLCAxODEgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRldi9i aW9zL3JhbWNmZy5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRl di9iaW9zL3JhbWNmZy5oCj4gaW5kZXggYzZmYjZhYS4uZjA5YjZiZiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L2Jpb3MvcmFtY2ZnLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L2Jpb3Mv cmFtY2ZnLmgKPiBAQCAtMzUsNiArMzUsMjIgQEAgc3RydWN0IG52Ymlvc19yYW1jZmcgewo+ICAg CXVuc2lnbmVkIHJhbWNmZ19ETExvZmY7Cj4gICAJdW5pb24gewo+ICAgCQlzdHJ1Y3Qgewo+ICsJ CQl1bnNpZ25lZCByYW1jZmdfMDBfMDNfMDE6MTsKPiArCQkJdW5zaWduZWQgcmFtY2ZnXzAwXzAz XzAyOjE7Cj4gKwkJCXVuc2lnbmVkIHJhbWNmZ18wMF8wM18wODoxOwo+ICsJCQl1bnNpZ25lZCBy YW1jZmdfMDBfMDNfMTA6MTsKPiArCQkJdW5zaWduZWQgcmFtY2ZnXzAwXzA0XzAyOjE7Cj4gKwkJ CXVuc2lnbmVkIHJhbWNmZ18wMF8wNF8wNDoxOwo+ICsJCQl1bnNpZ25lZCByYW1jZmdfMDBfMDRf MjA6MTsKPiArCQkJdW5zaWduZWQgcmFtY2ZnXzAwXzA1Ojg7Cj4gKwkJCXVuc2lnbmVkIHJhbWNm Z18wMF8wNjo4Owo+ICsJCQl1bnNpZ25lZCByYW1jZmdfMDBfMDc6ODsKPiArCQkJdW5zaWduZWQg cmFtY2ZnXzAwXzA4Ojg7Cj4gKwkJCXVuc2lnbmVkIHJhbWNmZ18wMF8wOTo4Owo+ICsJCQl1bnNp Z25lZCByYW1jZmdfMDBfMGFfMGY6NDsKPiArCQkJdW5zaWduZWQgcmFtY2ZnXzAwXzBhX2YwOjQ7 Cj4gKwkJfTsKPiArCQlzdHJ1Y3Qgewo+ICAgCQkJdW5zaWduZWQgcmFtY2ZnXzEwXzAyXzAxOjE7 Cj4gICAJCQl1bnNpZ25lZCByYW1jZmdfMTBfMDJfMDI6MTsKPiAgIAkJCXVuc2lnbmVkIHJhbWNm Z18xMF8wMl8wNDoxOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNs dWRlL252a20vc3ViZGV2L2Jpb3MvcmFtbWFwLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9p bmNsdWRlL252a20vc3ViZGV2L2Jpb3MvcmFtbWFwLmgKPiBpbmRleCA2MDlhOTA1Li4yMDQ0ZmM5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJk ZXYvYmlvcy9yYW1tYXAuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUv bnZrbS9zdWJkZXYvYmlvcy9yYW1tYXAuaAo+IEBAIC0xNSw2ICsxNSw4IEBAIHUzMiBudmJpb3Nf cmFtbWFwRW0oc3RydWN0IG52a21fYmlvcyAqLCB1MTYgbWh6LAo+ICAgdTMyIG52Ymlvc19yYW1t YXBTZShzdHJ1Y3QgbnZrbV9iaW9zICosIHUzMiBkYXRhLAo+ICAgCQkgICAgdTggZXZlciwgdTgg ZWhkciwgdTggZWNudCwgdTggZWxlbiwgaW50IGlkeCwKPiAgIAkJICAgIHU4ICp2ZXIsIHU4ICpo ZHIpOwo+ICt1MzIgbnZiaW9zX3JhbW1hcFNwX2Zyb21fcGVyZihzdHJ1Y3QgbnZrbV9iaW9zICpi aW9zLCB1MzIgZGF0YSwgdTggc2l6ZSwgaW50IGlkeCwKPiArCQkgICAgc3RydWN0IG52Ymlvc19y YW1jZmcgKnApOwo+ICAgdTMyIG52Ymlvc19yYW1tYXBTcChzdHJ1Y3QgbnZrbV9iaW9zICosIHUz MiBkYXRhLAo+ICAgCQkgICAgdTggZXZlciwgdTggZWhkciwgdTggZWNudCwgdTggZWxlbiwgaW50 IGlkeCwKPiAgIAkJICAgIHU4ICp2ZXIsIHU4ICpoZHIsIHN0cnVjdCBudmJpb3NfcmFtY2ZnICop Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9iaW9z L3JhbW1hcC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvYmlvcy9yYW1t YXAuYwo+IGluZGV4IGE2ODhkM2IuLjRlYzM3NmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvYmlvcy9yYW1tYXAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L2Jpb3MvcmFtbWFwLmMKPiBAQCAtMTQxLDYgKzE0MSwz NSBAQCBudmJpb3NfcmFtbWFwU2Uoc3RydWN0IG52a21fYmlvcyAqYmlvcywgdTMyIGRhdGEsCj4g ICB9Cj4gICAKPiAgIHUzMgo+ICtudmJpb3NfcmFtbWFwU3BfZnJvbV9wZXJmKHN0cnVjdCBudmtt X2Jpb3MgKmJpb3MsIHUzMiBkYXRhLCB1OCBzaXplLCBpbnQgaWR4LAo+ICsJCXN0cnVjdCBudmJp b3NfcmFtY2ZnICpwKQo+ICt7Cj4gKwlkYXRhICs9IChpZHggKiBzaXplKTsKPiArCj4gKwlpZiAo c2l6ZSA8IDExKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXAtPnJhbWNmZ190aW1pbmcgICA9 ICBudl9ybzA4KGJpb3MsIGRhdGEgKyAweDAxKTsKPiArCXAtPnJhbWNmZ18wMF8wM18wMSA9IChu dl9ybzA4KGJpb3MsIGRhdGEgKyAweDAzKSAmIDB4MDEpID4+IDA7Cj4gKwlwLT5yYW1jZmdfMDBf MDNfMDIgPSAobnZfcm8wOChiaW9zLCBkYXRhICsgMHgwMykgJiAweDAyKSA+PiAxOwo+ICsJcC0+ cmFtY2ZnX0RMTG9mZiAgID0gKG52X3JvMDgoYmlvcywgZGF0YSArIDB4MDMpICYgMHgwNCkgPj4g MjsKPiArCXAtPnJhbWNmZ18wMF8wM18wOCA9IChudl9ybzA4KGJpb3MsIGRhdGEgKyAweDAzKSAm IDB4MDgpID4+IDM7Cj4gKwlwLT5yYW1jZmdfMDBfMDNfMTAgPSAobnZfcm8wOChiaW9zLCBkYXRh ICsgMHgwMykgJiAweDEwKSA+PiA0Owo+ICsJcC0+cmFtY2ZnXzAwXzA0XzAyID0gKG52X3JvMDgo YmlvcywgZGF0YSArIDB4MDQpICYgMHgwMikgPj4gMTsKPiArCXAtPnJhbWNmZ18wMF8wNF8wNCA9 IChudl9ybzA4KGJpb3MsIGRhdGEgKyAweDA0KSAmIDB4MDQpID4+IDI7Cj4gKwlwLT5yYW1jZmdf MDBfMDRfMjAgPSAobnZfcm8wOChiaW9zLCBkYXRhICsgMHgwNCkgJiAweDIwKSA+PiA1Owo+ICsJ cC0+cmFtY2ZnXzAwXzA1ICAgID0gKG52X3JvMDgoYmlvcywgZGF0YSArIDB4MDUpICYgMHhmZikg Pj4gMDsKPiArCXAtPnJhbWNmZ18wMF8wNiAgICA9IChudl9ybzA4KGJpb3MsIGRhdGEgKyAweDA2 KSAmIDB4ZmYpID4+IDA7Cj4gKwlwLT5yYW1jZmdfMDBfMDcgICAgPSAobnZfcm8wOChiaW9zLCBk YXRhICsgMHgwNykgJiAweGZmKSA+PiAwOwo+ICsJcC0+cmFtY2ZnXzAwXzA4ICAgID0gKG52X3Jv MDgoYmlvcywgZGF0YSArIDB4MDgpICYgMHhmZikgPj4gMDsKPiArCXAtPnJhbWNmZ18wMF8wOSAg ICA9IChudl9ybzA4KGJpb3MsIGRhdGEgKyAweDA5KSAmIDB4ZmYpID4+IDA7Cj4gKwlwLT5yYW1j ZmdfMDBfMGFfMGYgPSAobnZfcm8wOChiaW9zLCBkYXRhICsgMHgwYSkgJiAweDBmKSA+PiAwOwo+ ICsJcC0+cmFtY2ZnXzAwXzBhX2YwID0gKG52X3JvMDgoYmlvcywgZGF0YSArIDB4MGEpICYgMHhm MCkgPj4gNDsKPiArCj4gKwlyZXR1cm4gZGF0YTsKPiArfQo+ICsKPiArdTMyCj4gICBudmJpb3Nf cmFtbWFwU3Aoc3RydWN0IG52a21fYmlvcyAqYmlvcywgdTMyIGRhdGEsCj4gICAJCXU4IGV2ZXIs IHU4IGVoZHIsIHU4IGVjbnQsIHU4IGVsZW4sIGludCBpZHgsCj4gICAJCXU4ICp2ZXIsIHU4ICpo ZHIsIHN0cnVjdCBudmJpb3NfcmFtY2ZnICpwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL3N1YmRldi9mYi9yYW1udjUwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udmttL3N1YmRldi9mYi9yYW1udjUwLmMKPiBpbmRleCBhOTZlNTEyLi41MWY5M2EwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L2ZiL3JhbW52 NTAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L2ZiL3JhbW52 NTAuYwo+IEBAIC0yOSw2ICsyOSw3IEBACj4gICAjaW5jbHVkZSA8c3ViZGV2L2Jpb3MuaD4KPiAg ICNpbmNsdWRlIDxzdWJkZXYvYmlvcy9wZXJmLmg+Cj4gICAjaW5jbHVkZSA8c3ViZGV2L2Jpb3Mv cGxsLmg+Cj4gKyNpbmNsdWRlIDxzdWJkZXYvYmlvcy9yYW1tYXAuaD4KPiAgICNpbmNsdWRlIDxz dWJkZXYvYmlvcy90aW1pbmcuaD4KPiAgICNpbmNsdWRlIDxzdWJkZXYvY2xrL3BsbC5oPgo+ICAg Cj4gQEAgLTU1LDYgKzU2LDg0IEBAIHN0cnVjdCBudjUwX3JhbSB7Cj4gICAJc3RydWN0IG52NTBf cmFtc2VxIGh3c3E7Cj4gICB9Owo+ICAgCj4gKyNkZWZpbmUgVCh0KSBjZmctPnRpbWluZ18xMF8j I3QKPiArc3RhdGljIGludAo+ICtudjUwX3JhbV90aW1pbmdfY2FsYyhzdHJ1Y3QgbnZrbV9mYiAq cGZiLCB1MzIgKnRpbWluZykKPiArewo+ICsJc3RydWN0IG52NTBfcmFtICpyYW0gPSAodm9pZCAq KXBmYi0+cmFtOwo+ICsJc3RydWN0IG52Ymlvc19yYW1jZmcgKmNmZyA9ICZyYW0tPmJhc2UudGFy Z2V0LmJpb3M7Cj4gKwl1MzIgY3VyMiwgY3VyMywgY3VyNCwgY3VyNywgY3VyODsKPiArCXU4IHVu a3QzYjsKPiArCj4gKwljdXIyID0gbnZfcmQzMihwZmIsIDB4MTAwMjI4KTsKPiArCWN1cjMgPSBu dl9yZDMyKHBmYiwgMHgxMDAyMmMpOwo+ICsJY3VyNCA9IG52X3JkMzIocGZiLCAweDEwMDIzMCk7 Cj4gKwljdXI3ID0gbnZfcmQzMihwZmIsIDB4MTAwMjNjKTsKPiArCWN1cjggPSBudl9yZDMyKHBm YiwgMHgxMDAyNDApOwo+ICsKPiArCXN3aXRjaCAoKCFUKENXTCkpICogcmFtLT5iYXNlLnR5cGUp IHsKPiArCWNhc2UgTlZfTUVNX1RZUEVfRERSMjoKPiArCQlUKENXTCkgPSBUKENMKSAtIDE7Cj4g KwkJYnJlYWs7Cj4gKwljYXNlIE5WX01FTV9UWVBFX0dERFIzOgo+ICsJCVQoQ1dMKSA9ICgoY3Vy MiAmIDB4ZmYwMDAwMDApID4+IDI0KSArIDE7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJLyog WFhYOiBOPTEgaXMgbm90IHByb3BlciBzdGF0aXN0aWNzICovCj4gKwlpZiAobnZfZGV2aWNlKHBm YiktPmNoaXBzZXQgPT0gMHhhMCkgewo+ICsJCXVua3QzYiA9IDB4MTkgKyByYW0tPmJhc2UubmV4 dC0+Ymlvcy5yYW1tYXBfMDBfMTZfNDA7Cj4gKwkJdGltaW5nWzZdID0gKDB4MmQgKyBUKENMKSAt IFQoQ1dMKSArIHJhbS0+YmFzZS5uZXh0LT5iaW9zLnJhbW1hcF8wMF8xNl80MCkgPDwgMTYgfAo+ ICsJCQkgICAgVChDV0wpIDw8IDggfAo+ICsJCQkgICAgKDB4MmYgKyBUKENMKSAtIFQoQ1dMKSk7 Cj4gKwl9IGVsc2Ugewo+ICsJCXVua3QzYiA9IDB4MTY7Cj4gKwkJdGltaW5nWzZdID0gKDB4MmIg KyBUKENMKSAtIFQoQ1dMKSkgPDwgMTYgfAo+ICsJCQkgICAgbWF4X3QoczgsIFQoQ1dMKSAtIDIs IDEpIDw8IDggfAo+ICsJCQkgICAgKDB4MmUgKyBUKENMKSAtIFQoQ1dMKSk7Cj4gKwl9Cj4gKwo+ ICsJdGltaW5nWzBdID0gKFQoUlApIDw8IDI0IHwgVChSQVMpIDw8IDE2IHwgVChSRkMpIDw8IDgg fCBUKFJDKSk7Cj4gKwl0aW1pbmdbMV0gPSAoVChXUikgKyAxICsgVChDV0wpKSA8PCAyNCB8Cj4g KwkJICAgIG1heF90KHU4LCBUKDE4KSwgMSkgPDwgMTYgfAo+ICsJCSAgICAoVChXVFIpICsgMSAr IFQoQ1dMKSkgPDwgOCB8Cj4gKwkJICAgICgzICsgVChDTCkgLSBUKENXTCkpOwo+ICsJdGltaW5n WzJdID0gKFQoQ1dMKSAtIDEpIDw8IDI0IHwKPiArCQkgICAgKFQoUlJEKSA8PCAxNikgfAo+ICsJ CSAgICAoVChSQ0RXUikgPDwgOCkgfAo+ICsJCSAgICBUKFJDRFJEKTsKPiArCXRpbWluZ1szXSA9 ICh1bmt0M2IgLSAyICsgVChDTCkpIDw8IDI0IHwKPiArCQkgICAgdW5rdDNiIDw8IDE2IHwKPiAr CQkgICAgKFQoQ0wpIC0gMSkgPDwgOCB8Cj4gKwkJICAgIChUKENMKSAtIDEpOwo+ICsJdGltaW5n WzRdID0gKGN1cjQgJiAweGZmZmYwMDAwKSB8Cj4gKwkJICAgIFQoMTMpIDw8IDggfAo+ICsJCSAg ICBUKDEzKTsKPiArCXRpbWluZ1s1XSA9IFQoUkZDKSA8PCAyNCB8Cj4gKwkJICAgIG1heF90KHU4 LCBUKFJDRFJEKSwgVChSQ0RXUikpIDw8IDE2IHwKPiArCQkgICAgVChSUCk7Cj4gKwkvKiBUaW1p bmcgNiBpcyBhbHJlYWR5IGRvbmUgYWJvdmUgKi8KPiArCXRpbWluZ1s3XSA9IChjdXI3ICYgMHhm ZjAwZmZmZikgfCAoVChDTCkgLSAxKSA8PCAxNjsKPiArCXRpbWluZ1s4XSA9IChjdXI4ICYgMHhm ZmZmZmYwMCk7Cj4gKwo+ICsJLyogWFhYOiBQLnZlcnNpb24gPT0gMSBvbmx5IGhhcyBERFIyIGFu ZCBHRERSMz8gKi8KCm1oIGNhbiB5b3Ugc3RhdGUgYm90aCAoRERSMi9HRERSMykgaGVyZSBhbmQg YmFpbCBvdXQgb24gZGVmYXVsdCBhcyB3ZWxsPwoKPiArCWlmIChwZmItPnJhbS0+dHlwZSA9PSBO Vl9NRU1fVFlQRV9ERFIyKSB7Cj4gKwkJdGltaW5nWzVdIHw9IChUKENMKSArIDMpIDw8IDg7Cj4g KwkJdGltaW5nWzhdIHw9IChUKENMKSAtIDQpOwo+ICsJfSBlbHNlIHsKPiArCQl0aW1pbmdbNV0g fD0gKFQoQ0wpICsgMikgPDwgODsKPiArCQl0aW1pbmdbOF0gfD0gKFQoQ0wpIC0gMik7Cj4gKwl9 Cj4gKwo+ICsJbnZfZGVidWcocGZiLCAiIDIyMDogJTA4eCAlMDh4ICUwOHggJTA4eFxuIiwKPiAr CQkJdGltaW5nWzBdLCB0aW1pbmdbMV0sIHRpbWluZ1syXSwgdGltaW5nWzNdKTsKPiArCW52X2Rl YnVnKHBmYiwgIiAyMzA6ICUwOHggJTA4eCAlMDh4ICUwOHhcbiIsCj4gKwkJCXRpbWluZ1s0XSwg dGltaW5nWzVdLCB0aW1pbmdbNl0sIHRpbWluZ1s3XSk7Cj4gKwludl9kZWJ1ZyhwZmIsICIgMjQw OiAlMDh4XG4iLCB0aW1pbmdbOF0pOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArI3VuZGVmIFQKPiAr Cj4gICAjZGVmaW5lIFFGWDU4MDBOVkEwIDEKPiAgIAo+ICAgc3RhdGljIGludAo+IEBAIC02NSwy MiArMTQ0LDI1IEBAIG52NTBfcmFtX2NhbGMoc3RydWN0IG52a21fZmIgKnBmYiwgdTMyIGZyZXEp Cj4gICAJc3RydWN0IG52NTBfcmFtc2VxICpod3NxID0gJnJhbS0+aHdzcTsKPiAgIAlzdHJ1Y3Qg bnZiaW9zX3BlcmZFIHBlcmZFOwo+ICAgCXN0cnVjdCBudmJpb3NfcGxsIG1wbGw7Cj4gLQlzdHJ1 Y3Qgewo+IC0JCXUzMiBkYXRhOwo+IC0JCXU4ICBzaXplOwo+IC0JfSByYW1jZmcsIHRpbWluZzsK PiAtCXU4ICB2ZXIsIGhkciwgY250LCBsZW4sIHN0cmFwOwo+ICsJc3RydWN0IG52a21fcmFtX2Rh dGEgKm5leHQ7Cj4gKwl1OCAgdmVyLCBoZHIsIGNudCwgbGVuLCBzdHJhcCwgc2l6ZTsKPiArCXUz MiBkYXRhOwo+ICAgCXUzMiByMTAwZGEwOwo+ICAgCWludCBOMSwgTTEsIE4yLCBNMiwgUDsKPiAg IAlpbnQgcmV0LCBpOwo+ICsJdTMyIHRpbWluZ1s5XTsKPiArCj4gKwluZXh0ID0gJnJhbS0+YmFz ZS50YXJnZXQ7Cj4gKwluZXh0LT5mcmVxID0gZnJlcTsKPiArCXJhbS0+YmFzZS5uZXh0ID0gbmV4 dDsKPiAgIAo+ICAgCS8qIGxvb2t1cCBjbG9zZXN0IG1hdGNoaW5nIHBlcmZvcm1hbmNlIHRhYmxl IGVudHJ5IGZvciBmcmVxdWVuY3kgKi8KPiAgIAlpID0gMDsKPiAgIAlkbyB7Cj4gLQkJcmFtY2Zn LmRhdGEgPSBudmJpb3NfcGVyZkVwKGJpb3MsIGkrKywgJnZlciwgJmhkciwgJmNudCwKPiAtCQkJ CQkgICAgJnJhbWNmZy5zaXplLCAmcGVyZkUpOwo+IC0JCWlmICghcmFtY2ZnLmRhdGEgfHwgKHZl ciA8IDB4MjUgfHwgdmVyID49IDB4NDApIHx8Cj4gLQkJICAgIChyYW1jZmcuc2l6ZSA8IDIpKSB7 Cj4gKwkJZGF0YSA9IG52Ymlvc19wZXJmRXAoYmlvcywgaSsrLCAmdmVyLCAmaGRyLCAmY250LAo+ ICsJCQkJCSAgICAmc2l6ZSwgJnBlcmZFKTsKPiArCQlpZiAoIWRhdGEgfHwgKHZlciA8IDB4MjUg fHwgdmVyID49IDB4NDApIHx8Cj4gKwkJICAgIChzaXplIDwgMikpIHsKPiAgIAkJCW52X2Vycm9y KHBmYiwgImludmFsaWQvbWlzc2luZyBwZXJmdGFiIGVudHJ5XG4iKTsKPiAgIAkJCXJldHVybiAt RUlOVkFMOwo+ICAgCQl9Cj4gQEAgLTkzLDIzICsxNzUsNDggQEAgbnY1MF9yYW1fY2FsYyhzdHJ1 Y3QgbnZrbV9mYiAqcGZiLCB1MzIgZnJlcSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAJfQo+ ICAgCj4gLQlyYW1jZmcuZGF0YSArPSBoZHIgKyAoc3RyYXAgKiByYW1jZmcuc2l6ZSk7Cj4gKwlk YXRhID0gbnZiaW9zX3JhbW1hcFNwX2Zyb21fcGVyZihiaW9zLCBkYXRhICsgaGRyLCBzaXplLCBz dHJhcCwKPiArCQkJJm5leHQtPmJpb3MpOwo+ICsJaWYgKCFkYXRhKSB7Cj4gKwkJbnZfZXJyb3Io cGZiLCAiaW52YWxpZC9taXNzaW5nIHJhbW1hcCBlbnRyeSAiKTsKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCX0KPiAgIAo+ICAgCS8qIGxvb2t1cCBtZW1vcnkgdGltaW5ncywgaWYgYmlvcyBzYXlz IHRoZXkncmUgcHJlc2VudCAqLwo+IC0Jc3RyYXAgPSBudl9ybzA4KGJpb3MsIHJhbWNmZy5kYXRh ICsgMHgwMSk7Cj4gLQlpZiAoc3RyYXAgIT0gMHhmZikgewo+IC0JCXRpbWluZy5kYXRhID0gbnZi aW9zX3RpbWluZ0VlKGJpb3MsIHN0cmFwLCAmdmVyLCAmaGRyLAo+IC0JCQkJCSAgICAgICZjbnQs ICZsZW4pOwo+IC0JCWlmICghdGltaW5nLmRhdGEgfHwgdmVyICE9IDB4MTAgfHwgaGRyIDwgMHgx Mikgewo+ICsJaWYgKG5leHQtPmJpb3MucmFtY2ZnX3RpbWluZyAhPSAweGZmKSB7Cj4gKwkJZGF0 YSA9IG52Ymlvc190aW1pbmdFcChiaW9zLCBuZXh0LT5iaW9zLnJhbWNmZ190aW1pbmcsCj4gKwkJ CQkJJnZlciwgJmhkciwgJmNudCwgJmxlbiwgJm5leHQtPmJpb3MpOwo+ICsJCWlmICghZGF0YSB8 fCB2ZXIgIT0gMHgxMCB8fCBoZHIgPCAweDEyKSB7Cj4gICAJCQludl9lcnJvcihwZmIsICJpbnZh bGlkL21pc3NpbmcgdGltaW5nIGVudHJ5ICIKPiAgIAkJCQkgIiUwMnggJTA0eCAlMDJ4ICUwMnhc biIsCj4gLQkJCQkgc3RyYXAsIHRpbWluZy5kYXRhLCB2ZXIsIGhkcik7Cj4gKwkJCQkgc3RyYXAs IGRhdGEsIHZlciwgaGRyKTsKPiAgIAkJCXJldHVybiAtRUlOVkFMOwo+ICAgCQl9Cj4gLQl9IGVs c2Ugewo+IC0JCXRpbWluZy5kYXRhID0gMDsKPiAgIAl9Cj4gICAKPiArCW52NTBfcmFtX3RpbWlu Z19jYWxjKHBmYiwgdGltaW5nKTsKPiArCj4gKwlyZXQgPSByYW1faW5pdChod3NxLCBudl9zdWJk ZXYocGZiKSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJLyogRGV0ZXJt aW5lIHJhbS1zcGVjaWZpYyBNUiB2YWx1ZXMgKi8KPiArCXJhbS0+YmFzZS5tclswXSA9IHJhbV9y ZDMyKGh3c3EsIG1yWzBdKTsKPiArCXJhbS0+YmFzZS5tclsxXSA9IHJhbV9yZDMyKGh3c3EsIG1y WzFdKTsKPiArCXJhbS0+YmFzZS5tclsyXSA9IHJhbV9yZDMyKGh3c3EsIG1yWzJdKTsKPiArCj4g Kwlzd2l0Y2ggKHJhbS0+YmFzZS50eXBlKSB7Cj4gKwljYXNlIE5WX01FTV9UWVBFX0dERFIzOgo+ ICsJCXJldCA9IG52a21fZ2RkcjNfY2FsYygmcmFtLT5iYXNlKTsKPiArCQlicmVhazsKPiArCWRl ZmF1bHQ6Cj4gKwkJcmV0ID0gLUVOT1NZUzsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlpZiAo cmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAgCS8qIFhYWDogd2hlcmUgdGhlIGZ1Y2sgZG9l cyA3NTBNSHogY29tZSBmcm9tPyAqLwoKZ2V0IHJpZCBvZiB0aGF0IHN3ZWFyaW5nLi4uCgo+ICAg CWlmIChmcmVxIDw9IDc1MDAwMCkgewo+ICAgCQlyMTAwZGEwID0gMHgwMDAwMDAxMDsKPiBAQCAt MTE3LDEwICsyMjQsNiBAQCBudjUwX3JhbV9jYWxjKHN0cnVjdCBudmttX2ZiICpwZmIsIHUzMiBm cmVxKQo+ICAgCQlyMTAwZGEwID0gMHgwMDAwMDAwMDsKPiAgIAl9Cj4gICAKPiAtCXJldCA9IHJh bV9pbml0KGh3c3EsIG52X3N1YmRldihwZmIpKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJl dDsKPiAtCj4gICAJcmFtX3dhaXQoaHdzcSwgMHgwMSwgMHgwMCk7IC8qIHdhaXQgZm9yICF2Ymxh bmsgKi8KPiAgIAlyYW1fd2FpdChod3NxLCAweDAxLCAweDAxKTsgLyogd2FpdCBmb3IgdmJsYW5r ICovCj4gICAJcmFtX3dyMzIoaHdzcSwgMHg2MTEyMDAsIDB4MDAwMDMzMDApOwo+IEBAIC0xNzcs MTcgKzI4MCwxNSBAQCBudjUwX3JhbV9jYWxjKHN0cnVjdCBudmttX2ZiICpwZmIsIHUzMiBmcmVx KQo+ICAgCQlicmVhazsKPiAgIAl9Cj4gICAKPiAtCXJhbV9tYXNrKGh3c3EsIHRpbWluZ1szXSwg MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7IC8qWFhYKi8KPiAtCXJhbV9tYXNrKGh3c3EsIHRpbWlu Z1sxXSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7IC8qWFhYKi8KPiAtCXJhbV9tYXNrKGh3c3Es IHRpbWluZ1s2XSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7IC8qWFhYKi8KPiAtCXJhbV9tYXNr KGh3c3EsIHRpbWluZ1s3XSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7IC8qWFhYKi8KPiAtCXJh bV9tYXNrKGh3c3EsIHRpbWluZ1s4XSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7IC8qWFhYKi8K PiAtCXJhbV9tYXNrKGh3c3EsIHRpbWluZ1swXSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7IC8q WFhYKi8KPiAtCXJhbV9tYXNrKGh3c3EsIHRpbWluZ1syXSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCk7IC8qWFhYKi8KPiAtCXJhbV9tYXNrKGh3c3EsIHRpbWluZ1s0XSwgMHgwMDAwMDAwMCwgMHgw MDAwMDAwMCk7IC8qWFhYKi8KPiAtCXJhbV9tYXNrKGh3c3EsIHRpbWluZ1s1XSwgMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCk7IC8qWFhYKi8KPiAtCj4gLQlyYW1fbWFzayhod3NxLCB0aW1pbmdbMF0s IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOyAvKlhYWCovCj4gKwlyYW1fbWFzayhod3NxLCB0aW1p bmdbM10sIDB4ZmZmZmZmZmYsIHRpbWluZ1szXSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdb MV0sIDB4ZmZmZmZmZmYsIHRpbWluZ1sxXSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbNl0s IDB4ZmZmZmZmZmYsIHRpbWluZ1s2XSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbN10sIDB4 ZmZmZmZmZmYsIHRpbWluZ1s3XSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbOF0sIDB4ZmZm ZmZmZmYsIHRpbWluZ1s4XSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbMF0sIDB4ZmZmZmZm ZmYsIHRpbWluZ1swXSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbMl0sIDB4ZmZmZmZmZmYs IHRpbWluZ1syXSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbNF0sIDB4ZmZmZmZmZmYsIHRp bWluZ1s0XSk7Cj4gKwlyYW1fbWFzayhod3NxLCB0aW1pbmdbNV0sIDB4ZmZmZmZmZmYsIHRpbWlu Z1s1XSk7Cj4gICAKPiAgICNpZiBRRlg1ODAwTlZBMAo+ICAgCXJhbV9udWtlKGh3c3EsIDB4MTAw ZTI0KTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5v dXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg==