From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 4/6] drm/amdkfd: Separate mqd allocation and initialization Date: Wed, 5 Jun 2019 22:18:13 +0000 Message-ID: <9ccf3130-59f2-a643-1287-ae075a3d0975@amd.com> References: <1559750793-16608-1-git-send-email-Oak.Zeng@amd.com> <1559750793-16608-4-git-send-email-Oak.Zeng@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1559750793-16608-4-git-send-email-Oak.Zeng-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <96C591E7BC647747B8E34294BBA967F1-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Zeng, Oak" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Zhao, Yong" , "Freehill, Chris" , "Liu, Alex" TmljZS4gU3VycHJpc2luZ2x5IHRoaXMgYWN0dWFsbHkgcmVzdWx0ZWQgaW4gc2xpZ2h0bHkgZmV3 ZXIgbGluZXMgb2YgDQpjb2RlLiBTb21lIHN1Z2dlc3Rpb25zOg0KDQpMZXQncyBhbHNvIHJlbmFt ZSB1bmluaXRfbXFkIHRvIGZyZWVfbXFkLCBhcyBpdCBpcyB0aGUgY291bnRlcnBhcnQgdG8gDQph bGxvY2F0ZV9tcWQsIG5vdCBpbml0X21xZC4NCg0KQW5kIHVubGVzcyBJJ20gbWlzc2luZyBzb21l dGhpbmcsIGluaXRfbXFkIGFuZCB1cGRhdGVfbXFkIGNhbm5vdCBmYWlsIA0Kbm93IHRoYXQgYWxs b2NhdGVfbXFkIGhhcyBiZWVuIHNlcGFyYXRlZCBmcm9tIHRoZW0uIFRoYXQgbWVhbnMgeW91IGNv dWxkIA0KY2hhbmdlIHRoZW0gdG8gdm9pZCBmdW5jdGlvbnMsIGFuZCBpdCBtYXkgc2ltcGxpZnkg c29tZSBvZiB0aGUgZXJyb3IgDQpoYW5kbGluZyBpZiB5b3UgaGF2ZSBmZXdlciBwb3RlbnRpYWwg ZmFpbHVyZSBjYXNlcyB0byBjb25zaWRlci4NCg0KUmVnYXJkcywNCiDCoCBGZWxpeA0KDQpPbiAy MDE5LTA2LTA1IDEyOjA2IHAubS4sIFplbmcsIE9hayB3cm90ZToNCj4gSW50cm9kdWNlIGEgbmV3 IG1xZCBhbGxvY2F0aW9uIGludGVyZmFjZSBhbmQgc3BsaXQgdGhlIG9yaWdpbmFsDQo+IGluaXRf bXFkIGZ1bmN0aW9uIGludG8gdHdvIGZ1bmN0aW9uczogYWxsb2NhdGVfbXFkIGFuZCBpbml0X21x ZC4NCj4gVGhpcyBpcyBwcmVwYXJhdGlvbiB3b3JrIHRvIGZpeCBhIGNpcmN1bGFyIGxvY2sgZGVw ZW5kZW5jeS4NCj4NCj4gQ2hhbmdlLUlkOiBJMjZlNTNlZTFhYmNkZDY4OGFkMTFkMzViNDMzZGE3 N2UzZmExYmVlNw0KPiBTaWduZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8T2FrLlplbmdAYW1kLmNvbT4N Cj4gLS0tDQo+ICAgLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFn ZXIuYyAgfCAxNiArKysrKysrKy0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9rZXJuZWxfcXVldWUuYyAgICAgIHwgIDggKysrKystDQo+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMgICAgICAgfCAgMiArLQ0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5oICAgICAgIHwgIDggKysrKy0tDQo+ICAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jICAgfCAzMSAr KysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X21xZF9tYW5hZ2VyX3Y5LmMgICAgfCAzMSArKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3ZpLmMgICAgfCAzMSArKysr KysrKy0tLS0tLS0tLS0tLS0tDQo+ICAgNyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCsp LCA2OCBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCj4gaW5kZXggM2MwNDJlYi4uNzg3YjVi ZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9x dWV1ZV9tYW5hZ2VyLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rl dmljZV9xdWV1ZV9tYW5hZ2VyLmMNCj4gQEAgLTMxOSwxMCArMzE5LDEzIEBAIHN0YXRpYyBpbnQg Y3JlYXRlX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+ ICAgCWlmIChyZXR2YWwpDQo+ICAgCQlnb3RvIG91dF9kZWFsbG9jYXRlX2hxZDsNCj4gICANCj4g LQlyZXR2YWwgPSBtcWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCAmcS0+bXFkX21l bV9vYmosDQo+ICsJcS0+bXFkX21lbV9vYmogPSBtcWRfbWdyLT5hbGxvY2F0ZV9tcWQobXFkX21n ci0+ZGV2LCAmcS0+cHJvcGVydGllcyk7DQo+ICsJaWYgKCFxLT5tcWRfbWVtX29iaikNCj4gKwkJ Z290byBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDsNCj4gKwlyZXR2YWwgPSBtcWRfbWdyLT5pbml0 X21xZChtcWRfbWdyLCAmcS0+bXFkLCBxLT5tcWRfbWVtX29iaiwNCj4gICAJCQkJJnEtPmdhcnRf bXFkX2FkZHIsICZxLT5wcm9wZXJ0aWVzKTsNCj4gICAJaWYgKHJldHZhbCkNCj4gLQkJZ290byBv dXRfZGVhbGxvY2F0ZV9kb29yYmVsbDsNCj4gKwkJZ290byBvdXRfdW5pbml0X21xZDsNCj4gICAN Cj4gICAJaWYgKHEtPnByb3BlcnRpZXMuaXNfYWN0aXZlKSB7DQo+ICAgDQo+IEBAIC0xMTYwLDEw ICsxMTYzLDEzIEBAIHN0YXRpYyBpbnQgY3JlYXRlX3F1ZXVlX2Nwc2NoKHN0cnVjdCBkZXZpY2Vf cXVldWVfbWFuYWdlciAqZHFtLCBzdHJ1Y3QgcXVldWUgKnEsDQo+ICAgCQlkcW0tPmFzaWNfb3Bz LmluaXRfc2RtYV92bShkcW0sIHEsIHFwZCk7DQo+ICAgCXEtPnByb3BlcnRpZXMudGJhX2FkZHIg PSBxcGQtPnRiYV9hZGRyOw0KPiAgIAlxLT5wcm9wZXJ0aWVzLnRtYV9hZGRyID0gcXBkLT50bWFf YWRkcjsNCj4gLQlyZXR2YWwgPSBtcWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCAm cS0+bXFkX21lbV9vYmosDQo+ICsJcS0+bXFkX21lbV9vYmogPSBtcWRfbWdyLT5hbGxvY2F0ZV9t cWQobXFkX21nci0+ZGV2LCAmcS0+cHJvcGVydGllcyk7DQo+ICsJaWYgKCFxLT5tcWRfbWVtX29i aikNCj4gKwkJZ290byBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDsNCj4gKwlyZXR2YWwgPSBtcWRf bWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCBxLT5tcWRfbWVtX29iaiwNCj4gICAJCQkJ JnEtPmdhcnRfbXFkX2FkZHIsICZxLT5wcm9wZXJ0aWVzKTsNCj4gICAJaWYgKHJldHZhbCkNCj4g LQkJZ290byBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDsNCj4gKwkJZ290byBvdXRfZGVhbGxvY2F0 ZV9tcWQ7DQo+ICAgDQo+ICAgCWRxbV9sb2NrKGRxbSk7DQo+ICAgDQo+IEBAIC0xMTkxLDYgKzEx OTcsOCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVl X21hbmFnZXIgKmRxbSwgc3RydWN0IHF1ZXVlICpxLA0KPiAgIAlkcW1fdW5sb2NrKGRxbSk7DQo+ ICAgCXJldHVybiByZXR2YWw7DQo+ICAgDQo+ICtvdXRfZGVhbGxvY2F0ZV9tcWQ6DQo+ICsJbXFk X21nci0+dW5pbml0X21xZChtcWRfbWdyLCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCj4gICBv dXRfZGVhbGxvY2F0ZV9kb29yYmVsbDoNCj4gICAJZGVhbGxvY2F0ZV9kb29yYmVsbChxcGQsIHEp Ow0KPiAgIG91dF9kZWFsbG9jYXRlX3NkbWFfcXVldWU6DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMNCj4gaW5kZXggMWNjMDNiMy4uNjRjOGZmZSAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1 ZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxfcXVldWUu Yw0KPiBAQCAtMTMyLDggKzEzMiwxMiBAQCBzdGF0aWMgYm9vbCBpbml0aWFsaXplKHN0cnVjdCBr ZXJuZWxfcXVldWUgKmtxLCBzdHJ1Y3Qga2ZkX2RldiAqZGV2LA0KPiAgIAlrcS0+cXVldWUtPmRl dmljZSA9IGRldjsNCj4gICAJa3EtPnF1ZXVlLT5wcm9jZXNzID0ga2ZkX2dldF9wcm9jZXNzKGN1 cnJlbnQpOw0KPiAgIA0KPiArCWtxLT5xdWV1ZS0+bXFkX21lbV9vYmogPSBrcS0+bXFkX21nci0+ YWxsb2NhdGVfbXFkKGtxLT5tcWRfbWdyLT5kZXYsDQo+ICsJCQkJCSZrcS0+cXVldWUtPnByb3Bl cnRpZXMpOw0KPiArCWlmICgha3EtPnF1ZXVlLT5tcWRfbWVtX29iaikNCj4gKwkJZ290byBlcnJf YWxsb2NhdGVfbXFkOw0KPiAgIAlyZXR2YWwgPSBrcS0+bXFkX21nci0+aW5pdF9tcWQoa3EtPm1x ZF9tZ3IsICZrcS0+cXVldWUtPm1xZCwNCj4gLQkJCQkJJmtxLT5xdWV1ZS0+bXFkX21lbV9vYmos DQo+ICsJCQkJCWtxLT5xdWV1ZS0+bXFkX21lbV9vYmosDQo+ICAgCQkJCQkma3EtPnF1ZXVlLT5n YXJ0X21xZF9hZGRyLA0KPiAgIAkJCQkJJmtxLT5xdWV1ZS0+cHJvcGVydGllcyk7DQo+ICAgCWlm IChyZXR2YWwgIT0gMCkNCj4gQEAgLTE2NSw2ICsxNjksOCBAQCBzdGF0aWMgYm9vbCBpbml0aWFs aXplKHN0cnVjdCBrZXJuZWxfcXVldWUgKmtxLCBzdHJ1Y3Qga2ZkX2RldiAqZGV2LA0KPiAgIAly ZXR1cm4gdHJ1ZTsNCj4gICBlcnJfYWxsb2NfZmVuY2U6DQo+ICAgZXJyX2luaXRfbXFkOg0KPiAr CWtxLT5tcWRfbWdyLT51bmluaXRfbXFkKGtxLT5tcWRfbWdyLCBrcS0+cXVldWUtPm1xZCwga3Et PnF1ZXVlLT5tcWRfbWVtX29iaik7DQo+ICtlcnJfYWxsb2NhdGVfbXFkOg0KPiAgIAl1bmluaXRf cXVldWUoa3EtPnF1ZXVlKTsNCj4gICBlcnJfaW5pdF9xdWV1ZToNCj4gICAJa2ZkX2d0dF9zYV9m cmVlKGRldiwga3EtPndwdHJfbWVtKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX21xZF9tYW5hZ2VyLmMNCj4gaW5kZXggY2MwNGIzNjIuLmI0ZjMwNWEgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5jDQo+IEBAIC00NSw3 ICs0NSw3IEBAIGludCBwaXBlX3ByaW9yaXR5X21hcFtdID0gew0KPiAgIAlLRkRfUElQRV9QUklP UklUWV9DU19ISUdIDQo+ICAgfTsNCj4gICANCj4gLXN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2Nh dGVfaGlxX21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2KQ0KPiArc3RydWN0IGtmZF9tZW1fb2JqICph bGxvY2F0ZV9oaXFfbXFkKHN0cnVjdCBrZmRfZGV2ICpkZXYsIHN0cnVjdCBxdWV1ZV9wcm9wZXJ0 aWVzICpxKQ0KPiAgIHsNCj4gICAJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiA9IE5V TEw7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf bXFkX21hbmFnZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdl ci5oDQo+IGluZGV4IDY2YjhjNjcuLjg2Njc5OTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5oDQo+IEBAIC02NCw4ICs2NCwxMSBAQA0KPiAg ICAqLw0KPiAgIGV4dGVybiBpbnQgcGlwZV9wcmlvcml0eV9tYXBbXTsNCj4gICBzdHJ1Y3QgbXFk X21hbmFnZXIgew0KPiArCXN0cnVjdCBrZmRfbWVtX29iaioJKCphbGxvY2F0ZV9tcWQpKHN0cnVj dCBrZmRfZGV2ICprZmQsDQo+ICsJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKTsNCj4gKw0K PiAgIAlpbnQJKCppbml0X21xZCkoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwN Cj4gLQkJCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9h ZGRyLA0KPiArCQkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwgdWludDY0X3QgKmdh cnRfYWRkciwNCj4gICAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSk7DQo+ICAgDQo+ICAg CWludAkoKmxvYWRfbXFkKShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+IEBA IC0xMDIsNyArMTA1LDggQEAgc3RydWN0IG1xZF9tYW5hZ2VyIHsNCj4gICAJdWludDMyX3QgbXFk X3NpemU7DQo+ICAgfTsNCj4gICANCj4gLXN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2NhdGVfaGlx X21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2KTsNCj4gK3N0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2Nh dGVfaGlxX21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2LA0KPiArCQkJCXN0cnVjdCBxdWV1ZV9wcm9w ZXJ0aWVzICpxKTsNCj4gICANCj4gICBzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX3NkbWFf bXFkKHN0cnVjdCBrZmRfZGV2ICpkZXYsDQo+ICAgCQkJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGll cyAqcSk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFk X21hbmFnZXJfY2lrLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFn ZXJfY2lrLmMNCj4gaW5kZXggZTkxMTQzOC4uYmJlODA4ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl9jaWsuYw0KPiBAQCAtNzcsOSAr NzcsNiBAQCBzdGF0aWMgc3RydWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9tcWQoc3RydWN0IGtm ZF9kZXYgKmtmZCwNCj4gICB7DQo+ICAgCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmo7 DQo+ICAgDQo+IC0JaWYgKHEtPnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfSElRKQ0KPiAtCQlyZXR1 cm4gYWxsb2NhdGVfaGlxX21xZChrZmQpOw0KPiAtDQo+ICAgCWlmIChrZmRfZ3R0X3NhX2FsbG9j YXRlKGtmZCwgc2l6ZW9mKHN0cnVjdCBjaWtfbXFkKSwNCj4gICAJCQkmbXFkX21lbV9vYmopKQ0K PiAgIAkJcmV0dXJuIE5VTEw7DQo+IEBAIC04OCwyMCArODUsMTUgQEAgc3RhdGljIHN0cnVjdCBr ZmRfbWVtX29iaiAqYWxsb2NhdGVfbXFkKHN0cnVjdCBrZmRfZGV2ICprZmQsDQo+ICAgfQ0KPiAg IA0KPiAgIHN0YXRpYyBpbnQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq Km1xZCwNCj4gLQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpn YXJ0X2FkZHIsDQo+ICsJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVpbnQ2NF90 ICpnYXJ0X2FkZHIsDQo+ICAgCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCj4gICB7DQo+ ICAgCXVpbnQ2NF90IGFkZHI7DQo+ICAgCXN0cnVjdCBjaWtfbXFkICptOw0KPiAgIAlpbnQgcmV0 dmFsOw0KPiAtCXN0cnVjdCBrZmRfZGV2ICprZmQgPSBtbS0+ZGV2Ow0KPiAtDQo+IC0JKm1xZF9t ZW1fb2JqID0gYWxsb2NhdGVfbXFkKGtmZCwgcSk7DQo+IC0JaWYgKCEqbXFkX21lbV9vYmopDQo+ IC0JCXJldHVybiAtRU5PTUVNOw0KPiAgIA0KPiAtCW0gPSAoc3RydWN0IGNpa19tcWQgKikgKCpt cWRfbWVtX29iaiktPmNwdV9wdHI7DQo+IC0JYWRkciA9ICgqbXFkX21lbV9vYmopLT5ncHVfYWRk cjsNCj4gKwltID0gKHN0cnVjdCBjaWtfbXFkICopIG1xZF9tZW1fb2JqLT5jcHVfcHRyOw0KPiAr CWFkZHIgPSBtcWRfbWVtX29iai0+Z3B1X2FkZHI7DQo+ICAgDQo+ICAgCW1lbXNldChtLCAwLCBB TElHTihzaXplb2Yoc3RydWN0IGNpa19tcWQpLCAyNTYpKTsNCj4gICANCj4gQEAgLTE1MCwyNCAr MTQyLDE5IEBAIHN0YXRpYyBpbnQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9p ZCAqKm1xZCwNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIGludCBpbml0X21xZF9zZG1hKHN0cnVj dCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKiptcWQsDQo+IC0JCQlzdHJ1Y3Qga2ZkX21lbV9vYmog KiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwNCj4gKwkJCXN0cnVjdCBrZmRfbWVt X29iaiAqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICAgCQkJc3RydWN0IHF1 ZXVlX3Byb3BlcnRpZXMgKnEpDQo+ICAgew0KPiAgIAlpbnQgcmV0dmFsOw0KPiAgIAlzdHJ1Y3Qg Y2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqbTsNCj4gLQlzdHJ1Y3Qga2ZkX2RldiAqZGV2ID0gbW0t PmRldjsNCj4gLQ0KPiAtCSptcWRfbWVtX29iaiA9IGFsbG9jYXRlX3NkbWFfbXFkKGRldiwgcSk7 DQo+IC0JaWYgKCEqbXFkX21lbV9vYmopDQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiAgIA0KPiAt CW0gPSAoc3RydWN0IGNpa19zZG1hX3JsY19yZWdpc3RlcnMgKikgKCptcWRfbWVtX29iaiktPmNw dV9wdHI7DQo+ICsJbSA9IChzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqKSBtcWRfbWVt X29iai0+Y3B1X3B0cjsNCj4gICANCj4gICAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3QgY2lr X3NkbWFfcmxjX3JlZ2lzdGVycykpOw0KPiAgIA0KPiAgIAkqbXFkID0gbTsNCj4gICAJaWYgKGdh cnRfYWRkcikNCj4gLQkJKmdhcnRfYWRkciA9ICgqbXFkX21lbV9vYmopLT5ncHVfYWRkcjsNCj4g KwkJKmdhcnRfYWRkciA9IG1xZF9tZW1fb2JqLT5ncHVfYWRkcjsNCj4gICANCj4gICAJcmV0dmFs ID0gbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEpOw0KPiAgIA0KPiBAQCAtMzI3LDcgKzMxNCw3IEBA IHN0YXRpYyBib29sIGlzX29jY3VwaWVkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9p ZCAqbXFkLA0KPiAgICAqLw0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgaW5pdF9tcWRfaGlxKHN0cnVj dCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKiptcWQsDQo+IC0JCXN0cnVjdCBrZmRfbWVtX29iaiAq Km1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiArCQlzdHJ1Y3Qga2ZkX21lbV9v YmogKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiAgIAkJc3RydWN0IHF1ZXVl X3Byb3BlcnRpZXMgKnEpDQo+ICAgew0KPiAgIAlyZXR1cm4gaW5pdF9tcWQobW0sIG1xZCwgbXFk X21lbV9vYmosIGdhcnRfYWRkciwgcSk7DQo+IEBAIC0zOTksNiArMzg2LDcgQEAgc3RydWN0IG1x ZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0K PiAgIAlzd2l0Y2ggKHR5cGUpIHsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfQ1A6DQo+ICAgCWNh c2UgS0ZEX01RRF9UWVBFX0NPTVBVVEU6DQo+ICsJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2Nh dGVfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkOw0KPiAgIAkJbXFkLT51bmlu aXRfbXFkID0gdW5pbml0X21xZDsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsNCj4g QEAgLTQxMSw2ICszOTksNyBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRf Y2lrKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ICAgI2VuZGlmDQo+ICAgCQlicmVhazsNCj4g ICAJY2FzZSBLRkRfTVFEX1RZUEVfSElROg0KPiArCQltcWQtPmFsbG9jYXRlX21xZCA9IGFsbG9j YXRlX2hpcV9tcWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWRfaGlxOw0KPiAgIAkJ bXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZF9oaXFfc2RtYTsNCj4gICAJCW1xZC0+bG9hZF9t cWQgPSBsb2FkX21xZDsNCj4gQEAgLTQyMyw2ICs0MTIsNyBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIg Km1xZF9tYW5hZ2VyX2luaXRfY2lrKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ICAgI2VuZGlm DQo+ICAgCQlicmVhazsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfRElROg0KPiArCQltcWQtPmFs bG9jYXRlX21xZCA9IGFsbG9jYXRlX2hpcV9tcWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5p dF9tcWRfaGlxOw0KPiAgIAkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZDsNCj4gICAJCW1x ZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsNCj4gQEAgLTQzNSw2ICs0MjUsNyBAQCBzdHJ1Y3QgbXFk X21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfY2lrKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ ICAgI2VuZGlmDQo+ICAgCQlicmVhazsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfU0RNQToNCj4g KwkJbXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0ZV9zZG1hX21xZDsNCj4gICAJCW1xZC0+aW5p dF9tcWQgPSBpbml0X21xZF9zZG1hOw0KPiAgIAkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21x ZF9oaXFfc2RtYTsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZF9zZG1hOw0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3Y5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdjkuYw0KPiBpbmRl eCA4MTg5NDRiLi41NzJjYzZhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfbXFkX21hbmFnZXJfdjkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfbXFkX21hbmFnZXJfdjkuYw0KPiBAQCAtNzksOSArNzksNiBAQCBzdGF0aWMgc3Ry dWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9tcWQoc3RydWN0IGtmZF9kZXYgKmtmZCwNCj4gICAJ aW50IHJldHZhbDsNCj4gICAJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiA9IE5VTEw7 DQo+ICAgDQo+IC0JaWYgKHEtPnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfSElRKQ0KPiAtCQlyZXR1 cm4gYWxsb2NhdGVfaGlxX21xZChrZmQpOw0KPiAtDQo+ICAgCS8qIEZyb20gVjksICBmb3IgQ1dT UiwgdGhlIGNvbnRyb2wgc3RhY2sgaXMgbG9jYXRlZCBvbiB0aGUgbmV4dCBwYWdlDQo+ICAgCSAq IGJvdW5kYXJ5IGFmdGVyIHRoZSBtcWQsIHdlIHdpbGwgdXNlIHRoZSBndHQgYWxsb2NhdGlvbiBm dW5jdGlvbg0KPiAgIAkgKiBpbnN0ZWFkIG9mIHN1Yi1hbGxvY2F0aW9uIGZ1bmN0aW9uLg0KPiBA QCAtMTExLDIwICsxMDgsMTUgQEAgc3RhdGljIHN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2NhdGVf bXFkKHN0cnVjdCBrZmRfZGV2ICprZmQsDQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgaW5p dF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwNCj4gLQkJCXN0cnVjdCBr ZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiArCQkJc3Ry dWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwNCj4gICAJ CQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCj4gICB7DQo+ICAgCWludCByZXR2YWw7DQo+ ICAgCXVpbnQ2NF90IGFkZHI7DQo+ICAgCXN0cnVjdCB2OV9tcWQgKm07DQo+IC0Jc3RydWN0IGtm ZF9kZXYgKmtmZCA9IG1tLT5kZXY7DQo+ICAgDQo+IC0JKm1xZF9tZW1fb2JqID0gYWxsb2NhdGVf bXFkKGtmZCwgcSk7DQo+IC0JaWYgKCEqbXFkX21lbV9vYmopDQo+IC0JCXJldHVybiAtRU5PTUVN Ow0KPiAtDQo+IC0JbSA9IChzdHJ1Y3QgdjlfbXFkICopICgqbXFkX21lbV9vYmopLT5jcHVfcHRy Ow0KPiAtCWFkZHIgPSAoKm1xZF9tZW1fb2JqKS0+Z3B1X2FkZHI7DQo+ICsJbSA9IChzdHJ1Y3Qg djlfbXFkICopIG1xZF9tZW1fb2JqLT5jcHVfcHRyOw0KPiArCWFkZHIgPSBtcWRfbWVtX29iai0+ Z3B1X2FkZHI7DQo+ICAgDQo+ICAgCW1lbXNldChtLCAwLCBzaXplb2Yoc3RydWN0IHY5X21xZCkp Ow0KPiAgIA0KPiBAQCAtMzEyLDcgKzMwNCw3IEBAIHN0YXRpYyBpbnQgZ2V0X3dhdmVfc3RhdGUo c3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIH0NCj4gICANCj4gICBzdGF0 aWMgaW50IGluaXRfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0K PiAtCQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2Fk ZHIsDQo+ICsJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2Fy dF9hZGRyLA0KPiAgIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KPiAgIHsNCj4gICAJ c3RydWN0IHY5X21xZCAqbTsNCj4gQEAgLTM0NSwyNCArMzM3LDE5IEBAIHN0YXRpYyBpbnQgdXBk YXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIH0NCj4g ICANCj4gICBzdGF0aWMgaW50IGluaXRfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwg dm9pZCAqKm1xZCwNCj4gLQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2 NF90ICpnYXJ0X2FkZHIsDQo+ICsJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVp bnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICAgCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCj4g ICB7DQo+ICAgCWludCByZXR2YWw7DQo+ICAgCXN0cnVjdCB2OV9zZG1hX21xZCAqbTsNCj4gLQlz dHJ1Y3Qga2ZkX2RldiAqZGV2ID0gbW0tPmRldjsNCj4gLQ0KPiAtCSptcWRfbWVtX29iaiA9IGFs bG9jYXRlX3NkbWFfbXFkKGRldiwgcSk7DQo+IC0JaWYgKCEqbXFkX21lbV9vYmopDQo+IC0JCXJl dHVybiAtRU5PTUVNOw0KPiAgIA0KPiAtCW0gPSAoc3RydWN0IHY5X3NkbWFfbXFkICopICgqbXFk X21lbV9vYmopLT5jcHVfcHRyOw0KPiArCW0gPSAoc3RydWN0IHY5X3NkbWFfbXFkICopIG1xZF9t ZW1fb2JqLT5jcHVfcHRyOw0KPiAgIA0KPiAgIAltZW1zZXQobSwgMCwgc2l6ZW9mKHN0cnVjdCB2 OV9zZG1hX21xZCkpOw0KPiAgIA0KPiAgIAkqbXFkID0gbTsNCj4gICAJaWYgKGdhcnRfYWRkcikN Cj4gLQkJKmdhcnRfYWRkciA9ICgqbXFkX21lbV9vYmopLT5ncHVfYWRkcjsNCj4gKwkJKmdhcnRf YWRkciA9IG1xZF9tZW1fb2JqLT5ncHVfYWRkcjsNCj4gICANCj4gICAJcmV0dmFsID0gbW0tPnVw ZGF0ZV9tcWQobW0sIG0sIHEpOw0KPiAgIA0KPiBAQCAtNDYyLDYgKzQ0OSw3IEBAIHN0cnVjdCBt cWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92OShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0K PiAgIAlzd2l0Y2ggKHR5cGUpIHsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfQ1A6DQo+ICAgCWNh c2UgS0ZEX01RRF9UWVBFX0NPTVBVVEU6DQo+ICsJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2Nh dGVfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkOw0KPiAgIAkJbXFkLT51bmlu aXRfbXFkID0gdW5pbml0X21xZDsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsNCj4g QEAgLTQ3NSw2ICs0NjMsNyBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRf djkoZW51bSBLRkRfTVFEX1RZUEUgdHlwZSwNCj4gICAjZW5kaWYNCj4gICAJCWJyZWFrOw0KPiAg IAljYXNlIEtGRF9NUURfVFlQRV9ISVE6DQo+ICsJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2Nh dGVfaGlxX21xZDsNCj4gICAJCW1xZC0+aW5pdF9tcWQgPSBpbml0X21xZF9oaXE7DQo+ICAgCQlt cWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkX2hpcV9zZG1hOw0KPiAgIAkJbXFkLT5sb2FkX21x ZCA9IGxvYWRfbXFkOw0KPiBAQCAtNDg3LDYgKzQ3Niw3IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAq bXFkX21hbmFnZXJfaW5pdF92OShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KPiAgICNlbmRpZg0K PiAgIAkJYnJlYWs7DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBFX0RJUToNCj4gKwkJbXFkLT5hbGxv Y2F0ZV9tcWQgPSBhbGxvY2F0ZV9oaXFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRf bXFkX2hpcTsNCj4gICAJCW1xZC0+dW5pbml0X21xZCA9IHVuaW5pdF9tcWQ7DQo+ICAgCQltcWQt PmxvYWRfbXFkID0gbG9hZF9tcWQ7DQo+IEBAIC00OTksNiArNDg5LDcgQEAgc3RydWN0IG1xZF9t YW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X3Y5KGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ICAg I2VuZGlmDQo+ICAgCQlicmVhazsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfU0RNQToNCj4gKwkJ bXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0ZV9zZG1hX21xZDsNCj4gICAJCW1xZC0+aW5pdF9t cWQgPSBpbml0X21xZF9zZG1hOw0KPiAgIAkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZF9o aXFfc2RtYTsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZF9zZG1hOw0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3ZpLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYw0KPiBpbmRleCAw MGU2YTU5Li40MzE4OTlmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfbXFkX21hbmFnZXJfdmkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfbXFkX21hbmFnZXJfdmkuYw0KPiBAQCAtODAsOSArODAsNiBAQCBzdGF0aWMgc3RydWN0 IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9tcWQoc3RydWN0IGtmZF9kZXYgKmtmZCwNCj4gICB7DQo+ ICAgCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmo7DQo+ICAgDQo+IC0JaWYgKHEtPnR5 cGUgPT0gS0ZEX1FVRVVFX1RZUEVfSElRKQ0KPiAtCQlyZXR1cm4gYWxsb2NhdGVfaGlxX21xZChr ZmQpOw0KPiAtDQo+ICAgCWlmIChrZmRfZ3R0X3NhX2FsbG9jYXRlKGtmZCwgc2l6ZW9mKHN0cnVj dCB2aV9tcWQpLA0KPiAgIAkJCSZtcWRfbWVtX29iaikpDQo+ICAgCQlyZXR1cm4gTlVMTDsNCj4g QEAgLTkxLDIwICs4OCwxNSBAQCBzdGF0aWMgc3RydWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9t cWQoc3RydWN0IGtmZF9kZXYgKmtmZCwNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIGludCBpbml0 X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KPiAtCQkJc3RydWN0IGtm ZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICsJCQlzdHJ1 Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiAgIAkJ CXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KPiAgIHsNCj4gICAJaW50IHJldHZhbDsNCj4g ICAJdWludDY0X3QgYWRkcjsNCj4gICAJc3RydWN0IHZpX21xZCAqbTsNCj4gLQlzdHJ1Y3Qga2Zk X2RldiAqa2ZkID0gbW0tPmRldjsNCj4gLQ0KPiAtCSptcWRfbWVtX29iaiA9IGFsbG9jYXRlX21x ZChrZmQsIHEpOw0KPiAtCWlmICghKm1xZF9tZW1fb2JqKQ0KPiAtCQlyZXR1cm4gLUVOT01FTTsN Cj4gICANCj4gLQltID0gKHN0cnVjdCB2aV9tcWQgKikgKCptcWRfbWVtX29iaiktPmNwdV9wdHI7 DQo+IC0JYWRkciA9ICgqbXFkX21lbV9vYmopLT5ncHVfYWRkcjsNCj4gKwltID0gKHN0cnVjdCB2 aV9tcWQgKikgbXFkX21lbV9vYmotPmNwdV9wdHI7DQo+ICsJYWRkciA9IG1xZF9tZW1fb2JqLT5n cHVfYWRkcjsNCj4gICANCj4gICAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3QgdmlfbXFkKSk7 DQo+ICAgDQo+IEBAIC0zMTAsNyArMzAyLDcgQEAgc3RhdGljIGludCBnZXRfd2F2ZV9zdGF0ZShz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRp YyBpbnQgaW5pdF9tcWRfaGlxKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKiptcWQsDQo+ IC0JCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRk ciwNCj4gKwkJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0 X2FkZHIsDQo+ICAgCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpDQo+ICAgew0KPiAgIAlz dHJ1Y3QgdmlfbXFkICptOw0KPiBAQCAtMzQyLDI0ICszMzQsMTkgQEAgc3RhdGljIGludCB1cGRh dGVfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgfQ0KPiAg IA0KPiAgIHN0YXRpYyBpbnQgaW5pdF9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2 b2lkICoqbXFkLA0KPiAtCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0 X3QgKmdhcnRfYWRkciwNCj4gKwkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwgdWlu dDY0X3QgKmdhcnRfYWRkciwNCj4gICAJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KPiAg IHsNCj4gICAJaW50IHJldHZhbDsNCj4gICAJc3RydWN0IHZpX3NkbWFfbXFkICptOw0KPiAtCXN0 cnVjdCBrZmRfZGV2ICpkZXYgPSBtbS0+ZGV2Ow0KPiAtDQo+IC0JKm1xZF9tZW1fb2JqID0gYWxs b2NhdGVfc2RtYV9tcWQoZGV2LCBxKTsNCj4gLQlpZiAoISptcWRfbWVtX29iaikNCj4gLQkJcmV0 dXJuIC1FTk9NRU07DQo+ICAgDQo+IC0JbSA9IChzdHJ1Y3Qgdmlfc2RtYV9tcWQgKikgKCptcWRf bWVtX29iaiktPmNwdV9wdHI7DQo+ICsJbSA9IChzdHJ1Y3Qgdmlfc2RtYV9tcWQgKikgbXFkX21l bV9vYmotPmNwdV9wdHI7DQo+ICAgDQo+ICAgCW1lbXNldChtLCAwLCBzaXplb2Yoc3RydWN0IHZp X3NkbWFfbXFkKSk7DQo+ICAgDQo+ICAgCSptcWQgPSBtOw0KPiAgIAlpZiAoZ2FydF9hZGRyKQ0K PiAtCQkqZ2FydF9hZGRyID0gKCptcWRfbWVtX29iaiktPmdwdV9hZGRyOw0KPiArCQkqZ2FydF9h ZGRyID0gbXFkX21lbV9vYmotPmdwdV9hZGRyOw0KPiAgIA0KPiAgIAlyZXR2YWwgPSBtbS0+dXBk YXRlX21xZChtbSwgbSwgcSk7DQo+ICAgDQo+IEBAIC00NTgsNiArNDQ1LDcgQEAgc3RydWN0IG1x ZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X3ZpKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ ICAgCXN3aXRjaCAodHlwZSkgew0KPiAgIAljYXNlIEtGRF9NUURfVFlQRV9DUDoNCj4gICAJY2Fz ZSBLRkRfTVFEX1RZUEVfQ09NUFVURToNCj4gKwkJbXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0 ZV9tcWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWQ7DQo+ICAgCQltcWQtPnVuaW5p dF9tcWQgPSB1bmluaXRfbXFkOw0KPiAgIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkOw0KPiBA QCAtNDcxLDYgKzQ1OSw3IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92 aShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KPiAgICNlbmRpZg0KPiAgIAkJYnJlYWs7DQo+ICAg CWNhc2UgS0ZEX01RRF9UWVBFX0hJUToNCj4gKwkJbXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0 ZV9oaXFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkX2hpcTsNCj4gICAJCW1x ZC0+dW5pbml0X21xZCA9IHVuaW5pdF9tcWRfaGlxX3NkbWE7DQo+ICAgCQltcWQtPmxvYWRfbXFk ID0gbG9hZF9tcWQ7DQo+IEBAIC00ODMsNiArNDcyLDcgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICpt cWRfbWFuYWdlcl9pbml0X3ZpKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ICAgI2VuZGlmDQo+ ICAgCQlicmVhazsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfRElROg0KPiArCQltcWQtPmFsbG9j YXRlX21xZCA9IGFsbG9jYXRlX2hpcV9tcWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9t cWRfaGlxOw0KPiAgIAkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZDsNCj4gICAJCW1xZC0+ bG9hZF9tcWQgPSBsb2FkX21xZDsNCj4gQEAgLTQ5NSw2ICs0ODUsNyBAQCBzdHJ1Y3QgbXFkX21h bmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfdmkoZW51bSBLRkRfTVFEX1RZUEUgdHlwZSwNCj4gICAj ZW5kaWYNCj4gICAJCWJyZWFrOw0KPiAgIAljYXNlIEtGRF9NUURfVFlQRV9TRE1BOg0KPiArCQlt cWQtPmFsbG9jYXRlX21xZCA9IGFsbG9jYXRlX3NkbWFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21x ZCA9IGluaXRfbXFkX3NkbWE7DQo+ICAgCQltcWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkX2hp cV9zZG1hOw0KPiAgIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkX3NkbWE7DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=