From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v8 02/13] libxc: Prepare a start info structure for hvmloader Date: Thu, 18 Aug 2016 15:13:47 +0100 Message-ID: <1471529638-2436-3-git-send-email-wei.liu2@citrix.com> References: <1471529638-2436-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1baO5j-0008SO-JV for xen-devel@lists.xenproject.org; Thu, 18 Aug 2016 14:14:43 +0000 In-Reply-To: <1471529638-2436-1-git-send-email-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: Anthony PERARD List-Id: xen-devel@lists.xenproject.org RnJvbTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CgouLi4gYW5k IGxvYWQgQklPUy9VRUZJIGZpcm13YXJlIGludG8gZ3Vlc3QgbWVtb3J5LgoKVGhpcyBhZGRzIGEg bmV3IGZpcm13YXJlIG1vZHVsZSwgc3lzdGVtX2Zpcm13YXJlX21vZHVsZS4gSXQgaXMgbG9hZGVk IGluCnRoZSBndWVzdCBtZW1vcnkgYW5kIGZpbmFsIGxvY2F0aW9uIGlzIHByb3ZpZGVkIHRvIGh2 bWxvYWRlciB2aWEgdGhlCmh2bV9zdGFydF9pbmZvIHN0cnVjdC4KClRoaXMgcGF0Y2ggY3JlYXRl IHRoZSBodm1fc3RhcnRfaW5mbyBzdHJ1Y3QgZm9yIEhWTSBndWVzdCB0aGF0IGhhdmUgYQpkZXZp Y2UgbW9kZWwsIHNvIHRoaXMgaXMgbm93IGNvbW1vbiBjb2RlIHdpdGggSFZNIGd1ZXN0IHdpdGhv dXQgZGV2aWNlCm1vZGVsLgoKU2lnbmVkLW9mZi1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnku cGVyYXJkQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t PgotLS0KQ2hhbmdlcyBpbiB2ODoKLSByZWJhc2VkIG9uIHRvcCBvZiBzdGFnaW5nCgpDaGFuZ2Vz IGluIFY2OgotIGNoYW5nZSBkZXNjcmlwdGlvbiAoZm9yIHZlcmJvc2Ugb3V0cHV0KSBvZiB0aGUg YWxsb2NhdGlvbiBvZgogIGh2bV9zdGFydF9pbmZvIGZyb20gIkhWTWxpdGUgc3RhcnQgaW5mbyIg dG8gIkhWTSBzdGFydCBpbmZvIi4KCkNoYW5nZXMgaW4gVjU6Ci0gaW4gYWxsb2NfbWFnaWNfcGFn ZXNfaHZtLCBjaGVjayBkb20tPmRldmljZV9tb2RlbCBvbmx5IG9uY2UgaW5zdGVhZCBvZgogIHR3 aWNlIChmb2xkIHNlY29uZCBpZiBpbnRvIHByZXZpb3VzIGVsc2UpCi0gcmV3b3JrIGFkZF9tb2R1 bGVfdG9fbGlzdCB0byBtYWtlIGl0IGVhc2llciB0byByZWFkCi0gYWxzbyBjb21tZW50IGFib3V0 IHRoZSBpbnRlbmRlZCBtZW1vcnkgbGF5b3V0IG9mIHN0YXJ0X2luZm8gYW5kIHRoZQogIG1vZHVs ZXMKLSBpbiBib290bGF0ZV9odm0oKSwgZHJvcCBzdGFydF9wYWdlIGFuZCB1c2Ugc3RhcnRfaW5m byBhcyB0aGV5IHBvaW50IHRvCiAgdGhlIHNhbWUgYWRkcmVzcwotIHJlbmFtZSB4Y19kb21faW1h Z2UuYmlvc19tb2R1bGUgdG8geGNfZG9tX2ltYWdlLnN5c3RlbV9maXJtd2FyZV9tb2R1bGUKLSBy ZW5hbWUgbW9kdWxlIG5hbWUgdG8gImZpcm13YXJlIiAod2FzICJiaW9zIikKCkNoYW5nZXMgaW4g VjQ6Ci0gY2hhbmdlIHRpdGxlIHRvIHN1Z2dlc3QgdGhlIGNoYW5nZSBvZiBiZWF2aW9yCi0gcmVt b3ZlIGNvZGUgdG8gbG9hZCBhY3BpIHRhYmxlcyAoZHNkdCkKLSBVcGRhdGUgcHVibGljL3hlbi5o IGFib3V0IGh2bV9zdGFydF9pbmZvIGF2YWlsYWJsZSBvbiBvdGhlciBIVk0gZ3Vlc3QKICBpbiAl ZWJ4LgoKQ2hhbmdlcyBpbiBWMzoKLSByZW5hbWUgYWNwaV90YWJsZV9tb2R1bGUgdG8gZnVsbF9h Y3BpX21vZHVsZS4KLSBmYWN0b3Jpc2UgbW9kdWxlIGxvYWRpbmcsIHVzaW5nIG5ldyBmdW5jdGlv biB0byBsb2FkIGV4aXN0aW5nIG9wdGluYWwKICBtb2R1bGUsIHRoaXMgc2hvdWxkIG5vdCBjaGFu Z2UgYW55dGhpbmcKLSBzaG91bGQgbm93IHVzZSB0aGUgc2FtZSBjb2RlIHRvIGxvYWRzIG1vZHVs ZXMgYXMgZm9yIEhWTWxpdGUgVk1zLgogIHRoaXMgYXZvaWQgZHVwbGljYXRpb24gb2YgY29kZS4K LSBubyBtb3JlIGdlbmVyaWMgY21kbGluZSB3aXRoIGEgbGlzdCBvZiBtb2R1bGVzLCBlYWNoIG1v ZHVsZSBoYXZlIGl0cyBuYW1lCiAgaW4gdGhlIG1vZHVsZSBzcGVjaWZpYyBjbWRsaW5lLgotIHNj b3BlIGNoYW5nZSBmb3IgY29tbW9uIGNvZGUgYmV0d2VlbiBodm1saXRlIGFuZCBodm1sb2FkZXIK LS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oICAgfCAgIDMgKwogdG9vbHMvbGlieGMv eGNfZG9tX2h2bWxvYWRlci5jIHwgICAzICsKIHRvb2xzL2xpYnhjL3hjX2RvbV94ODYuYyAgICAg ICB8IDE1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMyBmaWxl cyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNf ZG9tLmgKaW5kZXggY2FjNDY5OC4uZGU3ZGNhOSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5j bHVkZS94Y19kb20uaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCkBAIC0yMDks NiArMjA5LDkgQEAgc3RydWN0IHhjX2RvbV9pbWFnZSB7CiAgICAgLyogSWYgdW5zZXQgZGlzYWJs ZXMgdGhlIHNldHVwIG9mIHRoZSBJT1JFUSBwYWdlcy4gKi8KICAgICBib29sIGRldmljZV9tb2Rl bDsKIAorICAgIC8qIEJJT1MvRmlybXdhcmUgcGFzc2VkIHRvIEhWTUxPQURFUiAqLworICAgIHN0 cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxlIHN5c3RlbV9maXJtd2FyZV9tb2R1bGU7CisKICAg ICAvKiBFeHRyYSBBQ1BJIHRhYmxlcyBwYXNzZWQgdG8gSFZNTE9BREVSICovCiAgICAgc3RydWN0 IHhjX2h2bV9maXJtd2FyZV9tb2R1bGUgYWNwaV9tb2R1bGU7CiAKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhjL3hjX2RvbV9odm1sb2FkZXIuYyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9odm1sb2FkZXIu YwppbmRleCA4MTUwYjc0Li42ZWI4NTE2IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19kb21f aHZtbG9hZGVyLmMKKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2h2bWxvYWRlci5jCkBAIC0xNjks NiArMTY5LDkgQEAgc3RhdGljIGludCBtb2R1bGVzX2luaXQoc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tKQogewogICAgIGludCByYzsKIAorICAgIHJjID0gbW9kdWxlX2luaXRfb25lKGRvbSwgJmRv bS0+c3lzdGVtX2Zpcm13YXJlX21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiU3lz dGVtIEZpcm13YXJlIG1vZHVsZSIpOworICAgIGlmICggcmMgKSBnb3RvIGVycjsKICAgICByYyA9 IG1vZHVsZV9pbml0X29uZShkb20sICZkb20tPmFjcGlfbW9kdWxlLCAiQUNQSSBtb2R1bGUiKTsK ICAgICBpZiAoIHJjICkgZ290byBlcnI7CiAgICAgcmMgPSBtb2R1bGVfaW5pdF9vbmUoZG9tLCAm ZG9tLT5zbWJpb3NfbW9kdWxlLCAiU01CSU9TIG1vZHVsZSIpOwpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMveGNfZG9tX3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jCmluZGV4IGQ5NzQ3 YjQuLjBlYWI4YTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYuYworKysgYi90 b29scy9saWJ4Yy94Y19kb21feDg2LmMKQEAgLTcwLDYgKzcwLDkgQEAKICNkZWZpbmUgcm91bmRf dXAoYWRkciwgbWFzaykgICAgICgoYWRkcikgfCAobWFzaykpCiAjZGVmaW5lIHJvdW5kX3BnX3Vw KGFkZHIpICAoKChhZGRyKSArIFBBR0VfU0laRV9YODYgLSAxKSAmIH4oUEFHRV9TSVpFX1g4NiAt IDEpKQogCisjZGVmaW5lIEhWTUxPQURFUl9NT0RVTEVfTUFYX0NPVU5UIDEKKyNkZWZpbmUgSFZN TE9BREVSX01PRFVMRV9OQU1FX1NJWkUgMTAKKwogc3RydWN0IHhjX2RvbV9wYXJhbXMgewogICAg IHVuc2lnbmVkIGxldmVsczsKICAgICB4ZW5fdmFkZHJfdCB2YWRkcl9tYXNrOwpAQCAtNTkxLDYg KzU5NCw3IEBAIHN0YXRpYyBpbnQgYWxsb2NfbWFnaWNfcGFnZXNfaHZtKHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSkKICAgICB4ZW5fcGZuX3Qgc3BlY2lhbF9hcnJheVtYODZfSFZNX05SX1NQRUNJ QUxfUEFHRVNdOwogICAgIHhlbl9wZm5fdCBpb3JlcV9zZXJ2ZXJfYXJyYXlbTlJfSU9SRVFfU0VS VkVSX1BBR0VTXTsKICAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGRvbS0+eGNoOworICAgIHNpemVf dCBzdGFydF9pbmZvX3NpemUgPSBzaXplb2Yoc3RydWN0IGh2bV9zdGFydF9pbmZvKTsKIAogICAg IC8qIEFsbG9jYXRlIGFuZCBjbGVhciBzcGVjaWFsIHBhZ2VzLiAqLwogICAgIGZvciAoIGkgPSAw OyBpIDwgWDg2X0hWTV9OUl9TUEVDSUFMX1BBR0VTOyBpKysgKQpAQCAtNjI1LDggKzYyOSw2IEBA IHN0YXRpYyBpbnQgYWxsb2NfbWFnaWNfcGFnZXNfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRv bSkKIAogICAgIGlmICggIWRvbS0+ZGV2aWNlX21vZGVsICkKICAgICB7Ci0gICAgICAgIHNpemVf dCBzdGFydF9pbmZvX3NpemUgPSBzaXplb2Yoc3RydWN0IGh2bV9zdGFydF9pbmZvKTsKLQogICAg ICAgICBpZiAoIGRvbS0+Y21kbGluZSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGRvbS0+Y21k bGluZV9zaXplID0gUk9VTkRVUChzdHJsZW4oZG9tLT5jbWRsaW5lKSArIDEsIDgpOwpAQCAtNjM2 LDE3ICs2MzgsMTggQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlc19odm0oc3RydWN0IHhj X2RvbV9pbWFnZSAqZG9tKQogICAgICAgICAvKiBMaW1pdGVkIHRvIG9uZSBtb2R1bGUuICovCiAg ICAgICAgIGlmICggZG9tLT5yYW1kaXNrX2Jsb2IgKQogICAgICAgICAgICAgc3RhcnRfaW5mb19z aXplICs9IHNpemVvZihzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkpOwotCi0gICAgICAgIHJjID0g eGNfZG9tX2FsbG9jX3NlZ21lbnQoZG9tLCAmZG9tLT5zdGFydF9pbmZvX3NlZywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiSFZNbGl0ZSBzdGFydCBpbmZvIiwgMCwgc3RhcnRf aW5mb19zaXplKTsKLSAgICAgICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgewotICAgICAgICAg ICAgRE9NUFJJTlRGKCJVbmFibGUgdG8gcmVzZXJ2ZSBtZW1vcnkgZm9yIHRoZSBzdGFydCBpbmZv Iik7Ci0gICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAg ICAgeworICAgICAgICBzdGFydF9pbmZvX3NpemUgKz0KKyAgICAgICAgICAgIHNpemVvZihzdHJ1 Y3QgaHZtX21vZGxpc3RfZW50cnkpICogSFZNTE9BREVSX01PRFVMRV9NQVhfQ09VTlQ7CisgICAg ICAgIC8qCisgICAgICAgICAqIEFkZCBleHRyYSBzcGFjZSB0byB3cml0ZSBtb2R1bGVzIG5hbWUu CisgICAgICAgICAqIFRoZSBIVk1MT0FERVJfTU9EVUxFX05BTUVfU0laRSBhY2NvdW50cyBmb3Ig TlVMIGJ5dGUuCisgICAgICAgICAqLworICAgICAgICBzdGFydF9pbmZvX3NpemUgKz0KKyAgICAg ICAgICAgIEhWTUxPQURFUl9NT0RVTEVfTkFNRV9TSVpFICogSFZNTE9BREVSX01PRFVMRV9NQVhf Q09VTlQ7CisKICAgICAgICAgLyoKICAgICAgICAgICogQWxsb2NhdGUgYW5kIGNsZWFyIGFkZGl0 aW9uYWwgaW9yZXEgc2VydmVyIHBhZ2VzLiBUaGUgZGVmYXVsdAogICAgICAgICAgKiBzZXJ2ZXIg d2lsbCB1c2UgdGhlIElPUkVRIGFuZCBCVUZJT1JFUSBzcGVjaWFsIHBhZ2VzIGFib3ZlLgpAQCAt NjczLDYgKzY3NiwxNCBAQCBzdGF0aWMgaW50IGFsbG9jX21hZ2ljX3BhZ2VzX2h2bShzdHJ1Y3Qg eGNfZG9tX2ltYWdlICpkb20pCiAgICAgICAgICAgICAgICAgICAgICAgICAgTlJfSU9SRVFfU0VS VkVSX1BBR0VTKTsKICAgICB9CiAKKyAgICByYyA9IHhjX2RvbV9hbGxvY19zZWdtZW50KGRvbSwg JmRvbS0+c3RhcnRfaW5mb19zZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSFZN IHN0YXJ0IGluZm8iLCAwLCBzdGFydF9pbmZvX3NpemUpOworICAgIGlmICggcmMgIT0gMCApCisg ICAgeworICAgICAgICBET01QUklOVEYoIlVuYWJsZSB0byByZXNlcnZlIG1lbW9yeSBmb3IgdGhl IHN0YXJ0IGluZm8iKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCiAgICAgLyoKICAgICAg KiBJZGVudGl0eS1tYXAgcGFnZSB0YWJsZSBpcyByZXF1aXJlZCBmb3IgcnVubmluZyB3aXRoIENS MC5QRz0wIHdoZW4KICAgICAgKiB1c2luZyBJbnRlbCBFUFQuIENyZWF0ZSBhIDMyLWJpdCBub24t UEFFIHBhZ2UgZGlyZWN0b3J5IG9mIHN1cGVycGFnZXMuCkBAIC0xNjkwLDQyICsxNzAxLDg5IEBA IHN0YXRpYyBpbnQgYWxsb2NfcGd0YWJsZXNfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkK ICAgICByZXR1cm4gMDsKIH0KIAorLyoKKyAqIFRoZSBtZW1vcnkgbGF5b3V0IG9mIHRoZSBzdGFy dF9pbmZvIHBhZ2UgYW5kIHRoZSBtb2R1bGVzLCBhbmQgd2hlcmUgdGhlCisgKiBhZGRyZXNzZXMg YXJlIHN0b3JlZDoKKyAqCisgKiAvLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwK KyAqIHwgc3RydWN0IGh2bV9zdGFydF9pbmZvICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtIHN0YXJ0X2luZm8tPm1vZGxpc3RfcGFkZHIKKyAq IHwgc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5WzBdICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8IHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeVsxXSAg ICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LSBtb2RsaXN0 WzBdLmNtZGxpbmVfcGFkZHIKKyAqIHwgY21kbGluZSBvZiBtb2R1bGUgMCAgICAgICAgICAgICAg fAorICogfCBjaGFyW0hWTUxPQURFUl9NT0RVTEVfTkFNRV9TSVpFXSB8CisgKiArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0gbW9kbGlzdFsxXS5jbWRsaW5lX3BhZGRyCisg KiB8IGNtZGxpbmUgb2YgbW9kdWxlIDEgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICovCitzdGF0aWMgdm9pZCBhZGRfbW9kdWxlX3RvX2xp c3Qoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxlICptb2R1bGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaHZtX21vZGxpc3RfZW50cnkgKm1vZGxpc3QsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9zdGFydF9pbmZvICpzdGFydF9pbmZvKQor eworICAgIHVpbnQzMl90IGluZGV4ID0gc3RhcnRfaW5mby0+bnJfbW9kdWxlczsKKyAgICB2b2lk ICptb2R1bGVzX2NtZGxpbmVfc3RhcnQgPSBtb2RsaXN0ICsgSFZNTE9BREVSX01PRFVMRV9NQVhf Q09VTlQ7CisgICAgdWludDY0X3QgbW9kbGlzdF9wYWRkciA9IChkb20tPnN0YXJ0X2luZm9fc2Vn LnBmbiA8PCBQQUdFX1NISUZUKSArCisgICAgICAgICgodWludHB0cl90KW1vZGxpc3QgLSAodWlu dHB0cl90KXN0YXJ0X2luZm8pOworICAgIHVpbnQ2NF90IG1vZHVsZXNfY21kbGluZV9wYWRkciA9 IG1vZGxpc3RfcGFkZHIgKworICAgICAgICBzaXplb2Yoc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5 KSAqIEhWTUxPQURFUl9NT0RVTEVfTUFYX0NPVU5UOworCisgICAgaWYgKCBtb2R1bGUtPmxlbmd0 aCA9PSAwICkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXNzZXJ0KHN0YXJ0X2luZm8tPm5yX21v ZHVsZXMgPCBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VOVCk7CisgICAgYXNzZXJ0KHN0cm5sZW4o bmFtZSwgSFZNTE9BREVSX01PRFVMRV9OQU1FX1NJWkUpCisgICAgICAgICAgIDwgSFZNTE9BREVS X01PRFVMRV9OQU1FX1NJWkUpOworCisgICAgbW9kbGlzdFtpbmRleF0ucGFkZHIgPSBtb2R1bGUt Pmd1ZXN0X2FkZHJfb3V0OworICAgIG1vZGxpc3RbaW5kZXhdLnNpemUgPSBtb2R1bGUtPmxlbmd0 aDsKKworICAgIHN0cm5jcHkobW9kdWxlc19jbWRsaW5lX3N0YXJ0ICsgSFZNTE9BREVSX01PRFVM RV9OQU1FX1NJWkUgKiBpbmRleCwKKyAgICAgICAgICAgIG5hbWUsIEhWTUxPQURFUl9NT0RVTEVf TkFNRV9TSVpFKTsKKyAgICBtb2RsaXN0W2luZGV4XS5jbWRsaW5lX3BhZGRyID0KKyAgICAgICAg bW9kdWxlc19jbWRsaW5lX3BhZGRyICsgSFZNTE9BREVSX01PRFVMRV9OQU1FX1NJWkUgKiBpbmRl eDsKKworICAgIHN0YXJ0X2luZm8tPm5yX21vZHVsZXMrKzsKK30KKwogc3RhdGljIGludCBib290 bGF0ZV9odm0oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogewogICAgIHVpbnQzMl90IGRvbWlk ID0gZG9tLT5ndWVzdF9kb21pZDsKICAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGRvbS0+eGNoOwor ICAgIHN0cnVjdCBodm1fc3RhcnRfaW5mbyAqc3RhcnRfaW5mbzsKKyAgICBzaXplX3Qgc3RhcnRf aW5mb19zaXplOworICAgIHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeSAqbW9kbGlzdDsKIAotICAg IGlmICggIWRvbS0+ZGV2aWNlX21vZGVsICkKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBodm1fc3Rh cnRfaW5mbyAqc3RhcnRfaW5mbzsKLSAgICAgICAgc2l6ZV90IHN0YXJ0X2luZm9fc2l6ZTsKLSAg ICAgICAgdm9pZCAqc3RhcnRfcGFnZTsKLQotICAgICAgICBzdGFydF9pbmZvX3NpemUgPSBzaXpl b2YoKnN0YXJ0X2luZm8pICsgZG9tLT5jbWRsaW5lX3NpemU7Ci0gICAgICAgIGlmICggZG9tLT5y YW1kaXNrX2Jsb2IgKQotICAgICAgICAgICAgc3RhcnRfaW5mb19zaXplICs9IHNpemVvZihzdHJ1 Y3QgaHZtX21vZGxpc3RfZW50cnkpOworICAgIHN0YXJ0X2luZm9fc2l6ZSA9IHNpemVvZigqc3Rh cnRfaW5mbykgKyBkb20tPmNtZGxpbmVfc2l6ZTsKKyAgICBpZiAoIGRvbS0+cmFtZGlza19ibG9i ICkKKyAgICAgICAgc3RhcnRfaW5mb19zaXplICs9IHNpemVvZihzdHJ1Y3QgaHZtX21vZGxpc3Rf ZW50cnkpOwogCi0gICAgICAgIGlmICggc3RhcnRfaW5mb19zaXplID4KLSAgICAgICAgICAgICBk b20tPnN0YXJ0X2luZm9fc2VnLnBhZ2VzIDw8IFhDX0RPTV9QQUdFX1NISUZUKGRvbSkgKQotICAg ICAgICB7Ci0gICAgICAgICAgICBET01QUklOVEYoIlRyeWluZyB0byBtYXAgYmV5b25kIHN0YXJ0 X2luZm9fc2VnIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KKyAgICBpZiAo IHN0YXJ0X2luZm9fc2l6ZSA+CisgICAgICAgICBkb20tPnN0YXJ0X2luZm9fc2VnLnBhZ2VzIDw8 IFhDX0RPTV9QQUdFX1NISUZUKGRvbSkgKQorICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJUcnlp bmcgdG8gbWFwIGJleW9uZCBzdGFydF9pbmZvX3NlZyIpOworICAgICAgICByZXR1cm4gLTE7Cisg ICAgfQogCi0gICAgICAgIHN0YXJ0X3BhZ2UgPSB4Y19tYXBfZm9yZWlnbl9yYW5nZSh4Y2gsIGRv bWlkLCBzdGFydF9pbmZvX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tLT5zdGFydF9pbmZvX3NlZy5wZm4pOwotICAgICAgICBpZiAo IHN0YXJ0X3BhZ2UgPT0gTlVMTCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIERPTVBSSU5URigi VW5hYmxlIHRvIG1hcCBIVk0gc3RhcnQgaW5mbyBwYWdlIik7Ci0gICAgICAgICAgICByZXR1cm4g LTE7Ci0gICAgICAgIH0KKyAgICBzdGFydF9pbmZvID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoeGNo LCBkb21pZCwgc3RhcnRfaW5mb19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb20tPnN0YXJ0X2luZm9fc2VnLnBmbik7CisgICAgaWYgKCBzdGFydF9p bmZvID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgRE9NUFJJTlRGKCJVbmFibGUgdG8gbWFwIEhW TSBzdGFydCBpbmZvIHBhZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgICAg ICBzdGFydF9pbmZvID0gc3RhcnRfcGFnZTsKKyAgICBtb2RsaXN0ID0gKHZvaWQqKShzdGFydF9p bmZvICsgMSkgKyBkb20tPmNtZGxpbmVfc2l6ZTsKIAorICAgIGlmICggIWRvbS0+ZGV2aWNlX21v ZGVsICkKKyAgICB7CiAgICAgICAgIGlmICggZG9tLT5jbWRsaW5lICkKICAgICAgICAgewotICAg ICAgICAgICAgY2hhciAqY21kbGluZSA9IHN0YXJ0X3BhZ2UgKyBzaXplb2YoKnN0YXJ0X2luZm8p OworICAgICAgICAgICAgY2hhciAqY21kbGluZSA9ICh2b2lkKikoc3RhcnRfaW5mbyArIDEpOwog CiAgICAgICAgICAgICBzdHJuY3B5KGNtZGxpbmUsIGRvbS0+Y21kbGluZSwgZG9tLT5jbWRsaW5l X3NpemUpOwogICAgICAgICAgICAgc3RhcnRfaW5mby0+Y21kbGluZV9wYWRkciA9IChkb20tPnN0 YXJ0X2luZm9fc2VnLnBmbiA8PCBQQUdFX1NISUZUKSArCkBAIC0xNzM0LDIyICsxNzkyLDMwIEBA IHN0YXRpYyBpbnQgYm9vdGxhdGVfaHZtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKIAogICAg ICAgICBpZiAoIGRvbS0+cmFtZGlza19ibG9iICkKICAgICAgICAgewotICAgICAgICAgICAgc3Ry dWN0IGh2bV9tb2RsaXN0X2VudHJ5ICptb2RsaXN0ID0KLSAgICAgICAgICAgICAgICBzdGFydF9w YWdlICsgc2l6ZW9mKCpzdGFydF9pbmZvKSArIGRvbS0+Y21kbGluZV9zaXplOwogCiAgICAgICAg ICAgICBtb2RsaXN0WzBdLnBhZGRyID0gZG9tLT5yYW1kaXNrX3NlZy52c3RhcnQgLSBkb20tPnBh cm1zLnZpcnRfYmFzZTsKICAgICAgICAgICAgIG1vZGxpc3RbMF0uc2l6ZSA9IGRvbS0+cmFtZGlz a19zZWcudmVuZCAtIGRvbS0+cmFtZGlza19zZWcudnN0YXJ0OwotICAgICAgICAgICAgc3RhcnRf aW5mby0+bW9kbGlzdF9wYWRkciA9IChkb20tPnN0YXJ0X2luZm9fc2VnLnBmbiA8PCBQQUdFX1NI SUZUKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludHB0cl90KW1vZGxp c3QgLSAodWludHB0cl90KXN0YXJ0X2luZm8pOwogICAgICAgICAgICAgc3RhcnRfaW5mby0+bnJf bW9kdWxlcyA9IDE7CiAgICAgICAgIH0KLQotICAgICAgICBzdGFydF9pbmZvLT5tYWdpYyA9IFhF Tl9IVk1fU1RBUlRfTUFHSUNfVkFMVUU7Ci0KLSAgICAgICAgbXVubWFwKHN0YXJ0X3BhZ2UsIHN0 YXJ0X2luZm9fc2l6ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CisgICAgICAgIGFkZF9tb2R1 bGVfdG9fbGlzdChkb20sICZkb20tPnN5c3RlbV9maXJtd2FyZV9tb2R1bGUsICJmaXJtd2FyZSIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RsaXN0LCBzdGFydF9pbmZvKTsKKyAgICB9 CisKKyAgICBpZiAoIHN0YXJ0X2luZm8tPm5yX21vZHVsZXMgKQorICAgIHsKKyAgICAgICAgc3Rh cnRfaW5mby0+bW9kbGlzdF9wYWRkciA9IChkb20tPnN0YXJ0X2luZm9fc2VnLnBmbiA8PCBQQUdF X1NISUZUKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50cHRyX3QpbW9kbGlz dCAtICh1aW50cHRyX3Qpc3RhcnRfaW5mbyk7CisgICAgfQorCisgICAgc3RhcnRfaW5mby0+bWFn aWMgPSBYRU5fSFZNX1NUQVJUX01BR0lDX1ZBTFVFOworCisgICAgbXVubWFwKHN0YXJ0X2luZm8s IHN0YXJ0X2luZm9fc2l6ZSk7CisKKyAgICBpZiAoIGRvbS0+ZGV2aWNlX21vZGVsICkKKyAgICB7 CiAgICAgICAgIHZvaWQgKmh2bV9pbmZvX3BhZ2U7CiAKICAgICAgICAgaWYgKCAoaHZtX2luZm9f cGFnZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKAotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK