From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v5 17/30] ARM: vITS: add command handling stub and MMIO emulation Date: Thu, 6 Apr 2017 00:19:09 +0100 Message-ID: <1491434362-30310-18-git-send-email-andre.przywara@arm.com> References: <1491434362-30310-1-git-send-email-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvuEb-0004qG-QQ for xen-devel@lists.xenproject.org; Wed, 05 Apr 2017 23:21:06 +0000 In-Reply-To: <1491434362-30310-1-git-send-email-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini , Julien Grall Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org RW11bGF0ZSB0aGUgbWVtb3J5IG1hcHBlZCBJVFMgcmVnaXN0ZXJzIGFuZCBwcm92aWRlIGEgc3R1 YiB0byBpbnRyb2R1Y2UKdGhlIElUUyBjb21tYW5kIGhhbmRsaW5nIGZyYW1ld29yayAoYnV0IHdp dGhvdXQgYWN0dWFsbHkgZW11bGF0aW5nIGFueQpjb21tYW5kcyBhdCB0aGlzIHRpbWUpLgoKU2ln bmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+Ci0tLQog eGVuL2FyY2gvYXJtL3ZnaWMtdjMtaXRzLmMgICAgICAgIHwgNDE2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vdmdpYy12My5jICAgICAgICAgICAg fCAgIDkgLQogeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIHwgICA5ICsKIHhlbi9p bmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oICB8ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQsIDQy OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS92Z2ljLXYzLWl0cy5jIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMtaXRzLmMKaW5kZXggOWRmZGE1 OS4uZjZiZjFlZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMtdjMtaXRzLmMKKysrIGIv eGVuL2FyY2gvYXJtL3ZnaWMtdjMtaXRzLmMKQEAgLTc4LDYgKzc4LDQyMiBAQCB2b2lkIHZnaWNf djNfaXRzX2ZyZWVfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiAgICAgQVNTRVJUKFJCX0VNUFRZ X1JPT1QoJmQtPmFyY2gudmdpYy5pdHNfZGV2aWNlcykpOwogfQogCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZ1bmN0aW9ucyB0aGF0IGhhbmRsZSBJVFMgY29t bWFuZHMgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0 aWMgdWludDY0X3QgaXRzX2NtZF9tYXNrX2ZpZWxkKHVpbnQ2NF90ICppdHNfY21kLCB1bnNpZ25l ZCBpbnQgd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHNoaWZ0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICByZXR1cm4gKGxlNjRfdG9fY3B1 KGl0c19jbWRbd29yZF0pID4+IHNoaWZ0KSAmIChCSVQoc2l6ZSkgLSAxKTsKK30KKworI2RlZmlu ZSBpdHNfY21kX2dldF9jb21tYW5kKGNtZCkgICAgICAgIGl0c19jbWRfbWFza19maWVsZChjbWQs IDAsICAwLCAgOCkKKyNkZWZpbmUgaXRzX2NtZF9nZXRfZGV2aWNlaWQoY21kKSAgICAgICBpdHNf Y21kX21hc2tfZmllbGQoY21kLCAwLCAzMiwgMzIpCisjZGVmaW5lIGl0c19jbWRfZ2V0X3NpemUo Y21kKSAgICAgICAgICAgaXRzX2NtZF9tYXNrX2ZpZWxkKGNtZCwgMSwgIDAsICA1KQorI2RlZmlu ZSBpdHNfY21kX2dldF9pZChjbWQpICAgICAgICAgICAgIGl0c19jbWRfbWFza19maWVsZChjbWQs IDEsICAwLCAzMikKKyNkZWZpbmUgaXRzX2NtZF9nZXRfcGh5c2ljYWxfaWQoY21kKSAgICBpdHNf Y21kX21hc2tfZmllbGQoY21kLCAxLCAzMiwgMzIpCisjZGVmaW5lIGl0c19jbWRfZ2V0X2NvbGxl Y3Rpb24oY21kKSAgICAgaXRzX2NtZF9tYXNrX2ZpZWxkKGNtZCwgMiwgIDAsIDE2KQorI2RlZmlu ZSBpdHNfY21kX2dldF90YXJnZXRfYWRkcihjbWQpICAgIGl0c19jbWRfbWFza19maWVsZChjbWQs IDIsIDE2LCAzMikKKyNkZWZpbmUgaXRzX2NtZF9nZXRfdmFsaWRiaXQoY21kKSAgICAgICBpdHNf Y21kX21hc2tfZmllbGQoY21kLCAyLCA2MywgIDEpCisjZGVmaW5lIGl0c19jbWRfZ2V0X2l0dGFk ZHIoY21kKSAgICAgICAgKGl0c19jbWRfbWFza19maWVsZChjbWQsIDIsIDgsIDQ0KSA8PCA4KQor CisjZGVmaW5lIElUU19DTURfQlVGRkVSX1NJWkUoYmFzZXIpICAgICAgKCgoKGJhc2VyKSAmIDB4 ZmYpICsgMSkgPDwgMTIpCisKKy8qCisgKiBSZXF1aXJlcyB0aGUgdmNtZF9sb2NrIHRvIGJlIGhl bGQuCisgKiBUT0RPOiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHdlIGNhbiBiZSBzbWFydGVyIGhlcmUg YW5kIGRvbid0IG5lZWQgdG8gaG9sZAorICogdGhlIGxvY2sgYWxsIG9mIHRoZSB0aW1lLgorICov CitzdGF0aWMgaW50IHZnaWNfaXRzX2hhbmRsZV9jbWRzKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCB2aXJ0X2l0cyAqaXRzKQoreworICAgIHBhZGRyX3QgYWRkciA9IGl0cy0+Y2Jhc2VyICYgR0VO TUFTS19VTEwoNTEsIDEyKTsKKyAgICB1aW50NjRfdCBjb21tYW5kWzRdOworCisgICAgQVNTRVJU KHNwaW5faXNfbG9ja2VkKCZpdHMtPnZjbWRfbG9jaykpOworCisgICAgaWYgKCBpdHMtPmN3cml0 ZXIgPj0gSVRTX0NNRF9CVUZGRVJfU0laRShpdHMtPmNiYXNlcikgKQorICAgICAgICByZXR1cm4g LTE7CisKKyAgICB3aGlsZSAoIGl0cy0+Y3JlYWRyICE9IGl0cy0+Y3dyaXRlciApCisgICAgewor ICAgICAgICBpbnQgcmV0OworCisgICAgICAgIHJldCA9IHZnaWNfYWNjZXNzX2d1ZXN0X21lbW9y eShkLCBhZGRyICsgaXRzLT5jcmVhZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb21tYW5kLCBzaXplb2YoY29tbWFuZCksIGZhbHNlKTsKKyAgICAgICAgaWYgKCBy ZXQgKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBzd2l0Y2ggKCBpdHNfY21k X2dldF9jb21tYW5kKGNvbW1hbmQpICkKKyAgICAgICAgeworICAgICAgICBjYXNlIEdJVFNfQ01E X1NZTkM6CisgICAgICAgICAgICAvKiBXZSBoYW5kbGUgSVRTIGNvbW1hbmRzIHN5bmNocm9ub3Vz bHksIHNvIHdlIGlnbm9yZSBTWU5DLiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl ZmF1bHQ6CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIklUUzogdW5oYW5k bGVkIElUUyBjb21tYW5kICVsdVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGl0c19jbWRfZ2V0 X2NvbW1hbmQoY29tbWFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg ICAgICBpdHMtPmNyZWFkciArPSBJVFNfQ01EX1NJWkU7CisgICAgICAgIGlmICggaXRzLT5jcmVh ZHIgPT0gSVRTX0NNRF9CVUZGRVJfU0laRShpdHMtPmNiYXNlcikgKQorICAgICAgICAgICAgaXRz LT5jcmVhZHIgPSAwOworCisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIGdkcHJpbnRr KFhFTkxPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgIklUUzogSVRTIGNvbW1hbmQg ZXJyb3IgJWQgd2hpbGUgaGFuZGxpbmcgY29tbWFuZCAlbHVcbiIsCisgICAgICAgICAgICAgICAg ICAgICByZXQsIGl0c19jbWRfZ2V0X2NvbW1hbmQoY29tbWFuZCkpOworICAgIH0KKworICAgIHJl dHVybiAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIElUUyByZWdp c3RlcnMgcmVhZCBhY2Nlc3MgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitz dGF0aWMgaW50IHZnaWNfdjNfaXRzX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZv X3QgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICpy LCB2b2lkICpwcml2KQoreworICAgIHN0cnVjdCB2aXJ0X2l0cyAqaXRzID0gcHJpdjsKKyAgICB1 aW50NjRfdCByZWc7CisKKyAgICBzd2l0Y2ggKCBpbmZvLT5ncGEgJiAweGZmZmYgKQorICAgIHsK KyAgICBjYXNlIFZSRUczMihHSVRTX0NUTFIpOgorICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6 ZSAhPSBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICBzcGluX2xvY2soJml0 cy0+dmNtZF9sb2NrKTsKKyAgICAgICAgc3Bpbl9sb2NrKCZpdHMtPml0c19sb2NrKTsKKyAgICAg ICAgaWYgKCBpdHMtPmVuYWJsZWQgKQorICAgICAgICAgICAgcmVnID0gR0lUU19DVExSX0VOQUJM RTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVnID0gMDsKKworICAgICAgICBpZiAoIGl0 cy0+Y3dyaXRlciA9PSBpdHMtPmNyZWFkciApCisgICAgICAgICAgICByZWcgfD0gR0lUU19DVExS X1FVSUVTQ0VOVDsKKyAgICAgICAgc3Bpbl91bmxvY2soJml0cy0+aXRzX2xvY2spOworICAgICAg ICBzcGluX3VubG9jaygmaXRzLT52Y21kX2xvY2spOworCisgICAgICAgICpyID0gdmdpY19yZWcz Ml9leHRyYWN0KHJlZywgaW5mbyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVlJFRzMyKEdJ VFNfSUlEUik6CisgICAgICAgIGlmICggaW5mby0+ZGFidC5zaXplICE9IERBQlRfV09SRCApIGdv dG8gYmFkX3dpZHRoOworICAgICAgICAqciA9IHZnaWNfcmVnMzJfZXh0cmFjdChHSVRTX0lJRFJf VkFMVUUsIGluZm8pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZSRUc2NChHSVRTX1RZUEVS KToKKyAgICAgICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoaW5mby0+ZGFidCkgKSBn b3RvIGJhZF93aWR0aDsKKworICAgICAgICByZWcgPSBHSVRTX1RZUEVSX1BIWVNJQ0FMOworICAg ICAgICByZWcgfD0gKHNpemVvZihzdHJ1Y3Qgdml0c19pdHRlKSAtIDEpIDw8IEdJVFNfVFlQRVJf SVRUX1NJWkVfU0hJRlQ7CisgICAgICAgIHJlZyB8PSAoaXRzLT5pbnRpZF9iaXRzIC0gMSkgPDwg R0lUU19UWVBFUl9JREJJVFNfU0hJRlQ7CisgICAgICAgIHJlZyB8PSAoaXRzLT5kZXZpZF9iaXRz IC0gMSkgPDwgR0lUU19UWVBFUl9ERVZJRFNfU0hJRlQ7CisgICAgICAgICpyID0gdmdpY19yZWc2 NF9leHRyYWN0KHJlZywgaW5mbyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVlJFRzY0KEdJ VFNfQ0JBU0VSKToKKyAgICAgICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoaW5mby0+ ZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKyAgICAgICAgc3Bpbl9sb2NrKCZpdHMtPml0c19sb2Nr KTsKKyAgICAgICAgKnIgPSB2Z2ljX3JlZzY0X2V4dHJhY3QoaXRzLT5jYmFzZXIsIGluZm8pOwor ICAgICAgICBzcGluX3VubG9jaygmaXRzLT5pdHNfbG9jayk7CisgICAgICAgIGJyZWFrOworICAg IGNhc2UgVlJFRzY0KEdJVFNfQ1dSSVRFUik6CisgICAgICAgIGlmICggIXZnaWNfcmVnNjRfY2hl Y2tfYWNjZXNzKGluZm8tPmRhYnQpICkgZ290byBiYWRfd2lkdGg7CisgICAgICAgIHNwaW5fbG9j aygmaXRzLT52Y21kX2xvY2spOworICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdChpdHMt PmN3cml0ZXIsIGluZm8pOworICAgICAgICBzcGluX3VubG9jaygmaXRzLT52Y21kX2xvY2spOwor ICAgICAgICBicmVhazsKKyAgICBjYXNlIFZSRUc2NChHSVRTX0NSRUFEUik6CisgICAgICAgIGlm ICggIXZnaWNfcmVnNjRfY2hlY2tfYWNjZXNzKGluZm8tPmRhYnQpICkgZ290byBiYWRfd2lkdGg7 CisgICAgICAgIHNwaW5fbG9jaygmaXRzLT52Y21kX2xvY2spOworICAgICAgICAqciA9IHZnaWNf cmVnNjRfZXh0cmFjdChpdHMtPmNyZWFkciwgaW5mbyk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZp dHMtPnZjbWRfbG9jayk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVlJFRzY0KEdJVFNfQkFT RVIwKTogICAgICAgICAgIC8qIGRldmljZSB0YWJsZSAqLworICAgICAgICBpZiAoICF2Z2ljX3Jl ZzY0X2NoZWNrX2FjY2VzcyhpbmZvLT5kYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICBz cGluX2xvY2soJml0cy0+aXRzX2xvY2spOworICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFj dChpdHMtPmJhc2VyX2RldiwgaW5mbyk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZpdHMtPml0c19s b2NrKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWUkVHNjQoR0lUU19CQVNFUjEpOiAgICAg ICAgICAgLyogY29sbGVjdGlvbiB0YWJsZSAqLworICAgICAgICBpZiAoICF2Z2ljX3JlZzY0X2No ZWNrX2FjY2VzcyhpbmZvLT5kYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICBzcGluX2xv Y2soJml0cy0+aXRzX2xvY2spOworICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdChpdHMt PmJhc2VyX2NvbGwsIGluZm8pOworICAgICAgICBzcGluX3VubG9jaygmaXRzLT5pdHNfbG9jayk7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVlJBTkdFNjQoR0lUU19CQVNFUjIsIEdJVFNfQkFT RVI3KToKKyAgICAgICAgZ290byByZWFkX2FzX3plcm9fNjQ7CisKKyAgICBjYXNlIFZSRUczMihH SVRTX1BJRFIyKToKKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0LnNpemUgIT0gREFCVF9XT1JEICkg Z290byBiYWRfd2lkdGg7CisgICAgICAgICpyID0gdmdpY19yZWczMl9leHRyYWN0KEdJQ19QSURS Ml9BUkNIX0dJQ3YzLCBpbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJu IDE7CisKK3JlYWRfYXNfemVyb182NDoKKyAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2Vz cyhpbmZvLT5kYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworICAgICpyID0gMDsKKworICAgIHJldHVy biAxOworCitiYWRfd2lkdGg6CisgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAidkdJSVM6IGJhZCBy ZWFkIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOGx4XG4iLAorICAgICAgICAgICBpbmZvLT5kYWJ0 LnNpemUsIGluZm8tPmRhYnQucmVnLCAodW5zaWduZWQgbG9uZylpbmZvLT5ncGEgJiAweGZmZmYp OworICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91cygpOworCisgICAgcmV0dXJuIDA7Cit9CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIElUUyByZWdpc3RlcnMgd3JpdGUg YWNjZXNzICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB1bnNp Z25lZCBpbnQgaXRzX2Jhc2VyX3RhYmxlX3NpemUodWludDY0X3QgYmFzZXIpCit7CisgICAgdW5z aWduZWQgaW50IHJldCwgcGFnZV9zaXplWzRdID0ge1NaXzRLLCBTWl8xNkssIFNaXzY0SywgU1pf NjRLfTsKKworICAgIHJldCA9IHBhZ2Vfc2l6ZVsoYmFzZXIgPj4gR0lUU19CQVNFUl9QQUdFX1NJ WkVfU0hJRlQpICYgM107CisKKyAgICByZXR1cm4gcmV0ICogKChiYXNlciAmIEdJVFNfQkFTRVJf U0laRV9NQVNLKSArIDEpOworfQorCitzdGF0aWMgaW50IGl0c19iYXNlcl9ucl9lbnRyaWVzKHVp bnQ2NF90IGJhc2VyKQoreworICAgIGludCBlbnRyeV9zaXplID0gR0lUU19CQVNFUl9FTlRSWV9T SVpFKGJhc2VyKTsKKworICAgIHJldHVybiBpdHNfYmFzZXJfdGFibGVfc2l6ZShiYXNlcikgLyBl bnRyeV9zaXplOworfQorCisvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBJVFMgbG9jayBoZWxk LiAqLworc3RhdGljIGJvb2wgdmdpY192M192ZXJpZnlfaXRzX3N0YXR1cyhzdHJ1Y3QgdmlydF9p dHMgKml0cywgYm9vbCBzdGF0dXMpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZpdHMt Pml0c19sb2NrKSk7CisKKyAgICBpZiAoICFzdGF0dXMgKQorICAgICAgICByZXR1cm4gZmFsc2U7 CisKKyAgICBpZiAoICEoaXRzLT5jYmFzZXIgJiBHSVRTX1ZBTElEX0JJVCkgfHwKKyAgICAgICAg ICEoaXRzLT5iYXNlcl9kZXYgJiBHSVRTX1ZBTElEX0JJVCkgfHwKKyAgICAgICAgICEoaXRzLT5i YXNlcl9jb2xsICYgR0lUU19WQUxJRF9CSVQpICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNhbml0aXplX2l0c19iYXNlX3JlZyh1 aW50NjRfdCAqcmVnKQoreworICAgIHVpbnQ2NF90IHIgPSAqcmVnOworCisgICAgLyogQXZvaWQg b3V0ZXIgc2hhcmVhYmxlLiAqLworICAgIHN3aXRjaCAoIChyID4+IEdJVFNfQkFTRVJfU0hBUkVB QklMSVRZX1NISUZUKSAmIDB4MDMgKQorICAgIHsKKyAgICBjYXNlIEdJQ19CQVNFUl9PdXRlclNo YXJlYWJsZToKKyAgICAgICAgciA9IHIgJiB+R0lUU19CQVNFUl9TSEFSRUFCSUxJVFlfTUFTSzsK KyAgICAgICAgciB8PSBHSUNfQkFTRVJfSW5uZXJTaGFyZWFibGUgPDwgR0lUU19CQVNFUl9TSEFS RUFCSUxJVFlfU0hJRlQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJy ZWFrOworICAgIH0KKworICAgIC8qIEF2b2lkIGFueSBpbm5lciBub24tY2FjaGVhYmxlIG1hcHBp bmcuICovCisgICAgc3dpdGNoICggKHIgPj4gR0lUU19CQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlf U0hJRlQpICYgMHgwNyApCisgICAgeworICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX25DbkI6Cisg ICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfbkM6CisgICAgICAgIHIgPSByICYgfkdJVFNfQkFTRVJf SU5ORVJfQ0FDSEVBQklMSVRZX01BU0s7CisgICAgICAgIHIgfD0gR0lDX0JBU0VSX0NBQ0hFX1Jh V2IgPDwgR0lUU19CQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfU0hJRlQ7CisgICAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIE9ubHkgYWxs b3cgbm9uLWNhY2hlYWJsZSBvciBzYW1lLWFzLWlubmVyLiAqLworICAgIHN3aXRjaCAoIChyID4+ IEdJVFNfQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUKSAmIDB4MDcgKQorICAgIHsKKyAg ICBjYXNlIEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lcjoKKyAgICBjYXNlIEdJQ19CQVNFUl9D QUNIRV9uQzoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgciA9IHIgJiB+ R0lUU19CQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfTUFTSzsKKyAgICAgICAgciB8PSBHSUNfQkFT RVJfQ0FDSEVfbkMgPDwgR0lUU19CQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQ7CisgICAg ICAgIGJyZWFrOworICAgIH0KKworICAgICpyZWcgPSByOworfQorCitzdGF0aWMgaW50IHZnaWNf djNfaXRzX21taW9fd3JpdGUoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3Qgciwgdm9pZCAqcHJpdikK K3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCB2aXJ0X2l0 cyAqaXRzID0gcHJpdjsKKyAgICB1aW50NjRfdCByZWc7CisgICAgdWludDMyX3QgcmVnMzIsIGN0 bHI7CisKKyAgICBzd2l0Y2ggKCBpbmZvLT5ncGEgJiAweGZmZmYgKQorICAgIHsKKyAgICBjYXNl IFZSRUczMihHSVRTX0NUTFIpOgorICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSAhPSBEQUJU X1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICBzcGluX2xvY2soJml0cy0+dmNtZF9s b2NrKTsKKyAgICAgICAgc3Bpbl9sb2NrKCZpdHMtPml0c19sb2NrKTsKKyAgICAgICAgY3RsciA9 IGl0cy0+ZW5hYmxlZCA/IEdJVFNfQ1RMUl9FTkFCTEUgOiAwOworICAgICAgICByZWczMiA9IGN0 bHI7CisgICAgICAgIHZnaWNfcmVnMzJfdXBkYXRlKCZyZWczMiwgciwgaW5mbyk7CisKKyAgICAg ICAgaWYgKCBjdGxyIF4gcmVnMzIgKQorICAgICAgICAgICAgaXRzLT5lbmFibGVkID0gdmdpY192 M192ZXJpZnlfaXRzX3N0YXR1cyhpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZzMyICYgR0lUU19DVExSX0VOQUJMRSk7CisgICAgICAg IHNwaW5fdW5sb2NrKCZpdHMtPml0c19sb2NrKTsKKyAgICAgICAgc3Bpbl91bmxvY2soJml0cy0+ dmNtZF9sb2NrKTsKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIFZSRUczMihHSVRTX0lJ RFIpOgorICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZV8zMjsKKyAgICBjYXNlIFZSRUczMihHSVRT X1RZUEVSKToKKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmVfMzI7CisgICAgY2FzZSBWUkVHNjQo R0lUU19DQkFTRVIpOgorICAgICAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhpbmZv LT5kYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIHNwaW5fbG9jaygmaXRzLT52Y21k X2xvY2spOworICAgICAgICBzcGluX2xvY2soJml0cy0+aXRzX2xvY2spOworICAgICAgICAvKiBD aGFuZ2luZyBiYXNlIHJlZ2lzdGVycyB3aXRoIHRoZSBJVFMgZW5hYmxlZCBpcyBVTlBSRURJQ1RB QkxFLiAqLworICAgICAgICBpZiAoIGl0cy0+ZW5hYmxlZCApCisgICAgICAgIHsKKyAgICAgICAg ICAgIHNwaW5fdW5sb2NrKCZpdHMtPml0c19sb2NrKTsKKyAgICAgICAgICAgIHNwaW5fdW5sb2Nr KCZpdHMtPnZjbWRfbG9jayk7CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywK KyAgICAgICAgICAgICAgICAgICAgICJJVFM6IHRyaWVkIHRvIGNoYW5nZSBDQkFTRVIgd2l0aCB0 aGUgSVRTIGVuYWJsZWQuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisK KyAgICAgICAgcmVnID0gaXRzLT5jYmFzZXI7CisgICAgICAgIHZnaWNfcmVnNjRfdXBkYXRlKCZy ZWcsIHIsIGluZm8pOworICAgICAgICBzYW5pdGl6ZV9pdHNfYmFzZV9yZWcoJnJlZyk7CisKKyAg ICAgICAgaXRzLT5jYmFzZXIgPSByZWc7CisgICAgICAgIGl0cy0+Y3JlYWRyID0gMDsKKyAgICAg ICAgc3Bpbl91bmxvY2soJml0cy0+aXRzX2xvY2spOworICAgICAgICBzcGluX3VubG9jaygmaXRz LT52Y21kX2xvY2spOworCisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBWUkVHNjQoR0lU U19DV1JJVEVSKToKKyAgICAgICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoaW5mby0+ ZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICBzcGluX2xvY2soJml0cy0+dmNtZF9s b2NrKTsKKyAgICAgICAgcmVnID0gaXRzLT5jd3JpdGVyICYgMHhmZmZlMDsKKyAgICAgICAgdmdp Y19yZWc2NF91cGRhdGUoJnJlZywgciwgaW5mbyk7CisgICAgICAgIGl0cy0+Y3dyaXRlciA9IHJl ZyAmIDB4ZmZmZTA7CisKKyAgICAgICAgaWYgKCBpdHMtPmVuYWJsZWQgKQorICAgICAgICB7Cisg ICAgICAgICAgICBpbnQgcmV0ID0gdmdpY19pdHNfaGFuZGxlX2NtZHMoZCwgaXRzKTsKKworICAg ICAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJO SU5HICJlcnJvciBoYW5kbGluZyBJVFMgY29tbWFuZHNcbiIpOworICAgICAgICB9CisgICAgICAg IHNwaW5fdW5sb2NrKCZpdHMtPnZjbWRfbG9jayk7CisKKyAgICAgICAgcmV0dXJuIDE7CisKKyAg ICBjYXNlIFZSRUc2NChHSVRTX0NSRUFEUik6CisgICAgICAgIGdvdG8gd3JpdGVfaWdub3JlXzY0 OworICAgIGNhc2UgVlJFRzY0KEdJVFNfQkFTRVIwKTogICAgICAgICAgIC8qIGRldmljZSB0YWJs ZSAqLworICAgICAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhpbmZvLT5kYWJ0KSAp IGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIHNwaW5fbG9jaygmaXRzLT5pdHNfbG9jayk7CisK KyAgICAgICAgLyoKKyAgICAgICAgICogQ2hhbmdpbmcgYmFzZSByZWdpc3RlcnMgd2l0aCB0aGUg SVRTIGVuYWJsZWQgaXMgVU5QUkVESUNUQUJMRSwKKyAgICAgICAgICogd2UgY2hvb3NlIHRvIGln bm9yZSBpdCwgYnV0IHdhcm4uCisgICAgICAgICAqLworICAgICAgICBpZiAoIGl0cy0+ZW5hYmxl ZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpdHMtPml0c19sb2NrKTsK KyAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiSVRTOiB0cmllZCB0byBjaGFu Z2UgQkFTRVIgd2l0aCB0aGUgSVRTIGVuYWJsZWQuXG4iKTsKKworICAgICAgICAgICAgcmV0dXJu IDE7CisgICAgICAgIH0KKworICAgICAgICByZWcgPSBpdHMtPmJhc2VyX2RldjsKKyAgICAgICAg dmdpY19yZWc2NF91cGRhdGUoJnJlZywgciwgaW5mbyk7CisKKyAgICAgICAgcmVnICY9IH5HSVRT X0JBU0VSX1JPX01BU0s7CisgICAgICAgIHJlZyB8PSAoc2l6ZW9mKHVpbnQ2NF90KSAtIDEpIDw8 IEdJVFNfQkFTRVJfRU5UUllfU0laRV9TSElGVDsKKyAgICAgICAgcmVnIHw9IEdJVFNfQkFTRVJf VFlQRV9ERVZJQ0UgPDwgR0lUU19CQVNFUl9UWVBFX1NISUZUOworICAgICAgICBzYW5pdGl6ZV9p dHNfYmFzZV9yZWcoJnJlZyk7CisKKyAgICAgICAgaWYgKCByZWcgJiBHSVRTX1ZBTElEX0JJVCAp CisgICAgICAgICAgICBpdHMtPm1heF9kZXZpY2VzID0gaXRzX2Jhc2VyX25yX2VudHJpZXMocmVn KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXRzLT5tYXhfZGV2aWNlcyA9IDA7CisKKyAg ICAgICAgaXRzLT5iYXNlcl9kZXYgPSByZWc7CisgICAgICAgIHNwaW5fdW5sb2NrKCZpdHMtPml0 c19sb2NrKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBWUkVHNjQoR0lUU19CQVNFUjEp OiAgICAgICAgICAgLyogY29sbGVjdGlvbiB0YWJsZSAqLworICAgICAgICBpZiAoICF2Z2ljX3Jl ZzY0X2NoZWNrX2FjY2VzcyhpbmZvLT5kYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAg IHNwaW5fbG9jaygmaXRzLT5pdHNfbG9jayk7CisgICAgICAgIC8qCisgICAgICAgICAqIENoYW5n aW5nIGJhc2UgcmVnaXN0ZXJzIHdpdGggdGhlIElUUyBlbmFibGVkIGlzIFVOUFJFRElDVEFCTEUs CisgICAgICAgICAqIHdlIGNob29zZSB0byBpZ25vcmUgaXQsIGJ1dCB3YXJuLgorICAgICAgICAg Ki8KKyAgICAgICAgaWYgKCBpdHMtPmVuYWJsZWQgKQorICAgICAgICB7CisgICAgICAgICAgICBz cGluX3VubG9jaygmaXRzLT5pdHNfbG9jayk7CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0df SU5GTywgIklUUzogdHJpZWQgdG8gY2hhbmdlIEJBU0VSIHdpdGggdGhlIElUUyBlbmFibGVkLlxu Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJlZyA9IGl0 cy0+YmFzZXJfY29sbDsKKyAgICAgICAgdmdpY19yZWc2NF91cGRhdGUoJnJlZywgciwgaW5mbyk7 CisgICAgICAgIHJlZyAmPSB+R0lUU19CQVNFUl9ST19NQVNLOworICAgICAgICByZWcgfD0gKHNp emVvZih1aW50MTZfdCkgLSAxKSA8PCBHSVRTX0JBU0VSX0VOVFJZX1NJWkVfU0hJRlQ7CisgICAg ICAgIHJlZyB8PSBHSVRTX0JBU0VSX1RZUEVfQ09MTEVDVElPTiA8PCBHSVRTX0JBU0VSX1RZUEVf U0hJRlQ7CisgICAgICAgIHNhbml0aXplX2l0c19iYXNlX3JlZygmcmVnKTsKKworICAgICAgICBp ZiAoIHJlZyAmIEdJVFNfVkFMSURfQklUICkKKyAgICAgICAgICAgIGl0cy0+bWF4X2NvbGxlY3Rp b25zID0gaXRzX2Jhc2VyX25yX2VudHJpZXMocmVnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg ICAgaXRzLT5tYXhfY29sbGVjdGlvbnMgPSAwOworICAgICAgICBpdHMtPmJhc2VyX2NvbGwgPSBy ZWc7CisgICAgICAgIHNwaW5fdW5sb2NrKCZpdHMtPml0c19sb2NrKTsKKyAgICAgICAgcmV0dXJu IDE7CisgICAgY2FzZSBWUkFOR0U2NChHSVRTX0JBU0VSMiwgR0lUU19CQVNFUjcpOgorICAgICAg ICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKKyAgICBkZWZhdWx0OgorICAgICAgICBnZHByaW50ayhY RU5MT0dfR19XQVJOSU5HLCAiSVRTOiB1bmhhbmRsZWQgSVRTIHJlZ2lzdGVyIDB4JWx4XG4iLAor ICAgICAgICAgICAgICAgICBpbmZvLT5ncGEgJiAweGZmZmYpOworICAgICAgICByZXR1cm4gMDsK KyAgICB9CisKKyAgICByZXR1cm4gMTsKKword3JpdGVfaWdub3JlXzY0OgorICAgIGlmICggIXZn aWNfcmVnNjRfY2hlY2tfYWNjZXNzKGluZm8tPmRhYnQpICkgZ290byBiYWRfd2lkdGg7CisgICAg cmV0dXJuIDE7CisKK3dyaXRlX2lnbm9yZV8zMjoKKyAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSAh PSBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKyAgICByZXR1cm4gMTsKKworYmFkX3dpZHRo OgorICAgIHByaW50ayhYRU5MT0dfR19FUlIgInZHSVRTOiBiYWQgd3JpdGUgd2lkdGggJWQgciVk IG9mZnNldCAlIzA4bHhcbiIsCisgICAgICAgICAgIGluZm8tPmRhYnQuc2l6ZSwgaW5mby0+ZGFi dC5yZWcsICh1bnNpZ25lZCBsb25nKWluZm8tPmdwYSAmIDB4ZmZmZik7CisKKyAgICBkb21haW5f Y3Jhc2hfc3luY2hyb25vdXMoKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IG1taW9faGFuZGxlcl9vcHMgdmdpY19pdHNfbW1pb19oYW5kbGVyID0geworICAgIC5y ZWFkICA9IHZnaWNfdjNfaXRzX21taW9fcmVhZCwKKyAgICAud3JpdGUgPSB2Z2ljX3YzX2l0c19t bWlvX3dyaXRlLAorfTsKKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy12My5j CmluZGV4IDA2MjM4MDMuLmU2YTMzZDAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLXYz LmMKKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwpAQCAtMTU4LDE1ICsxNTgsNiBAQCBzdGF0 aWMgdm9pZCB2Z2ljX3N0b3JlX2lyb3V0ZXIoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZnaWNf aXJxX3JhbmsgKnJhbmssCiAgICAgd3JpdGVfYXRvbWljKCZyYW5rLT52Y3B1W29mZnNldF0sIG5l d192Y3B1LT52Y3B1X2lkKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHZnaWNfcmVnNjRfY2hl Y2tfYWNjZXNzKHN0cnVjdCBoc3JfZGFidCBkYWJ0KQotewotICAgIC8qCi0gICAgICogNjQgYml0 cyByZWdpc3RlcnMgY2FuIGJlIGFjY2Vzc2libGUgdXNpbmcgMzItYml0IGFuZCA2NC1iaXQgdW5s ZXNzCi0gICAgICogc3RhdGVkIG90aGVyd2lzZSAoU2VlIDguMS4zIEFSTSBJSEkgMDA2OUEpLgot ICAgICAqLwotICAgIHJldHVybiAoIGRhYnQuc2l6ZSA9PSBEQUJUX0RPVUJMRV9XT1JEIHx8IGRh YnQuc2l6ZSA9PSBEQUJUX1dPUkQgKTsKLX0KLQogc3RhdGljIGludCBfX3ZnaWNfdjNfcmRpc3Ry X3JkX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGdpY3JfcmVnLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICpyKQpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIGIveGVuL2luY2x1ZGUv YXNtLWFybS9naWNfdjNfZGVmcy5oCmluZGV4IGI3ZTVhNDcuLmU2MGRlYTUgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t YXJtL2dpY192M19kZWZzLmgKQEAgLTE5OCw2ICsxOTgsMTUgQEAgc3RydWN0IHJkaXN0X3JlZ2lv biB7CiAgICAgYm9vbCBzaW5nbGVfcmRpc3Q7CiB9OwogCisvKgorICogNjQgYml0cyByZWdpc3Rl cnMgY2FuIGJlIGFjY2Vzc2libGUgdXNpbmcgMzItYml0IGFuZCA2NC1iaXQgdW5sZXNzCisgKiBz dGF0ZWQgb3RoZXJ3aXNlIChTZWUgOC4xLjMgQVJNIElISSAwMDY5QSkuCisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbCB2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhzdHJ1Y3QgaHNyX2RhYnQgZGFidCkK K3sKKyAgICByZXR1cm4gKCBkYWJ0LnNpemUgPT0gREFCVF9ET1VCTEVfV09SRCB8fCBkYWJ0LnNp emUgPT0gREFCVF9XT1JEICk7Cit9CisKICNlbmRpZiAvKiBfX0FTTV9BUk1fR0lDX1YzX0RFRlNf SF9fICovCiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMu aCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oCmluZGV4IGViNzFmYmQuLmQzZjM5 M2YgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oCkBAIC0zNSw2ICszNSw3IEBACiAjZGVmaW5l IEdJVFNfQkFTRVI1ICAgICAgICAgICAgICAgICAgICAgMHgxMjgKICNkZWZpbmUgR0lUU19CQVNF UjYgICAgICAgICAgICAgICAgICAgICAweDEzMAogI2RlZmluZSBHSVRTX0JBU0VSNyAgICAgICAg ICAgICAgICAgICAgIDB4MTM4CisjZGVmaW5lIEdJVFNfUElEUjIgICAgICAgICAgICAgICAgICAg ICAgR0lDUl9QSURSMgogCiAvKiBSZWdpc3RlciBiaXRzICovCiAjZGVmaW5lIEdJVFNfVkFMSURf QklUICAgICAgICAgICAgICAgICAgQklUX1VMTCg2MykKQEAgLTU3LDYgKzU4LDcgQEAKICNkZWZp bmUgR0lUU19UWVBFUl9JVFRfU0laRV9NQVNLICAgICAgICAoMHhmVUwgPDwgR0lUU19UWVBFUl9J VFRfU0laRV9TSElGVCkKICNkZWZpbmUgR0lUU19UWVBFUl9JVFRfU0laRShyKSAgICAgICAgICAo KCgocikgJiBHSVRTX1RZUEVSX0lUVF9TSVpFX01BU0spID4+IFwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSVRTX1RZUEVSX0lUVF9TSVpFX1NISUZU KSArIDEpCisjZGVmaW5lIEdJVFNfVFlQRVJfUEhZU0lDQUwgICAgICAgICAgICAgKDFVIDw8IDAp CiAKICNkZWZpbmUgR0lUU19JSURSX1ZBTFVFICAgICAgICAgICAgICAgICAweDM0YwogCkBAIC03 OCw2ICs4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAoKChyZWcgPj4gR0lUU19CQVNF Ul9FTlRSWV9TSVpFX1NISUZUKSAmIDB4MWYpICsgMSkKICNkZWZpbmUgR0lUU19CQVNFUl9TSEFS RUFCSUxJVFlfU0hJRlQgICAxMAogI2RlZmluZSBHSVRTX0JBU0VSX1BBR0VfU0laRV9TSElGVCAg ICAgIDgKKyNkZWZpbmUgR0lUU19CQVNFUl9TSVpFX01BU0sgICAgICAgICAgICAweGZmCiAjZGVm aW5lIEdJVFNfQkFTRVJfUk9fTUFTSyAgICAgICAgICAgICAgKEdJVFNfQkFTRVJfVFlQRV9NQVNL IHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzMVVMIDw8IEdJ VFNfQkFTRVJfRU5UUllfU0laRV9TSElGVCkgfFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHSVRTX0JBU0VSX0lORElSRUNUKQotLSAKMi44LjIKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK