From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?QW50dGkgS29za2lww6TDpA==?= Subject: Re: [PATCH v2] drm/i915/skl: Buffer translation improvements Date: Mon, 29 Jun 2015 13:35:06 +0300 Message-ID: <55911F5A.5020204@linux.intel.com> References: <20150618095033.GH14570@boom> <20150625081103.GO14570@boom> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 05A0789580 for ; Mon, 29 Jun 2015 03:35:01 -0700 (PDT) In-Reply-To: <20150625081103.GO14570@boom> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TG9va3MgZmluZSB0byBtZS4KClJldmlld2VkLWJ5OiBBbnR0aSBLb3NraXDDpMOkIDxhbnR0aS5r b3NraXBhYUBsaW51eC5pbnRlbC5jb20+CgoKT24gMDYvMjUvMjAxNSAxMToxMSBBTSwgRGF2aWQg V2VpbmVoYWxsIHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciAwLjg1ViBWY2NJ TyBvbiBTa3lsYWtlIFksCj4gc2VwYXJhdGUgYnVmZmVyIHRyYW5zbGF0aW9uIHRhYmxlcyBmb3Ig U2t5bGFrZSBVLAo+IGFuZCBzdXBwb3J0IGZvciBJX2Jvb3N0IGZvciB0aGUgZW50cmllcyB0aGF0 IG5lZWRzIHRoaXMuCj4gCj4gQ2hhbmdlcyBpbiB2MjoKPiAqIFJlZmFjdG9yZWQgdGhlIGNvZGUg YSBiaXQgdG8gbW92ZSBhbGwgRERJIHNpZ25hbCBsZXZlbCBzZXR1cCB0bwo+ICAgaW50ZWxfZGRp LmMKPiAKPiBJc3N1ZTogVklaLTU2NzcKPiBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXZWluZWhhbGwg PGRhdmlkLndlaW5laGFsbEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggIHwgICA4ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCAgfCAgMTIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8IDUwNyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYyAgfCAxMDQgKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggfCAgIDMgKy0KPiAgNSBmaWxlcyBjaGFuZ2VkLCA0MjEgaW5zZXJ0aW9ucygr KSwgMjEzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDQ5 MWVmMGNmY2IwYi4uMDlhNTdhNTg0ZjVmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g QEAgLTI0MTUsNiArMjQxNSwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgLyog VUxYIG1hY2hpbmVzIGFyZSBhbHNvIGNvbnNpZGVyZWQgVUxULiAqLwo+ICAjZGVmaW5lIElTX0hT V19VTFgoZGV2KQkJKElOVEVMX0RFVklEKGRldikgPT0gMHgwQTBFIHx8IFwKPiAgCQkJCSBJTlRF TF9ERVZJRChkZXYpID09IDB4MEExRSkKPiArI2RlZmluZSBJU19TS0xfVUxUKGRldikJCShJTlRF TF9ERVZJRChkZXYpID09IDB4MTkwNiB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2KSA9PSAw eDE5MTMgfHwgXAo+ICsJCQkJIElOVEVMX0RFVklEKGRldikgPT0gMHgxOTE2IHx8IFwKPiArCQkJ CSBJTlRFTF9ERVZJRChkZXYpID09IDB4MTkyMSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2 KSA9PSAweDE5MjYpCj4gKyNkZWZpbmUgSVNfU0tMX1VMWChkZXYpCQkoSU5URUxfREVWSUQoZGV2 KSA9PSAweDE5MEUgfHwgXAo+ICsJCQkJIElOVEVMX0RFVklEKGRldikgPT0gMHgxOTE1IHx8IFwK PiArCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MTkxRSkKPiAgI2RlZmluZSBJU19QUkVMSU1J TkFSWV9IVyhpbnRlbF9pbmZvKSAoKGludGVsX2luZm8pLT5pc19wcmVsaW1pbmFyeSkKPiAgCj4g ICNkZWZpbmUgU0tMX1JFVklEX0EwCQkoMHgwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGlu ZGV4IDBiOTc5YWQxNmQ0MS4uZmI2M2VhZDJiOGViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gQEAgLTEzODIsNiArMTM4MiwxOCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsK PiAgCQkJCQkJCV9QT1JUX1RYX0RXMTRfTE4wX0MpICsgXAo+ICAJCQkJCSBfQlhUX0xBTkVfT0ZG U0VUKGxhbmUpKQo+ICAKPiArLyogVUFJTUkgc2NyYXRjaCBwYWQgcmVnaXN0ZXIgMSAqLwo+ICsj ZGVmaW5lIFVBSU1JX1NQUjEJCQkweDRGMDc0Cj4gKy8qIFNLTCBWY2NJTyBtYXNrICovCj4gKyNk ZWZpbmUgU0tMX1ZDQ0lPX01BU0sJCQkweDEKPiArLyogU0tMIGJhbGFuY2UgbGVnIHJlZ2lzdGVy ICovCj4gKyNkZWZpbmUgRElTUElPX0NSX1RYX0JNVV9DUjAJCTB4NkMwMEMKPiArLyogSV9ib29z dCB2YWx1ZXMgKi8KPiArI2RlZmluZSBCQUxBTkNFX0xFR19TSElGVChwb3J0KQkJKDgrMyoocG9y dCkpCj4gKyNkZWZpbmUgQkFMQU5DRV9MRUdfTUFTSyhwb3J0KQkJKDc8PCg4KzMqKHBvcnQpKSkK PiArLyogQmFsYW5jZSBsZWcgZGlzYWJsZSBiaXRzICovCj4gKyNkZWZpbmUgQkFMQU5DRV9MRUdf RElTQUJMRV9TSElGVAkyMwo+ICsKPiAgLyoKPiAgICogRmVuY2UgcmVnaXN0ZXJzCj4gICAqLwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggMzFiMjllODc4MWFjLi4wOGY4OTI5OWI1 NzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0zMSw2ICszMSw3IEBACj4g IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHsKPiAgCXUzMiB0cmFuczE7CS8qIGJhbGFuY2UgbGVnIGVu YWJsZSwgZGUtZW1waCBsZXZlbCAqLwo+ICAJdTMyIHRyYW5zMjsJLyogdnJlZiBzZWwsIHZzd2lu ZyAqLwo+ICsJdTggaV9ib29zdDsJLyogU0tMOiBJX2Jvb3N0OyB2YWxpZDogMHgwLCAweDEsIDB4 MywgMHg3ICovCj4gIH07Cj4gIAo+ICAvKiBIRE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGlu ZyBidXQgdGhlIGxhc3QgMiBpdGVtcy4gU28gd2Ugc2hhcmUKPiBAQCAtMzgsMTM0ICszOSwyMTMg QEAgc3RydWN0IGRkaV9idWZfdHJhbnMgewo+ICAgKiBhdXRvbWF0aWNhbGx5IGFkYXB0IHRvIEhE TUkgY29ubmVjdGlvbnMgYXMgd2VsbAo+ICAgKi8KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlf YnVmX3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Cj4gLQl7IDB4MDBGRkZGRkYs IDB4MDAwNjAwMEUgfSwKPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDA1MDAwQSB9LAo+IC0JeyAweDAw QzMwRkZGLCAweDAwMDQwMDA2IH0sCj4gLQl7IDB4ODBBQUFGRkYsIDB4MDAwQjAwMDAgfSwKPiAt CXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwQSB9LAo+IC0JeyAweDAwRDc1RkZGLCAweDAwMEMwMDA0 IH0sCj4gLQl7IDB4ODBDMzBGRkYsIDB4MDAwQjAwMDAgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgw MDA0MDAwNiB9LAo+IC0JeyAweDgwRDc1RkZGLCAweDAwMEIwMDAwIH0sCj4gKwl7IDB4MDBGRkZG RkYsIDB4MDAwNjAwMEUsIDB4MCB9LAo+ICsJeyAweDAwRDc1RkZGLCAweDAwMDUwMDBBLCAweDAg fSwKPiArCXsgMHgwMEMzMEZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sCj4gKwl7IDB4ODBBQUFGRkYs IDB4MDAwQjAwMDAsIDB4MCB9LAo+ICsJeyAweDAwRkZGRkZGLCAweDAwMDUwMDBBLCAweDAgfSwK PiArCXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sCj4gKwl7IDB4ODBDMzBGRkYsIDB4 MDAwQjAwMDAsIDB4MCB9LAo+ICsJeyAweDAwRkZGRkZGLCAweDAwMDQwMDA2LCAweDAgfSwKPiAr CXsgMHg4MEQ3NUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpW10gPSB7Cj4g LQl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUgfSwKPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDBGMDAw QSB9LAo+IC0JeyAweDAwQzMwRkZGLCAweDAwMDYwMDA2IH0sCj4gLQl7IDB4MDBBQUFGRkYsIDB4 MDAxRTAwMDAgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDBGMDAwQSB9LAo+IC0JeyAweDAwRDc1 RkZGLCAweDAwMTYwMDA0IH0sCj4gLQl7IDB4MDBDMzBGRkYsIDB4MDAxRTAwMDAgfSwKPiAtCXsg MHgwMEZGRkZGRiwgMHgwMDA2MDAwNiB9LAo+IC0JeyAweDAwRDc1RkZGLCAweDAwMUUwMDAwIH0s Cj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4MCB9LAo+ICsJeyAweDAwRDc1RkZGLCAw eDAwMEYwMDBBLCAweDAgfSwKPiArCXsgMHgwMEMzMEZGRiwgMHgwMDA2MDAwNiwgMHgwIH0sCj4g Kwl7IDB4MDBBQUFGRkYsIDB4MDAxRTAwMDAsIDB4MCB9LAo+ICsJeyAweDAwRkZGRkZGLCAweDAw MEYwMDBBLCAweDAgfSwKPiArCXsgMHgwMEQ3NUZGRiwgMHgwMDE2MDAwNCwgMHgwIH0sCj4gKwl7 IDB4MDBDMzBGRkYsIDB4MDAxRTAwMDAsIDB4MCB9LAo+ICsJeyAweDAwRkZGRkZGLCAweDAwMDYw MDA2LCAweDAgfSwKPiArCXsgMHgwMEQ3NUZGRiwgMHgwMDFFMDAwMCwgMHgwIH0sCj4gIH07Cj4g IAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlv bnNfaGRtaVtdID0gewo+ICAJCQkJCS8qIElkeAlOVCBtViBkCVQgbVYgZAlkYgkqLwo+IC0JeyAw eDAwRkZGRkZGLCAweDAwMDYwMDBFIH0sCS8qIDA6CTQwMAk0MDAJMAkqLwo+IC0JeyAweDAwRTc5 RkZGLCAweDAwMEUwMDBDIH0sCS8qIDE6CTQwMAk1MDAJMgkqLwo+IC0JeyAweDAwRDc1RkZGLCAw eDAwMDUwMDBBIH0sCS8qIDI6CTQwMAk2MDAJMy41CSovCj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAw NTAwMEEgfSwJLyogMzoJNjAwCTYwMAkwCSovCj4gLQl7IDB4MDBFNzlGRkYsIDB4MDAxRDAwMDcg fSwJLyogNDoJNjAwCTc1MAkyCSovCj4gLQl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDQgfSwJLyog NToJNjAwCTkwMAkzLjUJKi8KPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDA0MDAwNiB9LAkvKiA2Ogk4 MDAJODAwCTAJKi8KPiAtCXsgMHg4MEU3OUZGRiwgMHgwMDAzMDAwMiB9LAkvKiA3Ogk4MDAJMTAw MAkyCSovCj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAxNDAwMDUgfSwJLyogODoJODUwCTg1MAkwCSov Cj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwQzAwMDQgfSwJLyogOToJOTAwCTkwMAkwCSovCj4gLQl7 IDB4MDBGRkZGRkYsIDB4MDAxQzAwMDMgfSwJLyogMTA6CTk1MAk5NTAJMAkqLwo+IC0JeyAweDgw RkZGRkZGLCAweDAwMDMwMDAyIH0sCS8qIDExOgkxMDAwCTEwMDAJMAkqLwo+ICsJeyAweDAwRkZG RkZGLCAweDAwMDYwMDBFLCAweDAgfSwvKiAwOgk0MDAJNDAwCTAJKi8KPiArCXsgMHgwMEU3OUZG RiwgMHgwMDBFMDAwQywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCj4gKwl7IDB4MDBENzVGRkYs IDB4MDAwNTAwMEEsIDB4MCB9LC8qIDI6CTQwMAk2MDAJMy41CSovCj4gKwl7IDB4MDBGRkZGRkYs IDB4MDAwNTAwMEEsIDB4MCB9LC8qIDM6CTYwMAk2MDAJMAkqLwo+ICsJeyAweDAwRTc5RkZGLCAw eDAwMUQwMDA3LCAweDAgfSwvKiA0Ogk2MDAJNzUwCTIJKi8KPiArCXsgMHgwMEQ3NUZGRiwgMHgw MDBDMDAwNCwgMHgwIH0sLyogNToJNjAwCTkwMAkzLjUJKi8KPiArCXsgMHgwMEZGRkZGRiwgMHgw MDA0MDAwNiwgMHgwIH0sLyogNjoJODAwCTgwMAkwCSovCj4gKwl7IDB4ODBFNzlGRkYsIDB4MDAw MzAwMDIsIDB4MCB9LC8qIDc6CTgwMAkxMDAwCTIJKi8KPiArCXsgMHgwMEZGRkZGRiwgMHgwMDE0 MDAwNSwgMHgwIH0sLyogODoJODUwCTg1MAkwCSovCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwQzAw MDQsIDB4MCB9LC8qIDk6CTkwMAk5MDAJMAkqLwo+ICsJeyAweDAwRkZGRkZGLCAweDAwMUMwMDAz LCAweDAgfSwvKiAxMDoJOTUwCTk1MAkwCSovCj4gKwl7IDB4ODBGRkZGRkYsIDB4MDAwMzAwMDIs IDB4MCB9LC8qIDExOgkxMDAwCTEwMDAJMAkqLwo+ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewo+IC0JeyAw eDAwRkZGRkZGLCAweDAwMDAwMDEyIH0sCj4gLQl7IDB4MDBFQkFGRkYsIDB4MDAwMjAwMTEgfSwK PiAtCXsgMHgwMEM3MUZGRiwgMHgwMDA2MDAwRiB9LAo+IC0JeyAweDAwQUFBRkZGLCAweDAwMEUw MDBBIH0sCj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwMjAwMTEgfSwKPiAtCXsgMHgwMERCNkZGRiwg MHgwMDA1MDAwRiB9LAo+IC0JeyAweDAwQkVFRkZGLCAweDAwMEEwMDBDIH0sCj4gLQl7IDB4MDBG RkZGRkYsIDB4MDAwNTAwMEYgfSwKPiAtCXsgMHgwMERCNkZGRiwgMHgwMDBBMDAwQyB9LAo+ICsJ eyAweDAwRkZGRkZGLCAweDAwMDAwMDEyLCAweDAgfSwKPiArCXsgMHgwMEVCQUZGRiwgMHgwMDAy MDAxMSwgMHgwIH0sCj4gKwl7IDB4MDBDNzFGRkYsIDB4MDAwNjAwMEYsIDB4MCB9LAo+ICsJeyAw eDAwQUFBRkZGLCAweDAwMEUwMDBBLCAweDAgfSwKPiArCXsgMHgwMEZGRkZGRiwgMHgwMDAyMDAx MSwgMHgwIH0sCj4gKwl7IDB4MDBEQjZGRkYsIDB4MDAwNTAwMEYsIDB4MCB9LAo+ICsJeyAweDAw QkVFRkZGLCAweDAwMEEwMDBDLCAweDAgfSwKPiArCXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwRiwg MHgwIH0sCj4gKwl7IDB4MDBEQjZGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAo+ICB9Owo+ICAKPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2Rw W10gPSB7Cj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUgfSwKPiAtCXsgMHgwMEQ3NUZGRiwg MHgwMDBFMDAwQSB9LAo+IC0JeyAweDAwQkVGRkZGLCAweDAwMTQwMDA2IH0sCj4gLQl7IDB4ODBC MkNGRkYsIDB4MDAxQjAwMDIgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDBFMDAwQSB9LAo+IC0J eyAweDAwREI2RkZGLCAweDAwMTYwMDA1IH0sCj4gLQl7IDB4ODBDNzFGRkYsIDB4MDAxQTAwMDIg fSwKPiAtCXsgMHgwMEY3REZGRiwgMHgwMDE4MDAwNCB9LAo+IC0JeyAweDgwRDc1RkZGLCAweDAw MUIwMDAyIH0sCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4MCB9LAo+ICsJeyAweDAw RDc1RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKPiArCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwg MHgwIH0sCj4gKwl7IDB4ODBCMkNGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAo+ICsJeyAweDAwRkZG RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKPiArCXsgMHgwMERCNkZGRiwgMHgwMDE2MDAwNSwgMHgw IH0sCj4gKwl7IDB4ODBDNzFGRkYsIDB4MDAxQTAwMDIsIDB4MCB9LAo+ICsJeyAweDAwRjdERkZG LCAweDAwMTgwMDA0LCAweDAgfSwKPiArCXsgMHg4MEQ3NUZGRiwgMHgwMDFCMDAwMiwgMHgwIH0s Cj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2RkaV90 cmFuc2xhdGlvbnNfZmRpW10gPSB7Cj4gLQl7IDB4MDBGRkZGRkYsIDB4MDAwMTAwMEUgfSwKPiAt CXsgMHgwMEQ3NUZGRiwgMHgwMDA0MDAwQSB9LAo+IC0JeyAweDAwQzMwRkZGLCAweDAwMDcwMDA2 IH0sCj4gLQl7IDB4MDBBQUFGRkYsIDB4MDAwQzAwMDAgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgw MDA0MDAwQSB9LAo+IC0JeyAweDAwRDc1RkZGLCAweDAwMDkwMDA0IH0sCj4gLQl7IDB4MDBDMzBG RkYsIDB4MDAwQzAwMDAgfSwKPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwNiB9LAo+IC0JeyAw eDAwRDc1RkZGLCAweDAwMEMwMDAwIH0sCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwMTAwMEUsIDB4 MCB9LAo+ICsJeyAweDAwRDc1RkZGLCAweDAwMDQwMDBBLCAweDAgfSwKPiArCXsgMHgwMEMzMEZG RiwgMHgwMDA3MDAwNiwgMHgwIH0sCj4gKwl7IDB4MDBBQUFGRkYsIDB4MDAwQzAwMDAsIDB4MCB9 LAo+ICsJeyAweDAwRkZGRkZGLCAweDAwMDQwMDBBLCAweDAgfSwKPiArCXsgMHgwMEQ3NUZGRiwg MHgwMDA5MDAwNCwgMHgwIH0sCj4gKwl7IDB4MDBDMzBGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAo+ ICsJeyAweDAwRkZGRkZGLCAweDAwMDcwMDA2LCAweDAgfSwKPiArCXsgMHgwMEQ3NUZGRiwgMHgw MDBDMDAwMCwgMHgwIH0sCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZf dHJhbnMgYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewo+ICAJCQkJCS8qIElkeAlOVCBt ViBkCVQgbVYgZGYJZGIJKi8KPiAtCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSB9LAkvKiAwOgk0 MDAJNDAwCTAJKi8KPiAtCXsgMHgwMEQ3NUZGRiwgMHgwMDBFMDAwQSB9LAkvKiAxOgk0MDAJNjAw CTMuNQkqLwo+IC0JeyAweDAwQkVGRkZGLCAweDAwMTQwMDA2IH0sCS8qIDI6CTQwMAk4MDAJNgkq Lwo+IC0JeyAweDAwRkZGRkZGLCAweDAwMDkwMDBEIH0sCS8qIDM6CTQ1MAk0NTAJMAkqLwo+IC0J eyAweDAwRkZGRkZGLCAweDAwMEUwMDBBIH0sCS8qIDQ6CTYwMAk2MDAJMAkqLwo+IC0JeyAweDAw RDdGRkZGLCAweDAwMTQwMDA2IH0sCS8qIDU6CTYwMAk4MDAJMi41CSovCj4gLQl7IDB4ODBDQjJG RkYsIDB4MDAxQjAwMDIgfSwJLyogNjoJNjAwCTEwMDAJNC41CSovCj4gLQl7IDB4MDBGRkZGRkYs IDB4MDAxNDAwMDYgfSwJLyogNzoJODAwCTgwMAkwCSovCj4gLQl7IDB4ODBFNzlGRkYsIDB4MDAx QjAwMDIgfSwJLyogODoJODAwCTEwMDAJMgkqLwo+IC0JeyAweDgwRkZGRkZGLCAweDAwMUIwMDAy IH0sCS8qIDk6CTEwMDAJMTAwMAkwCSovCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4 MCB9LC8qIDA6CTQwMAk0MDAJMAkqLwo+ICsJeyAweDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAg fSwvKiAxOgk0MDAJNjAwCTMuNQkqLwo+ICsJeyAweDAwQkVGRkZGLCAweDAwMTQwMDA2LCAweDAg fSwvKiAyOgk0MDAJODAwCTYJKi8KPiArCXsgMHgwMEZGRkZGRiwgMHgwMDA5MDAwRCwgMHgwIH0s LyogMzoJNDUwCTQ1MAkwCSovCj4gKwl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8q IDQ6CTYwMAk2MDAJMAkqLwo+ICsJeyAweDAwRDdGRkZGLCAweDAwMTQwMDA2LCAweDAgfSwvKiA1 Ogk2MDAJODAwCTIuNQkqLwo+ICsJeyAweDgwQ0IyRkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA2 Ogk2MDAJMTAwMAk0LjUJKi8KPiArCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyog NzoJODAwCTgwMAkwCSovCj4gKwl7IDB4ODBFNzlGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDg6 CTgwMAkxMDAwCTIJKi8KPiArCXsgMHg4MEZGRkZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sLyogOToJ MTAwMAkxMDAwCTAJKi8KPiAgfTsKPiAgCj4gKy8qIFNreWxha2UgSCwgUywgYW5kIFNreWxha2Ug WSB3aXRoIDAuOTVWIFZjY0lPICovCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFu cyBza2xfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewo+IC0JeyAweDAwMDAwMDE4LCAweDAwMDAw MGEyIH0sCj4gLQl7IDB4MDAwMDQwMTQsIDB4MDAwMDAwOUIgfSwKPiAtCXsgMHgwMDAwNjAxMiwg MHgwMDAwMDA4OCB9LAo+IC0JeyAweDAwMDA4MDEwLCAweDAwMDAwMDg3IH0sCj4gLQl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwOUIgfSwKPiAtCXsgMHgwMDAwNDAxNCwgMHgwMDAwMDA4OCB9LAo+IC0J eyAweDAwMDA2MDEyLCAweDAwMDAwMDg3IH0sCj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwODgg fSwKPiAtCXsgMHgwMDAwNDAxNCwgMHgwMDAwMDA4NyB9LAo+ICsJeyAweDAwMDAyMDE2LCAweDAw MDAwMEEwLCAweDAgfSwKPiArCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0sCj4gKwl7 IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDAwMDA5MDEwLCAweDAwMDAw MEM3LCAweDAgfSwKPiArCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5QiwgMHgwIH0sCj4gKwl7IDB4 MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDExLCAweDAwMDAwMEM3 LCAweDAgfSwKPiArCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBERiwgMHgwIH0sCj4gKwl7IDB4MDAw MDUwMTIsIDB4MDAwMDAwQzcsIDB4MCB9LAo+ICB9Owo+ICAKPiAtLyogZURQIDEuNCBsb3cgdnN3 aW5nIHRyYW5zbGF0aW9uIHBhcmFtZXRlcnMgKi8KPiArLyogU2t5bGFrZSBVICovCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwW10g PSB7Cj4gKwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQTIsIDB4MCB9LAo+ICsJeyAweDAwMDA1MDEy LCAweDAwMDAwMDg4LCAweDAgfSwKPiArCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA4NywgMHgwIH0s Cj4gKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzcsIDB4MSB9LAkvKiBVc2VzIElfYm9vc3QgKi8K PiArCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5RCwgMHgwIH0sCj4gKwl7IDB4MDAwMDUwMTIsIDB4 MDAwMDAwQzcsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDExLCAweDAwMDAwMEM3LCAweDAgfSwKPiAr CXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gKwl7IDB4MDAwMDUwMTIsIDB4MDAw MDAwQzcsIDB4MCB9LAo+ICt9Owo+ICsKPiArLyogU2t5bGFrZSBZIHdpdGggMC44NVYgVmNjSU8g Ki8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95XzA4NXZfZGRpX3Ry YW5zbGF0aW9uc19kcFtdID0gewo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEEyLCAweDAgfSwK PiArCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCj4gKwl7IDB4MDAwMDcwMTEsIDB4 MDAwMDAwODcsIDB4MCB9LAo+ICsJeyAweDgwMDA5MDEwLCAweDAwMDAwMEM3LCAweDEgfSwJLyog VXNlcyBJX2Jvb3N0ICovCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQsIDB4MCB9LAo+ICsJ eyAweDAwMDA1MDEyLCAweDAwMDAwMEM3LCAweDAgfSwKPiArCXsgMHgwMDAwNzAxMSwgMHgwMDAw MDBDNywgMHgwIH0sCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAw eDAwMDA1MDEyLCAweDAwMDAwMEM3LCAweDAgfSwKPiArfTsKPiArCj4gKy8qCj4gKyAqIFNreWxh a2UgSCBhbmQgUywgYW5kIFNreWxha2UgWSB3aXRoIDAuOTVWIFZjY0lPCj4gKyAqIGVEUCAxLjQg bG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCj4gKyAqLwo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Cj4gLQl7 IDB4MDAwMDAwMTgsIDB4MDAwMDAwYTggfSwKPiAtCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBhYiB9 LAo+IC0JeyAweDAwMDA2MDEyLCAweDAwMDAwMGEyIH0sCj4gLQl7IDB4MDAwMDgwMTAsIDB4MDAw MDAwODggfSwKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBhYiB9LAo+IC0JeyAweDAwMDA0MDE0 LCAweDAwMDAwMGEyIH0sCj4gLQl7IDB4MDAwMDYwMTIsIDB4MDAwMDAwYTYgfSwKPiAtCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDBhMiB9LAo+IC0JeyAweDAwMDA1MDEzLCAweDAwMDAwMDljIH0sCj4g LQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwODggfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBB OCwgMHgwIH0sCj4gKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAo+ICsJeyAweDAw MDA3MDExLCAweDAwMDAwMEEyLCAweDAgfSwKPiArCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDA5Qywg MHgwIH0sCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAo+ICsJeyAweDAwMDA2 MDEzLCAweDAwMDAwMEEyLCAweDAgfSwKPiArCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgw IH0sCj4gKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUIsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDEz LCAweDAwMDAwMDlGLCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0s Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBTa3lsYWtlIFUKPiArICogZURQIDEuNCBsb3cgdnN3aW5n IHRyYW5zbGF0aW9uIHBhcmFtZXRlcnMKPiArICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewo+ICsJeyAweDAwMDAw MDE4LCAweDAwMDAwMEE4LCAweDAgfSwKPiArCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBBOSwgMHgw IH0sCj4gKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTIsIDB4MCB9LAo+ICsJeyAweDAwMDA5MDEw LCAweDAwMDAwMDlDLCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOSwgMHgwIH0s Cj4gKwl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDExLCAw eDAwMDAwMEE2LCAweDAgfSwKPiArCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBQiwgMHgwIH0sCj4g Kwl7IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9LAo+ICsJeyAweDAwMDAwMDE4LCAweDAw MDAwMERGLCAweDAgfSwKPiAgfTsKPiAgCj4gKy8qCj4gKyAqIFNreWxha2UgWSB3aXRoIDAuOTVW IFZjY0lPCj4gKyAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCj4g KyAqLwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfMDg1dl9kZGlf dHJhbnNsYXRpb25zX2VkcFtdID0gewo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE4LCAweDAg fSwKPiArCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBBQiwgMHgwIH0sCj4gKwl7IDB4MDAwMDcwMTEs IDB4MDAwMDAwQTQsIDB4MCB9LAo+ICsJeyAweDAwMDA5MDEwLCAweDAwMDAwMERGLCAweDAgfSwK PiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQSwgMHgwIH0sCj4gKwl7IDB4MDAwMDYwMTMsIDB4 MDAwMDAwQTQsIDB4MCB9LAo+ICsJeyAweDAwMDA3MDExLCAweDAwMDAwMDlELCAweDAgfSwKPiAr CXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMCwgMHgwIH0sCj4gKwl7IDB4MDAwMDYwMTIsIDB4MDAw MDAwREYsIDB4MCB9LAo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMDhBLCAweDAgfSwKPiArfTsK PiAgCj4gKy8qIFNreWxha2UgSCwgUyBhbmQgVSwgYW5kIFNreWxha2UgWSB3aXRoIDAuOTVWIFZj Y0lPICovCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5z bGF0aW9uc19oZG1pW10gPSB7Cj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwYWMgfSwKPiAtCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDA5ZCB9LAo+IC0JeyAweDAwMDA3MDExLCAweDAwMDAwMDg4IH0s Cj4gLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwYTEgfSwKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDA5OCB9LAo+IC0JeyAweDAwMDA0MDEzLCAweDAwMDAwMDg4IH0sCj4gLQl7IDB4MDAwMDYwMTIs IDB4MDAwMDAwODcgfSwKPiAtCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBkZiB9LAo+IC0JeyAweDAw MDAzMDE1LCAweDAwMDAwMDg3IH0sCj4gLQl7IDB4MDAwMDMwMTUsIDB4MDAwMDAwYzcgfSwKPiAt CXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBjNyB9LAo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEFD LCAweDAgfSwKPiArCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5RCwgMHgwIH0sCj4gKwl7IDB4MDAw MDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAw eDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5OCwgMHgwIH0sCj4gKwl7IDB4MDAwMDQw MTMsIDB4MDAwMDAwODgsIDB4MCB9LAo+ICsJeyAweDAwMDA2MDEyLCAweDAwMDAwMDg3LCAweDAg fSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0sCj4gKwl7IDB4MDAwMDMwMTUs IDB4MDAwMDAwODcsIDB4MCB9LAkvKiBEZWZhdWx0ICovCj4gKwl7IDB4MDAwMDMwMTUsIDB4MDAw MDAwQzcsIDB4MCB9LAo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEM3LCAweDAgfSwKPiArfTsK PiArCj4gKy8qIFNreWxha2UgWSB3aXRoIDAuODVWIFZjY0lPICovCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV8wODV2X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0g ewo+ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAweDAgfSwKPiArCXsgMHgwMDAwNTAxMiwg MHgwMDAwMDBERiwgMHgwIH0sCj4gKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODQsIDB4MCB9LAo+ ICsJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE0LCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgw MDAwMDA5RCwgMHgwIH0sCj4gKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwODAsIDB4MCB9LAo+ICsJ eyAweDAwMDA2MDEzLCAweDAwMDAwMEM3LCAweDAgfSwKPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDA4QSwgMHgwIH0sCj4gKwl7IDB4MDAwMDMwMTUsIDB4MDAwMDAwQzcsIDB4MCB9LAkvKiBEZWZh dWx0ICovCj4gKwl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQzcsIDB4NyB9LAkvKiBVc2VzIElfYm9v c3QgKi8KPiArCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBDNywgMHgwIH0sCj4gIH07Cj4gIAo+ICBz dHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgewo+IEBAIC0xOTAsNyArMjcwLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0g ewo+ICAJeyAxNTQsIDB4OUEsIDAsIDY0LCAgZmFsc2UgfSwJLyogNjoJNjAwCQk2ICAgKi8KPiAg CXsgMTAyLCAweDlBLCAwLCAxMjgsIGZhbHNlIH0sCS8qIDc6CTgwMAkJMCAgICovCj4gIAl7IDE1 NCwgMHg5QSwgMCwgODUsICBmYWxzZSB9LAkvKiA4Ogk4MDAJCTMuNSAqLwo+IC0JeyAxNTQsIDB4 OUEsIDEsIDEyOCwgZmFsc2UgfSwgIC8qIDk6CTEyMDAJCTAgICAqLwo+ICsJeyAxNTQsIDB4OUEs IDEsIDEyOCwgZmFsc2UgfSwJLyogOToJMTIwMAkJMCAgICovCj4gIH07Cj4gIAo+ICAvKiBCU3Bl YyBoYXMgMiByZWNvbW1lbmRlZCB2YWx1ZXMgLSBlbnRyaWVzIDAgYW5kIDguCj4gQEAgLTIxMCw2 ICsyOTAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIGJ4dF9kZGlf dHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKPiAgCXsgMTU0LCAweDlBLCAxLCAxMjgsIHRydWUgfSwJ LyogOToJMTIwMAkJMCAgICovCj4gIH07Cj4gIAo+ICtzdGF0aWMgdm9pZCBieHRfZGRpX3Zzd2lu Z19zZXF1ZW5jZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbGV2ZWwsCj4gKwkJCQkgICAg ZW51bSBwb3J0IHBvcnQsIGludCB0eXBlKTsKPiArCj4gIHN0YXRpYyB2b2lkIGRkaV9nZXRfZW5j b2Rlcl9wb3J0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ICAJCQkJIHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKipkaWdfcG9ydCwKPiAgCQkJCSBlbnVtIHBvcnQgKnBv cnQpCj4gQEAgLTI0OSw2ICszMzIsOTkgQEAgaW50ZWxfZGlnX3BvcnRfc3VwcG9ydHNfaGRtaShj b25zdCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgCXJldHVy biBpbnRlbF9kaWdfcG9ydC0+aGRtaS5oZG1pX3JlZzsKPiAgfQo+ICAKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpza2xfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICsJCQkJCQkJaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwljb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9uczsKPiArCXN0YXRpYyBpbnQgaXNfMDk1 diA9IC0xOwo+ICsKPiArCWlmIChpc18wOTV2ID09IC0xKSB7Cj4gKwkJdTMyIHNwcjEgPSBJOTE1 X1JFQUQoVUFJTUlfU1BSMSk7Cj4gKwkJaXNfMDk1diA9IHNwcjEgJiBTS0xfVkNDSU9fTUFTSzsK PiArCX0KPiArCj4gKwlpZiAoSVNfU0tMX1VMWChkZXYpICYmICFpc18wOTV2KSB7Cj4gKwkJZGRp X3RyYW5zbGF0aW9ucyA9IHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiArCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShza2xfeV8wODV2X2RkaV90cmFuc2xhdGlvbnNfZHApOwo+ICsJ fSBlbHNlIGlmIChJU19TS0xfVUxUKGRldikpIHsKPiArCQlkZGlfdHJhbnNsYXRpb25zID0gc2ts X3VfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xf dV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCX0gZWxzZSB7Cj4gKwkJZGRpX3RyYW5zbGF0aW9u cyA9IHNrbF9kZGlfdHJhbnNsYXRpb25zX2RwOwo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KHNrbF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZGRpX3RyYW5z bGF0aW9uczsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpz a2xfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCQkJCSBp bnQgKm5fZW50cmllcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlf dHJhbnNsYXRpb25zOwo+ICsJc3RhdGljIGludCBpc18wOTV2ID0gLTE7Cj4gKwo+ICsJaWYgKGlz XzA5NXYgPT0gLTEpIHsKPiArCQl1MzIgc3ByMSA9IEk5MTVfUkVBRChVQUlNSV9TUFIxKTsKPiAr CQlpc18wOTV2ID0gc3ByMSAmIFNLTF9WQ0NJT19NQVNLOwo+ICsJfQo+ICsKPiArCWlmIChJU19T S0xfVUxYKGRldikgJiYgIWlzXzA5NXYpIHsKPiArCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3 aW5nKSB7Cj4gKwkJCWRkaV90cmFuc2xhdGlvbnMgPSBza2xfeV8wODV2X2RkaV90cmFuc2xhdGlv bnNfZWRwOwo+ICsJCQkqbl9lbnRyaWVzID0KPiArCQkJCUFSUkFZX1NJWkUoc2tsX3lfMDg1dl9k ZGlfdHJhbnNsYXRpb25zX2VkcCk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZGRpX3RyYW5zbGF0aW9u cyA9IHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19kcDsKPiArCQkJKm5fZW50cmllcyA9Cj4g KwkJCQlBUlJBWV9TSVpFKHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4gKwkJfQo+ ICsJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldikpIHsKPiArCQlpZiAoZGV2X3ByaXYtPmVkcF9s b3dfdnN3aW5nKSB7Cj4gKwkJCWRkaV90cmFuc2xhdGlvbnMgPSBza2xfdV9kZGlfdHJhbnNsYXRp b25zX2VkcDsKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3VfZGRpX3RyYW5zbGF0 aW9uc19lZHApOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWRkaV90cmFuc2xhdGlvbnMgPSBza2xfdV9k ZGlfdHJhbnNsYXRpb25zX2RwOwo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfdV9k ZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQl9Cj4gKwl9IGVsc2Ugewo+ICsJCWlmIChkZXZfcHJp di0+ZWRwX2xvd192c3dpbmcpIHsKPiArCQkJZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF9kZGlfdHJh bnNsYXRpb25zX2VkcDsKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFu c2xhdGlvbnNfZWRwKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlkZGlfdHJhbnNsYXRpb25zID0gc2ts X2RkaV90cmFuc2xhdGlvbnNfZHA7Cj4gKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF9k ZGlfdHJhbnNsYXRpb25zX2RwKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGRkaV90cmFu c2xhdGlvbnM7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAq Cj4gK3NrbF9nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkg ICAgICAgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFu cyAqZGRpX3RyYW5zbGF0aW9uczsKPiArCXN0YXRpYyBpbnQgaXNfMDk1diA9IC0xOwo+ICsKPiAr CWlmIChpc18wOTV2ID09IC0xKSB7Cj4gKwkJdTMyIHNwcjEgPSBJOTE1X1JFQUQoVUFJTUlfU1BS MSk7Cj4gKwkJaXNfMDk1diA9IHNwcjEgJiBTS0xfVkNDSU9fTUFTSzsKPiArCX0KPiArCj4gKwlp ZiAoSVNfU0tMX1VMWChkZXYpICYmICFpc18wOTV2KSB7Cj4gKwkJZGRpX3RyYW5zbGF0aW9ucyA9 IHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwo+ICsJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKHNrbF95XzA4NXZfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKPiArCX0gZWxzZSB7Cj4g KwkJZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cj4gKwkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7Cj4gK30KPiArCj4gIC8qCj4gICAqIFN0YXJ0 aW5nIHdpdGggSGFzd2VsbCwgRERJIHBvcnQgYnVmZmVycyBtdXN0IGJlIHByb2dyYW1tZWQgd2l0 aCBjb3JyZWN0Cj4gICAqIHZhbHVlcyBpbiBhZHZhbmNlLiBUaGUgYnVmZmVyIHZhbHVlcyBhcmUg ZGlmZmVyZW50IGZvciBGREkgYW5kIERQIG1vZGVzLAo+IEBAIC0yNzksMjAgKzQ1NSwxMyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2RkaV9idWZmZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGVudW0gcG9ydCBwb3J0LAo+ICAJCQkJCUlOVEVMX09VVFBVVF9IRE1JKTsKPiAgCQlyZXR1 cm47Cj4gIAl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2KSkgewo+IC0JCWRkaV90cmFuc2xhdGlv bnNfZmRpID0gTlVMTDsKPiAtCQlkZGlfdHJhbnNsYXRpb25zX2RwID0gc2tsX2RkaV90cmFuc2xh dGlvbnNfZHA7Cj4gLQkJbl9kcF9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3RyYW5zbGF0 aW9uc19kcCk7Cj4gLQkJaWYgKGRldl9wcml2LT5lZHBfbG93X3Zzd2luZykgewo+IC0JCQlkZGlf dHJhbnNsYXRpb25zX2VkcCA9IHNrbF9kZGlfdHJhbnNsYXRpb25zX2VkcDsKPiAtCQkJbl9lZHBf ZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKPiAtCQl9IGVs c2Ugewo+IC0JCQlkZGlfdHJhbnNsYXRpb25zX2VkcCA9IHNrbF9kZGlfdHJhbnNsYXRpb25zX2Rw Owo+IC0JCQluX2VkcF9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3RyYW5zbGF0aW9uc19k cCk7Cj4gLQkJfQo+IC0KPiAtCQlkZGlfdHJhbnNsYXRpb25zX2hkbWkgPSBza2xfZGRpX3RyYW5z bGF0aW9uc19oZG1pOwo+IC0JCW5faGRtaV9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3Ry YW5zbGF0aW9uc19oZG1pKTsKPiAtCQloZG1pX2RlZmF1bHRfZW50cnkgPSA3Owo+ICsJCWRkaV90 cmFuc2xhdGlvbnNfZHAgPQo+ICsJCQkJc2tsX2dldF9idWZfdHJhbnNfZHAoZGV2LCAmbl9kcF9l bnRyaWVzKTsKPiArCQlkZGlfdHJhbnNsYXRpb25zX2VkcCA9Cj4gKwkJCQlza2xfZ2V0X2J1Zl90 cmFuc19lZHAoZGV2LCAmbl9lZHBfZW50cmllcyk7Cj4gKwkJZGRpX3RyYW5zbGF0aW9uc19oZG1p ID0KPiArCQkJCXNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2LCAmbl9oZG1pX2VudHJpZXMpOwo+ ICsJCWhkbWlfZGVmYXVsdF9lbnRyeSA9IDg7Cj4gIAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChk ZXYpKSB7Cj4gIAkJZGRpX3RyYW5zbGF0aW9uc19mZGkgPSBiZHdfZGRpX3RyYW5zbGF0aW9uc19m ZGk7Cj4gIAkJZGRpX3RyYW5zbGF0aW9uc19kcCA9IGJkd19kZGlfdHJhbnNsYXRpb25zX2RwOwo+ IEBAIC0xODA2LDggKzE5NzUsNDkgQEAgdm9pZCBpbnRlbF9kZGlfZGlzYWJsZV9waXBlX2Nsb2Nr KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+ICAJCQkgICBUUkFOU19DTEtfU0VMX0RJ U0FCTEVEKTsKPiAgfQo+ICAKPiAtdm9pZCBieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1MzIgbGV2ZWwsCj4gLQkJCSAgICAgZW51bSBwb3J0IHBvcnQsIGlu dCB0eXBlKQo+ICtzdGF0aWMgdm9pZCBza2xfZGRpX3NldF9pYm9vc3Qoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTMyIGxldmVsLAo+ICsJCQkgICAgICAgZW51bSBwb3J0IHBvcnQsIGludCB0eXBl KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ICsJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnM7 Cj4gKwl1aW50OF90IGlib29zdDsKPiArCWludCBuX2VudHJpZXM7Cj4gKwl1MzIgcmVnOwo+ICsK PiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkgewo+ICsJCWRkaV90cmFu c2xhdGlvbnMgPSBza2xfZ2V0X2J1Zl90cmFuc19kcChkZXYsICZuX2VudHJpZXMpOwo+ICsJCWli b29zdCA9IGRkaV90cmFuc2xhdGlvbnNbcG9ydF0uaV9ib29zdDsKPiArCX0gZWxzZSBpZiAodHlw ZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4gKwkJZGRpX3RyYW5zbGF0aW9ucyA9IHNrbF9nZXRf YnVmX3RyYW5zX2VkcChkZXYsICZuX2VudHJpZXMpOwo+ICsJCWlib29zdCA9IGRkaV90cmFuc2xh dGlvbnNbcG9ydF0uaV9ib29zdDsKPiArCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRf SERNSSkgewo+ICsJCWRkaV90cmFuc2xhdGlvbnMgPSBza2xfZ2V0X2J1Zl90cmFuc19oZG1pKGRl diwgJm5fZW50cmllcyk7Cj4gKwkJaWJvb3N0ID0gZGRpX3RyYW5zbGF0aW9uc1twb3J0XS5pX2Jv b3N0Owo+ICsJfSBlbHNlIHsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogTWFrZSBzdXJl IHRoYXQgdGhlIHJlcXVlc3RlZCBJX2Jvb3N0IGlzIHZhbGlkICovCj4gKwlpZiAoaWJvb3N0ICYm IGlib29zdCAhPSAweDEgJiYgaWJvb3N0ICE9IDB4MyAmJiBpYm9vc3QgIT0gMHg3KSB7Cj4gKwkJ RFJNX0VSUk9SKCJJbnZhbGlkIElfYm9vc3QgdmFsdWUgJXVcbiIsIGlib29zdCk7Cj4gKwkJcmV0 dXJuOwo+ICsJfQo+ICsKPiArCXJlZyA9IEk5MTVfUkVBRChESVNQSU9fQ1JfVFhfQk1VX0NSMCk7 Cj4gKwlyZWcgJj0gfkJBTEFOQ0VfTEVHX01BU0socG9ydCk7Cj4gKwlyZWcgJj0gfigxIDw8IChC QUxBTkNFX0xFR19ESVNBQkxFX1NISUZUICsgcG9ydCkpOwo+ICsKPiArCWlmIChpYm9vc3QpIHsK PiArCQlyZWcgfD0gaWJvb3N0IDw8IEJBTEFOQ0VfTEVHX1NISUZUKHBvcnQpOwo+ICsJfSBlbHNl IHsKPiArCQlyZWcgfD0gMSA8PCAoQkFMQU5DRV9MRUdfRElTQUJMRV9TSElGVCArIHBvcnQpOwo+ ICsJfQo+ICsKPiArCUk5MTVfV1JJVEUoRElTUElPX0NSX1RYX0JNVV9DUjAsIHJlZyk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHUzMiBsZXZlbCwKPiArCQkJCSAgICBlbnVtIHBvcnQgcG9ydCwgaW50IHR5cGUp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gIAljb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlv bnM7Cj4gQEAgLTE4NjcsNiArMjA3Nyw3MyBAQCB2b2lkIGJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBsZXZlbCwKPiAgCUk5MTVfV1JJVEUoQlhUX1BP UlRfUENTX0RXMTBfR1JQKHBvcnQpLCB2YWwpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdWludDMyX3Qg dHJhbnNsYXRlX3NpZ25hbF9sZXZlbChpbnQgc2lnbmFsX2xldmVscykKPiArewo+ICsJdWludDMy X3QgbGV2ZWw7Cj4gKwo+ICsJc3dpdGNoIChzaWduYWxfbGV2ZWxzKSB7Cj4gKwlkZWZhdWx0Ogo+ ICsJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIHZvbHRhZ2Ugc3dpbmcvcHJlLWVtcGhhc2lz IGxldmVsOiAiCj4gKwkJCSAgICAgICIweCV4XG4iLCBzaWduYWxfbGV2ZWxzKTsKPiArCWNhc2Ug RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxf MDoKPiArCQlsZXZlbCA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX1RSQUlOX1ZPTFRBR0Vf U1dJTkdfTEVWRUxfMCB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzE6Cj4gKwkJbGV2ZWwgPSAx Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzAgfCBE UF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8yOgo+ICsJCWxldmVsID0gMjsKPiArCQlicmVhazsKPiAr CWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wIHwgRFBfVFJBSU5fUFJFX0VNUEhf TEVWRUxfMzoKPiArCQlsZXZlbCA9IDM7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBEUF9UUkFJ Tl9WT0xUQUdFX1NXSU5HX0xFVkVMXzEgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wOgo+ICsJ CWxldmVsID0gNDsKPiArCQlicmVhazsKPiArCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19M RVZFTF8xIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMToKPiArCQlsZXZlbCA9IDU7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMSB8IERQX1RSQUlO X1BSRV9FTVBIX0xFVkVMXzI6Cj4gKwkJbGV2ZWwgPSA2Owo+ICsJCWJyZWFrOwo+ICsKPiArCWNh c2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVW RUxfMDoKPiArCQlsZXZlbCA9IDc7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTEVWRUxfMiB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzE6Cj4gKwkJbGV2ZWwg PSA4Owo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZF TF8zIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMDoKPiArCQlsZXZlbCA9IDk7Cj4gKwkJYnJl YWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGxldmVsOwo+ICt9Cj4gKwo+ICt1aW50MzJfdCBkZGlf c2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICt7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcG9ydC0+YmFzZS5iYXNlLmRldjsKPiArCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwb3J0LT5iYXNlOwo+ICsJdWludDhfdCB0cmFp bl9zZXQgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBdOwo+ICsJaW50IHNpZ25hbF9sZXZlbHMgPSB0 cmFpbl9zZXQgJiAoRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLIHwKPiArCQkJCQkgRFBfVFJB SU5fUFJFX0VNUEhBU0lTX01BU0spOwo+ICsJZW51bSBwb3J0IHBvcnQgPSBkcG9ydC0+cG9ydDsK PiArCXVpbnQzMl90IGxldmVsOwo+ICsKPiArCWxldmVsID0gdHJhbnNsYXRlX3NpZ25hbF9sZXZl bChzaWduYWxfbGV2ZWxzKTsKPiArCj4gKwlpZiAoSVNfU0tZTEFLRShkZXYpKQo+ICsJCXNrbF9k ZGlfc2V0X2lib29zdChkZXYsIGxldmVsLCBwb3J0LCBlbmNvZGVyLT50eXBlKTsKPiArCWVsc2Ug aWYgKElTX0JST1hUT04oZGV2KSkKPiArCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShkZXYsIGxl dmVsLCBwb3J0LCBlbmNvZGVyLT50eXBlKTsKPiArCj4gKwlyZXR1cm4gRERJX0JVRl9UUkFOU19T RUxFQ1QobGV2ZWwpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgewo+ICAJc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gaW5kZXggZjUyZWVmMTM4MjQ3Li4wNDFlMmQ2ZGNjNTYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMzQxNyw5MiArMzQxNyw2IEBAIGdlbjdfZWRwX3NpZ25h bF9sZXZlbHModWludDhfdCB0cmFpbl9zZXQpCj4gIAl9Cj4gIH0KPiAgCj4gLS8qIEdlbjcuNSdz IChIU1cpIERQIHZvbHRhZ2Ugc3dpbmcgYW5kIHByZS1lbXBoYXNpcyBjb250cm9sICovCj4gLXN0 YXRpYyB1aW50MzJfdAo+IC1oc3dfc2lnbmFsX2xldmVscyh1aW50OF90IHRyYWluX3NldCkKPiAt ewo+IC0JaW50IHNpZ25hbF9sZXZlbHMgPSB0cmFpbl9zZXQgJiAoRFBfVFJBSU5fVk9MVEFHRV9T V0lOR19NQVNLIHwKPiAtCQkJCQkgRFBfVFJBSU5fUFJFX0VNUEhBU0lTX01BU0spOwo+IC0Jc3dp dGNoIChzaWduYWxfbGV2ZWxzKSB7Cj4gLQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVW RUxfMCB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA6Cj4gLQkJcmV0dXJuIERESV9CVUZfVFJB TlNfU0VMRUNUKDApOwo+IC0JY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzAgfCBE UF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOgo+IC0JCXJldHVybiBERElfQlVGX1RSQU5TX1NFTEVD VCgxKTsKPiAtCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wIHwgRFBfVFJBSU5f UFJFX0VNUEhfTEVWRUxfMjoKPiAtCQlyZXR1cm4gRERJX0JVRl9UUkFOU19TRUxFQ1QoMik7Cj4g LQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMCB8IERQX1RSQUlOX1BSRV9FTVBI X0xFVkVMXzM6Cj4gLQkJcmV0dXJuIERESV9CVUZfVFJBTlNfU0VMRUNUKDMpOwo+IC0KPiAtCWNh c2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8xIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVW RUxfMDoKPiAtCQlyZXR1cm4gRERJX0JVRl9UUkFOU19TRUxFQ1QoNCk7Cj4gLQljYXNlIERQX1RS QUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMSB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzE6Cj4g LQkJcmV0dXJuIERESV9CVUZfVFJBTlNfU0VMRUNUKDUpOwo+IC0JY2FzZSBEUF9UUkFJTl9WT0xU QUdFX1NXSU5HX0xFVkVMXzEgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8yOgo+IC0JCXJldHVy biBERElfQlVGX1RSQU5TX1NFTEVDVCg2KTsKPiAtCj4gLQljYXNlIERQX1RSQUlOX1ZPTFRBR0Vf U1dJTkdfTEVWRUxfMiB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA6Cj4gLQkJcmV0dXJuIERE SV9CVUZfVFJBTlNfU0VMRUNUKDcpOwo+IC0JY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xF VkVMXzIgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOgo+IC0JCXJldHVybiBERElfQlVGX1RS QU5TX1NFTEVDVCg4KTsKPiAtCj4gLQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxf MyB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA6Cj4gLQkJcmV0dXJuIERESV9CVUZfVFJBTlNf U0VMRUNUKDkpOwo+IC0JZGVmYXVsdDoKPiAtCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCB2 b2x0YWdlIHN3aW5nL3ByZS1lbXBoYXNpcyBsZXZlbDoiCj4gLQkJCSAgICAgICIweCV4XG4iLCBz aWduYWxfbGV2ZWxzKTsKPiAtCQlyZXR1cm4gRERJX0JVRl9UUkFOU19TRUxFQ1QoMCk7Cj4gLQl9 Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGJ4dF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRwb3J0ID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+IC0JZW51bSBwb3J0IHBvcnQgPSBkcG9ydC0+cG9y dDsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcG9ydC0+YmFzZS5iYXNlLmRldjsKPiAt CXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwb3J0LT5iYXNlOwo+IC0JdWludDhf dCB0cmFpbl9zZXQgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBdOwo+IC0JdWludDMyX3QgbGV2ZWwg PSAwOwo+IC0KPiAtCWludCBzaWduYWxfbGV2ZWxzID0gdHJhaW5fc2V0ICYgKERQX1RSQUlOX1ZP TFRBR0VfU1dJTkdfTUFTSyB8Cj4gLQkJCQkJIERQX1RSQUlOX1BSRV9FTVBIQVNJU19NQVNLKTsK PiAtCXN3aXRjaCAoc2lnbmFsX2xldmVscykgewo+IC0JZGVmYXVsdDoKPiAtCQlEUk1fREVCVUdf S01TKCJVbnN1cHBvcnRlZCB2b2x0YWdlIHN3aW5nL3ByZS1lbXBoIGxldmVsXG4iKTsKPiAtCWNh c2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wIHwgRFBfVFJBSU5fUFJFX0VNUEhfTEVW RUxfMDoKPiAtCQlsZXZlbCA9IDA7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTEVWRUxfMCB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzE6Cj4gLQkJbGV2ZWwg PSAxOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzAg fCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8yOgo+IC0JCWxldmVsID0gMjsKPiAtCQlicmVhazsK PiAtCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wIHwgRFBfVFJBSU5fUFJFX0VN UEhfTEVWRUxfMzoKPiAtCQlsZXZlbCA9IDM7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIERQX1RSQUlO X1ZPTFRBR0VfU1dJTkdfTEVWRUxfMSB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA6Cj4gLQkJ bGV2ZWwgPSA0Owo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xF VkVMXzEgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOgo+IC0JCWxldmVsID0gNTsKPiAtCQli cmVhazsKPiAtCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8xIHwgRFBfVFJBSU5f UFJFX0VNUEhfTEVWRUxfMjoKPiAtCQlsZXZlbCA9IDY7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIERQ X1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMiB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA6 Cj4gLQkJbGV2ZWwgPSA3Owo+IC0JCWJyZWFrOwo+IC0JY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NX SU5HX0xFVkVMXzIgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOgo+IC0JCWxldmVsID0gODsK PiAtCQlicmVhazsKPiAtCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zIHwgRFBf VFJBSU5fUFJFX0VNUEhfTEVWRUxfMDoKPiAtCQlsZXZlbCA9IDk7Cj4gLQkJYnJlYWs7Cj4gLQl9 Cj4gLQo+IC0JYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2LCBsZXZlbCwgcG9ydCwgZW5jb2Rl ci0+dHlwZSk7Cj4gLX0KPiAtCj4gIC8qIFByb3Blcmx5IHVwZGF0ZXMgIkRQIiB3aXRoIHRoZSBj b3JyZWN0IHNpZ25hbCBsZXZlbHMuICovCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX2RwX3NldF9z aWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQzMl90ICpEUCkKPiBA QCAtMzUxMCwyMiArMzQyNCwyMCBAQCBpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCB1aW50MzJfdCAqRFApCj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCWVu dW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7Cj4gLQl1aW50MzJfdCBzaWdu YWxfbGV2ZWxzLCBtYXNrOwo+ICsJdWludDMyX3Qgc2lnbmFsX2xldmVscywgbWFzayA9IDA7Cj4g IAl1aW50OF90IHRyYWluX3NldCA9IGludGVsX2RwLT50cmFpbl9zZXRbMF07Cj4gIAo+IC0JaWYg KElTX0JST1hUT04oZGV2KSkgewo+IC0JCXNpZ25hbF9sZXZlbHMgPSAwOwo+IC0JCWJ4dF9zaWdu YWxfbGV2ZWxzKGludGVsX2RwKTsKPiAtCQltYXNrID0gMDsKPiAtCX0gZWxzZSBpZiAoSEFTX0RE SShkZXYpKSB7Cj4gLQkJc2lnbmFsX2xldmVscyA9IGhzd19zaWduYWxfbGV2ZWxzKHRyYWluX3Nl dCk7Cj4gLQkJbWFzayA9IERESV9CVUZfRU1QX01BU0s7Cj4gKwlpZiAoSEFTX0RESShkZXYpKSB7 Cj4gKwkJc2lnbmFsX2xldmVscyA9IGRkaV9zaWduYWxfbGV2ZWxzKGludGVsX2RwKTsKPiArCj4g KwkJaWYgKElTX0JST1hUT04oZGV2KSkKPiArCQkJc2lnbmFsX2xldmVscyA9IDA7Cj4gKwkJZWxz ZQo+ICsJCQltYXNrID0gRERJX0JVRl9FTVBfTUFTSzsKPiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZ VklFVyhkZXYpKSB7Cj4gIAkJc2lnbmFsX2xldmVscyA9IGNodl9zaWduYWxfbGV2ZWxzKGludGVs X2RwKTsKPiAtCQltYXNrID0gMDsKPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7 Cj4gIAkJc2lnbmFsX2xldmVscyA9IHZsdl9zaWduYWxfbGV2ZWxzKGludGVsX2RwKTsKPiAtCQlt YXNrID0gMDsKPiAgCX0gZWxzZSBpZiAoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKSB7 Cj4gIAkJc2lnbmFsX2xldmVscyA9IGdlbjdfZWRwX3NpZ25hbF9sZXZlbHModHJhaW5fc2V0KTsK PiAgCQltYXNrID0gRURQX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLX0lWQjsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+IGluZGV4IGJjYWZlZmNmMDQ4Yi4uYzZjYmU4YzYwMmY5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtOTUwLDggKzk1MCw3IEBAIHZvaWQgaW50ZWxf ZGRpX2luaXRfZHBfYnVmX3JlZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cj4gIHZv aWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg CQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gIHZvaWQgaW50ZWxf ZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0 ZSk7Cj4gLXZvaWQgYnh0X2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdTMyIGxldmVsLAo+IC0JCQkJZW51bSBwb3J0IHBvcnQsIGludCB0eXBlKTsKPiArdWludDMy X3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIAo+ICAv KiBpbnRlbF9mcm9udGJ1ZmZlci5jICovCj4gIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAKCi0tIAotIEFudHRpCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=