From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 3/5] drm/amdkfd: Refactor create_queue_nocpsch Date: Mon, 3 Jun 2019 22:04:58 +0000 Message-ID: <10b7f416-df5e-6fa2-930f-71af79e67974@amd.com> References: <1559584248-12115-1-git-send-email-Oak.Zeng@amd.com> <1559584248-12115-3-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: <1559584248-12115-3-git-send-email-Oak.Zeng-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <38C1ADE442E57A46ACC41F8E5D45C18D-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" T24gMjAxOS0wNi0wMyAxOjUxIHAubS4sIFplbmcsIE9hayB3cm90ZToNCj4gVGhpcyBpcyBwcmVw YXJlIHdvcmsgdG8gZml4IGEgY2lyY3VsYXIgbG9jayBkZXBlbmRlbmN5Lg0KPiBObyBsb2dpYyBj aGFuZ2UNCj4NCj4gQ2hhbmdlLUlkOiBJNGUwZWU5MTgyNjBlNzc4MGRlOTcyZGQ3MWY0Y2U3ODdi NGY2ZGRlOQ0KPiBTaWduZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8T2FrLlplbmdAYW1kLmNvbT4NCj4g LS0tDQo+ICAgLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIu YyAgfCAxNzEgKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDU4IGlu c2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCj4gaW5kZXggZGMx YTcwYi4uMDY2NTRkZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCj4gQEAgLTQyLDEwICs0Miw2IEBADQo+ ICAgc3RhdGljIGludCBzZXRfcGFzaWRfdm1pZF9tYXBwaW5nKHN0cnVjdCBkZXZpY2VfcXVldWVf bWFuYWdlciAqZHFtLA0KPiAgIAkJCQkJdW5zaWduZWQgaW50IHBhc2lkLCB1bnNpZ25lZCBpbnQg dm1pZCk7DQo+ICAgDQo+IC1zdGF0aWMgaW50IGNyZWF0ZV9jb21wdXRlX3F1ZXVlX25vY3BzY2go c3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+IC0JCQkJCXN0cnVjdCBxdWV1ZSAq cSwNCj4gLQkJCQkJc3RydWN0IHFjbV9wcm9jZXNzX2RldmljZSAqcXBkKTsNCj4gLQ0KPiAgIHN0 YXRpYyBpbnQgZXhlY3V0ZV9xdWV1ZXNfY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2Vy ICpkcW0sDQo+ICAgCQkJCWVudW0ga2ZkX3VubWFwX3F1ZXVlc19maWx0ZXIgZmlsdGVyLA0KPiAg IAkJCQl1aW50MzJfdCBmaWx0ZXJfcGFyYW0pOw0KPiBAQCAtNTUsMTMgKzUxLDE0IEBAIHN0YXRp YyBpbnQgdW5tYXBfcXVldWVzX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFt LA0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgbWFwX3F1ZXVlc19jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1 ZXVlX21hbmFnZXIgKmRxbSk7DQo+ICAgDQo+IC1zdGF0aWMgaW50IGNyZWF0ZV9zZG1hX3F1ZXVl X25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+IC0JCQkJCXN0cnVj dCBxdWV1ZSAqcSwNCj4gLQkJCQkJc3RydWN0IHFjbV9wcm9jZXNzX2RldmljZSAqcXBkKTsNCj4g LQ0KPiAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2aWNlX3F1 ZXVlX21hbmFnZXIgKmRxbSwNCj4gICAJCQkJc3RydWN0IHF1ZXVlICpxKTsNCj4gICANCj4gK3N0 YXRpYyBpbmxpbmUgdm9pZCBkZWFsbG9jYXRlX2hxZChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFn ZXIgKmRxbSwNCj4gKwkJCQlzdHJ1Y3QgcXVldWUgKnEpOw0KPiArc3RhdGljIGludCBhbGxvY2F0 ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAqcSk7 DQo+ICtzdGF0aWMgaW50IGFsbG9jYXRlX3NkbWFfcXVldWUoc3RydWN0IGRldmljZV9xdWV1ZV9t YW5hZ2VyICpkcW0sDQo+ICsJCQkJc3RydWN0IHF1ZXVlICpxKTsNCj4gICBzdGF0aWMgdm9pZCBr ZmRfcHJvY2Vzc19od19leGNlcHRpb24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsNCj4gICAN Cj4gICBzdGF0aWMgaW5saW5lDQo+IEBAIC0yNjksNiArMjY2LDcgQEAgc3RhdGljIGludCBjcmVh dGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4gICAJ CQkJc3RydWN0IHF1ZXVlICpxLA0KPiAgIAkJCQlzdHJ1Y3QgcWNtX3Byb2Nlc3NfZGV2aWNlICpx cGQpDQo+ICAgew0KPiArCXN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21ncjsNCj4gICAJaW50IHJl dHZhbDsNCj4gICANCj4gICAJcHJpbnRfcXVldWUocSk7DQo+IEBAIC0zMDAsMTggKzI5OCw0NiBA QCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFu YWdlciAqZHFtLA0KPiAgIAlxLT5wcm9wZXJ0aWVzLnRiYV9hZGRyID0gcXBkLT50YmFfYWRkcjsN Cj4gICAJcS0+cHJvcGVydGllcy50bWFfYWRkciA9IHFwZC0+dG1hX2FkZHI7DQo+ICAgDQo+ICsJ bXFkX21nciA9IGRxbS0+bXFkX21ncnNbZ2V0X21xZF90eXBlX2Zyb21fcXVldWVfdHlwZSgNCj4g KwkJCXEtPnByb3BlcnRpZXMudHlwZSldOw0KPiArCWlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0g S0ZEX1FVRVVFX1RZUEVfQ09NUFVURSkgew0KPiArCQlyZXR2YWwgPSBhbGxvY2F0ZV9ocWQoZHFt LCBxKTsNCj4gKwkJaWYgKHJldHZhbCkNCj4gKwkJCWdvdG8gZGVhbGxvY2F0ZV92bWlkOw0KPiAr CX0gZWxzZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEgfHwN Cj4gKwkJcS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkgew0K PiArCQlyZXR2YWwgPSBhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQo+ICsJCWlmIChyZXR2 YWwpDQo+ICsJCQlnb3RvIGRlYWxsb2NhdGVfdm1pZDsNCj4gKwkJZHFtLT5hc2ljX29wcy5pbml0 X3NkbWFfdm0oZHFtLCBxLCBxcGQpOw0KPiArCX0NCj4gKw0KPiArCXJldHZhbCA9IGFsbG9jYXRl X2Rvb3JiZWxsKHFwZCwgcSk7DQo+ICsJaWYgKHJldHZhbCkNCj4gKwkJZ290byBvdXRfZGVhbGxv Y2F0ZV9ocWQ7DQo+ICsNCj4gKwlyZXR2YWwgPSBtcWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAm cS0+bXFkLCAmcS0+bXFkX21lbV9vYmosDQo+ICsJCQkJJnEtPmdhcnRfbXFkX2FkZHIsICZxLT5w cm9wZXJ0aWVzKTsNCj4gKwlpZiAocmV0dmFsKQ0KPiArCQlnb3RvIG91dF9kZWFsbG9jYXRlX2Rv b3JiZWxsOw0KPiArDQo+ICsJcHJfZGVidWcoIkxvYWRpbmcgbXFkIHRvIGhxZCBvbiBwaXBlICVk LCBxdWV1ZSAlZFxuIiwNCj4gKwkJCXEtPnBpcGUsIHEtPnF1ZXVlKTsNCg0KVGhpcyBtZXNzYWdl IG9ubHkgbWFrZXMgc2Vuc2UgZm9yIGNvbXB1dGUgcXVldWVzLiBNYXliZSBtb3ZlIHRoaXMgdXAg dG8gDQpqdXN0IGFmdGVyIGFsbG9jYXRlX2hxZCwgYmVjYXVzZSB0aGF0J3Mgd2hhdCBhc3NpZ25l cyBxLT5waXBlIGFuZCBxLT5xdWV1ZS4NCg0KDQo+ICsNCj4gICAJaWYgKHEtPnByb3BlcnRpZXMu dHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9DT01QVVRFKQ0KPiAtCQlyZXR2YWwgPSBjcmVhdGVfY29t cHV0ZV9xdWV1ZV9ub2Nwc2NoKGRxbSwgcSwgcXBkKTsNCj4gLQllbHNlIGlmIChxLT5wcm9wZXJ0 aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8fA0KPiAtCQkJcS0+cHJvcGVydGllcy50 eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkNCj4gLQkJcmV0dmFsID0gY3JlYXRlX3Nk bWFfcXVldWVfbm9jcHNjaChkcW0sIHEsIHFwZCk7DQo+IC0JZWxzZQ0KPiAtCQlyZXR2YWwgPSAt RUlOVkFMOw0KPiArCQlkcW0tPmRldi0+a2ZkMmtnZC0+c2V0X3NjcmF0Y2hfYmFja2luZ192YSgN Cj4gKwkJCWRxbS0+ZGV2LT5rZ2QsIHFwZC0+c2hfaGlkZGVuX3ByaXZhdGVfYmFzZSwgcXBkLT52 bWlkKTsNCg0KTm90IHN1cmUgd2h5IHRoaXMgaXMgaGVyZS4gSSB0aGluayBpdCB3b3VsZCBtYWtl IG1vcmUgc2Vuc2UgaW4gDQphbGxvY2F0ZV92bWlkLiBOb3JtYWxseSB0aGlzIGlzIGNhbGxlZCB3 aGVuIHRoZSBzY3JhdGNoLWJhY2tpbmcgVkEgaXMgDQpzZXQgaW4gdGhlIGlvY3RsIGZ1bmN0aW9u LiBVbmxlc3Mgbm8gVk1JRCBoYXMgYmVlbiBhc3NpZ25lZCB0byB0aGUgDQpwcm9jZXNzIHlldC4g U28gc2V0dGluZyB0aGlzIHdoZW4gdGhlIFZNSUQgaXMgYXNzaWduZWQgaW4gYWxsb2NhdGVfdm1p ZCANCnNlZW1zIHRvIG1ha2UgdGhlIG1vc3Qgc2Vuc2UuDQoNCg0KPiAgIA0KPiAtCWlmIChyZXR2 YWwpIHsNCj4gLQkJaWYgKGxpc3RfZW1wdHkoJnFwZC0+cXVldWVzX2xpc3QpKQ0KPiAtCQkJZGVh bGxvY2F0ZV92bWlkKGRxbSwgcXBkLCBxKTsNCj4gLQkJZ290byBvdXRfdW5sb2NrOw0KPiArCWlm IChxLT5wcm9wZXJ0aWVzLmlzX2FjdGl2ZSkgew0KPiArDQo+ICsJCWlmIChXQVJOKHEtPnByb2Nl c3MtPm1tICE9IGN1cnJlbnQtPm1tLA0KPiArCQkJCQkic2hvdWxkIG9ubHkgcnVuIGluIHVzZXIg dGhyZWFkIikpDQo+ICsJCQlyZXR2YWwgPSAtRUZBVUxUOw0KPiArCQllbHNlDQo+ICsJCQlyZXR2 YWwgPSBtcWRfbWdyLT5sb2FkX21xZChtcWRfbWdyLCBxLT5tcWQsIHEtPnBpcGUsDQo+ICsJCQkJ CXEtPnF1ZXVlLCAmcS0+cHJvcGVydGllcywgY3VycmVudC0+bW0pOw0KPiArCQlpZiAocmV0dmFs KQ0KPiArCQkJZ290byBvdXRfdW5pbml0X21xZDsNCj4gICAJfQ0KPiAgIA0KPiAgIAlsaXN0X2Fk ZCgmcS0+bGlzdCwgJnFwZC0+cXVldWVzX2xpc3QpOw0KPiBAQCAtMzMxLDcgKzM1NywyMSBAQCBz dGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdl ciAqZHFtLA0KPiAgIAlkcW0tPnRvdGFsX3F1ZXVlX2NvdW50Kys7DQo+ICAgCXByX2RlYnVnKCJU b3RhbCBvZiAlZCBxdWV1ZXMgYXJlIGFjY291bnRhYmxlIHNvIGZhclxuIiwNCj4gICAJCQlkcW0t PnRvdGFsX3F1ZXVlX2NvdW50KTsNCj4gKwlnb3RvIG91dF91bmxvY2s7DQo+ICAgDQo+ICtvdXRf dW5pbml0X21xZDoNCj4gKwltcWRfbWdyLT51bmluaXRfbXFkKG1xZF9tZ3IsIHEtPm1xZCwgcS0+ bXFkX21lbV9vYmopOw0KPiArb3V0X2RlYWxsb2NhdGVfZG9vcmJlbGw6DQo+ICsJZGVhbGxvY2F0 ZV9kb29yYmVsbChxcGQsIHEpOw0KPiArb3V0X2RlYWxsb2NhdGVfaHFkOg0KPiArCWlmIChxLT5w cm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfQ09NUFVURSkNCj4gKwkJZGVhbGxvY2F0 ZV9ocWQoZHFtLCBxKTsNCj4gKwllbHNlIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FV RVVFX1RZUEVfU0RNQSB8fA0KPiArCQlxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZ UEVfU0RNQV9YR01JKQ0KPiArCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4gK2Rl YWxsb2NhdGVfdm1pZDoNCj4gKwlpZiAobGlzdF9lbXB0eSgmcXBkLT5xdWV1ZXNfbGlzdCkpDQo+ ICsJCWRlYWxsb2NhdGVfdm1pZChkcW0sIHFwZCwgcSk7DQo+ICAgb3V0X3VubG9jazoNCj4gICAJ ZHFtX3VubG9jayhkcW0pOw0KPiAgIAlyZXR1cm4gcmV0dmFsOw0KPiBAQCAtMzc3LDU4ICs0MTcs NiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZGVhbGxvY2F0ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1 ZV9tYW5hZ2VyICpkcW0sDQo+ICAgCWRxbS0+YWxsb2NhdGVkX3F1ZXVlc1txLT5waXBlXSB8PSAo MSA8PCBxLT5xdWV1ZSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjcmVhdGVfY29tcHV0 ZV9xdWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPiAtCQkJ CQlzdHJ1Y3QgcXVldWUgKnEsDQo+IC0JCQkJCXN0cnVjdCBxY21fcHJvY2Vzc19kZXZpY2UgKnFw ZCkNCj4gLXsNCj4gLQlzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tZ3I7DQo+IC0JaW50IHJldHZh bDsNCj4gLQ0KPiAtCW1xZF9tZ3IgPSBkcW0tPm1xZF9tZ3JzW0tGRF9NUURfVFlQRV9DT01QVVRF XTsNCj4gLQ0KPiAtCXJldHZhbCA9IGFsbG9jYXRlX2hxZChkcW0sIHEpOw0KPiAtCWlmIChyZXR2 YWwpDQo+IC0JCXJldHVybiByZXR2YWw7DQo+IC0NCj4gLQlyZXR2YWwgPSBhbGxvY2F0ZV9kb29y YmVsbChxcGQsIHEpOw0KPiAtCWlmIChyZXR2YWwpDQo+IC0JCWdvdG8gb3V0X2RlYWxsb2NhdGVf aHFkOw0KPiAtDQo+IC0JcmV0dmFsID0gbXFkX21nci0+aW5pdF9tcWQobXFkX21nciwgJnEtPm1x ZCwgJnEtPm1xZF9tZW1fb2JqLA0KPiAtCQkJCSZxLT5nYXJ0X21xZF9hZGRyLCAmcS0+cHJvcGVy dGllcyk7DQo+IC0JaWYgKHJldHZhbCkNCj4gLQkJZ290byBvdXRfZGVhbGxvY2F0ZV9kb29yYmVs bDsNCj4gLQ0KPiAtCXByX2RlYnVnKCJMb2FkaW5nIG1xZCB0byBocWQgb24gcGlwZSAlZCwgcXVl dWUgJWRcbiIsDQo+IC0JCQlxLT5waXBlLCBxLT5xdWV1ZSk7DQo+IC0NCj4gLQlkcW0tPmRldi0+ a2ZkMmtnZC0+c2V0X3NjcmF0Y2hfYmFja2luZ192YSgNCj4gLQkJCWRxbS0+ZGV2LT5rZ2QsIHFw ZC0+c2hfaGlkZGVuX3ByaXZhdGVfYmFzZSwgcXBkLT52bWlkKTsNCj4gLQ0KPiAtCWlmICghcS0+ cHJvcGVydGllcy5pc19hY3RpdmUpDQo+IC0JCXJldHVybiAwOw0KPiAtDQo+IC0JaWYgKFdBUk4o cS0+cHJvY2Vzcy0+bW0gIT0gY3VycmVudC0+bW0sDQo+IC0JCSAic2hvdWxkIG9ubHkgcnVuIGlu IHVzZXIgdGhyZWFkIikpDQo+IC0JCXJldHZhbCA9IC1FRkFVTFQ7DQo+IC0JZWxzZQ0KPiAtCQly ZXR2YWwgPSBtcWRfbWdyLT5sb2FkX21xZChtcWRfbWdyLCBxLT5tcWQsIHEtPnBpcGUsIHEtPnF1 ZXVlLA0KPiAtCQkJCQkgICAmcS0+cHJvcGVydGllcywgY3VycmVudC0+bW0pOw0KPiAtCWlmIChy ZXR2YWwpDQo+IC0JCWdvdG8gb3V0X3VuaW5pdF9tcWQ7DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4g LQ0KPiAtb3V0X3VuaW5pdF9tcWQ6DQo+IC0JbXFkX21nci0+dW5pbml0X21xZChtcWRfbWdyLCBx LT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCj4gLW91dF9kZWFsbG9jYXRlX2Rvb3JiZWxsOg0KPiAt CWRlYWxsb2NhdGVfZG9vcmJlbGwocXBkLCBxKTsNCj4gLW91dF9kZWFsbG9jYXRlX2hxZDoNCj4g LQlkZWFsbG9jYXRlX2hxZChkcW0sIHEpOw0KPiAtDQo+IC0JcmV0dXJuIHJldHZhbDsNCj4gLX0N Cj4gLQ0KPiAgIC8qIEFjY2VzcyB0byBEUU0gaGFzIHRvIGJlIGxvY2tlZCBiZWZvcmUgY2FsbGlu ZyBkZXN0cm95X3F1ZXVlX25vY3BzY2hfbG9ja2VkDQo+ICAgICogdG8gYXZvaWQgYXN5bmNocm9u aXplZCBhY2Nlc3MNCj4gICAgKi8NCj4gQEAgLTk2Nyw0OSArOTU1LDYgQEAgc3RhdGljIHZvaWQg ZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0K PiAgIAl9DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjcmVhdGVfc2RtYV9xdWV1ZV9ub2Nw c2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPiAtCQkJCQlzdHJ1Y3QgcXVl dWUgKnEsDQo+IC0JCQkJCXN0cnVjdCBxY21fcHJvY2Vzc19kZXZpY2UgKnFwZCkNCj4gLXsNCj4g LQlzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tZ3I7DQo+IC0JaW50IHJldHZhbDsNCj4gLQ0KPiAt CW1xZF9tZ3IgPSBkcW0tPm1xZF9tZ3JzW0tGRF9NUURfVFlQRV9TRE1BXTsNCj4gLQ0KPiAtCXJl dHZhbCA9IGFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4gLQlpZiAocmV0dmFsKQ0KPiAt CQlyZXR1cm4gcmV0dmFsOw0KPiAtDQo+IC0JcmV0dmFsID0gYWxsb2NhdGVfZG9vcmJlbGwocXBk LCBxKTsNCj4gLQlpZiAocmV0dmFsKQ0KPiAtCQlnb3RvIG91dF9kZWFsbG9jYXRlX3NkbWFfcXVl dWU7DQo+IC0NCj4gLQlkcW0tPmFzaWNfb3BzLmluaXRfc2RtYV92bShkcW0sIHEsIHFwZCk7DQo+ IC0JcmV0dmFsID0gbXFkX21nci0+aW5pdF9tcWQobXFkX21nciwgJnEtPm1xZCwgJnEtPm1xZF9t ZW1fb2JqLA0KPiAtCQkJCSZxLT5nYXJ0X21xZF9hZGRyLCAmcS0+cHJvcGVydGllcyk7DQo+IC0J aWYgKHJldHZhbCkNCj4gLQkJZ290byBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDsNCj4gLQ0KPiAt CWlmICghcS0+cHJvcGVydGllcy5pc19hY3RpdmUpDQo+IC0JCXJldHVybiAwOw0KPiAtDQo+IC0J cmV0dmFsID0gbXFkX21nci0+bG9hZF9tcWQobXFkX21nciwgcS0+bXFkLCAwLCAwLCAmcS0+cHJv cGVydGllcywNCj4gLQkJCQljdXJyZW50LT5tbSk7DQo+IC0JaWYgKHJldHZhbCkNCj4gLQkJZ290 byBvdXRfdW5pbml0X21xZDsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtDQo+IC1vdXRfdW5pbml0 X21xZDoNCj4gLQltcWRfbWdyLT51bmluaXRfbXFkKG1xZF9tZ3IsIHEtPm1xZCwgcS0+bXFkX21l bV9vYmopOw0KPiAtb3V0X2RlYWxsb2NhdGVfZG9vcmJlbGw6DQo+IC0JZGVhbGxvY2F0ZV9kb29y YmVsbChxcGQsIHEpOw0KPiAtb3V0X2RlYWxsb2NhdGVfc2RtYV9xdWV1ZToNCj4gLQlkZWFsbG9j YXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4gLQ0KPiAtCXJldHVybiByZXR2YWw7DQo+IC19DQo+ IC0NCj4gICAvKg0KPiAgICAqIERldmljZSBRdWV1ZSBNYW5hZ2VyIGltcGxlbWVudGF0aW9uIGZv ciBjcCBzY2hlZHVsZXINCj4gICAgKi8NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeA==