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 X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40C34C48BE0 for ; Fri, 11 Jun 2021 23:35:56 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E53C361374 for ; Fri, 11 Jun 2021 23:35:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E53C361374 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EfanzMcsMIy+POIRYgLgMTnAZMK/zPptJ34KvLF2jtU=; b=wwuD/1y6TaAyTR XQyZEYD9fIehxLj+i11w3Ejk27fzwuAY9WJpXCUNLCOhsHVG4NsHn+9ixB9tIKjEikwlPPAQ51c5i RaZcCbdIsYlffMzmqC0tSLUrrW9imnT5stf5mpqoQnfEymEcDtb3vACEPtwIgPWrRGRS5TTGAqoGx NrLvsIqRrO/FqMQQayQLD8OOfJ2UTjbCbBiAeR5hjTbl8pkPKWJKDnzlNLmEk5MhK04TDfqL/lF0y OAVh0C4XkXdNnOkgg6p7IEQZ8UwhGTm3Wu3FAB1kjWz6Fbl1U6l9nDF/H0+3wQ9FORJgbSeg1FhGy yMHNRa+vwXyhhCySMl+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lrqf6-007O7C-Vb; Fri, 11 Jun 2021 23:34:05 +0000 Received: from mail-wm1-f45.google.com ([209.85.128.45]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lrqf2-007O6H-Pc for linux-arm-kernel@lists.infradead.org; Fri, 11 Jun 2021 23:34:02 +0000 Received: by mail-wm1-f45.google.com with SMTP id t4-20020a1c77040000b029019d22d84ebdso9510326wmi.3 for ; Fri, 11 Jun 2021 16:33:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=Z2zlmHj+1HcVsICU+2gdJrF/4o7OgOCN/FyHrCzGZ6g=; b=Ycmy61KzvhOIZ98unkW6eYnKPnPkakxJV5MB/28JTLgLHhdwuzTe35sJlT4yPl1cQz uOrE3rqRORc9S1+9ujoAg6bn7OazKwdE7uwWXYcKiQIn+RTS7xAbatYP7LrAG0SeCcb1 WSN2kd5IGGrRodqR4nr6CZ5LyLeU2R2L/YDcEf3S1OaMpY+W2k6ELsVFjZwDiXPkBsGs NFXRcYOCH45qs19Axklf/tvLa2A7vREhL7MzP2A3q2Ps3w+DJD4B399m0Gyo9r3C7RKb DQAocYRTlsUQNtHbz+cl99ELT7/c9MUxsQA0unFhgdGUrC3xTHPgt5WBWRi+Y8cDK4+L sm/w== X-Gm-Message-State: AOAM530eMCIXKdmij5OpS06QGvibECn873JKMt4/rDhBEoepTPUwIWc1 R7v5L2c8hp8WtxKmWnO8dOo= X-Google-Smtp-Source: ABdhPJzZbySWhRyOkrWp6EOaPa7zyUyPkaWhFMgfEwdFMTM6Jbyt9M95x8X/q/432QsPVybj8D6RFw== X-Received: by 2002:a7b:c192:: with SMTP id y18mr22530884wmi.65.1623454437589; Fri, 11 Jun 2021 16:33:57 -0700 (PDT) Received: from rocinante ([95.155.85.46]) by smtp.gmail.com with ESMTPSA id x7sm8838753wre.8.2021.06.11.16.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Jun 2021 16:33:56 -0700 (PDT) Date: Sat, 12 Jun 2021 01:33:55 +0200 From: Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= To: Qi Liu Cc: will@kernel.org, mark.rutland@arm.com, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxarm@huawei.com, zhangshaokun@hisilicon.com Subject: Re: [PATCH v6 2/2] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU Message-ID: <20210611233355.GA183580@rocinante> References: <1622467951-32114-1-git-send-email-liuqi115@huawei.com> <1622467951-32114-3-git-send-email-liuqi115@huawei.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1622467951-32114-3-git-send-email-liuqi115@huawei.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210611_163400_867350_491BD17B X-CRM114-Status: GOOD ( 34.12 ) 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 SGkgUWksCgpUaGFuayB5b3UgZm9yIHNlbmRpbmcgdGhlIHBhdGNoIG92ZXIhCgpbLi4uXQo+ICsv Kgo+ICsgKiBUaGlzIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIFBDSWUgUE1VIFJDaUVQIGRldmlj ZS4gUmVsYXRlZAo+ICsgKiBwZXJmIGV2ZW50cyBhcmUgYmFuZHdpZHRoLCBiYW5kd2lkdGggdXRp bGl6YXRpb24sIGxhdGVuY3kKPiArICogZXRjLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjEgSGlTaWxpY29uIExpbWl0ZWQKPiArICogQXV0aG9yOiBRaSBMaXU8bGl1cWkxMTVAaHVhd2Vp LmNvbT4KPiArICovCgpBIHNtYWxsIG5pdHBpY2s6IG1pc3Npbmcgc3BhY2UgYmV0d2VlbiB5b3Vy IG5hbWUgYW5kIHRoZSBlLW1haWwgYWRkcmVzcy4KClsuLi5dCj4gK3N0YXRpYyBzc2l6ZV90IGhp c2lfcGNpZV9ldmVudF9zeXNmc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBk ZXZfZXh0X2F0dHJpYnV0ZSAqZWF0dHI7Cj4gKwo+ICsJZWF0dHIgPSBjb250YWluZXJfb2YoYXR0 ciwgc3RydWN0IGRldl9leHRfYXR0cmlidXRlLCBhdHRyKTsKPiArCj4gKwlyZXR1cm4gc3lzZnNf ZW1pdChidWYsICJjb25maWc9MHglbHhcbiIsICh1bnNpZ25lZCBsb25nKWVhdHRyLT52YXIpOwo+ ICt9CgpJIGFtIG5vdCB0aGF0IGZhbWlsaWFyIHdpdGggdGhlIHBlcmYgZHJpdmVycywgdGh1cyBJ IG1pZ2h0IGJlIGNvbXBsZXRlbHkKd3JvbmcgaGVyZSwgYnV0IHVzdWFsbHkgZm9yIHN5c2ZzIG9i amVjdHMgYSBzaW5nbGUgdmFsdWUgaXMgcHJlZmVycmVkLApzbyB0aGF0IHRoaXMgImNvbmZpZz0i IHRlY2huaWNhbGx5IHdvdWxkIG5vdCBiZSBuZWVkZWQsIHVubGVzcyB0aGlzIGlzCnNvbWV3aGF0 IGVzc2VudGlhbCB0byB0aGUgY29uc3VtZXJzIG9mIHRoaXMgYXR0cmlidXRlIHRvIGtub3cgd2hh dCB0aGUKdmFsdWUgaXM/IMKgV2hhdCBkbyB5b3UgdGhpbms/CgpbLi4uXQo+ICtzdGF0aWMgc3Np emVfdCBoaXNpX3BjaWVfaWRlbnRpZmllcl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ CQkgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkJIGNoYXIgKmJ1ZikKPiAr ewo+ICsJc3RydWN0IGhpc2lfcGNpZV9wbXUgKnBjaWVfcG11ID0gdG9fcGNpZV9wbXUoZGV2X2dl dF9kcnZkYXRhKGRldikpOwo+ICsKPiArCXJldHVybiBzeXNmc19lbWl0KGJ1ZiwgIjB4JXhcbiIs IHBjaWVfcG11LT5pZGVudGlmaWVyKTsKPiArfQoKV2hhdCBhYm91dCB1c2luZyB0aGUgIiUjeCIg Zm9ybWF0dGluZyBmbGFnPyAgSXQgd291bGQgYXV0b21hdGljYWxseQphZGRlZCB0aGUgIjB4IiBw cmVmaXgsIGV0Yy4KCj4gK3N0YXRpYyBzc2l6ZV90IGhpc2lfcGNpZV9idXNfc2hvdyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gKwkJCQkgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCj4gK3sKPiArCXN0cnVjdCBoaXNpX3BjaWVfcG11ICpwY2llX3BtdSA9IHRvX3BjaWVf cG11KGRldl9nZXRfZHJ2ZGF0YShkZXYpKTsKPiArCj4gKwlyZXR1cm4gc3lzZnNfZW1pdChidWYs ICIweCUwMnhcbiIsIFBDSV9CVVNfTlVNKHBjaWVfcG11LT5iZGZfbWluKSk7Cj4gK30KClNhbWUg YXMgYWJvdmUsIHdoYXQgYWJvdXQgIiUjMDJ4Ij8KClsuLi5dCj4gK3N0YXRpYyBib29sIGhpc2lf cGNpZV9wbXVfdmFsaWRfZmlsdGVyKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwKPiArCQkJCSAg ICAgICBzdHJ1Y3QgaGlzaV9wY2llX3BtdSAqcGNpZV9wbXUpCj4gK3sKPiArCXUzMiBzdWJldl9p ZHggPSBoaXNpX3BjaWVfZ2V0X3N1YmV2ZW50KGV2ZW50KTsKPiArCXUzMiBldmVudF9pZHggPSBo aXNpX3BjaWVfZ2V0X2V2ZW50KGV2ZW50KTsKPiArCXUzMiByZXF1ZXN0ZXJfaWQgPSBoaXNpX3Bj aWVfZ2V0X2JkZihldmVudCk7Cj4gKwo+ICsJaWYgKHN1YmV2X2lkeCA+IEhJU0lfUENJRV9TVUJF VkVOVF9NQVggfHwKPiArCSAgICBldmVudF9pZHggPiBISVNJX1BDSUVfRVZFTlRfTUFYKSB7Cj4g KwkJcGNpX2VycihwY2llX3BtdS0+cGRldiwKPiArCQkJIk1heCBldmVudCBpbmRleCBhbmQgbWF4 IHN1YmV2ZW50IGluZGV4IGlzOiAlZCwgJWQuXG4iLAo+ICsJCQlISVNJX1BDSUVfRVZFTlRfTUFY LCBISVNJX1BDSUVfU1VCRVZFTlRfTUFYKTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9CgpXYXMg dGhpcyBlcnJvciBtZXNzYWdlIGFib3ZlIGludGVuZGVkIHRvIGJlIGEgZGVidWcgbWVzc2FnZT8g IEl0J3MgYSBiaXQKb3BhcXVlIGluIHRlcm1zIHdoYXQgdGhlIGVycm9yIGFjdHVhbGx5IGlzIGhl cmUuICBXZSBtaWdodCBuZWVkIHRvIGNsZWFyCml0IHVwIGEgbGl0dGxlLgoKWy4uLl0KPiArc3Rh dGljIGJvb2wgaGlzaV9wY2llX3BtdV92YWxpZGF0ZV9ldmVudF9ncm91cChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQpCj4gK3sKPiArCXN0cnVjdCBwZXJmX2V2ZW50ICpzaWJsaW5nLCAqbGVhZGVy ID0gZXZlbnQtPmdyb3VwX2xlYWRlcjsKPiArCWludCBjb3VudGVycyA9IDE7CgpIb3cgYmlnIHRo aXMgY291bnRlciBjb3VsZCBiZWNvbWU/CgpXb3VsZCBpdCBldmVyIGJlIGdyZWF0ZXIgdGhhbiBI SVNJX1BDSUVfTUFYX0NPVU5URVJTPyAgSSBhbSBhc2tpbmcsIGFzCmlmIGl0IHdvdWxkIGJlIGV2 ZXIgZ3JlYXRlciwgdGhlbiBwZXJoYXBzIHVuc2lnbmVkIGludCB3b3VsZCBiZSBiZXR0ZXIKdG8g dXNlLCBhbmQgaWYgbm90LCB0aGVuIHBlcmhhcHMgc29tZXRoaW5nIHNtYWxsZXIgdGhhbiBpbnQ/ ICBXaGF0IGRvCnlvdSB0aGluaywgZG9lcyB0aGlzIGV2ZW4gbWFrZSBzZW5zZSB0byBjaGFuZ2U/ CgpbLi4uXQo+ICtzdGF0aWMgaW50IGhpc2lfcGNpZV9wbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQpCj4gK3sKPiArCXN0cnVjdCBoaXNpX3BjaWVfcG11ICpwY2llX3BtdSA9 IHRvX3BjaWVfcG11KGV2ZW50LT5wbXUpOwo+ICsKPiArCWV2ZW50LT5jcHUgPSBwY2llX3BtdS0+ b25fY3B1Owo+ICsKPiArCWlmIChldmVudC0+YXR0ci50eXBlICE9IGV2ZW50LT5wbXUtPnR5cGUp Cj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJLyogU2FtcGxpbmcgaXMgbm90IHN1cHBvcnRl ZC4gKi8KPiArCWlmIChpc19zYW1wbGluZ19ldmVudChldmVudCkgfHwgZXZlbnQtPmF0dGFjaF9z dGF0ZSAmIFBFUkZfQVRUQUNIX1RBU0spCj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ICsKPiAr CWlmICghaGlzaV9wY2llX3BtdV92YWxpZF9maWx0ZXIoZXZlbnQsIHBjaWVfcG11KSkgewo+ICsJ CXBjaV9lcnIocGNpZV9wbXUtPnBkZXYsICJJbnZhbGlkIGZpbHRlciFcbiIpOwo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsJfQoKWy4uLl0KPiArLyoKPiArICogVGhlIGJhbmR3aWR0aCwgbGF0ZW5j eSwgYnVzIHV0aWxpemF0aW9uIGFuZCBidWZmZXIgb2NjdXBhbmN5IGZlYXR1cmVzIGFyZQo+ICsg KiBjYWxjdWxhdGVkIGZyb20gZGF0YSBpbiBISVNJX1BDSUVfQ05UIGFuZCBleHRlbmRlZCBkYXRh IGluIEhJU0lfUENJRV9FWFRfQ05ULgo+ICsgKiBPdGhlciBmZWF0dXJlcyBhcmUgb2J0YWluZWQg b25seSBieSBISVNJX1BDSUVfQ05ULgo+ICsgKiBTbyBkYXRhIGFuZCBkYXRhX2V4dCBhcmUgcHJv Y2Vzc2VkIGluIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IHBlcmZvcm1hbmFjZQo+ICsgKiB2YWx1ZSBs aWtlLCBiYW5kd2lkdGgsIGxhdGVuY3ksIGV0Yy4KPiArICovCgpBIHNtYWxsIHR5cG8gaW4gdGhl IHdvcmxkICJwZXJmb3JtYW5jZSIgYWJvdmUuCgpbLi4uXQo+ICtzdGF0aWMgdTY0IGhpc2lfcGNp ZV9wbXVfZ2V0X3BlcmZvcm1hbmNlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdTY0IGRhdGEs Cj4gKwkJCQkJIHU2NCBkYXRhX2V4dCkKPiArewo+ICsjZGVmaW5lIENPTlZFUlRfRFdfVE9fQllU RSh4KQkoc2l6ZW9mKHUzMikgKiAoeCkpCgpJIHdvdWxkIG1vdmUgdGhpcyBtYWNybyBhdCB0aGUg dG9wIGFsb25nc2lkZSBvdGhlciBjb25zdGFudHMgYW5kIG1hY3JvcywKYXMgaGVyZSBpdCBtYWtl cyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZC4gIFdoYXQgZG8geW91IHRoaW5rPwoKWy4uLl0KPiAr c3RhdGljIGludCBoaXNpX3BjaWVfcG11X2lycV9yZWdpc3RlcihzdHJ1Y3QgcGNpX2RldiAqcGRl diwKPiArCQkJCSAgICAgIHN0cnVjdCBoaXNpX3BjaWVfcG11ICpwY2llX3BtdSkKPiArewo+ICsJ aW50IGlycSwgcmV0Owo+ICsKPiArCXJldCA9IHBjaV9hbGxvY19pcnFfdmVjdG9ycyhwZGV2LCAx LCAxLCBQQ0lfSVJRX01TSSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCXBjaV9lcnIocGRldiwg IkZhaWxlZCB0byBlbmFibGUgTVNJIHZlY3RvcnMsIHJldCA9ICVkIVxuIiwgcmV0KTsKPiArCQly ZXR1cm4gcmV0Owo+ICsJfQoKVGhpcyBpcyBhIG5pdHBpY2ssIHNvIGZlZWwgZnJlZSB0byBpZ25v cmUgaXQsIGJ1dCB3aGF0IGRvIHlvdSB0aGluayBvZgpjaGFuZ2luZyB0aGlzIChhbmQgYWxzbyBv dGhlciBtZXNzYWdlcyBhbGlrZSkgbWVzc2FnZSB0byBiZSwgZm9yCmV4YW1wbGU6CgogIHBjaV9l cnIocGRldiwgIkZhaWxlZCB0byBlbmFibGUgTVNJIHZlY3RvcnM6ICVkXG4iLCByZXQpOwoKV2h5 PyAgSSBwZXJzb25hbGx5IGRvbid0IGZpbmQgZGlzcGxheWluZyBhIHJldHVybiBjb2RlL3ZhbHVl IGZvbGxvd2VkIGJ5CmEgcHVuY3R1YXRpb24gZWFzeSB0byByZWFkLCBlc3BlY2lhbGx5IHdoZW4g bG9va2luZyB0aHJvdWdoIGEgbG90IG9mCmxpbmVzIGFuZCBvdGhlciBtZXNzYWdlcyBpbiB0aGUg a2VybmVsIHJpbmcgYnVmZmVyLgoKWy4uLl0KPiArCj4gKwlpcnEgPSBwY2lfaXJxX3ZlY3Rvcihw ZGV2LCAwKTsKPiArCXJldCA9IHJlcXVlc3RfaXJxKGlycSwgaGlzaV9wY2llX3BtdV9pcnEsCj4g KwkJCSAgSVJRRl9OT0JBTEFOQ0lORyB8IElSUUZfTk9fVEhSRUFELCAiaGlzaV9wY2llX3BtdSIs Cj4gKwkJCSAgcGNpZV9wbXUpOwo+ICsJaWYgKHJldCkgewo+ICsJCXBjaV9lcnIocGRldiwgIkZh aWxlZCB0byByZWdpc3RlciBpcnEsIHJldCA9ICVkIVxuIiwgcmV0KTsKPiArCQlwY2lfZnJlZV9p cnFfdmVjdG9ycyhwZGV2KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQoKSXQgd291bGQgYmUgIklS USIgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuCgpbLi4uXQo+ICtzdGF0aWMgaW50IGhpc2lf cGNpZV9wbXVfb2ZmbGluZV9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUg Km5vZGUpCj4gK3sKPiArCXN0cnVjdCBoaXNpX3BjaWVfcG11ICpwY2llX3BtdSA9IGhsaXN0X2Vu dHJ5X3NhZmUobm9kZSwKPiArCQkJCQkgc3RydWN0IGhpc2lfcGNpZV9wbXUsIG5vZGUpOwo+ICsJ dW5zaWduZWQgaW50IHRhcmdldDsKPiArCj4gKwkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoaXMgQ1BV IGRvZXNuJ3Qgb3duIHRoZSBQTVUgKi8KPiArCWlmIChwY2llX3BtdS0+b25fY3B1ICE9IGNwdSkK PiArCQlyZXR1cm4gMDsKPiArCj4gKwkvKiBDaG9vc2UgYSBuZXcgQ1BVIGZyb20gYWxsIG9ubGlu ZSBjcHVzLiAqLwo+ICsJdGFyZ2V0ID0gY3B1bWFza19maXJzdChjcHVfb25saW5lX21hc2spOwo+ ICsJaWYgKHRhcmdldCA+PSBucl9jcHVfaWRzKSB7Cj4gKwkJcGNpX2VycihwY2llX3BtdS0+cGRl diwgIlRoZXJlIGlzIG5vIGNwdSB0byBzZXQhXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KClRv IGJlIGNvbnNpc3RlbnQsIGl0IHdvdWxkIGJlICJDUFVzIiBhbmQgIkNQVSIgaW4gdGhlIGFib3Zl LgoKWy4uLl0KPiArc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGhpc2lfcGNpZV9wbXVf YnVzX2F0dHIgPQo+ICsJX19BVFRSKGJ1cywgMDQ0NCwgaGlzaV9wY2llX2J1c19zaG93LCBOVUxM KTsKWy4uLl0KPiArc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGhpc2lfcGNpZV9wbXVf Y3B1bWFza19hdHRyID0KPiArCV9fQVRUUihjcHVtYXNrLCAwNDQ0LCBoaXNpX3BjaWVfY3B1bWFz a19zaG93LCBOVUxMKTsKWy4uLl0KPiArc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGhp c2lfcGNpZV9wbXVfaWRlbnRpZmllcl9hdHRyID0KPiArCV9fQVRUUihpZGVudGlmaWVyLCAwNDQ0 LCBoaXNpX3BjaWVfaWRlbnRpZmllcl9zaG93LCBOVUxMKTsKCldvdWxkIGl0IGJlIGF0IHBvc3Np YmxlIGZvciBhbnkgb2YgdGhlIGFib3ZlIF9fQVRUUigpIG1hY3JvcyB0byBiZQpyZXBsYWNlZCB3 aXRoIHRoZSBERVZJQ0VfQVRUUl9STygpIG1hY3JvPyAgT3IgcGVyaGFwcyB3aXRoIF9fQVRUUl9S TygpCmlmIHRoZSBvdGhlciBvbmUgd291bGQgYmUgYSBnb29kIGZpdD8KClsuLi5dCj4gK3N0YXRp YyBpbnQgaGlzaV9wY2llX2luaXRfZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICt7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpOwo+ICsJaWYgKHJl dCkgewo+ICsJCXBjaV9lcnIocGRldiwgIkZhaWxlZCB0byBlbmFibGUgcGNpIGRldmljZSwgcmV0 ID0gJWQuXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcGNp X3JlcXVlc3RfbWVtX3JlZ2lvbnMocGRldiwgImhpc2lfcGNpZV9wbXUiKTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJcGNpX2VycihwZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3QgcGNpIG1lbSByZWdp b25zLCByZXQgPSAlZC5cbiIsCj4gKwkJCXJldCk7Cj4gKwkJcGNpX2Rpc2FibGVfZGV2aWNlKHBk ZXYpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9CgpJdCB3b3VsZCBiZSAiUENJIiBpbiBib3RoIGVy cm9yIG1lc3NhZ2VzIGFib3ZlLgoKWy4uLl0KPiArc3RhdGljIGludCBfX2luaXQgaGlzaV9wY2ll X21vZHVsZV9pbml0KHZvaWQpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gY3B1aHBf c2V0dXBfc3RhdGVfbXVsdGkoQ1BVSFBfQVBfUEVSRl9BUk1fSElTSV9QQ0lFX1BNVV9PTkxJTkUs Cj4gKwkJCQkgICAgICAiQVBfUEVSRl9BUk1fSElTSV9QQ0lFX1BNVV9PTkxJTkUiLAo+ICsJCQkJ ICAgICAgaGlzaV9wY2llX3BtdV9vbmxpbmVfY3B1LAo+ICsJCQkJICAgICAgaGlzaV9wY2llX3Bt dV9vZmZsaW5lX2NwdSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJcHJfZXJyKCJGYWlsZWQgdG8gc2V0 dXAgUENJRSBQTVUgaG90cGx1ZywgcmV0ID0gJWQuXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7 Cj4gKwl9CgpJdCB3b3VsZCBiZSAiUENJZSIgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuCgoJ S3J6eXN6dG9mCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==