From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 1/4] drm/amdkfd: Fix sdma queue allocate race condition Date: Fri, 31 May 2019 21:50:01 +0000 Message-ID: References: <1559337538-14249-1-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: Content-Language: en-US Content-ID: <53709470D4BFFD44B79BD41CA4E0C111-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" , "Liu, Alex" , "Freehill, Chris" T24gMjAxOS0wNS0zMSA1OjMxIHAubS4sIEt1ZWhsaW5nLCBGZWxpeCB3cm90ZToNCj4gT24gMjAx OS0wNS0zMSA1OjE5IHAubS4sIFplbmcsIE9hayB3cm90ZToNCj4+IFNETUEgcXVldWUgYWxsb2Nh dGlvbiByZXF1aXJlcyB0aGUgZHFtIGxvY2sgYXMgaXQgbW9kaWZ5DQo+PiB0aGUgZ2xvYmFsIGRx bSBtZW1iZXJzLiBJbnRyb2R1Y2UgZnVuY3Rpb25zIHRvIGFsbG9jYXRlL2RlYWxsb2NhdGUNCj4+ IGluIGxvY2tlZC91bmxvY2tlZCBjaXJjdW1zdGFuY2UuDQo+Pg0KPj4gQ2hhbmdlLUlkOiBJZDMw ODQ1MjRjNWY2NWQ5NjI5YjEyY2Y2YjQ4NjJhNzUxNjk0NWNiMQ0KPj4gU2lnbmVkLW9mZi1ieTog T2FrIFplbmcgPE9hay5aZW5nQGFtZC5jb20+DQo+PiAtLS0NCj4+ICAgIC4uLi9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgIHwgNDYgKysrKysrKysrKysrKysr Ky0tLS0tLQ0KPj4gICAgMSBmaWxlIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDExIGRlbGV0 aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jDQo+PiBpbmRleCBlY2UzNWM3Li4xZjcwN2JiIDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9t YW5hZ2VyLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2Vf cXVldWVfbWFuYWdlci5jDQo+PiBAQCAtNjEsNiArNjEsOCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9z ZG1hX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+PiAg ICANCj4+ICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2aWNl X3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4+ICAgIAkJCQlzdHJ1Y3QgcXVldWUgKnEpOw0KPj4gK3N0 YXRpYyB2b2lkIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZV9sb2NrZWQoc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0sDQo+PiArCQkJCXN0cnVjdCBxdWV1ZSAqcSk7DQo+PiAgICANCj4+ICAg IHN0YXRpYyB2b2lkIGtmZF9wcm9jZXNzX2h3X2V4Y2VwdGlvbihzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspOw0KPj4gICAgDQo+PiBAQCAtNDQ2LDEwICs0NDgsMTAgQEAgc3RhdGljIGludCBkZXN0 cm95X3F1ZXVlX25vY3BzY2hfbG9ja2VkKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFt LA0KPj4gICAgCQlkZWFsbG9jYXRlX2hxZChkcW0sIHEpOw0KPj4gICAgCX0gZWxzZSBpZiAocS0+ cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpIHsNCj4+ICAgIAkJZHFtLT5z ZG1hX3F1ZXVlX2NvdW50LS07DQo+PiAtCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsN Cj4+ICsJCWRlYWxsb2NhdGVfc2RtYV9xdWV1ZV9sb2NrZWQoZHFtLCBxKTsNCj4+ICAgIAl9IGVs c2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpIHsN Cj4+ICAgIAkJZHFtLT54Z21pX3NkbWFfcXVldWVfY291bnQtLTsNCj4+IC0JCWRlYWxsb2NhdGVf c2RtYV9xdWV1ZShkcW0sIHEpOw0KPj4gKwkJZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZChk cW0sIHEpOw0KPj4gICAgCX0gZWxzZSB7DQo+PiAgICAJCXByX2RlYnVnKCJxLT5wcm9wZXJ0aWVz LnR5cGUgJWQgaXMgaW52YWxpZFxuIiwNCj4+ICAgIAkJCQlxLT5wcm9wZXJ0aWVzLnR5cGUpOw0K Pj4gQEAgLTkyMiw4ICs5MjQsMTAgQEAgc3RhdGljIGludCBhbGxvY2F0ZV9zZG1hX3F1ZXVlKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPj4gICAgCWlmIChxLT5wcm9wZXJ0aWVz LnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgew0KPj4gICAgCQlpZiAoZHFtLT5zZG1hX2Jp dG1hcCA9PSAwKQ0KPj4gICAgCQkJcmV0dXJuIC1FTk9NRU07DQo+PiArCQlkcW1fbG9jayhkcW0p Ow0KPiBEb2Vzbid0IHRoaXMgY2F1c2UgYSBsb2NraW5nIGVycm9yIHdoZXJlIHlvdSB0cnkgdG8g dGFrZSB0aGUgc2FtZSBsb2NrDQo+IHR3aWNlIGluIHRoaXMgY2FsbCB0cmVlOg0KPg0KPiBjcmVh dGVfcXVldWVfbm9jcHNjaCAodGFrZXMgRFFNIGxvY2spDQo+ICAgwqDCoMKgIC0+IGNyZWF0ZV9z ZG1hX3F1ZXVlX25vY3BzY2gNCj4gICDCoMKgwqDCoMKgwqDCoCAtPiBhbGxvY2F0ZV9zZG1hX3F1 ZXVlICh0YWtlcyBEUU0gbG9jayBhZ2FpbikNCj4NCkJUVywgSSB0aGluayB5b3UgYWN0dWFsbHkg Y2F1Z2h0IGEgYnVnIGhlcmUuIEluIHRoZSBjcmVhdGVfcXVldWVfY3BzY2ggDQpwYXRoIHdlIGZh aWxlZCB0byBsb2NrIHRoZSBEUU0gZm9yIFNETUEgcXVldWUgYWxsb2NhdGlvbi4gSW4gDQpjcmVh dGVfcXVldWVfbm9jcHNjaCBpdCB3YXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlIHdlIHRvb2sgdGhl IERRTSBsb2NrIA0KZWFybGllciAod2hpY2ggaXMgaXRzZWxmIGEgcHJvYmxlbSB5b3UncmUgd29y a2luZyBvbiBmaXhpbmcpLg0KDQpIb3dldmVyLCBub3cgeW91J3JlIG1ha2luZyB0aGUgcHJvYmxl bSB3b3JzZSBmb3IgdGhlIG5vY3BzY2ggY2FzZSwgYXQgDQpsZWFzdCB1bnRpbCBwYXRjaCA0LCB3 aGljaCBtb3ZlcyB0aGUgRFFNIGxvY2tpbmcgaW4gDQpjcmVhdGVfcXVldWVfbm9jcHNjaC4gTWF5 YmUgdGhpcyBjaGFuZ2Ugc2hvdWxkIGNvbWUgYWZ0ZXIgcGF0Y2ggNCBzbyB5b3UgDQpkb24ndCBl bmQgdXAgd2l0aCBhIHdvcnNlIHByb2JsZW0gaW4gdGhlIG1pZGRsZSBvZiB5b3VyIHBhdGNoIHNl cmllcy4NCg0KQWxzbywgSSB0aGluayB5b3UncmUgZG9pbmcgdGhlIGxvY2tpbmcgdW5uZWNlc3Nh cmlseSBmaW5lIGdyYWluZWQuIEl0J3MgDQpwcm9iYWJseSBlbm91Z2ggdG8gdGFrZSB0aGUgRFFN IGxvY2sgb25jZSBhdCB0aGUgc3RhcnQgb2YgDQphbGxvY2F0ZV9zZG1hX3F1ZXVlLCBhbmQgZHJv cCBpdCBvbmNlIGluIHRoZSBlbmQuIE5vIG5lZWQgdG8gZHVwbGljYXRlIA0KdGhpcyBpbiB0aGUg dHdvIGlmIGJyYW5jaGVzLg0KDQpSZWdhcmRzLA0KIMKgIEZlbGl4DQoNCj4+ICAgIAkJYml0ID0g X19mZnM2NChkcW0tPnNkbWFfYml0bWFwKTsNCj4+ICAgIAkJZHFtLT5zZG1hX2JpdG1hcCAmPSB+ KDFVTEwgPDwgYml0KTsNCj4+ICsJCWRxbV91bmxvY2soZHFtKTsNCj4+ICAgIAkJcS0+c2RtYV9p ZCA9IGJpdDsNCj4+ICAgIAkJcS0+cHJvcGVydGllcy5zZG1hX2VuZ2luZV9pZCA9IHEtPnNkbWFf aWQgJQ0KPj4gICAgCQkJCWdldF9udW1fc2RtYV9lbmdpbmVzKGRxbSk7DQo+PiBAQCAtOTMyLDgg KzkzNiwxMCBAQCBzdGF0aWMgaW50IGFsbG9jYXRlX3NkbWFfcXVldWUoc3RydWN0IGRldmljZV9x dWV1ZV9tYW5hZ2VyICpkcW0sDQo+PiAgICAJfSBlbHNlIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUg PT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQo+PiAgICAJCWlmIChkcW0tPnhnbWlfc2Rt YV9iaXRtYXAgPT0gMCkNCj4+ICAgIAkJCXJldHVybiAtRU5PTUVNOw0KPj4gKwkJZHFtX2xvY2so ZHFtKTsNCj4+ICAgIAkJYml0ID0gX19mZnM2NChkcW0tPnhnbWlfc2RtYV9iaXRtYXApOw0KPj4g ICAgCQlkcW0tPnhnbWlfc2RtYV9iaXRtYXAgJj0gfigxVUxMIDw8IGJpdCk7DQo+PiArCQlkcW1f dW5sb2NrKGRxbSk7DQo+PiAgICAJCXEtPnNkbWFfaWQgPSBiaXQ7DQo+PiAgICAJCS8qIHNkbWFf ZW5naW5lX2lkIGlzIHNkbWEgaWQgaW5jbHVkaW5nDQo+PiAgICAJCSAqIGJvdGggUENJZS1vcHRp bWl6ZWQgU0RNQXMgYW5kIFhHTUktDQo+PiBAQCAtOTUzLDE3ICs5NTksMzUgQEAgc3RhdGljIGlu dCBhbGxvY2F0ZV9zZG1hX3F1ZXVlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0K Pj4gICAgCXJldHVybiAwOw0KPj4gICAgfQ0KPj4gICAgDQo+PiArc3RhdGljIHZvaWQgZGVhbGxv Y2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwN Cj4+ICsJCQkJc3RydWN0IHF1ZXVlICpxKQ0KPj4gK3sNCj4+ICsJaWYgKHEtPnByb3BlcnRpZXMu dHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKSB7DQo+PiArCQlpZiAocS0+c2RtYV9pZCA+PSBn ZXRfbnVtX3NkbWFfcXVldWVzKGRxbSkpDQo+PiArCQkJcmV0dXJuOw0KPj4gKwkJZHFtLT5zZG1h X2JpdG1hcCB8PSAoMVVMTCA8PCBxLT5zZG1hX2lkKTsNCj4+ICsJfSBlbHNlIGlmIChxLT5wcm9w ZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQo+PiArCQlpZiAocS0+ c2RtYV9pZCA+PSBnZXRfbnVtX3hnbWlfc2RtYV9xdWV1ZXMoZHFtKSkNCj4+ICsJCQlyZXR1cm47 DQo+PiArCQlkcW0tPnhnbWlfc2RtYV9iaXRtYXAgfD0gKDFVTEwgPDwgcS0+c2RtYV9pZCk7DQo+ PiArCX0NCj4+ICt9DQo+PiArDQo+PiAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlX3NkbWFfcXVl dWUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+PiAgICAJCQkJc3RydWN0IHF1 ZXVlICpxKQ0KPj4gICAgew0KPj4gICAgCWlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FV RVVFX1RZUEVfU0RNQSkgew0KPj4gICAgCQlpZiAocS0+c2RtYV9pZCA+PSBnZXRfbnVtX3NkbWFf cXVldWVzKGRxbSkpDQo+PiAgICAJCQlyZXR1cm47DQo+PiArCQlkcW1fbG9jayhkcW0pOw0KPj4g ICAgCQlkcW0tPnNkbWFfYml0bWFwIHw9ICgxVUxMIDw8IHEtPnNkbWFfaWQpOw0KPj4gKwkJZHFt X3VubG9jayhkcW0pOw0KPj4gICAgCX0gZWxzZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtG RF9RVUVVRV9UWVBFX1NETUFfWEdNSSkgew0KPj4gICAgCQlpZiAocS0+c2RtYV9pZCA+PSBnZXRf bnVtX3hnbWlfc2RtYV9xdWV1ZXMoZHFtKSkNCj4+ICAgIAkJCXJldHVybjsNCj4+ICsJCWRxbV9s b2NrKGRxbSk7DQo+PiAgICAJCWRxbS0+eGdtaV9zZG1hX2JpdG1hcCB8PSAoMVVMTCA8PCBxLT5z ZG1hX2lkKTsNCj4+ICsJCWRxbV91bmxvY2soZHFtKTsNCj4+ICAgIAl9DQo+PiAgICB9DQo+IFlv dSBjb3VsZCBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IGRlZmluaW5nIGRlYWxsb2NhdGVf c2RtYV9xdWV1ZSBhcw0KPiBhIHNpbXBsZSB3cmFwcGVyOg0KPg0KPiBzdGF0aWMgdm9pZCBkZWFs bG9jYXRlX3NkbWFfcXVldWUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+IHN0 cnVjdCBxdWV1ZSAqcSkNCj4gew0KPiAgIMKgwqDCoCDCoMKgwqAgZHFtX2xvY2soZHFtKTsNCj4g ICDCoMKgwqAgwqDCoMKgIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZV9sb2NrZWQoZHFtLCBxKTsNCj4g ICDCoMKgwqAgwqDCoMKgIGRxbV91bmxvY2soZHFtKTsNCj4gfQ0KPg0KPg0KPj4gICAgDQo+PiBA QCAtOTgyLDcgKzEwMDYsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9zZG1hX3F1ZXVlX25vY3BzY2go c3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+PiAgICANCj4+ICAgIAlyZXR2YWwg PSBhbGxvY2F0ZV9kb29yYmVsbChxcGQsIHEpOw0KPj4gICAgCWlmIChyZXR2YWwpDQo+PiAtCQln b3RvIG91dF9kZWFsbG9jYXRlX3NkbWFfcXVldWU7DQo+PiArCQlnb3RvIG91dF9kZWFsbG9jYXRl X3NkbWFfcXVldWVfbG9ja2VkOw0KPj4gICAgDQo+PiAgICAJZHFtLT5hc2ljX29wcy5pbml0X3Nk bWFfdm0oZHFtLCBxLCBxcGQpOw0KPj4gICAgCXJldHZhbCA9IG1xZF9tZ3ItPmluaXRfbXFkKG1x ZF9tZ3IsICZxLT5tcWQsICZxLT5tcWRfbWVtX29iaiwNCj4+IEBAIC0xMDAxLDggKzEwMjUsOCBA QCBzdGF0aWMgaW50IGNyZWF0ZV9zZG1hX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0sDQo+PiAgICAJbXFkX21nci0+dW5pbml0X21xZChtcWRfbWdyLCBxLT5t cWQsIHEtPm1xZF9tZW1fb2JqKTsNCj4+ICAgIG91dF9kZWFsbG9jYXRlX2Rvb3JiZWxsOg0KPj4g ICAgCWRlYWxsb2NhdGVfZG9vcmJlbGwocXBkLCBxKTsNCj4+IC1vdXRfZGVhbGxvY2F0ZV9zZG1h X3F1ZXVlOg0KPj4gLQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4+ICtvdXRfZGVh bGxvY2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZDoNCj4+ICsJZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlX2xv Y2tlZChkcW0sIHEpOw0KPj4gICAgDQo+PiAgICAJcmV0dXJuIHJldHZhbDsNCj4+ICAgIH0NCj4+ IEBAIC0xMTk0LDcgKzEyMTgsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9jcHNjaChzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwgc3RydWN0IHF1ZXVlICpxLA0KPj4gICAgDQo+ PiAgICAJcmV0dmFsID0gYWxsb2NhdGVfZG9vcmJlbGwocXBkLCBxKTsNCj4+ICAgIAlpZiAocmV0 dmFsKQ0KPj4gLQkJZ290byBvdXRfZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlOw0KPj4gKwkJZ290byBv dXRfZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZDsNCj4+ICAgIA0KPj4gICAgCW1xZF9tZ3Ig PSBkcW0tPm1xZF9tZ3JzW2dldF9tcWRfdHlwZV9mcm9tX3F1ZXVlX3R5cGUoDQo+PiAgICAJCQlx LT5wcm9wZXJ0aWVzLnR5cGUpXTsNCj4+IEBAIC0xMjQyLDcgKzEyNjYsNyBAQCBzdGF0aWMgaW50 IGNyZWF0ZV9xdWV1ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwgc3Ry dWN0IHF1ZXVlICpxLA0KPj4gICAgDQo+PiAgICBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDoNCj4+ ICAgIAlkZWFsbG9jYXRlX2Rvb3JiZWxsKHFwZCwgcSk7DQo+PiAtb3V0X2RlYWxsb2NhdGVfc2Rt YV9xdWV1ZToNCj4+ICtvdXRfZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZDoNCj4gV2h5IGFy ZSB5b3UgcmVuYW1pbmcgdGhpcyBsYWJlbD8gWW91IGRvbid0IGhvbGQgdGhlIERRTSBsb2NrIHdo ZW4geW91DQo+IGdldCBoZXJlLg0KPg0KPg0KPj4gICAgCWlmIChxLT5wcm9wZXJ0aWVzLnR5cGUg PT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8fA0KPj4gICAgCQlxLT5wcm9wZXJ0aWVzLnR5cGUgPT0g S0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKQ0KPj4gICAgCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUo ZHFtLCBxKTsNCj4+IEBAIC0xMzk2LDEwICsxNDIwLDEwIEBAIHN0YXRpYyBpbnQgZGVzdHJveV9x dWV1ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4+ICAgIA0KPj4g ICAgCWlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgew0KPj4g ICAgCQlkcW0tPnNkbWFfcXVldWVfY291bnQtLTsNCj4+IC0JCWRlYWxsb2NhdGVfc2RtYV9xdWV1 ZShkcW0sIHEpOw0KPj4gKwkJZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZChkcW0sIHEpOw0K Pj4gICAgCX0gZWxzZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NE TUFfWEdNSSkgew0KPj4gICAgCQlkcW0tPnhnbWlfc2RtYV9xdWV1ZV9jb3VudC0tOw0KPj4gLQkJ ZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQo+PiArCQlkZWFsbG9jYXRlX3NkbWFfcXVl dWVfbG9ja2VkKGRxbSwgcSk7DQo+PiAgICAJfQ0KPj4gICAgDQo+PiAgICAJbGlzdF9kZWwoJnEt Pmxpc3QpOw0KPj4gQEAgLTE2MjUsMTAgKzE2NDksMTAgQEAgc3RhdGljIGludCBwcm9jZXNzX3Rl cm1pbmF0aW9uX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPj4gICAg CWxpc3RfZm9yX2VhY2hfZW50cnkocSwgJnFwZC0+cXVldWVzX2xpc3QsIGxpc3QpIHsNCj4+ICAg IAkJaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKSB7DQo+PiAg ICAJCQlkcW0tPnNkbWFfcXVldWVfY291bnQtLTsNCj4+IC0JCQlkZWFsbG9jYXRlX3NkbWFfcXVl dWUoZHFtLCBxKTsNCj4+ICsJCQlkZWFsbG9jYXRlX3NkbWFfcXVldWVfbG9ja2VkKGRxbSwgcSk7 DQo+PiAgICAJCX0gZWxzZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBF X1NETUFfWEdNSSkgew0KPj4gICAgCQkJZHFtLT54Z21pX3NkbWFfcXVldWVfY291bnQtLTsNCj4+ IC0JCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4+ICsJCQlkZWFsbG9jYXRlX3Nk bWFfcXVldWVfbG9ja2VkKGRxbSwgcSk7DQo+PiAgICAJCX0NCj4+ICAgIA0KPj4gICAgCQlpZiAo cS0+cHJvcGVydGllcy5pc19hY3RpdmUpDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+IGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4