From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH] x86/hypercall: Split out PV hypercall infrastructure Date: Wed, 15 Feb 2017 19:41:43 +0000 Message-ID: <1487187705-24445-6-git-send-email-andrew.cooper3@citrix.com> References: <1487187705-24445-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1487187705-24445-1-git-send-email-andrew.cooper3@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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org UmVwdXJwb3NlIGFyY2gveDg2L2h5cGVyY2FsbC5jIHRvIGJlIGNvbW1vbiB4ODYgaHlwZXJjYWxs IGluZnJhc3RydWN0dXJlLCBhbmQKbW92ZSB0aGUgUFYgc3BlY2lmaWMgcm91dGluZXMgdG8gYXJj aC94ODYvcHYvaHlwZXJjYWxsLmMKClRoaXMgaXMgcHVyZWx5IGNvZGUgbW90aW9uLgoKU2lnbmVk LW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkND OiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L01ha2Vm aWxlICAgICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYyAgICAgICAg ICB8IDIyNiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gv eDg2L3B2L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni97ID0+IHB2fS9o eXBlcmNhbGwuYyB8ICA1OSArLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9u cygrKSwgMjc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9w di9NYWtlZmlsZQogY29weSB4ZW4vYXJjaC94ODYveyA9PiBwdn0vaHlwZXJjYWxsLmMgKDg0JSkK CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvTWFrZWZp bGUKaW5kZXggMDA3ZGNlZC4uMTBmNTE5ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L01ha2Vm aWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAtNCw2ICs0LDcgQEAgc3ViZGlyLXkg Kz0gZ2VuYXBpYwogc3ViZGlyLXkgKz0gaHZtCiBzdWJkaXIteSArPSBtbQogc3ViZGlyLSQoQ09O RklHX1hFTk9QUk9GKSArPSBvcHJvZmlsZQorc3ViZGlyLXkgKz0gcHYKIHN1YmRpci15ICs9IHg4 Nl82NAogCiBhbHRlcm5hdGl2ZS15IDo9IGFsdGVybmF0aXZlLmluaXQubwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jCmluZGV4 IGMwNzE4ZjguLmY4MDczMzIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9oeXBlcmNhbGwuYwor KysgYi94ZW4vYXJjaC94ODYvaHlwZXJjYWxsLmMKQEAgLTEsNiArMSw4IEBACiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAgKiBhcmNoL3g4Ni9oeXBlcmNhbGwuYwogICoKKyAqIENvbW1vbiB4ODYg aHlwZXJjYWxsIGluZnJhc3RydWN0dXJlLgorICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKQEAgLTE3LDkgKzE5LDcgQEAKICAqIENvcHlyaWdodCAoYykgMjAx NSwyMDE2IENpdHJpeCBTeXN0ZW1zIEx0ZC4KICAqLwogCi0jaW5jbHVkZSA8eGVuL2NvbXBpbGVy Lmg+CiAjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgotI2luY2x1ZGUgPHhlbi90cmFjZS5oPgog CiAjZGVmaW5lIEFSR1MoeCwgbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg WyBfX0hZUEVSVklTT1JfICMjIHggXSA9IHsgbiwgbiB9CkBAIC03NCwyMjggKzc0LDYgQEAgY29u c3QgaHlwZXJjYWxsX2FyZ3NfdCBoeXBlcmNhbGxfYXJnc190YWJsZVtOUl9oeXBlcmNhbGxzXSA9 CiAjdW5kZWYgQ09NUAogI3VuZGVmIEFSR1MKIAotI2RlZmluZSBIWVBFUkNBTEwoeCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgWyBfX0hZUEVS VklTT1JfICMjIHggXSA9IHsgKGh5cGVyY2FsbF9mbl90ICopIGRvXyAjIyB4LCAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJjYWxsX2ZuX3QgKikgZG9fICMj IHggfQotI2RlZmluZSBDT01QQVRfQ0FMTCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgWyBfX0hZUEVSVklTT1JfICMjIHggXSA9IHsgKGh5cGVy Y2FsbF9mbl90ICopIGRvXyAjIyB4LCAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaHlwZXJjYWxsX2ZuX3QgKikgY29tcGF0XyAjIyB4IH0KLQotI2RlZmluZSBkb19h cmNoXzEgICAgICAgICAgICAgcGFnaW5nX2RvbWN0bF9jb250aW51YXRpb24KLQotc3RhdGljIGNv bnN0IGh5cGVyY2FsbF90YWJsZV90IHB2X2h5cGVyY2FsbF90YWJsZVtdID0gewotICAgIENPTVBB VF9DQUxMKHNldF90cmFwX3RhYmxlKSwKLSAgICBIWVBFUkNBTEwobW11X3VwZGF0ZSksCi0gICAg Q09NUEFUX0NBTEwoc2V0X2dkdCksCi0gICAgSFlQRVJDQUxMKHN0YWNrX3N3aXRjaCksCi0gICAg Q09NUEFUX0NBTEwoc2V0X2NhbGxiYWNrcyksCi0gICAgSFlQRVJDQUxMKGZwdV90YXNrc3dpdGNo KSwKLSAgICBIWVBFUkNBTEwoc2NoZWRfb3BfY29tcGF0KSwKLSAgICBDT01QQVRfQ0FMTChwbGF0 Zm9ybV9vcCksCi0gICAgSFlQRVJDQUxMKHNldF9kZWJ1Z3JlZyksCi0gICAgSFlQRVJDQUxMKGdl dF9kZWJ1Z3JlZyksCi0gICAgQ09NUEFUX0NBTEwodXBkYXRlX2Rlc2NyaXB0b3IpLAotICAgIENP TVBBVF9DQUxMKG1lbW9yeV9vcCksCi0gICAgQ09NUEFUX0NBTEwobXVsdGljYWxsKSwKLSAgICBD T01QQVRfQ0FMTCh1cGRhdGVfdmFfbWFwcGluZyksCi0gICAgQ09NUEFUX0NBTEwoc2V0X3RpbWVy X29wKSwKLSAgICBIWVBFUkNBTEwoZXZlbnRfY2hhbm5lbF9vcF9jb21wYXQpLAotICAgIENPTVBB VF9DQUxMKHhlbl92ZXJzaW9uKSwKLSAgICBIWVBFUkNBTEwoY29uc29sZV9pbyksCi0gICAgQ09N UEFUX0NBTEwocGh5c2Rldl9vcF9jb21wYXQpLAotICAgIENPTVBBVF9DQUxMKGdyYW50X3RhYmxl X29wKSwKLSAgICBDT01QQVRfQ0FMTCh2bV9hc3Npc3QpLAotICAgIENPTVBBVF9DQUxMKHVwZGF0 ZV92YV9tYXBwaW5nX290aGVyZG9tYWluKSwKLSAgICBDT01QQVRfQ0FMTChpcmV0KSwKLSAgICBD T01QQVRfQ0FMTCh2Y3B1X29wKSwKLSAgICBIWVBFUkNBTEwoc2V0X3NlZ21lbnRfYmFzZSksCi0g ICAgQ09NUEFUX0NBTEwobW11ZXh0X29wKSwKLSAgICBDT01QQVRfQ0FMTCh4c21fb3ApLAotICAg IENPTVBBVF9DQUxMKG5taV9vcCksCi0gICAgQ09NUEFUX0NBTEwoc2NoZWRfb3ApLAotICAgIENP TVBBVF9DQUxMKGNhbGxiYWNrX29wKSwKLSNpZmRlZiBDT05GSUdfWEVOT1BST0YKLSAgICBDT01Q QVRfQ0FMTCh4ZW5vcHJvZl9vcCksCi0jZW5kaWYKLSAgICBIWVBFUkNBTEwoZXZlbnRfY2hhbm5l bF9vcCksCi0gICAgQ09NUEFUX0NBTEwocGh5c2Rldl9vcCksCi0gICAgSFlQRVJDQUxMKGh2bV9v cCksCi0gICAgSFlQRVJDQUxMKHN5c2N0bCksCi0gICAgSFlQRVJDQUxMKGRvbWN0bCksCi0jaWZk ZWYgQ09ORklHX0tFWEVDCi0gICAgQ09NUEFUX0NBTEwoa2V4ZWNfb3ApLAotI2VuZGlmCi0jaWZk ZWYgQ09ORklHX1RNRU0KLSAgICBIWVBFUkNBTEwodG1lbV9vcCksCi0jZW5kaWYKLSAgICBIWVBF UkNBTEwoeGVucG11X29wKSwKLSAgICBDT01QQVRfQ0FMTChkbV9vcCksCi0gICAgSFlQRVJDQUxM KG1jYSksCi0gICAgSFlQRVJDQUxMKGFyY2hfMSksCi19OwotCi0jdW5kZWYgZG9fYXJjaF8xCi0j dW5kZWYgQ09NUEFUX0NBTEwKLSN1bmRlZiBIWVBFUkNBTEwKLQotdm9pZCBwdl9oeXBlcmNhbGwo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCi17Ci0gICAgc3RydWN0IHZjcHUgKmN1cnIgPSBj dXJyZW50OwotICAgIHVuc2lnbmVkIGxvbmcgZWF4OwotCi0gICAgQVNTRVJUKGd1ZXN0X2tlcm5l bF9tb2RlKGN1cnIsIHJlZ3MpKTsKLQotICAgIGVheCA9IGlzX3B2XzMyYml0X3ZjcHUoY3Vycikg PyByZWdzLT5fZWF4IDogcmVncy0+cmF4OwotCi0gICAgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo cHZfaHlwZXJjYWxsX3RhYmxlKSA+Ci0gICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoaHlwZXJj YWxsX2FyZ3NfdGFibGUpKTsKLQotICAgIGlmICggKGVheCA+PSBBUlJBWV9TSVpFKHB2X2h5cGVy Y2FsbF90YWJsZSkpIHx8Ci0gICAgICAgICAhcHZfaHlwZXJjYWxsX3RhYmxlW2VheF0ubmF0aXZl ICkKLSAgICB7Ci0gICAgICAgIHJlZ3MtPnJheCA9IC1FTk9TWVM7Ci0gICAgICAgIHJldHVybjsK LSAgICB9Ci0KLSAgICBjdXJyLT5oY2FsbF9wcmVlbXB0ZWQgPSBmYWxzZTsKLQotICAgIGlmICgg IWlzX3B2XzMyYml0X3ZjcHUoY3VycikgKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBy ZGkgPSByZWdzLT5yZGk7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgcnNpID0gcmVncy0+cnNpOwot ICAgICAgICB1bnNpZ25lZCBsb25nIHJkeCA9IHJlZ3MtPnJkeDsKLSAgICAgICAgdW5zaWduZWQg bG9uZyByMTAgPSByZWdzLT5yMTA7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgcjggPSByZWdzLT5y ODsKLSAgICAgICAgdW5zaWduZWQgbG9uZyByOSA9IHJlZ3MtPnI5OwotCi0jaWZuZGVmIE5ERUJV RwotICAgICAgICAvKiBEZWxpYmVyYXRlbHkgY29ycnVwdCBwYXJhbWV0ZXIgcmVncyBub3QgdXNl ZCBieSB0aGlzIGh5cGVyY2FsbC4gKi8KLSAgICAgICAgc3dpdGNoICggaHlwZXJjYWxsX2FyZ3Nf dGFibGVbZWF4XS5uYXRpdmUgKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgMDogcmRpID0gMHhk ZWFkYmVlZmRlYWRmMDBkVUw7Ci0gICAgICAgIGNhc2UgMTogcnNpID0gMHhkZWFkYmVlZmRlYWRm MDBkVUw7Ci0gICAgICAgIGNhc2UgMjogcmR4ID0gMHhkZWFkYmVlZmRlYWRmMDBkVUw7Ci0gICAg ICAgIGNhc2UgMzogcjEwID0gMHhkZWFkYmVlZmRlYWRmMDBkVUw7Ci0gICAgICAgIGNhc2UgNDog cjggPSAweGRlYWRiZWVmZGVhZGYwMGRVTDsKLSAgICAgICAgY2FzZSA1OiByOSA9IDB4ZGVhZGJl ZWZkZWFkZjAwZFVMOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgaWYgKCB1bmxpa2VseSh0 Yl9pbml0X2RvbmUpICkKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmdz WzZdID0geyByZGksIHJzaSwgcmR4LCByMTAsIHI4LCByOSB9OwotCi0gICAgICAgICAgICBfX3Ry YWNlX2h5cGVyY2FsbChUUkNfUFZfSFlQRVJDQUxMX1YyLCBlYXgsIGFyZ3MpOwotICAgICAgICB9 Ci0KLSAgICAgICAgcmVncy0+cmF4ID0gcHZfaHlwZXJjYWxsX3RhYmxlW2VheF0ubmF0aXZlKHJk aSwgcnNpLCByZHgsIHIxMCwgcjgsIHI5KTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgaWYg KCAhY3Vyci0+aGNhbGxfcHJlZW1wdGVkICkKLSAgICAgICAgewotICAgICAgICAgICAgLyogRGVs aWJlcmF0ZWx5IGNvcnJ1cHQgcGFyYW1ldGVyIHJlZ3MgdXNlZCBieSB0aGlzIGh5cGVyY2FsbC4g Ki8KLSAgICAgICAgICAgIHN3aXRjaCAoIGh5cGVyY2FsbF9hcmdzX3RhYmxlW2VheF0ubmF0aXZl ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgNjogcmVncy0+cjkgID0gMHhkZWFk YmVlZmRlYWRmMDBkVUw7Ci0gICAgICAgICAgICBjYXNlIDU6IHJlZ3MtPnI4ICA9IDB4ZGVhZGJl ZWZkZWFkZjAwZFVMOwotICAgICAgICAgICAgY2FzZSA0OiByZWdzLT5yMTAgPSAweGRlYWRiZWVm ZGVhZGYwMGRVTDsKLSAgICAgICAgICAgIGNhc2UgMzogcmVncy0+cmR4ID0gMHhkZWFkYmVlZmRl YWRmMDBkVUw7Ci0gICAgICAgICAgICBjYXNlIDI6IHJlZ3MtPnJzaSA9IDB4ZGVhZGJlZWZkZWFk ZjAwZFVMOwotICAgICAgICAgICAgY2FzZSAxOiByZWdzLT5yZGkgPSAweGRlYWRiZWVmZGVhZGYw MGRVTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0gICAgfQotICAgIGVsc2UK LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBlYnggPSByZWdzLT5fZWJ4OwotICAgICAgICB1 bnNpZ25lZCBpbnQgZWN4ID0gcmVncy0+X2VjeDsKLSAgICAgICAgdW5zaWduZWQgaW50IGVkeCA9 IHJlZ3MtPl9lZHg7Ci0gICAgICAgIHVuc2lnbmVkIGludCBlc2kgPSByZWdzLT5fZXNpOwotICAg ICAgICB1bnNpZ25lZCBpbnQgZWRpID0gcmVncy0+X2VkaTsKLSAgICAgICAgdW5zaWduZWQgaW50 IGVicCA9IHJlZ3MtPl9lYnA7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIC8qIERlbGliZXJh dGVseSBjb3JydXB0IHBhcmFtZXRlciByZWdzIG5vdCB1c2VkIGJ5IHRoaXMgaHlwZXJjYWxsLiAq LwotICAgICAgICBzd2l0Y2ggKCBoeXBlcmNhbGxfYXJnc190YWJsZVtlYXhdLmNvbXBhdCApCi0g ICAgICAgIHsKLSAgICAgICAgY2FzZSAwOiBlYnggPSAweGRlYWRmMDBkOwotICAgICAgICBjYXNl IDE6IGVjeCA9IDB4ZGVhZGYwMGQ7Ci0gICAgICAgIGNhc2UgMjogZWR4ID0gMHhkZWFkZjAwZDsK LSAgICAgICAgY2FzZSAzOiBlc2kgPSAweGRlYWRmMDBkOwotICAgICAgICBjYXNlIDQ6IGVkaSA9 IDB4ZGVhZGYwMGQ7Ci0gICAgICAgIGNhc2UgNTogZWJwID0gMHhkZWFkZjAwZDsKLSAgICAgICAg fQotI2VuZGlmCi0KLSAgICAgICAgaWYgKCB1bmxpa2VseSh0Yl9pbml0X2RvbmUpICkKLSAgICAg ICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhcmdzWzZdID0geyBlYngsIGVjeCwgZWR4 LCBlc2ksIGVkaSwgZWJwIH07Ci0KLSAgICAgICAgICAgIF9fdHJhY2VfaHlwZXJjYWxsKFRSQ19Q Vl9IWVBFUkNBTExfVjIsIGVheCwgYXJncyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjdXJyLT5o Y2FsbF9jb21wYXQgPSB0cnVlOwotICAgICAgICByZWdzLT5fZWF4ID0gcHZfaHlwZXJjYWxsX3Rh YmxlW2VheF0uY29tcGF0KGVieCwgZWN4LCBlZHgsIGVzaSwgZWRpLCBlYnApOwotICAgICAgICBj dXJyLT5oY2FsbF9jb21wYXQgPSBmYWxzZTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgaWYg KCAhY3Vyci0+aGNhbGxfcHJlZW1wdGVkICkKLSAgICAgICAgewotICAgICAgICAgICAgLyogRGVs aWJlcmF0ZWx5IGNvcnJ1cHQgcGFyYW1ldGVyIHJlZ3MgdXNlZCBieSB0aGlzIGh5cGVyY2FsbC4g Ki8KLSAgICAgICAgICAgIHN3aXRjaCAoIGh5cGVyY2FsbF9hcmdzX3RhYmxlW2VheF0uY29tcGF0 ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgNjogcmVncy0+X2VicCA9IDB4ZGVh ZGYwMGQ7Ci0gICAgICAgICAgICBjYXNlIDU6IHJlZ3MtPl9lZGkgPSAweGRlYWRmMDBkOwotICAg ICAgICAgICAgY2FzZSA0OiByZWdzLT5fZXNpID0gMHhkZWFkZjAwZDsKLSAgICAgICAgICAgIGNh c2UgMzogcmVncy0+X2VkeCA9IDB4ZGVhZGYwMGQ7Ci0gICAgICAgICAgICBjYXNlIDI6IHJlZ3Mt Pl9lY3ggPSAweGRlYWRmMDBkOwotICAgICAgICAgICAgY2FzZSAxOiByZWdzLT5fZWJ4ID0gMHhk ZWFkZjAwZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0gICAgfQotCi0gICAg LyoKLSAgICAgKiBQViBndWVzdHMgdXNlIFNZU0NBTEwgb3IgSU5UICQweDgyIHRvIG1ha2UgYSBo eXBlcmNhbGwsIGJvdGggb2Ygd2hpY2gKLSAgICAgKiBoYXZlIHRyYXAgc2VtYW50aWNzLiAgSWYg dGhlIGh5cGVyY2FsbCBoYXMgYmVlbiBwcmVlbXB0ZWQsIHJld2luZCB0aGUKLSAgICAgKiBpbnN0 cnVjdGlvbiBwb2ludGVyIHRvIHJlZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24uCi0gICAgICovCi0g ICAgaWYgKCBjdXJyLT5oY2FsbF9wcmVlbXB0ZWQgKQotICAgICAgICByZWdzLT5yaXAgLT0gMjsK LQotICAgIHBlcmZjX2luY3IoaHlwZXJjYWxscyk7Ci19Ci0KLXZvaWQgYXJjaF9kb19tdWx0aWNh bGxfY2FsbChzdHJ1Y3QgbWNfc3RhdGUgKnN0YXRlKQotewotICAgIGlmICggIWlzX3B2XzMyYml0 X3ZjcHUoY3VycmVudCkgKQotICAgIHsKLSAgICAgICAgc3RydWN0IG11bHRpY2FsbF9lbnRyeSAq Y2FsbCA9ICZzdGF0ZS0+Y2FsbDsKLQotICAgICAgICBpZiAoIChjYWxsLT5vcCA8IEFSUkFZX1NJ WkUocHZfaHlwZXJjYWxsX3RhYmxlKSkgJiYKLSAgICAgICAgICAgICBwdl9oeXBlcmNhbGxfdGFi bGVbY2FsbC0+b3BdLm5hdGl2ZSApCi0gICAgICAgICAgICBjYWxsLT5yZXN1bHQgPSBwdl9oeXBl cmNhbGxfdGFibGVbY2FsbC0+b3BdLm5hdGl2ZSgKLSAgICAgICAgICAgICAgICBjYWxsLT5hcmdz WzBdLCBjYWxsLT5hcmdzWzFdLCBjYWxsLT5hcmdzWzJdLAotICAgICAgICAgICAgICAgIGNhbGwt PmFyZ3NbM10sIGNhbGwtPmFyZ3NbNF0sIGNhbGwtPmFyZ3NbNV0pOwotICAgICAgICBlbHNlCi0g ICAgICAgICAgICBjYWxsLT5yZXN1bHQgPSAtRU5PU1lTOwotICAgIH0KLSNpZmRlZiBDT05GSUdf Q09NUEFUCi0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc3RydWN0IGNvbXBhdF9tdWx0aWNhbGxf ZW50cnkgKmNhbGwgPSAmc3RhdGUtPmNvbXBhdF9jYWxsOwotCi0gICAgICAgIGlmICggKGNhbGwt Pm9wIDwgQVJSQVlfU0laRShwdl9oeXBlcmNhbGxfdGFibGUpKSAmJgotICAgICAgICAgICAgIHB2 X2h5cGVyY2FsbF90YWJsZVtjYWxsLT5vcF0uY29tcGF0ICkKLSAgICAgICAgICAgIGNhbGwtPnJl c3VsdCA9IHB2X2h5cGVyY2FsbF90YWJsZVtjYWxsLT5vcF0uY29tcGF0KAotICAgICAgICAgICAg ICAgIGNhbGwtPmFyZ3NbMF0sIGNhbGwtPmFyZ3NbMV0sIGNhbGwtPmFyZ3NbMl0sCi0gICAgICAg ICAgICAgICAgY2FsbC0+YXJnc1szXSwgY2FsbC0+YXJnc1s0XSwgY2FsbC0+YXJnc1s1XSk7Ci0g ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGwtPnJlc3VsdCA9IC1FTk9TWVM7Ci0gICAgfQot I2VuZGlmCi19Ci0KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUyMTkzNwotLS0gL2Rldi9udWxs CisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitvYmoteSArPSBo eXBlcmNhbGwubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h5cGVyY2FsbC5jIGIveGVuL2Fy Y2gveDg2L3B2L2h5cGVyY2FsbC5jCnNpbWlsYXJpdHkgaW5kZXggODQlCmNvcHkgZnJvbSB4ZW4v YXJjaC94ODYvaHlwZXJjYWxsLmMKY29weSB0byB4ZW4vYXJjaC94ODYvcHYvaHlwZXJjYWxsLmMK aW5kZXggYzA3MThmOC4uNWY1NDYwYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h5cGVyY2Fs bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9oeXBlcmNhbGwuYwpAQCAtMSw1ICsxLDcgQEAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAqIGFyY2gveDg2L2h5cGVyY2FsbC5jCisgKiBhcmNoL3B2 L2h5cGVyY2FsbC5jCisgKgorICogUFYgaHlwZXJjYWxsIGRpc3BhdGNoaW5nIHJvdXRpbmVzCiAg KgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNCw2NiArMTYsMTMgQEAKICAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiAgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogICoKLSAqIENvcHlyaWdodCAoYykgMjAxNSwyMDE2 IENpdHJpeCBTeXN0ZW1zIEx0ZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNyBDaXRyaXggU3lzdGVt cyBMdGQuCiAgKi8KIAogI2luY2x1ZGUgPHhlbi9jb21waWxlci5oPgogI2luY2x1ZGUgPHhlbi9o eXBlcmNhbGwuaD4KICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4KIAotI2RlZmluZSBBUkdTKHgsIG4p ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFsgX19IWVBFUlZJU09SXyAjIyB4 IF0gPSB7IG4sIG4gfQotI2RlZmluZSBDT01QKHgsIG4sIGMpICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgIFsgX19IWVBFUlZJU09SXyAjIyB4IF0gPSB7IG4sIGMgfQotCi1jb25zdCBo eXBlcmNhbGxfYXJnc190IGh5cGVyY2FsbF9hcmdzX3RhYmxlW05SX2h5cGVyY2FsbHNdID0KLXsK LSAgICBBUkdTKHNldF90cmFwX3RhYmxlLCAxKSwKLSAgICBBUkdTKG1tdV91cGRhdGUsIDQpLAot ICAgIEFSR1Moc2V0X2dkdCwgMiksCi0gICAgQVJHUyhzdGFja19zd2l0Y2gsIDIpLAotICAgIENP TVAoc2V0X2NhbGxiYWNrcywgMywgNCksCi0gICAgQVJHUyhmcHVfdGFza3N3aXRjaCwgMSksCi0g ICAgQVJHUyhzY2hlZF9vcF9jb21wYXQsIDIpLAotICAgIEFSR1MocGxhdGZvcm1fb3AsIDEpLAot ICAgIEFSR1Moc2V0X2RlYnVncmVnLCAyKSwKLSAgICBBUkdTKGdldF9kZWJ1Z3JlZywgMSksCi0g ICAgQ09NUCh1cGRhdGVfZGVzY3JpcHRvciwgMiwgNCksCi0gICAgQVJHUyhtZW1vcnlfb3AsIDIp LAotICAgIEFSR1MobXVsdGljYWxsLCAyKSwKLSAgICBDT01QKHVwZGF0ZV92YV9tYXBwaW5nLCAz LCA0KSwKLSAgICBDT01QKHNldF90aW1lcl9vcCwgMSwgMiksCi0gICAgQVJHUyhldmVudF9jaGFu bmVsX29wX2NvbXBhdCwgMSksCi0gICAgQVJHUyh4ZW5fdmVyc2lvbiwgMiksCi0gICAgQVJHUyhj b25zb2xlX2lvLCAzKSwKLSAgICBBUkdTKHBoeXNkZXZfb3BfY29tcGF0LCAxKSwKLSAgICBBUkdT KGdyYW50X3RhYmxlX29wLCAzKSwKLSAgICBBUkdTKHZtX2Fzc2lzdCwgMiksCi0gICAgQ09NUCh1 cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbiwgNCwgNSksCi0gICAgQVJHUyh2Y3B1X29wLCAz KSwKLSAgICBDT01QKHNldF9zZWdtZW50X2Jhc2UsIDIsIDApLAotICAgIEFSR1MobW11ZXh0X29w LCA0KSwKLSAgICBBUkdTKHhzbV9vcCwgMSksCi0gICAgQVJHUyhubWlfb3AsIDIpLAotICAgIEFS R1Moc2NoZWRfb3AsIDIpLAotICAgIEFSR1MoY2FsbGJhY2tfb3AsIDIpLAotICAgIEFSR1MoeGVu b3Byb2Zfb3AsIDIpLAotICAgIEFSR1MoZXZlbnRfY2hhbm5lbF9vcCwgMiksCi0gICAgQVJHUyhw aHlzZGV2X29wLCAyKSwKLSAgICBBUkdTKGh2bV9vcCwgMiksCi0gICAgQVJHUyhzeXNjdGwsIDEp LAotICAgIEFSR1MoZG9tY3RsLCAxKSwKLSAgICBBUkdTKGtleGVjX29wLCAyKSwKLSAgICBBUkdT KHRtZW1fb3AsIDEpLAotICAgIEFSR1MoeGVucG11X29wLCAyKSwKLSAgICBBUkdTKGRtX29wLCAz KSwKLSAgICBBUkdTKG1jYSwgMSksCi0gICAgQVJHUyhhcmNoXzEsIDEpLAotfTsKLQotI3VuZGVm IENPTVAKLSN1bmRlZiBBUkdTCi0KICNkZWZpbmUgSFlQRVJDQUxMKHgpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFsgX19IWVBFUlZJU09SXyAj IyB4IF0gPSB7IChoeXBlcmNhbGxfZm5fdCAqKSBkb18gIyMgeCwgICAgICAgICBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGh5cGVyY2FsbF9mbl90ICopIGRvXyAjIyB4IH0KLS0g CjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==