From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xu, Quan" Subject: [PATCH v14 3/3] IOMMU: fix vt-d Device-TLB flush timeout issue Date: Mon, 4 Jul 2016 17:11:42 +0800 Message-ID: <1467623502-59531-4-git-send-email-quan.xu@intel.com> References: <1467623502-59531-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467623502-59531-1-git-send-email-quan.xu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Feng Wu , Quan Xu , dario.faggioli@citrix.com, Jan Beulich , quan.xu2@aliyun.com List-Id: xen-devel@lists.xenproject.org RnJvbTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+CgpJZiBEZXZpY2UtVExCIGZsdXNoIHRp bWVkIG91dCwgd2UgaGlkZSB0aGUgdGFyZ2V0IEFUUyBkZXZpY2UKaW1tZWRpYXRlbHkuIEJ5IGhp ZGluZyB0aGUgZGV2aWNlLCB3ZSBtYWtlIHN1cmUgaXQgY2FuJ3QgYmUKYXNzaWduZWQgdG8gYW55 IGRvbWFpbiBhbnkgbG9uZ2VyIChzZWUgZGV2aWNlX2Fzc2lnbmVkKS4KClNpZ25lZC1vZmYtYnk6 IFF1YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgoKQ0M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpDQzogRmVuZyBX dSA8ZmVuZy53dUBpbnRlbC5jb20+CgotLS0KdjE0OiByZWxlYXNlIHRoZSBsb2NrIGJlZm9yZSBy ZXR1cm4uCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgICB8IDI0ICsr KysrKysrKysrKysrKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgICAgICAgICB8ICA2 ICsrLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaCAgfCAgNSArKy0tCiB4 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvcWludmFsLmMgIHwgNTYgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvYXRz LmMgfCAxMSArKy0tLS0tCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICAgIHwg IDMgKysKIHhlbi9pbmNsdWRlL3hlbi9wY2kuaCAgICAgICAgICAgICAgICAgfCAgMSArCiA3IGZp bGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9pb21tdS5jCmluZGV4IGQ3OTNmNWQuLjIzNTNjN2QgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9t bXUuYwpAQCAtMzYxLDYgKzM2MSwzMCBAQCBpbnQgaW9tbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVj dCBkb21haW4gKmQpCiAgICAgcmV0dXJuIHJjOwogfQogCit2b2lkIGlvbW11X2Rldl9pb3RsYl9m bHVzaF90aW1lb3V0KHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworICAgIHBjaWRldnNfbG9jaygpOwor CisgICAgQVNTRVJUKHBkZXYtPmRvbWFpbik7CisgICAgaWYgKCBkICE9IHBkZXYtPmRvbWFpbiAp CisgICAgeworICAgICAgICBwY2lkZXZzX3VubG9jaygpOworICAgICAgICByZXR1cm47CisgICAg fQorCisgICAgbGlzdF9kZWwoJnBkZXYtPmRvbWFpbl9saXN0KTsKKyAgICBwZGV2LT5kb21haW4g PSBOVUxMOworICAgIHBjaV9oaWRlX2V4aXN0aW5nX2RldmljZShwZGV2KTsKKyAgICBpZiAoICFk LT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCisgICAgICAgIHByaW50 ayhYRU5MT0dfRVJSCisgICAgICAgICAgICAgICAiZG9tJWQ6IEFUUyBkZXZpY2UgJTA0eDolMDJ4 OiUwMnguJXUgZmx1c2ggZmFpbGVkXG4iLAorICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBw ZGV2LT5zZWcsIHBkZXYtPmJ1cywgUENJX1NMT1QocGRldi0+ZGV2Zm4pLAorICAgICAgICAgICAg ICAgUENJX0ZVTkMocGRldi0+ZGV2Zm4pKTsKKworICAgIHBjaWRldnNfdW5sb2NrKCk7Cit9CisK IGludCBfX2luaXQgaW9tbXVfc2V0dXAodm9pZCkKIHsKICAgICBpbnQgcmMgPSAtRU5PREVWOwpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9wY2kuYwppbmRleCBiYjVmMzQ0Li41OGJmYjc5IDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9w Y2kuYwpAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcGRldihzdHJ1Y3QgcGNp X3NlZyAqcHNlZywgc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAgICAgeGZyZWUocGRldik7CiB9CiAK LXN0YXRpYyB2b2lkIF9wY2lfaGlkZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpCit2b2lk IHBjaV9oaWRlX2V4aXN0aW5nX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKICAgICBp ZiAoIHBkZXYtPmRvbWFpbiApCiAgICAgICAgIHJldHVybjsKQEAgLTQzNiw3ICs0MzYsNyBAQCBp bnQgX19pbml0IHBjaV9oaWRlX2RldmljZShpbnQgYnVzLCBpbnQgZGV2Zm4pCiAgICAgcGRldiA9 IGFsbG9jX3BkZXYoZ2V0X3BzZWcoMCksIGJ1cywgZGV2Zm4pOwogICAgIGlmICggcGRldiApCiAg ICAgewotICAgICAgICBfcGNpX2hpZGVfZGV2aWNlKHBkZXYpOworICAgICAgICBwY2lfaGlkZV9l eGlzdGluZ19kZXZpY2UocGRldik7CiAgICAgICAgIHJjID0gMDsKICAgICB9CiAgICAgcGNpZGV2 c191bmxvY2soKTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBpbnQgX19pbml0IHBjaV9yb19kZXZpY2Uo aW50IHNlZywgaW50IGJ1cywgaW50IGRldmZuKQogICAgIH0KIAogICAgIF9fc2V0X2JpdChQQ0lf QkRGMihidXMsIGRldmZuKSwgcHNlZy0+cm9fbWFwKTsKLSAgICBfcGNpX2hpZGVfZGV2aWNlKHBk ZXYpOworICAgIHBjaV9oaWRlX2V4aXN0aW5nX2RldmljZShwZGV2KTsKIAogICAgIHJldHVybiAw OwogfQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4dGVybi5oIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4dGVybi5oCmluZGV4IDQ1MzU3ZjIuLmVmYWZm MjggMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaAorKysg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvZXh0ZXJuLmgKQEAgLTI1LDYgKzI1LDcgQEAK IAogI2RlZmluZSBWVERQUkVGSVggIltWVC1EXSIKIAorc3RydWN0IHBjaV9hdHNfZGV2OwogZXh0 ZXJuIGJvb2xfdCByd2JmX3F1aXJrOwogCiB2b2lkIHByaW50X2lvbW11X3JlZ3Moc3RydWN0IGFj cGlfZHJoZF91bml0ICpkcmhkKTsKQEAgLTYwLDggKzYxLDggQEAgaW50IGRldl9pbnZhbGlkYXRl X2lvdGxiKHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgdTY0IGFkZHIsIHVuc2lnbmVkIGludCBzaXplX29yZGVyLCB1NjQgdHlwZSk7CiAKIGlu dCBfX211c3RfY2hlY2sgcWludmFsX2RldmljZV9pb3RsYl9zeW5jKHN0cnVjdCBpb21tdSAqaW9t bXUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgbWF4X2lu dnNfcGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBz aWQsIHUxNiBzaXplLCB1NjQgYWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcGNpX2F0c19kZXYgKmF0c19kZXYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgZGlkLCB1MTYgc2l6ZSwgdTY0IGFkZHIpOwog CiB1bnNpZ25lZCBpbnQgZ2V0X2NhY2hlX2xpbmVfc2l6ZSh2b2lkKTsKIHZvaWQgY2FjaGVsaW5l X2ZsdXNoKGNoYXIgKik7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQv cWludmFsLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvcWludmFsLmMKaW5kZXggNDQ5 MmIyOS4uN2E1YzQzMyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Fp bnZhbC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9xaW52YWwuYwpAQCAtMjcs MTEgKzI3LDExIEBACiAjaW5jbHVkZSAiZG1hci5oIgogI2luY2x1ZGUgInZ0ZC5oIgogI2luY2x1 ZGUgImV4dGVybi5oIgorI2luY2x1ZGUgIi4uL2F0cy5oIgogCiAjZGVmaW5lIFZURF9RSV9USU1F T1VUCTEKIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgaW52YWxpZGF0ZV9zeW5jKHN0cnVjdCBp b21tdSAqaW9tbXUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bF90IGZsdXNoX2Rldl9pb3RsYik7CitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnZhbGlkYXRl X3N5bmMoc3RydWN0IGlvbW11ICppb21tdSk7CiAKIHN0YXRpYyB2b2lkIHByaW50X3FpX3JlZ3Mo c3RydWN0IGlvbW11ICppb21tdSkKIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBxdWV1ZV9pbnZhbGlkYXRlX2NvbnRleHRfc3luYyhzdHJ1Y3QgaW9tbXUgKmlv bW11LAogCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHFpbnZhbF9lbnRyaWVzKTsKIAotICAg IHJldHVybiBpbnZhbGlkYXRlX3N5bmMoaW9tbXUsIDApOworICAgIHJldHVybiBpbnZhbGlkYXRl X3N5bmMoaW9tbXUpOwogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBxdWV1ZV9pbnZhbGlk YXRlX2lvdGxiX3N5bmMoc3RydWN0IGlvbW11ICppb21tdSwKQEAgLTE0MCw3ICsxNDAsNyBAQCBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBxdWV1ZV9pbnZhbGlkYXRlX2lvdGxiX3N5bmMoc3RydWN0 IGlvbW11ICppb21tdSwKICAgICBxaW52YWxfdXBkYXRlX3F0YWlsKGlvbW11LCBpbmRleCk7CiAg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPnJlZ2lzdGVyX2xvY2ssIGZsYWdzKTsK IAotICAgIHJldHVybiBpbnZhbGlkYXRlX3N5bmMoaW9tbXUsIDApOworICAgIHJldHVybiBpbnZh bGlkYXRlX3N5bmMoaW9tbXUpOwogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBxdWV1ZV9p bnZhbGlkYXRlX3dhaXQoc3RydWN0IGlvbW11ICppb21tdSwKQEAgLTE5OSwyNSArMTk5LDU1IEBA IHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIHF1ZXVlX2ludmFsaWRhdGVfd2FpdChzdHJ1Y3QgaW9t bXUgKmlvbW11LAogICAgIHJldHVybiAtRU9QTk9UU1VQUDsKIH0KIAotc3RhdGljIGludCBfX211 c3RfY2hlY2sgaW52YWxpZGF0ZV9zeW5jKHN0cnVjdCBpb21tdSAqaW9tbXUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGZsdXNoX2Rldl9pb3RsYikKK3N0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludmFsaWRhdGVfc3luYyhzdHJ1Y3QgaW9tbXUgKmlvbW11 KQogewogICAgIHN0cnVjdCBxaV9jdHJsICpxaV9jdHJsID0gaW9tbXVfcWlfY3RybChpb21tdSk7 CiAKICAgICBBU1NFUlQocWlfY3RybC0+cWludmFsX21hZGRyKTsKIAotICAgIHJldHVybiBxdWV1 ZV9pbnZhbGlkYXRlX3dhaXQoaW9tbXUsIDAsIDEsIDEsIGZsdXNoX2Rldl9pb3RsYik7CisgICAg cmV0dXJuIHF1ZXVlX2ludmFsaWRhdGVfd2FpdChpb21tdSwgMCwgMSwgMSwgMCk7Cit9CisKK3N0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGRldl9pbnZhbGlkYXRlX3N5bmMoc3RydWN0IGlvbW11ICpp b21tdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHBjaV9kZXYgKnBkZXYsIHUxNiBkaWQpCit7CisgICAgc3RydWN0IHFpX2N0cmwgKnFpX2N0cmwg PSBpb21tdV9xaV9jdHJsKGlvbW11KTsKKyAgICBpbnQgcmM7CisKKyAgICBBU1NFUlQocWlfY3Ry bC0+cWludmFsX21hZGRyKTsKKyAgICByYyA9IHF1ZXVlX2ludmFsaWRhdGVfd2FpdChpb21tdSwg MCwgMSwgMSwgMSk7CisgICAgaWYgKCByYyA9PSAtRVRJTUVET1VUICkKKyAgICB7CisgICAgICAg IHN0cnVjdCBkb21haW4gKmQgPSBOVUxMOworCisgICAgICAgIGlmICggdGVzdF9iaXQoZGlkLCBp b21tdS0+ZG9taWRfYml0bWFwKSApCisgICAgICAgICAgICBkID0gcmN1X2xvY2tfZG9tYWluX2J5 X2lkKGlvbW11LT5kb21pZF9tYXBbZGlkXSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSW4g Y2FzZSB0aGUgZG9tYWluIGhhcyBiZWVuIGZyZWVkIG9yIHRoZSBJT01NVSBkb21pZCBiaXRtYXAg aXMKKyAgICAgICAgICogbm90IHZhbGlkLCB0aGUgZGV2aWNlIG5vIGxvbmdlciBiZWxvbmdzIHRv IHRoaXMgZG9tYWluLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBkID09IE5VTEwgKQorICAg ICAgICAgICAgcmV0dXJuIHJjOworCisgICAgICAgIGlvbW11X2Rldl9pb3RsYl9mbHVzaF90aW1l b3V0KGQsIHBkZXYpOworICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKKyAgICB9CisKKyAg ICByZXR1cm4gcmM7CiB9CiAKIGludCBxaW52YWxfZGV2aWNlX2lvdGxiX3N5bmMoc3RydWN0IGlv bW11ICppb21tdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIG1heF9pbnZzX3Bl bmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBzaWQsIHUxNiBzaXplLCB1NjQg YWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBjaV9hdHNfZGV2ICph dHNfZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgZGlkLCB1MTYgc2l6ZSwg dTY0IGFkZHIpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICB1bnNpZ25lZCBpbnQg aW5kZXg7CiAgICAgdTY0IGVudHJ5X2Jhc2U7CiAgICAgc3RydWN0IHFpbnZhbF9lbnRyeSAqcWlu dmFsX2VudHJ5LCAqcWludmFsX2VudHJpZXM7CisgICAgc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBh dHNfZGV2LT5wZGV2OwogCisgICAgQVNTRVJUKHBkZXYpOwogICAgIHNwaW5fbG9ja19pcnFzYXZl KCZpb21tdS0+cmVnaXN0ZXJfbG9jaywgZmxhZ3MpOwogICAgIGluZGV4ID0gcWludmFsX25leHRf aW5kZXgoaW9tbXUpOwogICAgIGVudHJ5X2Jhc2UgPSBpb21tdV9xaV9jdHJsKGlvbW11KS0+cWlu dmFsX21hZGRyICsKQEAgLTIyNyw5ICsyNTcsOSBAQCBpbnQgcWludmFsX2RldmljZV9pb3RsYl9z eW5jKHN0cnVjdCBpb21tdSAqaW9tbXUsCiAKICAgICBxaW52YWxfZW50cnktPnEuZGV2X2lvdGxi X2ludl9kc2MubG8udHlwZSA9IFRZUEVfSU5WQUxfREVWSUNFX0lPVExCOwogICAgIHFpbnZhbF9l bnRyeS0+cS5kZXZfaW90bGJfaW52X2RzYy5sby5yZXNfMSA9IDA7Ci0gICAgcWludmFsX2VudHJ5 LT5xLmRldl9pb3RsYl9pbnZfZHNjLmxvLm1heF9pbnZzX3BlbmQgPSBtYXhfaW52c19wZW5kOwor ICAgIHFpbnZhbF9lbnRyeS0+cS5kZXZfaW90bGJfaW52X2RzYy5sby5tYXhfaW52c19wZW5kID0g YXRzX2Rldi0+YXRzX3F1ZXVlX2RlcHRoOwogICAgIHFpbnZhbF9lbnRyeS0+cS5kZXZfaW90bGJf aW52X2RzYy5sby5yZXNfMiA9IDA7Ci0gICAgcWludmFsX2VudHJ5LT5xLmRldl9pb3RsYl9pbnZf ZHNjLmxvLnNpZCA9IHNpZDsKKyAgICBxaW52YWxfZW50cnktPnEuZGV2X2lvdGxiX2ludl9kc2Mu bG8uc2lkID0gUENJX0JERjIocGRldi0+YnVzLCBwZGV2LT5kZXZmbik7CiAgICAgcWludmFsX2Vu dHJ5LT5xLmRldl9pb3RsYl9pbnZfZHNjLmxvLnJlc18zID0gMDsKIAogICAgIHFpbnZhbF9lbnRy eS0+cS5kZXZfaW90bGJfaW52X2RzYy5oaS5zaXplID0gc2l6ZTsKQEAgLTI0MCw3ICsyNzAsNyBA QCBpbnQgcWludmFsX2RldmljZV9pb3RsYl9zeW5jKHN0cnVjdCBpb21tdSAqaW9tbXUsCiAgICAg cWludmFsX3VwZGF0ZV9xdGFpbChpb21tdSwgaW5kZXgpOwogICAgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmlvbW11LT5yZWdpc3Rlcl9sb2NrLCBmbGFncyk7CiAKLSAgICByZXR1cm4gaW52YWxp ZGF0ZV9zeW5jKGlvbW11LCAxKTsKKyAgICByZXR1cm4gZGV2X2ludmFsaWRhdGVfc3luYyhpb21t dSwgcGRldiwgZGlkKTsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgcXVldWVfaW52YWxp ZGF0ZV9pZWNfc3luYyhzdHJ1Y3QgaW9tbXUgKmlvbW11LApAQCAtMjcxLDcgKzMwMSw3IEBAIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIHF1ZXVlX2ludmFsaWRhdGVfaWVjX3N5bmMoc3RydWN0IGlv bW11ICppb21tdSwKICAgICBxaW52YWxfdXBkYXRlX3F0YWlsKGlvbW11LCBpbmRleCk7CiAgICAg c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPnJlZ2lzdGVyX2xvY2ssIGZsYWdzKTsKIAot ICAgIHJldCA9IGludmFsaWRhdGVfc3luYyhpb21tdSwgMCk7CisgICAgcmV0ID0gaW52YWxpZGF0 ZV9zeW5jKGlvbW11KTsKIAogICAgIC8qCiAgICAgICogcmVhZGluZyB2dC1kIGFyY2hpdGVjdHVy ZSByZWdpc3RlciB3aWxsIGVuc3VyZQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvdnRkL3g4Ni9hdHMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvYXRzLmMK aW5kZXggMTFmZTliYi4uMjNlNDZiMSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvdnRkL3g4Ni9hdHMuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQveDg2L2F0 cy5jCkBAIC0xMTgsMTQgKzExOCw5IEBAIGludCBkZXZfaW52YWxpZGF0ZV9pb3RsYihzdHJ1Y3Qg aW9tbXUgKmlvbW11LCB1MTYgZGlkLAogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggYXRzX2Rl diwgJmF0c19kZXZpY2VzLCBsaXN0ICkKICAgICB7Ci0gICAgICAgIHN0cnVjdCBwY2lfZGV2ICpw ZGV2ID0gYXRzX2Rldi0+cGRldjsKLSAgICAgICAgdTE2IHNpZDsKICAgICAgICAgYm9vbF90IHNi aXQ7CiAgICAgICAgIGludCByYyA9IDA7CiAKLSAgICAgICAgQVNTRVJUKHBkZXYpOwotICAgICAg ICBzaWQgPSBQQ0lfQkRGMihwZGV2LT5idXMsIHBkZXYtPmRldmZuKTsKLQogICAgICAgICAvKiBP bmx5IGludmFsaWRhdGUgZGV2aWNlcyB0aGF0IGJlbG9uZyB0byB0aGlzIElPTU1VICovCiAgICAg ICAgIGlmICggYXRzX2Rldi0+aW9tbXUgIT0gaW9tbXUgKQogICAgICAgICAgICAgY29udGludWU7 CkBAIC0xNDAsOCArMTM1LDcgQEAgaW50IGRldl9pbnZhbGlkYXRlX2lvdGxiKHN0cnVjdCBpb21t dSAqaW9tbXUsIHUxNiBkaWQsCiAgICAgICAgICAgICAvKiBpbnZhbGlkYXRlIGFsbCB0cmFuc2xh dGlvbnM6IHNiaXQ9MSxiaXRfNjM9MCxiaXRbNjI6MTJdPTEgKi8KICAgICAgICAgICAgIHNiaXQg PSAxOwogICAgICAgICAgICAgYWRkciA9ICh+MFVMIDw8IFBBR0VfU0hJRlRfNEspICYgMHg3RkZG RkZGRkZGRkZGRkZGOwotICAgICAgICAgICAgcmMgPSBxaW52YWxfZGV2aWNlX2lvdGxiX3N5bmMo aW9tbXUsIGF0c19kZXYtPmF0c19xdWV1ZV9kZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpZCwgc2JpdCwgYWRkcik7CisgICAgICAgICAgICByYyA9IHFp bnZhbF9kZXZpY2VfaW90bGJfc3luYyhpb21tdSwgYXRzX2RldiwgZGlkLCBzYml0LCBhZGRyKTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERNQV9UTEJfUFNJX0ZMVVNIOgogICAg ICAgICAgICAgaWYgKCAhZGV2aWNlX2luX2RvbWFpbihpb21tdSwgYXRzX2RldiwgZGlkKSApCkBA IC0xNjAsOCArMTU0LDcgQEAgaW50IGRldl9pbnZhbGlkYXRlX2lvdGxiKHN0cnVjdCBpb21tdSAq aW9tbXUsIHUxNiBkaWQsCiAgICAgICAgICAgICAgICAgYWRkciB8PSAoKCh1NjQpMSA8PCAoc2l6 ZV9vcmRlciAtIDEpKSAtIDEpIDw8IFBBR0VfU0hJRlRfNEs7CiAgICAgICAgICAgICB9CiAKLSAg ICAgICAgICAgIHJjID0gcWludmFsX2RldmljZV9pb3RsYl9zeW5jKGlvbW11LCBhdHNfZGV2LT5h dHNfcXVldWVfZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaWQsIHNiaXQsIGFkZHIpOworICAgICAgICAgICAgcmMgPSBxaW52YWxfZGV2aWNlX2lvdGxi X3N5bmMoaW9tbXUsIGF0c19kZXYsIGRpZCwgc2JpdCwgYWRkcik7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX1dBUk5JTkcg VlREUFJFRklYLCAiaW52YWxpZCB2dC1kIGZsdXNoIHR5cGVcbiIpOwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCBhNzU5 ZjJiLi5lMGY3ZDUyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMjA3LDYgKzIwNyw5IEBAIGludCBfX211c3RfY2hl Y2sgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2Nv dW50KTsKIGludCBfX211c3RfY2hlY2sgaW9tbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21h aW4gKmQpOwogCit2b2lkIGlvbW11X2Rldl9pb3RsYl9mbHVzaF90aW1lb3V0KHN0cnVjdCBkb21h aW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwY2lfZGV2 ICpwZGV2KTsKKwogLyoKICAqIFRoZSBwdXJwb3NlIG9mIHRoZSBpb21tdV9kb250X2ZsdXNoX2lv dGxiIG9wdGlvbmFsIGNwdSBmbGFnIGlzIHRvCiAgKiBhdm9pZCB1bmVjZXNzYXJ5IGlvdGxiX2Zs dXNoIGluIHRoZSBsb3cgbGV2ZWwgSU9NTVUgY29kZS4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hlbi9wY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAppbmRleCA2ZWQyOWRkLi5lNDk0MGNk IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKKysrIGIveGVuL2luY2x1ZGUveGVu L3BjaS5oCkBAIC0xMTgsNiArMTE4LDcgQEAgaW50IHBjaV9hZGRfZGV2aWNlKHUxNiBzZWcsIHU4 IGJ1cywgdTggZGV2Zm4sCiBpbnQgcGNpX3JlbW92ZV9kZXZpY2UodTE2IHNlZywgdTggYnVzLCB1 OCBkZXZmbik7CiBpbnQgcGNpX3JvX2RldmljZShpbnQgc2VnLCBpbnQgYnVzLCBpbnQgZGV2Zm4p OwogaW50IHBjaV9oaWRlX2RldmljZShpbnQgYnVzLCBpbnQgZGV2Zm4pOwordm9pZCBwY2lfaGlk ZV9leGlzdGluZ19kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpOwogc3RydWN0IHBjaV9kZXYg KnBjaV9nZXRfcGRldihpbnQgc2VnLCBpbnQgYnVzLCBpbnQgZGV2Zm4pOwogc3RydWN0IHBjaV9k ZXYgKnBjaV9nZXRfcmVhbF9wZGV2KGludCBzZWcsIGludCBidXMsIGludCBkZXZmbik7CiBzdHJ1 Y3QgcGNpX2RldiAqcGNpX2dldF9wZGV2X2J5X2RvbWFpbigKLS0gCjEuOS4xCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK