From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D81AC19759 for ; Thu, 1 Aug 2019 10:19:17 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CF1C5206B8 for ; Thu, 1 Aug 2019 10:19:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CF1C5206B8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ht8Ar-0001ll-IN; Thu, 01 Aug 2019 10:19:05 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ht8Ap-0001kD-NX for xen-devel@lists.xenproject.org; Thu, 01 Aug 2019 10:19:03 +0000 X-Inumbo-ID: c802c3eb-b445-11e9-8980-bc764e045a96 Received: from mga17.intel.com (unknown [192.55.52.151]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id c802c3eb-b445-11e9-8980-bc764e045a96; Thu, 01 Aug 2019 10:19:01 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Aug 2019 03:19:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,333,1559545200"; d="scan'208";a="175207902" Received: from gao-cwp.sh.intel.com ([10.239.159.26]) by orsmga003.jf.intel.com with ESMTP; 01 Aug 2019 03:18:59 -0700 From: Chao Gao To: xen-devel@lists.xenproject.org Date: Thu, 1 Aug 2019 18:22:41 +0800 Message-Id: <1564654971-31328-7-git-send-email-chao.gao@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1564654971-31328-1-git-send-email-chao.gao@intel.com> References: <1564654971-31328-1-git-send-email-chao.gao@intel.com> Subject: [Xen-devel] [PATCH v8 06/16] microcode: introduce a global cache of ucode patch X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Ashok Raj , Wei Liu , Andrew Cooper , Jan Beulich , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" dG8gcmVwbGFjZSB0aGUgY3VycmVudCBwZXItY3B1IGNhY2hlICd1Y2ktPm1jJy4KCldpdGggdGhl IGFzc3VtcHRpb24gdGhhdCBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtIGhhdmUgdGhlIHNhbWUgc2ln bmF0dXJlCihmYW1pbHksIG1vZGVsLCBzdGVwcGluZyBhbmQgJ3BmJyksIG9uZSBtaWNyb2NvZGUg dXBkYXRlIG1hdGNoZXMgd2l0aApvbmUgY3B1IHNob3VsZCBtYXRjaCB3aXRoIG90aGVycy4gSGF2 aW5nIG11bHRpcGxlIG1pY3JvY29kZSByZXZpc2lvbnMKb24gZGlmZmVyZW50IGNwdXMgd291bGQg Y2F1c2Ugc3lzdGVtIHVuc3RhYmxlIGFuZCBzaG91bGQgYmUgYXZvaWRlZC4KSGVuY2UsIGNhY2hp bmcgb25seSBvbmUgbWljcm9jb2RlIHVwZGF0ZSBpcyBnb29kIGVub3VnaCBmb3IgYWxsIGNhc2Vz LgoKSW50cm9kdWNlIGEgZ2xvYmFsIHZhcmlhYmxlLCBtaWNyb2NvZGVfY2FjaGUsIHRvIHN0b3Jl IHRoZSBuZXdlc3QKbWF0Y2hpbmcgbWljcm9jb2RlIHVwZGF0ZS4gV2hlbmV2ZXIgd2UgZ2V0IGEg bmV3IHZhbGlkIG1pY3JvY29kZSB1cGRhdGUsCml0cyByZXZpc2lvbiBpZCBpcyBjb21wYXJlZCBh Z2FpbnN0IHRoYXQgb2YgdGhlIG1pY3JvY29kZSB1cGRhdGUgdG8KZGV0ZXJtaW5lIHdoZXRoZXIg dGhlICJtaWNyb2NvZGVfY2FjaGUiIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBBbmQKdGhpcyBnbG9i YWwgY2FjaGUgaXMgbG9hZGVkIHRvIGNwdSBpbiBhcHBseV9taWNyb2NvZGUoKS4KCkFsbCBvcGVy YXRpb25zIG9uIHRoZSBjYWNoZSBpcyBwcm90ZWN0ZWQgYnkgJ21pY3JvY29kZV9tdXRleCcuCgpO b3RlIHRoYXQgSSBkZWxpYmVyYXRlbHkgYXZvaWQgdG91Y2hpbmcgJ3VjaS0+bWMnIGFzIEkgYW0g Z29pbmcgdG8KcmVtb3ZlIGl0IGNvbXBsZXRlbHkgaW4gdGhlIG5leHQgcGF0Y2guCgpTaWduZWQt b2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgotLS0KQ2hhbmdlcyBpbiB2ODoK IC0gRnJlZSBnZW5lcmljIHdyYXBwZXIgc3RydWN0IGluIGdlbmVyYWwgY29kZQogLSBUcnkgdG8g dXBkYXRlIGNhY2hlIGFzIGxvbmcgYXMgYSBwYXRjaCBjb3ZlcnMgY3VycmVudCBjcHUuIFByZXZp c291bHksCiBjYWNoZSBpcyB1cGRhdGVkIG9ubHkgaWYgdGhlIHBhdGNoIGlzIG5ld2VyIHRoYW4g Y3VycmVudCB1cGRhdGUgcmV2aXNpb24gaW4KIHRoZSBDUFUuIFRoZSBzbWFsbCBkaWZmZXJlbmNl IGNhbiB3b3JrIGFyb3VuZCBhIGJyb2tlbiBiaW9zIHdoaWNoIG9ubHkKIGFwcGxpZXMgbWljcm9j b2RlIHVwZGF0ZSB0byBCU1AgYW5kIHNvZnR3YXJlIGhhcyB0byBhcHBseSB0aGUgc2FtZQogdXBk YXRlIHRvIG90aGVyIENQVXMuCgpDaGFuZ2VzIGluIHY3OgogLSByZXdvcmtlZCB0byBjYWNoZSBv bmx5IG9uZSBtaWNyb2NvZGUgcGF0Y2ggcmF0aGVyIHRoYW4gYSBsaXN0IG9mCiBtaWNyb2NvZGUg cGF0Y2hlcy4KLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMgICAgICAgIHwgMzkgKysrKysr KysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jICAgIHwgOTAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9taWNyb2Nv ZGVfaW50ZWwuYyAgfCA3NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiB4ZW4v aW5jbHVkZS9hc20teDg2L21pY3JvY29kZS5oIHwgMTcgKysrKysrKysKIDQgZmlsZXMgY2hhbmdl ZCwgMTk4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwppbmRleCA0MjFk NTdlLi5hODQyNWI4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKKysrIGIv eGVuL2FyY2gveDg2L21pY3JvY29kZS5jCkBAIC02MSw2ICs2MSw5IEBAIHN0YXRpYyBzdHJ1Y3Qg dWNvZGVfbW9kX2Jsb2IgX19pbml0ZGF0YSB1Y29kZV9ibG9iOwogICovCiBzdGF0aWMgYm9vbF90 IF9faW5pdGRhdGEgdWNvZGVfc2NhbjsKIAorLyogUHJvdGVjdGVkIGJ5IG1pY3JvY29kZV9tdXRl eCAqLworc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9jYWNoZTsKKwog dm9pZCBfX2luaXQgbWljcm9jb2RlX3NldF9tb2R1bGUodW5zaWduZWQgaW50IGlkeCkKIHsKICAg ICB1Y29kZV9tb2RfaWR4ID0gaWR4OwpAQCAtMjYyLDYgKzI2NSw0MiBAQCBpbnQgbWljcm9jb2Rl X3Jlc3VtZV9jcHUodW5zaWduZWQgaW50IGNwdSkKICAgICByZXR1cm4gZXJyOwogfQogCit2b2lk IG1pY3JvY29kZV9mcmVlX3BhdGNoKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9w YXRjaCkKK3sKKyAgICBtaWNyb2NvZGVfb3BzLT5mcmVlX3BhdGNoKG1pY3JvY29kZV9wYXRjaC0+ bWMpOworICAgIHhmcmVlKG1pY3JvY29kZV9wYXRjaCk7Cit9CisKK2NvbnN0IHN0cnVjdCBtaWNy b2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9nZXRfY2FjaGUodm9pZCkKK3sKKyAgICBBU1NFUlQoc3Bp bl9pc19sb2NrZWQoJm1pY3JvY29kZV9tdXRleCkpOworCisgICAgcmV0dXJuIG1pY3JvY29kZV9j YWNoZTsKK30KKworLyogUmV0dXJuIHRydWUgaWYgY2FjaGUgZ2V0cyB1cGRhdGVkLiBPdGhlcndp c2UsIHJldHVybiBmYWxzZSAqLworYm9vbCBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHN0cnVjdCBt aWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQoreworCisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZt aWNyb2NvZGVfbXV0ZXgpKTsKKworICAgIGlmICggIW1pY3JvY29kZV9jYWNoZSApCisgICAgICAg IG1pY3JvY29kZV9jYWNoZSA9IHBhdGNoOworICAgIGVsc2UgaWYgKCBtaWNyb2NvZGVfb3BzLT5j b21wYXJlX3BhdGNoKHBhdGNoLCBtaWNyb2NvZGVfY2FjaGUpID09CisgICAgICAgICAgICAgICAg ICBORVdfVUNPREUgKQorICAgIHsKKyAgICAgICAgbWljcm9jb2RlX2ZyZWVfcGF0Y2gobWljcm9j b2RlX2NhY2hlKTsKKyAgICAgICAgbWljcm9jb2RlX2NhY2hlID0gcGF0Y2g7CisgICAgfQorICAg IGVsc2UKKyAgICB7CisgICAgICAgIG1pY3JvY29kZV9mcmVlX3BhdGNoKHBhdGNoKTsKKyAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMg aW50IG1pY3JvY29kZV91cGRhdGVfY3B1KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7 CiAgICAgaW50IGVycjsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMg Yi94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jCmluZGV4IGU5YTU2N2YuLmJiMDdlMWUgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMKKysrIGIveGVuL2FyY2gveDg2 L21pY3JvY29kZV9hbWQuYwpAQCAtMTkwLDI0ICsxOTAsODMgQEAgc3RhdGljIGVudW0gbWljcm9j b2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKICAgICByZXR1cm4gTkVXX1VDT0RFOwog fQogCitzdGF0aWMgYm9vbCBtYXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq cGF0Y2gpCit7CisgICAgaWYgKCAhcGF0Y2ggKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg cmV0dXJuIG1pY3JvY29kZV9maXRzKHBhdGNoLT5tY19hbWQsIHNtcF9wcm9jZXNzb3JfaWQoKSkg PT0gTkVXX1VDT0RFOworfQorCitzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqYWxsb2Nf bWljcm9jb2RlX3BhdGNoKAorICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfYW1kICptY19hbWQp Cit7CisgICAgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWljcm9jb2RlX3BhdGNoID0geG1hbGxv YyhzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoKTsKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX2FtZCAqY2Fj aGUgPSB4bWFsbG9jKHN0cnVjdCBtaWNyb2NvZGVfYW1kKTsKKyAgICB2b2lkICptcGIgPSB4bWFs bG9jX2J5dGVzKG1jX2FtZC0+bXBiX3NpemUpOworICAgIHN0cnVjdCBlcXVpdl9jcHVfZW50cnkg KmVxdWl2X2NwdV90YWJsZSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtYWxs b2NfYnl0ZXMobWNfYW1kLT5lcXVpdl9jcHVfdGFibGVfc2l6ZSk7CisKKyAgICBpZiAoICFtaWNy b2NvZGVfcGF0Y2ggfHwgIWNhY2hlIHx8ICFtcGIgfHwgIWVxdWl2X2NwdV90YWJsZSApCisgICAg eworICAgICAgICB4ZnJlZShtaWNyb2NvZGVfcGF0Y2gpOworICAgICAgICB4ZnJlZShjYWNoZSk7 CisgICAgICAgIHhmcmVlKG1wYik7CisgICAgICAgIHhmcmVlKGVxdWl2X2NwdV90YWJsZSk7Cisg ICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworICAgIH0KKworICAgIG1lbWNweShtcGIs IG1jX2FtZC0+bXBiLCBtY19hbWQtPm1wYl9zaXplKTsKKyAgICBjYWNoZS0+bXBiID0gbXBiOwor ICAgIGNhY2hlLT5tcGJfc2l6ZSA9IG1jX2FtZC0+bXBiX3NpemU7CisgICAgbWVtY3B5KGVxdWl2 X2NwdV90YWJsZSwgbWNfYW1kLT5lcXVpdl9jcHVfdGFibGUsCisgICAgICAgICAgIG1jX2FtZC0+ ZXF1aXZfY3B1X3RhYmxlX3NpemUpOworICAgIGNhY2hlLT5lcXVpdl9jcHVfdGFibGUgPSBlcXVp dl9jcHVfdGFibGU7CisgICAgY2FjaGUtPmVxdWl2X2NwdV90YWJsZV9zaXplID0gbWNfYW1kLT5l cXVpdl9jcHVfdGFibGVfc2l6ZTsKKyAgICBtaWNyb2NvZGVfcGF0Y2gtPm1jX2FtZCA9IGNhY2hl OworCisgICAgcmV0dXJuIG1pY3JvY29kZV9wYXRjaDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9w YXRjaCh2b2lkICptYykKK3sKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1kID0gbWM7 CisKKyAgICB4ZnJlZShtY19hbWQtPmVxdWl2X2NwdV90YWJsZSk7CisgICAgeGZyZWUobWNfYW1k LT5tcGIpOworICAgIHhmcmVlKG1jX2FtZCk7Cit9CisKK3N0YXRpYyBlbnVtIG1pY3JvY29kZV9t YXRjaF9yZXN1bHQgY29tcGFyZV9wYXRjaCgKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3Bh dGNoICpuZXcsIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm9sZCkKK3sKKyAgICBjb25z dCBzdHJ1Y3QgbWljcm9jb2RlX2FtZCAqbmV3X21jID0gbmV3LT5tY19hbWQ7CisgICAgY29uc3Qg c3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpuZXdfaGVhZGVyID0gbmV3X21jLT5tcGI7Cisg ICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9hbWQgKm9sZF9tYyA9IG9sZC0+bWNfYW1kOworICAg IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCAqb2xkX2hlYWRlciA9IG9sZF9tYy0+ bXBiOworCisgICAgaWYgKCBuZXdfaGVhZGVyLT5wcm9jZXNzb3JfcmV2X2lkID09IG9sZF9oZWFk ZXItPnByb2Nlc3Nvcl9yZXZfaWQgKQorICAgICAgICByZXR1cm4gKG5ld19oZWFkZXItPnBhdGNo X2lkID4gb2xkX2hlYWRlci0+cGF0Y2hfaWQpID8KKyAgICAgICAgICAgICAgICBORVdfVUNPREUg OiBPTERfVUNPREU7CisKKyAgICByZXR1cm4gTUlTX1VDT0RFOworfQorCiBzdGF0aWMgaW50IGFw cGx5X21pY3JvY29kZSh1bnNpZ25lZCBpbnQgY3B1KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAgICAgc3RydWN0IHVjb2RlX2NwdV9pbmZvICp1Y2kgPSAmcGVyX2NwdSh1Y29kZV9jcHVf aW5mbywgY3B1KTsKICAgICB1aW50MzJfdCByZXY7Ci0gICAgc3RydWN0IG1pY3JvY29kZV9hbWQg Km1jX2FtZCA9IHVjaS0+bWMubWNfYW1kOwotICAgIHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2Ft ZCAqaGRyOwogICAgIGludCBod19lcnI7CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFk ZXJfYW1kICpoZHI7CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2ggPSBt aWNyb2NvZGVfZ2V0X2NhY2hlKCk7CiAKICAgICAvKiBXZSBzaG91bGQgYmluZCB0aGUgdGFzayB0 byB0aGUgQ1BVICovCiAgICAgQlVHX09OKHJhd19zbXBfcHJvY2Vzc29yX2lkKCkgIT0gY3B1KTsK IAotICAgIGlmICggbWNfYW1kID09IE5VTEwgKQorICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkg KQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgIGhkciA9IG1jX2FtZC0+bXBiOwotICAg IGlmICggaGRyID09IE5VTEwgKQotICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICBoZHIgPSBw YXRjaC0+bWNfYW1kLT5tcGI7CiAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmbWljcm9jb2RlX3Vw ZGF0ZV9sb2NrLCBmbGFncyk7CiAKQEAgLTUwMiw3ICs1NjEsMjEgQEAgc3RhdGljIGludCBjcHVf cmVxdWVzdF9taWNyb2NvZGUodW5zaWduZWQgaW50IGNwdSwgY29uc3Qgdm9pZCAqYnVmLAogICAg IHdoaWxlICggKGVycm9yID0gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZChtY19hbWQsIGJ1Ziwg YnVmc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jm9mZnNldCkpID09IDAgKQogICAgIHsKLSAgICAgICAgaWYgKCBtaWNyb2NvZGVfZml0cyhtY19h bWQsIGNwdSkgPT0gTkVXX1VDT0RFICkKKyAgICAgICAgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq bmV3X3BhdGNoID0gYWxsb2NfbWljcm9jb2RlX3BhdGNoKG1jX2FtZCk7CisKKyAgICAgICAgaWYg KCBJU19FUlIobmV3X3BhdGNoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yID0gUFRS X0VSUihuZXdfcGF0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICAvKiBVcGRhdGUgY2FjaGUgaWYgdGhpcyBwYXRjaCBjb3ZlcnMgY3VycmVudCBDUFUgKi8KKyAg ICAgICAgaWYgKCBtaWNyb2NvZGVfZml0cyhuZXdfcGF0Y2gtPm1jX2FtZCwgY3B1KSAhPSBNSVNf VUNPREUgKQorICAgICAgICAgICAgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShuZXdfcGF0Y2gpOwor ICAgICAgICBlbHNlCisgICAgICAgICAgICBtaWNyb2NvZGVfZnJlZV9wYXRjaChuZXdfcGF0Y2gp OworCisgICAgICAgIGlmICggbWF0Y2hfY3B1KG1pY3JvY29kZV9nZXRfY2FjaGUoKSkgKQogICAg ICAgICB7CiAgICAgICAgICAgICBlcnJvciA9IGFwcGx5X21pY3JvY29kZShjcHUpOwogICAgICAg ICAgICAgaWYgKCBlcnJvciApCkBAIC02NDcsNiArNzIwLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBtaWNyb2NvZGVfb3BzIG1pY3JvY29kZV9hbWRfb3BzID0gewogICAgIC5jb2xsZWN0X2NwdV9p bmZvICAgICAgICAgICAgICAgICA9IGNvbGxlY3RfY3B1X2luZm8sCiAgICAgLmFwcGx5X21pY3Jv Y29kZSAgICAgICAgICAgICAgICAgID0gYXBwbHlfbWljcm9jb2RlLAogICAgIC5zdGFydF91cGRh dGUgICAgICAgICAgICAgICAgICAgICA9IHN0YXJ0X3VwZGF0ZSwKKyAgICAuZnJlZV9wYXRjaCAg ICAgICAgICAgICAgICAgICAgICAgPSBmcmVlX3BhdGNoLAorICAgIC5jb21wYXJlX3BhdGNoICAg ICAgICAgICAgICAgICAgICA9IGNvbXBhcmVfcGF0Y2gsCisgICAgLm1hdGNoX2NwdSAgICAgICAg ICAgICAgICAgICAgICAgID0gbWF0Y2hfY3B1LAogfTsKIAogaW50IF9faW5pdCBtaWNyb2NvZGVf aW5pdF9hbWQodm9pZCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50ZWwu YyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50ZWwuYwppbmRleCA2NDQ2NjBkLi44MTE0MjFl IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2ludGVsLmMKKysrIGIveGVuL2Fy Y2gveDg2L21pY3JvY29kZV9pbnRlbC5jCkBAIC0yNTUsNiArMjU1LDMxIEBAIHN0YXRpYyBpbnQg bWljcm9jb2RlX3Nhbml0eV9jaGVjayh2b2lkICptYykKICAgICByZXR1cm4gMDsKIH0KIAorc3Rh dGljIGJvb2wgbWF0Y2hfY3B1KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQor eworICAgIGNvbnN0IHN0cnVjdCB1Y29kZV9jcHVfaW5mbyAqdWNpID0gJnRoaXNfY3B1KHVjb2Rl X2NwdV9pbmZvKTsKKworICAgIGlmICggIXBhdGNoICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor CisgICAgcmV0dXJuIG1pY3JvY29kZV91cGRhdGVfbWF0Y2goJnBhdGNoLT5tY19pbnRlbC0+aGRy LCB1Y2ktPmNwdV9zaWcuc2lnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2kt PmNwdV9zaWcucGYsIHVjaS0+Y3B1X3NpZy5yZXYpID09IE5FV19VQ09ERTsKK30KKworc3RhdGlj IHZvaWQgZnJlZV9wYXRjaCh2b2lkICptYykKK3sKKyAgICB4ZnJlZShtYyk7Cit9CisKK3N0YXRp YyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9wYXRjaCgKKyAgICBjb25zdCBz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpuZXcsIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gg Km9sZCkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9pbnRlbCAqb2xkX2hl YWRlciA9ICZvbGQtPm1jX2ludGVsLT5oZHI7CisKKyAgICByZXR1cm4gbWljcm9jb2RlX3VwZGF0 ZV9tYXRjaCgmbmV3LT5tY19pbnRlbC0+aGRyLCBvbGRfaGVhZGVyLT5zaWcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2hlYWRlci0+cGYsIG9sZF9oZWFkZXItPnJldik7 Cit9CisKIC8qCiAgKiByZXR1cm4gMCAtIG5vIHVwZGF0ZSBmb3VuZAogICogcmV0dXJuIDEgLSBm b3VuZCB1cGRhdGUKQEAgLTI2NSwxMSArMjkwLDI3IEBAIHN0YXRpYyBpbnQgZ2V0X21hdGNoaW5n X21pY3JvY29kZShjb25zdCB2b2lkICptYywgdW5zaWduZWQgaW50IGNwdSkKICAgICBzdHJ1Y3Qg dWNvZGVfY3B1X2luZm8gKnVjaSA9ICZwZXJfY3B1KHVjb2RlX2NwdV9pbmZvLCBjcHUpOwogICAg IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIgPSBtYzsKICAg ICB1bnNpZ25lZCBsb25nIHRvdGFsX3NpemUgPSBnZXRfdG90YWxzaXplKG1jX2hlYWRlcik7Ci0g ICAgdm9pZCAqbmV3X21jOworICAgIHZvaWQgKm5ld19tYyA9IHhtYWxsb2NfYnl0ZXModG90YWxf c2l6ZSk7CisgICAgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbmV3X3BhdGNoID0geG1hbGxvYyhz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoKTsKIAotICAgIGlmICggbWljcm9jb2RlX3VwZGF0ZV9tYXRj aChtYywgdWNpLT5jcHVfc2lnLnNpZywgdWNpLT5jcHVfc2lnLnBmLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1Y2ktPmNwdV9zaWcucmV2KSAhPSBORVdfVUNPREUgKQorICAgIGlm ICggIW5ld19wYXRjaCB8fCAhbmV3X21jICkKKyAgICB7CisgICAgICAgIHhmcmVlKG5ld19wYXRj aCk7CisgICAgICAgIHhmcmVlKG5ld19tYyk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAg IH0KKyAgICBtZW1jcHkobmV3X21jLCBtYywgdG90YWxfc2l6ZSk7CisgICAgbmV3X3BhdGNoLT5t Y19pbnRlbCA9IG5ld19tYzsKKworICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoaXMgcGF0Y2ggY292 ZXJzIGN1cnJlbnQgQ1BVICovCisgICAgaWYgKCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKCZuZXdf cGF0Y2gtPm1jX2ludGVsLT5oZHIsIHVjaS0+Y3B1X3NpZy5zaWcsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVjaS0+Y3B1X3NpZy5wZiwgdWNpLT5jcHVfc2lnLnJldikgPT0gTUlT X1VDT0RFICkKKyAgICB7CisgICAgICAgIG1pY3JvY29kZV9mcmVlX3BhdGNoKG5ld19wYXRjaCk7 CiAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1pY3JvY29kZV91cGRhdGVfY2FjaGUo bmV3X3BhdGNoKTsKIAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGZvdW5kIGEgbWF0 Y2hpbmcgbWljcm9jb2RlIHVwZGF0ZSB3aXRoIgogICAgICAgICAgICAgICIgdmVyc2lvbiAlI3gg KGN1cnJlbnQ9JSN4KVxuIiwKQEAgLTI5NCwxOCArMzM1LDIyIEBAIHN0YXRpYyBpbnQgYXBwbHlf bWljcm9jb2RlKHVuc2lnbmVkIGludCBjcHUpCiAgICAgdW5zaWduZWQgaW50IHZhbFsyXTsKICAg ICB1bnNpZ25lZCBpbnQgY3B1X251bSA9IHJhd19zbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgc3Ry dWN0IHVjb2RlX2NwdV9pbmZvICp1Y2kgPSAmcGVyX2NwdSh1Y29kZV9jcHVfaW5mbywgY3B1X251 bSk7CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqbWNfaW50ZWw7CisgICAgY29u c3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2ggPSBtaWNyb2NvZGVfZ2V0X2NhY2hlKCk7 CiAKICAgICAvKiBXZSBzaG91bGQgYmluZCB0aGUgdGFzayB0byB0aGUgQ1BVICovCiAgICAgQlVH X09OKGNwdV9udW0gIT0gY3B1KTsKIAotICAgIGlmICggdWNpLT5tYy5tY19pbnRlbCA9PSBOVUxM ICkKKyAgICBpZiAoICFtYXRjaF9jcHUocGF0Y2gpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CiAKKyAgICBtY19pbnRlbCA9IHBhdGNoLT5tY19pbnRlbDsKKwogICAgIC8qIHNlcmlhbGl6ZSBh Y2Nlc3MgdG8gdGhlIHBoeXNpY2FsIHdyaXRlIHRvIE1TUiAweDc5ICovCiAgICAgc3Bpbl9sb2Nr X2lycXNhdmUoJm1pY3JvY29kZV91cGRhdGVfbG9jaywgZmxhZ3MpOwogCiAgICAgLyogd3JpdGUg bWljcm9jb2RlIHZpYSBNU1IgMHg3OSAqLwotICAgIHdybXNybChNU1JfSUEzMl9VQ09ERV9XUklU RSwgKHVuc2lnbmVkIGxvbmcpdWNpLT5tYy5tY19pbnRlbC0+Yml0cyk7CisgICAgd3Jtc3JsKE1T Ul9JQTMyX1VDT0RFX1dSSVRFLCAodW5zaWduZWQgbG9uZyltY19pbnRlbC0+Yml0cyk7CiAgICAg d3Jtc3JsKE1TUl9JQTMyX1VDT0RFX1JFViwgMHgwVUxMKTsKIAogICAgIC8qIEFzIGRvY3VtZW50 ZWQgaW4gdGhlIFNETTogRG8gYSBDUFVJRCAxIGhlcmUgKi8KQEAgLTMxNiwxOSArMzYxLDE3IEBA IHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKHVuc2lnbmVkIGludCBjcHUpCiAgICAgdmFsWzFd ID0gKHVpbnQzMl90KShtc3JfY29udGVudCA+PiAzMik7CiAKICAgICBzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZtaWNyb2NvZGVfdXBkYXRlX2xvY2ssIGZsYWdzKTsKLSAgICBpZiAoIHZhbFsxXSAh PSB1Y2ktPm1jLm1jX2ludGVsLT5oZHIucmV2ICkKKyAgICBpZiAoIHZhbFsxXSAhPSBtY19pbnRl bC0+aGRyLnJldiApCiAgICAgewogICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTog Q1BVJWQgdXBkYXRlIGZyb20gcmV2aXNpb24gIgogICAgICAgICAgICAgICAgIiUjeCB0byAlI3gg ZmFpbGVkLiBSZXN1bHRpbmcgcmV2aXNpb24gaXMgJSN4LlxuIiwgY3B1X251bSwKLSAgICAgICAg ICAgICAgIHVjaS0+Y3B1X3NpZy5yZXYsIHVjaS0+bWMubWNfaW50ZWwtPmhkci5yZXYsIHZhbFsx XSk7CisgICAgICAgICAgICAgICB1Y2ktPmNwdV9zaWcucmV2LCBtY19pbnRlbC0+aGRyLnJldiwg dmFsWzFdKTsKICAgICAgICAgcmV0dXJuIC1FSU87CiAgICAgfQogICAgIHByaW50ayhLRVJOX0lO Rk8gIm1pY3JvY29kZTogQ1BVJWQgdXBkYXRlZCBmcm9tIHJldmlzaW9uICIKICAgICAgICAgICAg IiUjeCB0byAlI3gsIGRhdGUgPSAlMDR4LSUwMngtJTAyeCBcbiIsCi0gICAgICAgICAgIGNwdV9u dW0sIHVjaS0+Y3B1X3NpZy5yZXYsIHZhbFsxXSwKLSAgICAgICAgICAgdWNpLT5tYy5tY19pbnRl bC0+aGRyLnllYXIsCi0gICAgICAgICAgIHVjaS0+bWMubWNfaW50ZWwtPmhkci5tb250aCwKLSAg ICAgICAgICAgdWNpLT5tYy5tY19pbnRlbC0+aGRyLmRheSk7CisgICAgICAgICAgIGNwdV9udW0s IHVjaS0+Y3B1X3NpZy5yZXYsIHZhbFsxXSwgbWNfaW50ZWwtPmhkci55ZWFyLAorICAgICAgICAg ICBtY19pbnRlbC0+aGRyLm1vbnRoLCBtY19pbnRlbC0+aGRyLmRheSk7CiAgICAgdWNpLT5jcHVf c2lnLnJldiA9IHZhbFsxXTsKIAogICAgIHJldHVybiAwOwpAQCAtMzY4LDcgKzQxMSw2IEBAIHN0 YXRpYyBpbnQgY3B1X3JlcXVlc3RfbWljcm9jb2RlKHVuc2lnbmVkIGludCBjcHUsIGNvbnN0IHZv aWQgKmJ1ZiwKICAgICBsb25nIG9mZnNldCA9IDA7CiAgICAgaW50IGVycm9yID0gMDsKICAgICB2 b2lkICptYzsKLSAgICB1bnNpZ25lZCBpbnQgbWF0Y2hpbmdfY291bnQgPSAwOwogCiAgICAgLyog V2Ugc2hvdWxkIGJpbmQgdGhlIHRhc2sgdG8gdGhlIENQVSAqLwogICAgIEJVR19PTihjcHUgIT0g cmF3X3NtcF9wcm9jZXNzb3JfaWQoKSk7CkBAIC0zODYsMTAgKzQyOCw4IEBAIHN0YXRpYyBpbnQg Y3B1X3JlcXVlc3RfbWljcm9jb2RlKHVuc2lnbmVkIGludCBjcHUsIGNvbnN0IHZvaWQgKmJ1ZiwK ICAgICAgICAgICogbGV0cyBrZWVwIHNlYXJjaGluZyB0aWxsIHRoZSBsYXRlc3QgdmVyc2lvbgog ICAgICAgICAgKi8KICAgICAgICAgaWYgKCBlcnJvciA9PSAxICkKLSAgICAgICAgewotICAgICAg ICAgICAgbWF0Y2hpbmdfY291bnQrKzsKICAgICAgICAgICAgIGVycm9yID0gMDsKLSAgICAgICAg fQorCiAgICAgICAgIHhmcmVlKG1jKTsKICAgICB9CiAgICAgaWYgKCBvZmZzZXQgPiAwICkKQEAg LTM5Nyw3ICs0MzcsNyBAQCBzdGF0aWMgaW50IGNwdV9yZXF1ZXN0X21pY3JvY29kZSh1bnNpZ25l ZCBpbnQgY3B1LCBjb25zdCB2b2lkICpidWYsCiAgICAgaWYgKCBvZmZzZXQgPCAwICkKICAgICAg ICAgZXJyb3IgPSBvZmZzZXQ7CiAKLSAgICBpZiAoICFlcnJvciAmJiBtYXRjaGluZ19jb3VudCAp CisgICAgaWYgKCAhZXJyb3IgJiYgbWF0Y2hfY3B1KG1pY3JvY29kZV9nZXRfY2FjaGUoKSkgKQog ICAgICAgICBlcnJvciA9IGFwcGx5X21pY3JvY29kZShjcHUpOwogCiAgICAgcmV0dXJuIGVycm9y OwpAQCAtNDEzLDYgKzQ1Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX29wcyBt aWNyb2NvZGVfaW50ZWxfb3BzID0gewogICAgIC5jcHVfcmVxdWVzdF9taWNyb2NvZGUgICAgICAg ICAgICA9IGNwdV9yZXF1ZXN0X21pY3JvY29kZSwKICAgICAuY29sbGVjdF9jcHVfaW5mbyAgICAg ICAgICAgICAgICAgPSBjb2xsZWN0X2NwdV9pbmZvLAogICAgIC5hcHBseV9taWNyb2NvZGUgICAg ICAgICAgICAgICAgICA9IGFwcGx5X21pY3JvY29kZSwKKyAgICAuZnJlZV9wYXRjaCAgICAgICAg ICAgICAgICAgICAgICAgPSBmcmVlX3BhdGNoLAorICAgIC5jb21wYXJlX3BhdGNoICAgICAgICAg ICAgICAgICAgICA9IGNvbXBhcmVfcGF0Y2gsCisgICAgLm1hdGNoX2NwdSAgICAgICAgICAgICAg ICAgICAgICAgID0gbWF0Y2hfY3B1LAogfTsKIAogaW50IF9faW5pdCBtaWNyb2NvZGVfaW5pdF9p bnRlbCh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9taWNyb2NvZGUuaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmgKaW5kZXggODgyZjU2MC4uNDI5NDliMSAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9taWNyb2NvZGUuaAorKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L21pY3JvY29kZS5oCkBAIC0xMiw2ICsxMiwxNCBAQCBlbnVtIG1pY3JvY29k ZV9tYXRjaF9yZXN1bHQgewogc3RydWN0IGNwdV9zaWduYXR1cmU7CiBzdHJ1Y3QgdWNvZGVfY3B1 X2luZm87CiAKK3N0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggeworICAgIHVuaW9uIHsKKyAgICAgICAg c3RydWN0IG1pY3JvY29kZV9pbnRlbCAqbWNfaW50ZWw7CisgICAgICAgIHN0cnVjdCBtaWNyb2Nv ZGVfYW1kICptY19hbWQ7CisgICAgICAgIHZvaWQgKm1jOworICAgIH07Cit9OworCiBzdHJ1Y3Qg bWljcm9jb2RlX29wcyB7CiAgICAgaW50ICgqbWljcm9jb2RlX3Jlc3VtZV9tYXRjaCkodW5zaWdu ZWQgaW50IGNwdSwgY29uc3Qgdm9pZCAqbWMpOwogICAgIGludCAoKmNwdV9yZXF1ZXN0X21pY3Jv Y29kZSkodW5zaWduZWQgaW50IGNwdSwgY29uc3Qgdm9pZCAqYnVmLApAQCAtMTksNiArMjcsMTEg QEAgc3RydWN0IG1pY3JvY29kZV9vcHMgewogICAgIGludCAoKmNvbGxlY3RfY3B1X2luZm8pKHVu c2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKTsKICAgICBpbnQgKCph cHBseV9taWNyb2NvZGUpKHVuc2lnbmVkIGludCBjcHUpOwogICAgIGludCAoKnN0YXJ0X3VwZGF0 ZSkodm9pZCk7CisgICAgdm9pZCAoKmZyZWVfcGF0Y2gpKHZvaWQgKm1jKTsKKyAgICBib29sICgq bWF0Y2hfY3B1KShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7CisgICAgZW51 bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0ICgqY29tcGFyZV9wYXRjaCkoCisgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpuZXcsCisgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgbWljcm9jb2RlX3BhdGNoICpvbGQpOwogfTsKIAogc3RydWN0IGNwdV9zaWduYXR1cmUgewpA QCAtMzksNCArNTIsOCBAQCBzdHJ1Y3QgdWNvZGVfY3B1X2luZm8gewogREVDTEFSRV9QRVJfQ1BV KHN0cnVjdCB1Y29kZV9jcHVfaW5mbywgdWNvZGVfY3B1X2luZm8pOwogZXh0ZXJuIGNvbnN0IHN0 cnVjdCBtaWNyb2NvZGVfb3BzICptaWNyb2NvZGVfb3BzOwogCitjb25zdCBzdHJ1Y3QgbWljcm9j b2RlX3BhdGNoICptaWNyb2NvZGVfZ2V0X2NhY2hlKHZvaWQpOworYm9vbCBtaWNyb2NvZGVfdXBk YXRlX2NhY2hlKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKTsKK3ZvaWQgbWljcm9jb2Rl X2ZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpOworCiAjZW5kaWYgLyog QVNNX1g4Nl9fTUlDUk9DT0RFX0ggKi8KLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs