From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v3 08/32] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Date: Fri, 3 Jul 2015 13:34:46 +0200 Message-ID: <1435923310-9019-9-git-send-email-roger.pau@citrix.com> References: <1435923310-9019-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZAzFa-0002vV-UY for xen-devel@lists.xenproject.org; Fri, 03 Jul 2015 11:35:23 +0000 In-Reply-To: <1435923310-9019-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Wei Liu , Stefano Stabellini , Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyB4Y19kb21fYXJjaCB3aWxsIGJlIHVzZWQgaW4gb3JkZXIgdG8gYnVpbGQgSFZNIGRvbWFp bnMuIFRoZSBjb2RlIGlzCmJhc2VkIG9uIHRoZSBleGlzdGluZyB4Y19odm1fcG9wdWxhdGVfbWVt b3J5IGFuZCB4Y19odm1fcG9wdWxhdGVfcGFyYW1zCmZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6 IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDYzogSWFuIEphY2tzb24g PGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZh bm8uc3RhYmVsbGluaUBldS5jaXRyaXguY29tPgpDYzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJl bGxAY2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogdG9v bHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCB8ICAgNiArCiB0b29scy9saWJ4Yy94Y19kb21feDg2 LmMgICAgIHwgNTQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K IDIgZmlsZXMgY2hhbmdlZCwgNTM2IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggYi90b29scy9saWJ4Yy9pbmNs dWRlL3hjX2RvbS5oCmluZGV4IDQyNTMzYTUuLjY4YjA1MmMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhjL2luY2x1ZGUveGNfZG9tLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaApA QCAtMTg5LDYgKzE4OSwxMiBAQCBzdHJ1Y3QgeGNfZG9tX2ltYWdlIHsKICAgICB9IGNvbnRhaW5l cl90eXBlOwogCiAgICAgLyogSFZNIHNwZWNpZmljIGZpZWxkcy4gKi8KKyAgICB4ZW5fcGZuX3Qg dGFyZ2V0X3BhZ2VzOworICAgIHhlbl9wZm5fdCBtbWlvX3N0YXJ0OworICAgIHhlbl9wZm5fdCBt bWlvX3NpemU7CisgICAgeGVuX3Bmbl90IGxvd21lbV9lbmQ7CisgICAgeGVuX3Bmbl90IGhpZ2ht ZW1fZW5kOworCiAgICAgLyogRXh0cmEgQUNQSSB0YWJsZXMgcGFzc2VkIHRvIEhWTUxPQURFUiAq LwogICAgIHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxlIGFjcGlfbW9kdWxlOwogCmRpZmYg LS1naXQgYS90b29scy9saWJ4Yy94Y19kb21feDg2LmMgYi90b29scy9saWJ4Yy94Y19kb21feDg2 LmMKaW5kZXggOTkzOTU0ZS4uNjU3M2I5NCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9t X3g4Ni5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYuYwpAQCAtNDAsMTAgKzQwLDI5IEBA CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0jZGVmaW5lIFNVUEVSUEFHRV9QRk5fU0hJRlQg IDkKLSNkZWZpbmUgU1VQRVJQQUdFX05SX1BGTlMgICAgKDFVTCA8PCBTVVBFUlBBR0VfUEZOX1NI SUZUKQogI2RlZmluZSBTVVBFUlBBR0VfQkFUQ0hfU0laRSA1MTIKIAorI2RlZmluZSBTVVBFUlBB R0VfMk1CX1NISUZUICAgOQorI2RlZmluZSBTVVBFUlBBR0VfMk1CX05SX1BGTlMgKDFVTCA8PCBT VVBFUlBBR0VfMk1CX1NISUZUKQorI2RlZmluZSBTVVBFUlBBR0VfMUdCX1NISUZUICAgMTgKKyNk ZWZpbmUgU1VQRVJQQUdFXzFHQl9OUl9QRk5TICgxVUwgPDwgU1VQRVJQQUdFXzFHQl9TSElGVCkK KworI2RlZmluZSBWR0FfSE9MRV9TSVpFICgweDIwKQorCisjZGVmaW5lIFNQRUNJQUxQQUdFX1BB R0lORyAgIDAKKyNkZWZpbmUgU1BFQ0lBTFBBR0VfQUNDRVNTICAgMQorI2RlZmluZSBTUEVDSUFM UEFHRV9TSEFSSU5HICAyCisjZGVmaW5lIFNQRUNJQUxQQUdFX0JVRklPUkVRIDMKKyNkZWZpbmUg U1BFQ0lBTFBBR0VfWEVOU1RPUkUgNAorI2RlZmluZSBTUEVDSUFMUEFHRV9JT1JFUSAgICA1Cisj ZGVmaW5lIFNQRUNJQUxQQUdFX0lERU5UX1BUIDYKKyNkZWZpbmUgU1BFQ0lBTFBBR0VfQ09OU09M RSAgNworI2RlZmluZSBOUl9TUEVDSUFMX1BBR0VTICAgICA4CisjZGVmaW5lIHNwZWNpYWxfcGZu KHgpICgweGZmMDAwdSAtIE5SX1NQRUNJQUxfUEFHRVMgKyAoeCkpCisKKyNkZWZpbmUgTlJfSU9S RVFfU0VSVkVSX1BBR0VTIDgKKyNkZWZpbmUgaW9yZXFfc2VydmVyX3Bmbih4KSAoc3BlY2lhbF9w Zm4oMCkgLSBOUl9JT1JFUV9TRVJWRVJfUEFHRVMgKyAoeCkpCisKICNkZWZpbmUgYml0c190b19t YXNrKGJpdHMpICAgICAgICgoKHhlbl92YWRkcl90KTEgPDwgKGJpdHMpKS0xKQogI2RlZmluZSBy b3VuZF9kb3duKGFkZHIsIG1hc2spICAgKChhZGRyKSAmIH4obWFzaykpCiAjZGVmaW5lIHJvdW5k X3VwKGFkZHIsIG1hc2spICAgICAoKGFkZHIpIHwgKG1hc2spKQpAQCAtNDYyLDYgKzQ4MSwxMzUg QEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlcyhzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGJ1aWxkX2h2bV9pbmZvKHZvaWQgKmh2 bV9pbmZvX3BhZ2UsIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKK3sKKyAgICBzdHJ1Y3QgaHZt X2luZm9fdGFibGUgKmh2bV9pbmZvID0gKHN0cnVjdCBodm1faW5mb190YWJsZSAqKQorICAgICAg ICAoKCh1bnNpZ25lZCBjaGFyICopaHZtX2luZm9fcGFnZSkgKyBIVk1fSU5GT19PRkZTRVQpOwor ICAgIHVpbnQ4X3Qgc3VtOworICAgIGludCBpOworCisgICAgbWVtc2V0KGh2bV9pbmZvX3BhZ2Us IDAsIFBBR0VfU0laRSk7CisKKyAgICAvKiBGaWxsIGluIHRoZSBoZWFkZXIuICovCisgICAgc3Ry bmNweShodm1faW5mby0+c2lnbmF0dXJlLCAiSFZNIElORk8iLCA4KTsKKyAgICBodm1faW5mby0+ bGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBodm1faW5mb190YWJsZSk7CisKKyAgICAvKiBTZW5zaWJs ZSBkZWZhdWx0czogdGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNhbGxlci4gKi8KKyAg ICBodm1faW5mby0+YXBpY19tb2RlID0gMTsKKyAgICBodm1faW5mby0+bnJfdmNwdXMgPSAxOwor ICAgIG1lbXNldChodm1faW5mby0+dmNwdV9vbmxpbmUsIDB4ZmYsIHNpemVvZihodm1faW5mby0+ dmNwdV9vbmxpbmUpKTsKKworICAgIC8qIE1lbW9yeSBwYXJhbWV0ZXJzLiAqLworICAgIGh2bV9p bmZvLT5sb3dfbWVtX3BnZW5kID0gZG9tLT5sb3dtZW1fZW5kID4+IFBBR0VfU0hJRlQ7CisgICAg aHZtX2luZm8tPmhpZ2hfbWVtX3BnZW5kID0gZG9tLT5oaWdobWVtX2VuZCA+PiBQQUdFX1NISUZU OworICAgIGh2bV9pbmZvLT5yZXNlcnZlZF9tZW1fcGdzdGFydCA9IGlvcmVxX3NlcnZlcl9wZm4o MCk7CisKKyAgICAvKiBGaW5pc2ggd2l0aCB0aGUgY2hlY2tzdW0uICovCisgICAgZm9yICggaSA9 IDAsIHN1bSA9IDA7IGkgPCBodm1faW5mby0+bGVuZ3RoOyBpKysgKQorICAgICAgICBzdW0gKz0g KCh1aW50OF90ICopaHZtX2luZm8pW2ldOworICAgIGh2bV9pbmZvLT5jaGVja3N1bSA9IC1zdW07 Cit9CisKK3N0YXRpYyBpbnQgYWxsb2NfbWFnaWNfcGFnZXNfaHZtKHN0cnVjdCB4Y19kb21faW1h Z2UgKmRvbSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGk7CisgICAgdm9pZCAqaHZtX2luZm9fcGFn ZTsKKyAgICB1aW50MzJfdCAqaWRlbnRfcHQsIGRvbWlkID0gZG9tLT5ndWVzdF9kb21pZDsKKyAg ICBpbnQgcmM7CisgICAgeGVuX3Bmbl90IHNwZWNpYWxfYXJyYXlbTlJfU1BFQ0lBTF9QQUdFU107 CisgICAgeGVuX3Bmbl90IGlvcmVxX3NlcnZlcl9hcnJheVtOUl9JT1JFUV9TRVJWRVJfUEFHRVNd OworICAgIHhjX2ludGVyZmFjZSAqeGNoID0gZG9tLT54Y2g7CisKKyAgICBpZiAoIChodm1faW5m b19wYWdlID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoCisgICAgICAgICAgICAgIHhjaCwgZG9taWQs IFBBR0VfU0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKKyAgICAgICAgICAgICAgSFZNX0lO Rk9fUEZOKSkgPT0gTlVMTCApCisgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgIGJ1aWxkX2h2 bV9pbmZvKGh2bV9pbmZvX3BhZ2UsIGRvbSk7CisgICAgbXVubWFwKGh2bV9pbmZvX3BhZ2UsIFBB R0VfU0laRSk7CisKKyAgICAvKiBBbGxvY2F0ZSBhbmQgY2xlYXIgc3BlY2lhbCBwYWdlcy4gKi8K KyAgICBmb3IgKCBpID0gMDsgaSA8IE5SX1NQRUNJQUxfUEFHRVM7IGkrKyApCisgICAgICAgIHNw ZWNpYWxfYXJyYXlbaV0gPSBzcGVjaWFsX3BmbihpKTsKKworICAgIHJjID0geGNfZG9tYWluX3Bv cHVsYXRlX3BoeXNtYXBfZXhhY3QoeGNoLCBkb21pZCwgTlJfU1BFQ0lBTF9QQUdFUywgMCwgMCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfYXJyYXkp OworICAgIGlmICggcmMgIT0gMCApCisgICAgeworICAgICAgICBET01QUklOVEYoIkNvdWxkIG5v dCBhbGxvY2F0ZSBzcGVjaWFsIHBhZ2VzLiIpOworICAgICAgICBnb3RvIGVycm9yX291dDsKKyAg ICB9CisKKyAgICBpZiAoIHhjX2NsZWFyX2RvbWFpbl9wYWdlcyh4Y2gsIGRvbWlkLCBzcGVjaWFs X3BmbigwKSwgTlJfU1BFQ0lBTF9QQUdFUykgKQorICAgICAgICAgICAgZ290byBlcnJvcl9vdXQ7 CisKKyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9TVE9SRV9QRk4s CisgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9YRU5TVE9SRSkp OworICAgIHhjX2h2bV9wYXJhbV9zZXQoeGNoLCBkb21pZCwgSFZNX1BBUkFNX0JVRklPUkVRX1BG TiwKKyAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0JVRklPUkVR KSk7CisgICAgeGNfaHZtX3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fSU9SRVFfUEZO LAorICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfSU9SRVEpKTsK KyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9DT05TT0xFX1BGTiwK KyAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0NPTlNPTEUpKTsK KyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9QQUdJTkdfUklOR19Q Rk4sCisgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9QQUdJTkcp KTsKKyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9NT05JVE9SX1JJ TkdfUEZOLAorICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfQUND RVNTKSk7CisgICAgeGNfaHZtX3BhcmFtX3NldCh4Y2gsIGRvbWlkLCBIVk1fUEFSQU1fU0hBUklO R19SSU5HX1BGTiwKKyAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdF X1NIQVJJTkcpKTsKKworICAgIC8qCisgICAgICogQWxsb2NhdGUgYW5kIGNsZWFyIGFkZGl0aW9u YWwgaW9yZXEgc2VydmVyIHBhZ2VzLiBUaGUgZGVmYXVsdAorICAgICAqIHNlcnZlciB3aWxsIHVz ZSB0aGUgSU9SRVEgYW5kIEJVRklPUkVRIHNwZWNpYWwgcGFnZXMgYWJvdmUuCisgICAgICovCisg ICAgZm9yICggaSA9IDA7IGkgPCBOUl9JT1JFUV9TRVJWRVJfUEFHRVM7IGkrKyApCisgICAgICAg IGlvcmVxX3NlcnZlcl9hcnJheVtpXSA9IGlvcmVxX3NlcnZlcl9wZm4oaSk7CisKKyAgICByYyA9 IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwX2V4YWN0KHhjaCwgZG9taWQsIE5SX0lPUkVRX1NF UlZFUl9QQUdFUywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDAsIGlvcmVxX3NlcnZlcl9hcnJheSk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICB7CisgICAg ICAgIERPTVBSSU5URigiQ291bGQgbm90IGFsbG9jYXRlIGlvcmVxIHNlcnZlciBwYWdlcy4iKTsK KyAgICAgICAgZ290byBlcnJvcl9vdXQ7CisgICAgfQorCisgICAgaWYgKCB4Y19jbGVhcl9kb21h aW5fcGFnZXMoeGNoLCBkb21pZCwgaW9yZXFfc2VydmVyX3BmbigwKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOUl9JT1JFUV9TRVJWRVJfUEFHRVMpICkKKyAgICAgICAgICAgIGdv dG8gZXJyb3Jfb3V0OworCisgICAgLyogVGVsbCB0aGUgZG9tYWluIHdoZXJlIHRoZSBwYWdlcyBh cmUgYW5kIGhvdyBtYW55IHRoZXJlIGFyZSAqLworICAgIHhjX2h2bV9wYXJhbV9zZXQoeGNoLCBk b21pZCwgSFZNX1BBUkFNX0lPUkVRX1NFUlZFUl9QRk4sCisgICAgICAgICAgICAgICAgICAgICBp b3JlcV9zZXJ2ZXJfcGZuKDApKTsKKyAgICB4Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhW TV9QQVJBTV9OUl9JT1JFUV9TRVJWRVJfUEFHRVMsCisgICAgICAgICAgICAgICAgICAgICBOUl9J T1JFUV9TRVJWRVJfUEFHRVMpOworCisgICAgLyoKKyAgICAgKiBJZGVudGl0eS1tYXAgcGFnZSB0 YWJsZSBpcyByZXF1aXJlZCBmb3IgcnVubmluZyB3aXRoIENSMC5QRz0wIHdoZW4KKyAgICAgKiB1 c2luZyBJbnRlbCBFUFQuIENyZWF0ZSBhIDMyLWJpdCBub24tUEFFIHBhZ2UgZGlyZWN0b3J5IG9m IHN1cGVycGFnZXMuCisgICAgICovCisgICAgaWYgKCAoaWRlbnRfcHQgPSB4Y19tYXBfZm9yZWln bl9yYW5nZSgKKyAgICAgICAgICAgICAgeGNoLCBkb21pZCwgUEFHRV9TSVpFLCBQUk9UX1JFQUQg fCBQUk9UX1dSSVRFLAorICAgICAgICAgICAgICBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9JREVO VF9QVCkpKSA9PSBOVUxMICkKKyAgICAgICAgZ290byBlcnJvcl9vdXQ7CisgICAgZm9yICggaSA9 IDA7IGkgPCBQQUdFX1NJWkUgLyBzaXplb2YoKmlkZW50X3B0KTsgaSsrICkKKyAgICAgICAgaWRl bnRfcHRbaV0gPSAoKGkgPDwgMjIpIHwgX1BBR0VfUFJFU0VOVCB8IF9QQUdFX1JXIHwgX1BBR0Vf VVNFUiB8CisgICAgICAgICAgICAgICAgICAgICAgIF9QQUdFX0FDQ0VTU0VEIHwgX1BBR0VfRElS VFkgfCBfUEFHRV9QU0UpOworICAgIG11bm1hcChpZGVudF9wdCwgUEFHRV9TSVpFKTsKKyAgICB4 Y19odm1fcGFyYW1fc2V0KHhjaCwgZG9taWQsIEhWTV9QQVJBTV9JREVOVF9QVCwKKyAgICAgICAg ICAgICAgICAgICAgIHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdFX0lERU5UX1BUKSA8PCBQQUdFX1NI SUZUKTsKKworICAgIGRvbS0+Y29uc29sZV9wZm4gPSBzcGVjaWFsX3BmbihTUEVDSUFMUEFHRV9D T05TT0xFKTsKKyAgICBkb20tPnhlbnN0b3JlX3BmbiA9IHNwZWNpYWxfcGZuKFNQRUNJQUxQQUdF X1hFTlNUT1JFKTsKKyAgICBkb20tPnBhcm1zLnZpcnRfaHlwZXJjYWxsID0gLTE7CisKKyAgICBy YyA9IDA7CisgICAgZ290byBvdXQ7CisgZXJyb3Jfb3V0OgorICAgIHJjID0gLTE7Cisgb3V0Ogor CisgICAgcmV0dXJuIHJjOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIGlu dCBzdGFydF9pbmZvX3g4Nl8zMihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCkBAIC02NjksNiAr ODE3LDI4IEBAIHN0YXRpYyBpbnQgdmNwdV94ODZfNjQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9t LCB2b2lkICpwdHIpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdmNwdV9odm0oc3Ry dWN0IHhjX2RvbV9pbWFnZSAqZG9tLCB2b2lkICpwdHIpCit7CisgICAgdmNwdV9ndWVzdF9jb250 ZXh0X3g4Nl82NF90ICpjdHh0ID0gcHRyOworCisgICAgRE9NUFJJTlRGX0NBTExFRChkb20tPnhj aCk7CisKKyAgICAvKiBjbGVhciBldmVyeXRoaW5nICovCisgICAgbWVtc2V0KGN0eHQsIDAsIHNp emVvZigqY3R4dCkpOworCisgICAgY3R4dC0+dXNlcl9yZWdzLmRzID0gRkxBVF9LRVJORUxfRFNf WDg2XzMyOworICAgIGN0eHQtPnVzZXJfcmVncy5lcyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl8zMjsK KyAgICBjdHh0LT51c2VyX3JlZ3MuZnMgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7CisgICAgY3R4 dC0+dXNlcl9yZWdzLmdzID0gRkxBVF9LRVJORUxfRFNfWDg2XzMyOworICAgIGN0eHQtPnVzZXJf cmVncy5zcyA9IEZMQVRfS0VSTkVMX1NTX1g4Nl8zMjsKKyAgICBjdHh0LT51c2VyX3JlZ3MuY3Mg PSBGTEFUX0tFUk5FTF9DU19YODZfMzI7CisgICAgY3R4dC0+dXNlcl9yZWdzLnJpcCA9IGRvbS0+ cGFybXMucGh5c19lbnRyeTsKKworICAgIGN0eHQtPmZsYWdzID0gVkdDRl9pbl9rZXJuZWxfWDg2 XzMyIHwgVkdDRl9vbmxpbmVfWDg2XzMyOworCisgICAgcmV0dXJuIDA7Cit9CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwogCiBzdGF0aWMgaW50IHg4Nl9jb21wYXQoeGNfaW50ZXJmYWNlICp4Y2gs IGRvbWlkX3QgZG9taWQsIGNoYXIgKmd1ZXN0X3R5cGUpCkBAIC03NDksNyArOTE5LDcgQEAgc3Rh dGljIGludCBtZW1pbml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIAogICAgIGlmICgg ZG9tLT5zdXBlcnBhZ2VzICkKICAgICB7Ci0gICAgICAgIGludCBjb3VudCA9IGRvbS0+dG90YWxf cGFnZXMgPj4gU1VQRVJQQUdFX1BGTl9TSElGVDsKKyAgICAgICAgaW50IGNvdW50ID0gZG9tLT50 b3RhbF9wYWdlcyA+PiBTVVBFUlBBR0VfMk1CX1NISUZUOwogICAgICAgICB4ZW5fcGZuX3QgZXh0 ZW50c1tjb3VudF07CiAKICAgICAgICAgZG9tLT5wMm1fc2l6ZSA9IGRvbS0+dG90YWxfcGFnZXM7 CkBAIC03NjAsOSArOTMwLDkgQEAgc3RhdGljIGludCBtZW1pbml0X3B2KHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSkKIAogICAgICAgICBET01QUklOVEYoIlBvcHVsYXRpbmcgbWVtb3J5IHdpdGgg JWQgc3VwZXJwYWdlcyIsIGNvdW50KTsKICAgICAgICAgZm9yICggcGZuID0gMDsgcGZuIDwgY291 bnQ7IHBmbisrICkKLSAgICAgICAgICAgIGV4dGVudHNbcGZuXSA9IHBmbiA8PCBTVVBFUlBBR0Vf UEZOX1NISUZUOworICAgICAgICAgICAgZXh0ZW50c1twZm5dID0gcGZuIDw8IFNVUEVSUEFHRV8y TUJfU0hJRlQ7CiAgICAgICAgIHJjID0geGNfZG9tYWluX3BvcHVsYXRlX3BoeXNtYXBfZXhhY3Qo ZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvdW50LCBTVVBFUlBBR0VfUEZOX1NISUZULCAwLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgU1VQRVJQQUdF XzJNQl9TSElGVCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXh0ZW50cyk7CiAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgcmV0dXJuIHJj OwpAQCAtNzcyLDcgKzk0Miw3IEBAIHN0YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20pCiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgY291bnQ7IGkrKyApCiAgICAg ICAgIHsKICAgICAgICAgICAgIG1mbiA9IGV4dGVudHNbaV07Ci0gICAgICAgICAgICBmb3IgKCBq ID0gMDsgaiA8IFNVUEVSUEFHRV9OUl9QRk5TOyBqKyssIHBmbisrICkKKyAgICAgICAgICAgIGZv ciAoIGogPSAwOyBqIDwgU1VQRVJQQUdFXzJNQl9OUl9QRk5TOyBqKyssIHBmbisrICkKICAgICAg ICAgICAgICAgICBkb20tPnAybV9ob3N0W3Bmbl0gPSBtZm4gKyBqOwogICAgICAgICB9CiAgICAg fQpAQCAtODQ4LDcgKzEwMTgsNyBAQCBzdGF0aWMgaW50IG1lbWluaXRfcHYoc3RydWN0IHhjX2Rv bV9pbWFnZSAqZG9tKQogICAgICAgICAgICAgdW5zaWduZWQgaW50IG1lbWZsYWdzOwogICAgICAg ICAgICAgdWludDY0X3QgcGFnZXM7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcG5vZGUgPSB2 bm9kZV90b19wbm9kZVt2bWVtcmFuZ2VzW2ldLm5pZF07Ci0gICAgICAgICAgICBpbnQgbnJfc3Bh Z2VzID0gZG9tLT50b3RhbF9wYWdlcyA+PiBTVVBFUlBBR0VfUEZOX1NISUZUOworICAgICAgICAg ICAgaW50IG5yX3NwYWdlcyA9IGRvbS0+dG90YWxfcGFnZXMgPj4gU1VQRVJQQUdFXzJNQl9TSElG VDsKICAgICAgICAgICAgIHhlbl9wZm5fdCBleHRlbnRzW1NVUEVSUEFHRV9CQVRDSF9TSVpFXTsK ICAgICAgICAgICAgIHhlbl9wZm5fdCBwZm5fYmFzZV9pZHg7CiAKQEAgLTg2OSwxMSArMTAzOSwx MSBAQCBzdGF0aWMgaW50IG1lbWluaXRfcHYoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogICAg ICAgICAgICAgICAgIG5yX3NwYWdlcyAtPSBjb3VudDsKIAogICAgICAgICAgICAgICAgIGZvciAo IHBmbiA9IHBmbl9iYXNlX2lkeCwgaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgcGZuIDwg cGZuX2Jhc2VfaWR4ICsgKGNvdW50IDw8IFNVUEVSUEFHRV9QRk5fU0hJRlQpOwotICAgICAgICAg ICAgICAgICAgICAgIHBmbiArPSBTVVBFUlBBR0VfTlJfUEZOUywgaisrICkKKyAgICAgICAgICAg ICAgICAgICAgICBwZm4gPCBwZm5fYmFzZV9pZHggKyAoY291bnQgPDwgU1VQRVJQQUdFXzJNQl9T SElGVCk7CisgICAgICAgICAgICAgICAgICAgICAgcGZuICs9IFNVUEVSUEFHRV8yTUJfTlJfUEZO UywgaisrICkKICAgICAgICAgICAgICAgICAgICAgZXh0ZW50c1tqXSA9IGRvbS0+cDJtX2hvc3Rb cGZuXTsKICAgICAgICAgICAgICAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwKGRv bS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNVUEVSUEFHRV9QRk5fU0hJRlQsIG1lbWZsYWdzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VQRVJQQUdF XzJNQl9TSElGVCwgbWVtZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleHRlbnRzKTsKICAgICAgICAgICAgICAgICBpZiAoIHJjIDwgMCApCiAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKQEAgLTg4Myw3ICsxMDUzLDcgQEAgc3RhdGlj IGludCBtZW1pbml0X3B2KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKICAgICAgICAgICAgICAg ICBmb3IgKCBqID0gMDsgaiA8IHJjOyBqKysgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgbWZuID0gZXh0ZW50c1tqXTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICgg ayA9IDA7IGsgPCBTVVBFUlBBR0VfTlJfUEZOUzsgaysrLCBwZm4rKyApCisgICAgICAgICAgICAg ICAgICAgIGZvciAoIGsgPSAwOyBrIDwgU1VQRVJQQUdFXzJNQl9OUl9QRk5TOyBrKyssIHBmbisr ICkKICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+cDJtX2hvc3RbcGZuXSA9IG1mbiArIGs7 CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBmbl9iYXNlX2lkeCA9IHBmbjsK QEAgLTkyNCw2ICsxMDk0LDMzMiBAQCBzdGF0aWMgaW50IG1lbWluaXRfcHYoc3RydWN0IHhjX2Rv bV9pbWFnZSAqZG9tKQogICAgIHJldHVybiByYzsKIH0KIAorLyoKKyAqIENoZWNrIHdoZXRoZXIg dGhlcmUgZXhpc3RzIG1taW8gaG9sZSBpbiB0aGUgc3BlY2lmaWVkIG1lbW9yeSByYW5nZS4KKyAq IFJldHVybnMgMSBpZiBleGlzdHMsIGVsc2UgcmV0dXJucyAwLgorICovCitzdGF0aWMgaW50IGNo ZWNrX21taW9faG9sZSh1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbWVtc2l6ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1taW9fc3RhcnQsIHVpbnQ2NF90IG1taW9fc2l6 ZSkKK3sKKyAgICBpZiAoIHN0YXJ0ICsgbWVtc2l6ZSA8PSBtbWlvX3N0YXJ0IHx8IHN0YXJ0ID49 IG1taW9fc3RhcnQgKyBtbWlvX3NpemUgKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisg ICAgICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IG1lbWluaXRfaHZtKHN0cnVjdCB4Y19k b21faW1hZ2UgKmRvbSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGksIHZtZW1pZCwgbnJfcGFnZXMg PSBkb20tPnRvdGFsX3BhZ2VzOworICAgIHVuc2lnbmVkIGxvbmcgcDJtX3NpemU7CisgICAgdW5z aWduZWQgbG9uZyB0YXJnZXRfcGFnZXMgPSBkb20tPnRhcmdldF9wYWdlczsKKyAgICB1bnNpZ25l ZCBsb25nIGN1cl9wYWdlcywgY3VyX3BmbjsKKyAgICBpbnQgcmM7CisgICAgeGVuX2NhcGFiaWxp dGllc19pbmZvX3QgY2FwczsKKyAgICB1bnNpZ25lZCBsb25nIHN0YXRfbm9ybWFsX3BhZ2VzID0g MCwgc3RhdF8ybWJfcGFnZXMgPSAwLCAKKyAgICAgICAgc3RhdF8xZ2JfcGFnZXMgPSAwOworICAg IHVuc2lnbmVkIGludCBtZW1mbGFncyA9IDA7CisgICAgaW50IGNsYWltX2VuYWJsZWQgPSBkb20t PmNsYWltX2VuYWJsZWQ7CisgICAgdWludDY0X3QgdG90YWxfcGFnZXM7CisgICAgeGVuX3ZtZW1y YW5nZV90IGR1bW15X3ZtZW1yYW5nZVsyXTsKKyAgICB1bnNpZ25lZCBpbnQgZHVtbXlfdm5vZGVf dG9fcG5vZGVbMV07CisgICAgeGVuX3ZtZW1yYW5nZV90ICp2bWVtcmFuZ2VzOworICAgIHVuc2ln bmVkIGludCAqdm5vZGVfdG9fcG5vZGU7CisgICAgdW5zaWduZWQgaW50IG5yX3ZtZW1yYW5nZXMs IG5yX3Zub2RlczsKKyAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGRvbS0+eGNoOworICAgIHVpbnQz Ml90IGRvbWlkID0gZG9tLT5ndWVzdF9kb21pZDsKKworICAgIGlmICggbnJfcGFnZXMgPiB0YXJn ZXRfcGFnZXMgKQorICAgICAgICBtZW1mbGFncyB8PSBYRU5NRU1GX3BvcHVsYXRlX29uX2RlbWFu ZDsKKworICAgIGlmICggZG9tLT5ucl92bWVtcmFuZ2VzID09IDAgKQorICAgIHsKKyAgICAgICAg LyogQnVpbGQgZHVtbXkgdm5vZGUgaW5mb3JtYXRpb24KKyAgICAgICAgICoKKyAgICAgICAgICog R3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBsYXlvdXQ6CisgICAgICAgICAqIFswLCBob2xl X3N0YXJ0KSBbaG9sZV9zdGFydCwgNEcpIFs0RywgaGlnaG1lbV9lbmQpCisgICAgICAgICAqCisg ICAgICAgICAqIE9mIGNvdXJzZSBpZiB0aGVyZSBpcyBubyBoaWdoIG1lbW9yeSwgdGhlIHNlY29u ZCB2bWVtcmFuZ2UKKyAgICAgICAgICogaGFzIG5vIGVmZmVjdCBvbiB0aGUgYWN0dWFsIHJlc3Vs dC4KKyAgICAgICAgICovCisKKyAgICAgICAgZHVtbXlfdm1lbXJhbmdlWzBdLnN0YXJ0ID0gMDsK KyAgICAgICAgZHVtbXlfdm1lbXJhbmdlWzBdLmVuZCAgID0gZG9tLT5sb3dtZW1fZW5kOworICAg ICAgICBkdW1teV92bWVtcmFuZ2VbMF0uZmxhZ3MgPSAwOworICAgICAgICBkdW1teV92bWVtcmFu Z2VbMF0ubmlkICAgPSAwOworICAgICAgICBucl92bWVtcmFuZ2VzID0gMTsKKworICAgICAgICBp ZiAoIGRvbS0+aGlnaG1lbV9lbmQgPiAoMVVMTCA8PCAzMikgKQorICAgICAgICB7CisgICAgICAg ICAgICBkdW1teV92bWVtcmFuZ2VbMV0uc3RhcnQgPSAxVUxMIDw8IDMyOworICAgICAgICAgICAg ZHVtbXlfdm1lbXJhbmdlWzFdLmVuZCAgID0gZG9tLT5oaWdobWVtX2VuZDsKKyAgICAgICAgICAg IGR1bW15X3ZtZW1yYW5nZVsxXS5mbGFncyA9IDA7CisgICAgICAgICAgICBkdW1teV92bWVtcmFu Z2VbMV0ubmlkICAgPSAwOworCisgICAgICAgICAgICBucl92bWVtcmFuZ2VzKys7CisgICAgICAg IH0KKworICAgICAgICBkdW1teV92bm9kZV90b19wbm9kZVswXSA9IFhDX05VTUFfTk9fTk9ERTsK KyAgICAgICAgbnJfdm5vZGVzID0gMTsKKyAgICAgICAgdm1lbXJhbmdlcyA9IGR1bW15X3ZtZW1y YW5nZTsKKyAgICAgICAgdm5vZGVfdG9fcG5vZGUgPSBkdW1teV92bm9kZV90b19wbm9kZTsKKyAg ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCBucl9wYWdlcyA+IHRhcmdldF9wYWdl cyApCisgICAgICAgIHsKKyAgICAgICAgICAgIERPTVBSSU5URigiQ2Fubm90IGVuYWJsZSB2TlVN QSBhbmQgUG9EIGF0IHRoZSBzYW1lIHRpbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0 OworICAgICAgICB9CisKKyAgICAgICAgbnJfdm1lbXJhbmdlcyA9IGRvbS0+bnJfdm1lbXJhbmdl czsKKyAgICAgICAgbnJfdm5vZGVzID0gZG9tLT5ucl92bm9kZXM7CisgICAgICAgIHZtZW1yYW5n ZXMgPSBkb20tPnZtZW1yYW5nZXM7CisgICAgICAgIHZub2RlX3RvX3Bub2RlID0gZG9tLT52bm9k ZV90b19wbm9kZTsKKyAgICB9CisKKyAgICB0b3RhbF9wYWdlcyA9IDA7CisgICAgcDJtX3NpemUg PSAwOworICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfdm1lbXJhbmdlczsgaSsrICkKKyAgICB7Cisg ICAgICAgIHRvdGFsX3BhZ2VzICs9ICgodm1lbXJhbmdlc1tpXS5lbmQgLSB2bWVtcmFuZ2VzW2ld LnN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgPj4gUEFHRV9TSElGVCk7CisgICAgICAg IHAybV9zaXplID0gcDJtX3NpemUgPiAodm1lbXJhbmdlc1tpXS5lbmQgPj4gUEFHRV9TSElGVCkg PworICAgICAgICAgICAgcDJtX3NpemUgOiAodm1lbXJhbmdlc1tpXS5lbmQgPj4gUEFHRV9TSElG VCk7CisgICAgfQorCisgICAgaWYgKCB0b3RhbF9wYWdlcyAhPSBucl9wYWdlcyApCisgICAgewor ICAgICAgICBET01QUklOVEYoInZOVU1BIG1lbW9yeSBwYWdlcyBtaXNtYXRjaCAoMHglIlBSSXg2 NCIgIT0gMHglIlBSSXg2NCIpIiwKKyAgICAgICAgICAgICAgIHRvdGFsX3BhZ2VzLCBucl9wYWdl cyk7CisgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAgIH0KKworICAgIGlmICggeGNfdmVyc2lv bih4Y2gsIFhFTlZFUl9jYXBhYmlsaXRpZXMsICZjYXBzKSAhPSAwICkKKyAgICB7CisgICAgICAg IERPTVBSSU5URigiQ291bGQgbm90IGdldCBYZW4gY2FwYWJpbGl0aWVzIik7CisgICAgICAgIGdv dG8gZXJyb3Jfb3V0OworICAgIH0KKworICAgIGRvbS0+cDJtX3NpemUgPSBwMm1fc2l6ZTsKKyAg ICBkb20tPnAybV9ob3N0ID0geGNfZG9tX21hbGxvYyhkb20sIHNpemVvZih4ZW5fcGZuX3QpICoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5wMm1fc2l6ZSk7Cisg ICAgaWYgKCBkb20tPnAybV9ob3N0ID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgRE9NUFJJTlRG KCJDb3VsZCBub3QgYWxsb2NhdGUgcDJtIik7CisgICAgICAgIGdvdG8gZXJyb3Jfb3V0OworICAg IH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgcDJtX3NpemU7IGkrKyApCisgICAgICAgIGRvbS0+ cDJtX2hvc3RbaV0gPSAoKHhlbl9wZm5fdCktMSk7CisgICAgZm9yICggdm1lbWlkID0gMDsgdm1l bWlkIDwgbnJfdm1lbXJhbmdlczsgdm1lbWlkKysgKQorICAgIHsKKyAgICAgICAgdWludDY0X3Qg cGZuOworCisgICAgICAgIGZvciAoIHBmbiA9IHZtZW1yYW5nZXNbdm1lbWlkXS5zdGFydCA+PiBQ QUdFX1NISUZUOworICAgICAgICAgICAgICBwZm4gPCB2bWVtcmFuZ2VzW3ZtZW1pZF0uZW5kID4+ IFBBR0VfU0hJRlQ7CisgICAgICAgICAgICAgIHBmbisrICkKKyAgICAgICAgICAgIGRvbS0+cDJt X2hvc3RbcGZuXSA9IHBmbjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRyeSB0byBjbGFpbSBw YWdlcyBmb3IgZWFybHkgd2FybmluZyBvZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZS4K KyAgICAgKiBUaGlzIHNob3VsZCBnbyBiZWZvcmUgeGNfZG9tYWluX3NldF9wb2RfdGFyZ2V0LCBi ZWN1YXNlIHRoYXQgZnVuY3Rpb24KKyAgICAgKiBhY3R1YWxseSBhbGxvY2F0ZXMgbWVtb3J5IGZv ciB0aGUgZ3Vlc3QuIENsYWltaW5nIGFmdGVyIG1lbW9yeSBoYXMgYmVlbgorICAgICAqIGFsbG9j YXRlZCBpcyBwb2ludGxlc3MuCisgICAgICovCisgICAgaWYgKCBjbGFpbV9lbmFibGVkICkgewor ICAgICAgICByYyA9IHhjX2RvbWFpbl9jbGFpbV9wYWdlcyh4Y2gsIGRvbWlkLCB0YXJnZXRfcGFn ZXMgLSBWR0FfSE9MRV9TSVpFKTsKKyAgICAgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAgewor ICAgICAgICAgICAgRE9NUFJJTlRGKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBIVk0g Z3Vlc3QgYXMgd2UgY2Fubm90IGNsYWltIG1lbW9yeSEiKTsKKyAgICAgICAgICAgIGdvdG8gZXJy b3Jfb3V0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCBtZW1mbGFncyAmIFhFTk1FTUZf cG9wdWxhdGVfb25fZGVtYW5kICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFN1YnRy YWN0IFZHQV9IT0xFX1NJWkUgZnJvbSB0YXJnZXRfcGFnZXMgZm9yIHRoZSBWR0EKKyAgICAgICAg ICogImhvbGUiLiAgWGVuIHdpbGwgYWRqdXN0IHRoZSBQb0QgY2FjaGUgc2l6ZSBzbyB0aGF0IGRv bWFpbgorICAgICAgICAgKiB0b3RfcGFnZXMgd2lsbCBiZSB0YXJnZXRfcGFnZXMgLSBWR0FfSE9M RV9TSVpFIGFmdGVyCisgICAgICAgICAqIHRoaXMgY2FsbC4KKyAgICAgICAgICovCisgICAgICAg IHJjID0geGNfZG9tYWluX3NldF9wb2RfdGFyZ2V0KHhjaCwgZG9taWQsIHRhcmdldF9wYWdlcyAt IFZHQV9IT0xFX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICB7CisgICAg ICAgICAgICBET01QUklOVEYoIkNvdWxkIG5vdCBzZXQgUG9EIHRhcmdldCBmb3IgSFZNIGd1ZXN0 LlxuIik7CisgICAgICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICAgICAgfQorICAgIH0KKwor ICAgIC8qCisgICAgICogQWxsb2NhdGUgbWVtb3J5IGZvciBIVk0gZ3Vlc3QsIHNraXBwaW5nIFZH QSBob2xlIDB4QTAwMDAtMHhDMDAwMC4KKyAgICAgKgorICAgICAqIFdlIGF0dGVtcHQgdG8gYWxs b2NhdGUgMUdCIHBhZ2VzIGlmIHBvc3NpYmxlLiBJdCBmYWxscyBiYWNrIG9uIDJNQgorICAgICAq IHBhZ2VzIGlmIDFHQiBhbGxvY2F0aW9uIGZhaWxzLiA0S0IgcGFnZXMgd2lsbCBiZSB1c2VkIGV2 ZW50dWFsbHkgaWYKKyAgICAgKiBib3RoIGZhaWwuCisgICAgICogCisgICAgICogVW5kZXIgMk1C IG1vZGUsIHdlIGFsbG9jYXRlIHBhZ2VzIGluIGJhdGNoZXMgb2Ygbm8gbW9yZSB0aGFuIDhNQiB0 byAKKyAgICAgKiBlbnN1cmUgdGhhdCB3ZSBjYW4gYmUgcHJlZW1wdGVkIGFuZCBoZW5jZSBkb20w IHJlbWFpbnMgcmVzcG9uc2l2ZS4KKyAgICAgKi8KKyAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0 ZV9waHlzbWFwX2V4YWN0KAorICAgICAgICB4Y2gsIGRvbWlkLCAweGEwLCAwLCBtZW1mbGFncywg JmRvbS0+cDJtX2hvc3RbMHgwMF0pOworCisgICAgc3RhdF9ub3JtYWxfcGFnZXMgPSAwOworICAg IGZvciAoIHZtZW1pZCA9IDA7IHZtZW1pZCA8IG5yX3ZtZW1yYW5nZXM7IHZtZW1pZCsrICkKKyAg ICB7CisgICAgICAgIHVuc2lnbmVkIGludCBuZXdfbWVtZmxhZ3MgPSBtZW1mbGFnczsKKyAgICAg ICAgdWludDY0X3QgZW5kX3BhZ2VzOworICAgICAgICB1bnNpZ25lZCBpbnQgdm5vZGUgPSB2bWVt cmFuZ2VzW3ZtZW1pZF0ubmlkOworICAgICAgICB1bnNpZ25lZCBpbnQgcG5vZGUgPSB2bm9kZV90 b19wbm9kZVt2bm9kZV07CisKKyAgICAgICAgaWYgKCBwbm9kZSAhPSBYQ19OVU1BX05PX05PREUg KQorICAgICAgICAgICAgbmV3X21lbWZsYWdzIHw9IFhFTk1FTUZfZXhhY3Rfbm9kZShwbm9kZSk7 CisKKyAgICAgICAgZW5kX3BhZ2VzID0gdm1lbXJhbmdlc1t2bWVtaWRdLmVuZCA+PiBQQUdFX1NI SUZUOworICAgICAgICAvKgorICAgICAgICAgKiBDb25zaWRlciB2Z2EgaG9sZSBiZWxvbmdzIHRv IHRoZSB2bWVtcmFuZ2UgdGhhdCBjb3ZlcnMKKyAgICAgICAgICogMHhBMDAwMC0weEMwMDAwLiBO b3RlIHRoYXQgMHgwMDAwMC0weEEwMDAwIGlzIHBvcHVsYXRlZCBqdXN0CisgICAgICAgICAqIGJl Zm9yZSB0aGlzIGxvb3AuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHZtZW1yYW5nZXNbdm1l bWlkXS5zdGFydCA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgY3VyX3BhZ2VzID0gMHhj MDsKKyAgICAgICAgICAgIHN0YXRfbm9ybWFsX3BhZ2VzICs9IDB4YzA7CisgICAgICAgIH0KKyAg ICAgICAgZWxzZQorICAgICAgICAgICAgY3VyX3BhZ2VzID0gdm1lbXJhbmdlc1t2bWVtaWRdLnN0 YXJ0ID4+IFBBR0VfU0hJRlQ7CisKKyAgICAgICAgd2hpbGUgKCAocmMgPT0gMCkgJiYgKGVuZF9w YWdlcyA+IGN1cl9wYWdlcykgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBDbGlwIGNvdW50 IHRvIG1heGltdW0gMUdCIGV4dGVudC4gKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291 bnQgPSBlbmRfcGFnZXMgLSBjdXJfcGFnZXM7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1h eF9wYWdlcyA9IFNVUEVSUEFHRV8xR0JfTlJfUEZOUzsKKworICAgICAgICAgICAgaWYgKCBjb3Vu dCA+IG1heF9wYWdlcyApCisgICAgICAgICAgICAgICAgY291bnQgPSBtYXhfcGFnZXM7CisKKyAg ICAgICAgICAgIGN1cl9wZm4gPSBkb20tPnAybV9ob3N0W2N1cl9wYWdlc107CisKKyAgICAgICAg ICAgIC8qIFRha2UgY2FyZSB0aGUgY29ybmVyIGNhc2VzIG9mIHN1cGVyIHBhZ2UgdGFpbHMgKi8K KyAgICAgICAgICAgIGlmICggKChjdXJfcGZuICYgKFNVUEVSUEFHRV8xR0JfTlJfUEZOUy0xKSkg IT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgKGNvdW50ID4gKC1jdXJfcGZuICYgKFNVUEVSUEFH RV8xR0JfTlJfUEZOUy0xKSkpICkKKyAgICAgICAgICAgICAgICBjb3VudCA9IC1jdXJfcGZuICYg KFNVUEVSUEFHRV8xR0JfTlJfUEZOUy0xKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCAoKGNvdW50 ICYgKFNVUEVSUEFHRV8xR0JfTlJfUEZOUy0xKSkgIT0gMCkgJiYKKyAgICAgICAgICAgICAgICAg ICAgICAoY291bnQgPiBTVVBFUlBBR0VfMUdCX05SX1BGTlMpICkKKyAgICAgICAgICAgICAgICBj b3VudCAmPSB+KFNVUEVSUEFHRV8xR0JfTlJfUEZOUyAtIDEpOworCisgICAgICAgICAgICAvKiBB dHRlbXAgdG8gYWxsb2NhdGUgMUdCIHN1cGVyIHBhZ2UuIEJlY2F1c2UgaW4gZWFjaCBwYXNzCisg ICAgICAgICAgICAgKiB3ZSBvbmx5IGFsbG9jYXRlIGF0IG1vc3QgMUdCLCB3ZSBkb24ndCBoYXZl IHRvIGNsaXAKKyAgICAgICAgICAgICAqIHN1cGVyIHBhZ2UgYm91bmRhcmllcy4KKyAgICAgICAg ICAgICAqLworICAgICAgICAgICAgaWYgKCAoKGNvdW50IHwgY3VyX3BmbikgJiAoU1VQRVJQQUdF XzFHQl9OUl9QRk5TIC0gMSkpID09IDAgJiYKKyAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYg dGhlcmUgZXhpc3RzIE1NSU8gaG9sZSBpbiB0aGUgMUdCIG1lbW9yeQorICAgICAgICAgICAgICAg ICAgKiByYW5nZSAqLworICAgICAgICAgICAgICAgICAhY2hlY2tfbW1pb19ob2xlKGN1cl9wZm4g PDwgUEFHRV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBFUlBB R0VfMUdCX05SX1BGTlMgPDwgUEFHRV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkb20tPm1taW9fc3RhcnQsIGRvbS0+bW1pb19zaXplKSApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgbG9uZyBkb25lOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgbnJfZXh0ZW50cyA9IGNvdW50ID4+IFNVUEVSUEFHRV8xR0JfU0hJRlQ7CisgICAgICAgICAg ICAgICAgeGVuX3Bmbl90IHNwX2V4dGVudHNbbnJfZXh0ZW50c107CisKKyAgICAgICAgICAgICAg ICBmb3IgKCBpID0gMDsgaSA8IG5yX2V4dGVudHM7IGkrKyApCisgICAgICAgICAgICAgICAgICAg IHNwX2V4dGVudHNbaV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5wMm1faG9zdFtj dXJfcGFnZXMrKGk8PFNVUEVSUEFHRV8xR0JfU0hJRlQpXTsKKworICAgICAgICAgICAgICAgIGRv bmUgPSB4Y19kb21haW5fcG9wdWxhdGVfcGh5c21hcCh4Y2gsIGRvbWlkLCBucl9leHRlbnRzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBFUlBB R0VfMUdCX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZW1mbGFncywgc3BfZXh0ZW50cyk7CisKKyAgICAgICAgICAgICAgICBpZiAoIGRv bmUgPiAwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRfMWdi X3BhZ2VzICs9IGRvbmU7CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPDw9IFNVUEVSUEFHRV8x R0JfU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIGN1cl9wYWdlcyArPSBkb25lOworICAgICAg ICAgICAgICAgICAgICBjb3VudCAtPSBkb25lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgaWYgKCBjb3VudCAhPSAwICkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAvKiBDbGlwIGNvdW50IHRvIG1heGltdW0gOE1CIGV4dGVudC4gKi8KKyAg ICAgICAgICAgICAgICBtYXhfcGFnZXMgPSBTVVBFUlBBR0VfMk1CX05SX1BGTlMgKiA0OworICAg ICAgICAgICAgICAgIGlmICggY291bnQgPiBtYXhfcGFnZXMgKQorICAgICAgICAgICAgICAgICAg ICBjb3VudCA9IG1heF9wYWdlczsKKworICAgICAgICAgICAgICAgIC8qIENsaXAgcGFydGlhbCBz dXBlcnBhZ2UgZXh0ZW50cyB0byBzdXBlcnBhZ2UKKyAgICAgICAgICAgICAgICAgKiBib3VuZGFy aWVzLiAqLworICAgICAgICAgICAgICAgIGlmICggKChjdXJfcGZuICYgKFNVUEVSUEFHRV8yTUJf TlJfUEZOUy0xKSkgIT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgIChjb3VudCA+ICgtY3Vy X3BmbiAmIChTVVBFUlBBR0VfMk1CX05SX1BGTlMtMSkpKSApCisgICAgICAgICAgICAgICAgICAg IGNvdW50ID0gLWN1cl9wZm4gJiAoU1VQRVJQQUdFXzJNQl9OUl9QRk5TLTEpOworICAgICAgICAg ICAgICAgIGVsc2UgaWYgKCAoKGNvdW50ICYgKFNVUEVSUEFHRV8yTUJfTlJfUEZOUy0xKSkgIT0g MCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50ID4gU1VQRVJQQUdFXzJNQl9O Ul9QRk5TKSApCisgICAgICAgICAgICAgICAgICAgIGNvdW50ICY9IH4oU1VQRVJQQUdFXzJNQl9O Ul9QRk5TIC0gMSk7IC8qIGNsaXAgbm9uLXMucC4gdGFpbCAqLworCisgICAgICAgICAgICAgICAg LyogQXR0ZW1wdCB0byBhbGxvY2F0ZSBzdXBlcnBhZ2UgZXh0ZW50cy4gKi8KKyAgICAgICAgICAg ICAgICBpZiAoICgoY291bnQgfCBjdXJfcGZuKSAmIChTVVBFUlBBR0VfMk1CX05SX1BGTlMgLSAx KSkgPT0gMCApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsb25nIGRv bmU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfZXh0ZW50cyA9IGNvdW50 ID4+IFNVUEVSUEFHRV8yTUJfU0hJRlQ7CisgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBz cF9leHRlbnRzW25yX2V4dGVudHNdOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgbnJfZXh0ZW50czsgaSsrICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwX2V4dGVu dHNbaV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+cDJtX2hvc3RbY3VyX3Bh Z2VzKyhpPDxTVVBFUlBBR0VfMk1CX1NISUZUKV07CisKKyAgICAgICAgICAgICAgICAgICAgZG9u ZSA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwKHhjaCwgZG9taWQsIG5yX2V4dGVudHMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVVBF UlBBR0VfMk1CX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWVtZmxhZ3MsIHNwX2V4dGVudHMpOworCisgICAgICAgICAgICAgICAg ICAgIGlmICggZG9uZSA+IDAgKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICBzdGF0XzJtYl9wYWdlcyArPSBkb25lOworICAgICAgICAgICAgICAgICAgICAg ICAgZG9uZSA8PD0gU1VQRVJQQUdFXzJNQl9TSElGVDsKKyAgICAgICAgICAgICAgICAgICAgICAg IGN1cl9wYWdlcyArPSBkb25lOworICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gZG9u ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgLyogRmFsbCBiYWNrIHRvIDRrQiBleHRlbnRzLiAqLworICAgICAg ICAgICAgaWYgKCBjb3VudCAhPSAwICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy YyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwX2V4YWN0KAorICAgICAgICAgICAgICAgICAg ICB4Y2gsIGRvbWlkLCBjb3VudCwgMCwgbmV3X21lbWZsYWdzLCAmZG9tLT5wMm1faG9zdFtjdXJf cGFnZXNdKTsKKyAgICAgICAgICAgICAgICBjdXJfcGFnZXMgKz0gY291bnQ7CisgICAgICAgICAg ICAgICAgc3RhdF9ub3JtYWxfcGFnZXMgKz0gY291bnQ7CisgICAgICAgICAgICB9CisgICAgICAg IH0KKworICAgICAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor CisgICAgaWYgKCByYyAhPSAwICkKKyAgICB7CisgICAgICAgIERPTVBSSU5URigiQ291bGQgbm90 IGFsbG9jYXRlIG1lbW9yeSBmb3IgSFZNIGd1ZXN0LiIpOworICAgICAgICBnb3RvIGVycm9yX291 dDsKKyAgICB9CisKKyAgICBEUFJJTlRGKCJQSFlTSUNBTCBNRU1PUlkgQUxMT0NBVElPTjpcbiIp OworICAgIERQUklOVEYoIiAgNEtCIFBBR0VTOiAweCUwMTZseFxuIiwgc3RhdF9ub3JtYWxfcGFn ZXMpOworICAgIERQUklOVEYoIiAgMk1CIFBBR0VTOiAweCUwMTZseFxuIiwgc3RhdF8ybWJfcGFn ZXMpOworICAgIERQUklOVEYoIiAgMUdCIFBBR0VTOiAweCUwMTZseFxuIiwgc3RhdF8xZ2JfcGFn ZXMpOworCisgICAgcmMgPSAwOworICAgIGdvdG8gb3V0OworIGVycm9yX291dDoKKyAgICByYyA9 IC0xOworIG91dDoKKworICAgIC8qIGVuc3VyZSBubyB1bmNsYWltZWQgcGFnZXMgYXJlIGxlZnQg dW51c2VkICovCisgICAgeGNfZG9tYWluX2NsYWltX3BhZ2VzKHhjaCwgZG9taWQsIDAgLyogY2Fu Y2VscyB0aGUgY2xhaW0gKi8pOworCisgICAgcmV0dXJuIHJjOworfQorCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KIAogc3RhdGljIGludCBib290ZWFybHkoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9t KQpAQCAtMTAzOCw2ICsxNTM0LDEyIEBAIHN0YXRpYyBpbnQgYm9vdGxhdGVfcHYoc3RydWN0IHhj X2RvbV9pbWFnZSAqZG9tKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGJvb3RsYXRl X2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCit7CisgICAgRE9NUFJJTlRGKCIlczogZG9p bmcgbm90aGluZyIsIF9fRlVOQ1RJT05fXyk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwogCiBzdGF0aWMgc3RydWN0IHhjX2RvbV9hcmNoIHhjX2RvbV8zMl9wYWUg PSB7CkBAIC0xMDcyLDEwICsxNTc0LDI3IEBAIHN0YXRpYyBzdHJ1Y3QgeGNfZG9tX2FyY2ggeGNf ZG9tXzY0ID0gewogICAgIC5ib290bGF0ZSA9IGJvb3RsYXRlX3B2LAogfTsKIAorc3RhdGljIHN0 cnVjdCB4Y19kb21fYXJjaCB4Y19odm1fMzIgPSB7CisgICAgLmd1ZXN0X3R5cGUgPSAiaHZtLTMu MC14ODZfMzIiLAorICAgIC5uYXRpdmVfcHJvdG9jb2wgPSBYRU5fSU9fUFJPVE9fQUJJX1g4Nl8z MiwKKyAgICAucGFnZV9zaGlmdCA9IFBBR0VfU0hJRlRfWDg2LAorICAgIC5zaXplb2ZfcGZuID0g NCwKKyAgICAuYWxsb2NfbWFnaWNfcGFnZXMgPSBhbGxvY19tYWdpY19wYWdlc19odm0sCisgICAg LmNvdW50X3BndGFibGVzID0gTlVMTCwKKyAgICAuc2V0dXBfcGd0YWJsZXMgPSBOVUxMLAorICAg IC5zdGFydF9pbmZvID0gTlVMTCwKKyAgICAuc2hhcmVkX2luZm8gPSBOVUxMLAorICAgIC52Y3B1 ID0gdmNwdV9odm0sCisgICAgLm1lbWluaXQgPSBtZW1pbml0X2h2bSwKKyAgICAuYm9vdGVhcmx5 ID0gYm9vdGVhcmx5LAorICAgIC5ib290bGF0ZSA9IGJvb3RsYXRlX2h2bSwKK307CisKIHN0YXRp YyB2b2lkIF9faW5pdCByZWdpc3Rlcl9hcmNoX2hvb2tzKHZvaWQpCiB7CiAgICAgeGNfZG9tX3Jl Z2lzdGVyX2FyY2hfaG9va3MoJnhjX2RvbV8zMl9wYWUpOwogICAgIHhjX2RvbV9yZWdpc3Rlcl9h cmNoX2hvb2tzKCZ4Y19kb21fNjQpOworICAgIHhjX2RvbV9yZWdpc3Rlcl9hcmNoX2hvb2tzKCZ4 Y19odm1fMzIpOwogfQogCiBpbnQgeGNfZG9tX2ZlYXR1cmVfdHJhbnNsYXRlZChzdHJ1Y3QgeGNf ZG9tX2ltYWdlICpkb20pCi0tIAoxLjkuNSAoQXBwbGUgR2l0LTUwLjMpCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK