From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PATCH v3 02/16] libxc: Load BIOS and ACPI table into guest memory Date: Thu, 25 Feb 2016 14:56:00 +0000 Message-ID: <1456412174-20162-3-git-send-email-anthony.perard@citrix.com> References: <1456412174-20162-1-git-send-email-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456412174-20162-1-git-send-email-anthony.perard@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.xen.org Cc: Anthony PERARD , Wei Liu , Ian Jackson , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhpcyBhZGRzIHR3byBuZXcgZmlybXdhcmUgbW9kdWxlLCBiaW9zX21vZHVsZSBhbmQgZnVsbF9h Y3BpX21vZHVsZS4gVGhleQphcmUgbG9hZGVkIGluIHRoZSBndWVzdCBtZW1vcnkgYW5kIGZpbmFs IGxvY2F0aW9uIGlzIHByb3ZpZGVkIHRvIGh2bWxvYWRlcgp2aWEgdGhlIGh2bV9zdGFydF9pbmZv IHN0cnVjdC4KClRoaXMgcGF0Y2ggY3JlYXRlIHRoZSBodm1fc3RhcnRfaW5mbyBzdHJ1Y3QgZm9y IEhWTSBndWVzdCB0aGF0IGhhdmUgYQpkZXZpY2UgbW9kZWwsIHNvIHRoaXMgaXMgbm93IGNvbW1v biBjb2RlIHdpdGggSFZNIGd1ZXN0IHdpdGhvdXQgZGV2aWNlCm1vZGVsLgoKU2lnbmVkLW9mZi1i eTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2Ug aW4gVjM6Ci0gcmVuYW1lIGFjcGlfdGFibGVfbW9kdWxlIHRvIGZ1bGxfYWNwaV9tb2R1bGUuCi0g ZmFjdG9yaXNlIG1vZHVsZSBsb2FkaW5nLCB1c2luZyBuZXcgZnVuY3Rpb24gdG8gbG9hZCBleGlz dGluZyBvcHRpbmFsCiAgbW9kdWxlLCB0aGlzIHNob3VsZCBub3QgY2hhbmdlIGFueXRoaW5nCi0g c2hvdWxkIG5vdyB1c2UgdGhlIHNhbWUgY29kZSB0byBsb2FkcyBtb2R1bGVzIGFzIGZvciBIVk1s aXRlIFZNcy4KICB0aGlzIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGNvZGUuCi0gbm8gbW9yZSBnZW5l cmljIGNtZGxpbmUgd2l0aCBhIGxpc3Qgb2YgbW9kdWxlcywgZWFjaCBtb2R1bGUgaGF2ZSBpdHMg bmFtZQogIGluIHRoZSBtb2R1bGUgc3BlY2lmaWMgY21kbGluZS4KLSBzY29wZSBjaGFuZ2UgZm9y IGNvbW1vbiBjb2RlIGJldHdlZW4gaHZtbGl0ZSBhbmQgaHZtbG9hZGVyCi0tLQogdG9vbHMvbGli eGMvaW5jbHVkZS94Y19kb20uaCAgIHwgICA0ICsrCiB0b29scy9saWJ4Yy94Y19kb21faHZtbG9h ZGVyLmMgfCAgIDQgKysKIHRvb2xzL2xpYnhjL3hjX2RvbV94ODYuYyAgICAgICB8IDEzMCArKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA5 NiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4 Yy9pbmNsdWRlL3hjX2RvbS5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaAppbmRleCA2 ZWJlOTQ2Li43ZGMzZmU3IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5o CisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKQEAgLTIwOSw2ICsyMDksMTAgQEAg c3RydWN0IHhjX2RvbV9pbWFnZSB7CiAgICAgLyogSWYgdW5zZXQgZGlzYWJsZXMgdGhlIHNldHVw IG9mIHRoZSBJT1JFUSBwYWdlcy4gKi8KICAgICBib29sIGRldmljZV9tb2RlbDsKIAorICAgIC8q IEJJT1MgYW5kIEFDUEkgdGFibGVzIHBhc3NlZCB0byBIVk1MT0FERVIgKi8KKyAgICBzdHJ1Y3Qg eGNfaHZtX2Zpcm13YXJlX21vZHVsZSBiaW9zX21vZHVsZTsKKyAgICBzdHJ1Y3QgeGNfaHZtX2Zp cm13YXJlX21vZHVsZSBmdWxsX2FjcGlfbW9kdWxlOworCiAgICAgLyogRXh0cmEgQUNQSSB0YWJs ZXMgcGFzc2VkIHRvIEhWTUxPQURFUiAqLwogICAgIHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9k dWxlIGFjcGlfbW9kdWxlOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19kb21faHZtbG9h ZGVyLmMgYi90b29scy9saWJ4Yy94Y19kb21faHZtbG9hZGVyLmMKaW5kZXggNTRlMDk2Yy4uMmM5 NjVjOSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2h2bWxvYWRlci5jCisrKyBiL3Rv b2xzL2xpYnhjL3hjX2RvbV9odm1sb2FkZXIuYwpAQCAtMTYwLDYgKzE2MCwxMCBAQCBzdGF0aWMg aW50IG1vZHVsZXNfaW5pdChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgaW50IHJj OwogCisgICAgcmMgPSBtb2R1bGVfaW5pdF9vbmUoZG9tLCAmZG9tLT5iaW9zX21vZHVsZSwgImJp b3MgbW9kdWxlIik7CisgICAgaWYgKCByYyApIGdvdG8gZXJyOworICAgIHJjID0gbW9kdWxlX2lu aXRfb25lKGRvbSwgJmRvbS0+ZnVsbF9hY3BpX21vZHVsZSwgImFjcGkgdGFibGUgbW9kdWxlIik7 CisgICAgaWYgKCByYyApIGdvdG8gZXJyOwogICAgIHJjID0gbW9kdWxlX2luaXRfb25lKGRvbSwg JmRvbS0+YWNwaV9tb2R1bGUsICJhY3BpIG1vZHVsZSIpOwogICAgIGlmICggcmMgKSBnb3RvIGVy cjsKICAgICByYyA9IG1vZHVsZV9pbml0X29uZShkb20sICZkb20tPnNtYmlvc19tb2R1bGUsICJz bWJpb3MgbW9kdWxlIik7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19kb21feDg2LmMgYi90 b29scy9saWJ4Yy94Y19kb21feDg2LmMKaW5kZXggZTEzYTRhYS4uMmI0OTQ2YyAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYu YwpAQCAtNjksNiArNjksOCBAQAogI2RlZmluZSByb3VuZF91cChhZGRyLCBtYXNrKSAgICAgKChh ZGRyKSB8IChtYXNrKSkKICNkZWZpbmUgcm91bmRfcGdfdXAoYWRkcikgICgoKGFkZHIpICsgUEFH RV9TSVpFX1g4NiAtIDEpICYgfihQQUdFX1NJWkVfWDg2IC0gMSkpCiAKKyNkZWZpbmUgSFZNTE9B REVSX01PRFVMRV9NQVhfQ09VTlQgMgorCiBzdHJ1Y3QgeGNfZG9tX3BhcmFtcyB7CiAgICAgdW5z aWduZWQgbGV2ZWxzOwogICAgIHhlbl92YWRkcl90IHZhZGRyX21hc2s7CkBAIC01OTAsNiArNTky LDcgQEAgc3RhdGljIGludCBhbGxvY19tYWdpY19wYWdlc19odm0oc3RydWN0IHhjX2RvbV9pbWFn ZSAqZG9tKQogICAgIHhlbl9wZm5fdCBzcGVjaWFsX2FycmF5W1g4Nl9IVk1fTlJfU1BFQ0lBTF9Q QUdFU107CiAgICAgeGVuX3Bmbl90IGlvcmVxX3NlcnZlcl9hcnJheVtOUl9JT1JFUV9TRVJWRVJf UEFHRVNdOwogICAgIHhjX2ludGVyZmFjZSAqeGNoID0gZG9tLT54Y2g7CisgICAgc2l6ZV90IHN0 YXJ0X2luZm9fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8pOwogCiAgICAgLyog QWxsb2NhdGUgYW5kIGNsZWFyIHNwZWNpYWwgcGFnZXMuICovCiAgICAgZm9yICggaSA9IDA7IGkg PCBYODZfSFZNX05SX1NQRUNJQUxfUEFHRVM7IGkrKyApCkBAIC02MjQsOCArNjI3LDYgQEAgc3Rh dGljIGludCBhbGxvY19tYWdpY19wYWdlc19odm0oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQog CiAgICAgaWYgKCAhZG9tLT5kZXZpY2VfbW9kZWwgKQogICAgIHsKLSAgICAgICAgc2l6ZV90IHN0 YXJ0X2luZm9fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8pOwotCiAgICAgICAg IGlmICggZG9tLT5jbWRsaW5lICkKICAgICAgICAgewogICAgICAgICAgICAgZG9tLT5jbWRsaW5l X3NpemUgPSBST1VORFVQKHN0cmxlbihkb20tPmNtZGxpbmUpICsgMSwgOCk7CkBAIC02MzUsMTcg KzYzNiwyNSBAQCBzdGF0aWMgaW50IGFsbG9jX21hZ2ljX3BhZ2VzX2h2bShzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20pCiAgICAgICAgIC8qIExpbWl0ZWQgdG8gb25lIG1vZHVsZS4gKi8KICAgICAg ICAgaWYgKCBkb20tPnJhbWRpc2tfYmxvYiApCiAgICAgICAgICAgICBzdGFydF9pbmZvX3NpemUg Kz0gc2l6ZW9mKHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeSk7Ci0KLSAgICAgICAgcmMgPSB4Y19k b21fYWxsb2Nfc2VnbWVudChkb20sICZkb20tPnN0YXJ0X2luZm9fc2VnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJIVk1saXRlIHN0YXJ0IGluZm8iLCAwLCBzdGFydF9pbmZv X3NpemUpOwotICAgICAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBE T01QUklOVEYoIlVuYWJsZSB0byByZXNlcnZlIG1lbW9yeSBmb3IgdGhlIHN0YXJ0IGluZm8iKTsK LSAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7 CisgICAgICAgIHN0YXJ0X2luZm9fc2l6ZSArPQorICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBo dm1fbW9kbGlzdF9lbnRyeSkgKiBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VOVDsKKyAgICAgICAg LyogQWRkIGV4dHJhIHNwYWNlIHRvIHdyaXRlIG1vZHVsZXMgbmFtZSAqLworICAgICAgICBzdGFy dF9pbmZvX3NpemUgKz0gMTAgKiBIVk1MT0FERVJfTU9EVUxFX01BWF9DT1VOVDsKKyAgICB9CisK KyAgICByYyA9IHhjX2RvbV9hbGxvY19zZWdtZW50KGRvbSwgJmRvbS0+c3RhcnRfaW5mb19zZWcs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSFZNbGl0ZSBzdGFydCBpbmZvIiwgMCwg c3RhcnRfaW5mb19zaXplKTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgIHsKKyAgICAgICAgRE9N UFJJTlRGKCJVbmFibGUgdG8gcmVzZXJ2ZSBtZW1vcnkgZm9yIHRoZSBzdGFydCBpbmZvIik7Cisg ICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICggZG9tLT5kZXZpY2VfbW9kZWwgKQor ICAgIHsKICAgICAgICAgLyoKICAgICAgICAgICogQWxsb2NhdGUgYW5kIGNsZWFyIGFkZGl0aW9u YWwgaW9yZXEgc2VydmVyIHBhZ2VzLiBUaGUgZGVmYXVsdAogICAgICAgICAgKiBzZXJ2ZXIgd2ls bCB1c2UgdGhlIElPUkVRIGFuZCBCVUZJT1JFUSBzcGVjaWFsIHBhZ2VzIGFib3ZlLgpAQCAtMTY5 OSwzOSArMTcwOCw2NiBAQCBzdGF0aWMgaW50IGFsbG9jX3BndGFibGVzX2h2bShzdHJ1Y3QgeGNf ZG9tX2ltYWdlICpkb20pCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGFkZF9tb2R1 bGVfdG9fbGlzdChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHhjX2h2bV9maXJtd2FyZV9tb2R1bGUgKm1vZHVsZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1fbW9kbGlzdF9lbnRyeSAqbW9kbGlzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gKnN0YXJ0 X2luZm8pCit7CisgICAgdWludDMyX3QgaW5kZXggPSBzdGFydF9pbmZvLT5ucl9tb2R1bGVzOwor ICAgIGlmICggbW9kdWxlLT5sZW5ndGggPT0gMCApCisgICAgICAgIHJldHVybjsKKworICAgIGFz c2VydChzdGFydF9pbmZvLT5ucl9tb2R1bGVzIDwgSFZNTE9BREVSX01PRFVMRV9NQVhfQ09VTlQp OworICAgIGFzc2VydChzdHJubGVuKG5hbWUsIDEwKSA8IDEwKTsKKworICAgIG1vZGxpc3RbaW5k ZXhdLnBhZGRyID0gbW9kdWxlLT5ndWVzdF9hZGRyX291dDsKKyAgICBtb2RsaXN0W2luZGV4XS5z aXplID0gbW9kdWxlLT5sZW5ndGg7CisgICAgc3RybmNweSgoY2hhciopKG1vZGxpc3QgKyBIVk1M T0FERVJfTU9EVUxFX01BWF9DT1VOVCkgKyAxMCAqIGluZGV4LAorICAgICAgICAgICAgbmFtZSwg MTApOworICAgIG1vZGxpc3RbaW5kZXhdLmNtZGxpbmVfcGFkZHIgPQorICAgICAgICAoZG9tLT5z dGFydF9pbmZvX3NlZy5wZm4gPDwgUEFHRV9TSElGVCkgKworICAgICAgICAoKHVpbnRwdHJfdClt b2RsaXN0IC0gKHVpbnRwdHJfdClzdGFydF9pbmZvKSArCisgICAgICAgIHNpemVvZihzdHJ1Y3Qg aHZtX21vZGxpc3RfZW50cnkpICogSFZNTE9BREVSX01PRFVMRV9NQVhfQ09VTlQgKworICAgICAg ICAxMCAqIGluZGV4OworCisgICAgc3RhcnRfaW5mby0+bnJfbW9kdWxlcysrOworfQorCiBzdGF0 aWMgaW50IGJvb3RsYXRlX2h2bShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7CiAgICAgdWlu dDMyX3QgZG9taWQgPSBkb20tPmd1ZXN0X2RvbWlkOwogICAgIHhjX2ludGVyZmFjZSAqeGNoID0g ZG9tLT54Y2g7CisgICAgc3RydWN0IGh2bV9zdGFydF9pbmZvICpzdGFydF9pbmZvOworICAgIHNp emVfdCBzdGFydF9pbmZvX3NpemU7CisgICAgdm9pZCAqc3RhcnRfcGFnZTsKKyAgICBzdHJ1Y3Qg aHZtX21vZGxpc3RfZW50cnkgKm1vZGxpc3Q7CiAKLSAgICBpZiAoICFkb20tPmRldmljZV9tb2Rl bCApCi0gICAgewotICAgICAgICBzdHJ1Y3QgaHZtX3N0YXJ0X2luZm8gKnN0YXJ0X2luZm87Ci0g ICAgICAgIHNpemVfdCBzdGFydF9pbmZvX3NpemU7Ci0gICAgICAgIHZvaWQgKnN0YXJ0X3BhZ2U7 Ci0KLSAgICAgICAgc3RhcnRfaW5mb19zaXplID0gc2l6ZW9mKCpzdGFydF9pbmZvKSArIGRvbS0+ Y21kbGluZV9zaXplOwotICAgICAgICBpZiAoIGRvbS0+cmFtZGlza19ibG9iICkKLSAgICAgICAg ICAgIHN0YXJ0X2luZm9fc2l6ZSArPSBzaXplb2Yoc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5KTsK KyAgICBzdGFydF9pbmZvX3NpemUgPSBzaXplb2YoKnN0YXJ0X2luZm8pICsgZG9tLT5jbWRsaW5l X3NpemU7CisgICAgaWYgKCBkb20tPnJhbWRpc2tfYmxvYiApCisgICAgICAgIHN0YXJ0X2luZm9f c2l6ZSArPSBzaXplb2Yoc3RydWN0IGh2bV9tb2RsaXN0X2VudHJ5KTsKIAotICAgICAgICBpZiAo IHN0YXJ0X2luZm9fc2l6ZSA+Ci0gICAgICAgICAgICAgZG9tLT5zdGFydF9pbmZvX3NlZy5wYWdl cyA8PCBYQ19ET01fUEFHRV9TSElGVChkb20pICkKLSAgICAgICAgewotICAgICAgICAgICAgRE9N UFJJTlRGKCJUcnlpbmcgdG8gbWFwIGJleW9uZCBzdGFydF9pbmZvX3NlZyIpOwotICAgICAgICAg ICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgaWYgKCBzdGFydF9pbmZvX3NpemUgPgorICAg ICAgICAgZG9tLT5zdGFydF9pbmZvX3NlZy5wYWdlcyA8PCBYQ19ET01fUEFHRV9TSElGVChkb20p ICkKKyAgICB7CisgICAgICAgIERPTVBSSU5URigiVHJ5aW5nIHRvIG1hcCBiZXlvbmQgc3RhcnRf aW5mb19zZWciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgICAgICBzdGFydF9w YWdlID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoeGNoLCBkb21pZCwgc3RhcnRfaW5mb19zaXplLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJP VF9XUklURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+ c3RhcnRfaW5mb19zZWcucGZuKTsKLSAgICAgICAgaWYgKCBzdGFydF9wYWdlID09IE5VTEwgKQot ICAgICAgICB7Ci0gICAgICAgICAgICBET01QUklOVEYoIlVuYWJsZSB0byBtYXAgSFZNIHN0YXJ0 IGluZm8gcGFnZSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgc3Rh cnRfcGFnZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKHhjaCwgZG9taWQsIHN0YXJ0X2luZm9fc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJP VF9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLT5zdGFy dF9pbmZvX3NlZy5wZm4pOworICAgIGlmICggc3RhcnRfcGFnZSA9PSBOVUxMICkKKyAgICB7Cisg ICAgICAgIERPTVBSSU5URigiVW5hYmxlIHRvIG1hcCBIVk0gc3RhcnQgaW5mbyBwYWdlIik7Cisg ICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgICAgICAgc3RhcnRfaW5mbyA9IHN0YXJ0X3Bh Z2U7CisgICAgc3RhcnRfaW5mbyA9IHN0YXJ0X3BhZ2U7CisgICAgbW9kbGlzdCA9IHN0YXJ0X3Bh Z2UgKyBzaXplb2YoKnN0YXJ0X2luZm8pICsgZG9tLT5jbWRsaW5lX3NpemU7CiAKKyAgICBpZiAo ICFkb20tPmRldmljZV9tb2RlbCApCisgICAgewogICAgICAgICBpZiAoIGRvbS0+Y21kbGluZSAp CiAgICAgICAgIHsKICAgICAgICAgICAgIGNoYXIgKmNtZGxpbmUgPSBzdGFydF9wYWdlICsgc2l6 ZW9mKCpzdGFydF9pbmZvKTsKQEAgLTE3NDMsMjIgKzE3NzksMzIgQEAgc3RhdGljIGludCBib290 bGF0ZV9odm0oc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQogCiAgICAgICAgIGlmICggZG9tLT5y YW1kaXNrX2Jsb2IgKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgaHZtX21vZGxpc3Rf ZW50cnkgKm1vZGxpc3QgPQotICAgICAgICAgICAgICAgIHN0YXJ0X3BhZ2UgKyBzaXplb2YoKnN0 YXJ0X2luZm8pICsgZG9tLT5jbWRsaW5lX3NpemU7CiAKICAgICAgICAgICAgIG1vZGxpc3RbMF0u cGFkZHIgPSBkb20tPnJhbWRpc2tfc2VnLnZzdGFydCAtIGRvbS0+cGFybXMudmlydF9iYXNlOwog ICAgICAgICAgICAgbW9kbGlzdFswXS5zaXplID0gZG9tLT5yYW1kaXNrX3NlZy52ZW5kIC0gZG9t LT5yYW1kaXNrX3NlZy52c3RhcnQ7Ci0gICAgICAgICAgICBzdGFydF9pbmZvLT5tb2RsaXN0X3Bh ZGRyID0gKGRvbS0+c3RhcnRfaW5mb19zZWcucGZuIDw8IFBBR0VfU0hJRlQpICsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50cHRyX3QpbW9kbGlzdCAtICh1aW50cHRyX3Qp c3RhcnRfaW5mbyk7CiAgICAgICAgICAgICBzdGFydF9pbmZvLT5ucl9tb2R1bGVzID0gMTsKICAg ICAgICAgfQotCi0gICAgICAgIHN0YXJ0X2luZm8tPm1hZ2ljID0gWEVOX0hWTV9TVEFSVF9NQUdJ Q19WQUxVRTsKLQotICAgICAgICBtdW5tYXAoc3RhcnRfcGFnZSwgc3RhcnRfaW5mb19zaXplKTsK ICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAgICAgICAgYWRkX21vZHVsZV90b19saXN0KGRvbSwg JmRvbS0+Ymlvc19tb2R1bGUsICJiaW9zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v ZGxpc3QsIHN0YXJ0X2luZm8pOworICAgICAgICBhZGRfbW9kdWxlX3RvX2xpc3QoZG9tLCAmZG9t LT5mdWxsX2FjcGlfbW9kdWxlLCAiYWNwaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBt b2RsaXN0LCBzdGFydF9pbmZvKTsKKyAgICB9CisKKyAgICBpZiAoIHN0YXJ0X2luZm8tPm5yX21v ZHVsZXMgKQorICAgIHsKKyAgICAgICAgc3RhcnRfaW5mby0+bW9kbGlzdF9wYWRkciA9IChkb20t PnN0YXJ0X2luZm9fc2VnLnBmbiA8PCBQQUdFX1NISUZUKSArCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCh1aW50cHRyX3QpbW9kbGlzdCAtICh1aW50cHRyX3Qpc3RhcnRfaW5mbyk7Cisg ICAgfQorCisgICAgc3RhcnRfaW5mby0+bWFnaWMgPSBYRU5fSFZNX1NUQVJUX01BR0lDX1ZBTFVF OworCisgICAgbXVubWFwKHN0YXJ0X3BhZ2UsIHN0YXJ0X2luZm9fc2l6ZSk7CisKKyAgICBpZiAo IGRvbS0+ZGV2aWNlX21vZGVsICkKKyAgICB7CiAgICAgICAgIHZvaWQgKmh2bV9pbmZvX3BhZ2U7 CiAKICAgICAgICAgaWYgKCAoaHZtX2luZm9fcGFnZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKAot LSAKQW50aG9ueSBQRVJBUkQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=