From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash goel Subject: Re: [PATCH 02/12] drm/i915/bdw: Abstract PDP usage Date: Tue, 3 Mar 2015 17:46:23 +0530 Message-ID: References: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> <1424454366-19006-3-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f54.google.com (mail-qg0-f54.google.com [209.85.192.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 3FF456E58C for ; Tue, 3 Mar 2015 04:16:24 -0800 (PST) Received: by mail-qg0-f54.google.com with SMTP id h3so16155575qgf.13 for ; Tue, 03 Mar 2015 04:16:23 -0800 (PST) In-Reply-To: <1424454366-19006-3-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry Cc: intel-gfx@lists.freedesktop.org, "Goel, Akash" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBGZWIgMjAsIDIwMTUgYXQgMTE6MTUgUE0sIE1pY2hlbCBUaGllcnJ5CjxtaWNoZWwu dGhpZXJyeUBpbnRlbC5jb20+IHdyb3RlOgo+IEZyb206IEJlbiBXaWRhd3NreSA8YmVuamFtaW4u d2lkYXdza3lAaW50ZWwuY29tPgo+Cj4gVXAgdW50aWwgbm93LCBwcGd0dC0+cGRwIGhhcyBhbHdh eXMgYmVlbiB0aGUgcm9vdCBvZiBvdXIgcGFnZSB0YWJsZXMuCj4gTGVnYWN5IDMyYiBhZGRyZXNz ZXMgYWN0ZWQgbGlrZSBpdCBoYWQgMSBQRFAgd2l0aCA0IFBEUEVzLgo+Cj4gSW4gcHJlcGFyYXRp b24gZm9yIDQgbGV2ZWwgcGFnZSB0YWJsZXMsIHdlIG5lZWQgdG8gc3RvcCB1c2UgcHBndHQtPnBk cAo+IGRpcmVjdGx5IHVubGVzcyB3ZSBrbm93IGl0J3Mgd2hhdCB3ZSB3YW50LiBUaGUgZnV0dXJl IHN0cnVjdHVyZSB3aWxsIHVzZQo+IHBwZ3R0LT5wbWw0IGZvciB0aGUgdG9wIGxldmVsLCBhbmQg dGhlIHBkcCBpcyBqdXN0IG9uZSBvZiB0aGUgZW50cmllcwo+IGJlaW5nIHBvaW50ZWQgdG8gYnkg YSBwbWw0ZS4KPgo+IHYyOiBVcGRhdGVkIGFmdGVyIGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uIGNo YW5nZXMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+ Cj4gU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNv bT4gKHYyKQo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDEy MyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQs IDcwIGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiBpbmRleCA0ODlmOGRiLi5kM2FkNTE3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtNTYwLDYgKzU2MCw3IEBAIHN0YXRpYyB2b2lkIGdlbjhf cHBndHRfY2xlYXJfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIHsKPiAg ICAgICAgIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4gICAgICAgICAgICAgICAgIGNv bnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+ICsgICAgICAgc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwID0gJnBwZ3R0LT5wZHA7 IC8qIEZJWE1FOiA0OGIgKi8KPiAgICAgICAgIGdlbjhfZ3R0X3B0ZV90ICpwdF92YWRkciwgc2Ny YXRjaF9wdGU7Cj4gICAgICAgICB1bnNpZ25lZCBwZHBlID0gc3RhcnQgPj4gR0VOOF9QRFBFX1NI SUZUICYgR0VOOF9QRFBFX01BU0s7Cj4gICAgICAgICB1bnNpZ25lZCBwZGUgPSBzdGFydCA+PiBH RU44X1BERV9TSElGVCAmIEdFTjhfUERFX01BU0s7Cj4gQEAgLTU3NSwxMCArNTc2LDEwIEBAIHN0 YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYXJfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCj4gICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0 Owo+ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZV90YWJsZTsKPgo+IC0gICAgICAg ICAgICAgICBpZiAoV0FSTl9PTighcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXSkpCj4g KyAgICAgICAgICAgICAgIGlmIChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdKSkK PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPgo+IC0gICAgICAgICAgICAgICBw ZCA9IHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRwZV07Cj4gKyAgICAgICAgICAgICAgIHBk ID0gcGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKPgo+ICAgICAgICAgICAgICAgICBpZiAoV0FS Tl9PTighcGQtPnBhZ2VfdGFibGVzW3BkZV0pKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+IEBAIC02MjAsNiArNjIxLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9pbnNl cnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgewo+ICAgICAgICAg c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KPiAgICAgICAgICAgICAgICAgY29udGFpbmVy X29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gKyAgICAgICBzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklY TUU6IDQ4YiAqLwo+ICAgICAgICAgZ2VuOF9ndHRfcHRlX3QgKnB0X3ZhZGRyOwo+ICAgICAgICAg dW5zaWduZWQgcGRwZSA9IHN0YXJ0ID4+IEdFTjhfUERQRV9TSElGVCAmIEdFTjhfUERQRV9NQVNL Owo+ICAgICAgICAgdW5zaWduZWQgcGRlID0gc3RhcnQgPj4gR0VOOF9QREVfU0hJRlQgJiBHRU44 X1BERV9NQVNLOwo+IEBAIC02MzAsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9p bnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPgo+ICAgICAgICAg Zm9yX2VhY2hfc2dfcGFnZShwYWdlcy0+c2dsLCAmc2dfaXRlciwgcGFnZXMtPm5lbnRzLCAwKSB7 Cj4gICAgICAgICAgICAgICAgIGlmIChwdF92YWRkciA9PSBOVUxMKSB7Cj4gLSAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkID0gcHBndHQt PnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQgPSBwZHAtPnBhZ2VfZGlyZWN0b3J5W3Bk cGVdOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50 cnkgKnB0ID0gcGQtPnBhZ2VfdGFibGVzW3BkZV07Cj4gICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHBhZ2UgKnBhZ2VfdGFibGUgPSBwdC0+cGFnZTsKPgo+IEBAIC03MDgsMTYgKzcxMCwx NyBAQCBzdGF0aWMgdm9pZCBnZW44X2ZyZWVfcGFnZV90YWJsZXMoc3RydWN0IGk5MTVfcGFnZV9k aXJlY3RvcnlfZW50cnkgKnBkLCBzdHJ1Y3QgZAo+ICBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X3Vu bWFwX3BhZ2VzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+ICAgICAgICAgc3Ry dWN0IHBjaV9kZXYgKmh3ZGV2ID0gcHBndHQtPmJhc2UuZGV2LT5wZGV2Owo+ICsgICAgICAgc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwID0gJnBwZ3R0LT5wZHA7 IC8qIEZJWE1FOiA0OGIgKi8KPiAgICAgICAgIGludCBpLCBqOwo+Cj4gLSAgICAgICBmb3JfZWFj aF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywKPiArICAgICAgIGZvcl9lYWNoX3Nl dF9iaXQoaSwgcGRwLT51c2VkX3BkcGVzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIEk5MTVf UERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpKSB7Cj4gICAgICAgICAgICAgICAgIHN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZDsKPgo+IC0gICAgICAgICAgICAgICBpZiAo V0FSTl9PTighcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSkpCj4gKyAgICAgICAgICAgICAg IGlmIChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKSkKPiAgICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKPgo+IC0gICAgICAgICAgICAgICBwZCA9IHBwZ3R0LT5wZHAucGFn ZV9kaXJlY3RvcnlbaV07Cj4gKyAgICAgICAgICAgICAgIHBkID0gcGRwLT5wYWdlX2RpcmVjdG9y eVtpXTsKPiAgICAgICAgICAgICAgICAgaWYgKCFwZC0+ZGFkZHIpCj4gICAgICAgICAgICAgICAg ICAgICAgICAgcGNpX3VubWFwX3BhZ2UoaHdkZXYsIHBkLT5kYWRkciwgUEFHRV9TSVpFLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRE1BX0JJRElSRUNUSU9O QUwpOwo+IEBAIC03NDMsMTUgKzc0NiwyMSBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2ZyZWUo c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICB7Cj4gICAgICAgICBpbnQgaTsKPgo+IC0g ICAgICAgZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJOTE1X1BEUEVTX1BFUl9QRFAocHBndHQtPmJhc2Uu ZGV2KSkgewo+IC0gICAgICAgICAgICAgICBpZiAoV0FSTl9PTighcHBndHQtPnBkcC5wYWdlX2Rp cmVjdG9yeVtpXSkpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAg ICBpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKSB7Cj4gKyAgICAg ICAgICAgICAgIGZvcl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBkcC51c2VkX3BkcGVzLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+ YmFzZS5kZXYpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBwZ3R0 LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7Cj4KPiAtICAgICAgICAgICAgICAgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHBw Z3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sIHBwZ3R0LT5iYXNlLmRldik7Cj4gLSAgICAgICAg ICAgICAgIHVubWFwX2FuZF9mcmVlX3BkKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sIHBw Z3R0LT5iYXNlLmRldik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2VuOF9mcmVlX3BhZ2Vf dGFibGVzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwZ3R0LT5iYXNlLmRldik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9y eVtpXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcGd0dC0+ YmFzZS5kZXYpOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIHVubWFwX2Fu ZF9mcmVlX3BkcCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsKPiArICAgICAgIH0gZWxz ZSB7Cj4gKyAgICAgICAgICAgICAgIEJVRygpOyAvKiB0byBiZSBpbXBsZW1lbnRlZCBsYXRlciAq Lwo+ICAgICAgICAgfQo+IC0gICAgICAgdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+cGRwLCBw cGd0dC0+YmFzZS5kZXYpOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVw KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+IEBAIC03NjUsNyArNzc0LDcgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KQo+Cj4gIC8qKgo+ICAgKiBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKCkgLSBBbGxvY2F0ZSBw YWdlIHRhYmxlcyBmb3IgVkEgcmFuZ2UuCj4gLSAqIEBwcGd0dDogICAgIE1hc3RlciBwcGd0dCBz dHJ1Y3R1cmUuCj4gKyAqIEB2bTogICAgICAgICAgICAgICAgTWFzdGVyIHZtIHN0cnVjdHVyZS4K PiAgICogQHBkOiAgICAgICAgICAgICAgICBQYWdlIGRpcmVjdG9yeSBmb3IgdGhpcyBhZGRyZXNz IHJhbmdlLgo+ICAgKiBAc3RhcnQ6ICAgICBTdGFydGluZyB2aXJ0dWFsIGFkZHJlc3MgdG8gYmVn aW4gYWxsb2NhdGlvbnMuCj4gICAqIEBsZW5ndGggICAgIFNpemUgb2YgdGhlIGFsbG9jYXRpb25z Lgo+IEBAIC03ODEsMTIgKzc5MCwxMyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICAqCj4gICAqIFJldHVybjogMCBpZiBz dWNjZXNzOyBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KPiAgICovCj4gLXN0YXRpYyBp bnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdldGFicyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQs Cj4gK3N0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdldGFicyhzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50NjRfdCBzdGFydCwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgbGVuZ3RoLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpuZXdfcHRzKQo+ICB7Cj4gKyAgICAgICBzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKPiAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2Vf dGFibGVfZW50cnkgKnB0Owo+ICAgICAgICAgdWludDY0X3QgdGVtcDsKPiAgICAgICAgIHVpbnQz Ml90IHBkZTsKPiBAQCAtNzk5LDcgKzgwOSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxv Y19wYWdldGFicyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgICAgICAgIH0KPgo+IC0gICAgICAgICAgICAg ICBwdCA9IGFsbG9jX3B0X3NpbmdsZShwcGd0dC0+YmFzZS5kZXYpOwo+ICsgICAgICAgICAgICAg ICBwdCA9IGFsbG9jX3B0X3NpbmdsZShkZXYpOwo+ICAgICAgICAgICAgICAgICBpZiAoSVNfRVJS KHB0KSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVud2luZF9vdXQ7Cj4KPiBAQCAt ODExLDE0ICs4MjEsMTQgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPgo+ICB1bndpbmRfb3V0Ogo+ICAgICAgICAgZm9y X2VhY2hfc2V0X2JpdChwZGUsIG5ld19wdHMsIEdFTjhfUERFU19QRVJfUEFHRSkKPiAtICAgICAg ICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcHQocGQtPnBhZ2VfdGFibGVzW3BkZV0sIHBwZ3R0LT5i YXNlLmRldik7Cj4gKyAgICAgICAgICAgICAgIHVubWFwX2FuZF9mcmVlX3B0KHBkLT5wYWdlX3Rh Ymxlc1twZGVdLCBkZXYpOwo+Cj4gICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAgfQo+Cj4gIC8q Kgo+ICAgKiBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoKSAtIEFsbG9jYXRlIHBh Z2UgZGlyZWN0b3JpZXMgZm9yIFZBIHJhbmdlLgo+IC0gKiBAcHBndHQ6ICAgICBNYXN0ZXIgcHBn dHQgc3RydWN0dXJlLgo+ICsgKiBAdm06ICAgICAgICAgICAgICAgIE1hc3RlciB2bSBzdHJ1Y3R1 cmUuCj4gICAqIEBwZHA6ICAgICAgIFBhZ2UgZGlyZWN0b3J5IHBvaW50ZXIgZm9yIHRoaXMgYWRk cmVzcyByYW5nZS4KPiAgICogQHN0YXJ0OiAgICAgU3RhcnRpbmcgdmlydHVhbCBhZGRyZXNzIHRv IGJlZ2luIGFsbG9jYXRpb25zLgo+ICAgKiBAbGVuZ3RoICAgICBTaXplIG9mIHRoZSBhbGxvY2F0 aW9ucy4KPiBAQCAtODM5LDE2ICs4NDksMTcgQEAgdW53aW5kX291dDoKPiAgICoKPiAgICogUmV0 dXJuOiAwIGlmIHN1Y2Nlc3M7IG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgo+ICAgKi8K PiAtc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICtzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9k aXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRl cl9lbnRyeSAqcGRwLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBzdGFydCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0 X3QgbGVuZ3RoLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nICpuZXdfcGRzKQo+ICB7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g dm0tPmRldjsKPiAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZDsK PiAgICAgICAgIHVpbnQ2NF90IHRlbXA7Cj4gICAgICAgICB1aW50MzJfdCBwZHBlOwo+IC0gICAg ICAgc2l6ZV90IHBkcGVzID0gIEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpOwo+ ICsgICAgICAgc2l6ZV90IHBkcGVzID0gIEk5MTVfUERQRVNfUEVSX1BEUCh2bS0+ZGV2KTsKPgo+ ICAgICAgICAgQlVHX09OKCFiaXRtYXBfZW1wdHkobmV3X3BkcywgcGRwZXMpKTsKPgo+IEBAIC04 NTksNyArODcwLDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3Jp ZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAgICAgICAgICAgICAgICBpZiAocGQp Cj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4KPiAtICAgICAgICAgICAgICAg cGQgPSBhbGxvY19wZF9zaW5nbGUocHBndHQtPmJhc2UuZGV2KTsKPiArICAgICAgICAgICAgICAg cGQgPSBhbGxvY19wZF9zaW5nbGUoZGV2KTsKPiAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihw ZCkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byB1bndpbmRfb3V0Owo+Cj4gQEAgLTg3 MSw3ICs4ODIsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3Rvcmll cyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4KPiAgdW53aW5kX291dDoKPiAgICAgICAg IGZvcl9lYWNoX3NldF9iaXQocGRwZSwgbmV3X3BkcywgcGRwZXMpCj4gLSAgICAgICAgICAgICAg IHVubWFwX2FuZF9mcmVlX3BkKHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV0sIHBwZ3R0LT5iYXNl LmRldik7Cj4gKyAgICAgICAgICAgICAgIHVubWFwX2FuZF9mcmVlX3BkKHBkcC0+cGFnZV9kaXJl Y3RvcnlbcGRwZV0sIGRldik7Cj4KPiAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICB9Cj4gQEAg LTkyNiwxMyArOTM3LDEzIEBAIGVycl9vdXQ6Cj4gICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAg fQo+Cj4gLXN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc3Rh cnQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxlbmd0aCkKPiAr c3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlXzNsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5 MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHN0YXJ0LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGxlbmd0aCkKPiAgewo+IC0gICAgICAgc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0ID0KPiAtICAgICAgICAgICAgICAgY29udGFpbmVyX29mKHZtLCBz dHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nICpuZXdf cGFnZV9kaXJzLCAqKm5ld19wYWdlX3RhYmxlczsKPiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSB2bS0+ZGV2Owo+ICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50 cnkgKnBkOwo+ICAgICAgICAgY29uc3QgdWludDY0X3Qgb3JpZ19zdGFydCA9IHN0YXJ0Owo+ICAg ICAgICAgY29uc3QgdWludDY0X3Qgb3JpZ19sZW5ndGggPSBsZW5ndGg7Cj4gQEAgLTk2MSwxNyAr OTcyLDE1IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPgo+ICAgICAgICAg LyogRG8gdGhlIGFsbG9jYXRpb25zIGZpcnN0IHNvIHdlIGNhbiBlYXNpbHkgYmFpbCBvdXQgKi8K PiAtICAgICAgIHJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcyhwcGd0dCwg JnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5ld19wYWdlX2RpcnMpOwo+ICsgICAgICAgcmV0ID0gZ2VuOF9wcGd0dF9h bGxvY19wYWdlX2RpcmVjdG9yaWVzKHZtLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIG5ld19wYWdlX2Rp cnMpOwo+ICAgICAgICAgaWYgKHJldCkgewo+ICAgICAgICAgICAgICAgICBmcmVlX2dlbjhfdGVt cF9iaXRtYXBzKG5ld19wYWdlX2RpcnMsIG5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwo+ICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgICAgfQo+Cj4gLSAgICAgICAvKiBGb3IgZXZl cnkgcGFnZSBkaXJlY3RvcnkgcmVmZXJlbmNlZCwgYWxsb2NhdGUgcGFnZSB0YWJsZXMgKi8KPiAt ICAgICAgIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgJnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgs IHRlbXAsIHBkcGUpIHsKPiArICAgICAgIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFy dCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7Cj4gICAgICAgICAgICAgICAgIGJpdG1hcF96ZXJvKG5l d19wYWdlX3RhYmxlc1twZHBlXSwgR0VOOF9QREVTX1BFUl9QQUdFKTsKPiAtICAgICAgICAgICAg ICAgcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wYWdldGFicyhwcGd0dCwgcGQsIHN0YXJ0LCBsZW5n dGgsCj4gKyAgICAgICAgICAgICAgIHJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnModm0s IHBkLCBzdGFydCwgbGVuZ3RoLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5ld19wYWdlX3RhYmxlc1twZHBlXSk7Cj4gICAgICAgICAgICAgICAgIGlm IChyZXQpCj4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0Owo+IEBAIC05ODAs MTAgKzk4OSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKPiAgICAgICAgIHN0YXJ0ID0gb3JpZ19zdGFydDsKPiAgICAgICAg IGxlbmd0aCA9IG9yaWdfbGVuZ3RoOwo+Cj4gLSAgICAgICAvKiBBbGxvY2F0aW9ucyBoYXZlIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHksIHNvIHNldCB0aGUgYml0bWFwcywgYW5kIGRvCj4gLSAgICAg ICAgKiB0aGUgbWFwcGluZ3MuICovCj4gLSAgICAgICBnZW44X2Zvcl9lYWNoX3BkcGUocGQsICZw cGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7Cj4gLSAgICAgICAgICAgICAg IGdlbjhfcHBndHRfcGRlX3QgKmNvbnN0IHBhZ2VfZGlyZWN0b3J5ID0ga21hcF9hdG9taWMocGQt PnBhZ2UpOwo+ICsgICAgICAgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5n dGgsIHRlbXAsIHBkcGUpIHsKPiAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV90YWJs ZV9lbnRyeSAqcHQ7Cj4gICAgICAgICAgICAgICAgIHVpbnQ2NF90IHBkX2xlbiA9IGdlbjhfY2xh bXBfcGQoc3RhcnQsIGxlbmd0aCk7Cj4gICAgICAgICAgICAgICAgIHVpbnQ2NF90IHBkX3N0YXJ0 ID0gc3RhcnQ7Cj4gQEAgLTEwMDUsMjAgKzEwMTEsMTAgQEAgc3RhdGljIGludCBnZW44X2FsbG9j X3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgLyogT3VyIHBkZSBpcyBub3cgcG9pbnRpbmcgdG8gdGhlIHBhZ2V0YWJsZSwg cHQgKi8KPiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0KHBkZSwgcGQtPnVzZWRfcGRl cyk7Cj4gLQo+IC0gICAgICAgICAgICAgICAgICAgICAgIC8qIE1hcCB0aGUgUERFIHRvIHRoZSBw YWdlIHRhYmxlICovCj4gLSAgICAgICAgICAgICAgICAgICAgICAgX19nZW44X2RvX21hcF9wdChw YWdlX2RpcmVjdG9yeSArIHBkZSwgcHQsIHZtLT5kZXYpOwo+IC0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAvKiBOQjogV2UgaGF2ZW4ndCB5ZXQgbWFwcGVkIHB0ZXMgdG8gcGFnZXMuIEF0IHRo aXMKPiAtICAgICAgICAgICAgICAgICAgICAgICAgKiBwb2ludCB3ZSdyZSBzdGlsbCByZWx5aW5n IG9uIGluc2VydF9lbnRyaWVzKCkgKi8KPiAgICAgICAgICAgICAgICAgfQo+Cj4gLSAgICAgICAg ICAgICAgIGlmICghSEFTX0xMQyh2bS0+ZGV2KSkKPiAtICAgICAgICAgICAgICAgICAgICAgICBk cm1fY2xmbHVzaF92aXJ0X3JhbmdlKHBhZ2VfZGlyZWN0b3J5LCBQQUdFX1NJWkUpOwo+IC0KPiAt ICAgICAgICAgICAgICAga3VubWFwX2F0b21pYyhwYWdlX2RpcmVjdG9yeSk7Cj4gLQo+IC0gICAg ICAgICAgICAgICBzZXRfYml0KHBkcGUsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcyk7Cj4gKyAgICAg ICAgICAgICAgIHNldF9iaXQocGRwZSwgcGRwLT51c2VkX3BkcGVzKTsKPiArICAgICAgICAgICAg ICAgZ2VuOF9tYXBfcGFnZXRhYmxlX3JhbmdlKHBkLCBzdGFydCwgbGVuZ3RoLCBkZXYpOwo+ICAg ICAgICAgfQo+Cj4gICAgICAgICBmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKG5ld19wYWdlX2RpcnMs IG5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwo+IEBAIC0xMDI3LDE2ICsxMDIzLDM2IEBAIHN0YXRp YyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK PiAgZXJyX291dDoKPiAgICAgICAgIHdoaWxlIChwZHBlLS0pIHsKPiAgICAgICAgICAgICAgICAg Zm9yX2VhY2hfc2V0X2JpdCh0ZW1wLCBuZXdfcGFnZV90YWJsZXNbcGRwZV0sIEdFTjhfUERFU19Q RVJfUEFHRSkKPiAtICAgICAgICAgICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wdChwZC0+ cGFnZV90YWJsZXNbdGVtcF0sIHZtLT5kZXYpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHVu bWFwX2FuZF9mcmVlX3B0KHBkLT5wYWdlX3RhYmxlc1t0ZW1wXSwgZGV2KTsKClNvcnJ5IHRoZSBy ZXZpZXcgY29tbWVudCBtYXkgbm90IGJlIGNvbXBsZXRlbHkgcGVydGluZW50IHRvIHRoaXMgdmVy eSBwYXRjaC4KSW4gdGhlIHdoaWxlIGxvb3AsIG9uIHRoZSBjaGFuZ2Ugb2YgJ3BkcGUnIHZhbHVl LCB0aGUgJ3BkJyBpcyBub3QKYmVpbmcgdXBkYXRlZCBhY2NvcmRpbmdseS4KVGhlIGFib3ZlIGNh bGwgdG8gJ3VubWFwX2FuZF9mcmVlX3B0KHBkLT5wYWdlX3RhYmxlW3RlbXBdLCBkZXYpOycKc2hv dWxkIGJlIHJlcGxhY2VkIHdpdGgKICAgICd1bm1hcF9hbmRfZnJlZV9wdChwZHAtPnBhZ2VfZGly ZWN0b3J5W3BkcGVdLT5wYWdlX3RhYmxlW3RlbXBdLCBkZXYpOycKVGhpcyB3aWxsIGdpdmUgdGhl IHJpZ2h0IHBhZ2UgZGlyZWN0b3J5LgoKCj4gICAgICAgICB9Cj4KPiAgICAgICAgIGZvcl9lYWNo X3NldF9iaXQocGRwZSwgbmV3X3BhZ2VfZGlycywgcGRwZXMpCj4gLSAgICAgICAgICAgICAgIHVu bWFwX2FuZF9mcmVlX3BkKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRwZV0sIHZtLT5kZXYp Owo+ICsgICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wZChwZHAtPnBhZ2VfZGlyZWN0b3J5 W3BkcGVdLCBkZXYpOwo+Cj4gICAgICAgICBmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKG5ld19wYWdl X2RpcnMsIG5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwo+ICAgICAgICAgcmV0dXJuIHJldDsKPiAg fQo+Cj4gK3N0YXRpYyBpbnQgX19ub3JldHVybiBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wbWw0ICpwbWw0LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc3RhcnQsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBsZW5n dGgpCj4gK3sKPiArICAgICAgIEJVRygpOyAvKiB0byBiZSBpbXBsZW1lbnRlZCBsYXRlciAqLwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IHN0YXJ0LCB1aW50NjRfdCBsZW5ndGgpCj4gK3sKPiArICAgICAgIHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCA9Cj4gKyAgICAgICAgICAgICAgIGNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5 MTVfaHdfcHBndHQsIGJhc2UpOwo+ICsKPiArICAgICAgIGlmICghVVNFU19GVUxMXzQ4QklUX1BQ R1RUKHZtLT5kZXYpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5n ZV8zbHZsKHZtLCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCk7Cj4gKyAgICAgICBlbHNlCj4g KyAgICAgICAgICAgICAgIHJldHVybiBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwodm0sICZwcGd0 dC0+cG1sNCwgc3RhcnQsIGxlbmd0aCk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGdlbjhfcHBn dHRfZmluaV9jb21tb24oc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICB7Cj4gICAgICAg ICB1bm1hcF9hbmRfZnJlZV9wdChwcGd0dC0+c2NyYXRjaF9wZCwgcHBndHQtPmJhc2UuZGV2KTsK PiBAQCAtMTA3OSwxMiArMTA5NSwxMyBAQCBzdGF0aWMgaW50IGdlbjhfYWxpYXNpbmdfcHBndHRf aW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsgICAgICAgc3RydWN0 IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwID0gJnBwZ3R0LT5wZHA7IC8q IEZJWE1FOiA0OGIgKi8KPiAgICAgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5 ICpwZDsKPiAgICAgICAgIHVpbnQ2NF90IHRlbXAsIHN0YXJ0ID0gMCwgc2l6ZSA9IGRldl9wcml2 LT5ndHQuYmFzZS50b3RhbDsKPiAgICAgICAgIHVpbnQzMl90IHBkcGU7Cj4gICAgICAgICBpbnQg cmV0Owo+Cj4gLSAgICAgICByZXQgPSBnZW44X3BwZ3R0X2luaXRfY29tbW9uKHBwZ3R0LCBkZXZf cHJpdi0+Z3R0LmJhc2UudG90YWwpOwo+ICsgICAgICAgcmV0ID0gZ2VuOF9wcGd0dF9pbml0X2Nv bW1vbihwcGd0dCwgc2l6ZSk7Cj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+Cj4gQEAgLTEwOTcsOCArMTExNCw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGlh c2luZ19wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgZ2VuOF9mb3JfZWFjaF9w ZHBlKHBkLCAmcHBndHQtPnBkcCwgc3RhcnQsIHNpemUsIHRlbXAsIHBkcGUpCj4gLSAgICAgICAg ICAgICAgIGdlbjhfbWFwX3BhZ2V0YWJsZV9yYW5nZShwZCwgc3RhcnQsIHNpemUsIHBwZ3R0LT5i YXNlLmRldik7Cj4gKyAgICAgICBnZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIHNp emUsIHRlbXAsIHBkcGUpCj4gKyAgICAgICAgICAgICAgIGdlbjhfbWFwX3BhZ2V0YWJsZV9yYW5n ZShwZCwgc3RhcnQsIHNpemUsIGRldik7CgoKU29ycnksIGFnYWluIHRoaXMgY29tbWVudCBtYXkg bm90IGJlIHJlbGV2YW50IGZvciB0aGlzIHBhdGNoLgpJcyB0aGUgZXhwbGljaXQgY2FsbCB0byBt YXAgdGhlIHBhZ2Ugb2YgcGFnZSB0YWJsZXMgcmVhbGx5IG5lZWRlZCBoZXJlID8KQXMgcHJpb3Ig dG8gdGhpcywgYWxyZWFkeSB0aGVyZSBpcyBhIGNhbGwgdG8gZ2VuOF9hbGxvY192YV9yYW5nZSwK d2hpY2ggd2lsbCBtYXAgdGhlIHBhZ2Ugb2YgcGFnZSB0YWJsZXMgaW50byB0aGUgcGRlcywgZm9y IHRoZSBlbnRpcmUKdmlydHVhbCByYW5nZS4KCj4KPiAgICAgICAgIHBwZ3R0LT5iYXNlLmFsbG9j YXRlX3ZhX3JhbmdlID0gTlVMTDsKPiAgICAgICAgIHBwZ3R0LT5iYXNlLmNsZWFyX3JhbmdlID0g Z2VuOF9wcGd0dF9jbGVhcl9yYW5nZTsKPiAtLQo+IDIuMS4xCj4KPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=