From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: [PATCH 16/27] drm/amdkfd: Introduce XGMI SDMA queue type Date: Sun, 28 Apr 2019 07:44:14 +0000 Message-ID: <20190428074331.30107-17-Felix.Kuehling@amd.com> References: <20190428074331.30107-1-Felix.Kuehling@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190428074331.30107-1-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US 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: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Zeng, Oak" , "Kuehling, Felix" RnJvbTogT2FrIFplbmcgPE9hay5aZW5nQGFtZC5jb20+DQoNCkV4aXN0aW5nIFFVRVVFX1RZUEVf U0RNQSBtZWFucyBQQ0llIG9wdGltaXplZCBTRE1BIHF1ZXVlcy4NCkludHJvZHVjZSBhIG5ldyBR VUVVRV9UWVBFX1NETUFfWEdNSSwgd2hpY2ggaXMgb3B0aW1pemVkDQpmb3Igbm9uLVBDSWUgdHJh bnNmZXIgc3VjaCBhcyBYR01JLg0KDQpTaWduZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8T2FrLlplbmdA YW1kLmNvbT4NClJldmlld2VkLWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdAYW1k LmNvbT4NClNpZ25lZC1vZmYtYnk6IEZlbGl4IEt1ZWhsaW5nIDxGZWxpeC5LdWVobGluZ0BhbWQu Y29tPg0KLS0tDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYyAgICAg IHwgICAyICsNCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlLmMgICAgICAg fCAgMTUgKysrDQogLi4uL2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5j IHwgMTIzICsrKysrKysrKysrKystLS0tLQ0KIC4uLi9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNl X3F1ZXVlX21hbmFnZXIuaCB8ICAgMyArDQogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfa2Vy bmVsX3F1ZXVlX3Y5LmMgIHwgICAyICsNCiAuLi4vZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJu ZWxfcXVldWVfdmkuYyAgfCAgIDIgKw0KIC4uLi9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3BhY2tl dF9tYW5hZ2VyLmMgICB8ICAgMyArLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9w cml2LmggICAgICAgICB8ICAgNCArLQ0KIC4uLi9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVl X21hbmFnZXIuYyAgICB8ICAxMCArLQ0KIGluY2x1ZGUvdWFwaS9saW51eC9rZmRfaW9jdGwuaCAg ICAgICAgICAgICAgICB8ICAgNyArLQ0KIDEwIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25z KCspLCAzOSBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9jaGFyZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hh cmRldi5jDQppbmRleCBkNzk1ZTUwMTgyNzAuLmM3MzExMjZhZGEyMiAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmMNCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmMNCkBAIC0yMTMsNiArMjEzLDggQEAgc3RhdGlj IGludCBzZXRfcXVldWVfcHJvcGVydGllc19mcm9tX3VzZXIoc3RydWN0IHF1ZXVlX3Byb3BlcnRp ZXMgKnFfcHJvcGVydGllcywNCiAJCXFfcHJvcGVydGllcy0+dHlwZSA9IEtGRF9RVUVVRV9UWVBF X0NPTVBVVEU7DQogCWVsc2UgaWYgKGFyZ3MtPnF1ZXVlX3R5cGUgPT0gS0ZEX0lPQ19RVUVVRV9U WVBFX1NETUEpDQogCQlxX3Byb3BlcnRpZXMtPnR5cGUgPSBLRkRfUVVFVUVfVFlQRV9TRE1BOw0K KwllbHNlIGlmIChhcmdzLT5xdWV1ZV90eXBlID09IEtGRF9JT0NfUVVFVUVfVFlQRV9TRE1BX1hH TUkpDQorCQlxX3Byb3BlcnRpZXMtPnR5cGUgPSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUk7DQog CWVsc2UNCiAJCXJldHVybiAtRU5PVFNVUFA7DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX2RldmljZS5jDQppbmRleCA4MjAyYTVkYjNhMzUuLjEzNjhiNDFjYjkyYiAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYw0KKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5jDQpAQCAtNTQsNiArNTQsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGtmZF9kZXZpY2VfaW5mbyBrYXZlcmlfZGV2aWNlX2luZm8gPSB7DQog CS5uZWVkc19pb21tdV9kZXZpY2UgPSB0cnVlLA0KIAkubmVlZHNfcGNpX2F0b21pY3MgPSBmYWxz ZSwNCiAJLm51bV9zZG1hX2VuZ2luZXMgPSAyLA0KKwkubnVtX3hnbWlfc2RtYV9lbmdpbmVzID0g MCwNCiAJLm51bV9zZG1hX3F1ZXVlc19wZXJfZW5naW5lID0gMiwNCiB9Ow0KIA0KQEAgLTcxLDYg KzcyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZmRfZGV2aWNlX2luZm8gY2Fycml6b19kZXZp Y2VfaW5mbyA9IHsNCiAJLm5lZWRzX2lvbW11X2RldmljZSA9IHRydWUsDQogCS5uZWVkc19wY2lf YXRvbWljcyA9IGZhbHNlLA0KIAkubnVtX3NkbWFfZW5naW5lcyA9IDIsDQorCS5udW1feGdtaV9z ZG1hX2VuZ2luZXMgPSAwLA0KIAkubnVtX3NkbWFfcXVldWVzX3Blcl9lbmdpbmUgPSAyLA0KIH07 DQogDQpAQCAtODcsNiArODksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtmZF9kZXZpY2VfaW5m byByYXZlbl9kZXZpY2VfaW5mbyA9IHsNCiAJLm5lZWRzX2lvbW11X2RldmljZSA9IHRydWUsDQog CS5uZWVkc19wY2lfYXRvbWljcyA9IHRydWUsDQogCS5udW1fc2RtYV9lbmdpbmVzID0gMSwNCisJ Lm51bV94Z21pX3NkbWFfZW5naW5lcyA9IDAsDQogCS5udW1fc2RtYV9xdWV1ZXNfcGVyX2VuZ2lu ZSA9IDIsDQogfTsNCiAjZW5kaWYNCkBAIC0xMDUsNiArMTA4LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBrZmRfZGV2aWNlX2luZm8gaGF3YWlpX2RldmljZV9pbmZvID0gew0KIAkubmVlZHNfaW9t bXVfZGV2aWNlID0gZmFsc2UsDQogCS5uZWVkc19wY2lfYXRvbWljcyA9IGZhbHNlLA0KIAkubnVt X3NkbWFfZW5naW5lcyA9IDIsDQorCS5udW1feGdtaV9zZG1hX2VuZ2luZXMgPSAwLA0KIAkubnVt X3NkbWFfcXVldWVzX3Blcl9lbmdpbmUgPSAyLA0KIH07DQogDQpAQCAtMTIxLDYgKzEyNSw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2ZkX2RldmljZV9pbmZvIHRvbmdhX2RldmljZV9pbmZvID0g ew0KIAkubmVlZHNfaW9tbXVfZGV2aWNlID0gZmFsc2UsDQogCS5uZWVkc19wY2lfYXRvbWljcyA9 IHRydWUsDQogCS5udW1fc2RtYV9lbmdpbmVzID0gMiwNCisJLm51bV94Z21pX3NkbWFfZW5naW5l cyA9IDAsDQogCS5udW1fc2RtYV9xdWV1ZXNfcGVyX2VuZ2luZSA9IDIsDQogfTsNCiANCkBAIC0x MzcsNiArMTQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZmRfZGV2aWNlX2luZm8gZmlqaV9k ZXZpY2VfaW5mbyA9IHsNCiAJLm5lZWRzX2lvbW11X2RldmljZSA9IGZhbHNlLA0KIAkubmVlZHNf cGNpX2F0b21pY3MgPSB0cnVlLA0KIAkubnVtX3NkbWFfZW5naW5lcyA9IDIsDQorCS5udW1feGdt aV9zZG1hX2VuZ2luZXMgPSAwLA0KIAkubnVtX3NkbWFfcXVldWVzX3Blcl9lbmdpbmUgPSAyLA0K IH07DQogDQpAQCAtMTUzLDYgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2ZkX2Rldmlj ZV9pbmZvIGZpamlfdmZfZGV2aWNlX2luZm8gPSB7DQogCS5uZWVkc19pb21tdV9kZXZpY2UgPSBm YWxzZSwNCiAJLm5lZWRzX3BjaV9hdG9taWNzID0gZmFsc2UsDQogCS5udW1fc2RtYV9lbmdpbmVz ID0gMiwNCisJLm51bV94Z21pX3NkbWFfZW5naW5lcyA9IDAsDQogCS5udW1fc2RtYV9xdWV1ZXNf cGVyX2VuZ2luZSA9IDIsDQogfTsNCiANCkBAIC0xNzAsNiArMTc3LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBrZmRfZGV2aWNlX2luZm8gcG9sYXJpczEwX2RldmljZV9pbmZvID0gew0KIAkubmVl ZHNfaW9tbXVfZGV2aWNlID0gZmFsc2UsDQogCS5uZWVkc19wY2lfYXRvbWljcyA9IHRydWUsDQog CS5udW1fc2RtYV9lbmdpbmVzID0gMiwNCisJLm51bV94Z21pX3NkbWFfZW5naW5lcyA9IDAsDQog CS5udW1fc2RtYV9xdWV1ZXNfcGVyX2VuZ2luZSA9IDIsDQogfTsNCiANCkBAIC0xODYsNiArMTk0 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZmRfZGV2aWNlX2luZm8gcG9sYXJpczEwX3ZmX2Rl dmljZV9pbmZvID0gew0KIAkubmVlZHNfaW9tbXVfZGV2aWNlID0gZmFsc2UsDQogCS5uZWVkc19w Y2lfYXRvbWljcyA9IGZhbHNlLA0KIAkubnVtX3NkbWFfZW5naW5lcyA9IDIsDQorCS5udW1feGdt aV9zZG1hX2VuZ2luZXMgPSAwLA0KIAkubnVtX3NkbWFfcXVldWVzX3Blcl9lbmdpbmUgPSAyLA0K IH07DQogDQpAQCAtMjAyLDYgKzIxMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2ZkX2Rldmlj ZV9pbmZvIHBvbGFyaXMxMV9kZXZpY2VfaW5mbyA9IHsNCiAJLm5lZWRzX2lvbW11X2RldmljZSA9 IGZhbHNlLA0KIAkubmVlZHNfcGNpX2F0b21pY3MgPSB0cnVlLA0KIAkubnVtX3NkbWFfZW5naW5l cyA9IDIsDQorCS5udW1feGdtaV9zZG1hX2VuZ2luZXMgPSAwLA0KIAkubnVtX3NkbWFfcXVldWVz X3Blcl9lbmdpbmUgPSAyLA0KIH07DQogDQpAQCAtMjE4LDYgKzIyOCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qga2ZkX2RldmljZV9pbmZvIHBvbGFyaXMxMl9kZXZpY2VfaW5mbyA9IHsNCiAJLm5l ZWRzX2lvbW11X2RldmljZSA9IGZhbHNlLA0KIAkubmVlZHNfcGNpX2F0b21pY3MgPSB0cnVlLA0K IAkubnVtX3NkbWFfZW5naW5lcyA9IDIsDQorCS5udW1feGdtaV9zZG1hX2VuZ2luZXMgPSAwLA0K IAkubnVtX3NkbWFfcXVldWVzX3Blcl9lbmdpbmUgPSAyLA0KIH07DQogDQpAQCAtMjM0LDYgKzI0 NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2ZkX2RldmljZV9pbmZvIHZlZ2ExMF9kZXZpY2Vf aW5mbyA9IHsNCiAJLm5lZWRzX2lvbW11X2RldmljZSA9IGZhbHNlLA0KIAkubmVlZHNfcGNpX2F0 b21pY3MgPSBmYWxzZSwNCiAJLm51bV9zZG1hX2VuZ2luZXMgPSAyLA0KKwkubnVtX3hnbWlfc2Rt YV9lbmdpbmVzID0gMCwNCiAJLm51bV9zZG1hX3F1ZXVlc19wZXJfZW5naW5lID0gMiwNCiB9Ow0K IA0KQEAgLTI1MCw2ICsyNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtmZF9kZXZpY2VfaW5m byB2ZWdhMTBfdmZfZGV2aWNlX2luZm8gPSB7DQogCS5uZWVkc19pb21tdV9kZXZpY2UgPSBmYWxz ZSwNCiAJLm5lZWRzX3BjaV9hdG9taWNzID0gZmFsc2UsDQogCS5udW1fc2RtYV9lbmdpbmVzID0g MiwNCisJLm51bV94Z21pX3NkbWFfZW5naW5lcyA9IDAsDQogCS5udW1fc2RtYV9xdWV1ZXNfcGVy X2VuZ2luZSA9IDIsDQogfTsNCiANCkBAIC0yNjYsNiArMjc5LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBrZmRfZGV2aWNlX2luZm8gdmVnYTEyX2RldmljZV9pbmZvID0gew0KIAkubmVlZHNfaW9t bXVfZGV2aWNlID0gZmFsc2UsDQogCS5uZWVkc19wY2lfYXRvbWljcyA9IGZhbHNlLA0KIAkubnVt X3NkbWFfZW5naW5lcyA9IDIsDQorCS5udW1feGdtaV9zZG1hX2VuZ2luZXMgPSAwLA0KIAkubnVt X3NkbWFfcXVldWVzX3Blcl9lbmdpbmUgPSAyLA0KIH07DQogDQpAQCAtMjgyLDYgKzI5Niw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2ZkX2RldmljZV9pbmZvIHZlZ2EyMF9kZXZpY2VfaW5mbyA9 IHsNCiAJLm5lZWRzX2lvbW11X2RldmljZSA9IGZhbHNlLA0KIAkubmVlZHNfcGNpX2F0b21pY3Mg PSBmYWxzZSwNCiAJLm51bV9zZG1hX2VuZ2luZXMgPSAyLA0KKwkubnVtX3hnbWlfc2RtYV9lbmdp bmVzID0gMCwNCiAJLm51bV9zZG1hX3F1ZXVlc19wZXJfZW5naW5lID0gOCwNCiB9Ow0KIA0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFu YWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5h Z2VyLmMNCmluZGV4IGQ0MTA0NWQzZmMzYS4uMTU2MjU5MGQ4MzdlIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jDQpA QCAtNjAsMTQgKzYwLDE0IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3NkbWFfcXVldWVfbm9jcHNjaChz dHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJCQkJCXN0cnVjdCBxY21fcHJvY2Vz c19kZXZpY2UgKnFwZCk7DQogDQogc3RhdGljIHZvaWQgZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KLQkJCQl1bnNpZ25lZCBpbnQgc2RtYV9x dWV1ZV9pZCk7DQorCQkJCXN0cnVjdCBxdWV1ZSAqcSk7DQogDQogc3RhdGljIHZvaWQga2ZkX3By b2Nlc3NfaHdfZXhjZXB0aW9uKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7DQogDQogc3RhdGlj IGlubGluZQ0KIGVudW0gS0ZEX01RRF9UWVBFIGdldF9tcWRfdHlwZV9mcm9tX3F1ZXVlX3R5cGUo ZW51bSBrZmRfcXVldWVfdHlwZSB0eXBlKQ0KIHsNCi0JaWYgKHR5cGUgPT0gS0ZEX1FVRVVFX1RZ UEVfU0RNQSkNCisJaWYgKHR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8fCB0eXBlID09IEtG RF9RVUVVRV9UWVBFX1NETUFfWEdNSSkNCiAJCXJldHVybiBLRkRfTVFEX1RZUEVfU0RNQTsNCiAJ cmV0dXJuIEtGRF9NUURfVFlQRV9DUDsNCiB9DQpAQCAtMTA3LDEyICsxMDcsMjMgQEAgc3RhdGlj IHVuc2lnbmVkIGludCBnZXRfbnVtX3NkbWFfZW5naW5lcyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21h bmFnZXIgKmRxbSkNCiAJcmV0dXJuIGRxbS0+ZGV2LT5kZXZpY2VfaW5mby0+bnVtX3NkbWFfZW5n aW5lczsNCiB9DQogDQorc3RhdGljIHVuc2lnbmVkIGludCBnZXRfbnVtX3hnbWlfc2RtYV9lbmdp bmVzKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQ0KK3sNCisJcmV0dXJuIGRxbS0+ ZGV2LT5kZXZpY2VfaW5mby0+bnVtX3hnbWlfc2RtYV9lbmdpbmVzOw0KK30NCisNCiB1bnNpZ25l ZCBpbnQgZ2V0X251bV9zZG1hX3F1ZXVlcyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRx bSkNCiB7DQogCXJldHVybiBkcW0tPmRldi0+ZGV2aWNlX2luZm8tPm51bV9zZG1hX2VuZ2luZXMN CiAJCQkqIGRxbS0+ZGV2LT5kZXZpY2VfaW5mby0+bnVtX3NkbWFfcXVldWVzX3Blcl9lbmdpbmU7 DQogfQ0KIA0KK3Vuc2lnbmVkIGludCBnZXRfbnVtX3hnbWlfc2RtYV9xdWV1ZXMoc3RydWN0IGRl dmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pDQorew0KKwlyZXR1cm4gZHFtLT5kZXYtPmRldmljZV9p bmZvLT5udW1feGdtaV9zZG1hX2VuZ2luZXMNCisJCQkqIGRxbS0+ZGV2LT5kZXZpY2VfaW5mby0+ bnVtX3NkbWFfcXVldWVzX3Blcl9lbmdpbmU7DQorfQ0KKw0KIHZvaWQgcHJvZ3JhbV9zaF9tZW1f c2V0dGluZ3Moc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQogCQkJCQlzdHJ1Y3Qg cWNtX3Byb2Nlc3NfZGV2aWNlICpxcGQpDQogew0KQEAgLTEzMyw3ICsxNDQsOCBAQCBzdGF0aWMg aW50IGFsbG9jYXRlX2Rvb3JiZWxsKHN0cnVjdCBxY21fcHJvY2Vzc19kZXZpY2UgKnFwZCwgc3Ry dWN0IHF1ZXVlICpxKQ0KIAkJICogcHJlc2VydmUgdGhlIHVzZXIgbW9kZSBBQkkuDQogCQkgKi8N CiAJCXEtPmRvb3JiZWxsX2lkID0gcS0+cHJvcGVydGllcy5xdWV1ZV9pZDsNCi0JfSBlbHNlIGlm IChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgew0KKwl9IGVsc2Ug aWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BIHx8DQorCQkJcS0+ cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkgew0KIAkJLyogRm9y IFNETUEgcXVldWVzIG9uIFNPQzE1IHdpdGggOC1ieXRlIGRvb3JiZWxsLCB1c2Ugc3RhdGljDQog CQkgKiBkb29yYmVsbCBhc3NpZ25tZW50cyBiYXNlZCBvbiB0aGUgZW5naW5lIGFuZCBxdWV1ZSBp ZC4NCiAJCSAqIFRoZSBkb29iZWxsIGluZGV4IGRpc3RhbmNlIGJldHdlZW4gUkxDICgyKmkpIGFu ZCAoMippKzEpDQpAQCAtMTc0LDcgKzE4Niw4IEBAIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfZG9v cmJlbGwoc3RydWN0IHFjbV9wcm9jZXNzX2RldmljZSAqcXBkLA0KIAlzdHJ1Y3Qga2ZkX2RldiAq ZGV2ID0gcXBkLT5kcW0tPmRldjsNCiANCiAJaWYgKCFLRkRfSVNfU09DMTUoZGV2LT5kZXZpY2Vf aW5mby0+YXNpY19mYW1pbHkpIHx8DQotCSAgICBxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FV RVVFX1RZUEVfU0RNQSkNCisJICAgIHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQ RV9TRE1BIHx8DQorCSAgICBxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RN QV9YR01JKQ0KIAkJcmV0dXJuOw0KIA0KIAlvbGQgPSB0ZXN0X2FuZF9jbGVhcl9iaXQocS0+ZG9v cmJlbGxfaWQsIHFwZC0+ZG9vcmJlbGxfYml0bWFwKTsNCkBAIC0yODksNyArMzAyLDggQEAgc3Rh dGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIg KmRxbSwNCiANCiAJaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9DT01Q VVRFKQ0KIAkJcmV0dmFsID0gY3JlYXRlX2NvbXB1dGVfcXVldWVfbm9jcHNjaChkcW0sIHEsIHFw ZCk7DQotCWVsc2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1B KQ0KKwllbHNlIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8 fA0KKwkJCXEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpDQog CQlyZXR2YWwgPSBjcmVhdGVfc2RtYV9xdWV1ZV9ub2Nwc2NoKGRxbSwgcSwgcXBkKTsNCiAJZWxz ZQ0KIAkJcmV0dmFsID0gLUVJTlZBTDsNCkBAIC0zMDcsNiArMzIxLDggQEAgc3RhdGljIGludCBj cmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAN CiAJaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKQ0KIAkJZHFt LT5zZG1hX3F1ZXVlX2NvdW50Kys7DQorCWVsc2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBL RkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpDQorCQlkcW0tPnhnbWlfc2RtYV9xdWV1ZV9jb3VudCsr Ow0KIA0KIAkvKg0KIAkgKiBVbmNvbmRpdGlvbmFsbHkgaW5jcmVtZW50IHRoaXMgY291bnRlciwg cmVnYXJkbGVzcyBvZiB0aGUgcXVldWUncw0KQEAgLTQzMCw3ICs0NDYsMTAgQEAgc3RhdGljIGlu dCBkZXN0cm95X3F1ZXVlX25vY3BzY2hfbG9ja2VkKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdl ciAqZHFtLA0KIAkJZGVhbGxvY2F0ZV9ocWQoZHFtLCBxKTsNCiAJfSBlbHNlIGlmIChxLT5wcm9w ZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgew0KIAkJZHFtLT5zZG1hX3F1ZXVl X2NvdW50LS07DQotCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxLT5zZG1hX2lkKTsNCisJ CWRlYWxsb2NhdGVfc2RtYV9xdWV1ZShkcW0sIHEpOw0KKwl9IGVsc2UgaWYgKHEtPnByb3BlcnRp ZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpIHsNCisJCWRxbS0+eGdtaV9zZG1h X3F1ZXVlX2NvdW50LS07DQorCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCiAJfSBl bHNlIHsNCiAJCXByX2RlYnVnKCJxLT5wcm9wZXJ0aWVzLnR5cGUgJWQgaXMgaW52YWxpZFxuIiwN CiAJCQkJcS0+cHJvcGVydGllcy50eXBlKTsNCkBAIC01MjEsNyArNTQwLDggQEAgc3RhdGljIGlu dCB1cGRhdGVfcXVldWUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBx dWV1ZSAqcSkNCiAJCX0NCiAJfSBlbHNlIGlmIChwcmV2X2FjdGl2ZSAmJg0KIAkJICAgKHEtPnBy b3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9DT01QVVRFIHx8DQotCQkgICAgcS0+cHJv cGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpKSB7DQorCQkgICAgcS0+cHJvcGVy dGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEgfHwNCisJCSAgICBxLT5wcm9wZXJ0aWVz LnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSkgew0KIAkJcmV0dmFsID0gbXFkX21n ci0+ZGVzdHJveV9tcWQobXFkX21nciwgcS0+bXFkLA0KIAkJCQlLRkRfUFJFRU1QVF9UWVBFX1dB VkVGUk9OVF9EUkFJTiwNCiAJCQkJS0ZEX1VOTUFQX0xBVEVOQ1lfTVMsIHEtPnBpcGUsIHEtPnF1 ZXVlKTsNCkBAIC01NDgsNyArNTY4LDggQEAgc3RhdGljIGludCB1cGRhdGVfcXVldWUoc3RydWN0 IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAqcSkNCiAJCXJldHZhbCA9 IG1hcF9xdWV1ZXNfY3BzY2goZHFtKTsNCiAJZWxzZSBpZiAocS0+cHJvcGVydGllcy5pc19hY3Rp dmUgJiYNCiAJCSAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX0NPTVBVVEUg fHwNCi0JCSAgcS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpKSB7DQor CQkgIHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BIHx8DQorCQkgIHEt PnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpKSB7DQogCQlpZiAo V0FSTihxLT5wcm9jZXNzLT5tbSAhPSBjdXJyZW50LT5tbSwNCiAJCQkgInNob3VsZCBvbmx5IHJ1 biBpbiB1c2VyIHRocmVhZCIpKQ0KIAkJCXJldHZhbCA9IC1FRkFVTFQ7DQpAQCAtODQwLDYgKzg2 MSw3IEBAIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVf bWFuYWdlciAqZHFtKQ0KIAlJTklUX0xJU1RfSEVBRCgmZHFtLT5xdWV1ZXMpOw0KIAlkcW0tPnF1 ZXVlX2NvdW50ID0gZHFtLT5uZXh0X3BpcGVfdG9fYWxsb2NhdGUgPSAwOw0KIAlkcW0tPnNkbWFf cXVldWVfY291bnQgPSAwOw0KKwlkcW0tPnhnbWlfc2RtYV9xdWV1ZV9jb3VudCA9IDA7DQogDQog CWZvciAocGlwZSA9IDA7IHBpcGUgPCBnZXRfcGlwZXNfcGVyX21lYyhkcW0pOyBwaXBlKyspIHsN CiAJCWludCBwaXBlX29mZnNldCA9IHBpcGUgKiBnZXRfcXVldWVzX3Blcl9waXBlKGRxbSk7DQpA QCAtODUyLDYgKzg3NCw3IEBAIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9ub2Nwc2NoKHN0cnVjdCBk ZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQ0KIA0KIAlkcW0tPnZtaWRfYml0bWFwID0gKDEgPDwg ZHFtLT5kZXYtPnZtX2luZm8udm1pZF9udW1fa2ZkKSAtIDE7DQogCWRxbS0+c2RtYV9iaXRtYXAg PSAoMVVMTCA8PCBnZXRfbnVtX3NkbWFfcXVldWVzKGRxbSkpIC0gMTsNCisJZHFtLT54Z21pX3Nk bWFfYml0bWFwID0gKDFVTEwgPDwgZ2V0X251bV94Z21pX3NkbWFfcXVldWVzKGRxbSkpIC0gMTsN CiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTg4NiwxNyArOTA5LDM0IEBAIHN0YXRpYyBpbnQgYWxs b2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiB7DQog CWludCBiaXQ7DQogDQotCWlmIChkcW0tPnNkbWFfYml0bWFwID09IDApDQotCQlyZXR1cm4gLUVO T01FTTsNCi0NCi0JYml0ID0gX19mZnM2NChkcW0tPnNkbWFfYml0bWFwKTsNCi0JZHFtLT5zZG1h X2JpdG1hcCAmPSB+KDFVTEwgPDwgYml0KTsNCi0JcS0+c2RtYV9pZCA9IGJpdDsNCi0NCi0JcS0+ cHJvcGVydGllcy5zZG1hX2VuZ2luZV9pZCA9IHEtPnNkbWFfaWQgJSBnZXRfbnVtX3NkbWFfZW5n aW5lcyhkcW0pOw0KLQlxLT5wcm9wZXJ0aWVzLnNkbWFfcXVldWVfaWQgPSBxLT5zZG1hX2lkIC8g Z2V0X251bV9zZG1hX2VuZ2luZXMoZHFtKTsNCisJaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBL RkRfUVVFVUVfVFlQRV9TRE1BKSB7DQorCQlpZiAoZHFtLT5zZG1hX2JpdG1hcCA9PSAwKQ0KKwkJ CXJldHVybiAtRU5PTUVNOw0KKwkJYml0ID0gX19mZnM2NChkcW0tPnNkbWFfYml0bWFwKTsNCisJ CWRxbS0+c2RtYV9iaXRtYXAgJj0gfigxVUxMIDw8IGJpdCk7DQorCQlxLT5zZG1hX2lkID0gYml0 Ow0KKwkJcS0+cHJvcGVydGllcy5zZG1hX2VuZ2luZV9pZCA9IHEtPnNkbWFfaWQgJQ0KKwkJCQln ZXRfbnVtX3NkbWFfZW5naW5lcyhkcW0pOw0KKwkJcS0+cHJvcGVydGllcy5zZG1hX3F1ZXVlX2lk ID0gcS0+c2RtYV9pZCAvDQorCQkJCWdldF9udW1fc2RtYV9lbmdpbmVzKGRxbSk7DQorCX0gZWxz ZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkgew0K KwkJaWYgKGRxbS0+eGdtaV9zZG1hX2JpdG1hcCA9PSAwKQ0KKwkJCXJldHVybiAtRU5PTUVNOw0K KwkJYml0ID0gX19mZnM2NChkcW0tPnhnbWlfc2RtYV9iaXRtYXApOw0KKwkJZHFtLT54Z21pX3Nk bWFfYml0bWFwICY9IH4oMVVMTCA8PCBiaXQpOw0KKwkJcS0+c2RtYV9pZCA9IGJpdDsNCisJCS8q IHNkbWFfZW5naW5lX2lkIGlzIHNkbWEgaWQgaW5jbHVkaW5nDQorCQkgKiBib3RoIFBDSWUtb3B0 aW1pemVkIFNETUFzIGFuZCBYR01JLQ0KKwkJICogb3B0aW1pemVkIFNETUFzLiBUaGUgY2FsY3Vs YXRpb24gYmVsb3cNCisJCSAqIGFzc3VtZXMgdGhlIGZpcnN0IE4gZW5naW5lcyBhcmUgYWx3YXlz DQorCQkgKiBQQ0llLW9wdGltaXplZCBvbmVzDQorCQkgKi8NCisJCXEtPnByb3BlcnRpZXMuc2Rt YV9lbmdpbmVfaWQgPSBnZXRfbnVtX3NkbWFfZW5naW5lcyhkcW0pICsNCisJCQkJcS0+c2RtYV9p ZCAlIGdldF9udW1feGdtaV9zZG1hX2VuZ2luZXMoZHFtKTsNCisJCXEtPnByb3BlcnRpZXMuc2Rt YV9xdWV1ZV9pZCA9IHEtPnNkbWFfaWQgLw0KKwkJCQlnZXRfbnVtX3hnbWlfc2RtYV9lbmdpbmVz KGRxbSk7DQorCX0NCiANCi0JcHJfZGVidWcoIlNETUEgaWQgaXM6ICAgICVkXG4iLCBxLT5zZG1h X2lkKTsNCiAJcHJfZGVidWcoIlNETUEgZW5naW5lIGlkOiAlZFxuIiwgcS0+cHJvcGVydGllcy5z ZG1hX2VuZ2luZV9pZCk7DQogCXByX2RlYnVnKCJTRE1BIHF1ZXVlIGlkOiAlZFxuIiwgcS0+cHJv cGVydGllcy5zZG1hX3F1ZXVlX2lkKTsNCiANCkBAIC05MDQsMTEgKzk0NCwxNyBAQCBzdGF0aWMg aW50IGFsbG9jYXRlX3NkbWFfcXVldWUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0s DQogfQ0KIA0KIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2aWNl X3F1ZXVlX21hbmFnZXIgKmRxbSwNCi0JCQkJdW5zaWduZWQgaW50IHNkbWFfaWQpDQorCQkJCXN0 cnVjdCBxdWV1ZSAqcSkNCiB7DQotCWlmIChzZG1hX2lkID49IGdldF9udW1fc2RtYV9xdWV1ZXMo ZHFtKSkNCi0JCXJldHVybjsNCi0JZHFtLT5zZG1hX2JpdG1hcCB8PSAoMVVMTCA8PCBzZG1hX2lk KTsNCisJaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKSB7DQor CQlpZiAocS0+c2RtYV9pZCA+PSBnZXRfbnVtX3NkbWFfcXVldWVzKGRxbSkpDQorCQkJcmV0dXJu Ow0KKwkJZHFtLT5zZG1hX2JpdG1hcCB8PSAoMVVMTCA8PCBxLT5zZG1hX2lkKTsNCisJfSBlbHNl IGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQor CQlpZiAocS0+c2RtYV9pZCA+PSBnZXRfbnVtX3hnbWlfc2RtYV9xdWV1ZXMoZHFtKSkNCisJCQly ZXR1cm47DQorCQlkcW0tPnhnbWlfc2RtYV9iaXRtYXAgfD0gKDFVTEwgPDwgcS0+c2RtYV9pZCk7 DQorCX0NCiB9DQogDQogc3RhdGljIGludCBjcmVhdGVfc2RtYV9xdWV1ZV9ub2Nwc2NoKHN0cnVj dCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KQEAgLTk0Niw3ICs5OTIsNyBAQCBzdGF0aWMg aW50IGNyZWF0ZV9zZG1hX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2Vy ICpkcW0sDQogb3V0X2RlYWxsb2NhdGVfZG9vcmJlbGw6DQogCWRlYWxsb2NhdGVfZG9vcmJlbGwo cXBkLCBxKTsNCiBvdXRfZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlOg0KLQlkZWFsbG9jYXRlX3NkbWFf cXVldWUoZHFtLCBxLT5zZG1hX2lkKTsNCisJZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7 DQogDQogCXJldHVybiByZXR2YWw7DQogfQ0KQEAgLTEwMDQsOCArMTA1MCwxMCBAQCBzdGF0aWMg aW50IGluaXRpYWxpemVfY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pDQog CUlOSVRfTElTVF9IRUFEKCZkcW0tPnF1ZXVlcyk7DQogCWRxbS0+cXVldWVfY291bnQgPSBkcW0t PnByb2Nlc3Nlc19jb3VudCA9IDA7DQogCWRxbS0+c2RtYV9xdWV1ZV9jb3VudCA9IDA7DQorCWRx bS0+eGdtaV9zZG1hX3F1ZXVlX2NvdW50ID0gMDsNCiAJZHFtLT5hY3RpdmVfcnVubGlzdCA9IGZh bHNlOw0KIAlkcW0tPnNkbWFfYml0bWFwID0gKDFVTEwgPDwgZ2V0X251bV9zZG1hX3F1ZXVlcyhk cW0pKSAtIDE7DQorCWRxbS0+eGdtaV9zZG1hX2JpdG1hcCA9ICgxVUxMIDw8IGdldF9udW1feGdt aV9zZG1hX3F1ZXVlcyhkcW0pKSAtIDE7DQogDQogCUlOSVRfV09SSygmZHFtLT5od19leGNlcHRp b25fd29yaywga2ZkX3Byb2Nlc3NfaHdfZXhjZXB0aW9uKTsNCiANCkBAIC0xMTI3LDcgKzExNzUs OCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21h bmFnZXIgKmRxbSwgc3RydWN0IHF1ZXVlICpxLA0KIAkJZ290byBvdXQ7DQogCX0NCiANCi0JaWYg KHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKSB7DQorCWlmIChxLT5w cm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8fA0KKwkJcS0+cHJvcGVydGll cy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkgew0KIAkJcmV0dmFsID0gYWxsb2Nh dGVfc2RtYV9xdWV1ZShkcW0sIHEpOw0KIAkJaWYgKHJldHZhbCkNCiAJCQlnb3RvIG91dDsNCkBA IC0xMTY3LDYgKzEyMTYsOCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9jcHNjaChzdHJ1Y3Qg ZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwgc3RydWN0IHF1ZXVlICpxLA0KIA0KIAlpZiAocS0+ cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpDQogCQlkcW0tPnNkbWFfcXVl dWVfY291bnQrKzsNCisJZWxzZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9U WVBFX1NETUFfWEdNSSkNCisJCWRxbS0+eGdtaV9zZG1hX3F1ZXVlX2NvdW50Kys7DQogCS8qDQog CSAqIFVuY29uZGl0aW9uYWxseSBpbmNyZW1lbnQgdGhpcyBjb3VudGVyLCByZWdhcmRsZXNzIG9m IHRoZSBxdWV1ZSdzDQogCSAqIHR5cGUgb3Igd2hldGhlciB0aGUgcXVldWUgaXMgYWN0aXZlLg0K QEAgLTExODIsOCArMTIzMyw5IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3F1ZXVlX2Nwc2NoKHN0cnVj dCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLCBzdHJ1Y3QgcXVldWUgKnEsDQogb3V0X2RlYWxs b2NhdGVfZG9vcmJlbGw6DQogCWRlYWxsb2NhdGVfZG9vcmJlbGwocXBkLCBxKTsNCiBvdXRfZGVh bGxvY2F0ZV9zZG1hX3F1ZXVlOg0KLQlpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVV RV9UWVBFX1NETUEpDQotCQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxLT5zZG1hX2lkKTsN CisJaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BIHx8DQorCQlx LT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKQ0KKwkJZGVhbGxv Y2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQogb3V0Og0KIAlyZXR1cm4gcmV0dmFsOw0KIH0NCkBA IC0xMjE2LDcgKzEyNjgsOCBAQCBzdGF0aWMgaW50IHVubWFwX3NkbWFfcXVldWVzKHN0cnVjdCBk ZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKQ0KIHsNCiAJaW50IGksIHJldHZhbCA9IDA7DQogDQot CWZvciAoaSA9IDA7IGkgPCBkcW0tPmRldi0+ZGV2aWNlX2luZm8tPm51bV9zZG1hX2VuZ2luZXM7 IGkrKykgew0KKwlmb3IgKGkgPSAwOyBpIDwgZHFtLT5kZXYtPmRldmljZV9pbmZvLT5udW1fc2Rt YV9lbmdpbmVzICsNCisJCWRxbS0+ZGV2LT5kZXZpY2VfaW5mby0+bnVtX3hnbWlfc2RtYV9lbmdp bmVzOyBpKyspIHsNCiAJCXJldHZhbCA9IHBtX3NlbmRfdW5tYXBfcXVldWUoJmRxbS0+cGFja2V0 cywgS0ZEX1FVRVVFX1RZUEVfU0RNQSwNCiAJCQlLRkRfVU5NQVBfUVVFVUVTX0ZJTFRFUl9EWU5B TUlDX1FVRVVFUywgMCwgZmFsc2UsIGkpOw0KIAkJaWYgKHJldHZhbCkNCkBAIC0xMjU4LDEwICsx MzExLDEwIEBAIHN0YXRpYyBpbnQgdW5tYXBfcXVldWVzX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtLA0KIAlpZiAoIWRxbS0+YWN0aXZlX3J1bmxpc3QpDQogCQlyZXR1cm4g cmV0dmFsOw0KIA0KLQlwcl9kZWJ1ZygiQmVmb3JlIGRlc3Ryb3lpbmcgcXVldWVzLCBzZG1hIHF1 ZXVlIGNvdW50IGlzIDogJXVcbiIsDQotCQlkcW0tPnNkbWFfcXVldWVfY291bnQpOw0KKwlwcl9k ZWJ1ZygiQmVmb3JlIGRlc3Ryb3lpbmcgcXVldWVzLCBzZG1hIHF1ZXVlIGNvdW50IGlzIDogJXUs IHhnbWkgc2RtYSBxdWV1ZSBjb3VudCBpcyA6ICV1XG4iLA0KKwkJZHFtLT5zZG1hX3F1ZXVlX2Nv dW50LCBkcW0tPnhnbWlfc2RtYV9xdWV1ZV9jb3VudCk7DQogDQotCWlmIChkcW0tPnNkbWFfcXVl dWVfY291bnQgPiAwKQ0KKwlpZiAoZHFtLT5zZG1hX3F1ZXVlX2NvdW50ID4gMCB8fCBkcW0tPnhn bWlfc2RtYV9xdWV1ZV9jb3VudCkNCiAJCXVubWFwX3NkbWFfcXVldWVzKGRxbSk7DQogDQogCXJl dHZhbCA9IHBtX3NlbmRfdW5tYXBfcXVldWUoJmRxbS0+cGFja2V0cywgS0ZEX1FVRVVFX1RZUEVf Q09NUFVURSwNCkBAIC0xMzMzLDcgKzEzODYsMTAgQEAgc3RhdGljIGludCBkZXN0cm95X3F1ZXVl X2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KIA0KIAlpZiAocS0+cHJv cGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpIHsNCiAJCWRxbS0+c2RtYV9xdWV1 ZV9jb3VudC0tOw0KLQkJZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcS0+c2RtYV9pZCk7DQor CQlkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCisJfSBlbHNlIGlmIChxLT5wcm9wZXJ0 aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQorCQlkcW0tPnhnbWlfc2Rt YV9xdWV1ZV9jb3VudC0tOw0KKwkJZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQogCX0N CiANCiAJbGlzdF9kZWwoJnEtPmxpc3QpOw0KQEAgLTE1NTAsNyArMTYwNiwxMCBAQCBzdGF0aWMg aW50IHByb2Nlc3NfdGVybWluYXRpb25fY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2Vy ICpkcW0sDQogCWxpc3RfZm9yX2VhY2hfZW50cnkocSwgJnFwZC0+cXVldWVzX2xpc3QsIGxpc3Qp IHsNCiAJCWlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgew0K IAkJCWRxbS0+c2RtYV9xdWV1ZV9jb3VudC0tOw0KLQkJCWRlYWxsb2NhdGVfc2RtYV9xdWV1ZShk cW0sIHEtPnNkbWFfaWQpOw0KKwkJCWRlYWxsb2NhdGVfc2RtYV9xdWV1ZShkcW0sIHEpOw0KKwkJ fSBlbHNlIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01J KSB7DQorCQkJZHFtLT54Z21pX3NkbWFfcXVldWVfY291bnQtLTsNCisJCQlkZWFsbG9jYXRlX3Nk bWFfcXVldWUoZHFtLCBxKTsNCiAJCX0NCiANCiAJCWlmIChxLT5wcm9wZXJ0aWVzLmlzX2FjdGl2 ZSkNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1 ZXVlX21hbmFnZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVl dWVfbWFuYWdlci5oDQppbmRleCAzNzQyZmQzNDBlYzMuLjg4YjRjMDA3Njk2ZSAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5o DQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFn ZXIuaA0KQEAgLTE4MSwxMCArMTgxLDEyIEBAIHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciB7 DQogCXVuc2lnbmVkIGludAkJcHJvY2Vzc2VzX2NvdW50Ow0KIAl1bnNpZ25lZCBpbnQJCXF1ZXVl X2NvdW50Ow0KIAl1bnNpZ25lZCBpbnQJCXNkbWFfcXVldWVfY291bnQ7DQorCXVuc2lnbmVkIGlu dAkJeGdtaV9zZG1hX3F1ZXVlX2NvdW50Ow0KIAl1bnNpZ25lZCBpbnQJCXRvdGFsX3F1ZXVlX2Nv dW50Ow0KIAl1bnNpZ25lZCBpbnQJCW5leHRfcGlwZV90b19hbGxvY2F0ZTsNCiAJdW5zaWduZWQg aW50CQkqYWxsb2NhdGVkX3F1ZXVlczsNCiAJdWludDY0X3QJCXNkbWFfYml0bWFwOw0KKwl1aW50 NjRfdAkJeGdtaV9zZG1hX2JpdG1hcDsNCiAJdW5zaWduZWQgaW50CQl2bWlkX2JpdG1hcDsNCiAJ dWludDY0X3QJCXBpcGVsaW5lc19hZGRyOw0KIAlzdHJ1Y3Qga2ZkX21lbV9vYmoJKnBpcGVsaW5l X21lbTsNCkBAIC0yMTYsNiArMjE4LDcgQEAgdW5zaWduZWQgaW50IGdldF9xdWV1ZXNfbnVtKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKTsNCiB1bnNpZ25lZCBpbnQgZ2V0X3F1ZXVl c19wZXJfcGlwZShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7DQogdW5zaWduZWQg aW50IGdldF9waXBlc19wZXJfbWVjKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtKTsN CiB1bnNpZ25lZCBpbnQgZ2V0X251bV9zZG1hX3F1ZXVlcyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21h bmFnZXIgKmRxbSk7DQordW5zaWduZWQgaW50IGdldF9udW1feGdtaV9zZG1hX3F1ZXVlcyhzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7DQogDQogc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQgZ2V0X3NoX21lbV9iYXNlc18zMihzdHJ1Y3Qga2ZkX3Byb2Nlc3NfZGV2aWNlICpwZGQp DQogew0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxf cXVldWVfdjkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxfcXVldWVf djkuYw0KaW5kZXggMzM4MzBiMWE1YTU0Li42MDQ1NzBiZWE2YmQgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlX3Y5LmMNCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxfcXVldWVfdjkuYw0KQEAgLTE3NSw2ICsx NzUsNyBAQCBzdGF0aWMgaW50IHBtX21hcF9xdWV1ZXNfdjkoc3RydWN0IHBhY2tldF9tYW5hZ2Vy ICpwbSwgdWludDMyX3QgKmJ1ZmZlciwNCiAJCQlxdWV1ZV90eXBlX19tZXNfbWFwX3F1ZXVlc19f ZGVidWdfaW50ZXJmYWNlX3F1ZXVlX3ZpOw0KIAkJYnJlYWs7DQogCWNhc2UgS0ZEX1FVRVVFX1RZ UEVfU0RNQToNCisJY2FzZSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUk6DQogCQlwYWNrZXQtPmJp dGZpZWxkczIuZW5naW5lX3NlbCA9IHEtPnByb3BlcnRpZXMuc2RtYV9lbmdpbmVfaWQgKw0KIAkJ CQllbmdpbmVfc2VsX19tZXNfbWFwX3F1ZXVlc19fc2RtYTBfdmk7DQogCQl1c2Vfc3RhdGljID0g ZmFsc2U7IC8qIG5vIHN0YXRpYyBxdWV1ZXMgdW5kZXIgU0RNQSAqLw0KQEAgLTIyMSw2ICsyMjIs NyBAQCBzdGF0aWMgaW50IHBtX3VubWFwX3F1ZXVlc192OShzdHJ1Y3QgcGFja2V0X21hbmFnZXIg KnBtLCB1aW50MzJfdCAqYnVmZmVyLA0KIAkJCWVuZ2luZV9zZWxfX21lc191bm1hcF9xdWV1ZXNf X2NvbXB1dGU7DQogCQlicmVhazsNCiAJY2FzZSBLRkRfUVVFVUVfVFlQRV9TRE1BOg0KKwljYXNl IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSToNCiAJCXBhY2tldC0+Yml0ZmllbGRzMi5lbmdpbmVf c2VsID0NCiAJCQllbmdpbmVfc2VsX19tZXNfdW5tYXBfcXVldWVzX19zZG1hMCArIHNkbWFfZW5n aW5lOw0KIAkJYnJlYWs7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX2tlcm5lbF9xdWV1ZV92aS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tl cm5lbF9xdWV1ZV92aS5jDQppbmRleCBiZjIwYzZkMzJlZjMuLjNjZGIxOTgyNjkyNyAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxfcXVldWVfdmkuYw0K KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1ZV92aS5jDQpA QCAtMjEyLDYgKzIxMiw3IEBAIHN0YXRpYyBpbnQgcG1fbWFwX3F1ZXVlc192aShzdHJ1Y3QgcGFj a2V0X21hbmFnZXIgKnBtLCB1aW50MzJfdCAqYnVmZmVyLA0KIAkJCXF1ZXVlX3R5cGVfX21lc19t YXBfcXVldWVzX19kZWJ1Z19pbnRlcmZhY2VfcXVldWVfdmk7DQogCQlicmVhazsNCiAJY2FzZSBL RkRfUVVFVUVfVFlQRV9TRE1BOg0KKwljYXNlIEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSToNCiAJ CXBhY2tldC0+Yml0ZmllbGRzMi5lbmdpbmVfc2VsID0gcS0+cHJvcGVydGllcy5zZG1hX2VuZ2lu ZV9pZCArDQogCQkJCWVuZ2luZV9zZWxfX21lc19tYXBfcXVldWVzX19zZG1hMF92aTsNCiAJCXVz ZV9zdGF0aWMgPSBmYWxzZTsgLyogbm8gc3RhdGljIHF1ZXVlcyB1bmRlciBTRE1BICovDQpAQCAt MjU4LDYgKzI1OSw3IEBAIHN0YXRpYyBpbnQgcG1fdW5tYXBfcXVldWVzX3ZpKHN0cnVjdCBwYWNr ZXRfbWFuYWdlciAqcG0sIHVpbnQzMl90ICpidWZmZXIsDQogCQkJZW5naW5lX3NlbF9fbWVzX3Vu bWFwX3F1ZXVlc19fY29tcHV0ZTsNCiAJCWJyZWFrOw0KIAljYXNlIEtGRF9RVUVVRV9UWVBFX1NE TUE6DQorCWNhc2UgS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JOg0KIAkJcGFja2V0LT5iaXRmaWVs ZHMyLmVuZ2luZV9zZWwgPQ0KIAkJCWVuZ2luZV9zZWxfX21lc191bm1hcF9xdWV1ZXNfX3NkbWEw ICsgc2RtYV9lbmdpbmU7DQogCQlicmVhazsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfcGFja2V0X21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9wYWNrZXRfbWFuYWdlci5jDQppbmRleCAwNDVhMjI5NDM2YTAuLjA3N2M0N2ZkNGZl ZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wYWNrZXRfbWFu YWdlci5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcGFja2V0X21hbmFn ZXIuYw0KQEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIHZvaWQgcG1fY2FsY19ybGliX3NpemUoc3Ry dWN0IHBhY2tldF9tYW5hZ2VyICpwbSwNCiANCiAJcHJvY2Vzc19jb3VudCA9IHBtLT5kcW0tPnBy b2Nlc3Nlc19jb3VudDsNCiAJcXVldWVfY291bnQgPSBwbS0+ZHFtLT5xdWV1ZV9jb3VudDsNCi0J Y29tcHV0ZV9xdWV1ZV9jb3VudCA9IHF1ZXVlX2NvdW50IC0gcG0tPmRxbS0+c2RtYV9xdWV1ZV9j b3VudDsNCisJY29tcHV0ZV9xdWV1ZV9jb3VudCA9IHF1ZXVlX2NvdW50IC0gcG0tPmRxbS0+c2Rt YV9xdWV1ZV9jb3VudCAtDQorCQkJCXBtLT5kcW0tPnhnbWlfc2RtYV9xdWV1ZV9jb3VudDsNCiAN CiAJLyogY2hlY2sgaWYgdGhlcmUgaXMgb3ZlciBzdWJzY3JpcHRpb24NCiAJICogTm90ZTogdGhl IGFyYml0cmF0aW9uIGJldHdlZW4gdGhlIG51bWJlciBvZiBWTUlEcyBhbmQNCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX3ByaXYuaA0KaW5kZXggODczMjhjOTZiMGYxLi5jODkyNWI3YjZjNDYg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oDQorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oDQpAQCAtMTg4LDYgKzE4OCw3 IEBAIHN0cnVjdCBrZmRfZGV2aWNlX2luZm8gew0KIAlib29sIG5lZWRzX2lvbW11X2RldmljZTsN CiAJYm9vbCBuZWVkc19wY2lfYXRvbWljczsNCiAJdW5zaWduZWQgaW50IG51bV9zZG1hX2VuZ2lu ZXM7DQorCXVuc2lnbmVkIGludCBudW1feGdtaV9zZG1hX2VuZ2luZXM7DQogCXVuc2lnbmVkIGlu dCBudW1fc2RtYV9xdWV1ZXNfcGVyX2VuZ2luZTsNCiB9Ow0KIA0KQEAgLTMyOSw3ICszMzAsOCBA QCBlbnVtIGtmZF9xdWV1ZV90eXBlICB7DQogCUtGRF9RVUVVRV9UWVBFX0NPTVBVVEUsDQogCUtG RF9RVUVVRV9UWVBFX1NETUEsDQogCUtGRF9RVUVVRV9UWVBFX0hJUSwNCi0JS0ZEX1FVRVVFX1RZ UEVfRElRDQorCUtGRF9RVUVVRV9UWVBFX0RJUSwNCisJS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01J DQogfTsNCiANCiBlbnVtIGtmZF9xdWV1ZV9mb3JtYXQgew0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYw0KaW5kZXggZjE4 ZDljZGY5YWFjLi5lNjUyZTI1ZWRlNzUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGtmZC9rZmRfcHJvY2Vzc19xdWV1ZV9tYW5hZ2VyLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzX3F1ZXVlX21hbmFnZXIuYw0KQEAgLTE4Niw4ICsxODYs MTMgQEAgaW50IHBxbV9jcmVhdGVfcXVldWUoc3RydWN0IHByb2Nlc3NfcXVldWVfbWFuYWdlciAq cHFtLA0KIA0KIAlzd2l0Y2ggKHR5cGUpIHsNCiAJY2FzZSBLRkRfUVVFVUVfVFlQRV9TRE1BOg0K LQkJaWYgKGRldi0+ZHFtLT5xdWV1ZV9jb3VudCA+PSBnZXRfbnVtX3NkbWFfcXVldWVzKGRldi0+ ZHFtKSkgew0KLQkJCXByX2VycigiT3Zlci1zdWJzY3JpcHRpb24gaXMgbm90IGFsbG93ZWQgZm9y IFNETUEuXG4iKTsNCisJY2FzZSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUk6DQorCQlpZiAoKHR5 cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSAmJiBkZXYtPmRxbS0+c2RtYV9xdWV1ZV9jb3VudA0K KwkJCT49IGdldF9udW1fc2RtYV9xdWV1ZXMoZGV2LT5kcW0pKSB8fA0KKwkJCSh0eXBlID09IEtG RF9RVUVVRV9UWVBFX1NETUFfWEdNSSAmJg0KKwkJCWRldi0+ZHFtLT54Z21pX3NkbWFfcXVldWVf Y291bnQNCisJCQk+PSBnZXRfbnVtX3hnbWlfc2RtYV9xdWV1ZXMoZGV2LT5kcW0pKSkgew0KKwkJ CXByX2RlYnVnKCJPdmVyLXN1YnNjcmlwdGlvbiBpcyBub3QgYWxsb3dlZCBmb3IgU0RNQS5cbiIp Ow0KIAkJCXJldHZhbCA9IC1FUEVSTTsNCiAJCQlnb3RvIGVycl9jcmVhdGVfcXVldWU7DQogCQl9 DQpAQCAtNDQ2LDYgKzQ1MSw3IEBAIGludCBwcW1fZGVidWdmc19tcWRzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkNCiAJCQlxID0gcHFuLT5xOw0KIAkJCXN3aXRjaCAocS0+cHJvcGVy dGllcy50eXBlKSB7DQogCQkJY2FzZSBLRkRfUVVFVUVfVFlQRV9TRE1BOg0KKwkJCWNhc2UgS0ZE X1FVRVVFX1RZUEVfU0RNQV9YR01JOg0KIAkJCQlzZXFfcHJpbnRmKG0sICIgIFNETUEgcXVldWUg b24gZGV2aWNlICV4XG4iLA0KIAkJCQkJICAgcS0+ZGV2aWNlLT5pZCk7DQogCQkJCW1xZF90eXBl ID0gS0ZEX01RRF9UWVBFX1NETUE7DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2tm ZF9pb2N0bC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2tmZF9pb2N0bC5oDQppbmRleCAxZTdkNWYz Mzc2YjAuLjIwOTE3YzU5ZjM5YyAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rZmRf aW9jdGwuaA0KKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2tmZF9pb2N0bC5oDQpAQCAtMzUsOSAr MzUsMTAgQEAgc3RydWN0IGtmZF9pb2N0bF9nZXRfdmVyc2lvbl9hcmdzIHsNCiB9Ow0KIA0KIC8q IEZvciBrZmRfaW9jdGxfY3JlYXRlX3F1ZXVlX2FyZ3MucXVldWVfdHlwZS4gKi8NCi0jZGVmaW5l IEtGRF9JT0NfUVVFVUVfVFlQRV9DT01QVVRFCTANCi0jZGVmaW5lIEtGRF9JT0NfUVVFVUVfVFlQ RV9TRE1BCQkxDQotI2RlZmluZSBLRkRfSU9DX1FVRVVFX1RZUEVfQ09NUFVURV9BUUwJMg0KKyNk ZWZpbmUgS0ZEX0lPQ19RVUVVRV9UWVBFX0NPTVBVVEUJCTB4MA0KKyNkZWZpbmUgS0ZEX0lPQ19R VUVVRV9UWVBFX1NETUEJCQkweDENCisjZGVmaW5lIEtGRF9JT0NfUVVFVUVfVFlQRV9DT01QVVRF X0FRTAkJMHgyDQorI2RlZmluZSBLRkRfSU9DX1FVRVVFX1RZUEVfU0RNQV9YR01JCQkweDMNCiAN CiAjZGVmaW5lIEtGRF9NQVhfUVVFVUVfUEVSQ0VOVEFHRQkxMDANCiAjZGVmaW5lIEtGRF9NQVhf UVVFVUVfUFJJT1JJVFkJCTE1DQotLSANCjIuMTcuMQ0KDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZng=