From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v5 01/13] x86: move callback_op code to pv/callback.c Date: Mon, 26 Jun 2017 17:28:30 +0100 Message-ID: <20170626162842.482-2-wei.liu2@citrix.com> References: <20170626162842.482-1-wei.liu2@citrix.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 1dPWt3-00059F-1J for xen-devel@lists.xenproject.org; Mon, 26 Jun 2017 16:29:17 +0000 In-Reply-To: <20170626162842.482-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGFrZSB0aGUgY2hhbmNlIHRvIGNoYW5nZSB2IHRvIGN1cnIuCgpTaWduZWQtb2ZmLWJ5OiBXZWkg TGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9wdi9NYWtlZmlsZSAg ICB8ICAgMSArCiB4ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYyAgfCAxODMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni94ODZfNjQvdHJh cHMuYyB8IDE0OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBj aGFuZ2VkLCAxODQgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHhlbi9hcmNoL3g4Ni9wdi9jYWxsYmFjay5jCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3B2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L3B2L01ha2VmaWxlCmluZGV4IDdlM2RhMzMy ZDguLmJkMWE3MDgxZmMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9NYWtlZmlsZQorKysg Yi94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUKQEAgLTEsNiArMSw3IEBACiBvYmoteSArPSBoeXBl cmNhbGwubwogb2JqLXkgKz0gdHJhcHMubwogCitvYmoteSArPSBjYWxsYmFjay5vCiBvYmotYmlu LXkgKz0gZG9tMF9idWlsZC5pbml0Lm8KIG9iai15ICs9IGRvbWFpbi5vCiBvYmoteSArPSBlbXVs YXRlLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9jYWxsYmFjay5jIGIveGVuL2FyY2gv eDg2L3B2L2NhbGxiYWNrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u Y2JjZGVhYzJkYQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9jYWxsYmFjay5j CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogcHYvY2FsbGJhY2suYworICoKKyAqIGh5cGVyY2Fs bCBoYW5kbGVzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBndWVzdCBjYWxsYmFjaworICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4v Z3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9zY2hl ZC5oPgorCisjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KKyNpbmNsdWRlIDxhc20vbm1pLmg+Cisj aW5jbHVkZSA8YXNtL3RyYXBzLmg+CisKKyNpbmNsdWRlIDxwdWJsaWMvY2FsbGJhY2suaD4KKwor c3RhdGljIGxvbmcgcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soc3RydWN0IGNhbGxiYWNrX3JlZ2lz dGVyICpyZWcpCit7CisgICAgbG9uZyByZXQgPSAwOworICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0g Y3VycmVudDsKKworICAgIGlmICggIWlzX2Nhbm9uaWNhbF9hZGRyZXNzKHJlZy0+YWRkcmVzcykg KQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHN3aXRjaCAoIHJlZy0+dHlwZSApCisg ICAgeworICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX2V2ZW50OgorICAgICAgICBjdXJyLT5hcmNoLnB2 X3ZjcHUuZXZlbnRfY2FsbGJhY2tfZWlwICAgID0gcmVnLT5hZGRyZXNzOworICAgICAgICBicmVh azsKKworICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX2ZhaWxzYWZlOgorICAgICAgICBjdXJyLT5hcmNo LnB2X3ZjcHUuZmFpbHNhZmVfY2FsbGJhY2tfZWlwID0gcmVnLT5hZGRyZXNzOworICAgICAgICBp ZiAoIHJlZy0+ZmxhZ3MgJiBDQUxMQkFDS0ZfbWFza19ldmVudHMgKQorICAgICAgICAgICAgc2V0 X2JpdChfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMsCisgICAgICAgICAgICAgICAgICAg ICZjdXJyLT5hcmNoLnZnY19mbGFncyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsZWFy X2JpdChfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMsCisgICAgICAgICAgICAgICAgICAg ICAgJmN1cnItPmFyY2gudmdjX2ZsYWdzKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENB TExCQUNLVFlQRV9zeXNjYWxsOgorICAgICAgICBjdXJyLT5hcmNoLnB2X3ZjcHUuc3lzY2FsbF9j YWxsYmFja19laXAgID0gcmVnLT5hZGRyZXNzOworICAgICAgICBpZiAoIHJlZy0+ZmxhZ3MgJiBD QUxMQkFDS0ZfbWFza19ldmVudHMgKQorICAgICAgICAgICAgc2V0X2JpdChfVkdDRl9zeXNjYWxs X2Rpc2FibGVzX2V2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgJmN1cnItPmFyY2gudmdjX2Zs YWdzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2xlYXJfYml0KF9WR0NGX3N5c2NhbGxf ZGlzYWJsZXNfZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICZjdXJyLT5hcmNoLnZnY19m bGFncyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDMy OgorICAgICAgICBjdXJyLT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2NhbGxiYWNrX2VpcCA9IHJl Zy0+YWRkcmVzczsKKyAgICAgICAgY3Vyci0+YXJjaC5wdl92Y3B1LnN5c2NhbGwzMl9kaXNhYmxl c19ldmVudHMgPQorICAgICAgICAgICAgISEocmVnLT5mbGFncyAmIENBTExCQUNLRl9tYXNrX2V2 ZW50cyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzZW50ZXI6 CisgICAgICAgIGN1cnItPmFyY2gucHZfdmNwdS5zeXNlbnRlcl9jYWxsYmFja19laXAgPSByZWct PmFkZHJlc3M7CisgICAgICAgIGN1cnItPmFyY2gucHZfdmNwdS5zeXNlbnRlcl9kaXNhYmxlc19l dmVudHMgPQorICAgICAgICAgICAgISEocmVnLT5mbGFncyAmIENBTExCQUNLRl9tYXNrX2V2ZW50 cyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxMQkFDS1RZUEVfbm1pOgorICAgICAg ICByZXQgPSByZWdpc3Rlcl9ndWVzdF9ubWlfY2FsbGJhY2socmVnLT5hZGRyZXNzKTsKKyAgICAg ICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXQgPSAtRU5PU1lTOworICAgICAg ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgbG9uZyB1bnJl Z2lzdGVyX2d1ZXN0X2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja191bnJlZ2lzdGVyICp1bnJlZykK K3sKKyAgICBsb25nIHJldDsKKworICAgIHN3aXRjaCAoIHVucmVnLT50eXBlICkKKyAgICB7Cisg ICAgY2FzZSBDQUxMQkFDS1RZUEVfZXZlbnQ6CisgICAgY2FzZSBDQUxMQkFDS1RZUEVfZmFpbHNh ZmU6CisgICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDoKKyAgICBjYXNlIENBTExCQUNLVFlQ RV9zeXNjYWxsMzI6CisgICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzZW50ZXI6CisgICAgICAgIHJl dCA9IC1FSU5WQUw7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxMQkFDS1RZUEVfbm1p OgorICAgICAgICByZXQgPSB1bnJlZ2lzdGVyX2d1ZXN0X25taV9jYWxsYmFjaygpOworICAgICAg ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldCA9IC1FTk9TWVM7CisgICAgICAg IGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK2xvbmcgZG9fY2FsbGJhY2tf b3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBhcmcpCit7Cisg ICAgbG9uZyByZXQ7CisKKyAgICBzd2l0Y2ggKCBjbWQgKQorICAgIHsKKyAgICBjYXNlIENBTExC QUNLT1BfcmVnaXN0ZXI6CisgICAgeworICAgICAgICBzdHJ1Y3QgY2FsbGJhY2tfcmVnaXN0ZXIg cmVnOworCisgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgIGlmICggY29weV9mcm9tX2d1 ZXN0KCZyZWcsIGFyZywgMSkgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmV0ID0g cmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soJnJlZyk7CisgICAgfQorICAgIGJyZWFrOworCisgICAg Y2FzZSBDQUxMQkFDS09QX3VucmVnaXN0ZXI6CisgICAgeworICAgICAgICBzdHJ1Y3QgY2FsbGJh Y2tfdW5yZWdpc3RlciB1bnJlZzsKKworICAgICAgICByZXQgPSAtRUZBVUxUOworICAgICAgICBp ZiAoIGNvcHlfZnJvbV9ndWVzdCgmdW5yZWcsIGFyZywgMSkgKQorICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgcmV0ID0gdW5yZWdpc3Rlcl9ndWVzdF9jYWxsYmFjaygmdW5yZWcpOworICAg IH0KKyAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldCA9IC1FTk9TWVM7Cisg ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK2xvbmcgZG9fc2V0 X2NhbGxiYWNrcyh1bnNpZ25lZCBsb25nIGV2ZW50X2FkZHJlc3MsCisgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBmYWlsc2FmZV9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgc3lzY2FsbF9hZGRyZXNzKQoreworICAgIHN0cnVjdCBjYWxsYmFj a19yZWdpc3RlciBldmVudCA9IHsKKyAgICAgICAgLnR5cGUgPSBDQUxMQkFDS1RZUEVfZXZlbnQs CisgICAgICAgIC5hZGRyZXNzID0gZXZlbnRfYWRkcmVzcywKKyAgICB9OworICAgIHN0cnVjdCBj YWxsYmFja19yZWdpc3RlciBmYWlsc2FmZSA9IHsKKyAgICAgICAgLnR5cGUgPSBDQUxMQkFDS1RZ UEVfZmFpbHNhZmUsCisgICAgICAgIC5hZGRyZXNzID0gZmFpbHNhZmVfYWRkcmVzcywKKyAgICB9 OworICAgIHN0cnVjdCBjYWxsYmFja19yZWdpc3RlciBzeXNjYWxsID0geworICAgICAgICAudHlw ZSA9IENBTExCQUNLVFlQRV9zeXNjYWxsLAorICAgICAgICAuYWRkcmVzcyA9IHN5c2NhbGxfYWRk cmVzcywKKyAgICB9OworCisgICAgcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soJmV2ZW50KTsKKyAg ICByZWdpc3Rlcl9ndWVzdF9jYWxsYmFjaygmZmFpbHNhZmUpOworICAgIHJlZ2lzdGVyX2d1ZXN0 X2NhbGxiYWNrKCZzeXNjYWxsKTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisg KiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYyBiL3hl bi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYwppbmRleCBjODc3NDZlZjFjLi43OWJmYzRkM2YwIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2 L3g4Nl82NC90cmFwcy5jCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSA8YXNtL3NoYXJlZC5o PgogI2luY2x1ZGUgPGFzbS9odm0vaHZtLmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+ Ci0jaW5jbHVkZSA8cHVibGljL2NhbGxiYWNrLmg+CiAKIAogc3RhdGljIHZvaWQgcHJpbnRfeGVu X2luZm8odm9pZCkKQEAgLTMzNiwxNTMgKzMzNSw2IEBAIHZvaWQgc3ViYXJjaF9wZXJjcHVfdHJh cHNfaW5pdCh2b2lkKQogICAgIHdybXNybChNU1JfU1lTQ0FMTF9NQVNLLCBYRU5fU1lTQ0FMTF9N QVNLKTsKIH0KIAotc3RhdGljIGxvbmcgcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soc3RydWN0IGNh bGxiYWNrX3JlZ2lzdGVyICpyZWcpCi17Ci0gICAgbG9uZyByZXQgPSAwOwotICAgIHN0cnVjdCB2 Y3B1ICp2ID0gY3VycmVudDsKLQotICAgIGlmICggIWlzX2Nhbm9uaWNhbF9hZGRyZXNzKHJlZy0+ YWRkcmVzcykgKQotICAgICAgICByZXR1cm4gLUVJTlZBTDsKLQotICAgIHN3aXRjaCAoIHJlZy0+ dHlwZSApCi0gICAgewotICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX2V2ZW50OgotICAgICAgICB2LT5h cmNoLnB2X3ZjcHUuZXZlbnRfY2FsbGJhY2tfZWlwICAgID0gcmVnLT5hZGRyZXNzOwotICAgICAg ICBicmVhazsKLQotICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX2ZhaWxzYWZlOgotICAgICAgICB2LT5h cmNoLnB2X3ZjcHUuZmFpbHNhZmVfY2FsbGJhY2tfZWlwID0gcmVnLT5hZGRyZXNzOwotICAgICAg ICBpZiAoIHJlZy0+ZmxhZ3MgJiBDQUxMQkFDS0ZfbWFza19ldmVudHMgKQotICAgICAgICAgICAg c2V0X2JpdChfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMsCi0gICAgICAgICAgICAgICAg ICAgICZ2LT5hcmNoLnZnY19mbGFncyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNsZWFy X2JpdChfVkdDRl9mYWlsc2FmZV9kaXNhYmxlc19ldmVudHMsCi0gICAgICAgICAgICAgICAgICAg ICAgJnYtPmFyY2gudmdjX2ZsYWdzKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENBTExC QUNLVFlQRV9zeXNjYWxsOgotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbF9jYWxsYmFj a19laXAgID0gcmVnLT5hZGRyZXNzOwotICAgICAgICBpZiAoIHJlZy0+ZmxhZ3MgJiBDQUxMQkFD S0ZfbWFza19ldmVudHMgKQotICAgICAgICAgICAgc2V0X2JpdChfVkdDRl9zeXNjYWxsX2Rpc2Fi bGVzX2V2ZW50cywKLSAgICAgICAgICAgICAgICAgICAgJnYtPmFyY2gudmdjX2ZsYWdzKTsKLSAg ICAgICAgZWxzZQotICAgICAgICAgICAgY2xlYXJfYml0KF9WR0NGX3N5c2NhbGxfZGlzYWJsZXNf ZXZlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICZ2LT5hcmNoLnZnY19mbGFncyk7Ci0gICAg ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDMyOgotICAgICAgICB2 LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2NhbGxiYWNrX2VpcCA9IHJlZy0+YWRkcmVzczsKLSAg ICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2NhbGwzMl9kaXNhYmxlc19ldmVudHMgPQotICAgICAg ICAgICAgISEocmVnLT5mbGFncyAmIENBTExCQUNLRl9tYXNrX2V2ZW50cyk7Ci0gICAgICAgIGJy ZWFrOwotCi0gICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzZW50ZXI6Ci0gICAgICAgIHYtPmFyY2gu cHZfdmNwdS5zeXNlbnRlcl9jYWxsYmFja19laXAgPSByZWctPmFkZHJlc3M7Ci0gICAgICAgIHYt PmFyY2gucHZfdmNwdS5zeXNlbnRlcl9kaXNhYmxlc19ldmVudHMgPQotICAgICAgICAgICAgISEo cmVnLT5mbGFncyAmIENBTExCQUNLRl9tYXNrX2V2ZW50cyk7Ci0gICAgICAgIGJyZWFrOwotCi0g ICAgY2FzZSBDQUxMQkFDS1RZUEVfbm1pOgotICAgICAgICByZXQgPSByZWdpc3Rlcl9ndWVzdF9u bWlfY2FsbGJhY2socmVnLT5hZGRyZXNzKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0 OgotICAgICAgICByZXQgPSAtRU5PU1lTOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBy ZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgbG9uZyB1bnJlZ2lzdGVyX2d1ZXN0X2NhbGxiYWNrKHN0 cnVjdCBjYWxsYmFja191bnJlZ2lzdGVyICp1bnJlZykKLXsKLSAgICBsb25nIHJldDsKLQotICAg IHN3aXRjaCAoIHVucmVnLT50eXBlICkKLSAgICB7Ci0gICAgY2FzZSBDQUxMQkFDS1RZUEVfZXZl bnQ6Ci0gICAgY2FzZSBDQUxMQkFDS1RZUEVfZmFpbHNhZmU6Ci0gICAgY2FzZSBDQUxMQkFDS1RZ UEVfc3lzY2FsbDoKLSAgICBjYXNlIENBTExCQUNLVFlQRV9zeXNjYWxsMzI6Ci0gICAgY2FzZSBD QUxMQkFDS1RZUEVfc3lzZW50ZXI6Ci0gICAgICAgIHJldCA9IC1FSU5WQUw7Ci0gICAgICAgIGJy ZWFrOwotCi0gICAgY2FzZSBDQUxMQkFDS1RZUEVfbm1pOgotICAgICAgICByZXQgPSB1bnJlZ2lz dGVyX2d1ZXN0X25taV9jYWxsYmFjaygpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6 Ci0gICAgICAgIHJldCA9IC1FTk9TWVM7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJl dHVybiByZXQ7Ci19Ci0KLQotbG9uZyBkb19jYWxsYmFja19vcChpbnQgY21kLCBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKGNvbnN0X3ZvaWQpIGFyZykKLXsKLSAgICBsb25nIHJldDsKLQotICAgIHN3 aXRjaCAoIGNtZCApCi0gICAgewotICAgIGNhc2UgQ0FMTEJBQ0tPUF9yZWdpc3RlcjoKLSAgICB7 Ci0gICAgICAgIHN0cnVjdCBjYWxsYmFja19yZWdpc3RlciByZWc7Ci0KLSAgICAgICAgcmV0ID0g LUVGQVVMVDsKLSAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnJlZywgYXJnLCAxKSApCi0g ICAgICAgICAgICBicmVhazsKLQotICAgICAgICByZXQgPSByZWdpc3Rlcl9ndWVzdF9jYWxsYmFj aygmcmVnKTsKLSAgICB9Ci0gICAgYnJlYWs7Ci0KLSAgICBjYXNlIENBTExCQUNLT1BfdW5yZWdp c3RlcjoKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBjYWxsYmFja191bnJlZ2lzdGVyIHVucmVnOwot Ci0gICAgICAgIHJldCA9IC1FRkFVTFQ7Ci0gICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZ1 bnJlZywgYXJnLCAxKSApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICByZXQgPSB1bnJl Z2lzdGVyX2d1ZXN0X2NhbGxiYWNrKCZ1bnJlZyk7Ci0gICAgfQotICAgIGJyZWFrOwotCi0gICAg ZGVmYXVsdDoKLSAgICAgICAgcmV0ID0gLUVOT1NZUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotbG9uZyBkb19zZXRfY2FsbGJhY2tzKHVuc2lnbmVkIGxv bmcgZXZlbnRfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZh aWxzYWZlX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzeXNj YWxsX2FkZHJlc3MpCi17Ci0gICAgc3RydWN0IGNhbGxiYWNrX3JlZ2lzdGVyIGV2ZW50ID0gewot ICAgICAgICAudHlwZSA9IENBTExCQUNLVFlQRV9ldmVudCwKLSAgICAgICAgLmFkZHJlc3MgPSBl dmVudF9hZGRyZXNzLAotICAgIH07Ci0gICAgc3RydWN0IGNhbGxiYWNrX3JlZ2lzdGVyIGZhaWxz YWZlID0gewotICAgICAgICAudHlwZSA9IENBTExCQUNLVFlQRV9mYWlsc2FmZSwKLSAgICAgICAg LmFkZHJlc3MgPSBmYWlsc2FmZV9hZGRyZXNzLAotICAgIH07Ci0gICAgc3RydWN0IGNhbGxiYWNr X3JlZ2lzdGVyIHN5c2NhbGwgPSB7Ci0gICAgICAgIC50eXBlID0gQ0FMTEJBQ0tUWVBFX3N5c2Nh bGwsCi0gICAgICAgIC5hZGRyZXNzID0gc3lzY2FsbF9hZGRyZXNzLAotICAgIH07Ci0KLSAgICBy ZWdpc3Rlcl9ndWVzdF9jYWxsYmFjaygmZXZlbnQpOwotICAgIHJlZ2lzdGVyX2d1ZXN0X2NhbGxi YWNrKCZmYWlsc2FmZSk7Ci0gICAgcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soJnN5c2NhbGwpOwot Ci0gICAgcmV0dXJuIDA7Ci19Ci0KICNpbmNsdWRlICJjb21wYXQvdHJhcHMuYyIKIAogdm9pZCBo eXBlcmNhbGxfcGFnZV9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHZvaWQgKmh5cGVyY2Fs bF9wYWdlKQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==