From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v6 04/12] microcode: introduce a global cache of ucode patch Date: Mon, 11 Mar 2019 15:57:28 +0800 Message-ID: <1552291056-20286-5-git-send-email-chao.gao@intel.com> References: <1552291056-20286-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h3Fkj-0003m0-E9 for xen-devel@lists.xenproject.org; Mon, 11 Mar 2019 07:53:41 +0000 In-Reply-To: <1552291056-20286-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Sergey Dyasli , Wei Liu , Ashok Raj , Andrew Cooper , Jan Beulich , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org dG8gcmVwbGFjZSB0aGUgY3VycmVudCBwZXItY3B1IGNhY2hlICd1Y2ktPm1jJy4KCkNvbXBhcmVk IHRvIHRoZSBjdXJyZW50IHBlci1jcHUgY2FjaGUsIHRoZSBiZW5lZml0cyBvZiB0aGUgZ2xvYmFs Cm1pY3JvY29kZSBjYWNoZSBhcmU6CjEuIEl0IHJlZHVjZXMgdGhlIHdvcmsgdGhhdCBuZWVkIHRv IGJlIGRvbmUgb24gZWFjaCBDUFUuIFBhcnNpbmcgdWNvZGUKZmlsZSBpcyBkb25lIG9uY2Ugb24g b25lIENQVS4gT3RoZXIgQ1BVcyBuZWVkbid0IHBhcnNlIHVjb2RlIGZpbGUuCkluc3RlYWQsIHRo ZXkgY2FuIGZpbmQgb3V0IGFuZCBsb2FkIHRoZSBuZXdlc3QgcGF0Y2ggZnJvbSB0aGUgZ2xvYmFs CmNhY2hlLgoyLiBJdCByZWR1Y2VzIHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb24gYSBzeXN0ZW0g d2l0aCBtYW55IENQVSBjb3Jlcy4KClR3byBmdW5jdGlvbnMsIG1pY3JvY29kZV9zYXZlX3BhdGNo KCkgYW5kIG1pY3JvY29kZV9maW5kX3BhdGNoKCkgYXJlCmludHJvZHVjZWQuIFRoZSBmb3JtZXIg YWRkcyBvbmUgZ2l2ZW4gcGF0Y2ggdG8gdGhlIGdsb2JhbCBjYWNoZS4gVGhlCmxhdHRlciBnZXRz IGEgbmV3ZXIgYW5kIG1hdGNoZWQgdWNvZGUgcGF0Y2ggZnJvbSB0aGUgZ2xvYmFsIGNhY2hlLgpB bGwgb3BlcmF0aW9ucyBvbiB0aGUgY2FjaGUgaXMgZXhwZWN0ZWQgdG8gYmUgZG9uZSB3aXRoIHRo ZQonbWljcm9jb2RlX211dGV4JyBob2xkLgoKTm90ZSB0aGF0IEkgZGVsaWJlcmF0ZWx5IGF2b2lk IHRvdWNoaW5nICd1Y2ktPm1jJyBhcyBJIGFtIGdvaW5nIHRvCnJlbW92ZSBpdCBjb21wbGV0ZWx5 IGluIHRoZSBuZXh0IHBhdGNoLgoKU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGlu dGVsLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjY6CiAtIGNvbnN0aWZ5IGxvY2FsIHZhcmlhYmxlcyBh bmQgZnVuY3Rpb24gcGFyYW1ldGVycyBpZiBwb3NzaWJsZQogLSBjb21tZW50IHRoYXQgdGhlIGds b2JhbCBjYWNoZSBpcyBwcm90ZWN0ZWQgYnkgJ21pY3JvY29kZV9tdXRleCcuCiAgIGFuZCBhZGQg YXNzZXJ0aW9ucyB0byBjYXRjaCB2aW9sYXRpb25zIGluIG1pY3JvY29kZV97c2F2ZS9maW5kfV9w YXRjaCgpCgpDaGFuZ2VzIGluIHY1OgogLSByZXdvcmQgdGhlIGNvbW1pdCBkZXNjcmlwdGlvbgog LSBmaW5kX3BhdGNoKCkgYW5kIHNhdmVfcGF0Y2goKSBhcmUgYWJzdHJhY3RlZCBpbnRvIGNvbW1v biBmdW5jdGlvbnMKICAgd2l0aCBzb21lIGhvb2tzIGZvciBBTUQgYW5kIEludGVsCi0tLQogeGVu L2FyY2gveDg2L21pY3JvY29kZS5jICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysrKysrKysr KysrKwogeGVuL2FyY2gveDg2L21pY3JvY29kZV9hbWQuYyAgICB8IDkxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlX2ludGVs LmMgIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiB4ZW4vaW5jbHVkZS9hc20t eDg2L21pY3JvY29kZS5oIHwgMTMgKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDIxNSBpbnNlcnRp b25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWljcm9j b2RlLmMgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKaW5kZXggNDE2M2Y1MC4uZTYyOWU2YyAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9t aWNyb2NvZGUuYwpAQCAtNjEsNiArNjEsOCBAQCBzdGF0aWMgc3RydWN0IHVjb2RlX21vZF9ibG9i IF9faW5pdGRhdGEgdWNvZGVfYmxvYjsKICAqLwogc3RhdGljIGJvb2xfdCBfX2luaXRkYXRhIHVj b2RlX3NjYW47CiAKK3N0YXRpYyBMSVNUX0hFQUQobWljcm9jb2RlX2NhY2hlKTsKKwogdm9pZCBf X2luaXQgbWljcm9jb2RlX3NldF9tb2R1bGUodW5zaWduZWQgaW50IGlkeCkKIHsKICAgICB1Y29k ZV9tb2RfaWR4ID0gaWR4OwpAQCAtMjA4LDYgKzIxMCw2NCBAQCBzdGF0aWMgdm9pZCBtaWNyb2Nv ZGVfZmluaV9jcHUodW5zaWduZWQgaW50IGNwdSkKICAgICBzcGluX3VubG9jaygmbWljcm9jb2Rl X211dGV4KTsKIH0KIAorLyoKKyAqIFNhdmUgYW4gdWNvZGUgcGF0Y2ggdG8gdGhlIGdsb2JhbCBj YWNoZSBsaXN0LgorICoKKyAqIFJldHVybiB0cnVlIGlmIGEgcGF0Y2ggaXMgYWRkZWQgdG8gdGhl IGdsb2JhbCBjYWNoZSBvciBpdCByZXBsYWNlcworICogb25lIG9sZCBwYXRjaCBpbiB0aGUgY2Fj aGUuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiBBY2NvcmRpbmcgdG8KKyAqIHRoZSByZXR1cm4g dmFsdWUsIHRoZSBjYWxsZXIgZGVjaWRlcyBub3QgdG8gZG8gYW4gZXhwZW5zaXZlIHVjb2RlCisg KiB1cGRhdGUgZm9yIHNvbWUgY2FzZXMgKGkuZS4gd2hlbiBhZG1pbiBwcm92aWRlcyBhbiBvbGQg dWNvZGUpLgorICovCitib29sIG1pY3JvY29kZV9zYXZlX3BhdGNoKHN0cnVjdCBtaWNyb2NvZGVf cGF0Y2ggKm5ldykKK3sKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpvbGQ7CisKKyAgICBB U1NFUlQoc3Bpbl9pc19sb2NrZWQoJm1pY3JvY29kZV9tdXRleCkpOworCisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeShvbGQsICZtaWNyb2NvZGVfY2FjaGUsIGxpc3QpCisgICAgeworICAgICAgICBl bnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgcmVzdWx0ID0KKyAgICAgICAgICAgIG1pY3JvY29k ZV9vcHMtPmNvbXBhcmVfcGF0Y2gobmV3LCBvbGQpOworCisgICAgICAgIGlmICggcmVzdWx0ID09 IE9MRF9VQ09ERSApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVf cGF0Y2gobmV3KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg ICBlbHNlIGlmICggcmVzdWx0ID09IE5FV19VQ09ERSApCisgICAgICAgIHsKKyAgICAgICAgICAg IGxpc3RfcmVwbGFjZSgmb2xkLT5saXN0LCAmbmV3LT5saXN0KTsKKyAgICAgICAgICAgIG1pY3Jv Y29kZV9vcHMtPmZyZWVfcGF0Y2gob2xkKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICB9CisgICAgICAgIGVsc2UgLyogcmVzdWx0ID09IE1JU19VQ09ERSAqLworICAgICAgICAg ICAgY29udGludWU7CisgICAgfQorICAgIGxpc3RfYWRkX3RhaWwoJm5ldy0+bGlzdCwgJm1pY3Jv Y29kZV9jYWNoZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEZpbmQgYW4gdWNv ZGUgcGF0Y2ggd2hpY2ggaGFzIG5ld2VyIHJldmlzaW9uIHRoYW4gdGhlIG9uZSBpbiB1c2UuCisg KgorICogUmV0dXJuIE5VTEwgaWYgdGhlcmUgaXMgbm8gcGF0Y2ggb2YgbmV3ZXIgcmV2aXNpb24u CisgKi8KK2NvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9maW5kX3BhdGNo KHZvaWQpCit7CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWljcm9jb2RlX3Bh dGNoOworCisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZtaWNyb2NvZGVfbXV0ZXgpKTsKKwor ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkobWljcm9jb2RlX3BhdGNoLCAmbWljcm9jb2RlX2NhY2hl LCBsaXN0KQorICAgIHsKKyAgICAgICAgaWYgKCBtaWNyb2NvZGVfb3BzLT5tYXRjaF9jcHUobWlj cm9jb2RlX3BhdGNoKSApCisgICAgICAgICAgICByZXR1cm4gbWljcm9jb2RlX3BhdGNoOworICAg IH0KKworICAgIHJldHVybiBOVUxMOworfQorCiBpbnQgbWljcm9jb2RlX3Jlc3VtZV9jcHUodW5z aWduZWQgaW50IGNwdSkKIHsKICAgICBpbnQgZXJyOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21pY3JvY29kZV9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMKaW5kZXggN2E4 NTRjMC4uODg5N2MyYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29kZV9hbWQuYwor KysgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jCkBAIC0xOTAsMjQgKzE5MCw4NCBAQCBz dGF0aWMgYm9vbF90IG1pY3JvY29kZV9maXRzKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfYW1kICpt Y19hbWQsCiAgICAgcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBib29sIG1hdGNoX2NwdShjb25zdCBz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKK3sKKyAgICByZXR1cm4gbWljcm9jb2RlX2Zp dHMocGF0Y2gtPmRhdGEsIHNtcF9wcm9jZXNzb3JfaWQoKSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg bWljcm9jb2RlX3BhdGNoICphbGxvY19taWNyb2NvZGVfcGF0Y2goCisgICAgY29uc3Qgc3RydWN0 IG1pY3JvY29kZV9hbWQgKm1jX2FtZCkKK3sKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpt aWNyb2NvZGVfcGF0Y2ggPSB4bWFsbG9jKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gpOworICAgIHN0 cnVjdCBtaWNyb2NvZGVfYW1kICpjYWNoZSA9IHhtYWxsb2Moc3RydWN0IG1pY3JvY29kZV9hbWQp OworICAgIHZvaWQgKm1wYiA9IHhtYWxsb2NfYnl0ZXMobWNfYW1kLT5tcGJfc2l6ZSk7CisgICAg c3RydWN0IGVxdWl2X2NwdV9lbnRyeSAqZXF1aXZfY3B1X3RhYmxlID0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeG1hbGxvY19ieXRlcyhtY19hbWQtPmVxdWl2X2NwdV90YWJsZV9z aXplKTsKKworICAgIGlmICggIW1pY3JvY29kZV9wYXRjaCB8fCAhY2FjaGUgfHwgIW1wYiB8fCAh ZXF1aXZfY3B1X3RhYmxlICkKKyAgICB7CisgICAgICAgIHhmcmVlKG1pY3JvY29kZV9wYXRjaCk7 CisgICAgICAgIHhmcmVlKGNhY2hlKTsKKyAgICAgICAgeGZyZWUobXBiKTsKKyAgICAgICAgeGZy ZWUoZXF1aXZfY3B1X3RhYmxlKTsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29k ZTogQ2FuIG5vdCBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICByZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKKyAgICB9CisKKyAgICBjYWNoZS0+ZXF1aXZfY3B1X3RhYmxlID0gZXF1aXZfY3B1 X3RhYmxlOworICAgIGNhY2hlLT5tcGIgPSBtcGI7CisgICAgbWVtY3B5KGNhY2hlLT5lcXVpdl9j cHVfdGFibGUsIG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlLAorICAgICAgICAgICBtY19hbWQtPmVx dWl2X2NwdV90YWJsZV9zaXplKTsKKyAgICBtZW1jcHkoY2FjaGUtPm1wYiwgbWNfYW1kLT5tcGIs IG1jX2FtZC0+bXBiX3NpemUpOworICAgIGNhY2hlLT5lcXVpdl9jcHVfdGFibGVfc2l6ZSA9IG1j X2FtZC0+ZXF1aXZfY3B1X3RhYmxlX3NpemU7CisgICAgY2FjaGUtPm1wYl9zaXplID0gbWNfYW1k LT5tcGJfc2l6ZTsKKyAgICBtaWNyb2NvZGVfcGF0Y2gtPmRhdGEgPSBjYWNoZTsKKworICAgIHJl dHVybiBtaWNyb2NvZGVfcGF0Y2g7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0 IG1pY3JvY29kZV9wYXRjaCAqbWljcm9jb2RlX3BhdGNoKQoreworICAgIHN0cnVjdCBtaWNyb2Nv ZGVfYW1kICptY19hbWQgPSBtaWNyb2NvZGVfcGF0Y2gtPmRhdGE7CisKKyAgICB4ZnJlZShtY19h bWQtPmVxdWl2X2NwdV90YWJsZSk7CisgICAgeGZyZWUobWNfYW1kLT5tcGIpOworICAgIHhmcmVl KG1jX2FtZCk7CisgICAgeGZyZWUobWljcm9jb2RlX3BhdGNoKTsKK30KKworc3RhdGljIGVudW0g bWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX3BhdGNoKAorICAgIGNvbnN0IHN0cnVjdCBt aWNyb2NvZGVfcGF0Y2ggKm5ldywgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqb2xkKQor eworICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfYW1kICpuZXdfbWMgPSBuZXctPmRhdGE7Cisg ICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpuZXdfaGVhZGVyID0gbmV3X21j LT5tcGI7CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9hbWQgKm9sZF9tYyA9IG9sZC0+ZGF0 YTsKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKm9sZF9oZWFkZXIgPSBv bGRfbWMtPm1wYjsKKworICAgIGlmICggbmV3X2hlYWRlci0+cHJvY2Vzc29yX3Jldl9pZCA9PSBv bGRfaGVhZGVyLT5wcm9jZXNzb3JfcmV2X2lkICkKKyAgICAgICAgcmV0dXJuIChuZXdfaGVhZGVy LT5wYXRjaF9pZCA+IG9sZF9oZWFkZXItPnBhdGNoX2lkKSA/CisgICAgICAgICAgICAgICAgTkVX X1VDT0RFIDogT0xEX1VDT0RFOworCisgICAgcmV0dXJuIE1JU19VQ09ERTsKK30KKwogc3RhdGlj IGludCBhcHBseV9taWNyb2NvZGUodW5zaWduZWQgaW50IGNwdSkKIHsKICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOwogICAgIHN0cnVjdCB1Y29kZV9jcHVfaW5mbyAqdWNpID0gJnBlcl9jcHUodWNv ZGVfY3B1X2luZm8sIGNwdSk7CiAgICAgdWludDMyX3QgcmV2OwotICAgIHN0cnVjdCBtaWNyb2Nv ZGVfYW1kICptY19hbWQgPSB1Y2ktPm1jLm1jX2FtZDsKLSAgICBzdHJ1Y3QgbWljcm9jb2RlX2hl YWRlcl9hbWQgKmhkcjsKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKmhk cjsKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaDsKICAgICBpbnQgaHdf ZXJyOwogCiAgICAgLyogV2Ugc2hvdWxkIGJpbmQgdGhlIHRhc2sgdG8gdGhlIENQVSAqLwogICAg IEJVR19PTihyYXdfc21wX3Byb2Nlc3Nvcl9pZCgpICE9IGNwdSk7CiAKLSAgICBpZiAoIG1jX2Ft ZCA9PSBOVUxMICkKKyAgICBwYXRjaCA9IG1pY3JvY29kZV9maW5kX3BhdGNoKCk7CisgICAgaWYg KCBwYXRjaCA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICBoZHIgPSBt Y19hbWQtPm1wYjsKLSAgICBpZiAoIGhkciA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisgICAgaGRyID0gcGF0Y2gtPmRhdGE7CiAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmbWlj cm9jb2RlX3VwZGF0ZV9sb2NrLCBmbGFncyk7CiAKQEAgLTQ5Nyw3ICs1NTcsMjEgQEAgc3RhdGlj IGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUodW5zaWduZWQgaW50IGNwdSwgY29uc3Qgdm9pZCAq YnVmLAogICAgIHdoaWxlICggKGVycm9yID0gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZChtY19h bWQsIGJ1ZiwgYnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJm9mZnNldCkpID09IDAgKQogICAgIHsKLSAgICAgICAgaWYgKCBtaWNyb2NvZGVf Zml0cyhtY19hbWQsIGNwdSkgKQorICAgICAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICptaWNy b2NvZGVfcGF0Y2ggPSBhbGxvY19taWNyb2NvZGVfcGF0Y2gobWNfYW1kKTsKKworICAgICAgICBp ZiAoIElTX0VSUihtaWNyb2NvZGVfcGF0Y2gpICkKKyAgICAgICAgeworICAgICAgICAgICAgZXJy b3IgPSBQVFJfRVJSKG1pY3JvY29kZV9wYXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgYSBzeXN0 ZW0gd2l0aCBtaXhlZCBzdGVwcGluZyBDUFVzLCBzYXZlCisgICAgICAgICAqIHRoaXMgdWNvZGUg cGF0Y2ggYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgaXQgbWF0Y2hlcyB3aXRoCisgICAgICAgICAq IGN1cnJlbnQgQ1BVLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBtaWNyb2NvZGVfc2F2ZV9w YXRjaChtaWNyb2NvZGVfcGF0Y2gpICYmCisgICAgICAgICAgICAgbWljcm9jb2RlX2ZpdHMobWNf YW1kLCBjcHUpICkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IgPSBhcHBseV9taWNyb2Nv ZGUoY3B1KTsKICAgICAgICAgICAgIGlmICggZXJyb3IgKQpAQCAtNjM5LDYgKzcxMyw5IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX29wcyBtaWNyb2NvZGVfYW1kX29wcyA9IHsKICAg ICAuY29sbGVjdF9jcHVfaW5mbyAgICAgICAgICAgICAgICAgPSBjb2xsZWN0X2NwdV9pbmZvLAog ICAgIC5hcHBseV9taWNyb2NvZGUgICAgICAgICAgICAgICAgICA9IGFwcGx5X21pY3JvY29kZSwK ICAgICAuc3RhcnRfdXBkYXRlICAgICAgICAgICAgICAgICAgICAgPSBzdGFydF91cGRhdGUsCisg ICAgLmNvbXBhcmVfcGF0Y2ggICAgICAgICAgICAgICAgICAgID0gY29tcGFyZV9wYXRjaCwKKyAg ICAuZnJlZV9wYXRjaCAgICAgICAgICAgICAgICAgICAgICAgPSBmcmVlX3BhdGNoLAorICAgIC5t YXRjaF9jcHUgICAgICAgICAgICAgICAgICAgICAgICA9IG1hdGNoX2NwdSwKIH07CiAKIGludCBf X2luaXQgbWljcm9jb2RlX2luaXRfYW1kKHZvaWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bWljcm9jb2RlX2ludGVsLmMgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2ludGVsLmMKaW5kZXgg ZWNlYzgzYi4uYjU1NmQzZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29kZV9pbnRl bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50ZWwuYwpAQCAtMTU4LDYgKzE1OCwx NSBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV91cGRhdGVf bWF0Y2goCiAgICAgcmV0dXJuIE1JU19VQ09ERTsKIH0KIAorc3RhdGljIGJvb2wgbWF0Y2hfY3B1 KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQoreworICAgIHN0cnVjdCB1Y29k ZV9jcHVfaW5mbyAqdWNpID0gJnRoaXNfY3B1KHVjb2RlX2NwdV9pbmZvKTsKKyAgICBpbnQgcmV0 ID0gbWljcm9jb2RlX3VwZGF0ZV9tYXRjaChwYXRjaC0+ZGF0YSwgdWNpLT5jcHVfc2lnLnNpZywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2ktPmNwdV9zaWcucGYsIHVj aS0+Y3B1X3NpZy5yZXYpOworCisgICAgcmV0dXJuIHJldCA9PSBORVdfVUNPREU7Cit9CisKIHN0 YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVjayh2b2lkICptYykKIHsKICAgICBzdHJ1Y3Qg bWljcm9jb2RlX2hlYWRlcl9pbnRlbCAqbWNfaGVhZGVyID0gbWM7CkBAIC0yNDgsNiArMjU3LDIx IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVjayh2b2lkICptYykKICAgICByZXR1 cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNo ICpwYXRjaCkKK3sKKyAgICB4ZnJlZShwYXRjaC0+ZGF0YSk7CisgICAgeGZyZWUocGF0Y2gpOwor fQorCitzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCisg ICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbmV3LCBjb25zdCBzdHJ1Y3QgbWljcm9j b2RlX3BhdGNoICpvbGQpCit7CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50 ZWwgKm9sZF9oZWFkZXIgPSBvbGQtPmRhdGE7CisKKyAgICByZXR1cm4gbWljcm9jb2RlX3VwZGF0 ZV9tYXRjaChuZXctPmRhdGEsIG9sZF9oZWFkZXItPnNpZywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvbGRfaGVhZGVyLT5wZiwgb2xkX2hlYWRlci0+cmV2KTsKK30KKwogLyoK ICAqIHJldHVybiAwIC0gbm8gdXBkYXRlIGZvdW5kCiAgKiByZXR1cm4gMSAtIGZvdW5kIHVwZGF0 ZQpAQCAtMjU4LDcgKzI4MiwyNSBAQCBzdGF0aWMgaW50IGdldF9tYXRjaGluZ19taWNyb2NvZGUo Y29uc3Qgdm9pZCAqbWMsIHVuc2lnbmVkIGludCBjcHUpCiAgICAgc3RydWN0IHVjb2RlX2NwdV9p bmZvICp1Y2kgPSAmcGVyX2NwdSh1Y29kZV9jcHVfaW5mbywgY3B1KTsKICAgICBjb25zdCBzdHJ1 Y3QgbWljcm9jb2RlX2hlYWRlcl9pbnRlbCAqbWNfaGVhZGVyID0gbWM7CiAgICAgdW5zaWduZWQg bG9uZyB0b3RhbF9zaXplID0gZ2V0X3RvdGFsc2l6ZShtY19oZWFkZXIpOwotICAgIHZvaWQgKm5l d19tYzsKKyAgICB2b2lkICpuZXdfbWMgPSB4bWFsbG9jX2J5dGVzKHRvdGFsX3NpemUpOworICAg IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9wYXRjaCA9IHhtYWxsb2Moc3RydWN0 IG1pY3JvY29kZV9wYXRjaCk7CisKKyAgICBpZiAoICFtaWNyb2NvZGVfcGF0Y2ggfHwgIW5ld19t YyApCisgICAgeworICAgICAgICB4ZnJlZShtaWNyb2NvZGVfcGF0Y2gpOworICAgICAgICB4ZnJl ZShuZXdfbWMpOworICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAibWljcm9jb2RlOiBDYW4gbm90 IGFsbG9jYXRlIG1lbW9yeVxuIik7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKyAg ICBtZW1jcHkobmV3X21jLCBtYywgdG90YWxfc2l6ZSk7CisgICAgbWljcm9jb2RlX3BhdGNoLT5k YXRhID0gbmV3X21jOworCisgICAgLyoKKyAgICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IGEgc3lz dGVtIHdpdGggbWl4ZWQgc3RlcHBpbmcgQ1BVcywgc2F2ZSB0aGlzIHVjb2RlCisgICAgICogcGF0 Y2ggYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgaXQgbWF0Y2hlcyB3aXRoIGN1cnJlbnQgQ1BVLgor ICAgICAqLworICAgIGlmICggIW1pY3JvY29kZV9zYXZlX3BhdGNoKG1pY3JvY29kZV9wYXRjaCkg KQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICggbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCht YywgdWNpLT5jcHVfc2lnLnNpZywgdWNpLT5jcHVfc2lnLnBmLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1Y2ktPmNwdV9zaWcucmV2KSAhPSBORVdfVUNPREUgKQpAQCAtMjg3LDE4 ICszMjksMjMgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodW5zaWduZWQgaW50IGNwdSkK ICAgICB1bnNpZ25lZCBpbnQgdmFsWzJdOwogICAgIHVuc2lnbmVkIGludCBjcHVfbnVtID0gcmF3 X3NtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBzdHJ1Y3QgdWNvZGVfY3B1X2luZm8gKnVjaSA9ICZw ZXJfY3B1KHVjb2RlX2NwdV9pbmZvLCBjcHVfbnVtKTsKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9j b2RlX2ludGVsICptY19pbnRlbDsKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpw YXRjaDsKIAogICAgIC8qIFdlIHNob3VsZCBiaW5kIHRoZSB0YXNrIHRvIHRoZSBDUFUgKi8KICAg ICBCVUdfT04oY3B1X251bSAhPSBjcHUpOwogCi0gICAgaWYgKCB1Y2ktPm1jLm1jX2ludGVsID09 IE5VTEwgKQorICAgIHBhdGNoID0gbWljcm9jb2RlX2ZpbmRfcGF0Y2goKTsKKyAgICBpZiAoICFw YXRjaCApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCisgICAgbWNfaW50ZWwgPSBwYXRjaC0+ ZGF0YTsKKwogICAgIC8qIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gdGhlIHBoeXNpY2FsIHdyaXRlIHRv IE1TUiAweDc5ICovCiAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJm1pY3JvY29kZV91cGRhdGVfbG9j aywgZmxhZ3MpOwogCiAgICAgLyogd3JpdGUgbWljcm9jb2RlIHZpYSBNU1IgMHg3OSAqLwotICAg IHdybXNybChNU1JfSUEzMl9VQ09ERV9XUklURSwgKHVuc2lnbmVkIGxvbmcpdWNpLT5tYy5tY19p bnRlbC0+Yml0cyk7CisgICAgd3Jtc3JsKE1TUl9JQTMyX1VDT0RFX1dSSVRFLCAodW5zaWduZWQg bG9uZyltY19pbnRlbC0+Yml0cyk7CiAgICAgd3Jtc3JsKE1TUl9JQTMyX1VDT0RFX1JFViwgMHgw VUxMKTsKIAogICAgIC8qIEFzIGRvY3VtZW50ZWQgaW4gdGhlIFNETTogRG8gYSBDUFVJRCAxIGhl cmUgKi8KQEAgLTMwOSwxOSArMzU2LDE5IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKHVu c2lnbmVkIGludCBjcHUpCiAgICAgdmFsWzFdID0gKHVpbnQzMl90KShtc3JfY29udGVudCA+PiAz Mik7CiAKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtaWNyb2NvZGVfdXBkYXRlX2xvY2ss IGZsYWdzKTsKLSAgICBpZiAoIHZhbFsxXSAhPSB1Y2ktPm1jLm1jX2ludGVsLT5oZHIucmV2ICkK KyAgICBpZiAoIHZhbFsxXSAhPSBtY19pbnRlbC0+aGRyLnJldiApCiAgICAgewogICAgICAgICBw cmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogQ1BVJWQgdXBkYXRlIGZyb20gcmV2aXNpb24gIgog ICAgICAgICAgICAgICAgIiUjeCB0byAlI3ggZmFpbGVkLiBSZXN1bHRpbmcgcmV2aXNpb24gaXMg JSN4LlxuIiwgY3B1X251bSwKLSAgICAgICAgICAgICAgIHVjaS0+Y3B1X3NpZy5yZXYsIHVjaS0+ bWMubWNfaW50ZWwtPmhkci5yZXYsIHZhbFsxXSk7CisgICAgICAgICAgICAgICB1Y2ktPmNwdV9z aWcucmV2LCBtY19pbnRlbC0+aGRyLnJldiwgdmFsWzFdKTsKICAgICAgICAgcmV0dXJuIC1FSU87 CiAgICAgfQogICAgIHByaW50ayhLRVJOX0lORk8gIm1pY3JvY29kZTogQ1BVJWQgdXBkYXRlZCBm cm9tIHJldmlzaW9uICIKICAgICAgICAgICAgIiUjeCB0byAlI3gsIGRhdGUgPSAlMDR4LSUwMngt JTAyeCBcbiIsCiAgICAgICAgICAgIGNwdV9udW0sIHVjaS0+Y3B1X3NpZy5yZXYsIHZhbFsxXSwK LSAgICAgICAgICAgdWNpLT5tYy5tY19pbnRlbC0+aGRyLnllYXIsCi0gICAgICAgICAgIHVjaS0+ bWMubWNfaW50ZWwtPmhkci5tb250aCwKLSAgICAgICAgICAgdWNpLT5tYy5tY19pbnRlbC0+aGRy LmRheSk7CisgICAgICAgICAgIG1jX2ludGVsLT5oZHIueWVhciwKKyAgICAgICAgICAgbWNfaW50 ZWwtPmhkci5tb250aCwKKyAgICAgICAgICAgbWNfaW50ZWwtPmhkci5kYXkpOwogICAgIHVjaS0+ Y3B1X3NpZy5yZXYgPSB2YWxbMV07CiAKICAgICByZXR1cm4gMDsKQEAgLTQwNiw2ICs0NTMsOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9vcHMgbWljcm9jb2RlX2ludGVsX29wcyA9 IHsKICAgICAuY3B1X3JlcXVlc3RfbWljcm9jb2RlICAgICAgICAgICAgPSBjcHVfcmVxdWVzdF9t aWNyb2NvZGUsCiAgICAgLmNvbGxlY3RfY3B1X2luZm8gICAgICAgICAgICAgICAgID0gY29sbGVj dF9jcHVfaW5mbywKICAgICAuYXBwbHlfbWljcm9jb2RlICAgICAgICAgICAgICAgICAgPSBhcHBs eV9taWNyb2NvZGUsCisgICAgLmNvbXBhcmVfcGF0Y2ggICAgICAgICAgICAgICAgICAgID0gY29t cGFyZV9wYXRjaCwKKyAgICAuZnJlZV9wYXRjaCAgICAgICAgICAgICAgICAgICAgICAgPSBmcmVl X3BhdGNoLAorICAgIC5tYXRjaF9jcHUgICAgICAgICAgICAgICAgICAgICAgICA9IG1hdGNoX2Nw dSwKIH07CiAKIGludCBfX2luaXQgbWljcm9jb2RlX2luaXRfaW50ZWwodm9pZCkKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L21pY3JvY29kZS5oCmluZGV4IDczZWJlOWEuLjdmZjQyZmUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS14ODYvbWljcm9jb2RlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9taWNyb2Nv ZGUuaApAQCAtMSw2ICsxLDcgQEAKICNpZm5kZWYgQVNNX1g4Nl9fTUlDUk9DT0RFX0gKICNkZWZp bmUgQVNNX1g4Nl9fTUlDUk9DT0RFX0gKIAorI2luY2x1ZGUgPHhlbi9saXN0Lmg+CiAjaW5jbHVk ZSA8eGVuL3BlcmNwdS5oPgogCiBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgewpAQCAtMTIs NiArMTMsMTEgQEAgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IHsKIHN0cnVjdCBjcHVfc2ln bmF0dXJlOwogc3RydWN0IHVjb2RlX2NwdV9pbmZvOwogCitzdHJ1Y3QgbWljcm9jb2RlX3BhdGNo IHsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisgICAgdm9pZCAqZGF0YTsKK307CisKIHN0 cnVjdCBtaWNyb2NvZGVfb3BzIHsKICAgICBpbnQgKCptaWNyb2NvZGVfcmVzdW1lX21hdGNoKSh1 bnNpZ25lZCBpbnQgY3B1LCBjb25zdCB2b2lkICptYyk7CiAgICAgaW50ICgqY3B1X3JlcXVlc3Rf bWljcm9jb2RlKSh1bnNpZ25lZCBpbnQgY3B1LCBjb25zdCB2b2lkICpidWYsCkBAIC0xOSw2ICsy NSwxMCBAQCBzdHJ1Y3QgbWljcm9jb2RlX29wcyB7CiAgICAgaW50ICgqY29sbGVjdF9jcHVfaW5m bykodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdV9zaWduYXR1cmUgKmNzaWcpOwogICAgIGlu dCAoKmFwcGx5X21pY3JvY29kZSkodW5zaWduZWQgaW50IGNwdSk7CiAgICAgaW50ICgqc3RhcnRf dXBkYXRlKSh2b2lkKTsKKyAgICBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgKCpjb21wYXJl X3BhdGNoKSgKKyAgICAgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbmV3LCBjb25z dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpvbGQpOworICAgIHZvaWQgKCpmcmVlX3BhdGNoKShz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7CisgICAgYm9vbCAoKm1hdGNoX2NwdSkoY29u c3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpOwogfTsKIAogc3RydWN0IGNwdV9zaWdu YXR1cmUgewpAQCAtMzksNCArNDksNyBAQCBzdHJ1Y3QgdWNvZGVfY3B1X2luZm8gewogREVDTEFS RV9QRVJfQ1BVKHN0cnVjdCB1Y29kZV9jcHVfaW5mbywgdWNvZGVfY3B1X2luZm8pOwogZXh0ZXJu IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzICptaWNyb2NvZGVfb3BzOwogCitib29sIG1pY3Jv Y29kZV9zYXZlX3BhdGNoKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5ld19wYXRjaCk7Citjb25z dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICptaWNyb2NvZGVfZmluZF9wYXRjaCh2b2lkKTsKKwog I2VuZGlmIC8qIEFTTV9YODZfX01JQ1JPQ09ERV9IICovCi0tIAoxLjguMy4xCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==