From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 26/38] drm: Extract struct drm_mm_scan from struct drm_mm Date: Tue, 27 Dec 2016 16:48:45 +0100 Message-ID: <20161227154845.GK31952@dvetter-linux.ger.corp.intel.com> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> <20161222083641.2691-27-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161222083641.2691-27-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDg6MzY6MjlBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoZSBzY2FuIHN0YXRlIG9jY3VwaWVzIGEgbGFyZ2UgcHJvcG9ydGlvbiBvZiB0aGUg c3RydWN0IGRybV9tbSBhbmQgaXMKPiByYXJlbHkgdXNlZCBhbmQgb25seSBjb250YWlucyB0ZW1w b3Jhcnkgc3RhdGUuIFRoYXQgbWFrZXMgaXQgc3VpdGFibGUgdG8KPiBtb3ZpbmcgdG8gaXRzIHN0 cnVjdCBhbmQgb250byB0aGUgc3RhY2sgb2YgdGhlIGNhbGxlcnMuCj4gCj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gUmV2aWV3ZWQtYnk6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KCkFwcGxp ZWQgdG8gZHJtLW1pc2MsIGFmdGVyIGZpeGluZyBhIG1pc3NlZCBzY2FuX3JlbW92ZV9ibG9jayBp bgpldG5hdml2X21tdS5jLiBGb3IgdGhlIGZ1dHVyZSBwbGVhc2UgYWxzbyBjYzogZHJpdmVyIG1h aW50YWluZXJzIHNvIHRoZXkKY2FuIGFjayB0aGlzLgoKSSBoYXZlIHNvbWUgYmlrZXNoZWRzIG9u IHRoZSBrZXJuZWwtZG9jIChvciBsYWNrIHRoZXJlb2YgZm9yIGRybV9tbV9zY2FuKSwKYnV0IEkg dGhpbmsgSSdsbCByZXZpZXcgdGhlIGVudGlyZSB0aGluZyBhdCB0aGUgZW5kIGFuZCB0aGVuIHNl bmQgYSBwYXRjaC4KClRoYW5rcywgRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X21tLmMgICAgICAgICAgICAgICAgfCAxMjQgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9tbXUuYyAgIHwgICA3ICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgICB8ICAxOSArKystLQo+ICBk cml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21tLmMgfCAgNDUgKysrKysrLS0tLS0t Cj4gIGluY2x1ZGUvZHJtL2RybV9tbS5oICAgICAgICAgICAgICAgICAgICB8ICA0MyArKysrKysr LS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxMDAgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fbW0uYwo+IGluZGV4IGI4MDMwNTQ4NDEyNC4uMjFiZDJlMTM3MzhiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fbW0uYwo+IEBAIC01NzQsNyArNTc0LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fbW1fbm9k ZSAqZHJtX21tX3NlYXJjaF9mcmVlX2dlbmVyaWMoY29uc3Qgc3RydWN0IGRybV9tbSAqbW0sCj4g IAl1NjQgYWRqX2VuZDsKPiAgCXU2NCBiZXN0X3NpemU7Cj4gIAo+IC0JRFJNX01NX0JVR19PTiht bS0+c2Nhbm5lZF9ibG9ja3MpOwo+ICsJRFJNX01NX0JVR19PTihtbS0+c2Nhbl9hY3RpdmUpOwo+ ICAKPiAgCWJlc3QgPSBOVUxMOwo+ICAJYmVzdF9zaXplID0gfjBVTDsKPiBAQCAtNjE4LDcgKzYx OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX21tX25vZGUgKmRybV9tbV9zZWFyY2hfZnJlZV9pbl9y YW5nZV9nZW5lcmljKGNvbnN0IHN0cnVjdCBkcm1fCj4gIAl1NjQgYWRqX2VuZDsKPiAgCXU2NCBi ZXN0X3NpemU7Cj4gIAo+IC0JRFJNX01NX0JVR19PTihtbS0+c2Nhbm5lZF9ibG9ja3MpOwo+ICsJ RFJNX01NX0JVR19PTihtbS0+c2Nhbl9hY3RpdmUpOwo+ICAKPiAgCWJlc3QgPSBOVUxMOwo+ICAJ YmVzdF9zaXplID0gfjBVTDsKPiBAQCAtNjkzLDcgKzY5Myw3IEBAIEVYUE9SVF9TWU1CT0woZHJt X21tX3JlcGxhY2Vfbm9kZSk7Cj4gICAqCj4gICAqIFRoZSBEUk0gcmFuZ2UgYWxsb2NhdG9yIHN1 cHBvcnRzIHRoaXMgdXNlLWNhc2UgdGhyb3VnaCB0aGUgc2Nhbm5pbmcKPiAgICogaW50ZXJmYWNl cy4gRmlyc3QgYSBzY2FuIG9wZXJhdGlvbiBuZWVkcyB0byBiZSBpbml0aWFsaXplZCB3aXRoCj4g LSAqIGRybV9tbV9pbml0X3NjYW4oKSBvciBkcm1fbW1faW5pdF9zY2FuX3dpdGhfcmFuZ2UoKS4g VGhlIGRyaXZlciBhZGRzCj4gKyAqIGRybV9tbV9zY2FuX2luaXQoKSBvciBkcm1fbW1fc2Nhbl9p bml0X3dpdGhfcmFuZ2UoKS4gVGhlIGRyaXZlciBhZGRzCj4gICAqIG9iamVjdHMgdG8gdGhlIHJv YXN0ZXIgKHByb2JhYmx5IGJ5IHdhbGtpbmcgYW4gTFJVIGxpc3QsIGJ1dCB0aGlzIGNhbiBiZQo+ ICAgKiBmcmVlbHkgaW1wbGVtZW50ZWQpIHVudGlsIGEgc3VpdGFibGUgaG9sZSBpcyBmb3VuZCBv ciB0aGVyZSdzIG5vIGZ1cnRoZXIKPiAgICogZXZpY3RhYmxlIG9iamVjdC4KPiBAQCAtNzEwLDcg KzcxMCw4IEBAIEVYUE9SVF9TWU1CT0woZHJtX21tX3JlcGxhY2Vfbm9kZSk7Cj4gICAqLwo+ICAK PiAgLyoqCj4gLSAqIGRybV9tbV9pbml0X3NjYW4gLSBpbml0aWFsaXplIGxydSBzY2FubmluZwo+ ICsgKiBkcm1fbW1fc2Nhbl9pbml0IC0gaW5pdGlhbGl6ZSBscnUgc2Nhbm5pbmcKPiArICogQHNj YW46IHNjYW4gc3RhdGUKPiAgICogQG1tOiBkcm1fbW0gdG8gc2Nhbgo+ICAgKiBAc2l6ZTogc2l6 ZSBvZiB0aGUgYWxsb2NhdGlvbgo+ICAgKiBAYWxpZ25tZW50OiBhbGlnbm1lbnQgb2YgdGhlIGFs bG9jYXRpb24KPiBAQCAtNzI0LDI2ICs3MjUsMzMgQEAgRVhQT1JUX1NZTUJPTChkcm1fbW1fcmVw bGFjZV9ub2RlKTsKPiAgICogQXMgbG9uZyBhcyB0aGUgc2NhbiBsaXN0IGlzIG5vbi1lbXB0eSwg bm8gb3RoZXIgb3BlcmF0aW9ucyB0aGFuCj4gICAqIGFkZGluZy9yZW1vdmluZyBub2RlcyB0by9m cm9tIHRoZSBzY2FuIGxpc3QgYXJlIGFsbG93ZWQuCj4gICAqLwo+IC12b2lkIGRybV9tbV9pbml0 X3NjYW4oc3RydWN0IGRybV9tbSAqbW0sCj4gK3ZvaWQgZHJtX21tX3NjYW5faW5pdChzdHJ1Y3Qg ZHJtX21tX3NjYW4gKnNjYW4sCj4gKwkJICAgICAgc3RydWN0IGRybV9tbSAqbW0sCj4gIAkJICAg ICAgdTY0IHNpemUsCj4gIAkJICAgICAgdTY0IGFsaWdubWVudCwKPiAgCQkgICAgICB1bnNpZ25l ZCBsb25nIGNvbG9yKQo+ICB7Cj4gIAlEUk1fTU1fQlVHX09OKCFzaXplKTsKPiArCURSTV9NTV9C VUdfT04obW0tPnNjYW5fYWN0aXZlKTsKPiAgCj4gLQltbS0+c2Nhbl9jb2xvciA9IGNvbG9yOwo+ IC0JbW0tPnNjYW5fYWxpZ25tZW50ID0gYWxpZ25tZW50Owo+IC0JbW0tPnNjYW5fc2l6ZSA9IHNp emU7Cj4gLQltbS0+c2Nhbm5lZF9ibG9ja3MgPSAwOwo+IC0JbW0tPnNjYW5faGl0X3N0YXJ0ID0g MDsKPiAtCW1tLT5zY2FuX2hpdF9lbmQgPSAwOwo+IC0JbW0tPnNjYW5fY2hlY2tfcmFuZ2UgPSAw Owo+IC0JbW0tPnByZXZfc2Nhbm5lZF9ub2RlID0gTlVMTDsKPiArCXNjYW4tPm1tID0gbW07Cj4g Kwo+ICsJc2Nhbi0+Y29sb3IgPSBjb2xvcjsKPiArCXNjYW4tPmFsaWdubWVudCA9IGFsaWdubWVu dDsKPiArCXNjYW4tPnNpemUgPSBzaXplOwo+ICsKPiArCXNjYW4tPmNoZWNrX3JhbmdlID0gMDsK PiArCj4gKwlzY2FuLT5oaXRfc3RhcnQgPSBVNjRfTUFYOwo+ICsJc2Nhbi0+aGl0X2VuZCA9IDA7 Cj4gKwo+ICsJc2Nhbi0+cHJldl9zY2FubmVkX25vZGUgPSBOVUxMOwo+ICB9Cj4gLUVYUE9SVF9T WU1CT0woZHJtX21tX2luaXRfc2Nhbik7Cj4gK0VYUE9SVF9TWU1CT0woZHJtX21tX3NjYW5faW5p dCk7Cj4gIAo+ICAvKioKPiAtICogZHJtX21tX2luaXRfc2NhbiAtIGluaXRpYWxpemUgcmFuZ2Ut cmVzdHJpY3RlZCBscnUgc2Nhbm5pbmcKPiArICogZHJtX21tX3NjYW5faW5pdF93aXRoX3Jhbmdl IC0gaW5pdGlhbGl6ZSByYW5nZS1yZXN0cmljdGVkIGxydSBzY2FubmluZwo+ICsgKiBAc2Nhbjog c2NhbiBzdGF0ZQo+ICAgKiBAbW06IGRybV9tbSB0byBzY2FuCj4gICAqIEBzaXplOiBzaXplIG9m IHRoZSBhbGxvY2F0aW9uCj4gICAqIEBhbGlnbm1lbnQ6IGFsaWdubWVudCBvZiB0aGUgYWxsb2Nh dGlvbgo+IEBAIC03NTksNyArNzY3LDggQEAgRVhQT1JUX1NZTUJPTChkcm1fbW1faW5pdF9zY2Fu KTsKPiAgICogQXMgbG9uZyBhcyB0aGUgc2NhbiBsaXN0IGlzIG5vbi1lbXB0eSwgbm8gb3RoZXIg b3BlcmF0aW9ucyB0aGFuCj4gICAqIGFkZGluZy9yZW1vdmluZyBub2RlcyB0by9mcm9tIHRoZSBz Y2FuIGxpc3QgYXJlIGFsbG93ZWQuCj4gICAqLwo+IC12b2lkIGRybV9tbV9pbml0X3NjYW5fd2l0 aF9yYW5nZShzdHJ1Y3QgZHJtX21tICptbSwKPiArdm9pZCBkcm1fbW1fc2Nhbl9pbml0X3dpdGhf cmFuZ2Uoc3RydWN0IGRybV9tbV9zY2FuICpzY2FuLAo+ICsJCQkJIHN0cnVjdCBkcm1fbW0gKm1t LAo+ICAJCQkJIHU2NCBzaXplLAo+ICAJCQkJIHU2NCBhbGlnbm1lbnQsCj4gIAkJCQkgdW5zaWdu ZWQgbG9uZyBjb2xvciwKPiBAQCAtNzY4LDE5ICs3NzcsMjUgQEAgdm9pZCBkcm1fbW1faW5pdF9z Y2FuX3dpdGhfcmFuZ2Uoc3RydWN0IGRybV9tbSAqbW0sCj4gIHsKPiAgCURSTV9NTV9CVUdfT04o c3RhcnQgPj0gZW5kKTsKPiAgCURSTV9NTV9CVUdfT04oIXNpemUgfHwgc2l6ZSA+IGVuZCAtIHN0 YXJ0KTsKPiArCURSTV9NTV9CVUdfT04obW0tPnNjYW5fYWN0aXZlKTsKPiArCj4gKwlzY2FuLT5t bSA9IG1tOwo+ICsKPiArCXNjYW4tPmNvbG9yID0gY29sb3I7Cj4gKwlzY2FuLT5hbGlnbm1lbnQg PSBhbGlnbm1lbnQ7Cj4gKwlzY2FuLT5zaXplID0gc2l6ZTsKPiArCj4gKwlEUk1fTU1fQlVHX09O KGVuZCA8PSBzdGFydCk7Cj4gKwlzY2FuLT5yYW5nZV9zdGFydCA9IHN0YXJ0Owo+ICsJc2Nhbi0+ cmFuZ2VfZW5kID0gZW5kOwo+ICsJc2Nhbi0+Y2hlY2tfcmFuZ2UgPSAxOwo+ICAKPiAtCW1tLT5z Y2FuX2NvbG9yID0gY29sb3I7Cj4gLQltbS0+c2Nhbl9hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7Cj4g LQltbS0+c2Nhbl9zaXplID0gc2l6ZTsKPiAtCW1tLT5zY2FubmVkX2Jsb2NrcyA9IDA7Cj4gLQlt bS0+c2Nhbl9oaXRfc3RhcnQgPSAwOwo+IC0JbW0tPnNjYW5faGl0X2VuZCA9IDA7Cj4gLQltbS0+ c2Nhbl9zdGFydCA9IHN0YXJ0Owo+IC0JbW0tPnNjYW5fZW5kID0gZW5kOwo+IC0JbW0tPnNjYW5f Y2hlY2tfcmFuZ2UgPSAxOwo+IC0JbW0tPnByZXZfc2Nhbm5lZF9ub2RlID0gTlVMTDsKPiArCXNj YW4tPmhpdF9zdGFydCA9IFU2NF9NQVg7Cj4gKwlzY2FuLT5oaXRfZW5kID0gMDsKPiArCj4gKwlz Y2FuLT5wcmV2X3NjYW5uZWRfbm9kZSA9IE5VTEw7Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTChkcm1f bW1faW5pdF9zY2FuX3dpdGhfcmFuZ2UpOwo+ICtFWFBPUlRfU1lNQk9MKGRybV9tbV9zY2FuX2lu aXRfd2l0aF9yYW5nZSk7Cj4gIAo+ICAvKioKPiAgICogZHJtX21tX3NjYW5fYWRkX2Jsb2NrIC0g YWRkIGEgbm9kZSB0byB0aGUgc2NhbiBsaXN0Cj4gQEAgLTc5Miw0NiArODA3LDQ2IEBAIEVYUE9S VF9TWU1CT0woZHJtX21tX2luaXRfc2Nhbl93aXRoX3JhbmdlKTsKPiAgICogUmV0dXJuczoKPiAg ICogVHJ1ZSBpZiBhIGhvbGUgaGFzIGJlZW4gZm91bmQsIGZhbHNlIG90aGVyd2lzZS4KPiAgICov Cj4gLWJvb2wgZHJtX21tX3NjYW5fYWRkX2Jsb2NrKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSkK PiArYm9vbCBkcm1fbW1fc2Nhbl9hZGRfYmxvY2soc3RydWN0IGRybV9tbV9zY2FuICpzY2FuLAo+ ICsJCQkgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fbW0g Km1tID0gbm9kZS0+bW07Cj4gKwlzdHJ1Y3QgZHJtX21tICptbSA9IHNjYW4tPm1tOwo+ICAJc3Ry dWN0IGRybV9tbV9ub2RlICpwcmV2X25vZGU7Cj4gIAl1NjQgaG9sZV9zdGFydCwgaG9sZV9lbmQ7 Cj4gIAl1NjQgYWRqX3N0YXJ0LCBhZGpfZW5kOwo+ICAKPiAtCW1tLT5zY2FubmVkX2Jsb2Nrcysr Owo+IC0KPiArCURSTV9NTV9CVUdfT04obm9kZS0+bW0gIT0gbW0pOwo+ICsJRFJNX01NX0JVR19P Tighbm9kZS0+YWxsb2NhdGVkKTsKPiAgCURSTV9NTV9CVUdfT04obm9kZS0+c2Nhbm5lZF9ibG9j ayk7Cj4gIAlub2RlLT5zY2FubmVkX2Jsb2NrID0gMTsKPiArCW1tLT5zY2FuX2FjdGl2ZSsrOwo+ ICAKPiAtCXByZXZfbm9kZSA9IGxpc3RfZW50cnkobm9kZS0+bm9kZV9saXN0LnByZXYsIHN0cnVj dCBkcm1fbW1fbm9kZSwKPiAtCQkJICAgICAgIG5vZGVfbGlzdCk7Cj4gKwlwcmV2X25vZGUgPSBs aXN0X3ByZXZfZW50cnkobm9kZSwgbm9kZV9saXN0KTsKPiAgCj4gIAlub2RlLT5zY2FubmVkX3By ZWNlZWRzX2hvbGUgPSBwcmV2X25vZGUtPmhvbGVfZm9sbG93czsKPiAgCXByZXZfbm9kZS0+aG9s ZV9mb2xsb3dzID0gMTsKPiAgCWxpc3RfZGVsKCZub2RlLT5ub2RlX2xpc3QpOwo+ICAJbm9kZS0+ bm9kZV9saXN0LnByZXYgPSAmcHJldl9ub2RlLT5ub2RlX2xpc3Q7Cj4gLQlub2RlLT5ub2RlX2xp c3QubmV4dCA9ICZtbS0+cHJldl9zY2FubmVkX25vZGUtPm5vZGVfbGlzdDsKPiAtCW1tLT5wcmV2 X3NjYW5uZWRfbm9kZSA9IG5vZGU7Cj4gKwlub2RlLT5ub2RlX2xpc3QubmV4dCA9ICZzY2FuLT5w cmV2X3NjYW5uZWRfbm9kZS0+bm9kZV9saXN0Owo+ICsJc2Nhbi0+cHJldl9zY2FubmVkX25vZGUg PSBub2RlOwo+ICAKPiAgCWFkal9zdGFydCA9IGhvbGVfc3RhcnQgPSBkcm1fbW1faG9sZV9ub2Rl X3N0YXJ0KHByZXZfbm9kZSk7Cj4gIAlhZGpfZW5kID0gaG9sZV9lbmQgPSBkcm1fbW1faG9sZV9u b2RlX2VuZChwcmV2X25vZGUpOwo+ICAKPiAtCWlmIChtbS0+c2Nhbl9jaGVja19yYW5nZSkgewo+ IC0JCWlmIChhZGpfc3RhcnQgPCBtbS0+c2Nhbl9zdGFydCkKPiAtCQkJYWRqX3N0YXJ0ID0gbW0t PnNjYW5fc3RhcnQ7Cj4gLQkJaWYgKGFkal9lbmQgPiBtbS0+c2Nhbl9lbmQpCj4gLQkJCWFkal9l bmQgPSBtbS0+c2Nhbl9lbmQ7Cj4gKwlpZiAoc2Nhbi0+Y2hlY2tfcmFuZ2UpIHsKPiArCQlpZiAo YWRqX3N0YXJ0IDwgc2Nhbi0+cmFuZ2Vfc3RhcnQpCj4gKwkJCWFkal9zdGFydCA9IHNjYW4tPnJh bmdlX3N0YXJ0Owo+ICsJCWlmIChhZGpfZW5kID4gc2Nhbi0+cmFuZ2VfZW5kKQo+ICsJCQlhZGpf ZW5kID0gc2Nhbi0+cmFuZ2VfZW5kOwo+ICAJfQo+ICAKPiAgCWlmIChtbS0+Y29sb3JfYWRqdXN0 KQo+IC0JCW1tLT5jb2xvcl9hZGp1c3QocHJldl9ub2RlLCBtbS0+c2Nhbl9jb2xvciwKPiAtCQkJ CSAmYWRqX3N0YXJ0LCAmYWRqX2VuZCk7Cj4gKwkJbW0tPmNvbG9yX2FkanVzdChwcmV2X25vZGUs IHNjYW4tPmNvbG9yLCAmYWRqX3N0YXJ0LCAmYWRqX2VuZCk7Cj4gIAo+ICAJaWYgKGNoZWNrX2Zy ZWVfaG9sZShhZGpfc3RhcnQsIGFkal9lbmQsCj4gLQkJCSAgICBtbS0+c2Nhbl9zaXplLCBtbS0+ c2Nhbl9hbGlnbm1lbnQpKSB7Cj4gLQkJbW0tPnNjYW5faGl0X3N0YXJ0ID0gaG9sZV9zdGFydDsK PiAtCQltbS0+c2Nhbl9oaXRfZW5kID0gaG9sZV9lbmQ7Cj4gKwkJCSAgICBzY2FuLT5zaXplLCBz Y2FuLT5hbGlnbm1lbnQpKSB7Cj4gKwkJc2Nhbi0+aGl0X3N0YXJ0ID0gaG9sZV9zdGFydDsKPiAr CQlzY2FuLT5oaXRfZW5kID0gaG9sZV9lbmQ7Cj4gIAkJcmV0dXJuIHRydWU7Cj4gIAl9Cj4gIAo+ IEBAIC04NTYsMjQgKzg3MSwyNSBAQCBFWFBPUlRfU1lNQk9MKGRybV9tbV9zY2FuX2FkZF9ibG9j ayk7Cj4gICAqIFRydWUgaWYgdGhpcyBibG9jayBzaG91bGQgYmUgZXZpY3RlZCwgZmFsc2Ugb3Ro ZXJ3aXNlLiBXaWxsIGFsd2F5cwo+ICAgKiByZXR1cm4gZmFsc2Ugd2hlbiBubyBob2xlIGhhcyBi ZWVuIGZvdW5kLgo+ICAgKi8KPiAtYm9vbCBkcm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soc3RydWN0 IGRybV9tbV9ub2RlICpub2RlKQo+ICtib29sIGRybV9tbV9zY2FuX3JlbW92ZV9ibG9jayhzdHJ1 Y3QgZHJtX21tX3NjYW4gKnNjYW4sCj4gKwkJCSAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9k ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9tbSAqbW0gPSBub2RlLT5tbTsKPiAgCXN0cnVjdCBkcm1f bW1fbm9kZSAqcHJldl9ub2RlOwo+ICAKPiAtCW1tLT5zY2FubmVkX2Jsb2Nrcy0tOwo+IC0KPiAr CURSTV9NTV9CVUdfT04obm9kZS0+bW0gIT0gc2Nhbi0+bW0pOwo+ICAJRFJNX01NX0JVR19PTigh bm9kZS0+c2Nhbm5lZF9ibG9jayk7Cj4gIAlub2RlLT5zY2FubmVkX2Jsb2NrID0gMDsKPiAgCj4g LQlwcmV2X25vZGUgPSBsaXN0X2VudHJ5KG5vZGUtPm5vZGVfbGlzdC5wcmV2LCBzdHJ1Y3QgZHJt X21tX25vZGUsCj4gLQkJCSAgICAgICBub2RlX2xpc3QpOwo+ICsJRFJNX01NX0JVR19PTighbm9k ZS0+bW0tPnNjYW5fYWN0aXZlKTsKPiArCW5vZGUtPm1tLT5zY2FuX2FjdGl2ZS0tOwo+ICsKPiAr CXByZXZfbm9kZSA9IGxpc3RfcHJldl9lbnRyeShub2RlLCBub2RlX2xpc3QpOwo+ICAKPiAgCXBy ZXZfbm9kZS0+aG9sZV9mb2xsb3dzID0gbm9kZS0+c2Nhbm5lZF9wcmVjZWVkc19ob2xlOwo+ICAJ bGlzdF9hZGQoJm5vZGUtPm5vZGVfbGlzdCwgJnByZXZfbm9kZS0+bm9kZV9saXN0KTsKPiAgCj4g LQkgcmV0dXJuIChkcm1fbW1faG9sZV9ub2RlX2VuZChub2RlKSA+IG1tLT5zY2FuX2hpdF9zdGFy dCAmJgo+IC0JCSBub2RlLT5zdGFydCA8IG1tLT5zY2FuX2hpdF9lbmQpOwo+ICsJcmV0dXJuIChk cm1fbW1faG9sZV9ub2RlX2VuZChub2RlKSA+IHNjYW4tPmhpdF9zdGFydCAmJgo+ICsJCW5vZGUt PnN0YXJ0IDwgc2Nhbi0+aGl0X2VuZCk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fbW1fc2Nh bl9yZW1vdmVfYmxvY2spOwo+ICAKPiBAQCAtODkwLDcgKzkwNiw3IEBAIHZvaWQgZHJtX21tX2lu aXQoc3RydWN0IGRybV9tbSAqbW0sIHU2NCBzdGFydCwgdTY0IHNpemUpCj4gIAlEUk1fTU1fQlVH X09OKHN0YXJ0ICsgc2l6ZSA8PSBzdGFydCk7Cj4gIAo+ICAJSU5JVF9MSVNUX0hFQUQoJm1tLT5o b2xlX3N0YWNrKTsKPiAtCW1tLT5zY2FubmVkX2Jsb2NrcyA9IDA7Cj4gKwltbS0+c2Nhbl9hY3Rp dmUgPSAwOwo+ICAKPiAgCS8qIENsZXZlciB0cmljayB0byBhdm9pZCBhIHNwZWNpYWwgY2FzZSBp biB0aGUgZnJlZSBob2xlIHRyYWNraW5nLiAqLwo+ICAJSU5JVF9MSVNUX0hFQUQoJm1tLT5oZWFk X25vZGUubm9kZV9saXN0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYv ZXRuYXZpdl9tbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfbW11LmMKPiBp bmRleCAxNjlhYzk2ZThmMDguLmZlMWU4ODZkY2FiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZXRuYXZpdi9ldG5hdml2X21tdS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9tbXUuYwo+IEBAIC0xMTMsNiArMTEzLDcgQEAgc3RhdGljIGludCBldG5hdml2 X2lvbW11X2ZpbmRfaW92YShzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11LAo+ICAKPiAgCXdoaWxl ICgxKSB7Cj4gIAkJc3RydWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nICptLCAqbjsKPiArCQlzdHJ1 Y3QgZHJtX21tX3NjYW4gc2NhbjsKPiAgCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gIAkJYm9v bCBmb3VuZDsKPiAgCj4gQEAgLTEzNCw3ICsxMzUsNyBAQCBzdGF0aWMgaW50IGV0bmF2aXZfaW9t bXVfZmluZF9pb3ZhKHN0cnVjdCBldG5hdml2X2lvbW11ICptbXUsCj4gIAkJfQo+ICAKPiAgCQkv KiBUcnkgdG8gcmV0aXJlIHNvbWUgZW50cmllcyAqLwo+IC0JCWRybV9tbV9pbml0X3NjYW4oJm1t dS0+bW0sIHNpemUsIDAsIDApOwo+ICsJCWRybV9tbV9zY2FuX2luaXQoJnNjYW4sICZtbXUtPm1t LCBzaXplLCAwLCAwKTsKPiAgCj4gIAkJZm91bmQgPSAwOwo+ICAJCUlOSVRfTElTVF9IRUFEKCZs aXN0KTsKPiBAQCAtMTUxLDcgKzE1Miw3IEBAIHN0YXRpYyBpbnQgZXRuYXZpdl9pb21tdV9maW5k X2lvdmEoc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdSwKPiAgCQkJCWNvbnRpbnVlOwo+ICAKPiAg CQkJbGlzdF9hZGQoJmZyZWUtPnNjYW5fbm9kZSwgJmxpc3QpOwo+IC0JCQlpZiAoZHJtX21tX3Nj YW5fYWRkX2Jsb2NrKCZmcmVlLT52cmFtX25vZGUpKSB7Cj4gKwkJCWlmIChkcm1fbW1fc2Nhbl9h ZGRfYmxvY2soJnNjYW4sICZmcmVlLT52cmFtX25vZGUpKSB7Cj4gIAkJCQlmb3VuZCA9IHRydWU7 Cj4gIAkJCQlicmVhazsKPiAgCQkJfQo+IEBAIC0xNzEsNyArMTcyLDcgQEAgc3RhdGljIGludCBl dG5hdml2X2lvbW11X2ZpbmRfaW92YShzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11LAo+ICAJCSAq IGNhbiBsZWF2ZSB0aGUgYmxvY2sgcGlubmVkLgo+ICAJCSAqLwo+ICAJCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShtLCBuLCAmbGlzdCwgc2Nhbl9ub2RlKQo+IC0JCQlpZiAoIWRybV9tbV9zY2Fu X3JlbW92ZV9ibG9jaygmbS0+dnJhbV9ub2RlKSkKPiArCQkJaWYgKCFkcm1fbW1fc2Nhbl9yZW1v dmVfYmxvY2soJnNjYW4sICZtLT52cmFtX25vZGUpKQo+ICAJCQkJbGlzdF9kZWxfaW5pdCgmbS0+ c2Nhbl9ub2RlKTsKPiAgCj4gIAkJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0 LmMKPiBpbmRleCA2NDU3ZmQwYzMzYTguLjZkYjBkNzNjMGFhNyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+IEBAIC01MSw3ICs1MSwxMCBAQCBzdGF0aWMgYm9vbCBn Z3R0X2lzX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB9Cj4gIAo+ ICBzdGF0aWMgYm9vbAo+IC1tYXJrX2ZyZWUoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVk IGludCBmbGFncywgc3RydWN0IGxpc3RfaGVhZCAqdW53aW5kKQo+ICttYXJrX2ZyZWUoc3RydWN0 IGRybV9tbV9zY2FuICpzY2FuLAo+ICsJICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiArCSAgdW5z aWduZWQgaW50IGZsYWdzLAo+ICsJICBzdHJ1Y3QgbGlzdF9oZWFkICp1bndpbmQpCj4gIHsKPiAg CWlmIChpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTYz LDcgKzY2LDcgQEAgbWFya19mcmVlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBpbnQg ZmxhZ3MsIHN0cnVjdCBsaXN0X2hlYWQgKnVud2luZCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ ICAJbGlzdF9hZGQoJnZtYS0+ZXhlY19saXN0LCB1bndpbmQpOwo+IC0JcmV0dXJuIGRybV9tbV9z Y2FuX2FkZF9ibG9jaygmdm1hLT5ub2RlKTsKPiArCXJldHVybiBkcm1fbW1fc2Nhbl9hZGRfYmxv Y2soc2NhbiwgJnZtYS0+bm9kZSk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC05Nyw2ICsxMDAsNyBA QCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4gIAkJCSB1bnNpZ25lZCBmbGFncykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdm0tPmk5MTU7Cj4gKwlzdHJ1Y3QgZHJtX21tX3NjYW4gc2NhbjsKPiAgCXN0 cnVjdCBsaXN0X2hlYWQgZXZpY3Rpb25fbGlzdDsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgKnBoYXNl c1tdID0gewo+ICAJCSZ2bS0+aW5hY3RpdmVfbGlzdCwKPiBAQCAtMTIzLDExICsxMjcsMTIgQEAg aTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ ICAJICogb2JqZWN0IG9uIHRoZSBUQUlMLgo+ICAJICovCj4gIAlpZiAoc3RhcnQgIT0gMCB8fCBl bmQgIT0gdm0tPnRvdGFsKSB7Cj4gLQkJZHJtX21tX2luaXRfc2Nhbl93aXRoX3JhbmdlKCZ2bS0+ bW0sIG1pbl9zaXplLAo+ICsJCWRybV9tbV9zY2FuX2luaXRfd2l0aF9yYW5nZSgmc2NhbiwgJnZt LT5tbSwgbWluX3NpemUsCj4gIAkJCQkJICAgIGFsaWdubWVudCwgY2FjaGVfbGV2ZWwsCj4gIAkJ CQkJICAgIHN0YXJ0LCBlbmQpOwo+ICAJfSBlbHNlCj4gLQkJZHJtX21tX2luaXRfc2Nhbigmdm0t Pm1tLCBtaW5fc2l6ZSwgYWxpZ25tZW50LCBjYWNoZV9sZXZlbCk7Cj4gKwkJZHJtX21tX3NjYW5f aW5pdCgmc2NhbiwgJnZtLT5tbSwgbWluX3NpemUsCj4gKwkJCQkgYWxpZ25tZW50LCBjYWNoZV9s ZXZlbCk7Cj4gIAo+ICAJLyogUmV0aXJlIGJlZm9yZSB3ZSBzZWFyY2ggdGhlIGFjdGl2ZSBsaXN0 LiBBbHRob3VnaCB3ZSBoYXZlCj4gIAkgKiByZWFzb25hYmxlIGFjY3VyYWN5IGluIG91ciByZXRp cmVtZW50IGxpc3RzLCB3ZSBtYXkgaGF2ZQo+IEBAIC0xNDQsMTMgKzE0OSwxMyBAQCBpOTE1X2dl bV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAlwaGFz ZSA9IHBoYXNlczsKPiAgCWRvIHsKPiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgKnBoYXNl LCB2bV9saW5rKQo+IC0JCQlpZiAobWFya19mcmVlKHZtYSwgZmxhZ3MsICZldmljdGlvbl9saXN0 KSkKPiArCQkJaWYgKG1hcmtfZnJlZSgmc2Nhbiwgdm1hLCBmbGFncywgJmV2aWN0aW9uX2xpc3Qp KQo+ICAJCQkJZ290byBmb3VuZDsKPiAgCX0gd2hpbGUgKCorK3BoYXNlKTsKPiAgCj4gIAkvKiBO b3RoaW5nIGZvdW5kLCBjbGVhbiB1cCBhbmQgYmFpbCBvdXQhICovCj4gIAlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmZXZpY3Rpb25fbGlzdCwgZXhlY19saXN0KSB7Cj4gLQkJ cmV0ID0gZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZ2bWEtPm5vZGUpOwo+ICsJCXJldCA9IGRy bV9tbV9zY2FuX3JlbW92ZV9ibG9jaygmc2NhbiwgJnZtYS0+bm9kZSk7Cj4gIAkJQlVHX09OKHJl dCk7Cj4gIAo+ICAJCUlOSVRfTElTVF9IRUFEKCZ2bWEtPmV4ZWNfbGlzdCk7Cj4gQEAgLTE5OSw3 ICsyMDQsNyBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gIAkgKiBvZiBhbnkgb2Ygb3VyIG9iamVjdHMsIHRodXMgY29ycnVwdGluZyB0 aGUgbGlzdCkuCj4gIAkgKi8KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIG5leHQs ICZldmljdGlvbl9saXN0LCBleGVjX2xpc3QpIHsKPiAtCQlpZiAoZHJtX21tX3NjYW5fcmVtb3Zl X2Jsb2NrKCZ2bWEtPm5vZGUpKQo+ICsJCWlmIChkcm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soJnNj YW4sICZ2bWEtPm5vZGUpKQo+ICAJCQlfX2k5MTVfdm1hX3Bpbih2bWEpOwo+ICAJCWVsc2UKPiAg CQkJbGlzdF9kZWxfaW5pdCgmdm1hLT5leGVjX2xpc3QpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRl c3RzL3Rlc3QtZHJtX21tLmMKPiBpbmRleCBlMmVkOWVmYjM2MWMuLjk5N2YyYmM5M2I5YiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21tLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21tLmMKPiBAQCAtMTExNCwxMSAr MTExNCwxMSBAQCBzdGF0aWMgaW50IGlndF9hbGlnbjY0KHZvaWQgKmlnbm9yZWQpCj4gIAlyZXR1 cm4gaWd0X2FsaWduX3BvdCg2NCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHNob3dfc2Nhbihj b25zdCBzdHJ1Y3QgZHJtX21tICpzY2FuKQo+ICtzdGF0aWMgdm9pZCBzaG93X3NjYW4oY29uc3Qg c3RydWN0IGRybV9tbV9zY2FuICpzY2FuKQo+ICB7Cj4gIAlwcl9pbmZvKCJzY2FuOiBoaXQgWyVs bHgsICVsbHhdLCBzaXplPSVsbGQsIGFsaWduPSVsbGQsIGNvbG9yPSVsZFxuIiwKPiAtCQlzY2Fu LT5zY2FuX2hpdF9zdGFydCwgc2Nhbi0+c2Nhbl9oaXRfZW5kLAo+IC0JCXNjYW4tPnNjYW5fc2l6 ZSwgc2Nhbi0+c2Nhbl9hbGlnbm1lbnQsIHNjYW4tPnNjYW5fY29sb3IpOwo+ICsJCXNjYW4tPmhp dF9zdGFydCwgc2Nhbi0+aGl0X2VuZCwKPiArCQlzY2FuLT5zaXplLCBzY2FuLT5hbGlnbm1lbnQs IHNjYW4tPmNvbG9yKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2hvd19ob2xlcyhjb25zdCBz dHJ1Y3QgZHJtX21tICptbSwgaW50IGNvdW50KQo+IEBAIC0xMTU4LDcgKzExNTgsNyBAQCBzdHJ1 Y3QgZXZpY3Rfbm9kZSB7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gIH07Cj4gIAo+IC1z dGF0aWMgYm9vbCBldmljdF9ub2RlcyhzdHJ1Y3QgZHJtX21tICptbSwKPiArc3RhdGljIGJvb2wg ZXZpY3Rfbm9kZXMoc3RydWN0IGRybV9tbV9zY2FuICpzY2FuLAo+ICAJCQlzdHJ1Y3QgZXZpY3Rf bm9kZSAqbm9kZXMsCj4gIAkJCXVuc2lnbmVkIGludCAqb3JkZXIsCj4gIAkJCXVuc2lnbmVkIGlu dCBjb3VudCwKPiBAQCAtMTE3MCwxOCArMTE3MCwxNiBAQCBzdGF0aWMgYm9vbCBldmljdF9ub2Rl cyhzdHJ1Y3QgZHJtX21tICptbSwKPiAgCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4g IAkJZSA9ICZub2Rlc1tvcmRlciA/IG9yZGVyW2ldIDogaV07Cj4gIAkJbGlzdF9hZGQoJmUtPmxp bmssIGV2aWN0X2xpc3QpOwo+IC0JCWlmIChkcm1fbW1fc2Nhbl9hZGRfYmxvY2soJmUtPm5vZGUp KQo+ICsJCWlmIChkcm1fbW1fc2Nhbl9hZGRfYmxvY2soc2NhbiwgJmUtPm5vZGUpKQo+ICAJCQli cmVhazsKPiAgCX0KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBlbiwgZXZpY3RfbGlz dCwgbGluaykgewo+IC0JCWlmICghZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZlLT5ub2RlKSkK PiArCQlpZiAoIWRybV9tbV9zY2FuX3JlbW92ZV9ibG9jayhzY2FuLCAmZS0+bm9kZSkpCj4gIAkJ CWxpc3RfZGVsKCZlLT5saW5rKTsKPiAgCX0KPiAgCWlmIChsaXN0X2VtcHR5KGV2aWN0X2xpc3Qp KSB7Cj4gIAkJcHJfZXJyKCJGYWlsZWQgdG8gZmluZCBldmljdGlvbjogc2l6ZT0lbGxkIFthdmFp bD0lZF0sIGFsaWduPSVsbGQgKGNvbG9yPSVsdSlcbiIsCj4gLQkJICAgICAgIG1tLT5zY2FuX3Np emUsIGNvdW50LAo+IC0JCSAgICAgICBtbS0+c2Nhbl9hbGlnbm1lbnQsCj4gLQkJICAgICAgIG1t LT5zY2FuX2NvbG9yKTsKPiArCQkgICAgICAgc2Nhbi0+c2l6ZSwgY291bnQsIHNjYW4tPmFsaWdu bWVudCwgc2Nhbi0+Y29sb3IpOwo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gQEAgLTEx OTUsMTkgKzExOTMsMjAgQEAgc3RhdGljIGJvb2wgZXZpY3Rfbm90aGluZyhzdHJ1Y3QgZHJtX21t ICptbSwKPiAgCQkJICB1bnNpZ25lZCBpbnQgdG90YWxfc2l6ZSwKPiAgCQkJICBzdHJ1Y3QgZXZp Y3Rfbm9kZSAqbm9kZXMpCj4gIHsKPiArCXN0cnVjdCBkcm1fbW1fc2NhbiBzY2FuOwo+ICAJTElT VF9IRUFEKGV2aWN0X2xpc3QpOwo+ICAJc3RydWN0IGV2aWN0X25vZGUgKmU7Cj4gIAlzdHJ1Y3Qg ZHJtX21tX25vZGUgKm5vZGU7Cj4gIAl1bnNpZ25lZCBpbnQgbjsKPiAgCj4gLQlkcm1fbW1faW5p dF9zY2FuKG1tLCAxLCAwLCAwKTsKPiArCWRybV9tbV9zY2FuX2luaXQoJnNjYW4sIG1tLCAxLCAw LCAwKTsKPiAgCWZvciAobiA9IDA7IG4gPCB0b3RhbF9zaXplOyBuKyspIHsKPiAgCQllID0gJm5v ZGVzW25dOwo+ICAJCWxpc3RfYWRkKCZlLT5saW5rLCAmZXZpY3RfbGlzdCk7Cj4gLQkJZHJtX21t X3NjYW5fYWRkX2Jsb2NrKCZlLT5ub2RlKTsKPiArCQlkcm1fbW1fc2Nhbl9hZGRfYmxvY2soJnNj YW4sICZlLT5ub2RlKTsKPiAgCX0KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkoZSwgJmV2aWN0X2xp c3QsIGxpbmspCj4gLQkJZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZlLT5ub2RlKTsKPiArCQlk cm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soJnNjYW4sICZlLT5ub2RlKTsKPiAgCj4gIAlmb3IgKG4g PSAwOyBuIDwgdG90YWxfc2l6ZTsgbisrKSB7Cj4gIAkJZSA9ICZub2Rlc1tuXTsKPiBAQCAtMTI0 MSwxOSArMTI0MCwyMSBAQCBzdGF0aWMgYm9vbCBldmljdF9ldmVyeXRoaW5nKHN0cnVjdCBkcm1f bW0gKm1tLAo+ICAJCQkgICAgIHVuc2lnbmVkIGludCB0b3RhbF9zaXplLAo+ICAJCQkgICAgIHN0 cnVjdCBldmljdF9ub2RlICpub2RlcykKPiAgewo+ICsJc3RydWN0IGRybV9tbV9zY2FuIHNjYW47 Cj4gIAlMSVNUX0hFQUQoZXZpY3RfbGlzdCk7Cj4gIAlzdHJ1Y3QgZXZpY3Rfbm9kZSAqZTsKPiAg CXVuc2lnbmVkIGludCBuOwo+ICAJaW50IGVycjsKPiAgCj4gLQlkcm1fbW1faW5pdF9zY2FuKG1t LCB0b3RhbF9zaXplLCAwLCAwKTsKPiArCWRybV9tbV9zY2FuX2luaXQoJnNjYW4sIG1tLCB0b3Rh bF9zaXplLCAwLCAwKTsKPiAgCWZvciAobiA9IDA7IG4gPCB0b3RhbF9zaXplOyBuKyspIHsKPiAg CQllID0gJm5vZGVzW25dOwo+ICAJCWxpc3RfYWRkKCZlLT5saW5rLCAmZXZpY3RfbGlzdCk7Cj4g LQkJZHJtX21tX3NjYW5fYWRkX2Jsb2NrKCZlLT5ub2RlKTsKPiArCQlpZiAoZHJtX21tX3NjYW5f YWRkX2Jsb2NrKCZzY2FuLCAmZS0+bm9kZSkpCj4gKwkJCWJyZWFrOwo+ICAJfQo+ICAJbGlzdF9m b3JfZWFjaF9lbnRyeShlLCAmZXZpY3RfbGlzdCwgbGluaykgewo+IC0JCWlmICghZHJtX21tX3Nj YW5fcmVtb3ZlX2Jsb2NrKCZlLT5ub2RlKSkgewo+ICsJCWlmICghZHJtX21tX3NjYW5fcmVtb3Zl X2Jsb2NrKCZzY2FuLCAmZS0+bm9kZSkpIHsKPiAgCQkJcHJfZXJyKCJOb2RlICVsbGQgbm90IG1h cmtlZCBmb3IgZXZpY3Rpb24hXG4iLAo+ICAJCQkgICAgICAgZS0+bm9kZS5zdGFydCk7Cj4gIAkJ CWxpc3RfZGVsKCZlLT5saW5rKTsKPiBAQCAtMTI4NywxNSArMTI4OCwxNiBAQCBzdGF0aWMgaW50 IGV2aWN0X3NvbWV0aGluZyhzdHJ1Y3QgZHJtX21tICptbSwKPiAgCQkJICAgdW5zaWduZWQgaW50 IGFsaWdubWVudCwKPiAgCQkJICAgY29uc3Qgc3RydWN0IGluc2VydF9tb2RlICptb2RlKQo+ICB7 Cj4gKwlzdHJ1Y3QgZHJtX21tX3NjYW4gc2NhbjsKPiAgCUxJU1RfSEVBRChldmljdF9saXN0KTsK PiAgCXN0cnVjdCBldmljdF9ub2RlICplOwo+ICAJc3RydWN0IGRybV9tbV9ub2RlIHRtcDsKPiAg CWludCBlcnI7Cj4gIAo+IC0JZHJtX21tX2luaXRfc2Nhbl93aXRoX3JhbmdlKG1tLAo+ICsJZHJt X21tX3NjYW5faW5pdF93aXRoX3JhbmdlKCZzY2FuLCBtbSwKPiAgCQkJCSAgICBzaXplLCBhbGln bm1lbnQsIDAsCj4gIAkJCQkgICAgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZCk7Cj4gLQlpZiAoIWV2 aWN0X25vZGVzKG1tLAo+ICsJaWYgKCFldmljdF9ub2Rlcygmc2NhbiwKPiAgCQkJIG5vZGVzLCBv cmRlciwgY291bnQsCj4gIAkJCSAmZXZpY3RfbGlzdCkpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4g QEAgLTEzMDcsNyArMTMwOSw3IEBAIHN0YXRpYyBpbnQgZXZpY3Rfc29tZXRoaW5nKHN0cnVjdCBk cm1fbW0gKm1tLAo+ICAJaWYgKGVycikgewo+ICAJCXByX2VycigiRmFpbGVkIHRvIGluc2VydCBp bnRvIGV2aWN0aW9uIGhvbGU6IHNpemU9JWQsIGFsaWduPSVkXG4iLAo+ICAJCSAgICAgICBzaXpl LCBhbGlnbm1lbnQpOwo+IC0JCXNob3dfc2NhbihtbSk7Cj4gKwkJc2hvd19zY2FuKCZzY2FuKTsK PiAgCQlzaG93X2hvbGVzKG1tLCAzKTsKPiAgCQlyZXR1cm4gZXJyOwo+ICAJfQo+IEBAIC0xODY0 LDE1ICsxODY2LDE2IEBAIHN0YXRpYyBpbnQgZXZpY3RfY29sb3Ioc3RydWN0IGRybV9tbSAqbW0s Cj4gIAkJICAgICAgIHVuc2lnbmVkIGxvbmcgY29sb3IsCj4gIAkJICAgICAgIGNvbnN0IHN0cnVj dCBpbnNlcnRfbW9kZSAqbW9kZSkKPiAgewo+ICsJc3RydWN0IGRybV9tbV9zY2FuIHNjYW47Cj4g IAlMSVNUX0hFQUQoZXZpY3RfbGlzdCk7Cj4gIAlzdHJ1Y3QgZXZpY3Rfbm9kZSAqZTsKPiAgCXN0 cnVjdCBkcm1fbW1fbm9kZSB0bXA7Cj4gIAlpbnQgZXJyOwo+ICAKPiAtCWRybV9tbV9pbml0X3Nj YW5fd2l0aF9yYW5nZShtbSwKPiArCWRybV9tbV9zY2FuX2luaXRfd2l0aF9yYW5nZSgmc2Nhbiwg bW0sCj4gIAkJCQkgICAgc2l6ZSwgYWxpZ25tZW50LCBjb2xvciwKPiAgCQkJCSAgICByYW5nZV9z dGFydCwgcmFuZ2VfZW5kKTsKPiAtCWlmICghZXZpY3Rfbm9kZXMobW0sCj4gKwlpZiAoIWV2aWN0 X25vZGVzKCZzY2FuLAo+ICAJCQkgbm9kZXMsIG9yZGVyLCBjb3VudCwKPiAgCQkJICZldmljdF9s aXN0KSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTg4NCw3ICsxODg3LDcgQEAgc3RhdGlj IGludCBldmljdF9jb2xvcihzdHJ1Y3QgZHJtX21tICptbSwKPiAgCWlmIChlcnIpIHsKPiAgCQlw cl9lcnIoIkZhaWxlZCB0byBpbnNlcnQgaW50byBldmljdGlvbiBob2xlOiBzaXplPSVkLCBhbGln bj0lZCwgY29sb3I9JWx1LCBlcnI9JWRcbiIsCj4gIAkJICAgICAgIHNpemUsIGFsaWdubWVudCwg Y29sb3IsIGVycik7Cj4gLQkJc2hvd19zY2FuKG1tKTsKPiArCQlzaG93X3NjYW4oJnNjYW4pOwo+ ICAJCXNob3dfaG9sZXMobW0sIDMpOwo+ICAJCXJldHVybiBlcnI7Cj4gIAl9Cj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybV9tbS5oIGIvaW5jbHVkZS9kcm0vZHJtX21tLmgKPiBpbmRleCA3 MmUwYzBkZGY4ZDAuLmZjYWQ3MThjNWZiNCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1f bW0uaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tbS5oCj4gQEAgLTk4LDIwICs5OCwyOSBAQCBz dHJ1Y3QgZHJtX21tIHsKPiAgCS8qIEtlZXAgYW4gaW50ZXJ2YWxfdHJlZSBmb3IgZmFzdCBsb29r dXAgb2YgZHJtX21tX25vZGVzIGJ5IGFkZHJlc3MuICovCj4gIAlzdHJ1Y3QgcmJfcm9vdCBpbnRl cnZhbF90cmVlOwo+ICAKPiAtCXVuc2lnbmVkIGludCBzY2FuX2NoZWNrX3JhbmdlIDogMTsKPiAt CXVuc2lnbmVkIGludCBzY2FubmVkX2Jsb2NrczsKPiAtCXVuc2lnbmVkIGxvbmcgc2Nhbl9jb2xv cjsKPiAtCXU2NCBzY2FuX2FsaWdubWVudDsKPiAtCXU2NCBzY2FuX3NpemU7Cj4gLQl1NjQgc2Nh bl9oaXRfc3RhcnQ7Cj4gLQl1NjQgc2Nhbl9oaXRfZW5kOwo+IC0JdTY0IHNjYW5fc3RhcnQ7Cj4g LQl1NjQgc2Nhbl9lbmQ7Cj4gLQlzdHJ1Y3QgZHJtX21tX25vZGUgKnByZXZfc2Nhbm5lZF9ub2Rl Owo+IC0KPiAgCXZvaWQgKCpjb2xvcl9hZGp1c3QpKGNvbnN0IHN0cnVjdCBkcm1fbW1fbm9kZSAq bm9kZSwKPiAgCQkJICAgICB1bnNpZ25lZCBsb25nIGNvbG9yLAo+ICAJCQkgICAgIHU2NCAqc3Rh cnQsIHU2NCAqZW5kKTsKPiArCj4gKwl1bnNpZ25lZCBsb25nIHNjYW5fYWN0aXZlOwo+ICt9Owo+ ICsKPiArc3RydWN0IGRybV9tbV9zY2FuIHsKPiArCXN0cnVjdCBkcm1fbW0gKm1tOwo+ICsKPiAr CXU2NCBzaXplOwo+ICsJdTY0IGFsaWdubWVudDsKPiArCj4gKwl1NjQgcmFuZ2Vfc3RhcnQ7Cj4g Kwl1NjQgcmFuZ2VfZW5kOwo+ICsKPiArCXU2NCBoaXRfc3RhcnQ7Cj4gKwl1NjQgaGl0X2VuZDsK PiArCj4gKwlzdHJ1Y3QgZHJtX21tX25vZGUgKnByZXZfc2Nhbm5lZF9ub2RlOwo+ICsKPiArCXVu c2lnbmVkIGxvbmcgY29sb3I7Cj4gKwlib29sIGNoZWNrX3JhbmdlIDogMTsKPiAgfTsKPiAgCj4g IC8qKgo+IEBAIC0zNzgsMTggKzM4NywyMiBAQCBfX2RybV9tbV9pbnRlcnZhbF9maXJzdChjb25z dCBzdHJ1Y3QgZHJtX21tICptbSwgdTY0IHN0YXJ0LCB1NjQgbGFzdCk7Cj4gIAkgICAgIG5vZGVf XyAmJiBub2RlX18tPnN0YXJ0IDwgKGVuZF9fKTsJCQkJXAo+ICAJICAgICBub2RlX18gPSBsaXN0 X25leHRfZW50cnkobm9kZV9fLCBub2RlX2xpc3QpKQo+ICAKPiAtdm9pZCBkcm1fbW1faW5pdF9z Y2FuKHN0cnVjdCBkcm1fbW0gKm1tLAo+ICt2b2lkIGRybV9tbV9zY2FuX2luaXQoc3RydWN0IGRy bV9tbV9zY2FuICpzY2FuLAo+ICsJCSAgICAgIHN0cnVjdCBkcm1fbW0gKm1tLAo+ICAJCSAgICAg IHU2NCBzaXplLAo+ICAJCSAgICAgIHU2NCBhbGlnbm1lbnQsCj4gIAkJICAgICAgdW5zaWduZWQg bG9uZyBjb2xvcik7Cj4gLXZvaWQgZHJtX21tX2luaXRfc2Nhbl93aXRoX3JhbmdlKHN0cnVjdCBk cm1fbW0gKm1tLAo+ICt2b2lkIGRybV9tbV9zY2FuX2luaXRfd2l0aF9yYW5nZShzdHJ1Y3QgZHJt X21tX3NjYW4gKnNjYW4sCj4gKwkJCQkgc3RydWN0IGRybV9tbSAqbW0sCj4gIAkJCQkgdTY0IHNp emUsCj4gIAkJCQkgdTY0IGFsaWdubWVudCwKPiAgCQkJCSB1bnNpZ25lZCBsb25nIGNvbG9yLAo+ ICAJCQkJIHU2NCBzdGFydCwKPiAgCQkJCSB1NjQgZW5kKTsKPiAtYm9vbCBkcm1fbW1fc2Nhbl9h ZGRfYmxvY2soc3RydWN0IGRybV9tbV9ub2RlICpub2RlKTsKPiAtYm9vbCBkcm1fbW1fc2Nhbl9y ZW1vdmVfYmxvY2soc3RydWN0IGRybV9tbV9ub2RlICpub2RlKTsKPiArYm9vbCBkcm1fbW1fc2Nh bl9hZGRfYmxvY2soc3RydWN0IGRybV9tbV9zY2FuICpzY2FuLAo+ICsJCQkgICBzdHJ1Y3QgZHJt X21tX25vZGUgKm5vZGUpOwo+ICtib29sIGRybV9tbV9zY2FuX3JlbW92ZV9ibG9jayhzdHJ1Y3Qg ZHJtX21tX3NjYW4gKnNjYW4sCj4gKwkJCSAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSk7 Cj4gIAo+ICB2b2lkIGRybV9tbV9kZWJ1Z190YWJsZShjb25zdCBzdHJ1Y3QgZHJtX21tICptbSwg Y29uc3QgY2hhciAqcHJlZml4KTsKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+IC0tIAo+IDIu MTEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=