From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergej Proskurin Subject: [PATCH 6/8] arm/mem_access: Add long-descriptor based gpt Date: Thu, 1 Jun 2017 17:19:04 +0200 Message-ID: <20170601151906.10213-15-proskurin@sec.in.tum.de> References: <20170601151906.10213-1-proskurin@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dGRtF-0005TY-Fq for xen-devel@lists.xenproject.org; Thu, 01 Jun 2017 15:19:57 +0000 In-Reply-To: <20170601151906.10213-1-proskurin@sec.in.tum.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Sergej Proskurin , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhpcyBjb21taXQgYWRkcyBmdW5jdGlvbmFsaXR5IHRvIHdhbGsgdGhlIGd1ZXN0J3MgcGFnZSB0 YWJsZXMgdXNpbmcgdGhlCmxvbmctZGVzY3JpcHRvciB0cmFuc2xhdGlvbiB0YWJsZSBmb3JtYXQg Zm9yIGJvdGggQVJNdjcgYW5kIEFSTXY4LgpTaW1pbGFyIHRvIHRoZSBoYXJkd2FyZSBhcmNoaXRl Y3R1cmUsIHRoZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cwpkaWZmZXJlbnQgcGFnZSBncmFudWxh cml0aWVzICg0SywgMTZLLCBhbmQgNjRLKS4gVGhlIGltcGxlbWVudGF0aW9uIGlzCmJhc2VkIG9u IEFSTSBEREkgMDQ4N0EtZyBKMTEtNTYwOCwgSjExLTU2NzksIGFuZCBBUk0gRERJIDA0MDZDLWIK QjMtMTUxMC4KCk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBsYWNrcyBzdXBw b3J0IGZvciAzMi1iaXQgRUwwCnJ1bm5pbmcgb24gdG9wIG9mIDY0LWJpdCBFTDEuIFRoZSBhc3Nv Y2lhdGVkIGxvY2F0aW9uIGluIHRoZSBjb2RlIGlzCm1hcmtlZCBhcHByb3ByaWF0ZWx5LgoKU2ln bmVkLW9mZi1ieTogU2VyZ2VqIFByb3NrdXJpbiA8cHJvc2t1cmluQHNlYy5pbi50dW0uZGU+Ci0t LQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogSnVs aWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KLS0tCnYyOiBVc2UgVENSX1NaX01BU0sg aW5zdGVhZCBvZiBUVEJDUl9TWl9NQVNLIGZvciBBUk0gMzItYml0IGd1ZXN0cyB1c2luZwogICAg dGhlIGxvbmctZGVzY3JpcHRvciB0cmFuc2xhdGlvbiB0YWJsZSBmb3JtYXQuCgogICAgQ29zbWV0 aWMgZml4ZXMuCi0tLQogeGVuL2FyY2gvYXJtL3AybS5jIHwgMjcxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMjY5 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L3AybS5jIGIveGVuL2FyY2gvYXJtL3AybS5jCmluZGV4IDAzMzdkODM1ODEuLmVhM2JlNmYwNTAg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9wMm0uYworKysgYi94ZW4vYXJjaC9hcm0vcDJtLmMK QEAgLTE1NzMsOCArMTU3MywyNzUgQEAgc3RhdGljIGludCBfX3AybV93YWxrX2dwdF9sZChzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWRkcl90 IGd2YSwgcGFkZHJfdCAqaXBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKnBlcm1fcm8pCiB7Ci0gICAgLyogTm90IGltcGxlbWVudGVkIHlldC4gKi8KLSAgICBy ZXR1cm4gLUVGQVVMVDsKKyAgICBpbnQgdDBfc3osIHQxX3N6LCBkaXNhYmxlZCA9IDE7CisgICAg dW5zaWduZWQgaW50IGxldmVsLCBncmFuOworICAgIHVuc2lnbmVkIGludCB0b3BiaXQgPSAwLCBp bnB1dF9zaXplID0gMCwgb3V0cHV0X3NpemU7CisgICAgdWludDY0X3QgdHRiciA9IDAsIGlwczsK KyAgICBwYWRkcl90IG1hc2s7CisgICAgbHBhZV90IHB0ZSwgKnRhYmxlOworICAgIHN0cnVjdCBw YWdlX2luZm8gKnBhZ2U7CisgICAgcmVnaXN0ZXJfdCB0Y3IgPSBSRUFEX1NZU1JFRyhUQ1JfRUwx KTsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gcDJtLT5kb21haW47CisKKyAgICBjb25zdCB2YWRk cl90IG9mZnNldHNbNF1bM10gPSB7CisgICAgICAgIHsKKyNpZmRlZiBDT05GSUdfQVJNXzY0Cisg ICAgICAgICAgICB6ZXJvZXRoX2d1ZXN0X3RhYmxlX29mZnNldF80ayhndmEpLAorICAgICAgICAg ICAgemVyb2V0aF9ndWVzdF90YWJsZV9vZmZzZXRfMTZrKGd2YSksCisgICAgICAgICAgICAwLCAv KiBUaGVyZSBpcyBubyB6ZXJvZXRoIGxvb2t1cCBsZXZlbCB3aXRoIGEgNjRLIGdyYW51bGUgc2l6 ZS4gKi8KKyNlbmRpZgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBmaXJzdF9n dWVzdF90YWJsZV9vZmZzZXRfNGsoZ3ZhKSwKKyNpZmRlZiBDT05GSUdfQVJNXzY0CisgICAgICAg ICAgICBmaXJzdF9ndWVzdF90YWJsZV9vZmZzZXRfMTZrKGd2YSksCisgICAgICAgICAgICBmaXJz dF9ndWVzdF90YWJsZV9vZmZzZXRfNjRrKGd2YSksCisjZW5kaWYKKyAgICAgICAgfSwKKyAgICAg ICAgeworICAgICAgICAgICAgc2Vjb25kX2d1ZXN0X3RhYmxlX29mZnNldF80ayhndmEpLAorI2lm ZGVmIENPTkZJR19BUk1fNjQKKyAgICAgICAgICAgIHNlY29uZF9ndWVzdF90YWJsZV9vZmZzZXRf MTZrKGd2YSksCisgICAgICAgICAgICBzZWNvbmRfZ3Vlc3RfdGFibGVfb2Zmc2V0XzY0ayhndmEp LAorI2VuZGlmCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXJkX2d1ZXN0 X3RhYmxlX29mZnNldF80ayhndmEpLAorI2lmZGVmIENPTkZJR19BUk1fNjQKKyAgICAgICAgICAg IHRoaXJkX2d1ZXN0X3RhYmxlX29mZnNldF8xNmsoZ3ZhKSwKKyAgICAgICAgICAgIHRoaXJkX2d1 ZXN0X3RhYmxlX29mZnNldF82NGsoZ3ZhKSwKKyNlbmRpZgorICAgICAgICB9CisgICAgfTsKKwor ICAgIGNvbnN0IHBhZGRyX3QgbWFza3NbNF1bM10gPSB7CisgICAgICAgIHsKKyAgICAgICAgICAg IFpFUk9FVEhfU0laRV80SyAtIDEsCisgICAgICAgICAgICBaRVJPRVRIX1NJWkVfMTZLIC0gMSwK KyAgICAgICAgICAgIDAgLyogVGhlcmUgaXMgbm8gemVyb2V0aCBsb29rdXAgbGV2ZWwgd2l0aCBh IDY0SyBncmFudWxlIHNpemUuICovCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg IEZJUlNUX1NJWkVfNEsgLSAxLAorICAgICAgICAgICAgRklSU1RfU0laRV8xNksgLSAxLAorICAg ICAgICAgICAgRklSU1RfU0laRV82NEsgLSAxCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg ICAgICAgIFNFQ09ORF9TSVpFXzRLIC0gMSwKKyAgICAgICAgICAgIFNFQ09ORF9TSVpFXzE2SyAt IDEsCisgICAgICAgICAgICBTRUNPTkRfU0laRV82NEsgLSAxCisgICAgICAgIH0sCisgICAgICAg IHsKKyAgICAgICAgICAgIFRISVJEX1NJWkVfNEsgLSAxLAorICAgICAgICAgICAgVEhJUkRfU0la RV8xNksgLSAxLAorICAgICAgICAgICAgVEhJUkRfU0laRV82NEsgLSAxCisgICAgICAgIH0KKyAg ICB9OworCisgICAgY29uc3QgdW5zaWduZWQgaW50IGdyYWluc2l6ZXNbM10gPSB7CisgICAgICAg IFBBR0VfU0hJRlRfNEssCisgICAgICAgIFBBR0VfU0hJRlRfMTZLLAorICAgICAgICBQQUdFX1NI SUZUXzY0SworICAgIH07CisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3RyaWRlc1szXSA9IHsK KyAgICAgICAgTFBBRV9TSElGVF80SywKKyAgICAgICAgTFBBRV9TSElGVF8xNkssCisgICAgICAg IExQQUVfU0hJRlRfNjRLCisgICAgfTsKKworICAgIHQwX3N6ID0gKHRjciA+PiBUQ1JfVDBTWl9T SElGVCkgJiBUQ1JfU1pfTUFTSzsKKyAgICB0MV9zeiA9ICh0Y3IgPj4gVENSX1QxU1pfU0hJRlQp ICYgVENSX1NaX01BU0s7CisKKyAgICAvKgorICAgICAqIEdldCB0aGUgTVNCIG51bWJlciBvZiB0 aGUgZ3ZhLCBhY2NvcmRpbmcgdG8gIkFkZHJUb3AiIHBzZXVkb2NvZGUKKyAgICAgKiBpbXBsZW1l bnRhdGlvbiBpbiBBUk0gRERJIDA0ODdBLWcgSjExLTU3MzkuCisgICAgICoKKyAgICAgKiBYWFg6 IFdlIGRvIG5vdCBjaGVjayB3aGV0aGVyIHRoZSA2NGJpdCBkb21haW4gdXNlcyBhIDMyLWJpdCBF TDAuIEluIHRoaXMKKyAgICAgKiBjYXNlLCB3ZSBuZWVkIHRvIHNldCB0b3BiaXQgdG8gMzEsIGFz IHdlbGwuCisgICAgICovCisgICAgaWYgKCBpc18zMmJpdF9kb21haW4oZCkgKQorICAgICAgICB0 b3BiaXQgPSBUQ1JfVEJfMzE7CisjaWZkZWYgQ09ORklHX0FSTV82NAorICAgIGVsc2UgaWYgKCBp c182NGJpdF9kb21haW4oZCkgKQorICAgIHsKKyAgICAgICAgaWYgKCAoKGd2YSAmICgxVUwgPDwg VENSX1RCXzU1KSkgJiYgKHRjciAmIFRDUl9UQkkxKSkgfHwKKyAgICAgICAgICAgICAoIShndmEg JiAoMVVMIDw8IFRDUl9UQl81NSkpICYmICh0Y3IgJiBUQ1JfVEJJMCkpICkKKyAgICAgICAgICAg IHRvcGJpdCA9IFRDUl9UQl81NTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG9wYml0ID0g VENSX1RCXzYzOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0FSTV82NAorICAgIGlm ICggaXNfNjRiaXRfZG9tYWluKGQpICkKKyAgICB7CisgICAgICAgIGlmICggKGd2YSAmICgxVUwg PDwgdG9wYml0KSkgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0X3NpemUgPSBS RUdJU1RFUl9XSURUSF82NF9CSVQgLSB0MF9zejsKKworICAgICAgICAgICAgaWYgKCBpbnB1dF9z aXplID4gSVBTX01BWCApCisgICAgICAgICAgICAgICAgLyogV2UgbGltaXQgdGhlIGlucHV0X3Np emUgdG8gYmUgbWF4IDQ4IGJpdC4gKi8KKyAgICAgICAgICAgICAgICBpbnB1dF9zaXplID0gSVBT X01BWDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCBpbnB1dF9zaXplIDwgSVBTX01JTiApCisgICAg ICAgICAgICAgICAgLyogV2UgbGltaXQgdGhlIGlucHV0X3NpemUgdG8gYmUgbWF4IDI1IGJpdC4g Ki8KKyAgICAgICAgICAgICAgICBpbnB1dF9zaXplID0gSVBTX01JTjsKKworICAgICAgICAgICAg LyogTm9ybWFsaXplIGdyYW51bGUgc2l6ZS4gKi8KKyAgICAgICAgICAgIHN3aXRjaCAoIHRjciAm IFRDUl9URzBfTUFTSyApIHsKKyAgICAgICAgICAgIGNhc2UgVENSX1RHMF8xNks6CisgICAgICAg ICAgICAgICAgZ3JhbiA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj YXNlIFRDUl9URzBfNjRLOgorICAgICAgICAgICAgICAgIGdyYW4gPSAyOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBncmFuID0g MDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogVXNlIFRUQlIwIGZvciBHVkEgdG8g SVBBIHRyYW5zbGF0aW9uLiAqLworICAgICAgICAgICAgdHRiciA9IFJFQURfU1lTUkVHNjQoVFRC UjBfRUwxKTsKKworICAgICAgICAgICAgLyogSWYgVENSLkVQRDAgaXMgc2V0LCB0cmFuc2xhdGlv bnMgdXNpbmcgVFRCUjAgYXJlIGRpc2FibGVkLiAqLworICAgICAgICAgICAgZGlzYWJsZWQgPSAo IHRjciAmIFRDUl9FUEQwICkgPyAxIDogMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg ICAgIHsKKyAgICAgICAgICAgIGlucHV0X3NpemUgPSBSRUdJU1RFUl9XSURUSF82NF9CSVQgLSB0 MV9zejsKKworICAgICAgICAgICAgaWYgKCBpbnB1dF9zaXplID4gSVBTX01BWCApCisgICAgICAg ICAgICAgICAgLyogV2UgbGltaXQgdGhlIGlucHV0X3NpemUgdG8gYmUgbWF4IDQ4IGJpdC4gKi8K KyAgICAgICAgICAgICAgICBpbnB1dF9zaXplID0gSVBTX01BWDsKKyAgICAgICAgICAgIGVsc2Ug aWYgKCBpbnB1dF9zaXplIDwgSVBTX01JTiApCisgICAgICAgICAgICAgICAgLyogV2UgbGltaXQg dGhlIGlucHV0X3NpemUgdG8gYmUgbWF4IDI1IGJpdC4gKi8KKyAgICAgICAgICAgICAgICBpbnB1 dF9zaXplID0gSVBTX01JTjsKKworICAgICAgICAgICAgLyogTm9ybWFsaXplIGdyYW51bGUgc2l6 ZS4gKi8KKyAgICAgICAgICAgIHN3aXRjaCAoIHRjciAmIFRDUl9URzFfTUFTSyApIHsKKyAgICAg ICAgICAgIGNhc2UgVENSX1RHMV8xNks6CisgICAgICAgICAgICAgICAgZ3JhbiA9IDE7CisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRDUl9URzFfNjRLOgorICAgICAg ICAgICAgICAgIGdyYW4gPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBncmFuID0gMDsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgLyogVXNlIFRUQlIxIGZvciBHVkEgdG8gSVBBIHRyYW5zbGF0aW9uLiAqLworICAg ICAgICAgICAgdHRiciA9IFJFQURfU1lTUkVHNjQoVFRCUjFfRUwxKTsKKworICAgICAgICAgICAg LyogSWYgVENSLkVQRDEgaXMgc2V0LCB0cmFuc2xhdGlvbnMgdXNpbmcgVFRCUjEgYXJlIGRpc2Fi bGVkLiAqLworICAgICAgICAgICAgZGlzYWJsZWQgPSAoIHRjciAmIFRDUl9FUEQxICkgPyAxIDog MDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAgIC8q IEdyYW51bGUgc2l6ZSBvZiBBYXJjaDMyIG9yIEFSTXY3IGFyY2hpdGVjdHVyZXMgaXMgYWx3YXlz IDRLLCBpbmRleGVkIGJ5IDAuICovCisgICAgICAgIGdyYW4gPSAwOworCisgICAgICAgIG1hc2sg PSAoKDFVTEwgPDwgUkVHSVNURVJfV0lEVEhfMzJfQklUKSAtIDEpICYKKyAgICAgICAgICAgICAg IH4oKDFVTEwgPDwgKFJFR0lTVEVSX1dJRFRIXzMyX0JJVCAtIHQwX3N6KSkgLSAxKTsKKworICAg ICAgICBpZiAoIHQwX3N6ID09IDAgfHwgIShndmEgJiBtYXNrKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGlucHV0X3NpemUgPSBSRUdJU1RFUl9XSURUSF8zMl9CSVQgLSB0MF9zejsKKworICAg ICAgICAgICAgLyogVXNlIFRUQlIwIGZvciBHVkEgdG8gSVBBIHRyYW5zbGF0aW9uLiAqLworICAg ICAgICAgICAgdHRiciA9IFJFQURfU1lTUkVHNjQoVFRCUjBfRUwxKTsKKworICAgICAgICAgICAg LyogSWYgVENSLkVQRDAgaXMgc2V0LCB0cmFuc2xhdGlvbnMgdXNpbmcgVFRCUjAgYXJlIGRpc2Fi bGVkLiAqLworICAgICAgICAgICAgZGlzYWJsZWQgPSAoIHRjciAmIFRDUl9FUEQwICkgPyAxIDog MDsKKyAgICAgICAgfQorCisgICAgICAgIG1hc2sgPSAoKDFVTEwgPDwgUkVHSVNURVJfV0lEVEhf MzJfQklUKSAtIDEpICYKKyAgICAgICAgICAgICAgIH4oKDFVTEwgPDwgKFJFR0lTVEVSX1dJRFRI XzMyX0JJVCAtIHQxX3N6KSkgLSAxKTsKKworICAgICAgICBpZiAoICgodDFfc3ogPT0gMCkgJiYg IXR0YnIpIHx8ICh0MV9zeiAmJiAoZ3ZhICYgbWFzaykgPT0gbWFzaykgKQorICAgICAgICB7Cisg ICAgICAgICAgICBpbnB1dF9zaXplID0gUkVHSVNURVJfV0lEVEhfMzJfQklUIC0gdDFfc3o7CisK KyAgICAgICAgICAgIC8qIFVzZSBUVEJSMSBmb3IgR1ZBIHRvIElQQSB0cmFuc2xhdGlvbi4gKi8K KyAgICAgICAgICAgIHR0YnIgPSBSRUFEX1NZU1JFRzY0KFRUQlIxX0VMMSk7CisKKyAgICAgICAg ICAgIC8qIElmIFRDUi5FUEQxIGlzIHNldCwgdHJhbnNsYXRpb25zIHVzaW5nIFRUQlIxIGFyZSBk aXNhYmxlZC4gKi8KKyAgICAgICAgICAgIGRpc2FibGVkID0gKCB0Y3IgJiBUQ1JfRVBEMSApID8g MSA6IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIGRpc2FibGVkICkKKyAgICAgICAg cmV0dXJuIC1FRkFVTFQ7CisKKyAgICBsZXZlbCA9IDQgLSBESVZfUk9VTkRfVVAoKGlucHV0X3Np emUgLSBncmFpbnNpemVzW2dyYW5dKSwgc3RyaWRlc1tncmFuXSk7CisKKyAgICAvKiBYWFg6IFdl IGRvIG5vdCBjb25zaWRlciAzMmJpdCBFTDAgcnVubmluZyBvbiBBYXJjaDY0LCB5ZXQuICovCisg ICAgaWYgKCBpc182NGJpdF9kb21haW4oZCkgKQorICAgIHsKKyAgICAgICAgLyogR2V0IHRoZSBp bnRlcm1lZGlhdGUgcGh5c2ljYWwgYWRkcmVzcyBzaXplLiAqLworICAgICAgICBpcHMgPSAodGNy ICYgVENSX0lQU19NQVNLKSA+PiBUQ1JfSVBTX1NISUZUOworCisgICAgICAgIHN3aXRjaCAoaXBz KSB7CisgICAgICAgIGNhc2UgVENSX0lQU18zMl9CSVQ6CisgICAgICAgICAgICBvdXRwdXRfc2l6 ZSA9IElQU18zMl9CSVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUQ1JfSVBT XzM2X0JJVDoKKyAgICAgICAgICAgIG91dHB1dF9zaXplID0gSVBTXzM2X0JJVDsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRDUl9JUFNfNDBfQklUOgorICAgICAgICAgICAgb3V0 cHV0X3NpemUgPSBJUFNfNDBfQklUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug VENSX0lQU180Ml9CSVQ6CisgICAgICAgICAgICBvdXRwdXRfc2l6ZSA9IElQU180Ml9CSVQ7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUQ1JfSVBTXzQ0X0JJVDoKKyAgICAgICAg ICAgIG91dHB1dF9zaXplID0gSVBTXzQ0X0JJVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlIFRDUl9JUFNfNDhfQklUOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgb3V0 cHV0X3NpemUgPSBJUFNfNDhfQklUOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAg ICAgb3V0cHV0X3NpemUgPSBJUFNfNDBfQklUOworCisgICAgLyogTWFrZSBzdXJlIHRoZSBiYXNl IGFkZHJlc3MgZG9lcyBub3QgZXhjZWVkIGl0cyBjb25maWd1cmVkIHNpemUuICovCisgICAgbWFz ayA9ICgoMVVMTCA8PCBJUFNfNDhfQklUKSAtIDEpICYgfigoMVVMTCA8PCBvdXRwdXRfc2l6ZSkg LSAxKTsKKyAgICBpZiAoIG91dHB1dF9zaXplICE9IElQU180OF9CSVQgJiYgKHR0YnIgJiBtYXNr KSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgbWFzayA9ICgoMVVMTCA8PCBvdXRw dXRfc2l6ZSkgLSAxKTsKKyAgICBwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgcGFkZHJfdG9f cGZuKHR0YnIgJiBtYXNrKSwgTlVMTCwgUDJNX0FMTE9DKTsKKyAgICBpZiAoICFwYWdlICkKKyAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICB0YWJsZSA9IF9fbWFwX2RvbWFpbl9wYWdlKHBh Z2UpOworCisgICAgZm9yICggOyA7IGxldmVsKysgKQorICAgIHsKKyAgICAgICAgcHRlID0gdGFi bGVbb2Zmc2V0c1tsZXZlbF1bZ3Jhbl1dOworCisgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHRh YmxlKTsKKyAgICAgICAgcHV0X3BhZ2UocGFnZSk7CisKKyAgICAgICAgaWYgKCBsZXZlbCA9PSAz IHx8ICFwdGUud2Fsay52YWxpZCB8fCAhcHRlLndhbGsudGFibGUgKQorICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIHB0ZS53YWxrLmJhc2Us IE5VTEwsIFAyTV9BTExPQyk7CisgICAgICAgIGlmICggIXBhZ2UgKQorICAgICAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CisKKyAgICAgICAgdGFibGUgPSBfX21hcF9kb21haW5fcGFnZShwYWdlKTsK KyAgICB9CisKKyAgICBpZiAoICFwdGUud2Fsay52YWxpZCB8fCAoKGxldmVsID09IDMpICYgIXB0 ZS53YWxrLnRhYmxlKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgKmlwYSA9IHBm bl90b19wYWRkcihwdGUud2Fsay5iYXNlKSB8IChndmEgJiBtYXNrc1tsZXZlbF1bZ3Jhbl0pOwor CisgICAgKnBlcm1fcm8gPSBwdGUucHQucm87CisKKyAgICAvKiBSZXR1cm4gdGhlIGVudGlyZSBw dGUgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiBjaGVjayBmbGFncyBieSBoZXJzZWxmLiAqLworICAg IHJldHVybiAwOwogfQogCiBpbnQgcDJtX3dhbGtfZ3B0KHN0cnVjdCBwMm1fZG9tYWluICpwMm0s IHZhZGRyX3QgZ3ZhLAotLSAKMi4xMi4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==