From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v2 2/3] x86/pt: enable binding of GSIs to a PVH Dom0 Date: Wed, 19 Apr 2017 16:11:27 +0100 Message-ID: <20170419151128.87416-3-roger.pau@citrix.com> References: <20170419151128.87416-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0rHd-0007ex-5H for xen-devel@lists.xenproject.org; Wed, 19 Apr 2017 15:12:41 +0000 In-Reply-To: <20170419151128.87416-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , boris.ostrovsky@oracle.com, Roger Pau Monne , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWNoaWV2ZSB0aGlzIGJ5IGV4cGFuZGluZyBwdF9pcnFfY3JlYXRlX2JpbmQgaW4gb3JkZXIgdG8g c3VwcG9ydCBtYXBwaW5nCmludGVycnVwdHMgb2YgdHlwZSBQVF9JUlFfVFlQRV9QQ0kgdG8gYSBQ VkggRG9tMC4gR1NJcyBib3VuZCB0byBEb20wIGFyZSBhbHdheXMKaWRlbnRpdHkgYm91bmQsIHdo aWNoIG1lYW5zIHRoZSBhbGwgdGhlIGZpZWxkcyBpbnNpZGUgb2YgdGhlIHUucGNpIHN1Yi1zdHJ1 Y3QKYXJlIGlnbm9yZWQsIGFuZCBvbmx5IHRoZSBtYWNoaW5lX2lycSBpcyBhY3R1YWxseSB1c2Vk IGluIG9yZGVyIHRvIGRldGVybWluZQp3aGljaCBHU0kgdGhlIGNhbGxlciB3YW50cyB0byBiaW5k LgoKQWxzbywgdGhlIGh2bV9pcnFfZHBjaSBzdHJ1Y3QgaXMgbm90IHVzZWQgYnkgYSBQVkggRG9t MCwgc2luY2UgdGhhdCdzIHVzZWQgdG8Kcm91dGUgaW50ZXJydXB0cyBhbmQgYWxsb3cgZGlmZmVy ZW50IGhvc3QgdG8gZ3Vlc3QgR1NJIG1hcHBpbmdzLCB3aGljaCBpcyBub3QKdXNlZCBieSBhIFBW SCBEb20wLgoKVGhpcyByZXF1aXJlcyBhZGRpbmcgc29tZSBzcGVjaWZpYyBoYW5kbGVycyBmb3Ig c3VjaCBkaXJlY3RseSBtYXBwZWQgR1NJcywKd2hpY2ggYnlwYXNzIHRoZSBQQ0kgaW50ZXJydXB0 IHJvdXRpbmcgZG9uZSBieSBYZW4gZm9yIEhWTSBndWVzdHMuCgpOb3RlIHRoYXQgY3VycmVudGx5 IHRoZXJlJ3Mgbm8gc3VwcG9ydCBmb3IgdW5iaW5kaW5nIHRoaXMgaW50ZXJydXB0cy4KClNpZ25l ZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ2M6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJl dy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHYxOgogLSBSZW1vdmUgdGhl IFBUX0lSUV9UWVBFX0dTSSBhbmQgaW5zdGVhZCBqdXN0IHVzZSBQVF9JUlFfVFlQRV9QQ0kgd2l0 aCBhCiAgIGhhcmR3YXJlIGRvbWFpbiBzcGVjaWFsIGNhc2luZy4KIC0gQ2hlY2sgdGhlIHRyaWdn ZXIgbW9kZSBvZiB0aGUgRG9tMCB2SU8gQVBJQyBpbiBvcmRlciB0byBzZXQgdGhlIHNoYXJlYWJs ZQogICBmbGFncyBpbiBwdF9pcnFfY3JlYXRlX2JpbmQuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9p cnEuYyAgICAgICB8ICAyOCArKysrKysKIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMgfCAy MTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogeGVuL2luY2x1 ZGUveGVuL2h2bS9pcnEuaCAgICB8ICAgNiArKwogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0 aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9p cnEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKaW5kZXggODYyNTU4NDdhNi4uY2I5MDg0ZTNm MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pcnEuYworKysgYi94ZW4vYXJjaC94ODYv aHZtL2lycS5jCkBAIC0xMjYsNiArMTI2LDM0IEBAIHZvaWQgaHZtX3BjaV9pbnR4X2RlYXNzZXJ0 KAogICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xvY2spOwogfQogCit2 b2lkIGh2bV9nc2lfYXNzZXJ0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBnc2kpCit7 CisgICAgc3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBodm1fZG9tYWluX2lycShkKTsKKworICAg IEFTU0VSVChnc2kgPCBodm1faXJxLT5ucl9nc2lzKTsKKyAgICBBU1NFUlQoIWhhc192cGljKGQp KTsKKyAgICBzcGluX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5pcnFfbG9jayk7CisgICAgaWYg KCAhaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3VudFtnc2ldICkKKyAgICB7CisgICAgICAgIGh2bV9p cnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXSsrOworICAgICAgICBhc3NlcnRfZ3NpKGQsIGdzaSk7 CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xvY2spOwor fQorCit2b2lkIGh2bV9nc2lfZGVhc3NlcnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IGdzaSkKK3sKKyAgICBzdHJ1Y3QgaHZtX2lycSAqaHZtX2lycSA9IGh2bV9kb21haW5faXJxKGQp OworCisgICAgQVNTRVJUKGdzaSA8IGh2bV9pcnEtPm5yX2dzaXMpOworICAgIEFTU0VSVCghaGFz X3ZwaWMoZCkpOworICAgIHNwaW5fbG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsK KyAgICBpZiAoIGh2bV9pcnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXSApCisgICAgICAgIGh2bV9p cnEtPmdzaV9hc3NlcnRfY291bnRbZ3NpXS0tOworICAgIEFTU0VSVCghaHZtX2lycS0+Z3NpX2Fz c2VydF9jb3VudFtnc2ldKTsKKyAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmly cV9sb2NrKTsKK30KKwogdm9pZCBodm1faXNhX2lycV9hc3NlcnQoCiAgICAgc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgaW50IGlzYV9pcnEpCiB7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pby5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwppbmRleCBlNWE0 M2U1MDhmLi4xYzg5YWUxNjQyIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9p by5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKQEAgLTE2NCw2ICsxNjQsMjAg QEAgc3RhdGljIHZvaWQgcHRfaXJxX3RpbWVfb3V0KHZvaWQgKmRhdGEpCiAKICAgICBzcGluX2xv Y2soJmlycV9tYXAtPmRvbS0+ZXZlbnRfbG9jayk7CiAKKyAgICBpZiAoIGlycV9tYXAtPmZsYWdz ICYgSFZNX0lSUV9EUENJX0lERU5USVRZX0dTSSApCisgICAgeworICAgICAgICBzdHJ1Y3QgcGly cSAqcGlycSA9IGRwY2lfcGlycShpcnFfbWFwKTsKKworICAgICAgICBBU1NFUlQoaXNfaGFyZHdh cmVfZG9tYWluKGlycV9tYXAtPmRvbSkpOworICAgICAgICAvKgorICAgICAgICAgKiBJZGVudGl0 eSBtYXBwZWQsIG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBndWVzdCBHU0kgbGlzdCB0byBm aW5kCisgICAgICAgICAqIG90aGVyIHBpcnFzIHNoYXJpbmcgdGhlIHNhbWUgZ3Vlc3QgR1NJLgor ICAgICAgICAgKi8KKyAgICAgICAgaXJxX21hcC0+ZmxhZ3MgfD0gSFZNX0lSUV9EUENJX0VPSV9M QVRDSDsKKyAgICAgICAgaHZtX2dzaV9kZWFzc2VydChpcnFfbWFwLT5kb20sIHBpcnEtPnBpcnEp OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKICAgICBkcGNpID0gZG9tYWluX2dldF9pcnFf ZHBjaShpcnFfbWFwLT5kb20pOwogICAgIGlmICggdW5saWtlbHkoIWRwY2kpICkKICAgICB7CkBA IC0xODUsNiArMTk5LDcgQEAgc3RhdGljIHZvaWQgcHRfaXJxX3RpbWVfb3V0KHZvaWQgKmRhdGEp CiAgICAgICAgIGh2bV9wY2lfaW50eF9kZWFzc2VydChpcnFfbWFwLT5kb20sIGRpZ2wtPmRldmlj ZSwgZGlnbC0+aW50eCk7CiAgICAgfQogCisgb3V0OgogICAgIHB0X3BpcnFfaXRlcmF0ZShpcnFf bWFwLT5kb20sIHB0X2lycV9ndWVzdF9lb2ksIE5VTEwpOwogCiAgICAgc3Bpbl91bmxvY2soJmly cV9tYXAtPmRvbS0+ZXZlbnRfbG9jayk7CkBAIC0yNzQsMTAgKzI4OSwxNiBAQCBpbnQgcHRfaXJx X2NyZWF0ZV9iaW5kKAogICAgIHNwaW5fbG9jaygmZC0+ZXZlbnRfbG9jayk7CiAKICAgICBodm1f aXJxX2RwY2kgPSBkb21haW5fZ2V0X2lycV9kcGNpKGQpOwotICAgIGlmICggaHZtX2lycV9kcGNp ID09IE5VTEwgKQorICAgIGlmICggaHZtX2lycV9kcGNpID09IE5VTEwgJiYgIWlzX2hhcmR3YXJl X2RvbWFpbihkKSApCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgaTsKIAorICAgICAgICAv KgorICAgICAgICAgKiBOQjogdGhlIGhhcmR3YXJlIGRvbWFpbiBkb2Vzbid0IHVzZSBhIGh2bV9p cnFfZHBjaSBzdHJ1Y3QgYmVjYXVzZQorICAgICAgICAgKiBpdCdzIG9ubHkgYWxsb3dlZCB0byBp ZGVudGl0eSBtYXAgR1NJcywgYW5kIHNvIHRoZSBkYXRhIGNvbnRhaW5lZCBpbgorICAgICAgICAg KiB0aGF0IHN0cnVjdCAodXNlZCB0byBtYXAgZ3Vlc3QgR1NJcyBpbnRvIG1hY2hpbmUgR1NJcyBh bmQgcGVyZm9ybQorICAgICAgICAgKiBpbnRlcnJ1cHQgcm91dGluZykgaXQncyBjb21wbGV0ZWx5 IHVzZWxlc3MgZm9yIGl0LgorICAgICAgICAgKi8KICAgICAgICAgaHZtX2lycV9kcGNpID0geHph bGxvYyhzdHJ1Y3QgaHZtX2lycV9kcGNpKTsKICAgICAgICAgaWYgKCBodm1faXJxX2RwY2kgPT0g TlVMTCApCiAgICAgICAgIHsKQEAgLTQyMiwzNSArNDQzLDUxIEBAIGludCBwdF9pcnFfY3JlYXRl X2JpbmQoCiAgICAgY2FzZSBQVF9JUlFfVFlQRV9QQ0k6CiAgICAgY2FzZSBQVF9JUlFfVFlQRV9N U0lfVFJBTlNMQVRFOgogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGJ1cyA9IHB0X2lycV9i aW5kLT51LnBjaS5idXM7Ci0gICAgICAgIHVuc2lnbmVkIGludCBkZXZpY2UgPSBwdF9pcnFfYmlu ZC0+dS5wY2kuZGV2aWNlOwotICAgICAgICB1bnNpZ25lZCBpbnQgaW50eCA9IHB0X2lycV9iaW5k LT51LnBjaS5pbnR4OwotICAgICAgICB1bnNpZ25lZCBpbnQgZ3Vlc3RfZ3NpID0gaHZtX3BjaV9p bnR4X2dzaShkZXZpY2UsIGludHgpOwotICAgICAgICB1bnNpZ25lZCBpbnQgbGluayA9IGh2bV9w Y2lfaW50eF9saW5rKGRldmljZSwgaW50eCk7Ci0gICAgICAgIHN0cnVjdCBkZXZfaW50eF9nc2lf bGluayAqZGlnbCA9IHhtYWxsb2Moc3RydWN0IGRldl9pbnR4X2dzaV9saW5rKTsKLSAgICAgICAg c3RydWN0IGh2bV9naXJxX2RwY2lfbWFwcGluZyAqZ2lycSA9Ci0gICAgICAgICAgICB4bWFsbG9j KHN0cnVjdCBodm1fZ2lycV9kcGNpX21hcHBpbmcpOworICAgICAgICBzdHJ1Y3QgZGV2X2ludHhf Z3NpX2xpbmsgKmRpZ2wgPSBOVUxMOworICAgICAgICBzdHJ1Y3QgaHZtX2dpcnFfZHBjaV9tYXBw aW5nICpnaXJxID0gTlVMTDsKKyAgICAgICAgdW5zaWduZWQgaW50IGd1ZXN0X2dzaTsKIAotICAg ICAgICBpZiAoICFkaWdsIHx8ICFnaXJxICkKKyAgICAgICAgLyoKKyAgICAgICAgICogTWFwcGlu ZyBHU0lzIGZvciB0aGUgaGFyZHdhcmUgZG9tYWluIGlzIGRpZmZlcmVudCB0aGFuIGRvaW5nIGl0 IGZvcgorICAgICAgICAgKiBhbiB1bnByaXZpbGVkZ2VkIGd1ZXN0LCB0aGUgaGFyZHdhcmUgZG9t YWluIGlzIG9ubHkgYWxsb3dlZCB0bworICAgICAgICAgKiBpZGVudGl0eSBtYXAgR1NJcywgYW5k IGFzIHN1Y2ggYWxsIHRoZSBkYXRhIGluIHRoZSB1LnBjaSB1bmlvbiBpcworICAgICAgICAgKiBk aXNjYXJkZWQuCisgICAgICAgICAqLworICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4o ZCkgKQogICAgICAgICB7Ci0gICAgICAgICAgICBzcGluX3VubG9jaygmZC0+ZXZlbnRfbG9jayk7 Ci0gICAgICAgICAgICB4ZnJlZShnaXJxKTsKLSAgICAgICAgICAgIHhmcmVlKGRpZ2wpOwotICAg ICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHVuc2lnbmVk IGludCBsaW5rOworCisgICAgICAgICAgICBkaWdsID0geG1hbGxvYyhzdHJ1Y3QgZGV2X2ludHhf Z3NpX2xpbmspOworICAgICAgICAgICAgZ2lycSA9IHhtYWxsb2Moc3RydWN0IGh2bV9naXJxX2Rw Y2lfbWFwcGluZyk7CisKKyAgICAgICAgICAgIGlmICggIWRpZ2wgfHwgIWdpcnEgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAg ICAgICAgICAgICAgICB4ZnJlZShnaXJxKTsKKyAgICAgICAgICAgICAgICB4ZnJlZShkaWdsKTsK KyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgZ2lycS0+YnVzID0gZGlnbC0+YnVzID0gcHRfaXJxX2JpbmQtPnUucGNpLmJ1czsKKyAg ICAgICAgICAgIGdpcnEtPmRldmljZSA9IGRpZ2wtPmRldmljZSA9IHB0X2lycV9iaW5kLT51LnBj aS5kZXZpY2U7CisgICAgICAgICAgICBnaXJxLT5pbnR4ID0gZGlnbC0+aW50eCA9IHB0X2lycV9i aW5kLT51LnBjaS5pbnR4OworICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmZGlnbC0+bGlzdCwg JnBpcnFfZHBjaS0+ZGlnbF9saXN0KTsKIAotICAgICAgICBodm1faXJxX2RwY2ktPmxpbmtfY250 W2xpbmtdKys7CisgICAgICAgICAgICBndWVzdF9nc2kgPSBodm1fcGNpX2ludHhfZ3NpKGRpZ2wt PmRldmljZSwgZGlnbC0+aW50eCk7CisgICAgICAgICAgICBsaW5rID0gaHZtX3BjaV9pbnR4X2xp bmsoZGlnbC0+ZGV2aWNlLCBkaWdsLT5pbnR4KTsKIAotICAgICAgICBkaWdsLT5idXMgPSBidXM7 Ci0gICAgICAgIGRpZ2wtPmRldmljZSA9IGRldmljZTsKLSAgICAgICAgZGlnbC0+aW50eCA9IGlu dHg7Ci0gICAgICAgIGxpc3RfYWRkX3RhaWwoJmRpZ2wtPmxpc3QsICZwaXJxX2RwY2ktPmRpZ2xf bGlzdCk7CisgICAgICAgICAgICBodm1faXJxX2RwY2ktPmxpbmtfY250W2xpbmtdKys7CiAKLSAg ICAgICAgZ2lycS0+YnVzID0gYnVzOwotICAgICAgICBnaXJxLT5kZXZpY2UgPSBkZXZpY2U7Ci0g ICAgICAgIGdpcnEtPmludHggPSBpbnR4OwotICAgICAgICBnaXJxLT5tYWNoaW5lX2dzaSA9IHBp cnE7Ci0gICAgICAgIGxpc3RfYWRkX3RhaWwoJmdpcnEtPmxpc3QsICZodm1faXJxX2RwY2ktPmdp cnFbZ3Vlc3RfZ3NpXSk7CisgICAgICAgICAgICBnaXJxLT5tYWNoaW5lX2dzaSA9IHBpcnE7Cisg ICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZnaXJxLT5saXN0LCAmaHZtX2lycV9kcGNpLT5naXJx W2d1ZXN0X2dzaV0pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg ICAgICAgLyogTVNJX1RSQU5TTEFURSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSBk b21haW4uICovCisgICAgICAgICAgICBBU1NFUlQocHRfaXJxX2JpbmQtPmlycV90eXBlID09IFBU X0lSUV9UWVBFX1BDSSk7CisgICAgICAgICAgICBndWVzdF9nc2kgPSBwaXJxOworICAgICAgICAg ICAgQVNTRVJUKGd1ZXN0X2dzaSA8IGh2bV9kb21haW5faXJxKGQpLT5ucl9nc2lzKTsKKyAgICAg ICAgfQogCiAgICAgICAgIC8qIEJpbmQgdGhlIHNhbWUgbWlycSBvbmNlIGluIHRoZSBzYW1lIGRv bWFpbiAqLwogICAgICAgICBpZiAoICEocGlycV9kcGNpLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9N QVBQRUQpICkKQEAgLTQ3Miw3ICs1MDksMjcgQEAgaW50IHB0X2lycV9jcmVhdGVfYmluZCgKICAg ICAgICAgICAgICAgICBwaXJxX2RwY2ktPmZsYWdzID0gSFZNX0lSUV9EUENJX01BUFBFRCB8CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWTV9JUlFfRFBDSV9NQUNIX1BDSSB8 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWTV9JUlFfRFBDSV9HVUVTVF9Q Q0k7Ci0gICAgICAgICAgICAgICAgc2hhcmUgPSBCSU5EX1BJUlFfX1dJTExfU0hBUkU7CisgICAg ICAgICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKKyAgICAgICAgICAgICAg ICAgICAgc2hhcmUgPSBCSU5EX1BJUlFfX1dJTExfU0hBUkU7CisgICAgICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBp bjsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV92aW9hcGljICp2aW9hcGljID0gZ3Np X3Zpb2FwaWMoZCwgZ3Vlc3RfZ3NpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGluKTsKKworICAgICAgICAgICAgICAgICAg ICBpZiAoICF2aW9hcGljICkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICBwaXJxX2RwY2ktPmZsYWdzIHw9IEhWTV9JUlFfRFBDSV9JREVOVElUWV9HU0k7CisgICAgICAg ICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIENoZWNrIGlmIHRoZSBjb3Jy ZXNwb25kaW5nIHZJTyBBUElDIHBpbiBpcyBjb25maWd1cmVkCisgICAgICAgICAgICAgICAgICAg ICAqIGxldmVsIG9yIGVkZ2UgdHJpZ2dlciwgbGV2ZWwgdHJpZ2dlcmVkIGludGVycnVwdHMgd2ls bAorICAgICAgICAgICAgICAgICAgICAgKiBiZSBtYXJrZWQgYXMgc2hhcmVhYmxlLgorICAgICAg ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgc2hhcmUgPSB2aW9hcGljLT5y ZWRpcnRibFtwaW5dLmZpZWxkcy50cmlnX21vZGU7CisgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgfQogCiAgICAgICAgICAgICAvKiBJbml0IHRpbWVyIGJlZm9yZSBiaW5kaW5nICovCkBA IC00ODksOSArNTQ2LDE1IEBAIGludCBwdF9pcnFfY3JlYXRlX2JpbmQoCiAgICAgICAgICAgICAg ICAgICogSVJRX0dVRVNUIGlzIG5vdCBzZXQuIEFzIHN1Y2ggd2UgY2FuIHJlc2V0ICdkb20nIGRp cmVjdGx5LgogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHBpcnFfZHBjaS0+ ZG9tID0gTlVMTDsKLSAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZ2lycS0+bGlzdCk7Ci0gICAg ICAgICAgICAgICAgbGlzdF9kZWwoJmRpZ2wtPmxpc3QpOwotICAgICAgICAgICAgICAgIGh2bV9p cnFfZHBjaS0+bGlua19jbnRbbGlua10tLTsKKyAgICAgICAgICAgICAgICBpZiAoICFpc19oYXJk d2FyZV9kb21haW4oZCkgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IGxpbmsgPSBodm1fcGNpX2ludHhfbGluayhkaWdsLT5kZXZpY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGln bC0+aW50eCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWwoJmdpcnEtPmxpc3QpOwor ICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZGlnbC0+bGlzdCk7CisgICAgICAgICAgICAg ICAgICAgIGh2bV9pcnFfZHBjaS0+bGlua19jbnRbbGlua10tLTsKKyAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgcGlycV9kcGNpLT5mbGFncyA9IDA7CiAgICAgICAgICAgICAgICAg cGlycV9jbGVhbnVwX2NoZWNrKGluZm8sIGQpOwogICAgICAgICAgICAgICAgIHNwaW5fdW5sb2Nr KCZkLT5ldmVudF9sb2NrKTsKQEAgLTUwNCwxMCArNTY3LDE4IEBAIGludCBwdF9pcnFfY3JlYXRl X2JpbmQoCiAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKIAogICAgICAgICBp ZiAoIGlvbW11X3ZlcmJvc2UgKQotICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0lORk8KLSAg ICAgICAgICAgICAgICAgICAiZCVkOiBiaW5kOiBtX2dzaT0ldSBnX2dzaT0ldSBkZXY9JTAyeC4l MDJ4LiV1IGludHg9JXVcbiIsCi0gICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBwaXJx LCBndWVzdF9nc2ksIGJ1cywKLSAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChkZXZpY2UpLCBQ Q0lfRlVOQyhkZXZpY2UpLCBpbnR4KTsKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciBidWZb NTBdOworCisgICAgICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQorICAgICAg ICAgICAgICAgIHNucHJpbnRmKGJ1ZiwgQVJSQVlfU0laRShidWYpLCAiIGRldj0lMDJ4LiUwMngu JXUgaW50eD0ldSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZGlnbC0+YnVzLCBQQ0lfU0xP VChkaWdsLT5kZXZpY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9GVU5DKGRpZ2wt PmRldmljZSksIGRpZ2wtPmludHgpOworCisgICAgICAgICAgICBwcmludGsoWEVOTE9HX0dfSU5G TyAiZCVkOiBiaW5kOiBtX2dzaT0ldSBnX2dzaT0ldSVzXG4iLAorICAgICAgICAgICAgICAgICAg IGQtPmRvbWFpbl9pZCwgcGlycSwgZ3Vlc3RfZ3NpLAorICAgICAgICAgICAgICAgICAgICFpc19o YXJkd2FyZV9kb21haW4oZCkgPyBidWYgOiAiIik7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CiAgICAgfQogCkBAIC01MjIsNyArNTkzLDYgQEAgaW50IHB0X2lycV9jcmVhdGVfYmluZCgKIGlu dCBwdF9pcnFfZGVzdHJveV9iaW5kKAogICAgIHN0cnVjdCBkb21haW4gKmQsIHhlbl9kb21jdGxf YmluZF9wdF9pcnFfdCAqcHRfaXJxX2JpbmQpCiB7Ci0gICAgc3RydWN0IGh2bV9pcnFfZHBjaSAq aHZtX2lycV9kcGNpOwogICAgIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2k7CiAgICAg dW5zaWduZWQgaW50IG1hY2hpbmVfZ3NpID0gcHRfaXJxX2JpbmQtPm1hY2hpbmVfaXJxOwogICAg IHN0cnVjdCBwaXJxICpwaXJxOwpAQCAtNTUyLDE3ICs2MjIsMTUgQEAgaW50IHB0X2lycV9kZXN0 cm95X2JpbmQoCiAKICAgICBzcGluX2xvY2soJmQtPmV2ZW50X2xvY2spOwogCi0gICAgaHZtX2ly cV9kcGNpID0gZG9tYWluX2dldF9pcnFfZHBjaShkKTsKLQotICAgIGlmICggaHZtX2lycV9kcGNp ID09IE5VTEwgKQorICAgIHBpcnEgPSBwaXJxX2luZm8oZCwgbWFjaGluZV9nc2kpOworICAgIHBp cnFfZHBjaSA9IHBpcnFfZHBjaShwaXJxKTsKKyAgICBpZiAoIHBpcnFfZHBjaS0+ZmxhZ3MgJiBI Vk1fSVJRX0RQQ0lfSURFTlRJVFlfR1NJICkKICAgICB7CisgICAgICAgIEFTU0VSVChpc19oYXJk d2FyZV9kb21haW4oZCkpOwogICAgICAgICBzcGluX3VubG9jaygmZC0+ZXZlbnRfbG9jayk7Ci0g ICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiAgICAg fQogCi0gICAgcGlycSA9IHBpcnFfaW5mbyhkLCBtYWNoaW5lX2dzaSk7Ci0gICAgcGlycV9kcGNp ID0gcGlycV9kcGNpKHBpcnEpOwotCiAgICAgaWYgKCBwdF9pcnFfYmluZC0+aXJxX3R5cGUgIT0g UFRfSVJRX1RZUEVfTVNJICkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCBidXMgPSBwdF9p cnFfYmluZC0+dS5wY2kuYnVzOwpAQCAtNTcwLDkgKzYzOCwxNiBAQCBpbnQgcHRfaXJxX2Rlc3Ry b3lfYmluZCgKICAgICAgICAgdW5zaWduZWQgaW50IGludHggPSBwdF9pcnFfYmluZC0+dS5wY2ku aW50eDsKICAgICAgICAgdW5zaWduZWQgaW50IGd1ZXN0X2dzaSA9IGh2bV9wY2lfaW50eF9nc2ko ZGV2aWNlLCBpbnR4KTsKICAgICAgICAgdW5zaWduZWQgaW50IGxpbmsgPSBodm1fcGNpX2ludHhf bGluayhkZXZpY2UsIGludHgpOworICAgICAgICBzdHJ1Y3QgaHZtX2lycV9kcGNpICpodm1faXJx X2RwY2kgPSBkb21haW5fZ2V0X2lycV9kcGNpKGQpOwogICAgICAgICBzdHJ1Y3QgaHZtX2dpcnFf ZHBjaV9tYXBwaW5nICpnaXJxOwogICAgICAgICBzdHJ1Y3QgZGV2X2ludHhfZ3NpX2xpbmsgKmRp Z2wsICp0bXA7CiAKKyAgICAgICAgaWYgKCBodm1faXJxX2RwY2kgPT0gTlVMTCApCisgICAgICAg IHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRy eSAoIGdpcnEsICZodm1faXJxX2RwY2ktPmdpcnFbZ3Vlc3RfZ3NpXSwgbGlzdCApCiAgICAgICAg IHsKICAgICAgICAgICAgIGlmICggZ2lycS0+YnVzICAgICAgICAgPT0gYnVzICYmCkBAIC02OTYs NyArNzcxLDcgQEAgaW50IGh2bV9kb19JUlFfZHBjaShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qg cGlycSAqcGlycSkKICAgICBzdHJ1Y3QgaHZtX2lycV9kcGNpICpkcGNpID0gZG9tYWluX2dldF9p cnFfZHBjaShkKTsKICAgICBzdHJ1Y3QgaHZtX3BpcnFfZHBjaSAqcGlycV9kcGNpID0gcGlycV9k cGNpKHBpcnEpOwogCi0gICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhZHBjaSB8fCAhcGlycV9k cGNpIHx8CisgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAoIWlzX2hhcmR3YXJlX2RvbWFpbihk KSAmJiAhZHBjaSkgfHwgIXBpcnFfZHBjaSB8fAogICAgICAgICAgIShwaXJxX2RwY2ktPmZsYWdz ICYgSFZNX0lSUV9EUENJX01BUFBFRCkgKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNzU3LDcg KzgzMiw3IEBAIHZvaWQgaHZtX2RwY2lfbXNpX2VvaShzdHJ1Y3QgZG9tYWluICpkLCBpbnQgdmVj dG9yKQogCiBzdGF0aWMgdm9pZCBodm1fZGlycV9hc3Npc3Qoc3RydWN0IGRvbWFpbiAqZCwgc3Ry dWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSkKIHsKLSAgICBpZiAoIHVubGlrZWx5KCFodm1f ZG9tYWluX2lycShkKS0+ZHBjaSkgKQorICAgIGlmICggdW5saWtlbHkoIWh2bV9kb21haW5faXJx KGQpLT5kcGNpKSAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICB7CiAgICAgICAgIEFT U0VSVF9VTlJFQUNIQUJMRSgpOwogICAgICAgICByZXR1cm47CkBAIC03ODksMTAgKzg2NCwxNyBA QCBzdGF0aWMgdm9pZCBodm1fZGlycV9hc3Npc3Qoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGh2 bV9waXJxX2RwY2kgKnBpcnFfZHBjaSkKIAogICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICgg ZGlnbCwgJnBpcnFfZHBjaS0+ZGlnbF9saXN0LCBsaXN0ICkKICAgICAgICAgeworICAgICAgICAg ICAgQVNTRVJUKCEocGlycV9kcGNpLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9JREVOVElUWV9HU0kp KTsKICAgICAgICAgICAgIGh2bV9wY2lfaW50eF9hc3NlcnQoZCwgZGlnbC0+ZGV2aWNlLCBkaWds LT5pbnR4KTsKICAgICAgICAgICAgIHBpcnFfZHBjaS0+cGVuZGluZysrOwogICAgICAgICB9CiAK KyAgICAgICAgaWYgKCBwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX0lERU5USVRZX0dT SSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGh2bV9nc2lfYXNzZXJ0KGQsIHBpcnEtPnBpcnEp OworICAgICAgICAgICAgcGlycV9kcGNpLT5wZW5kaW5nKys7CisgICAgICAgIH0KKwogICAgICAg ICBpZiAoIHBpcnFfZHBjaS0+ZmxhZ3MgJiBIVk1fSVJRX0RQQ0lfVFJBTlNMQVRFICkKICAgICAg ICAgewogICAgICAgICAgICAgLyogZm9yIHRyYW5zbGF0ZWQgTVNJIHRvIElOVHggaW50ZXJydXB0 LCBlb2kgYXMgZWFybHkgYXMgcG9zc2libGUgKi8KQEAgLTgxNCwxNyArODk2LDEyIEBAIHN0YXRp YyB2b2lkIGh2bV9kaXJxX2Fzc2lzdChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgaHZtX3BpcnFf ZHBjaSAqcGlycV9kcGNpKQogICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKIH0KIAot c3RhdGljIHZvaWQgX19odm1fZHBjaV9lb2koc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBodm1fZ2lycV9kcGNpX21hcHBpbmcgKmdpcnEs CitzdGF0aWMgdm9pZCBfX2h2bV9waXJxX2VvaShzdHJ1Y3QgcGlycSAqcGlycSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkgKmVudCkK IHsKLSAgICBzdHJ1Y3QgcGlycSAqcGlycSA9IHBpcnFfaW5mbyhkLCBnaXJxLT5tYWNoaW5lX2dz aSk7Ci0gICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaTsKLQotICAgIGlmICggIWh2 bV9kb21haW5fdXNlX3BpcnEoZCwgcGlycSkgKQotICAgICAgICBodm1fcGNpX2ludHhfZGVhc3Nl cnQoZCwgZ2lycS0+ZGV2aWNlLCBnaXJxLT5pbnR4KTsKKyAgICBzdHJ1Y3QgaHZtX3BpcnFfZHBj aSAqcGlycV9kcGNpID0gcGlycV9kcGNpKHBpcnEpOwogCi0gICAgcGlycV9kcGNpID0gcGlycV9k cGNpKHBpcnEpOworICAgIEFTU0VSVChwaXJxX2RwY2kpOwogCiAgICAgLyoKICAgICAgKiBObyBu ZWVkIHRvIGdldCB2ZWN0b3IgbG9jayBmb3IgdGltZXIKQEAgLTgzOSw2ICs5MTYsMzIgQEAgc3Rh dGljIHZvaWQgX19odm1fZHBjaV9lb2koc3RydWN0IGRvbWFpbiAqZCwKICAgICBwaXJxX2d1ZXN0 X2VvaShwaXJxKTsKIH0KIAorc3RhdGljIHZvaWQgX19odm1fZHBjaV9lb2koc3RydWN0IGRvbWFp biAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBodm1fZ2lycV9k cGNpX21hcHBpbmcgKmdpcnEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlv biB2aW9hcGljX3JlZGlyX2VudHJ5ICplbnQpCit7CisgICAgc3RydWN0IHBpcnEgKnBpcnEgPSBw aXJxX2luZm8oZCwgZ2lycS0+bWFjaGluZV9nc2kpOworCisgICAgaWYgKCAhaHZtX2RvbWFpbl91 c2VfcGlycShkLCBwaXJxKSApCisgICAgICAgIGh2bV9wY2lfaW50eF9kZWFzc2VydChkLCBnaXJx LT5kZXZpY2UsIGdpcnEtPmludHgpOworCisgICAgX19odm1fcGlycV9lb2kocGlycSwgZW50KTsK K30KKworc3RhdGljIHZvaWQgX19odm1fZ3NpX2VvaShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBpbnQgZ3NpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlvbiB2aW9hcGlj X3JlZGlyX2VudHJ5ICplbnQpCit7CisgICAgc3RydWN0IHBpcnEgKnBpcnEgPSBwaXJxX2luZm8o ZCwgZ3NpKTsKKyAgICBzdHJ1Y3QgaHZtX3BpcnFfZHBjaSAqcGlycV9kcGNpID0gcGlycV9kcGNp KHBpcnEpOworCisgICAgLyogQ2hlY2sgaWYgR1NJIGlzIGFjdHVhbGx5IG1hcHBlZC4gKi8KKyAg ICBpZiAoICFwaXJxX2RwY2kgKQorICAgICAgICByZXR1cm47CisKKyAgICBodm1fZ3NpX2RlYXNz ZXJ0KGQsIGdzaSk7CisgICAgX19odm1fcGlycV9lb2kocGlycSwgZW50KTsKK30KKwogdm9pZCBo dm1fZHBjaV9lb2koc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGd1ZXN0X2dzaSwKICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkgKmVudCkKIHsK QEAgLTg0OCw2ICs5NTEsMTMgQEAgdm9pZCBodm1fZHBjaV9lb2koc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgaW50IGd1ZXN0X2dzaSwKICAgICBpZiAoICFpb21tdV9lbmFibGVkICkKICAgICAg ICAgcmV0dXJuOwogCisgICAgaWYgKCBpc19oYXJkd2FyZV9kb21haW4oZCkgKQorICAgIHsKKyAg ICAgICAgc3Bpbl9sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAgICAgICAgX19odm1fZ3NpX2VvaShk LCBndWVzdF9nc2ksIGVudCk7CisgICAgICAgIGdvdG8gdW5sb2NrOworICAgIH0KKwogICAgIGlm ICggZ3Vlc3RfZ3NpIDwgTlJfSVNBSVJRUyApCiAgICAgewogICAgICAgICBodm1fZHBjaV9pc2Fp cnFfZW9pKGQsIGd1ZXN0X2dzaSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaHZtL2ly cS5oIGIveGVuL2luY2x1ZGUveGVuL2h2bS9pcnEuaAppbmRleCA2NzFhNmYyZTA2Li4wZDJjNzJj MTA5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaHZtL2lycS5oCisrKyBiL3hlbi9pbmNs dWRlL3hlbi9odm0vaXJxLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IGRldl9pbnR4X2dzaV9s aW5rIHsKICNkZWZpbmUgX0hWTV9JUlFfRFBDSV9FT0lfTEFUQ0hfU0hJRlQgICAgICAgICAgIDMK ICNkZWZpbmUgX0hWTV9JUlFfRFBDSV9HVUVTVF9QQ0lfU0hJRlQgICAgICAgICAgIDQKICNkZWZp bmUgX0hWTV9JUlFfRFBDSV9HVUVTVF9NU0lfU0hJRlQgICAgICAgICAgIDUKKyNkZWZpbmUgX0hW TV9JUlFfRFBDSV9JREVOVElUWV9HU0lfU0hJRlQgICAgICAgIDYKICNkZWZpbmUgX0hWTV9JUlFf RFBDSV9UUkFOU0xBVEVfU0hJRlQgICAgICAgICAgMTUKICNkZWZpbmUgSFZNX0lSUV9EUENJX01B Q0hfUENJICAgICAgICAoMSA8PCBfSFZNX0lSUV9EUENJX01BQ0hfUENJX1NISUZUKQogI2RlZmlu ZSBIVk1fSVJRX0RQQ0lfTUFDSF9NU0kgICAgICAgICgxIDw8IF9IVk1fSVJRX0RQQ0lfTUFDSF9N U0lfU0hJRlQpCkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBkZXZfaW50eF9nc2lfbGluayB7CiAj ZGVmaW5lIEhWTV9JUlFfRFBDSV9FT0lfTEFUQ0ggICAgICAgKDEgPDwgX0hWTV9JUlFfRFBDSV9F T0lfTEFUQ0hfU0hJRlQpCiAjZGVmaW5lIEhWTV9JUlFfRFBDSV9HVUVTVF9QQ0kgICAgICAgKDEg PDwgX0hWTV9JUlFfRFBDSV9HVUVTVF9QQ0lfU0hJRlQpCiAjZGVmaW5lIEhWTV9JUlFfRFBDSV9H VUVTVF9NU0kgICAgICAgKDEgPDwgX0hWTV9JUlFfRFBDSV9HVUVTVF9NU0lfU0hJRlQpCisjZGVm aW5lIEhWTV9JUlFfRFBDSV9JREVOVElUWV9HU0kgICAgKDEgPDwgX0hWTV9JUlFfRFBDSV9JREVO VElUWV9HU0lfU0hJRlQpCiAjZGVmaW5lIEhWTV9JUlFfRFBDSV9UUkFOU0xBVEUgICAgICAgKDEg PDwgX0hWTV9JUlFfRFBDSV9UUkFOU0xBVEVfU0hJRlQpCiAKICNkZWZpbmUgVk1TSV9ERVNUX0lE X01BU0sgMHhmZgpAQCAtMTIzLDYgKzEyNSwxMCBAQCB2b2lkIGh2bV9pc2FfaXJxX2Fzc2VydCgK IHZvaWQgaHZtX2lzYV9pcnFfZGVhc3NlcnQoCiAgICAgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgaW50IGlzYV9pcnEpOwogCisvKiBNb2RpZnkgc3RhdGUgb2YgR1NJcy4gKi8KK3ZvaWQgaHZt X2dzaV9hc3NlcnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSk7Cit2b2lkIGh2 bV9nc2lfZGVhc3NlcnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSk7CisKIGlu dCBodm1fc2V0X3BjaV9saW5rX3JvdXRlKHN0cnVjdCBkb21haW4gKmQsIHU4IGxpbmssIHU4IGlz YV9pcnEpOwogCiBpbnQgaHZtX2luamVjdF9tc2koc3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3Qg YWRkciwgdWludDMyX3QgZGF0YSk7Ci0tIAoyLjExLjAgKEFwcGxlIEdpdC04MSkKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK