From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Francis Subject: [PATCH 13/14] drm/amd/display: MST DSC compute fair share Date: Mon, 19 Aug 2019 11:50:37 -0400 Message-ID: <20190819155038.1771-14-David.Francis@amd.com> References: <20190819155038.1771-1-David.Francis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190819155038.1771-1-David.Francis-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Francis , Wenjing Liu , Nikola Cornij List-Id: dri-devel@lists.freedesktop.org SWYgdGhlcmUgaXMgbGltaXRlZCBsaW5rIGJhbmR3aWR0aCBvbiBhIE1TVCBuZXR3b3JrLAppdCBt dXN0IGJlIGRpdmlkZWQgZmFpcmx5IGJldHdlZW4gdGhlIHN0cmVhbXMgb24gdGhhdCBuZXR3b3Jr CgpJbXBsZW1lbnQgYW4gYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBEU0MgY29u ZmlnCmZvciBlYWNoIHN0cmVhbQoKVGhlIGFsZ29yaXRobToKVGhpcwogICAgIFsgICAgICAgICAg ICAgICAgICAgXSAgICAgICAgICAoICkKcmVwcmVzZW50cyB0aGUgcmFuZ2Ugb2YgYmFuZHdpZHRo cyBwb3NzaWJsZSBmb3IgYSBnaXZlbiBzdHJlYW0uClRoZSBbXSBhcmVhIHJlcHJlc2VudHMgdGhl IHJhbmdlIG9mIERTQyBjb25maWdzLCBhbmQgdGhlICgpCnJlcHJlc2VudHMgbm8gRFNDLiBUaGUg YmFuZHdpZHRoIHVzZWQgaW5jcmVhc2VzIGZyb20gbGVmdCB0byByaWdodC4KCkZpcnN0LCB0cnkg ZGlzYWJsaW5nIERTQyBvbiBhbGwgc3RyZWFtcwogICAgIFsgICAgICAgICAgICAgICAgICBdICAg ICAgICAgICh8KQogICAgIFsgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgKHwpCkNo ZWNrIHRoaXMgYWdhaW5zdCB0aGUgYmFuZHdpZHRoIGxpbWl0cyBvZiB0aGUgbGluayBhbmQgZWFj aCBicmFuY2gKKGluY2x1ZGluZyBlYWNoIGVuZHBvaW50KS4gSWYgaXQgcGFzc2VzLCB0aGUgam9i IGlzIGRvbmUKClNlY29uZCwgdHJ5IG1heGltdW0gRFNDIGNvbXByZXNzaW9uIG9uIGFsbCBzdHJl YW1zCnRoYXQgc3VwcG9ydCBEU0MKICAgICBbfCAgICAgICAgIF0gICAgICAgICggKQogICAgIFt8 ICAgICAgICAgICAgICAgIF0gICAgICAgICAoICkKSWYgdGhpcyBkb2VzIG5vdCBwYXNzLCB0aGVu IGVuYWJsaW5nIHRoaXMgY29tYmluYXRpb24gb2Ygc3RyZWFtcwppcyBpbXBvc3NpYmxlCgpPdGhl cndpc2UsIGRpdmlkZSB0aGUgcmVtYWluaW5nIGJhbmR3aWR0aCBldmVubHkgYW1vbmdzdCB0aGUg c3RyZWFtcwogICAgIFsgICAgICAgIHwgIF0gICAgICAgICAoICkKICAgICBbICAgICAgICB8ICAg ICAgXSAgICAgICAgKCApCgpJZiBvbmUgb3IgbW9yZSBvZiB0aGUgc3RyZWFtcyByZWFjaCBtaW5p bXVtIGNvbXByZXNzaW9uLCBldmVubHkKZGl2aWRlIHRoZSByZWFtaW5pbmcgYmFuZHdpZHRoIGFt b25nc3QgdGhlIHJlbWFpbmluZyBzdHJlYW1zCiAgICAgWyAgICB8XSAoICkKICAgICBbICAgICAg IHxdICAgKCApCiAgICAgWyAgICAgICAgICAgICAgICAgfCAgIF0gICAgICAgICAgICAgICAoICkK ICAgICBbICAgICAgICAgICAgICAgICB8ICAgICAgXSAgICAgICAgICAgICAgICAgICggKQoKSWYg YWxsIHN0cmVhbXMgY2FuIHJlYWNoIG1pbmltdW0gY29tcHJlc3Npb24sIGRpc2FibGUgY29tcHJl c3Npb24KZ3JlZWRpbHkKICAgICBbICAgICAgfF0gICggKQogICAgIFsgICAgICAgIHxdICAgICgg KQogICAgIFsgICAgICAgICAgICAgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh8KQoKUGVyZm9ybSB0aGlzIGFsZ29yaXRobSBvbiBlYWNoIGZ1bGwgdXBkYXRlLCBvbiBlYWNo IE1TVCBsaW5rCndpdGggYXQgbGVhc3Qgb25lIERTQyBzdHJlYW0gb24gaXQKCkFmdGVyIHRoZSBj b25maWdzIGFyZSBjb21wdXRlZCwgY2FsbApkY24yMF9hZGRfZHNjX3RvX3N0cmVhbV9yZXNvdXJj ZSBvbiBlYWNoIHN0cmVhbSB3aXRoIERTQyBlbmFibGVkLgpJdCBpcyBvbmx5IGFmdGVyIGFsbCBz dHJlYW1zIGFyZSBjcmVhdGVkIHRoYXQgd2UgY2FuIGtub3cgd2hpY2gKb2YgdGhlbSB3aWxsIG5l ZWQgRFNDLgoKRG8gYWxsIG9mIHRoaXMgYXQgdGhlIGVuZCBvZiBhbWRncHUgYXRvbWljIGNoZWNr LiAgSWYgaXQgZmFpbHMsCmZhaWwgY2hlY2s7IFRoaXMgY29tYmluYXRpb24gb2YgdGltaW5ncyBj YW5ub3QgYmUgc3VwcG9ydGVkLgoKQ2M6IFdlbmppbmcgTGl1IDxXZW5qaW5nLkxpdUBhbWQuY29t PgpDYzogTmlrb2xhIENvcm5paiA8Tmlrb2xhLkNvcm5pakBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBGcmFuY2lzIDxEYXZpZC5GcmFuY2lzQGFtZC5jb20+Ci0tLQogLi4uL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHwgICA0ICsKIC4uLi9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmMgICB8IDM3NSArKysrKysrKysrKysrKysrKysK IC4uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmggICB8ICAgNCArLQog Li4uL2RybS9hbWQvZGlzcGxheS9kYy9kY24yMC9kY24yMF9yZXNvdXJjZS5jIHwgICA3ICstCiAu Li4vZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNlLmggfCAgIDEgKwogNSBm aWxlcyBjaGFuZ2VkLCAzODggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwppbmRleCA4 NDI0OTA1N2UxODEuLjE0NWZkNzMwMjVkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCkBAIC03MzMxLDYgKzczMzEsMTAgQEAgc3Rh dGljIGludCBhbWRncHVfZG1fYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CiAKKyNpZmRlZiBDT05GSUdfRFJNX0FNRF9EQ19EU0Nf U1VQUE9SVAorCQlpZiAoIWNvbXB1dGVfbXN0X2RzY19jb25maWdzX2Zvcl9zdGF0ZShkbV9zdGF0 ZS0+Y29udGV4dCkpCisJCQlnb3RvIGZhaWw7CisjZW5kaWYKIAkJaWYgKGRjX3ZhbGlkYXRlX2ds b2JhbF9zdGF0ZShkYywgZG1fc3RhdGUtPmNvbnRleHQsIGZhbHNlKSAhPSBEQ19PSykgewogCQkJ cmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gZmFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmMKaW5kZXgg NTg1NzE4NDRmNmQ1Li4wYjZiZmEwOTNlODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jCkBAIC0z OCw2ICszOCw4IEBACiAKICNpbmNsdWRlICJpMmNhdXhfaW50ZXJmYWNlLmgiCiAKKyNpbmNsdWRl ICJkYy9kY24yMC9kY24yMF9yZXNvdXJjZS5oIgorCiAvKiAjZGVmaW5lIFRSQUNFX0RQQ0QgKi8K IAogI2lmZGVmIFRSQUNFX0RQQ0QKQEAgLTU0OCwzICs1NTAsMzc2IEBAIHZvaWQgYW1kZ3B1X2Rt X2luaXRpYWxpemVfZHBfY29ubmVjdG9yKHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpk bSwKIAkJYWNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkKTsKIH0KIAorI2lmZGVmIENPTkZJR19EUk1f QU1EX0RDX0RTQ19TVVBQT1JUCitzdHJ1Y3QgZHNjX21zdF9mYWlybmVzc19wYXJhbXMgeworCXN0 cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nOworCXN0cnVjdCBkY19zaW5rICpzaW5rOworCXN0 cnVjdCBkY19kc2NfYndfcmFuZ2UgYndfcmFuZ2U7CisJYm9vbCBjb21wcmVzc2lvbl9wb3NzaWJs ZTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0OworfTsKKworc3RydWN0IGRzY19tc3Rf ZmFpcm5lc3NfdmFycyB7CisJaW50IHBibjsKKwlib29sIGRzY19lbmFibGVkOworCWludCBicHBf eDE2OworfTsKKworc3RhdGljIGJvb2wgcG9ydF9kb3duc3RyZWFtX29mX2JyYW5jaChzdHJ1Y3Qg ZHJtX2RwX21zdF9wb3J0ICpwb3J0LAorCQlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKmJyYW5j aCkKK3sKKwl3aGlsZSAocG9ydC0+cGFyZW50KSB7CisJCWlmIChwb3J0LT5wYXJlbnQgPT0gYnJh bmNoKQorCQkJcmV0dXJuIHRydWU7CisKKwkJaWYgKHBvcnQtPnBhcmVudC0+cG9ydF9wYXJlbnQp CisJCQlwb3J0ID0gcG9ydC0+cGFyZW50LT5wb3J0X3BhcmVudDsKKwkJZWxzZQorCQkJYnJlYWs7 CisJfQorCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tfcGJuX2xpbWl0X29u X2JyYW5jaChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKmJyYW5jaCwKKwkJc3RydWN0IGRzY19t c3RfZmFpcm5lc3NfcGFyYW1zICpwYXJhbXMsCisJCXN0cnVjdCBkc2NfbXN0X2ZhaXJuZXNzX3Zh cnMgKnZhcnMsIGludCBjb3VudCkKK3sKKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0Owor CWludCBpOworCWludCBwYm5fbGltaXQgPSAwOworCWludCBwYm5fdXNlZCA9IDA7CisKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZicmFuY2gtPnBvcnRzLCBuZXh0KSB7CisJCWlmIChwb3J0 LT5tc3RiKQorCQkJaWYgKCFjaGVja19wYm5fbGltaXRfb25fYnJhbmNoKHBvcnQtPm1zdGIsIHBh cmFtcywgdmFycywgY291bnQpKQorCQkJCXJldHVybiBmYWxzZTsKKworCQlpZiAocG9ydC0+YXZh aWxhYmxlX3BibiA+IDApCisJCQlwYm5fbGltaXQgPSBwb3J0LT5hdmFpbGFibGVfcGJuOworCX0K KworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCWlmIChwb3J0X2Rvd25zdHJlYW1f b2ZfYnJhbmNoKHBhcmFtc1tpXS5wb3J0LCBicmFuY2gpKQorCQkJcGJuX3VzZWQgKz0gdmFyc1tp XS5wYm47CisJfQorCisJaWYgKHBibl91c2VkID4gcGJuX2xpbWl0KQorCQlyZXR1cm4gZmFsc2U7 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tfYmFuZHdpZHRoX2xpbWl0 cyhzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywKKwkJc3RydWN0IGRzY19tc3RfZmFpcm5lc3NfcGFy YW1zICpwYXJhbXMsCisJCXN0cnVjdCBkc2NfbXN0X2ZhaXJuZXNzX3ZhcnMgKnZhcnMsCisJCWlu dCBjb3VudCkKK3sKKwlpbnQgbGlua190aW1lc2xvdF9saW1pdCA9IDYzOworCWludCBsaW5rX3Rp bWVzbG90c191c2VkID0gMDsKKwlpbnQgcGJuX3Blcl90aW1lc2xvdDsKKwlpbnQgaTsKKwlzdHJ1 Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1zdF9tZ3I7CisKKwkvKiBrYml0cyB0byBwYm4s IGRpdmlkaW5nIGJ5IDY0ICovCisJcGJuX3Blcl90aW1lc2xvdCA9IGRjX2xpbmtfYmFuZHdpZHRo X2ticHMoZGNfbGluaywKKwkJCWRjX2xpbmtfZ2V0X2xpbmtfY2FwKGRjX2xpbmspKSAvICg4ICog MTAwMCAqIDU0KTsKKworCS8qIENoZWNrIGxpbmsgYmFuZHdpZHRoIGxpbWl0ICovCisJZm9yIChp ID0gMDsgaSA8IGNvdW50OyBpKyspCisJCWxpbmtfdGltZXNsb3RzX3VzZWQgKz0gRElWX1JPVU5E X1VQKHZhcnNbaV0ucGJuLCBwYm5fcGVyX3RpbWVzbG90KTsKKworCWlmIChsaW5rX3RpbWVzbG90 c191c2VkID4gbGlua190aW1lc2xvdF9saW1pdCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogQ2hl Y2sgYnJhbmNoIGJhbmR3aWR0aCBsaW1pdCBmb3IgZWFjaCBwb3J0IG9uIGVhY2ggYnJhbmNoICov CisJbXN0X21nciA9IHBhcmFtc1swXS5wb3J0LT5tZ3I7CisJaWYgKCFjaGVja19wYm5fbGltaXRf b25fYnJhbmNoKG1zdF9tZ3ItPm1zdF9wcmltYXJ5LCBwYXJhbXMsIHZhcnMsIGNvdW50KSkKKwkJ cmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbnQga2Jwc190b19w ZWFrX3BibihpbnQga2JwcykKK3sKKwl1NjQgcGVha19rYnBzID0ga2JwczsKKworCXBlYWtfa2Jw cyAqPSAxMDA2OworCXBlYWtfa2JwcyAvPSAxMDAwOworCXJldHVybiAoaW50KSBESVZfUk9VTkRf VVAocGVha19rYnBzICogNjQsICg1NCAqIDggKiAxMDAwKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNl dF9kc2NfY29uZmlnc19mcm9tX2ZhaXJuZXNzX3ZhcnMoc3RydWN0IGRzY19tc3RfZmFpcm5lc3Nf cGFyYW1zICpwYXJhbXMsCisJCXN0cnVjdCBkc2NfbXN0X2ZhaXJuZXNzX3ZhcnMgKnZhcnMsCisJ CWludCBjb3VudCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7 CisJCW1lbXNldCgmcGFyYW1zW2ldLnRpbWluZy0+ZHNjX2NmZywgMCwgc2l6ZW9mKHBhcmFtc1tp XS50aW1pbmctPmRzY19jZmcpKTsKKwkJaWYgKHZhcnNbaV0uZHNjX2VuYWJsZWQgJiYgZGNfZHNj X2NvbXB1dGVfY29uZmlnKHBhcmFtc1tpXS5zaW5rLT5jdHgtPmRjLAorCQkJCQkmcGFyYW1zW2ld LnNpbmstPnNpbmtfZHNjX2NhcHMuZHNjX2RlY19jYXBzLAorCQkJCQkwLAorCQkJCQlwYXJhbXNb aV0udGltaW5nLAorCQkJCQkmcGFyYW1zW2ldLnRpbWluZy0+ZHNjX2NmZykpIHsKKwkJCXBhcmFt c1tpXS50aW1pbmctPmZsYWdzLkRTQyA9IDE7CisJCQlwYXJhbXNbaV0udGltaW5nLT5kc2NfY2Zn LmJpdHNfcGVyX3BpeGVsID0gdmFyc1tpXS5icHBfeDE2OworCQl9IGVsc2UgeworCQkJcGFyYW1z W2ldLnRpbWluZy0+ZmxhZ3MuRFNDID0gMDsKKwkJfQorCisJfQorCit9CisKK3N0YXRpYyBpbnQg YnBwX3gxNl9mcm9tX3BibihzdHJ1Y3QgZHNjX21zdF9mYWlybmVzc19wYXJhbXMgcGFyYW0sIGlu dCBwYm4pCit7CisJc3RydWN0IGRjX2RzY19jb25maWcgZHNjX2NvbmZpZzsKKwl1NjQga2JwczsK KworCWticHMgPSAodTY0KXBibiAqIDk5NCAqIDggKiA1NCAvIDY0OworCWRjX2RzY19jb21wdXRl X2NvbmZpZyhwYXJhbS5zaW5rLT5jdHgtPmRjLAorCQkJJnBhcmFtLnNpbmstPnNpbmtfZHNjX2Nh cHMuZHNjX2RlY19jYXBzLAorCQkJKGludCkga2JwcywgcGFyYW0udGltaW5nLCAmZHNjX2NvbmZp Zyk7CisKKwlyZXR1cm4gZHNjX2NvbmZpZy5iaXRzX3Blcl9waXhlbDsKK30KKworc3RhdGljIHZv aWQgaW5jcmVhc2VfZHNjX2JwcChzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywKKwkJc3RydWN0IGRz Y19tc3RfZmFpcm5lc3NfcGFyYW1zICpwYXJhbXMsCisJCXN0cnVjdCBkc2NfbXN0X2ZhaXJuZXNz X3ZhcnMgKnZhcnMsCisJCWludCBjb3VudCkKK3sKKwlpbnQgaTsKKwlib29sIGJwcF9pbmNyZWFz ZWRbTUFYX1BJUEVTXTsKKwlpbnQgaW5pdGlhbF9zbGFja1tNQVhfUElQRVNdOworCWludCBtaW5f aW5pdGlhbF9zbGFjazsKKwlpbnQgbmV4dF9pbmRleDsKKwlpbnQgcmVtYWluaW5nX3RvX2luY3Jl YXNlID0gMDsKKwlpbnQgcGJuX3Blcl90aW1lc2xvdDsKKwlpbnQgbGlua190aW1lc2xvdHNfdXNl ZDsKKwlpbnQgZmFpcl9wYm5fYWxsb2M7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykg eworCQlpZiAodmFyc1tpXS5kc2NfZW5hYmxlZCkgeworCQkJaW5pdGlhbF9zbGFja1tpXSA9IGti cHNfdG9fcGVha19wYm4ocGFyYW1zW2ldLmJ3X3JhbmdlLm1heF9rYnBzKSAtIHZhcnNbaV0ucGJu OworCQkJYnBwX2luY3JlYXNlZFtpXSA9IGZhbHNlOworCQkJcmVtYWluaW5nX3RvX2luY3JlYXNl ICs9IDE7CisJCX0gZWxzZSB7CisJCQlpbml0aWFsX3NsYWNrW2ldID0gMDsKKwkJCWJwcF9pbmNy ZWFzZWRbaV0gPSB0cnVlOworCQl9CisJfQorCisJcGJuX3Blcl90aW1lc2xvdCA9IGRjX2xpbmtf YmFuZHdpZHRoX2ticHMoZGNfbGluaywKKwkJCWRjX2xpbmtfZ2V0X2xpbmtfY2FwKGRjX2xpbmsp KSAvICg4ICogMTAwMCAqIDU0KTsKKworCXdoaWxlIChyZW1haW5pbmdfdG9faW5jcmVhc2UpIHsK KwkJbmV4dF9pbmRleCA9IC0xOworCQltaW5faW5pdGlhbF9zbGFjayA9IC0xOworCQlmb3IgKGkg PSAwOyBpIDwgY291bnQ7IGkrKykgeworCQkJaWYgKCFicHBfaW5jcmVhc2VkW2ldKSB7CisJCQkJ aWYgKG1pbl9pbml0aWFsX3NsYWNrID09IC0xIHx8IG1pbl9pbml0aWFsX3NsYWNrID4gaW5pdGlh bF9zbGFja1tpXSkgeworCQkJCQltaW5faW5pdGlhbF9zbGFjayA9IGluaXRpYWxfc2xhY2tbaV07 CisJCQkJCW5leHRfaW5kZXggPSBpOworCQkJCX0KKwkJCX0KKwkJfQorCisJCWlmIChuZXh0X2lu ZGV4ID09IC0xKQorCQkJYnJlYWs7CisKKwkJbGlua190aW1lc2xvdHNfdXNlZCA9IDA7CisKKwkJ Zm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisJCQlsaW5rX3RpbWVzbG90c191c2VkICs9IERJ Vl9ST1VORF9VUCh2YXJzW2ldLnBibiwgcGJuX3Blcl90aW1lc2xvdCk7CisKKwkJZmFpcl9wYm5f YWxsb2MgPSAoNjMgLSBsaW5rX3RpbWVzbG90c191c2VkKSAvIHJlbWFpbmluZ190b19pbmNyZWFz ZSAqIHBibl9wZXJfdGltZXNsb3Q7CisKKwkJaWYgKGluaXRpYWxfc2xhY2tbbmV4dF9pbmRleF0g PiBmYWlyX3Bibl9hbGxvYykgeworCQkJdmFyc1tuZXh0X2luZGV4XS5wYm4gKz0gZmFpcl9wYm5f YWxsb2M7CisJCQlpZiAoY2hlY2tfYmFuZHdpZHRoX2xpbWl0cyhkY19saW5rLCBwYXJhbXMsIHZh cnMsIGNvdW50KSkKKwkJCQl2YXJzW25leHRfaW5kZXhdLmJwcF94MTYgPSBicHBfeDE2X2Zyb21f cGJuKHBhcmFtc1tuZXh0X2luZGV4XSwgdmFyc1tuZXh0X2luZGV4XS5wYm4pOworCQkJZWxzZQor CQkJCXZhcnNbbmV4dF9pbmRleF0ucGJuIC09IGZhaXJfcGJuX2FsbG9jOworCQl9IGVsc2Ugewor CQkJdmFyc1tuZXh0X2luZGV4XS5wYm4gKz0gaW5pdGlhbF9zbGFja1tuZXh0X2luZGV4XTsKKwkJ CWlmIChjaGVja19iYW5kd2lkdGhfbGltaXRzKGRjX2xpbmssIHBhcmFtcywgdmFycywgY291bnQp KQorCQkJCXZhcnNbbmV4dF9pbmRleF0uYnBwX3gxNiA9IHBhcmFtc1tuZXh0X2luZGV4XS5id19y YW5nZS5tYXhfdGFyZ2V0X2JwcF94MTY7CisJCQllbHNlCisJCQkJdmFyc1tuZXh0X2luZGV4XS5w Ym4gLT0gaW5pdGlhbF9zbGFja1tuZXh0X2luZGV4XTsKKwkJfQorCisJCWJwcF9pbmNyZWFzZWRb bmV4dF9pbmRleF0gPSB0cnVlOworCQlyZW1haW5pbmdfdG9faW5jcmVhc2UtLTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkIHRyeV9kaXNhYmxlX2RzYyhzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywKKwkJ c3RydWN0IGRzY19tc3RfZmFpcm5lc3NfcGFyYW1zICpwYXJhbXMsCisJCXN0cnVjdCBkc2NfbXN0 X2ZhaXJuZXNzX3ZhcnMgKnZhcnMsCisJCWludCBjb3VudCkKK3sKKwlpbnQgaTsKKwlib29sIHRy aWVkW01BWF9QSVBFU107CisJaW50IGticHNfaW5jcmVhc2VbTUFYX1BJUEVTXTsKKwlpbnQgbWF4 X2ticHNfaW5jcmVhc2U7CisJaW50IG5leHRfaW5kZXg7CisJaW50IHJlbWFpbmluZ190b190cnkg PSAwOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJaWYgKHZhcnNbaV0uZHNj X2VuYWJsZWQgJiYgdmFyc1tpXS5icHBfeDE2ID09IHBhcmFtc1tpXS5id19yYW5nZS5tYXhfdGFy Z2V0X2JwcF94MTYpIHsKKwkJCWticHNfaW5jcmVhc2VbaV0gPSBwYXJhbXNbaV0uYndfcmFuZ2Uu c3RyZWFtX2ticHMgLSBwYXJhbXNbaV0uYndfcmFuZ2UubWF4X2ticHM7CisJCQl0cmllZFtpXSA9 IGZhbHNlOworCQkJcmVtYWluaW5nX3RvX3RyeSArPSAxOworCQl9IGVsc2UgeworCQkJa2Jwc19p bmNyZWFzZVtpXSA9IDA7CisJCQl0cmllZFtpXSA9IHRydWU7CisJCX0KKwl9CisKKwl3aGlsZSAo cmVtYWluaW5nX3RvX3RyeSkgeworCQluZXh0X2luZGV4ID0gLTE7CisJCW1heF9rYnBzX2luY3Jl YXNlID0gLTE7CisJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCQlpZiAoIXRyaWVk W2ldKSB7CisJCQkJaWYgKG1heF9rYnBzX2luY3JlYXNlID09IC0xIHx8IG1heF9rYnBzX2luY3Jl YXNlIDwga2Jwc19pbmNyZWFzZVtpXSkgeworCQkJCQltYXhfa2Jwc19pbmNyZWFzZSA9IGticHNf aW5jcmVhc2VbaV07CisJCQkJCW5leHRfaW5kZXggPSBpOworCQkJCX0KKwkJCX0KKwkJfQorCisJ CWlmIChuZXh0X2luZGV4ID09IC0xKQorCQkJYnJlYWs7CisKKwkJdmFyc1tuZXh0X2luZGV4XS5w Ym4gPSBrYnBzX3RvX3BlYWtfcGJuKHBhcmFtc1tuZXh0X2luZGV4XS5id19yYW5nZS5zdHJlYW1f a2Jwcyk7CisKKwkJaWYgKGNoZWNrX2JhbmR3aWR0aF9saW1pdHMoZGNfbGluaywgcGFyYW1zLCB2 YXJzLCBjb3VudCkpIHsKKwkJCXZhcnNbbmV4dF9pbmRleF0uZHNjX2VuYWJsZWQgPSBmYWxzZTsK KwkJCXZhcnNbbmV4dF9pbmRleF0uYnBwX3gxNiA9IDA7CisJCX0gZWxzZSB7CisJCQl2YXJzW25l eHRfaW5kZXhdLnBibiA9IGticHNfdG9fcGVha19wYm4ocGFyYW1zW25leHRfaW5kZXhdLmJ3X3Jh bmdlLm1heF9rYnBzKTsKKwkJfQorCisJCXRyaWVkW25leHRfaW5kZXhdID0gdHJ1ZTsKKwkJcmVt YWluaW5nX3RvX3RyeS0tOworCX0KK30KKworc3RhdGljIGJvb2wgY29tcHV0ZV9tc3RfZHNjX2Nv bmZpZ3NfZm9yX2xpbmsoc3RydWN0IGRjX3N0YXRlICpkY19zdGF0ZSwgc3RydWN0IGRjX2xpbmsg KmRjX2xpbmspCit7CisJaW50IGk7CisJc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtOwor CXN0cnVjdCBkc2NfbXN0X2ZhaXJuZXNzX3BhcmFtcyBwYXJhbXNbTUFYX1BJUEVTXTsKKwlzdHJ1 Y3QgZHNjX21zdF9mYWlybmVzc192YXJzIHZhcnNbTUFYX1BJUEVTXTsKKwlzdHJ1Y3QgYW1kZ3B1 X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3RvcjsKKwlpbnQgY291bnQgPSAwOworCisJbWVtc2V0KHBh cmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCisJLyogU2V0IHVwIHBhcmFtcyAqLworCWZvciAo aSA9IDA7IGkgPCBkY19zdGF0ZS0+c3RyZWFtX2NvdW50OyBpKyspIHsKKwkJc3RyZWFtID0gZGNf c3RhdGUtPnN0cmVhbXNbaV07CisKKwkJaWYgKHN0cmVhbS0+bGluayAhPSBkY19saW5rKQorCQkJ Y29udGludWU7CisKKwkJc3RyZWFtLT50aW1pbmcuZmxhZ3MuRFNDID0gMDsKKworCQlwYXJhbXNb Y291bnRdLnRpbWluZyA9ICZzdHJlYW0tPnRpbWluZzsKKwkJcGFyYW1zW2NvdW50XS5zaW5rID0g c3RyZWFtLT5zaW5rOworCQlhY29ubmVjdG9yID0gKHN0cnVjdCBhbWRncHVfZG1fY29ubmVjdG9y ICopc3RyZWFtLT5kbV9zdHJlYW1fY29udGV4dDsKKwkJcGFyYW1zW2NvdW50XS5wb3J0ID0gYWNv bm5lY3Rvci0+cG9ydDsKKwkJcGFyYW1zW2NvdW50XS5jb21wcmVzc2lvbl9wb3NzaWJsZSA9IHN0 cmVhbS0+c2luay0+c2lua19kc2NfY2Fwcy5kc2NfZGVjX2NhcHMuaXNfZHNjX3N1cHBvcnRlZDsK KwkJaWYgKCFkY19kc2NfY29tcHV0ZV9iYW5kd2lkdGhfcmFuZ2Uoc3RyZWFtLT5zaW5rLT5jdHgt PmRjLCA4LCAxNiwKKwkJCQkmc3RyZWFtLT5zaW5rLT5zaW5rX2RzY19jYXBzLmRzY19kZWNfY2Fw cywKKwkJCQkmc3RyZWFtLT50aW1pbmcsICZwYXJhbXNbY291bnRdLmJ3X3JhbmdlKSkKKwkJCXBh cmFtc1tjb3VudF0uYndfcmFuZ2Uuc3RyZWFtX2ticHMgPSBkY19iYW5kd2lkdGhfaW5fa2Jwc19m cm9tX3RpbWluZygmc3RyZWFtLT50aW1pbmcpOworCisJCWNvdW50Kys7CisJfQorCisJLyogVHJ5 IG5vIGNvbXByZXNzaW9uICovCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJdmFy c1tpXS5wYm4gPSBrYnBzX3RvX3BlYWtfcGJuKHBhcmFtc1tpXS5id19yYW5nZS5zdHJlYW1fa2Jw cyk7CisJCXZhcnNbaV0uZHNjX2VuYWJsZWQgPSBmYWxzZTsKKwkJdmFyc1tpXS5icHBfeDE2ID0g MDsKKwl9CisKKwlpZiAoY2hlY2tfYmFuZHdpZHRoX2xpbWl0cyhkY19saW5rLCBwYXJhbXMsIHZh cnMsIGNvdW50KSkgeworCQlzZXRfZHNjX2NvbmZpZ3NfZnJvbV9mYWlybmVzc192YXJzKHBhcmFt cywgdmFycywgY291bnQpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKiBUcnkgbWF4IGNvbXBy ZXNzaW9uICovCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJaWYgKHBhcmFtc1tp XS5jb21wcmVzc2lvbl9wb3NzaWJsZSkgeworCQkJdmFyc1tpXS5wYm4gPSBrYnBzX3RvX3BlYWtf cGJuKHBhcmFtc1tpXS5id19yYW5nZS5taW5fa2Jwcyk7CisJCQl2YXJzW2ldLmRzY19lbmFibGVk ID0gdHJ1ZTsKKwkJCXZhcnNbaV0uYnBwX3gxNiA9IHBhcmFtc1tpXS5id19yYW5nZS5taW5fdGFy Z2V0X2JwcF94MTY7CisJCX0gZWxzZSB7CisJCQl2YXJzW2ldLnBibiA9IGticHNfdG9fcGVha19w Ym4ocGFyYW1zW2ldLmJ3X3JhbmdlLnN0cmVhbV9rYnBzKTsKKwkJCXZhcnNbaV0uZHNjX2VuYWJs ZWQgPSBmYWxzZTsKKwkJCXZhcnNbaV0uYnBwX3gxNiA9IDA7CisJCX0KKwl9CisKKwlpZiAoIWNo ZWNrX2JhbmR3aWR0aF9saW1pdHMoZGNfbGluaywgcGFyYW1zLCB2YXJzLCBjb3VudCkpCisJCXJl dHVybiBmYWxzZTsKKworCS8qIE9wdGltaXplIGRlZ3JlZSBvZiBjb21wcmVzc2lvbiAqLworCWlu Y3JlYXNlX2RzY19icHAoZGNfbGluaywgcGFyYW1zLCB2YXJzLCBjb3VudCk7CisKKwl0cnlfZGlz YWJsZV9kc2MoZGNfbGluaywgcGFyYW1zLCB2YXJzLCBjb3VudCk7CisKKwlzZXRfZHNjX2NvbmZp Z3NfZnJvbV9mYWlybmVzc192YXJzKHBhcmFtcywgdmFycywgY291bnQpOworCisJcmV0dXJuIHRy dWU7Cit9CisKK2Jvb2wgY29tcHV0ZV9tc3RfZHNjX2NvbmZpZ3NfZm9yX3N0YXRlKHN0cnVjdCBk Y19zdGF0ZSAqZGNfc3RhdGUpCit7CisJaW50IGksIGo7CisJc3RydWN0IGRjX3N0cmVhbV9zdGF0 ZSAqc3RyZWFtOworCWJvb2wgY29tcHV0ZWRfc3RyZWFtc1tNQVhfUElQRVNdOworCXN0cnVjdCBh bWRncHVfZG1fY29ubmVjdG9yICphY29ubmVjdG9yOworCisJZm9yIChpID0gMDsgaSA8IGRjX3N0 YXRlLT5zdHJlYW1fY291bnQ7IGkrKykKKwkJY29tcHV0ZWRfc3RyZWFtc1tpXSA9IGZhbHNlOwor CisJZm9yIChpID0gMDsgaSA8IGRjX3N0YXRlLT5zdHJlYW1fY291bnQ7IGkrKykgeworCQlzdHJl YW0gPSBkY19zdGF0ZS0+c3RyZWFtc1tpXTsKKworCQlpZiAoc3RyZWFtLT5zaWduYWwgIT0gU0lH TkFMX1RZUEVfRElTUExBWV9QT1JUX01TVCkKKwkJCWNvbnRpbnVlOworCisJCWFjb25uZWN0b3Ig PSAoc3RydWN0IGFtZGdwdV9kbV9jb25uZWN0b3IgKilzdHJlYW0tPmRtX3N0cmVhbV9jb250ZXh0 OworCisJCWlmICghYWNvbm5lY3RvciB8fCAhYWNvbm5lY3Rvci0+ZGNfc2luaykKKwkJCWNvbnRp bnVlOworCisJCWlmICghYWNvbm5lY3Rvci0+ZGNfc2luay0+c2lua19kc2NfY2Fwcy5kc2NfZGVj X2NhcHMuaXNfZHNjX3N1cHBvcnRlZCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChjb21wdXRlZF9z dHJlYW1zW2ldKQorCQkJY29udGludWU7CisKKwkJaWYgKCFjb21wdXRlX21zdF9kc2NfY29uZmln c19mb3JfbGluayhkY19zdGF0ZSwgc3RyZWFtLT5saW5rKSkKKwkJCXJldHVybiBmYWxzZTsKKwor CQlmb3IgKGogPSAwOyBqIDwgZGNfc3RhdGUtPnN0cmVhbV9jb3VudDsgaisrKSB7CisJCQlpZiAo ZGNfc3RhdGUtPnN0cmVhbXNbal0tPmxpbmsgPT0gc3RyZWFtLT5saW5rKQorCQkJCWNvbXB1dGVk X3N0cmVhbXNbal0gPSB0cnVlOworCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IGRjX3N0YXRl LT5zdHJlYW1fY291bnQ7IGkrKykgeworCQlzdHJlYW0gPSBkY19zdGF0ZS0+c3RyZWFtc1tpXTsK KworCQlpZiAoc3RyZWFtLT50aW1pbmcuZmxhZ3MuRFNDID09IDEpCisJCQlkY24yMF9hZGRfZHNj X3RvX3N0cmVhbV9yZXNvdXJjZShzdHJlYW0tPmN0eC0+ZGMsIGRjX3N0YXRlLCBzdHJlYW0pOwor CX0KKworCXJldHVybiB0cnVlOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuaCBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5oCmluZGV4 IDhkZTNkOGMzMGY4ZC4uYjdkMmU0ZTcwMTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuaApAQCAt MzQsNSArMzQsNyBAQCB2b2lkIGFtZGdwdV9kbV9pbml0aWFsaXplX2RwX2Nvbm5lY3RvcihzdHJ1 Y3QgYW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCiAKIGJvb2wgaXNfdmlydHVhbF9kcGNkKHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwogYm9vbCBzeW5hcHRpeF93b3JrYXJvdW5kKHN0 cnVjdCBhbWRncHVfZG1fY29ubmVjdG9yICphY29ubmVjdG9yKTsKLQorI2lmZGVmIENPTkZJR19E Uk1fQU1EX0RDX0RTQ19TVVBQT1JUCitib29sIGNvbXB1dGVfbXN0X2RzY19jb25maWdzX2Zvcl9z dGF0ZShzdHJ1Y3QgZGNfc3RhdGUgKmRjX3N0YXRlKTsKKyNlbmRpZgogI2VuZGlmCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2Uu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24yMC9kY24yMF9yZXNvdXJjZS5j CmluZGV4IGM1OWYzMWRjZGMwZC4uMjI1MTFiMDQ3ODM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuYwpAQCAtMTQzOSw3 ICsxNDM5LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZV9kc2Moc3RydWN0IHJlc291cmNlX2NvbnRl eHQgKnJlc19jdHgsCiAKIAogI2lmZGVmIENPTkZJR19EUk1fQU1EX0RDX0RTQ19TVVBQT1JUCi1z dGF0aWMgZW51bSBkY19zdGF0dXMgYWRkX2RzY190b19zdHJlYW1fcmVzb3VyY2Uoc3RydWN0IGRj ICpkYywKK2VudW0gZGNfc3RhdHVzIGRjbjIwX2FkZF9kc2NfdG9fc3RyZWFtX3Jlc291cmNlKHN0 cnVjdCBkYyAqZGMsCiAJCXN0cnVjdCBkY19zdGF0ZSAqZGNfY3R4LAogCQlzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXRlICpkY19zdHJlYW0pCiB7CkBAIC0xNDU0LDYgKzE0NTQsOSBAQCBzdGF0aWMgZW51 bSBkY19zdGF0dXMgYWRkX2RzY190b19zdHJlYW1fcmVzb3VyY2Uoc3RydWN0IGRjICpkYywKIAkJ aWYgKHBpcGVfY3R4LT5zdHJlYW0gIT0gZGNfc3RyZWFtKQogCQkJY29udGludWU7CiAKKwkJaWYg KHBpcGVfY3R4LT5zdHJlYW1fcmVzLmRzYykKKwkJCWNvbnRpbnVlOworCiAJCWFjcXVpcmVfZHNj KCZkY19jdHgtPnJlc19jdHgsIHBvb2wsICZwaXBlX2N0eC0+c3RyZWFtX3Jlcy5kc2MpOwogCiAJ CS8qIFRoZSBudW1iZXIgb2YgRFNDcyBjYW4gYmUgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgcGlw ZXMgKi8KQEAgLTE1MTEsNyArMTUxNCw3IEBAIGVudW0gZGNfc3RhdHVzIGRjbjIwX2FkZF9zdHJl YW1fdG9fY3R4KHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwKICNpZmRl ZiBDT05GSUdfRFJNX0FNRF9EQ19EU0NfU1VQUE9SVAogCS8qIEdldCBhIERTQyBpZiByZXF1aXJl ZCBhbmQgYXZhaWxhYmxlICovCiAJaWYgKHJlc3VsdCA9PSBEQ19PSyAmJiBkY19zdHJlYW0tPnRp bWluZy5mbGFncy5EU0MpCi0JCXJlc3VsdCA9IGFkZF9kc2NfdG9fc3RyZWFtX3Jlc291cmNlKGRj LCBuZXdfY3R4LCBkY19zdHJlYW0pOworCQlyZXN1bHQgPSBkY24yMF9hZGRfZHNjX3RvX3N0cmVh bV9yZXNvdXJjZShkYywgbmV3X2N0eCwgZGNfc3RyZWFtKTsKICNlbmRpZgogCiAJaWYgKHJlc3Vs dCA9PSBEQ19PSykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9k Y24yMC9kY24yMF9yZXNvdXJjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Rj bjIwL2RjbjIwX3Jlc291cmNlLmgKaW5kZXggNDRmOTVhYTBkNjFlLi4yMjA5ZWJkYTZlZjYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24yMC9kY24yMF9yZXNv dXJjZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24yMC9kY24yMF9y ZXNvdXJjZS5oCkBAIC0xMzEsNiArMTMxLDcgQEAgdm9pZCBkY24yMF9jYWxjdWxhdGVfZGxnX3Bh cmFtcygKIAogZW51bSBkY19zdGF0dXMgZGNuMjBfYnVpbGRfbWFwcGVkX3Jlc291cmNlKGNvbnN0 IHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwgc3RydWN0IGRjX3N0cmVh bV9zdGF0ZSAqc3RyZWFtKTsKIGVudW0gZGNfc3RhdHVzIGRjbjIwX2FkZF9zdHJlYW1fdG9fY3R4 KHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwgc3RydWN0IGRjX3N0cmVh bV9zdGF0ZSAqZGNfc3RyZWFtKTsKK2VudW0gZGNfc3RhdHVzIGRjbjIwX2FkZF9kc2NfdG9fc3Ry ZWFtX3Jlc291cmNlKHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdGF0ZSAqZGNfY3R4LCBzdHJ1 Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0pOwogZW51bSBkY19zdGF0dXMgZGNuMjBfcmVt b3ZlX3N0cmVhbV9mcm9tX2N0eChzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RhdGUgKm5ld19j dHgsIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CiBlbnVtIGRjX3N0YXR1cyBk Y24yMF9nZXRfZGVmYXVsdF9zd2l6emxlX21vZGUoc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSk7CiAKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4