From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: [PATCH 19/24] drm/amd: Update MEC HQD loading code for KFD Date: Tue, 15 Aug 2017 23:00:17 -0400 Message-ID: <1502852422-19620-20-git-send-email-Felix.Kuehling@amd.com> References: <1502852422-19620-1-git-send-email-Felix.Kuehling@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1502852422-19620-1-git-send-email-Felix.Kuehling-5C7GfCeVMHo@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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, oded.gabbay-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: Felix Kuehling VmFyaW91cyBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cyB0aGF0IGFjY3VtdWxhdGVkIG92ZXIg dGhlIGxhc3QgdHdvCnllYXJzLgoKU2lnbmVkLW9mZi1ieTogRmVsaXggS3VlaGxpbmcgPEZlbGl4 Lkt1ZWhsaW5nQGFtZC5jb20+CkFja2VkLWJ5OiBPZGVkIEdhYmJheSA8b2RlZC5nYWJiYXlAZ21h aWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaCAg ICAgICAgIHwgIDE2ICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk X2dmeF92Ny5jICB8IDEzMCArKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jICB8IDE2NSArKysrKysrKysrKysrKysrKystLS0K IC4uLi9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgIHwgICA3 ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMgICAgICB8 ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmggICAg ICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl9j aWsuYyAgIHwgIDIzICstLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5h Z2VyX3ZpLmMgICAgfCAgMTYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2 LmggICAgICAgICAgICAgIHwgICA1IC0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2Rf a2ZkX2ludGVyZmFjZS5oICAgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9rZmQuYyAgICAgICAgICAgICAgICB8ICAxMiArLQogMTEgZmlsZXMgY2hhbmdlZCwgMzIyIGlu c2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmQuaAppbmRleCBiODgwMmE1Li44ZDY4OWFiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5l IEFNREdQVV9BTURLRkRfSF9JTkNMVURFRAogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNp bmNsdWRlIDxsaW51eC9tbXVfY29udGV4dC5oPgogI2luY2x1ZGUgPGtnZF9rZmRfaW50ZXJmYWNl Lmg+CiAKIHN0cnVjdCBhbWRncHVfZGV2aWNlOwpAQCAtNjAsNCArNjEsMTkgQEAgdWludDY0X3Qg Z2V0X2dwdV9jbG9ja19jb3VudGVyKHN0cnVjdCBrZ2RfZGV2ICprZ2QpOwogCiB1aW50MzJfdCBn ZXRfbWF4X2VuZ2luZV9jbG9ja19pbl9taHooc3RydWN0IGtnZF9kZXYgKmtnZCk7CiAKKyNkZWZp bmUgcmVhZF91c2VyX3dwdHIobW1wdHIsIHdwdHIsIGRzdCkJCQkJXAorCSh7CQkJCQkJCQlcCisJ CWJvb2wgdmFsaWQgPSBmYWxzZTsJCQkJCVwKKwkJaWYgKChtbXB0cikgJiYgKHdwdHIpKSB7CQkJ CVwKKwkJCWlmICgobW1wdHIpID09IGN1cnJlbnQtPm1tKSB7CQkJXAorCQkJCXZhbGlkID0gIWdl dF91c2VyKChkc3QpLCAod3B0cikpOwlcCisJCQl9IGVsc2UgaWYgKGN1cnJlbnQtPm1tID09IE5V TEwpIHsJCVwKKwkJCQl1c2VfbW0obW1wdHIpOwkJCQlcCisJCQkJdmFsaWQgPSAhZ2V0X3VzZXIo KGRzdCksICh3cHRyKSk7CVwKKwkJCQl1bnVzZV9tbShtbXB0cik7CQkJXAorCQkJfQkJCQkJCVwK KwkJfQkJCQkJCQlcCisJCXZhbGlkOwkJCQkJCQlcCisJfSkKKwogI2VuZGlmIC8qIEFNREdQVV9B TURLRkRfSF9JTkNMVURFRCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMKaW5kZXggZGNkOTBlOC4uZDE3MTliZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jCkBAIC0zOSw2 ICszOSwxMiBAQAogI2luY2x1ZGUgImdtYy9nbWNfN18xX3NoX21hc2suaCIKICNpbmNsdWRlICJj aWtfc3RydWN0cy5oIgogCitlbnVtIGhxZF9kZXF1ZXVlX3JlcXVlc3RfdHlwZSB7CisJTk9fQUNU SU9OID0gMCwKKwlEUkFJTl9QSVBFLAorCVJFU0VUX1dBVkVTCit9OworCiBlbnVtIHsKIAlNQVhf VFJBUElEID0gOCwJCS8qIDMgYml0cyBpbiB0aGUgYml0ZmllbGQuICovCiAJTUFYX1dBVENIX0FE RFJFU1NFUyA9IDQKQEAgLTk2LDEyICsxMDIsMTUgQEAgc3RhdGljIGludCBrZ2RfaW5pdF9waXBl bGluZShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCBwaXBlX2lkLAogCQkJCXVpbnQzMl90 IGhwZF9zaXplLCB1aW50NjRfdCBocGRfZ3B1X2FkZHIpOwogc3RhdGljIGludCBrZ2RfaW5pdF9p bnRlcnJ1cHRzKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQzMl90IHBpcGVfaWQpOwogc3RhdGlj IGludCBrZ2RfaHFkX2xvYWQoc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkLCB1aW50MzJf dCBwaXBlX2lkLAotCQkJdWludDMyX3QgcXVldWVfaWQsIHVpbnQzMl90IF9fdXNlciAqd3B0cik7 CisJCQl1aW50MzJfdCBxdWV1ZV9pZCwgdWludDMyX3QgX191c2VyICp3cHRyLAorCQkJdWludDMy X3Qgd3B0cl9zaGlmdCwgdWludDMyX3Qgd3B0cl9tYXNrLAorCQkJc3RydWN0IG1tX3N0cnVjdCAq bW0pOwogc3RhdGljIGludCBrZ2RfaHFkX3NkbWFfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2 b2lkICptcWQpOwogc3RhdGljIGJvb2wga2dkX2hxZF9pc19vY2N1cGllZChzdHJ1Y3Qga2dkX2Rl diAqa2dkLCB1aW50NjRfdCBxdWV1ZV9hZGRyZXNzLAogCQkJCXVpbnQzMl90IHBpcGVfaWQsIHVp bnQzMl90IHF1ZXVlX2lkKTsKIAotc3RhdGljIGludCBrZ2RfaHFkX2Rlc3Ryb3koc3RydWN0IGtn ZF9kZXYgKmtnZCwgdWludDMyX3QgcmVzZXRfdHlwZSwKK3N0YXRpYyBpbnQga2dkX2hxZF9kZXN0 cm95KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKKwkJCQllbnVtIGtmZF9wcmVlbXB0 X3R5cGUgcmVzZXRfdHlwZSwKIAkJCQl1bnNpZ25lZCBpbnQgdXRpbWVvdXQsIHVpbnQzMl90IHBp cGVfaWQsCiAJCQkJdWludDMyX3QgcXVldWVfaWQpOwogc3RhdGljIGJvb2wga2dkX2hxZF9zZG1h X2lzX29jY3VwaWVkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCk7CkBAIC0yOTAsMjAg KzI5OSwzOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjaWtfc2RtYV9ybGNfcmVnaXN0ZXJzICpn ZXRfc2RtYV9tcWQodm9pZCAqbXFkKQogfQogCiBzdGF0aWMgaW50IGtnZF9ocWRfbG9hZChzdHJ1 Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsIHVpbnQzMl90IHBpcGVfaWQsCi0JCQl1aW50MzJf dCBxdWV1ZV9pZCwgdWludDMyX3QgX191c2VyICp3cHRyKQorCQkJdWludDMyX3QgcXVldWVfaWQs IHVpbnQzMl90IF9fdXNlciAqd3B0ciwKKwkJCXVpbnQzMl90IHdwdHJfc2hpZnQsIHVpbnQzMl90 IHdwdHJfbWFzaywKKwkJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewogCXN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsKLQl1aW50MzJfdCB3cHRyX3No YWRvdywgaXNfd3B0cl9zaGFkb3dfdmFsaWQ7CiAJc3RydWN0IGNpa19tcWQgKm07CisJdWludDMy X3QgKm1xZF9ocWQ7CisJdWludDMyX3QgcmVnLCB3cHRyX3ZhbCwgZGF0YTsKIAogCW0gPSBnZXRf bXFkKG1xZCk7CiAKLQlpc193cHRyX3NoYWRvd192YWxpZCA9ICFnZXRfdXNlcih3cHRyX3NoYWRv dywgd3B0cik7Ci0JaWYgKGlzX3dwdHJfc2hhZG93X3ZhbGlkKQotCQltLT5jcF9ocWRfcHFfd3B0 ciA9IHdwdHJfc2hhZG93OwotCiAJYWNxdWlyZV9xdWV1ZShrZ2QsIHBpcGVfaWQsIHF1ZXVlX2lk KTsKLQlnZnhfdjdfMF9tcWRfY29tbWl0KGFkZXYsIG0pOworCisJLyogSFFEIHJlZ2lzdGVycyBl eHRlbmQgZnJvbSBDUF9NUURfQkFTRV9BRERSIHRvIENQX01RRF9DT05UUk9MLiAqLworCW1xZF9o cWQgPSAmbS0+Y3BfbXFkX2Jhc2VfYWRkcl9sbzsKKworCWZvciAocmVnID0gbW1DUF9NUURfQkFT RV9BRERSOyByZWcgPD0gbW1DUF9NUURfQ09OVFJPTDsgcmVnKyspCisJCVdSRUczMihyZWcsIG1x ZF9ocWRbcmVnIC0gbW1DUF9NUURfQkFTRV9BRERSXSk7CisKKwkvKiBDb3B5IHVzZXJzcGFjZSB3 cml0ZSBwb2ludGVyIHZhbHVlIHRvIHJlZ2lzdGVyLgorCSAqIEFjdGl2YXRlIGRvb3JiZWxsIGxv Z2ljIHRvIG1vbml0b3Igc3Vic2VxdWVudCBjaGFuZ2VzLgorCSAqLworCWRhdGEgPSBSRUdfU0VU X0ZJRUxEKG0tPmNwX2hxZF9wcV9kb29yYmVsbF9jb250cm9sLAorCQkJICAgICBDUF9IUURfUFFf RE9PUkJFTExfQ09OVFJPTCwgRE9PUkJFTExfRU4sIDEpOworCVdSRUczMihtbUNQX0hRRF9QUV9E T09SQkVMTF9DT05UUk9MLCBkYXRhKTsKKworCWlmIChyZWFkX3VzZXJfd3B0cihtbSwgd3B0ciwg d3B0cl92YWwpKQorCQlXUkVHMzIobW1DUF9IUURfUFFfV1BUUiwgKHdwdHJfdmFsIDw8IHdwdHJf c2hpZnQpICYgd3B0cl9tYXNrKTsKKworCWRhdGEgPSBSRUdfU0VUX0ZJRUxEKG0tPmNwX2hxZF9h Y3RpdmUsIENQX0hRRF9BQ1RJVkUsIEFDVElWRSwgMSk7CisJV1JFRzMyKG1tQ1BfSFFEX0FDVElW RSwgZGF0YSk7CisKIAlyZWxlYXNlX3F1ZXVlKGtnZCk7CiAKIAlyZXR1cm4gMDsKQEAgLTM4Miwz MCArNDA5LDk5IEBAIHN0YXRpYyBib29sIGtnZF9ocWRfc2RtYV9pc19vY2N1cGllZChzdHJ1Y3Qg a2dkX2RldiAqa2dkLCB2b2lkICptcWQpCiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW50 IGtnZF9ocWRfZGVzdHJveShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCByZXNldF90eXBl LAorc3RhdGljIGludCBrZ2RfaHFkX2Rlc3Ryb3koc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAq bXFkLAorCQkJCWVudW0ga2ZkX3ByZWVtcHRfdHlwZSByZXNldF90eXBlLAogCQkJCXVuc2lnbmVk IGludCB1dGltZW91dCwgdWludDMyX3QgcGlwZV9pZCwKIAkJCQl1aW50MzJfdCBxdWV1ZV9pZCkK IHsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGdldF9hbWRncHVfZGV2aWNlKGtnZCk7 CiAJdWludDMyX3QgdGVtcDsKLQlpbnQgdGltZW91dCA9IHV0aW1lb3V0OworCWVudW0gaHFkX2Rl cXVldWVfcmVxdWVzdF90eXBlIHR5cGU7CisJdW5zaWduZWQgbG9uZyBmbGFncywgZW5kX2ppZmZp ZXM7CisJaW50IHJldHJ5OwogCiAJYWNxdWlyZV9xdWV1ZShrZ2QsIHBpcGVfaWQsIHF1ZXVlX2lk KTsKIAlXUkVHMzIobW1DUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTCwgMCk7CiAKLQlXUkVHMzIo bW1DUF9IUURfREVRVUVVRV9SRVFVRVNULCByZXNldF90eXBlKTsKKwlzd2l0Y2ggKHJlc2V0X3R5 cGUpIHsKKwljYXNlIEtGRF9QUkVFTVBUX1RZUEVfV0FWRUZST05UX0RSQUlOOgorCQl0eXBlID0g RFJBSU5fUElQRTsKKwkJYnJlYWs7CisJY2FzZSBLRkRfUFJFRU1QVF9UWVBFX1dBVkVGUk9OVF9S RVNFVDoKKwkJdHlwZSA9IFJFU0VUX1dBVkVTOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl0eXBl ID0gRFJBSU5fUElQRTsKKwkJYnJlYWs7CisJfQogCisJLyogV29ya2Fyb3VuZDogSWYgSVEgdGlt ZXIgaXMgYWN0aXZlIGFuZCB0aGUgd2FpdCB0aW1lIGlzIGNsb3NlIHRvIG9yCisJICogZXF1YWwg dG8gMCwgZGVxdWV1ZWluZyBpcyBub3Qgc2FmZS4gV2FpdCB1bnRpbCBlaXRoZXIgdGhlIHdhaXQg dGltZQorCSAqIGlzIGxhcmdlciBvciB0aW1lciBpcyBjbGVhcmVkLiBBbHNvLCBlbnN1cmUgdGhh dCBJUV9SRVFfUEVORCBpcworCSAqIGNsZWFyZWQgYmVmb3JlIGNvbnRpbnVpbmcuIEFsc28sIGVu c3VyZSB3YWl0IHRpbWVzIGFyZSBzZXQgdG8gYXQKKwkgKiBsZWFzdCAweDMuCisJICovCisJbG9j YWxfaXJxX3NhdmUoZmxhZ3MpOworCXByZWVtcHRfZGlzYWJsZSgpOworCXJldHJ5ID0gNTAwMDsg Lyogd2FpdCBmb3IgNTAwIHVzZWNzIGF0IG1heGltdW0gKi8KKwl3aGlsZSAodHJ1ZSkgeworCQl0 ZW1wID0gUlJFRzMyKG1tQ1BfSFFEX0lRX1RJTUVSKTsKKwkJaWYgKFJFR19HRVRfRklFTEQodGVt cCwgQ1BfSFFEX0lRX1RJTUVSLCBQUk9DRVNTSU5HX0lRKSkgeworCQkJcHJfZGVidWcoIkhXIGlz IHByb2Nlc3NpbmcgSVFcbiIpOworCQkJZ290byBsb29wOworCQl9CisJCWlmIChSRUdfR0VUX0ZJ RUxEKHRlbXAsIENQX0hRRF9JUV9USU1FUiwgQUNUSVZFKSkgeworCQkJaWYgKFJFR19HRVRfRklF TEQodGVtcCwgQ1BfSFFEX0lRX1RJTUVSLCBSRVRSWV9UWVBFKQorCQkJCQk9PSAzKSAvKiBTRU0t cmVhcm0gaXMgc2FmZSAqLworCQkJCWJyZWFrOworCQkJLyogV2FpdCB0aW1lIDMgaXMgc2FmZSBm b3IgQ1AsIGJ1dCBvdXIgTU1JTyByZWFkL3dyaXRlCisJCQkgKiB0aW1lIGlzIGNsb3NlIHRvIDEg bWljcm9zZWNvbmQsIHNvIGNoZWNrIGZvciAxMCB0bworCQkJICogbGVhdmUgbW9yZSBidWZmZXIg cm9vbQorCQkJICovCisJCQlpZiAoUkVHX0dFVF9GSUVMRCh0ZW1wLCBDUF9IUURfSVFfVElNRVIs IFdBSVRfVElNRSkKKwkJCQkJPj0gMTApCisJCQkJYnJlYWs7CisJCQlwcl9kZWJ1ZygiSVEgdGlt ZXIgaXMgYWN0aXZlXG4iKTsKKwkJfSBlbHNlCisJCQlicmVhazsKK2xvb3A6CisJCWlmICghcmV0 cnkpIHsKKwkJCXByX2VycigiQ1AgSFFEIElRIHRpbWVyIHN0YXR1cyB0aW1lIG91dFxuIik7CisJ CQlicmVhazsKKwkJfQorCQluZGVsYXkoMTAwKTsKKwkJLS1yZXRyeTsKKwl9CisJcmV0cnkgPSAx MDAwOworCXdoaWxlICh0cnVlKSB7CisJCXRlbXAgPSBSUkVHMzIobW1DUF9IUURfREVRVUVVRV9S RVFVRVNUKTsKKwkJaWYgKCEodGVtcCAmIENQX0hRRF9ERVFVRVVFX1JFUVVFU1RfX0lRX1JFUV9Q RU5EX01BU0spKQorCQkJYnJlYWs7CisJCXByX2RlYnVnKCJEZXF1ZXVlIHJlcXVlc3QgaXMgcGVu ZGluZ1xuIik7CisKKwkJaWYgKCFyZXRyeSkgeworCQkJcHJfZXJyKCJDUCBIUUQgZGVxdWV1ZSBy ZXF1ZXN0IHRpbWUgb3V0XG4iKTsKKwkJCWJyZWFrOworCQl9CisJCW5kZWxheSgxMDApOworCQkt LXJldHJ5OworCX0KKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisJcHJlZW1wdF9lbmFibGUo KTsKKworCVdSRUczMihtbUNQX0hRRF9ERVFVRVVFX1JFUVVFU1QsIHR5cGUpOworCisJZW5kX2pp ZmZpZXMgPSAodXRpbWVvdXQgKiBIWiAvIDEwMDApICsgamlmZmllczsKIAl3aGlsZSAodHJ1ZSkg ewogCQl0ZW1wID0gUlJFRzMyKG1tQ1BfSFFEX0FDVElWRSk7Ci0JCWlmICh0ZW1wICYgQ1BfSFFE X0FDVElWRV9fQUNUSVZFX01BU0spCisJCWlmICghKHRlbXAgJiBDUF9IUURfQUNUSVZFX19BQ1RJ VkVfTUFTSykpCiAJCQlicmVhazsKLQkJaWYgKHRpbWVvdXQgPD0gMCkgewotCQkJcHJfZXJyKCJr ZmQ6IGNwIHF1ZXVlIHByZWVtcHRpb24gdGltZSBvdXQuXG4iKTsKKwkJaWYgKHRpbWVfYWZ0ZXIo amlmZmllcywgZW5kX2ppZmZpZXMpKSB7CisJCQlwcl9lcnIoImNwIHF1ZXVlIHByZWVtcHRpb24g dGltZSBvdXRcbiIpOwogCQkJcmVsZWFzZV9xdWV1ZShrZ2QpOwogCQkJcmV0dXJuIC1FVElNRTsK IAkJfQotCQltc2xlZXAoMjApOwotCQl0aW1lb3V0IC09IDIwOworCQl1c2xlZXBfcmFuZ2UoNTAw LCAxMDAwKTsKIAl9CiAKIAlyZWxlYXNlX3F1ZXVlKGtnZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjguYwppbmRleCAwZmNjZDMwLi4yOWE2 ZjVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk X2dmeF92OC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRf Z2Z4X3Y4LmMKQEAgLTM5LDYgKzM5LDEyIEBACiAjaW5jbHVkZSAidmlfc3RydWN0cy5oIgogI2lu Y2x1ZGUgInZpZC5oIgogCitlbnVtIGhxZF9kZXF1ZXVlX3JlcXVlc3RfdHlwZSB7CisJTk9fQUNU SU9OID0gMCwKKwlEUkFJTl9QSVBFLAorCVJFU0VUX1dBVkVTCit9OworCiBzdHJ1Y3QgY2lrX3Nk bWFfcmxjX3JlZ2lzdGVyczsKIAogLyoKQEAgLTU1LDEyICs2MSwxNSBAQCBzdGF0aWMgaW50IGtn ZF9pbml0X3BpcGVsaW5lKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQzMl90IHBpcGVfaWQsCiAJ CXVpbnQzMl90IGhwZF9zaXplLCB1aW50NjRfdCBocGRfZ3B1X2FkZHIpOwogc3RhdGljIGludCBr Z2RfaW5pdF9pbnRlcnJ1cHRzKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQzMl90IHBpcGVfaWQp Owogc3RhdGljIGludCBrZ2RfaHFkX2xvYWQoc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFk LCB1aW50MzJfdCBwaXBlX2lkLAotCQl1aW50MzJfdCBxdWV1ZV9pZCwgdWludDMyX3QgX191c2Vy ICp3cHRyKTsKKwkJCXVpbnQzMl90IHF1ZXVlX2lkLCB1aW50MzJfdCBfX3VzZXIgKndwdHIsCisJ CQl1aW50MzJfdCB3cHRyX3NoaWZ0LCB1aW50MzJfdCB3cHRyX21hc2ssCisJCQlzdHJ1Y3QgbW1f c3RydWN0ICptbSk7CiBzdGF0aWMgaW50IGtnZF9ocWRfc2RtYV9sb2FkKHN0cnVjdCBrZ2RfZGV2 ICprZ2QsIHZvaWQgKm1xZCk7CiBzdGF0aWMgYm9vbCBrZ2RfaHFkX2lzX29jY3VwaWVkKHN0cnVj dCBrZ2RfZGV2ICprZ2QsIHVpbnQ2NF90IHF1ZXVlX2FkZHJlc3MsCiAJCXVpbnQzMl90IHBpcGVf aWQsIHVpbnQzMl90IHF1ZXVlX2lkKTsKIHN0YXRpYyBib29sIGtnZF9ocWRfc2RtYV9pc19vY2N1 cGllZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQpOwotc3RhdGljIGludCBrZ2RfaHFk X2Rlc3Ryb3koc3RydWN0IGtnZF9kZXYgKmtnZCwgdWludDMyX3QgcmVzZXRfdHlwZSwKK3N0YXRp YyBpbnQga2dkX2hxZF9kZXN0cm95KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKKwkJ CQllbnVtIGtmZF9wcmVlbXB0X3R5cGUgcmVzZXRfdHlwZSwKIAkJCQl1bnNpZ25lZCBpbnQgdXRp bWVvdXQsIHVpbnQzMl90IHBpcGVfaWQsCiAJCQkJdWludDMyX3QgcXVldWVfaWQpOwogc3RhdGlj IGludCBrZ2RfaHFkX3NkbWFfZGVzdHJveShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQs CkBAIC0yNDQsMjAgKzI1Myw2NyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjaWtfc2RtYV9ybGNf cmVnaXN0ZXJzICpnZXRfc2RtYV9tcWQodm9pZCAqbXFkKQogfQogCiBzdGF0aWMgaW50IGtnZF9o cWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsIHVpbnQzMl90IHBpcGVfaWQs Ci0JCQl1aW50MzJfdCBxdWV1ZV9pZCwgdWludDMyX3QgX191c2VyICp3cHRyKQorCQkJdWludDMy X3QgcXVldWVfaWQsIHVpbnQzMl90IF9fdXNlciAqd3B0ciwKKwkJCXVpbnQzMl90IHdwdHJfc2hp ZnQsIHVpbnQzMl90IHdwdHJfbWFzaywKKwkJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewotCXN0 cnVjdCB2aV9tcWQgKm07Ci0JdWludDMyX3Qgc2hhZG93X3dwdHIsIHZhbGlkX3dwdHI7CiAJc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2QpOworCXN0cnVj dCB2aV9tcWQgKm07CisJdWludDMyX3QgKm1xZF9ocWQ7CisJdWludDMyX3QgcmVnLCB3cHRyX3Zh bCwgZGF0YTsKIAogCW0gPSBnZXRfbXFkKG1xZCk7CiAKLQl2YWxpZF93cHRyID0gY29weV9mcm9t X3VzZXIoJnNoYWRvd193cHRyLCB3cHRyLCBzaXplb2Yoc2hhZG93X3dwdHIpKTsKLQlpZiAodmFs aWRfd3B0ciA9PSAwKQotCQltLT5jcF9ocWRfcHFfd3B0ciA9IHNoYWRvd193cHRyOwotCiAJYWNx dWlyZV9xdWV1ZShrZ2QsIHBpcGVfaWQsIHF1ZXVlX2lkKTsKLQlnZnhfdjhfMF9tcWRfY29tbWl0 KGFkZXYsIG1xZCk7CisKKwkvKiBISVEgaXMgc2V0IGR1cmluZyBkcml2ZXIgaW5pdCBwZXJpb2Qg d2l0aCB2bWlkIHNldCB0byAwKi8KKwlpZiAobS0+Y3BfaHFkX3ZtaWQgPT0gMCkgeworCQl1aW50 MzJfdCB2YWx1ZSwgbWVjLCBwaXBlOworCisJCW1lYyA9IChwaXBlX2lkIC8gYWRldi0+Z2Z4Lm1l Yy5udW1fcGlwZV9wZXJfbWVjKSArIDE7CisJCXBpcGUgPSAocGlwZV9pZCAlIGFkZXYtPmdmeC5t ZWMubnVtX3BpcGVfcGVyX21lYyk7CisKKwkJcHJfZGVidWcoImtmZDogc2V0IEhJUSwgbWVjOiVk LCBwaXBlOiVkLCBxdWV1ZTolZC5cbiIsCisJCQltZWMsIHBpcGUsIHF1ZXVlX2lkKTsKKwkJdmFs dWUgPSBSUkVHMzIobW1STENfQ1BfU0NIRURVTEVSUyk7CisJCXZhbHVlID0gUkVHX1NFVF9GSUVM RCh2YWx1ZSwgUkxDX0NQX1NDSEVEVUxFUlMsIHNjaGVkdWxlcjEsCisJCQkoKG1lYyA8PCA1KSB8 IChwaXBlIDw8IDMpIHwgcXVldWVfaWQgfCAweDgwKSk7CisJCVdSRUczMihtbVJMQ19DUF9TQ0hF RFVMRVJTLCB2YWx1ZSk7CisJfQorCisJLyogSFFEIHJlZ2lzdGVycyBleHRlbmQgZnJvbSBDUF9N UURfQkFTRV9BRERSIHRvIENQX0hRRF9FT1BfV1BUUl9NRU0uICovCisJbXFkX2hxZCA9ICZtLT5j cF9tcWRfYmFzZV9hZGRyX2xvOworCisJZm9yIChyZWcgPSBtbUNQX01RRF9CQVNFX0FERFI7IHJl ZyA8PSBtbUNQX0hRRF9FT1BfQ09OVFJPTDsgcmVnKyspCisJCVdSRUczMihyZWcsIG1xZF9ocWRb cmVnIC0gbW1DUF9NUURfQkFTRV9BRERSXSk7CisKKwkvKiBUb25nYSBlcnJhdGE6IEVPUCBSUFRS L1dQVFIgc2hvdWxkIGJlIGxlZnQgdW5tb2RpZmllZC4KKwkgKiBUaGlzIGlzIHNhZmUgc2luY2Ug RU9QIFJQVFI9PVdQVFIgZm9yIGFueSBpbmFjdGl2ZSBIUUQKKwkgKiBvbiBBU0lDcyB0aGF0IGRv IG5vdCBzdXBwb3J0IGNvbnRleHQtc2F2ZS4KKwkgKiBFT1Agd3JpdGVzL3JlYWRzIGNhbiBzdGFy dCBhbnl3aGVyZSBpbiB0aGUgcmluZy4KKwkgKi8KKwlpZiAoZ2V0X2FtZGdwdV9kZXZpY2Uoa2dk KS0+YXNpY190eXBlICE9IENISVBfVE9OR0EpIHsKKwkJV1JFRzMyKG1tQ1BfSFFEX0VPUF9SUFRS LCBtLT5jcF9ocWRfZW9wX3JwdHIpOworCQlXUkVHMzIobW1DUF9IUURfRU9QX1dQVFIsIG0tPmNw X2hxZF9lb3Bfd3B0cik7CisJCVdSRUczMihtbUNQX0hRRF9FT1BfV1BUUl9NRU0sIG0tPmNwX2hx ZF9lb3Bfd3B0cl9tZW0pOworCX0KKworCWZvciAocmVnID0gbW1DUF9IUURfRU9QX0VWRU5UUzsg cmVnIDw9IG1tQ1BfSFFEX0VSUk9SOyByZWcrKykKKwkJV1JFRzMyKHJlZywgbXFkX2hxZFtyZWcg LSBtbUNQX01RRF9CQVNFX0FERFJdKTsKKworCS8qIENvcHkgdXNlcnNwYWNlIHdyaXRlIHBvaW50 ZXIgdmFsdWUgdG8gcmVnaXN0ZXIuCisJICogQWN0aXZhdGUgZG9vcmJlbGwgbG9naWMgdG8gbW9u aXRvciBzdWJzZXF1ZW50IGNoYW5nZXMuCisJICovCisJZGF0YSA9IFJFR19TRVRfRklFTEQobS0+ Y3BfaHFkX3BxX2Rvb3JiZWxsX2NvbnRyb2wsCisJCQkgICAgIENQX0hRRF9QUV9ET09SQkVMTF9D T05UUk9MLCBET09SQkVMTF9FTiwgMSk7CisJV1JFRzMyKG1tQ1BfSFFEX1BRX0RPT1JCRUxMX0NP TlRST0wsIGRhdGEpOworCisJaWYgKHJlYWRfdXNlcl93cHRyKG1tLCB3cHRyLCB3cHRyX3ZhbCkp CisJCVdSRUczMihtbUNQX0hRRF9QUV9XUFRSLCAod3B0cl92YWwgPDwgd3B0cl9zaGlmdCkgJiB3 cHRyX21hc2spOworCisJZGF0YSA9IFJFR19TRVRfRklFTEQobS0+Y3BfaHFkX2FjdGl2ZSwgQ1Bf SFFEX0FDVElWRSwgQUNUSVZFLCAxKTsKKwlXUkVHMzIobW1DUF9IUURfQUNUSVZFLCBkYXRhKTsK KwogCXJlbGVhc2VfcXVldWUoa2dkKTsKIAogCXJldHVybiAwOwpAQCAtMzA4LDI5ICszNjQsMTAy IEBAIHN0YXRpYyBib29sIGtnZF9ocWRfc2RtYV9pc19vY2N1cGllZChzdHJ1Y3Qga2dkX2RldiAq a2dkLCB2b2lkICptcWQpCiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW50IGtnZF9ocWRf ZGVzdHJveShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCByZXNldF90eXBlLAorc3RhdGlj IGludCBrZ2RfaHFkX2Rlc3Ryb3koc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkLAorCQkJ CWVudW0ga2ZkX3ByZWVtcHRfdHlwZSByZXNldF90eXBlLAogCQkJCXVuc2lnbmVkIGludCB1dGlt ZW91dCwgdWludDMyX3QgcGlwZV9pZCwKIAkJCQl1aW50MzJfdCBxdWV1ZV9pZCkKIHsKIAlzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGdldF9hbWRncHVfZGV2aWNlKGtnZCk7CiAJdWludDMy X3QgdGVtcDsKLQlpbnQgdGltZW91dCA9IHV0aW1lb3V0OworCWVudW0gaHFkX2RlcXVldWVfcmVx dWVzdF90eXBlIHR5cGU7CisJdW5zaWduZWQgbG9uZyBmbGFncywgZW5kX2ppZmZpZXM7CisJaW50 IHJldHJ5OworCXN0cnVjdCB2aV9tcWQgKm0gPSBnZXRfbXFkKG1xZCk7CiAKIAlhY3F1aXJlX3F1 ZXVlKGtnZCwgcGlwZV9pZCwgcXVldWVfaWQpOwogCi0JV1JFRzMyKG1tQ1BfSFFEX0RFUVVFVUVf UkVRVUVTVCwgcmVzZXRfdHlwZSk7CisJaWYgKG0tPmNwX2hxZF92bWlkID09IDApCisJCVdSRUcz Ml9GSUVMRChSTENfQ1BfU0NIRURVTEVSUywgc2NoZWR1bGVyMSwgMCk7CisKKwlzd2l0Y2ggKHJl c2V0X3R5cGUpIHsKKwljYXNlIEtGRF9QUkVFTVBUX1RZUEVfV0FWRUZST05UX0RSQUlOOgorCQl0 eXBlID0gRFJBSU5fUElQRTsKKwkJYnJlYWs7CisJY2FzZSBLRkRfUFJFRU1QVF9UWVBFX1dBVkVG Uk9OVF9SRVNFVDoKKwkJdHlwZSA9IFJFU0VUX1dBVkVTOworCQlicmVhazsKKwlkZWZhdWx0Ogor CQl0eXBlID0gRFJBSU5fUElQRTsKKwkJYnJlYWs7CisJfQorCisJLyogV29ya2Fyb3VuZDogSWYg SVEgdGltZXIgaXMgYWN0aXZlIGFuZCB0aGUgd2FpdCB0aW1lIGlzIGNsb3NlIHRvIG9yCisJICog ZXF1YWwgdG8gMCwgZGVxdWV1ZWluZyBpcyBub3Qgc2FmZS4gV2FpdCB1bnRpbCBlaXRoZXIgdGhl IHdhaXQgdGltZQorCSAqIGlzIGxhcmdlciBvciB0aW1lciBpcyBjbGVhcmVkLiBBbHNvLCBlbnN1 cmUgdGhhdCBJUV9SRVFfUEVORCBpcworCSAqIGNsZWFyZWQgYmVmb3JlIGNvbnRpbnVpbmcuIEFs c28sIGVuc3VyZSB3YWl0IHRpbWVzIGFyZSBzZXQgdG8gYXQKKwkgKiBsZWFzdCAweDMuCisJICov CisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCXByZWVtcHRfZGlzYWJsZSgpOworCXJldHJ5ID0g NTAwMDsgLyogd2FpdCBmb3IgNTAwIHVzZWNzIGF0IG1heGltdW0gKi8KKwl3aGlsZSAodHJ1ZSkg eworCQl0ZW1wID0gUlJFRzMyKG1tQ1BfSFFEX0lRX1RJTUVSKTsKKwkJaWYgKFJFR19HRVRfRklF TEQodGVtcCwgQ1BfSFFEX0lRX1RJTUVSLCBQUk9DRVNTSU5HX0lRKSkgeworCQkJcHJfZGVidWco IkhXIGlzIHByb2Nlc3NpbmcgSVFcbiIpOworCQkJZ290byBsb29wOworCQl9CisJCWlmIChSRUdf R0VUX0ZJRUxEKHRlbXAsIENQX0hRRF9JUV9USU1FUiwgQUNUSVZFKSkgeworCQkJaWYgKFJFR19H RVRfRklFTEQodGVtcCwgQ1BfSFFEX0lRX1RJTUVSLCBSRVRSWV9UWVBFKQorCQkJCQk9PSAzKSAv KiBTRU0tcmVhcm0gaXMgc2FmZSAqLworCQkJCWJyZWFrOworCQkJLyogV2FpdCB0aW1lIDMgaXMg c2FmZSBmb3IgQ1AsIGJ1dCBvdXIgTU1JTyByZWFkL3dyaXRlCisJCQkgKiB0aW1lIGlzIGNsb3Nl IHRvIDEgbWljcm9zZWNvbmQsIHNvIGNoZWNrIGZvciAxMCB0bworCQkJICogbGVhdmUgbW9yZSBi dWZmZXIgcm9vbQorCQkJICovCisJCQlpZiAoUkVHX0dFVF9GSUVMRCh0ZW1wLCBDUF9IUURfSVFf VElNRVIsIFdBSVRfVElNRSkKKwkJCQkJPj0gMTApCisJCQkJYnJlYWs7CisJCQlwcl9kZWJ1Zygi SVEgdGltZXIgaXMgYWN0aXZlXG4iKTsKKwkJfSBlbHNlCisJCQlicmVhazsKK2xvb3A6CisJCWlm ICghcmV0cnkpIHsKKwkJCXByX2VycigiQ1AgSFFEIElRIHRpbWVyIHN0YXR1cyB0aW1lIG91dFxu Iik7CisJCQlicmVhazsKKwkJfQorCQluZGVsYXkoMTAwKTsKKwkJLS1yZXRyeTsKKwl9CisJcmV0 cnkgPSAxMDAwOworCXdoaWxlICh0cnVlKSB7CisJCXRlbXAgPSBSUkVHMzIobW1DUF9IUURfREVR VUVVRV9SRVFVRVNUKTsKKwkJaWYgKCEodGVtcCAmIENQX0hRRF9ERVFVRVVFX1JFUVVFU1RfX0lR X1JFUV9QRU5EX01BU0spKQorCQkJYnJlYWs7CisJCXByX2RlYnVnKCJEZXF1ZXVlIHJlcXVlc3Qg aXMgcGVuZGluZ1xuIik7CiAKKwkJaWYgKCFyZXRyeSkgeworCQkJcHJfZXJyKCJDUCBIUUQgZGVx dWV1ZSByZXF1ZXN0IHRpbWUgb3V0XG4iKTsKKwkJCWJyZWFrOworCQl9CisJCW5kZWxheSgxMDAp OworCQktLXJldHJ5OworCX0KKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisJcHJlZW1wdF9l bmFibGUoKTsKKworCVdSRUczMihtbUNQX0hRRF9ERVFVRVVFX1JFUVVFU1QsIHR5cGUpOworCisJ ZW5kX2ppZmZpZXMgPSAodXRpbWVvdXQgKiBIWiAvIDEwMDApICsgamlmZmllczsKIAl3aGlsZSAo dHJ1ZSkgewogCQl0ZW1wID0gUlJFRzMyKG1tQ1BfSFFEX0FDVElWRSk7Ci0JCWlmICh0ZW1wICYg Q1BfSFFEX0FDVElWRV9fQUNUSVZFX01BU0spCisJCWlmICghKHRlbXAgJiBDUF9IUURfQUNUSVZF X19BQ1RJVkVfTUFTSykpCiAJCQlicmVhazsKLQkJaWYgKHRpbWVvdXQgPD0gMCkgewotCQkJcHJf ZXJyKCJrZmQ6IGNwIHF1ZXVlIHByZWVtcHRpb24gdGltZSBvdXQuXG4iKTsKKwkJaWYgKHRpbWVf YWZ0ZXIoamlmZmllcywgZW5kX2ppZmZpZXMpKSB7CisJCQlwcl9lcnIoImNwIHF1ZXVlIHByZWVt cHRpb24gdGltZSBvdXQuXG4iKTsKIAkJCXJlbGVhc2VfcXVldWUoa2dkKTsKIAkJCXJldHVybiAt RVRJTUU7CiAJCX0KLQkJbXNsZWVwKDIwKTsKLQkJdGltZW91dCAtPSAyMDsKKwkJdXNsZWVwX3Jh bmdlKDUwMCwgMTAwMCk7CiAJfQogCiAJcmVsZWFzZV9xdWV1ZShrZ2QpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYwppbmRl eCBlNTUzYzVlLi42MThhYzY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYwpAQCAtMjcwLDggKzI3MCw4IEBAIHN0YXRp YyBpbnQgY3JlYXRlX2NvbXB1dGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21h bmFnZXIgKmRxbSwKIAlwcl9kZWJ1ZygiTG9hZGluZyBtcWQgdG8gaHFkIG9uIHBpcGUgJWQsIHF1 ZXVlICVkXG4iLAogCQkJcS0+cGlwZSwgcS0+cXVldWUpOwogCi0JcmV0dmFsID0gbXFkLT5sb2Fk X21xZChtcWQsIHEtPm1xZCwgcS0+cGlwZSwKLQkJCXEtPnF1ZXVlLCAodWludDMyX3QgX191c2Vy ICopIHEtPnByb3BlcnRpZXMud3JpdGVfcHRyKTsKKwlyZXR2YWwgPSBtcWQtPmxvYWRfbXFkKG1x ZCwgcS0+bXFkLCBxLT5waXBlLCBxLT5xdWV1ZSwgJnEtPnByb3BlcnRpZXMsCisJCQkgICAgICAg cS0+cHJvY2Vzcy0+bW0pOwogCWlmIChyZXR2YWwpCiAJCWdvdG8gb3V0X3VuaW5pdF9tcWQ7CiAK QEAgLTU4Nyw4ICs1ODcsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9zZG1hX3F1ZXVlX25vY3BzY2go c3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCiAJaWYgKHJldHZhbCkKIAkJZ290byBv dXRfZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlOwogCi0JcmV0dmFsID0gbXFkLT5sb2FkX21xZChtcWQs IHEtPm1xZCwgMCwKLQkJCQkwLCBOVUxMKTsKKwlyZXR2YWwgPSBtcWQtPmxvYWRfbXFkKG1xZCwg cS0+bXFkLCAwLCAwLCAmcS0+cHJvcGVydGllcywgTlVMTCk7CiAJaWYgKHJldHZhbCkKIAkJZ290 byBvdXRfdW5pbml0X21xZDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2tlcm5lbF9xdWV1ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tl cm5lbF9xdWV1ZS5jCmluZGV4IDBlNGQ0YTkuLjY4MWI2MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxfcXVldWUuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMKQEAgLTE0Myw3ICsxNDMsOCBAQCBzdGF0 aWMgYm9vbCBpbml0aWFsaXplKHN0cnVjdCBrZXJuZWxfcXVldWUgKmtxLCBzdHJ1Y3Qga2ZkX2Rl diAqZGV2LAogCQlrcS0+cXVldWUtPnBpcGUgPSBLRkRfQ0lLX0hJUV9QSVBFOwogCQlrcS0+cXVl dWUtPnF1ZXVlID0gS0ZEX0NJS19ISVFfUVVFVUU7CiAJCWtxLT5tcWQtPmxvYWRfbXFkKGtxLT5t cWQsIGtxLT5xdWV1ZS0+bXFkLCBrcS0+cXVldWUtPnBpcGUsCi0JCQkJCWtxLT5xdWV1ZS0+cXVl dWUsIE5VTEwpOworCQkJCSAga3EtPnF1ZXVlLT5xdWV1ZSwgJmtxLT5xdWV1ZS0+cHJvcGVydGll cywKKwkJCQkgIE5VTEwpOwogCX0gZWxzZSB7CiAJCS8qIGFsbG9jYXRlIGZlbmNlIGZvciBESVEg Ki8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5h Z2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIuaAppbmRl eCAyMTNhNzFlLi4xZjNhNmJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfbXFkX21hbmFnZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf bXFkX21hbmFnZXIuaApAQCAtNjcsNyArNjcsOCBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgewogCiAJ aW50CSgqbG9hZF9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwKIAkJCQl1 aW50MzJfdCBwaXBlX2lkLCB1aW50MzJfdCBxdWV1ZV9pZCwKLQkJCQl1aW50MzJfdCBfX3VzZXIg KndwdHIpOworCQkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpwLAorCQkJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tcyk7CiAKIAlpbnQJKCp1cGRhdGVfbXFkKShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1t LCB2b2lkICptcWQsCiAJCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jCmluZGV4IDdlMGVj NmIuLjQ0ZmZkMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9t cWRfbWFuYWdlcl9jaWsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFk X21hbmFnZXJfY2lrLmMKQEAgLTE0NCwxNSArMTQ0LDIxIEBAIHN0YXRpYyB2b2lkIHVuaW5pdF9t cWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsCiB9CiAKIHN0YXRpYyBp bnQgbG9hZF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLCB1aW50MzJfdCBw aXBlX2lkLAotCQkJdWludDMyX3QgcXVldWVfaWQsIHVpbnQzMl90IF9fdXNlciAqd3B0cikKKwkJ ICAgIHVpbnQzMl90IHF1ZXVlX2lkLCBzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcCwKKwkJICAg IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tcykKIHsKLQlyZXR1cm4gbW0tPmRldi0+a2ZkMmtnZC0+aHFk X2xvYWQKLQkJKG1tLT5kZXYtPmtnZCwgbXFkLCBwaXBlX2lkLCBxdWV1ZV9pZCwgd3B0cik7CisJ LyogQVFMIHdyaXRlIHBvaW50ZXIgY291bnRzIGluIDY0QiBwYWNrZXRzLCBQTTQvQ1AgY291bnRz IGluIGR3b3Jkcy4gKi8KKwl1aW50MzJfdCB3cHRyX3NoaWZ0ID0gKHAtPmZvcm1hdCA9PSBLRkRf UVVFVUVfRk9STUFUX0FRTCA/IDQgOiAwKTsKKwl1aW50MzJfdCB3cHRyX21hc2sgPSAodWludDMy X3QpKChwLT5xdWV1ZV9zaXplIC8gc2l6ZW9mKHVpbnQzMl90KSkgLSAxKTsKKworCXJldHVybiBt bS0+ZGV2LT5rZmQya2dkLT5ocWRfbG9hZChtbS0+ZGV2LT5rZ2QsIG1xZCwgcGlwZV9pZCwgcXVl dWVfaWQsCisJCQkJCSAgKHVpbnQzMl90IF9fdXNlciAqKXAtPndyaXRlX3B0ciwKKwkJCQkJICB3 cHRyX3NoaWZ0LCB3cHRyX21hc2ssIG1tcyk7CiB9CiAKIHN0YXRpYyBpbnQgbG9hZF9tcWRfc2Rt YShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsCi0JCQl1aW50MzJfdCBwaXBlX2lk LCB1aW50MzJfdCBxdWV1ZV9pZCwKLQkJCXVpbnQzMl90IF9fdXNlciAqd3B0cikKKwkJCSB1aW50 MzJfdCBwaXBlX2lkLCB1aW50MzJfdCBxdWV1ZV9pZCwKKwkJCSBzdHJ1Y3QgcXVldWVfcHJvcGVy dGllcyAqcCwgc3RydWN0IG1tX3N0cnVjdCAqbW1zKQogewogCXJldHVybiBtbS0+ZGV2LT5rZmQy a2dkLT5ocWRfc2RtYV9sb2FkKG1tLT5kZXYtPmtnZCwgbXFkKTsKIH0KQEAgLTE3NiwyMCArMTgy LDE3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lk ICptcWQsCiAJbS0+Y3BfaHFkX3BxX2Jhc2VfaGkgPSB1cHBlcl8zMl9iaXRzKCh1aW50NjRfdClx LT5xdWV1ZV9hZGRyZXNzID4+IDgpOwogCW0tPmNwX2hxZF9wcV9ycHRyX3JlcG9ydF9hZGRyX2xv ID0gbG93ZXJfMzJfYml0cygodWludDY0X3QpcS0+cmVhZF9wdHIpOwogCW0tPmNwX2hxZF9wcV9y cHRyX3JlcG9ydF9hZGRyX2hpID0gdXBwZXJfMzJfYml0cygodWludDY0X3QpcS0+cmVhZF9wdHIp OwotCW0tPmNwX2hxZF9wcV9kb29yYmVsbF9jb250cm9sID0gRE9PUkJFTExfRU4gfAotCQkJCQlE T09SQkVMTF9PRkZTRVQocS0+ZG9vcmJlbGxfb2ZmKTsKKwltLT5jcF9ocWRfcHFfZG9vcmJlbGxf Y29udHJvbCA9IERPT1JCRUxMX09GRlNFVChxLT5kb29yYmVsbF9vZmYpOwogCiAJbS0+Y3BfaHFk X3ZtaWQgPSBxLT52bWlkOwogCiAJaWYgKHEtPmZvcm1hdCA9PSBLRkRfUVVFVUVfRk9STUFUX0FR TCkKIAkJbS0+Y3BfaHFkX3BxX2NvbnRyb2wgfD0gTk9fVVBEQVRFX1JQVFI7CiAKLQltLT5jcF9o cWRfYWN0aXZlID0gMDsKIAlxLT5pc19hY3RpdmUgPSBmYWxzZTsKIAlpZiAocS0+cXVldWVfc2l6 ZSA+IDAgJiYKIAkJCXEtPnF1ZXVlX2FkZHJlc3MgIT0gMCAmJgogCQkJcS0+cXVldWVfcGVyY2Vu dCA+IDApIHsKLQkJbS0+Y3BfaHFkX2FjdGl2ZSA9IDE7CiAJCXEtPmlzX2FjdGl2ZSA9IHRydWU7 CiAJfQogCkBAIC0yMzksNyArMjQyLDcgQEAgc3RhdGljIGludCBkZXN0cm95X21xZChzdHJ1Y3Qg bXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsCiAJCQl1bnNpZ25lZCBpbnQgdGltZW91dCwgdWlu dDMyX3QgcGlwZV9pZCwKIAkJCXVpbnQzMl90IHF1ZXVlX2lkKQogewotCXJldHVybiBtbS0+ZGV2 LT5rZmQya2dkLT5ocWRfZGVzdHJveShtbS0+ZGV2LT5rZ2QsIHR5cGUsIHRpbWVvdXQsCisJcmV0 dXJuIG1tLT5kZXYtPmtmZDJrZ2QtPmhxZF9kZXN0cm95KG1tLT5kZXYtPmtnZCwgbXFkLCB0eXBl LCB0aW1lb3V0LAogCQkJCQlwaXBlX2lkLCBxdWV1ZV9pZCk7CiB9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3ZpLmMKaW5kZXggOThhOTMwZS4uNzNj YmZlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5h Z2VyX3ZpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2Vy X3ZpLmMKQEAgLTk0LDEwICs5NCwxNSBAQCBzdGF0aWMgaW50IGluaXRfbXFkKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKiptcWQsCiAKIHN0YXRpYyBpbnQgbG9hZF9tcWQoc3RydWN0IG1x ZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLAogCQkJdWludDMyX3QgcGlwZV9pZCwgdWludDMyX3Qg cXVldWVfaWQsCi0JCQl1aW50MzJfdCBfX3VzZXIgKndwdHIpCisJCQlzdHJ1Y3QgcXVldWVfcHJv cGVydGllcyAqcCwgc3RydWN0IG1tX3N0cnVjdCAqbW1zKQogewotCXJldHVybiBtbS0+ZGV2LT5r ZmQya2dkLT5ocWRfbG9hZAotCQkobW0tPmRldi0+a2dkLCBtcWQsIHBpcGVfaWQsIHF1ZXVlX2lk LCB3cHRyKTsKKwkvKiBBUUwgd3JpdGUgcG9pbnRlciBjb3VudHMgaW4gNjRCIHBhY2tldHMsIFBN NC9DUCBjb3VudHMgaW4gZHdvcmRzLiAqLworCXVpbnQzMl90IHdwdHJfc2hpZnQgPSAocC0+Zm9y bWF0ID09IEtGRF9RVUVVRV9GT1JNQVRfQVFMID8gNCA6IDApOworCXVpbnQzMl90IHdwdHJfbWFz ayA9ICh1aW50MzJfdCkoKHAtPnF1ZXVlX3NpemUgLyBzaXplb2YodWludDMyX3QpKSAtIDEpOwor CisJcmV0dXJuIG1tLT5kZXYtPmtmZDJrZ2QtPmhxZF9sb2FkKG1tLT5kZXYtPmtnZCwgbXFkLCBw aXBlX2lkLCBxdWV1ZV9pZCwKKwkJCQkJICAodWludDMyX3QgX191c2VyICopcC0+d3JpdGVfcHRy LAorCQkJCQkgIHdwdHJfc2hpZnQsIHdwdHJfbWFzaywgbW1zKTsKIH0KIAogc3RhdGljIGludCBf X3VwZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLApAQCAtMTIyLDcg KzEyNyw2IEBAIHN0YXRpYyBpbnQgX191cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0s IHZvaWQgKm1xZCwKIAltLT5jcF9ocWRfcHFfcnB0cl9yZXBvcnRfYWRkcl9oaSA9IHVwcGVyXzMy X2JpdHMoKHVpbnQ2NF90KXEtPnJlYWRfcHRyKTsKIAogCW0tPmNwX2hxZF9wcV9kb29yYmVsbF9j b250cm9sID0KLQkJMSA8PCBDUF9IUURfUFFfRE9PUkJFTExfQ09OVFJPTF9fRE9PUkJFTExfRU5f X1NISUZUIHwKIAkJcS0+ZG9vcmJlbGxfb2ZmIDw8CiAJCQlDUF9IUURfUFFfRE9PUkJFTExfQ09O VFJPTF9fRE9PUkJFTExfT0ZGU0VUX19TSElGVDsKIAlwcl9kZWJ1ZygiY3BfaHFkX3BxX2Rvb3Ji ZWxsX2NvbnRyb2wgMHgleFxuIiwKQEAgLTE1OSwxMiArMTYzLDEwIEBAIHN0YXRpYyBpbnQgX191 cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwKIAkJCQkyIDw8IENQ X0hRRF9QUV9DT05UUk9MX19TTE9UX0JBU0VEX1dQVFJfX1NISUZUOwogCX0KIAotCW0tPmNwX2hx ZF9hY3RpdmUgPSAwOwogCXEtPmlzX2FjdGl2ZSA9IGZhbHNlOwogCWlmIChxLT5xdWV1ZV9zaXpl ID4gMCAmJgogCQkJcS0+cXVldWVfYWRkcmVzcyAhPSAwICYmCiAJCQlxLT5xdWV1ZV9wZXJjZW50 ID4gMCkgewotCQltLT5jcF9ocWRfYWN0aXZlID0gMTsKIAkJcS0+aXNfYWN0aXZlID0gdHJ1ZTsK IAl9CiAKQEAgLTE4NCw3ICsxODYsNyBAQCBzdGF0aWMgaW50IGRlc3Ryb3lfbXFkKHN0cnVjdCBt cWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwKIAkJCXVpbnQzMl90IHF1ZXVlX2lkKQogewogCXJl dHVybiBtbS0+ZGV2LT5rZmQya2dkLT5ocWRfZGVzdHJveQotCQkobW0tPmRldi0+a2dkLCB0eXBl LCB0aW1lb3V0LAorCQkobW0tPmRldi0+a2dkLCBtcWQsIHR5cGUsIHRpbWVvdXQsCiAJCXBpcGVf aWQsIHF1ZXVlX2lkKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX3ByaXYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKaW5k ZXggZjBkNTVjYzAuLjMwY2U5MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9wcml2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYu aApAQCAtMjM5LDExICsyMzksNiBAQCBlbnVtIGtmZF9wcmVlbXB0X3R5cGVfZmlsdGVyIHsKIAlL RkRfUFJFRU1QVF9UWVBFX0ZJTFRFUl9CWV9QQVNJRAogfTsKIAotZW51bSBrZmRfcHJlZW1wdF90 eXBlIHsKLQlLRkRfUFJFRU1QVF9UWVBFX1dBVkVGUk9OVCwKLQlLRkRfUFJFRU1QVF9UWVBFX1dB VkVGUk9OVF9SRVNFVAotfTsKLQogLyoqCiAgKiBlbnVtIGtmZF9xdWV1ZV90eXBlCiAgKgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9rZmRfaW50ZXJmYWNlLmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX2tmZF9pbnRlcmZhY2UuaAppbmRleCAz NmYzNzY2Li5mZmFmZGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUv a2dkX2tmZF9pbnRlcmZhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dk X2tmZF9pbnRlcmZhY2UuaApAQCAtNDEsNiArNDEsMTEgQEAgc3RydWN0IGtnZF9kZXY7CiAKIHN0 cnVjdCBrZ2RfbWVtOwogCitlbnVtIGtmZF9wcmVlbXB0X3R5cGUgeworCUtGRF9QUkVFTVBUX1RZ UEVfV0FWRUZST05UX0RSQUlOID0gMCwKKwlLRkRfUFJFRU1QVF9UWVBFX1dBVkVGUk9OVF9SRVNF VCwKK307CisKIGVudW0ga2dkX21lbW9yeV9wb29sIHsKIAlLR0RfUE9PTF9TWVNURU1fQ0FDSEVB QkxFID0gMSwKIAlLR0RfUE9PTF9TWVNURU1fV1JJVEVDT01CSU5FID0gMiwKQEAgLTE1MywxNCAr MTU4LDE2IEBAIHN0cnVjdCBrZmQya2dkX2NhbGxzIHsKIAlpbnQgKCppbml0X2ludGVycnVwdHMp KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQzMl90IHBpcGVfaWQpOwogCiAJaW50ICgqaHFkX2xv YWQpKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwgdWludDMyX3QgcGlwZV9pZCwKLQkJ CXVpbnQzMl90IHF1ZXVlX2lkLCB1aW50MzJfdCBfX3VzZXIgKndwdHIpOworCQkJdWludDMyX3Qg cXVldWVfaWQsIHVpbnQzMl90IF9fdXNlciAqd3B0ciwKKwkJCXVpbnQzMl90IHdwdHJfc2hpZnQs IHVpbnQzMl90IHdwdHJfbWFzaywKKwkJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKIAogCWludCAo KmhxZF9zZG1hX2xvYWQpKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCk7CiAKIAlib29s ICgqaHFkX2lzX29jY3VwaWVkKShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50NjRfdCBxdWV1ZV9h ZGRyZXNzLAogCQkJCXVpbnQzMl90IHBpcGVfaWQsIHVpbnQzMl90IHF1ZXVlX2lkKTsKIAotCWlu dCAoKmhxZF9kZXN0cm95KShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCByZXNldF90eXBl LAorCWludCAoKmhxZF9kZXN0cm95KShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsIHVp bnQzMl90IHJlc2V0X3R5cGUsCiAJCQkJdW5zaWduZWQgaW50IHRpbWVvdXQsIHVpbnQzMl90IHBp cGVfaWQsCiAJCQkJdWludDMyX3QgcXVldWVfaWQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9rZmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2tmZC5jCmluZGV4IGNhYjZjMDMuLmY2NTc4YzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX2tmZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2tmZC5jCkBAIC03NSwxMiArNzUsMTQgQEAgc3RhdGljIGludCBrZ2RfaW5pdF9waXBlbGluZShz dHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCBwaXBlX2lkLAogCQkJCXVpbnQzMl90IGhwZF9z aXplLCB1aW50NjRfdCBocGRfZ3B1X2FkZHIpOwogc3RhdGljIGludCBrZ2RfaW5pdF9pbnRlcnJ1 cHRzKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQzMl90IHBpcGVfaWQpOwogc3RhdGljIGludCBr Z2RfaHFkX2xvYWQoc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkLCB1aW50MzJfdCBwaXBl X2lkLAotCQkJdWludDMyX3QgcXVldWVfaWQsIHVpbnQzMl90IF9fdXNlciAqd3B0cik7CisJCQl1 aW50MzJfdCBxdWV1ZV9pZCwgdWludDMyX3QgX191c2VyICp3cHRyLAorCQkJdWludDMyX3Qgd3B0 cl9zaGlmdCwgdWludDMyX3Qgd3B0cl9tYXNrLAorCQkJc3RydWN0IG1tX3N0cnVjdCAqbW0pOwog c3RhdGljIGludCBrZ2RfaHFkX3NkbWFfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICpt cWQpOwogc3RhdGljIGJvb2wga2dkX2hxZF9pc19vY2N1cGllZChzdHJ1Y3Qga2dkX2RldiAqa2dk LCB1aW50NjRfdCBxdWV1ZV9hZGRyZXNzLAogCQkJCXVpbnQzMl90IHBpcGVfaWQsIHVpbnQzMl90 IHF1ZXVlX2lkKTsKIAotc3RhdGljIGludCBrZ2RfaHFkX2Rlc3Ryb3koc3RydWN0IGtnZF9kZXYg KmtnZCwgdWludDMyX3QgcmVzZXRfdHlwZSwKK3N0YXRpYyBpbnQga2dkX2hxZF9kZXN0cm95KHN0 cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwgdWludDMyX3QgcmVzZXRfdHlwZSwKIAkJCQl1 bnNpZ25lZCBpbnQgdGltZW91dCwgdWludDMyX3QgcGlwZV9pZCwKIAkJCQl1aW50MzJfdCBxdWV1 ZV9pZCk7CiBzdGF0aWMgYm9vbCBrZ2RfaHFkX3NkbWFfaXNfb2NjdXBpZWQoc3RydWN0IGtnZF9k ZXYgKmtnZCwgdm9pZCAqbXFkKTsKQEAgLTQ4Miw3ICs0ODQsOSBAQCBzdGF0aWMgaW5saW5lIHN0 cnVjdCBjaWtfc2RtYV9ybGNfcmVnaXN0ZXJzICpnZXRfc2RtYV9tcWQodm9pZCAqbXFkKQogfQog CiBzdGF0aWMgaW50IGtnZF9ocWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQs IHVpbnQzMl90IHBpcGVfaWQsCi0JCQl1aW50MzJfdCBxdWV1ZV9pZCwgdWludDMyX3QgX191c2Vy ICp3cHRyKQorCQkJdWludDMyX3QgcXVldWVfaWQsIHVpbnQzMl90IF9fdXNlciAqd3B0ciwKKwkJ CXVpbnQzMl90IHdwdHJfc2hpZnQsIHVpbnQzMl90IHdwdHJfbWFzaywKKwkJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tKQogewogCXVpbnQzMl90IHdwdHJfc2hhZG93LCBpc193cHRyX3NoYWRvd192YWxp ZDsKIAlzdHJ1Y3QgY2lrX21xZCAqbTsKQEAgLTYzNiw3ICs2NDAsNyBAQCBzdGF0aWMgYm9vbCBr Z2RfaHFkX3NkbWFfaXNfb2NjdXBpZWQoc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkKQog CXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGludCBrZ2RfaHFkX2Rlc3Ryb3koc3RydWN0IGtn ZF9kZXYgKmtnZCwgdWludDMyX3QgcmVzZXRfdHlwZSwKK3N0YXRpYyBpbnQga2dkX2hxZF9kZXN0 cm95KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwgdWludDMyX3QgcmVzZXRfdHlwZSwK IAkJCQl1bnNpZ25lZCBpbnQgdGltZW91dCwgdWludDMyX3QgcGlwZV9pZCwKIAkJCQl1aW50MzJf dCBxdWV1ZV9pZCkKIHsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngK