From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 38D27C83F01 for ; Fri, 25 Aug 2023 22:34:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=NRuwvM72oLp57yAJSr5qbcpaUpev9vthD2k/u8lTkqw=; b=tqyRRM7LfSB40F eMErAaV0C5HXUml5IHIUZbaT/cmVgqJqAMWZ9kA/1goBwqAy3LqWx7WSy94Oirk0HOqvsObkQkUpu 78PwdCywiNQZZXXiLiD4n93ftP/B4aALmzW1RjKHkdF24SKtCW2NMbsL3oO23T18GSbxd7qIKfDdJ SBmX3cv/8p4XuxNL5F2fjgyq4EZyPe8qGLmCtNwZcWx18QdrNgMHcBABiQawTLpVhEclFLyTjuMo9 WEhhinCa+vDSwo9AWWu7wBhbh6L4EsW51KFjzXZukq0QNr9KRzzJms1MdNznn6kdB4/P9B0Lzup3w QXo4kJydfVwR4DFnp6aQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZfNq-0067A6-12; Fri, 25 Aug 2023 22:34:26 +0000 Received: from mail-il1-x132.google.com ([2607:f8b0:4864:20::132]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZfNn-00679P-0r for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 22:34:24 +0000 Received: by mail-il1-x132.google.com with SMTP id e9e14a558f8ab-34cabf65ee8so40905ab.0 for ; Fri, 25 Aug 2023 15:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1693002856; x=1693607656; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=VmGrXf9cYjykgOlg/u6doGW9vtPA8bMLiJ9T7b++na4=; b=XHxU3lNgKfE6RXM+t4Rohuo5ZTGcHY8GOv9SUr3n5CN1NqR/Ranq6GnqS6kv4T5EXn P6m6jKXMQBG/HIBWujobC4HszeG45Qq/0Pfq1b25l10CCr2aEhMmsrm3DFN13SMdqTJm qCqboQVo6yMMQQ0Zfv99KsPGvOfGKXi5RZQDUVJd1SrlIPEvotwUCtVVtgXpG+Oyju9Q MI3ghpuU3JOolcMVBSFjLtcW5WSeYa2N4AJTwOWnw0pRJdh1B13bFQ1QOqfyk25Mq/K1 x5T3hhMV1fEOscWtdUH8/6QT39ifr8pK3xWeIXey+k/6/huhzvPRpzvC4IgjR6Oe2l++ 4b8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693002856; x=1693607656; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VmGrXf9cYjykgOlg/u6doGW9vtPA8bMLiJ9T7b++na4=; b=g5V3dCugtmt/eYuoVxauYMEC2X43LDJrHi4UPf0CPvdiq4GIrVimroHQjmBOrqdilW nGyxNohRTY3eVXDizOjzgAi1iu/y6wrEAnJDjG3Iz6gXhkhzRuAxJYszgeBJkZYtf9BW eAP+XH7y5+UTNPzIyf5NUlJHk0ygJFw71wa0VqtoOXsmFrq1kfZGipFEkpsPm7KqWafp hXkw2sEn4IVrKqfaXRjaiaxpMdNztO8vhWrxasPw8SgIiLExVHrAGeTlhKjseEyde8iw QswLwdszeBQG+omxPqhwBvvrHtzM1ALMESAhlRyr1Bqs9eaOPJcC/tJ2fQej47VWC2Fu 9+Hg== X-Gm-Message-State: AOJu0YzCsNCiHlsg1ClSVkImgp/VT4eqS8+Hm9c7GTW6w1zcmNrtyu7P 8gPsdY3B8Vkkh/jJRD+XMwlK7nOHhvtMdRDOkjsBLg== X-Google-Smtp-Source: AGHT+IF3vhd8OdJzn3dbhBkM5wd1Hnk0dkeY4f07ZarV1sUQ5JqtJCGCgpfhgOuwf6tzaRd87yn7tlhJtjLYV3wJxgs= X-Received: by 2002:a92:cda1:0:b0:347:1b96:9d48 with SMTP id g1-20020a92cda1000000b003471b969d48mr28190ild.15.1693002856153; Fri, 25 Aug 2023 15:34:16 -0700 (PDT) MIME-Version: 1.0 References: <20230817003029.3073210-1-rananta@google.com> <20230817003029.3073210-9-rananta@google.com> <1c6c07af-f6d0-89a6-1b7d-164ca100ac88@redhat.com> In-Reply-To: From: Raghavendra Rao Ananta Date: Fri, 25 Aug 2023 15:34:04 -0700 Message-ID: Subject: Re: [PATCH v5 08/12] KVM: arm64: PMU: Allow userspace to limit PMCR_EL0.N for the guest To: Shaoqin Huang Cc: Oliver Upton , Marc Zyngier , Alexandru Elisei , James Morse , Suzuki K Poulose , Paolo Bonzini , Zenghui Yu , Jing Zhang , Reiji Watanabe , Colton Lewis , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, kvm@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230825_153423_330462_CF6DB8C8 X-CRM114-Status: GOOD ( 45.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCBBdWcgMjQsIDIwMjMgYXQgMTo1MOKAr0FNIFNoYW9xaW4gSHVhbmcgPHNoYWh1YW5n QHJlZGhhdC5jb20+IHdyb3RlOgo+Cj4KPgo+IE9uIDgvMjQvMjMgMDA6MDYsIFJhZ2hhdmVuZHJh IFJhbyBBbmFudGEgd3JvdGU6Cj4gPiBPbiBUdWUsIEF1ZyAyMiwgMjAyMyBhdCAzOjA24oCvQU0g U2hhb3FpbiBIdWFuZyA8c2hhaHVhbmdAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPj4KPiA+PiBIaSBS YWdoYXZlbmRyYSwKPiA+Pgo+ID4+IE9uIDgvMTcvMjMgMDg6MzAsIFJhZ2hhdmVuZHJhIFJhbyBB bmFudGEgd3JvdGU6Cj4gPj4+IEZyb206IFJlaWppIFdhdGFuYWJlIDxyZWlqaXdAZ29vZ2xlLmNv bT4KPiA+Pj4KPiA+Pj4gS1ZNIGRvZXMgbm90IHlldCBzdXBwb3J0IHVzZXJzcGFjZSBtb2RpZnlp bmcgUE1DUl9FTDAuTiAoV2l0aAo+ID4+PiB0aGUgcHJldmlvdXMgcGF0Y2gsIEtWTSBpZ25vcmVz IHdoYXQgaXMgd3JpdHRlbiBieSB1cHNlcnNwYWNlKS4KPiA+Pj4gQWRkIHN1cHBvcnQgdXNlcnNw YWNlIGxpbWl0aW5nIFBNQ1JfRUwwLk4uCj4gPj4+Cj4gPj4+IERpc2FsbG93IHVzZXJzcGFjZSB0 byBzZXQgUE1DUl9FTDAuTiB0byBhIHZhbHVlIHRoYXQgaXMgZ3JlYXRlcgo+ID4+PiB0aGFuIHRo ZSBob3N0IHZhbHVlIChLVk1fU0VUX09ORV9SRUcgd2lsbCBmYWlsKSwgYXMgS1ZNIGRvZXNuJ3QK PiA+Pj4gc3VwcG9ydCBtb3JlIGV2ZW50IGNvdW50ZXJzIHRoYW4gdGhlIGhvc3QgSFcgaW1wbGVt ZW50cy4KPiA+Pj4gQWx0aG91Z2ggdGhpcyBpcyBhbiBBQkkgY2hhbmdlLCB0aGlzIGNoYW5nZSBv bmx5IGFmZmVjdHMKPiA+Pj4gdXNlcnNwYWNlIHNldHRpbmcgUE1DUl9FTDAuTiB0byBhIGxhcmdl ciB2YWx1ZSB0aGFuIHRoZSBob3N0Lgo+ID4+PiBBcyBhY2Nlc3NlcyB0byB1bmFkdmVydGlzZWQg ZXZlbnQgY291bnRlcnMgaW5kaWNlcyBpcyBDT05TVFJBSU5FRAo+ID4+PiBVTlBSRURJQ1RBQkxF IGJlaGF2aW9yLCBhbmQgUE1DUl9FTDAuTiB3YXMgcmVzZXQgdG8gdGhlIGhvc3QgdmFsdWUKPiA+ Pj4gb24gZXZlcnkgdkNQVSByZXNldCBiZWZvcmUgdGhpcyBzZXJpZXMsIEkgY2FuJ3QgdGhpbmsg b2YgYW55Cj4gPj4+IHVzZSBjYXNlIHdoZXJlIGEgdXNlciBzcGFjZSB3b3VsZCBkbyB0aGF0Lgo+ ID4+Pgo+ID4+PiBBbHNvLCBpZ25vcmUgd3JpdGVzIHRvIHJlYWQtb25seSBiaXRzIHRoYXQgYXJl IGNsZWFyZWQgb24gdkNQVSByZXNldCwKPiA+Pj4gYW5kIFJFU3swLDF9IGJpdHMgKGluY2x1ZGlu ZyB3cml0YWJsZSBiaXRzIHRoYXQgS1ZNIGRvZXNuJ3Qgc3VwcG9ydAo+ID4+PiB5ZXQpLCBhcyB0 aG9zZSBiaXRzIHNob3VsZG4ndCBiZSBtb2RpZmllZCAoYXQgbGVhc3Qgd2l0aAo+ID4+PiB0aGUg Y3VycmVudCBLVk0pLgo+ID4+Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBSZWlqaSBXYXRhbmFiZSA8 cmVpaml3QGdvb2dsZS5jb20+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IFJhZ2hhdmVuZHJhIFJhbyBB bmFudGEgPHJhbmFudGFAZ29vZ2xlLmNvbT4KPiA+Pj4gLS0tCj4gPj4+ICAgIGFyY2gvYXJtNjQv aW5jbHVkZS9hc20va3ZtX2hvc3QuaCB8ICAzICsrCj4gPj4+ICAgIGFyY2gvYXJtNjQva3ZtL3Bt dS1lbXVsLmMgICAgICAgICB8ICAxICsKPiA+Pj4gICAgYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3Mu YyAgICAgICAgIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ID4+PiAgICAz IGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPj4+Cj4g Pj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKPiA+Pj4gaW5kZXggMGYyZGJiZThmNmE3ZS4u YzE1ZWMzNjUyODNkMSAxMDA2NDQKPiA+Pj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9r dm1faG9zdC5oCj4gPj4+ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+ ID4+PiBAQCAtMjU5LDYgKzI1OSw5IEBAIHN0cnVjdCBrdm1fYXJjaCB7Cj4gPj4+ICAgICAgICAv KiBQTUNSX0VMMC5OIHZhbHVlIGZvciB0aGUgZ3Vlc3QgKi8KPiA+Pj4gICAgICAgIHU4IHBtY3Jf bjsKPiA+Pj4KPiA+Pj4gKyAgICAgLyogTGltaXQgdmFsdWUgb2YgUE1DUl9FTDAuTiBmb3IgdGhl IGd1ZXN0ICovCj4gPj4+ICsgICAgIHU4IHBtY3Jfbl9saW1pdDsKPiA+Pj4gKwo+ID4+PiAgICAg ICAgLyogSHlwZXJjYWxsIGZlYXR1cmVzIGZpcm13YXJlIHJlZ2lzdGVycycgZGVzY3JpcHRvciAq Lwo+ID4+PiAgICAgICAgc3RydWN0IGt2bV9zbWNjY19mZWF0dXJlcyBzbWNjY19mZWF0Owo+ID4+ PiAgICAgICAgc3RydWN0IG1hcGxlX3RyZWUgc21jY2NfZmlsdGVyOwo+ID4+PiBkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYyBiL2FyY2gvYXJtNjQva3ZtL3BtdS1lbXVsLmMK PiA+Pj4gaW5kZXggY2U3ZGU2YmJkYzk2Ny4uMzlhZDU2YTcxYWQyMCAxMDA2NDQKPiA+Pj4gLS0t IGEvYXJjaC9hcm02NC9rdm0vcG11LWVtdWwuYwo+ID4+PiArKysgYi9hcmNoL2FybTY0L2t2bS9w bXUtZW11bC5jCj4gPj4+IEBAIC04OTYsNiArODk2LDcgQEAgaW50IGt2bV9hcm1fc2V0X3ZtX3Bt dShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBhcm1fcG11ICphcm1fcG11KQo+ID4+PiAgICAgICAg ICogd2hpbGUgdGhlIGxhdHRlciBkb2VzIG5vdC4KPiA+Pj4gICAgICAgICAqLwo+ID4+PiAgICAg ICAga3ZtLT5hcmNoLnBtY3JfbiA9IGFybV9wbXUtPm51bV9ldmVudHMgLSAxOwo+ID4+PiArICAg ICBrdm0tPmFyY2gucG1jcl9uX2xpbWl0ID0gYXJtX3BtdS0+bnVtX2V2ZW50cyAtIDE7Cj4gPj4+ Cj4gPj4+ICAgICAgICByZXR1cm4gMDsKPiA+Pj4gICAgfQo+ID4+PiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9rdm0vc3lzX3JlZ3MuYyBiL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMKPiA+Pj4g aW5kZXggMjA3NTkwMTM1NmM1Yi4uYzAxZDYyYWZhN2RiNCAxMDA2NDQKPiA+Pj4gLS0tIGEvYXJj aC9hcm02NC9rdm0vc3lzX3JlZ3MuYwo+ID4+PiArKysgYi9hcmNoL2FybTY0L2t2bS9zeXNfcmVn cy5jCj4gPj4+IEBAIC0xMDg2LDYgKzEwODYsNTEgQEAgc3RhdGljIGludCBnZXRfcG1jcihzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsCj4gPj4+ICAg ICAgICByZXR1cm4gMDsKPiA+Pj4gICAgfQo+ID4+Pgo+ID4+PiArc3RhdGljIGludCBzZXRfcG1j cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnIsCj4g Pj4+ICsgICAgICAgICAgICAgICAgIHU2NCB2YWwpCj4gPj4+ICt7Cj4gPj4+ICsgICAgIHN0cnVj dCBrdm0gKmt2bSA9IHZjcHUtPmt2bTsKPiA+Pj4gKyAgICAgdTY0IG5ld19uLCBtdXRhYmxlX21h c2s7Cj4gPj4+ICsgICAgIGludCByZXQgPSAwOwo+ID4+PiArCj4gPj4+ICsgICAgIG5ld19uID0g RklFTERfR0VUKEFSTVY4X1BNVV9QTUNSX04sIHZhbCk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgbXV0 ZXhfbG9jaygma3ZtLT5hcmNoLmNvbmZpZ19sb2NrKTsKPiA+Pj4gKyAgICAgaWYgKHVubGlrZWx5 KG5ld19uICE9IGt2bS0+YXJjaC5wbWNyX24pKSB7Cj4gPj4+ICsgICAgICAgICAgICAgLyoKPiA+ Pj4gKyAgICAgICAgICAgICAgKiBUaGUgdkNQVSBjYW4ndCBoYXZlIG1vcmUgY291bnRlcnMgdGhh biB0aGUgUE1VCj4gPj4+ICsgICAgICAgICAgICAgICogaGFyZHdhcmUgaW1wbGVtZW50cy4KPiA+ Pj4gKyAgICAgICAgICAgICAgKi8KPiA+Pj4gKyAgICAgICAgICAgICBpZiAobmV3X24gPD0ga3Zt LT5hcmNoLnBtY3Jfbl9saW1pdCkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGt2bS0+YXJj aC5wbWNyX24gPSBuZXdfbjsKPiA+Pj4gKyAgICAgICAgICAgICBlbHNlCj4gPj4+ICsgICAgICAg ICAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOwo+ID4+PiArICAgICB9Cj4gPj4+ICsgICAgIG11 dGV4X3VubG9jaygma3ZtLT5hcmNoLmNvbmZpZ19sb2NrKTsKPiA+Pgo+ID4+IEFub3RoZXIgdGhp bmcgSSBhbSBqdXN0IHdvbmRlciBpcyB0aGF0IHNob3VsZCB3ZSBibG9jayBhbnkgbW9kaWZpY2F0 aW9uCj4gPj4gdG8gdGhlIHBtY3JfbiBhZnRlciB2bSBzdGFydCB0byBydW4/IExpa2UgYWRkIG9u ZSBtb3JlIGNoZWNraW5nCj4gPj4ga3ZtX3ZtX2hhc19yYW5fb25jZSgpIGF0IHRoZSBiZWdpbm5p bmcgb2YgdGhlIHNldF9wbWNyKCkgZnVuY3Rpb24uCj4gPj4KPiA+IFRoYW5rcyBmb3IgYnJpbmdp bmcgaXQgdXAuIFJlaWppIGFuZCBJIGRpc2N1c3NlZCBhYm91dCB0aGlzLiBDaGVja2luZwo+ID4g Zm9yIGt2bV92bV9oYXNfcmFuX29uY2UoKSB3aWxsIGJlIGEgZ29vZCBtb3ZlLCBob3dldmVyLCBp dCB3aWxsIGdvCj4gPiBhZ2FpbnN0IHRoZSBBQkkgZXhwZWN0YXRpb25zIG9mIHNldHRpbmcgdGhl IFBNQ1IuIEknZCBsaWtlIG90aGVycyB0bwo+ID4gd2VpZ2ggaW4gb24gdGhpcyBhcyB3ZWxsLiBX aGF0IGRvIHlvdSB0aGluaz8KPiA+Cj4gPiBUaGFuayB5b3UuCj4gPiBSYWdoYXZlbmRyYQo+Cj4g QmVmb3JlIHRoaXMgY2hhbmdlLCBrdm0gbm90IGFsbG93ZWQgdXNlcnNwYWNlIHRvIGNoYW5nZSB0 aGUgcG1jcl9uLCBidXQKPiBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgbG93ZXIgQVJNVjhfUE1VX1BN Q1JfTUFTSyBiaXRzLiBXaXRoIHRoaXMgY2hhbmdlLAo+IHdlIG5vdyBhbGxvdyB0byBjaGFuZ2Ug dGhlIHBtY3Jfbiwgd2Ugc2hvdWxkIG5vdCBibG9jayB0aGUgY2hhbmdlIHRvCj4gQVJNVjhfUE1V X1BNQ1JfTUFTSyBhZnRlciB2bSBzdGFydCB0byBydW4sIGJ1dCBob3cgYWJvdXQgd2UganVzdCBi bG9jawo+IHRoZSBjaGFuZ2UgdG8gQVJNVjhfUE1VX1BNQ1JfTiBhZnRlciB2bSBzdGFydCB0byBy dW4/Cj4KSSBiZWxpZXZlIHlvdSBhcmUgcmVmZXJyaW5nIHRvIHRoZSBndWVzdCB0cmFwIGFjY2Vz cyBwYXJ0IG9mIGl0CihhY2Nlc3NfcG1jcigpKS4gVGhpcyBwYXRjaCBmb2N1c2VzIG9uIHRoZSB1 c2Vyc3BhY2UgYWNjZXNzIG9mIFBNQ1IKdmlhIHRoZSBLVk1fU0VUX09ORV9SRUcgaW9jdGwuIEJl Zm9yZSB0aGlzIHBhdGNoLCBLVk0gZGlkIG5vdCBjb250cm9sCnRoZSB3cml0ZXMgdG8gdGhlIHJl ZyBhbmQgdXNlcnNwYWNlIHdhcyBmcmVlIHRvIHdyaXRlIHRvIGFueSBiaXRzIGF0CmFueSB0aW1l LgoKVGhhbmsgeW91LgpSYWdoYXZlbmRyYQo+IFRoYW5rcywKPiBTaGFvcWluCj4KPiA+PiBUaGFu a3MsCj4gPj4gU2hhb3Fpbgo+ID4+Cj4gPj4+ICsgICAgIGlmIChyZXQpCj4gPj4+ICsgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiA+Pj4gKwo+ID4+PiArICAgICAvKgo+ID4+PiArICAgICAgKiBJ Z25vcmUgd3JpdGVzIHRvIFJFUzAgYml0cywgcmVhZCBvbmx5IGJpdHMgdGhhdCBhcmUgY2xlYXJl ZCBvbgo+ID4+PiArICAgICAgKiB2Q1BVIHJlc2V0LCBhbmQgd3JpdGFibGUgYml0cyB0aGF0IEtW TSBkb2Vzbid0IHN1cHBvcnQgeWV0Lgo+ID4+PiArICAgICAgKiAoaS5lLiBvbmx5IFBNQ1IuTiBh bmQgYml0cyBbNzowXSBhcmUgbXV0YWJsZSBmcm9tIHVzZXJzcGFjZSkKPiA+Pj4gKyAgICAgICog VGhlIExQIGJpdCBpcyBSRVMwIHdoZW4gRkVBVF9QTVV2M3A1IGlzIG5vdCBzdXBwb3J0ZWQgb24g dGhlIHZDUFUuCj4gPj4+ICsgICAgICAqIEJ1dCwgd2UgbGVhdmUgdGhlIGJpdCBhcyBpdCBpcyBo ZXJlLCBhcyB0aGUgdkNQVSdzIFBNVXZlciBtaWdodAo+ID4+PiArICAgICAgKiBiZSBjaGFuZ2Vk IGxhdGVyIChOT1RFOiB0aGUgYml0IHdpbGwgYmUgY2xlYXJlZCBvbiBmaXJzdCB2Q1BVIHJ1bgo+ ID4+PiArICAgICAgKiBpZiBuZWNlc3NhcnkpLgo+ID4+PiArICAgICAgKi8KPiA+Pj4gKyAgICAg bXV0YWJsZV9tYXNrID0gKEFSTVY4X1BNVV9QTUNSX01BU0sgfCBBUk1WOF9QTVVfUE1DUl9OKTsK PiA+Pj4gKyAgICAgdmFsICY9IG11dGFibGVfbWFzazsKPiA+Pj4gKyAgICAgdmFsIHw9IChfX3Zj cHVfc3lzX3JlZyh2Y3B1LCByLT5yZWcpICYgfm11dGFibGVfbWFzayk7Cj4gPj4+ICsKPiA+Pj4g KyAgICAgLyogVGhlIExDIGJpdCBpcyBSRVMxIHdoZW4gQUFyY2gzMiBpcyBub3Qgc3VwcG9ydGVk ICovCj4gPj4+ICsgICAgIGlmICgha3ZtX3N1cHBvcnRzXzMyYml0X2VsMCgpKQo+ID4+PiArICAg ICAgICAgICAgIHZhbCB8PSBBUk1WOF9QTVVfUE1DUl9MQzsKPiA+Pj4gKwo+ID4+PiArICAgICBf X3ZjcHVfc3lzX3JlZyh2Y3B1LCByLT5yZWcpID0gdmFsOwo+ID4+PiArICAgICByZXR1cm4gMDsK PiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgICAvKiBTaWxseSBtYWNybyB0byBleHBhbmQgdGhlIERC R3tCQ1IsQlZSLFdWUixXQ1J9bl9FTDEgcmVnaXN0ZXJzIGluIG9uZSBnbyAqLwo+ID4+PiAgICAj ZGVmaW5lIERCR19CQ1JfQlZSX1dDUl9XVlJfRUwxKG4pICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiA+Pj4gICAgICAgIHsgU1lTX0RFU0MoU1lTX0RCR0JWUm5fRUwxKG4pKSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPj4+IEBAIC0yMTQ3LDggKzIxOTIs OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyBzeXNfcmVnX2Rlc2NzW10gPSB7 Cj4gPj4+ICAgICAgICB7IFNZU19ERVNDKFNZU19DVFJfRUwwKSwgYWNjZXNzX2N0ciB9LAo+ID4+ PiAgICAgICAgeyBTWVNfREVTQyhTWVNfU1ZDUiksIHVuZGVmX2FjY2VzcyB9LAo+ID4+Pgo+ID4+ PiAtICAgICB7IFBNVV9TWVNfUkVHKFBNQ1JfRUwwKSwgLmFjY2VzcyA9IGFjY2Vzc19wbWNyLAo+ ID4+PiAtICAgICAgIC5yZXNldCA9IHJlc2V0X3BtY3IsIC5yZWcgPSBQTUNSX0VMMCwgLmdldF91 c2VyID0gZ2V0X3BtY3IgfSwKPiA+Pj4gKyAgICAgeyBQTVVfU1lTX1JFRyhQTUNSX0VMMCksIC5h Y2Nlc3MgPSBhY2Nlc3NfcG1jciwgLnJlc2V0ID0gcmVzZXRfcG1jciwKPiA+Pj4gKyAgICAgICAu cmVnID0gUE1DUl9FTDAsIC5nZXRfdXNlciA9IGdldF9wbWNyLCAuc2V0X3VzZXIgPSBzZXRfcG1j ciB9LAo+ID4+PiAgICAgICAgeyBQTVVfU1lTX1JFRyhQTUNOVEVOU0VUX0VMMCksCj4gPj4+ICAg ICAgICAgIC5hY2Nlc3MgPSBhY2Nlc3NfcG1jbnRlbiwgLnJlZyA9IFBNQ05URU5TRVRfRUwwIH0s Cj4gPj4+ICAgICAgICB7IFBNVV9TWVNfUkVHKFBNQ05URU5DTFJfRUwwKSwKPiA+Pgo+ID4+IC0t Cj4gPj4gU2hhb3Fpbgo+ID4+Cj4gPgo+Cj4gLS0KPiBTaGFvcWluCj4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK