From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v2 14/27] ARM: vGICv3: introduce basic ITS emulation bits Date: Thu, 16 Mar 2017 11:20:17 +0000 Message-ID: <20170316112030.20419-15-andre.przywara@arm.com> References: <20170316112030.20419-1-andre.przywara@arm.com> 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 1coTQz-0007tR-CX for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:19:09 +0000 In-Reply-To: <20170316112030.20419-1-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini , Julien Grall Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org Q3JlYXRlIGEgbmV3IGZpbGUgdG8gaG9sZCB0aGUgZW11bGF0aW9uIGNvZGUgZm9yIHRoZSBJVFMg d2lkZ2V0LgpGb3Igbm93IHdlIGVtdWxhdGUgdGhlIG1lbW9yeSBtYXBwZWQgSVRTIHJlZ2lzdGVy cyBhbmQgcHJvdmlkZSBhIHN0dWIKdG8gaW50cm9kdWNlIHRoZSBJVFMgY29tbWFuZCBoYW5kbGlu ZyBmcmFtZXdvcmsgKGJ1dCB3aXRob3V0IGFjdHVhbGx5CmVtdWxhdGluZyBhbnkgY29tbWFuZHMg YXQgdGhpcyB0aW1lKS4KClNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5 d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAg MSArCiB4ZW4vYXJjaC9hcm0vdmdpYy12My1pdHMuYyAgICAgICAgfCA0ODcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS92Z2ljLXYzLmMgICAgICAg ICAgICB8ICAgOSAtCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19kZWZzLmggfCAgMTkgKysK IDQgZmlsZXMgY2hhbmdlZCwgNTA3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3ZnaWMtdjMtaXRzLmMKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMDJhODcz Ny4uZTdjZTJjODMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4v YXJjaC9hcm0vTWFrZWZpbGUKQEAgLTQ3LDYgKzQ3LDcgQEAgb2JqLXkgKz0gdHJhcHMubwogb2Jq LXkgKz0gdmdpYy5vCiBvYmoteSArPSB2Z2ljLXYyLm8KIG9iai0kKENPTkZJR19IQVNfR0lDVjMp ICs9IHZnaWMtdjMubworb2JqLSQoQ09ORklHX0hBU19JVFMpICs9IHZnaWMtdjMtaXRzLm8KIG9i ai15ICs9IHZtX2V2ZW50Lm8KIG9iai15ICs9IHZ0aW1lci5vCiBvYmoteSArPSB2cHNjaS5vCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy12My1pdHMuYyBiL3hlbi9hcmNoL2FybS92Z2lj LXYzLWl0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMzc2MzgKLS0t IC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vdmdpYy12My1pdHMuYwpAQCAtMCwwICsxLDQ4 NyBAQAorLyoKKyAqIHhlbi9hcmNoL2FybS92Z2ljLXYzLWl0cy5jCisgKgorICogQVJNIEludGVy cnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlIChJVFMpIGVtdWxhdGlvbgorICoKKyAqIEFuZHJlIFBy enl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgorICogQ29weXJpZ2h0IChjKSAyMDE2LDIw MTcgQVJNIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHVuZGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorICovCisKKyNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+CisjaW5jbHVkZSA8eGVuL2NvbmZpZy5o PgorI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNp bmNsdWRlIDx4ZW4vaW5pdC5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CisjaW5jbHVkZSA8 eGVuL2lycS5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zaXplcy5o PgorI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CisjaW5jbHVkZSA8YXNtL21taW8uaD4KKyNpbmNs dWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KKyNpbmNsdWRlIDxhc20vZ2ljX3YzX2l0cy5oPgorI2lu Y2x1ZGUgPGFzbS92Z2ljLmg+CisjaW5jbHVkZSA8YXNtL3ZnaWMtZW11bC5oPgorCisvKiBEYXRh IHN0cnVjdHVyZSB0byBkZXNjcmliZSBhIHZpcnR1YWwgSVRTICovCitzdHJ1Y3QgdmlydF9pdHMg eworICAgIHN0cnVjdCBkb21haW4gKmQ7CisgICAgc3BpbmxvY2tfdCB2Y21kX2xvY2s7ICAgICAg IC8qIHByb3RlY3RzIHRoZSB2aXJ0dWFsIGNvbW1hbmQgYnVmZmVyICovCisgICAgdWludDY0X3Qg Y2Jhc2VyOworICAgIHVpbnQ2NF90ICpjbWRidWY7CisgICAgaW50IGN3cml0ZXI7CisgICAgaW50 IGNyZWFkcjsKKyAgICBzcGlubG9ja190IGl0c19sb2NrOyAgICAgICAgLyogcHJvdGVjdHMgdGhl IGNvbGxlY3Rpb24gYW5kIGRldmljZSB0YWJsZXMgKi8KKyAgICB1aW50NjRfdCBiYXNlcjAsIGJh c2VyMTsKKyAgICB1aW50MTZfdCAqY29sbF90YWJsZTsKKyAgICBpbnQgbWF4X2NvbGxlY3Rpb25z OworICAgIHVpbnQ2NF90ICpkZXZfdGFibGU7CisgICAgaW50IG1heF9kZXZpY2VzOworICAgIGJv b2wgZW5hYmxlZDsKK307CisKKy8qCisgKiBBbiBJbnRlcnJ1cHQgVHJhbnNsYXRpb24gVGFibGUg RW50cnk6IHRoaXMgaXMgaW5kZXhlZCBieSBhCisgKiBEZXZpY2VJRC9FdmVudElEIHBhaXIgYW5k IGlzIGxvY2F0ZWQgaW4gZ3Vlc3QgbWVtb3J5LgorICovCitzdHJ1Y3Qgdml0c19pdHRlCit7Cisg ICAgdWludDMyX3QgdmxwaTsKKyAgICB1aW50MTZfdCBjb2xsZWN0aW9uOworfTsKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGdW5jdGlvbnMgdGhhdCBoYW5k bGUgSVRTIGNvbW1hbmRzICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworc3RhdGljIHVpbnQ2NF90IGl0c19jbWRfbWFza19maWVsZCh1aW50NjRfdCAqaXRzX2Nt ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdvcmQsIGludCBzaGlm dCwgaW50IHNpemUpCit7CisgICAgcmV0dXJuIChsZTY0X3RvX2NwdShpdHNfY21kW3dvcmRdKSA+ PiBzaGlmdCkgJiAoQklUKHNpemUpIC0gMSk7Cit9CisKKyNkZWZpbmUgaXRzX2NtZF9nZXRfY29t bWFuZChjbWQpICAgICAgICBpdHNfY21kX21hc2tfZmllbGQoY21kLCAwLCAgMCwgIDgpCisjZGVm aW5lIGl0c19jbWRfZ2V0X2RldmljZWlkKGNtZCkgICAgICAgaXRzX2NtZF9tYXNrX2ZpZWxkKGNt ZCwgMCwgMzIsIDMyKQorI2RlZmluZSBpdHNfY21kX2dldF9zaXplKGNtZCkgICAgICAgICAgIGl0 c19jbWRfbWFza19maWVsZChjbWQsIDEsICAwLCAgNSkKKyNkZWZpbmUgaXRzX2NtZF9nZXRfaWQo Y21kKSAgICAgICAgICAgICBpdHNfY21kX21hc2tfZmllbGQoY21kLCAxLCAgMCwgMzIpCisjZGVm aW5lIGl0c19jbWRfZ2V0X3BoeXNpY2FsX2lkKGNtZCkgICAgaXRzX2NtZF9tYXNrX2ZpZWxkKGNt ZCwgMSwgMzIsIDMyKQorI2RlZmluZSBpdHNfY21kX2dldF9jb2xsZWN0aW9uKGNtZCkgICAgIGl0 c19jbWRfbWFza19maWVsZChjbWQsIDIsICAwLCAxNikKKyNkZWZpbmUgaXRzX2NtZF9nZXRfdGFy Z2V0X2FkZHIoY21kKSAgICBpdHNfY21kX21hc2tfZmllbGQoY21kLCAyLCAxNiwgMzIpCisjZGVm aW5lIGl0c19jbWRfZ2V0X3ZhbGlkYml0KGNtZCkgICAgICAgaXRzX2NtZF9tYXNrX2ZpZWxkKGNt ZCwgMiwgNjMsICAxKQorCisjZGVmaW5lIElUU19DTURfQlVGRkVSX1NJWkUoYmFzZXIpICAgICAg KCgoKGJhc2VyKSAmIDB4ZmYpICsgMSkgPDwgMTIpCisKK3N0YXRpYyBpbnQgdmdpY19pdHNfaGFu ZGxlX2NtZHMoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZpcnRfaXRzICppdHMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHdyaXRlcikKK3sKKyAgICB1aW50NjRf dCAqY21kcHRyOworCisgICAgaWYgKCAhaXRzLT5jbWRidWYgKQorICAgICAgICByZXR1cm4gLTE7 CisKKyAgICBpZiAoIHdyaXRlciA+PSBJVFNfQ01EX0JVRkZFUl9TSVpFKGl0cy0+Y2Jhc2VyKSAp CisgICAgICAgIHJldHVybiAtMTsKKworICAgIHNwaW5fbG9jaygmaXRzLT52Y21kX2xvY2spOwor CisgICAgd2hpbGUgKCBpdHMtPmNyZWFkciAhPSB3cml0ZXIgKQorICAgIHsKKyAgICAgICAgY21k cHRyID0gaXRzLT5jbWRidWYgKyAoaXRzLT5jcmVhZHIgLyBzaXplb2YoKml0cy0+Y21kYnVmKSk7 CisgICAgICAgIHN3aXRjaCAoaXRzX2NtZF9nZXRfY29tbWFuZChjbWRwdHIpKQorICAgICAgICB7 CisgICAgICAgIGNhc2UgR0lUU19DTURfU1lOQzoKKyAgICAgICAgICAgIC8qIFdlIGhhbmRsZSBJ VFMgY29tbWFuZHMgc3luY2hyb25vdXNseSwgc28gd2UgaWdub3JlIFNZTkMuICovCisJICAgIGJy ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0dfV0FS TklORywgIklUUzogdW5oYW5kbGVkIElUUyBjb21tYW5kICVsZFxuIiwKKyAgICAgICAgICAgICAg ICAgICBpdHNfY21kX2dldF9jb21tYW5kKGNtZHB0cikpOworICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIH0KKworICAgICAgICBpdHMtPmNyZWFkciArPSBJVFNfQ01EX1NJWkU7CisgICAgICAg IGlmICggaXRzLT5jcmVhZHIgPT0gSVRTX0NNRF9CVUZGRVJfU0laRShpdHMtPmNiYXNlcikgKQor ICAgICAgICAgICAgaXRzLT5jcmVhZHIgPSAwOworICAgIH0KKyAgICBpdHMtPmN3cml0ZXIgPSB3 cml0ZXI7CisKKyAgICBzcGluX3VubG9jaygmaXRzLT52Y21kX2xvY2spOworCisgICAgcmV0dXJu IDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSVRTIHJlZ2lzdGVy cyByZWFkIGFjY2VzcyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisg KiBUaGUgcGh5c2ljYWwgYWRkcmVzcyBpcyBlbmNvZGVkIHNsaWdodGx5IGRpZmZlcmVudGx5IGRl cGVuZGluZyBvbgorICogdGhlIHVzZWQgcGFnZSBzaXplOiB0aGUgaGlnaGVzdCBmb3VyIGJpdHMg YXJlIHN0b3JlZCBpbiB0aGUgbG93ZXN0CisgKiBmb3VyIGJpdHMgb2YgdGhlIGZpZWxkIGZvciA2 NEsgcGFnZXMuCisgKi8KK3N0YXRpYyBwYWRkcl90IGdldF9iYXNlcl9waHlzX2FkZHIodWludDY0 X3QgcmVnKQoreworICAgIGlmICggcmVnICYgQklUKDkpICkKKyAgICAgICAgcmV0dXJuIChyZWcg JiBHRU5NQVNLKDQ3LCAxNikpIHwgKChyZWcgJiBHRU5NQVNLKDE1LCAxMikpIDw8IDM2KTsKKyAg ICBlbHNlCisgICAgICAgIHJldHVybiByZWcgJiBHRU5NQVNLKDQ3LCAxMik7Cit9CisKK3N0YXRp YyBpbnQgdmdpY192M19pdHNfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAq aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3QgKnIsIHZv aWQgKnByaXYpCit7CisgICAgc3RydWN0IHZpcnRfaXRzICppdHMgPSBwcml2OworCisgICAgc3dp dGNoICggaW5mby0+Z3BhICYgMHhmZmZmICkKKyAgICB7CisgICAgY2FzZSBWUkVHMzIoR0lUU19D VExSKToKKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0LnNpemUgIT0gREFCVF9XT1JEICkgZ290byBi YWRfd2lkdGg7CisgICAgICAgICpyID0gdmdpY19yZWczMl9leHRyYWN0KGl0cy0+ZW5hYmxlZCB8 IEJJVCgzMSksIGluZm8pOworCWJyZWFrOworICAgIGNhc2UgVlJFRzMyKEdJVFNfSUlEUik6Cisg ICAgICAgIGlmICggaW5mby0+ZGFidC5zaXplICE9IERBQlRfV09SRCApIGdvdG8gYmFkX3dpZHRo OworICAgICAgICAqciA9IHZnaWNfcmVnMzJfZXh0cmFjdChHSVRTX0lJRFJfVkFMVUUsIGluZm8p OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZSRUc2NChHSVRTX1RZUEVSKToKKyAgICAgICAg aWYgKCBpbmZvLT5kYWJ0LnNpemUgPCBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKyAgICAg ICAgKnIgPSB2Z2ljX3JlZzY0X2V4dHJhY3QoMHgxZWZmMSwgaW5mbyk7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgVlJFRzY0KEdJVFNfQ0JBU0VSKToKKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0 LnNpemUgPCBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKyAgICAgICAgKnIgPSB2Z2ljX3Jl ZzY0X2V4dHJhY3QoaXRzLT5jYmFzZXIsIGluZm8pOworICAgICAgICBicmVhazsKKyAgICBjYXNl IFZSRUc2NChHSVRTX0NXUklURVIpOgorICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSA8IERB QlRfV09SRCApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFj dChpdHMtPmN3cml0ZXIsIGluZm8pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFZSRUc2NChH SVRTX0NSRUFEUik6CisgICAgICAgIGlmICggaW5mby0+ZGFidC5zaXplIDwgREFCVF9XT1JEICkg Z290byBiYWRfd2lkdGg7CisgICAgICAgICpyID0gdmdpY19yZWc2NF9leHRyYWN0KGl0cy0+Y3Jl YWRyLCBpbmZvKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWUkVHNjQoR0lUU19CQVNFUjAp OgorICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSA8IERBQlRfV09SRCApIGdvdG8gYmFkX3dp ZHRoOworICAgICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdChpdHMtPmJhc2VyMCwgaW5mbyk7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVlJFRzY0KEdJVFNfQkFTRVIxKToKKyAgICAgICAg aWYgKCBpbmZvLT5kYWJ0LnNpemUgPCBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKyAgICAg ICAgKnIgPSB2Z2ljX3JlZzY0X2V4dHJhY3QoaXRzLT5iYXNlcjEsIGluZm8pOworICAgICAgICBi cmVhazsKKyAgICBjYXNlIFZSQU5HRTY0KEdJVFNfQkFTRVIyLCBHSVRTX0JBU0VSNyk6CisgICAg ICAgIGlmICggaW5mby0+ZGFidC5zaXplIDwgREFCVF9XT1JEICkgZ290byBiYWRfd2lkdGg7Cisg ICAgICAgICpyID0gdmdpY19yZWc2NF9leHRyYWN0KDAsIGluZm8pOworICAgICAgICBicmVhazsK KyAgICBjYXNlIFZSRUczMihHSUNEX1BJRFIyKToKKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0LnNp emUgIT0gREFCVF9XT1JEICkgZ290byBiYWRfd2lkdGg7CisgICAgICAgICpyID0gdmdpY19yZWcz Ml9leHRyYWN0KEdJQ1YzX0dJQ0RfUElEUjIsIGluZm8pOworICAgICAgICBicmVhazsKKyAgICB9 CisKKyAgICByZXR1cm4gMTsKKworYmFkX3dpZHRoOgorICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJv bm91cygpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqIElUUyByZWdpc3RlcnMgd3JpdGUgYWNjZXNzICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQgaXRzX2Jhc2VyX3RhYmxlX3NpemUodWludDY0 X3QgYmFzZXIpCit7CisgICAgaW50IHBhZ2Vfc2l6ZSA9IDA7CisKKyAgICBzd2l0Y2ggKCAoYmFz ZXIgPj4gOCkgJiAzICkKKyAgICB7CisgICAgY2FzZSAwOiBwYWdlX3NpemUgPSBTWl80SzsgYnJl YWs7CisgICAgY2FzZSAxOiBwYWdlX3NpemUgPSBTWl8xNks7IGJyZWFrOworICAgIGNhc2UgMjoK KyAgICBjYXNlIDM6IHBhZ2Vfc2l6ZSA9IFNaXzY0SzsgYnJlYWs7CisgICAgfQorCisgICAgcmV0 dXJuIHBhZ2Vfc2l6ZSAqICgoYmFzZXIgJiBHRU5NQVNLKDcsIDApKSArIDEpOworfQorCitzdGF0 aWMgaW50IGl0c19iYXNlcl9ucl9lbnRyaWVzKHVpbnQ2NF90IGJhc2VyKQoreworICAgIGludCBl bnRyeV9zaXplID0gKChiYXNlciAmIEdFTk1BU0soNTIsIDQ4KSkgPj4gNDgpICsgMTsKKworICAg IHJldHVybiBpdHNfYmFzZXJfdGFibGVfc2l6ZShiYXNlcikgLyBlbnRyeV9zaXplOworfQorCitz dGF0aWMgdm9pZCB2Z2ljX2l0c19tYXBfY21kYnVmKHN0cnVjdCB2aXJ0X2l0cyAqaXRzKQorewor ICAgIGlmICggaXRzLT5jbWRidWYgfHwgIShpdHMtPmNiYXNlciAmIEdJVFNfVkFMSURfQklUKSAp CisgICAgICAgIHJldHVybjsKKworICAgIGdldF9ndWVzdF9wYWdlcyhpdHMtPmQsIGl0cy0+Y2Jh c2VyICYgR0VOTUFTSyg1MSwgMTIpLAorICAgICAgICAgICAgICAgICAgICAoaXRzLT5jYmFzZXIg JiAweGZmKSArIDEpOworICAgIGl0cy0+Y21kYnVmID0gbWFwX2d1ZXN0X3BhZ2VzKGl0cy0+ZCwg aXRzLT5jYmFzZXIgJiBHRU5NQVNLKDUxLCAxMiksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGl0cy0+Y2Jhc2VyICYgMHhmZikgKyAxKTsKK30KKworc3RhdGljIHZvaWQgdmdp Y19pdHNfdW5tYXBfY21kYnVmKHN0cnVjdCB2aXJ0X2l0cyAqaXRzKQoreworICAgIGludCBucl9w YWdlcyA9IChpdHMtPmNiYXNlciAmIDB4ZmYpICsgMTsKKworICAgIGlmICggIWl0cy0+Y21kYnVm ICkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5tYXBfZ3Vlc3RfcGFnZXMoaXRzLT5jbWRidWYs IG5yX3BhZ2VzKTsKKyAgICBwdXRfZ3Vlc3RfcGFnZXMoaXRzLT5kLCBpdHMtPmNiYXNlciAmIEdF Tk1BU0soNTEsIDEyKSwgbnJfcGFnZXMpOworCisgICAgaXRzLT5jbWRidWYgPSBOVUxMOworfQor CitzdGF0aWMgdm9pZCogdmdpY19pdHNfbWFwX2l0c190YWJsZShzdHJ1Y3QgdmlydF9pdHMgKml0 cywgdWludDY0X3QgcmVnKQoreworICAgIHZvaWQgKnJldDsKKyAgICBpbnQgdGFibGVfc2l6ZSA9 IGl0c19iYXNlcl90YWJsZV9zaXplKHJlZyk7CisKKyAgICBpZiAoICEocmVnICYgR0lUU19WQUxJ RF9CSVQpICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBnZXRfZ3Vlc3RfcGFnZXMoaXRz LT5kLCBnZXRfYmFzZXJfcGh5c19hZGRyKHJlZyksIHRhYmxlX3NpemUgPj4gUEFHRV9TSElGVCk7 CisgICAgcmV0ID0gbWFwX2d1ZXN0X3BhZ2VzKGl0cy0+ZCwgZ2V0X2Jhc2VyX3BoeXNfYWRkcihy ZWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9zaXplID4+IFBBR0VfU0hJRlQp OworICAgIG1lbXNldChyZXQsIDAsIHRhYmxlX3NpemUpOworCisgICAgcmV0dXJuIHJldDsKK30K Kworc3RhdGljIHZvaWQgdmdpY19pdHNfdW5tYXBfaXRzX3RhYmxlKHN0cnVjdCBkb21haW4gKmQs IHZvaWQgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IHJlZykKK3sKKyAgICBpZiAoICF0YWJsZSApCisgICAgICAgIHJldHVybjsKKworICAgIHVu bWFwX2d1ZXN0X3BhZ2VzKHRhYmxlLCBpdHNfYmFzZXJfdGFibGVfc2l6ZShyZWcpID4+IFBBR0Vf U0hJRlQpOworICAgIHB1dF9ndWVzdF9wYWdlcyhkLCBnZXRfYmFzZXJfcGh5c19hZGRyKHJlZyks CisgICAgICAgICAgICAgICAgICAgIGl0c19iYXNlcl90YWJsZV9zaXplKHJlZykgPj4gUEFHRV9T SElGVCk7Cit9CisKK3N0YXRpYyB2b2lkIHZnaWNfdjNfaXRzX2NoYW5nZV9pdHNfc3RhdHVzKHN0 cnVjdCB2aXJ0X2l0cyAqaXRzLCBib29sIHN0YXR1cykKK3sKKyAgICBpZiAoICFzdGF0dXMgKQor ICAgIHsKKyAgICAgICAgaXRzLT5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAg ICB9CisKKyAgICB2Z2ljX2l0c19tYXBfY21kYnVmKGl0cyk7CisKKyAgICBpZiAoICFpdHMtPmRl dl90YWJsZSApCisgICAgICAgIGl0cy0+ZGV2X3RhYmxlID0gdmdpY19pdHNfbWFwX2l0c190YWJs ZShpdHMsIGl0cy0+YmFzZXIwKTsKKworICAgIGlmICggIWl0cy0+Y29sbF90YWJsZSApCisgICAg ICAgIGl0cy0+Y29sbF90YWJsZSA9IHZnaWNfaXRzX21hcF9pdHNfdGFibGUoaXRzLCBpdHMtPmJh c2VyMSk7CisKKyAgICBpdHMtPmVuYWJsZWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzYW5p dGl6ZV9pdHNfYmFzZV9yZWcodWludDY0X3QgKnJlZykKK3sKKyAgICB1aW50NjRfdCByID0gKnJl ZzsKKworICAgIC8qIEF2b2lkIG91dGVyIHNoYXJlYWJsZS4gKi8KKyAgICBzd2l0Y2ggKCAociA+ PiBHSVRTX0JBU0VSX1NIQVJFQUJJTElUWV9TSElGVCkgJiAweDAzICkKKyAgICB7CisgICAgY2Fz ZSBHSUNfQkFTRVJfT3V0ZXJTaGFyZWFibGU6CisgICAgICAgIHIgPSByICYgfkdJVFNfQkFTRVJf U0hBUkVBQklMSVRZX01BU0s7CisgICAgICAgIHIgfD0gR0lDX0JBU0VSX0lubmVyU2hhcmVhYmxl IDw8IEdJVFNfQkFTRVJfU0hBUkVBQklMSVRZX1NISUZUOworICAgICAgICBicmVhazsKKyAgICBk ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBBdm9pZCBhbnkgaW5uZXIg bm9uLWNhY2hlYWJsZSBtYXBwaW5nLiAqLworICAgIHN3aXRjaCAoIChyID4+IEdJVFNfQkFTRVJf SU5ORVJfQ0FDSEVBQklMSVRZX1NISUZUKSAmIDB4MDcgKQorICAgIHsKKyAgICBjYXNlIEdJQ19C QVNFUl9DQUNIRV9uQ25COgorICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX25DOgorICAgICAgICBy ID0gciAmIH5HSVRTX0JBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9NQVNLOworICAgICAgICByIHw9 IEdJQ19CQVNFUl9DQUNIRV9SYVdiIDw8IEdJVFNfQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NI SUZUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9 CisKKyAgICAvKiBPbmx5IGFsbG93IG5vbi1jYWNoZWFibGUgb3Igc2FtZS1hcy1pbm5lci4gKi8K KyAgICBzd2l0Y2ggKCAociA+PiBHSVRTX0JBU0VSX09VVEVSX0NBQ0hFQUJJTElUWV9TSElGVCkg JiAweDA3ICkKKyAgICB7CisgICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfU2FtZUFzSW5uZXI6Cisg ICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfbkM6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6 CisgICAgICAgIHIgPSByICYgfkdJVFNfQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX01BU0s7Cisg ICAgICAgIHIgfD0gR0lDX0JBU0VSX0NBQ0hFX25DIDw8IEdJVFNfQkFTRVJfT1VURVJfQ0FDSEVB QklMSVRZX1NISUZUOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAqcmVnID0gcjsKK30K Kworc3RhdGljIGludCB2Z2ljX3YzX2l0c19tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBtbWlv X2luZm9fdCAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rl cl90IHIsIHZvaWQgKnByaXYpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsK KyAgICBzdHJ1Y3QgdmlydF9pdHMgKml0cyA9IHByaXY7CisgICAgdWludDY0X3QgcmVnOworICAg IHVpbnQzMl90IHJlZzMyLCBjdGxyOworCisgICAgc3dpdGNoICggaW5mby0+Z3BhICYgMHhmZmZm ICkKKyAgICB7CisgICAgY2FzZSBWUkVHMzIoR0lUU19DVExSKToKKyAgICAgICAgaWYgKCBpbmZv LT5kYWJ0LnNpemUgIT0gREFCVF9XT1JEICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgY3Rs ciA9IGl0cy0+ZW5hYmxlZCA/IEdJVFNfQ1RMUl9FTkFCTEUgOiAwOworICAgICAgICByZWczMiA9 IGN0bHI7CisgICAgICAgIHZnaWNfcmVnMzJfdXBkYXRlKCZyZWczMiwgciwgaW5mbyk7CisgICAg ICAgIGl0cy0+ZW5hYmxlZCA9IHJlZzMyICYgR0lUU19DVExSX0VOQUJMRTsKKworICAgICAgICBp ZiAoIGN0bHIgXiByZWczMiApCisgICAgICAgICAgICB2Z2ljX3YzX2l0c19jaGFuZ2VfaXRzX3N0 YXR1cyhpdHMsIGl0cy0+ZW5hYmxlZCk7CisgICAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBW UkVHMzIoR0lUU19JSURSKToKKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmVfMzI7CisgICAgY2Fz ZSBWUkVHMzIoR0lUU19UWVBFUik6CisgICAgICAgIGdvdG8gd3JpdGVfaWdub3JlXzMyOworICAg IGNhc2UgVlJFRzY0KEdJVFNfQ0JBU0VSKToKKyAgICAgICAgaWYgKCBpbmZvLT5kYWJ0LnNpemUg PCBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKworICAgICAgICAvKiBDaGFuZ2luZyBiYXNl IHJlZ2lzdGVycyB3aXRoIHRoZSBJVFMgZW5hYmxlZCBpcyBVTlBSRURJQ1RBQkxFLiAqLworICAg ICAgICBpZiAoIGl0cy0+ZW5hYmxlZCApCisgICAgICAgICAgICByZXR1cm4gMTsKKworICAgICAg ICByZWcgPSBpdHMtPmNiYXNlcjsKKyAgICAgICAgdmdpY19yZWc2NF91cGRhdGUoJnJlZywgciwg aW5mbyk7CisgICAgICAgIHNhbml0aXplX2l0c19iYXNlX3JlZygmcmVnKTsKKworICAgICAgICB2 Z2ljX2l0c191bm1hcF9jbWRidWYoaXRzKTsKKyAgICAgICAgaXRzLT5jYmFzZXIgPSByZWc7CisK KwlyZXR1cm4gMTsKKworICAgIGNhc2UgVlJFRzY0KEdJVFNfQ1dSSVRFUik6CisgICAgICAgIGlm ICggaW5mby0+ZGFidC5zaXplIDwgREFCVF9XT1JEICkgZ290byBiYWRfd2lkdGg7CisgICAgICAg IHJlZyA9IGl0cy0+Y3dyaXRlciAmIDB4ZmZmZTA7CisgICAgICAgIHZnaWNfcmVnNjRfdXBkYXRl KCZyZWcsIHIsIGluZm8pOworICAgICAgICBpdHMtPmN3cml0ZXIgPSByZWcgJiAweGZmZmUwOwor CisgICAgICAgIGlmICggaXRzLT5lbmFibGVkICkKKyAgICAgICAgICAgIHZnaWNfaXRzX2hhbmRs ZV9jbWRzKGQsIGl0cywgcmVnKTsKKworICAgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgVlJF RzY0KEdJVFNfQ1JFQURSKToKKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmVfNjQ7CisgICAgY2Fz ZSBWUkVHNjQoR0lUU19CQVNFUjApOgorICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSA8IERB QlRfV09SRCApIGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIC8qIENoYW5naW5nIGJhc2UgcmVn aXN0ZXJzIHdpdGggdGhlIElUUyBlbmFibGVkIGlzIFVOUFJFRElDVEFCTEUuICovCisgICAgICAg IGlmICggaXRzLT5lbmFibGVkICkKKyAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgIHJl ZyA9IGl0cy0+YmFzZXIwOworICAgICAgICB2Z2ljX3JlZzY0X3VwZGF0ZSgmcmVnLCByLCBpbmZv KTsKKworICAgICAgICByZWcgJj0gfkdJVFNfQkFTRVJfUk9fTUFTSzsKKyAgICAgICAgcmVnIHw9 IChzaXplb2YodWludDY0X3QpIC0gMSkgPDwgR0lUU19CQVNFUl9FTlRSWV9TSVpFX1NISUZUOwor ICAgICAgICByZWcgfD0gR0lUU19CQVNFUl9UWVBFX0RFVklDRSA8PCBHSVRTX0JBU0VSX1RZUEVf U0hJRlQ7CisgICAgICAgIHNhbml0aXplX2l0c19iYXNlX3JlZygmcmVnKTsKKworICAgICAgICAv KiBIYXMgdGhlIHRhYmxlIGFkZHJlc3MgYmVlbiBjaGFuZ2VkIG9yIGludmFsaWRhdGVkPyAqLwor ICAgICAgICBpZiAoICEocmVnICYgR0lUU19WQUxJRF9CSVQpIHx8CisgICAgICAgICAgICAgZ2V0 X2Jhc2VyX3BoeXNfYWRkcihyZWcpICE9IGdldF9iYXNlcl9waHlzX2FkZHIoaXRzLT5iYXNlcjAp ICkKKyAgICAgICAgeworICAgICAgICAgICAgdmdpY19pdHNfdW5tYXBfaXRzX3RhYmxlKGl0cy0+ ZCwgaXRzLT5kZXZfdGFibGUsIHJlZyk7CisgICAgICAgICAgICBpdHMtPmRldl90YWJsZSA9IE5V TEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHJlZyAmIEdJVFNfVkFMSURfQklUICkKKyAg ICAgICAgICAgIGl0cy0+bWF4X2RldmljZXMgPSBpdHNfYmFzZXJfbnJfZW50cmllcyhyZWcpOwor ICAgICAgICBlbHNlCisgICAgICAgICAgICBpdHMtPm1heF9kZXZpY2VzID0gMDsKKworICAgICAg ICBpdHMtPmJhc2VyMCA9IHJlZzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBWUkVHNjQo R0lUU19CQVNFUjEpOgorICAgICAgICBpZiAoIGluZm8tPmRhYnQuc2l6ZSA8IERBQlRfV09SRCAp IGdvdG8gYmFkX3dpZHRoOworCisgICAgICAgIC8qIENoYW5naW5nIGJhc2UgcmVnaXN0ZXJzIHdp dGggdGhlIElUUyBlbmFibGVkIGlzIFVOUFJFRElDVEFCTEUuICovCisgICAgICAgIGlmICggaXRz LT5lbmFibGVkICkKKyAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgIHJlZyA9IGl0cy0+ YmFzZXIxOworICAgICAgICB2Z2ljX3JlZzY0X3VwZGF0ZSgmcmVnLCByLCBpbmZvKTsKKyAgICAg ICAgcmVnICY9IH5HSVRTX0JBU0VSX1JPX01BU0s7CisgICAgICAgIHJlZyB8PSAoc2l6ZW9mKHVp bnQxNl90KSAtIDEpIDw8IEdJVFNfQkFTRVJfRU5UUllfU0laRV9TSElGVDsKKyAgICAgICAgcmVn IHw9IEdJVFNfQkFTRVJfVFlQRV9DT0xMRUNUSU9OIDw8IEdJVFNfQkFTRVJfVFlQRV9TSElGVDsK KyAgICAgICAgc2FuaXRpemVfaXRzX2Jhc2VfcmVnKCZyZWcpOworCisgICAgICAgIGlmICggIShy ZWcgJiBHSVRTX1ZBTElEX0JJVCkgfHwKKyAgICAgICAgICAgICBnZXRfYmFzZXJfcGh5c19hZGRy KHJlZykgIT0gZ2V0X2Jhc2VyX3BoeXNfYWRkcihpdHMtPmJhc2VyMSkgKQorICAgICAgICB7Cisg ICAgICAgICAgICB2Z2ljX2l0c191bm1hcF9pdHNfdGFibGUoaXRzLT5kLCBpdHMtPmNvbGxfdGFi bGUsIHJlZyk7CisgICAgICAgICAgICBpdHMtPmNvbGxfdGFibGUgPSBOVUxMOworICAgICAgICB9 CisKKyAgICAgICAgaWYgKCByZWcgJiBHSVRTX1ZBTElEX0JJVCApCisgICAgICAgICAgICBpdHMt Pm1heF9jb2xsZWN0aW9ucyA9IGl0c19iYXNlcl9ucl9lbnRyaWVzKHJlZyk7CisgICAgICAgIGVs c2UKKyAgICAgICAgICAgIGl0cy0+bWF4X2NvbGxlY3Rpb25zID0gMDsKKyAgICAgICAgaXRzLT5i YXNlcjEgPSByZWc7CisgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgVlJBTkdFNjQoR0lUU19C QVNFUjIsIEdJVFNfQkFTRVI3KToKKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmVfNjQ7CisgICAg ZGVmYXVsdDoKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0dfV0FSTklORywgIklUUzogdW5oYW5k bGVkIElUUyByZWdpc3RlciAweCVseFxuIiwKKyAgICAgICAgICAgICAgICAgaW5mby0+Z3BhICYg MHhmZmZmKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7CisKK3dy aXRlX2lnbm9yZV82NDoKKyAgICBpZiAoICEgdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoaW5mby0+ ZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKKyAgICByZXR1cm4gMTsKKword3JpdGVfaWdub3JlXzMy OgorICAgIGlmICggaW5mby0+ZGFidC5zaXplICE9IERBQlRfV09SRCApIGdvdG8gYmFkX3dpZHRo OworICAgIHJldHVybiAxOworCitiYWRfd2lkdGg6CisgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAi JXB2IHZHSUNSOiBiYWQgcmVhZCB3aWR0aCAlZCByJWQgb2Zmc2V0ICUjMDhseFxuIiwKKyAgICAg ICAgICAgdiwgaW5mby0+ZGFidC5zaXplLCBpbmZvLT5kYWJ0LnJlZywgaW5mby0+Z3BhICYgMHhm ZmZmKTsKKworICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91cygpOworCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyX29wcyB2Z2ljX2l0c19tbWlv X2hhbmRsZXIgPSB7CisgICAgLnJlYWQgID0gdmdpY192M19pdHNfbW1pb19yZWFkLAorICAgIC53 cml0ZSA9IHZnaWNfdjNfaXRzX21taW9fd3JpdGUsCit9OworCisvKgorICogTG9jYWwgdmFyaWFi bGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZz ZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg YS94ZW4vYXJjaC9hcm0vdmdpYy12My5jIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwppbmRleCBk ZTYyNWJmLi5kMTM4MmJlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy12My5jCisrKyBi L3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKQEAgLTE1OSwxNSArMTU5LDYgQEAgc3RhdGljIHZvaWQg dmdpY19zdG9yZV9pcm91dGVyKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Z2ljX2lycV9yYW5r ICpyYW5rLAogICAgIHJhbmstPnZjcHVbb2Zmc2V0XSA9IG5ld192Y3B1LT52Y3B1X2lkOwogfQog Ci1zdGF0aWMgaW5saW5lIGJvb2wgdmdpY19yZWc2NF9jaGVja19hY2Nlc3Moc3RydWN0IGhzcl9k YWJ0IGRhYnQpCi17Ci0gICAgLyoKLSAgICAgKiA2NCBiaXRzIHJlZ2lzdGVycyBjYW4gYmUgYWNj ZXNzaWJsZSB1c2luZyAzMi1iaXQgYW5kIDY0LWJpdCB1bmxlc3MKLSAgICAgKiBzdGF0ZWQgb3Ro ZXJ3aXNlIChTZWUgOC4xLjMgQVJNIElISSAwMDY5QSkuCi0gICAgICovCi0gICAgcmV0dXJuICgg ZGFidC5zaXplID09IERBQlRfRE9VQkxFX1dPUkQgfHwgZGFidC5zaXplID09IERBQlRfV09SRCAp OwotfQotCiBzdGF0aWMgaW50IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb19yZWFkKHN0cnVjdCB2 Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgZ2ljcl9yZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3QgKnIpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20tYXJtL2dpY192M19kZWZzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19kZWZzLmgK aW5kZXggODc4YmFlMi4uMWU4OGQ2YiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9n aWNfdjNfZGVmcy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaApAQCAt MTUzLDYgKzE1MywxNiBAQAogI2RlZmluZSBMUElfUFJPUF9SRVMxICAgICAgICAgICAgICAgICgx IDw8IDEpCiAjZGVmaW5lIExQSV9QUk9QX0VOQUJMRUQgICAgICAgICAgICAgKDEgPDwgMCkKIAor LyoKKyAqIFBJRFIyOiBPbmx5IGJpdHNbNzo0XSBhcmUgbm90IGltcGxlbWVudGF0aW9uIGRlZmlu ZWQuIFdlIGFyZQorICogZW11bGF0aW5nIGEgR0lDdjMgKFs3OjRdID0gMHgzKS4KKyAqCisgKiBX ZSBkb24ndCBlbXVsYXRlIGEgc3BlY2lmaWMgcmVnaXN0ZXJzIHNjaGVtZSBzbyBpbXBsZW1lbnQg dGhlIG90aGVycworICogYml0cyBhcyBSRVMwIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBzcGVjIChz ZWUgOC4xLjEzIGluIEFSTSBJSEkgMDA2OUEpLgorICovCisjZGVmaW5lIEdJQ1YzX0dJQ0RfUElE UjIgIDB4MzAKKyNkZWZpbmUgR0lDVjNfR0lDUl9QSURSMiAgR0lDVjNfR0lDRF9QSURSMgorCiAj ZGVmaW5lIEdJQ0hfVk1DUl9FT0kgICAgICAgICAgICAgICAgKDEgPDwgOSkKICNkZWZpbmUgR0lD SF9WTUNSX1ZFTkcxICAgICAgICAgICAgICAoMSA8PCAxKQogCkBAIC0xOTYsNiArMjA2LDE1IEBA IHN0cnVjdCByZGlzdF9yZWdpb24gewogICAgIGJvb2wgc2luZ2xlX3JkaXN0OwogfTsKIAorLyoK KyAqIDY0IGJpdHMgcmVnaXN0ZXJzIGNhbiBiZSBhY2Nlc3NpYmxlIHVzaW5nIDMyLWJpdCBhbmQg NjQtYml0IHVubGVzcworICogc3RhdGVkIG90aGVyd2lzZSAoU2VlIDguMS4zIEFSTSBJSEkgMDA2 OUEpLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wgdmdpY19yZWc2NF9jaGVja19hY2Nlc3Moc3Ry dWN0IGhzcl9kYWJ0IGRhYnQpCit7CisgICAgcmV0dXJuICggZGFidC5zaXplID09IERBQlRfRE9V QkxFX1dPUkQgfHwgZGFidC5zaXplID09IERBQlRfV09SRCApOworfQorCiAjZW5kaWYgLyogX19B U01fQVJNX0dJQ19WM19ERUZTX0hfXyAqLwogCiAvKgotLSAKMi45LjAKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK