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 C6225C74A44 for ; Tue, 14 Mar 2023 18:13:23 +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:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=YcJP/4QU9ZFIUv78WR6Ozjr+5TI/Qn23C/+ItCktiP8=; b=cQSuoR5/HpWRnf 8OO3xnu73dWkUvj2fTv+qFfoi3i6xxmdivJ1yhI0C5N+nZhHC77WJu1I1Ngb53u9BYSOnhSRYLZ24 jGUbaKfgSQr4dclwmJmO6cwaAAYyM0jLua/CQmPHLhzuuJPjtuBnidzcxwEpfPgsg/igb1gSXIcKX mKcXGX/z6BATUv/H50tDiPwHuwHoXPmPXjig7gWYO8I+bDkYPZOcWMeAkgc7fDRBcp5YkAAcRigoe ueSWIaSlPcScn83GeqUIaM4aiEedvacpGT6IGYW2FpdBplf2R0r5XWtbWzBnjXx4HQvmrQoyqxK2M AK58TjxE+PD2vXIZtm/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pc98F-00B8wA-35; Tue, 14 Mar 2023 18:12:19 +0000 Received: from mga01.intel.com ([192.55.52.88]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pc989-00B8vA-1P for linux-arm-kernel@lists.infradead.org; Tue, 14 Mar 2023 18:12:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1678817533; x=1710353533; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=1m8b0XgIETU7LVux4S4iwRtfoDtIUtxeOTumPJzLZRQ=; b=jGTyM7k4+TFAIq9pDrkpzIocschRB2tbAlH3gy3V3g/0yosLt/Wl1f0U m4zdO043rqZQET7cvNRcTsvp+tsfXWUIkpjIOf28jHhlFGxzSs4eY/HXC Mw9okWR7x7KH1y9SE29EVTkeuvcN7EHClcitBTQbKa5Twiy+0Wx+6H6gZ NloE0KDhle+f6an36LFzoWFrDLUkrOHTB0a0o50PYRnEigUb9KI+jX/+h 2zIX1oFVFonstHGnkVKfOxI8HUfXXd51HSKhWwJDVQ3YaDbUtxvyLxOnY aYmnMf+ZihKfqD7dXHO4UPDc46NeK2xPmbmudOxT4VDlSX9g1M1Venu5/ w==; X-IronPort-AV: E=McAfee;i="6500,9779,10649"; a="365177225" X-IronPort-AV: E=Sophos;i="5.98,260,1673942400"; d="scan'208";a="365177225" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2023 11:12:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10649"; a="925031369" X-IronPort-AV: E=Sophos;i="5.98,260,1673942400"; d="scan'208";a="925031369" Received: from julieape-mobl.amr.corp.intel.com (HELO [10.209.119.116]) ([10.209.119.116]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2023 11:12:12 -0700 Message-ID: <63619dd6-8e59-89f1-8e3a-766ed9501f1d@linux.intel.com> Date: Tue, 14 Mar 2023 11:12:11 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.4.2 Subject: Re: [PATCH v2 1/2] PCI/ATS: Add a helper function to configure ATS STU of a PF Content-Language: en-US To: Bjorn Helgaas Cc: Ganapatrao Kulkarni , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, joro@8bytes.org, bhelgaas@google.com, robin.murphy@arm.com, will@kernel.org, jean-philippe@linaro.org, darren@os.amperecomputing.com, scott@os.amperecomputing.com References: <20230314171046.GA1655423@bhelgaas> From: Sathyanarayanan Kuppuswamy In-Reply-To: <20230314171046.GA1655423@bhelgaas> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230314_111215_237704_783BE2B7 X-CRM114-Status: GOOD ( 39.40 ) 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 CgpPbiAzLzE0LzIzIDEwOjEwIEFNLCBCam9ybiBIZWxnYWFzIHdyb3RlOgo+IE9uIFR1ZSwgTWFy IDE0LCAyMDIzIGF0IDA5OjUwOjA2QU0gLTA3MDAsIFNhdGh5YW5hcmF5YW5hbiBLdXBwdXN3YW15 IHdyb3RlOgo+PiBPbiAzLzE0LzIzIDk6MDIgQU0sIEJqb3JuIEhlbGdhYXMgd3JvdGU6Cj4+PiBP biBUdWUsIE1hciAxNCwgMjAyMyBhdCAwODowNjowN1BNICswNTMwLCBHYW5hcGF0cmFvIEt1bGth cm5pIHdyb3RlOgo+Pj4+IE9uIDE0LTAzLTIwMjMgMDY6MjIgcG0sIFNhdGh5YW5hcmF5YW5hbiBL dXBwdXN3YW15IHdyb3RlOgo+Pj4+PiBPbiAzLzE0LzIzIDM6MDggQU0sIEdhbmFwYXRyYW8gS3Vs a2Fybmkgd3JvdGU6Cj4+Pj4+PiBPbiAxNC0wMy0yMDIzIDA0OjAwIGFtLCBTYXRoeWFuYXJheWFu YW4gS3VwcHVzd2FteSB3cm90ZToKPj4+Pj4+PiBPbiAzLzEzLzIzIDI6MTIgUE0sIEJqb3JuIEhl bGdhYXMgd3JvdGU6Cj4+Pj4+Pj4+IE9uIE1vbiwgRmViIDI3LCAyMDIzIGF0IDA4OjIxOjM2UE0g LTA4MDAsIEdhbmFwYXRyYW8gS3Vsa2Fybmkgd3JvdGU6Cj4+Pj4+Pj4+PiBBcyBwZXIgUENJIHNw ZWNpZmljYXRpb24gKFBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNhdGlvbgo+Pj4+Pj4+Pj4gUmV2 aXNpb24gNi4wLCBTZWN0aW9uIDEwLjUpIGJvdGggUEYgYW5kIFZGcyBvZiBhIFBDSSBFUAo+Pj4+ Pj4+Pj4gYXJlIHBlcm1pdHRlZCB0byBiZSBlbmFibGVkIGluZGVwZW5kZW50bHkgZm9yIEFUUwo+ Pj4+Pj4+Pj4gY2FwYWJpbGl0eSwgaG93ZXZlciB0aGUgU1RVKFNtYWxsZXN0IFRyYW5zbGF0aW9u IFVuaXQpIGlzCj4+Pj4+Pj4+PiBzaGFyZWQgYmV0d2VlbiBQRiBhbmQgVkZzLiBGb3IgVkZzLCBp dCBpcyBoYXJkd2lyZWQgdG8KPj4+Pj4+Pj4+IFplcm8gYW5kIHRoZSBhc3NvY2lhdGVkIFBGJ3Mg dmFsdWUgYXBwbGllcyB0byBWRnMuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gSW4gdGhlIGN1cnJlbnQg Y29kZSwgdGhlIFNUVSBpcyBiZWluZyBjb25maWd1cmVkIHdoaWxlCj4+Pj4+Pj4+PiBlbmFibGlu ZyB0aGUgUEYgQVRTLiAgSGVuY2UsIGl0IGlzIG5vdCBhYmxlIHRvIGVuYWJsZSBBVFMKPj4+Pj4+ Pj4+IGZvciBWRnMsIGlmIGl0IGlzIG5vdCBlbmFibGVkIG9uIHRoZSBhc3NvY2lhdGVkIFBGCj4+ Pj4+Pj4+PiBhbHJlYWR5Lgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEFkZGluZyBhIGZ1bmN0aW9uIHBj aV9hdHNfc3R1X2NvbmZpZ3VyZSgpLCB3aGljaCBjYW4gYmUKPj4+Pj4+Pj4+IGNhbGxlZCB0byBj b25maWd1cmUgdGhlIFNUVSBkdXJpbmcgUEYgZW51bWVyYXRpb24uICBMYXR0ZXIKPj4+Pj4+Pj4+ IGVudW1lcmF0aW9ucyBvZiBWRnMgY2FuIHN1Y2Nlc3NmdWxseSBlbmFibGUgQVRTCj4+Pj4+Pj4+ PiBpbmRlcGVuZGVudGx5Lgo+Pj4KPj4+Pj4+Pj4+IEBAIC00Niw2ICs0NiwzNSBAQCBib29sIHBj aV9hdHNfc3VwcG9ydGVkKHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4+Pj4+Pj4+PiAgwqAgfQo+Pj4+ Pj4+Pj4gIMKgIEVYUE9SVF9TWU1CT0xfR1BMKHBjaV9hdHNfc3VwcG9ydGVkKTsKPj4+Pj4+Pj4+ ICDCoCArLyoqCj4+Pj4+Pj4+PiArICogcGNpX2F0c19zdHVfY29uZmlndXJlIC0gQ29uZmlndXJl IFNUVSBvZiBhIFBGLgo+Pj4+Pj4+Pj4gKyAqIEBkZXY6IHRoZSBQQ0kgZGV2aWNlCj4+Pj4+Pj4+ PiArICogQHBzOiB0aGUgSU9NTVUgcGFnZSBzaGlmdAo+Pj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+PiAr ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIG9uIGZhaWx1cmUuCj4+Pj4+Pj4+ PiArICovCj4+Pj4+Pj4+PiAraW50IHBjaV9hdHNfc3R1X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2Rl diAqZGV2LCBpbnQgcHMpCj4+Pj4+Pj4+PiArewo+Pj4+Pj4+Pj4gK8KgwqDCoCB1MTYgY3RybDsK Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICvCoMKgwqAgaWYgKGRldi0+YXRzX2VuYWJsZWQgfHwgZGV2 LT5pc192aXJ0Zm4pCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4+Pj4+ Cj4+Pj4+Pj4+IEkgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGZvciB0aGUgVkYgY2FzZSBvbiB0aGUg YXNzdW1wdGlvbgo+Pj4+Pj4+PiB0aGF0IGl0J3MgbGlrZWx5IGFuIGVycm9yIGluIHRoZSBjYWxs ZXIuwqAgSSBndWVzcyBvbmUgY291bGQKPj4+Pj4+Pj4gYXJndWUgdGhhdCBpdCBzaW1wbGlmaWVz IHRoZSBjYWxsZXIgaWYgaXQgZG9lc24ndCBoYXZlIHRvCj4+Pj4+Pj4+IGNoZWNrIGZvciBQRiB2 cyBWRi7CoCBCdXQgdGhlIGZhY3QgdGhhdCBTVFUgaXMgc2hhcmVkIGJldHdlZW4KPj4+Pj4+Pj4g UEYgYW5kIFZGcyBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiB1bmRlcnN0YW5kaW5nIGhvdyBBVFMK Pj4+Pj4+Pj4gd29ya3MsIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBkaXN0 aW5jdGlvbgo+Pj4+Pj4+PiBhbnl3YXkuCj4+Pj4+Pj4KPj4+Pj4+PiBJIGhhdmUgYWxyZWFkeSBh c2tlZCB0aGlzIHF1ZXN0aW9uLiBCdXQgbGV0IG1lIHJlcGVhdCBpdC4KPj4+Pj4+Pgo+Pj4+Pj4+ IFdlIGRvbid0IGhhdmUgYW55IGNoZWNrcyBmb3IgdGhlIFBGIGNhc2UgaGVyZS4gVGhhdCBtZWFu cyB5b3UKPj4+Pj4+PiBjYW4gcmUtY29uZmlndXJlIHRoZSBTVFUgYXMgbWFueSB0aW1lcyBhcyB5 b3Ugd2FudCB1bnRpbCBBVFMKPj4+Pj4+PiBpcyBlbmFibGVkIGluIFBGLiBTbywgaWYgdGhlcmUg YXJlIGFjdGl2ZSBWRnMgd2hpY2ggdXNlcyB0aGlzCj4+Pj4+Pj4gU1RVLCBjYW4gUEYgcmUtY29u ZmlndXJlIHRoZSBTVFUgYXQgd2lsbD8KPj4+Pj4+Cj4+Pj4+PiBJTU8sIFNpbmNlIFNUVSBpcyBz aGFyZWQsIHByb2dyYW1taW5nIGl0IG11bHRpcGxlIHRpbWVzIGlzIG5vdCBleHBlY3RlZCBmcm9t IGNhbGxlcnMgY29kZSBkbyBpdCwgaG93ZXZlciB3ZSBjYW4gYWRkIGJlbG93IGNoZWNrIHRvIGFs bG93IHRvIHByb2dyYW0gU1RVIG9uY2UgZnJvbSBhIFBGLgo+Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS9hdHMuYyBiL2RyaXZlcnMvcGNpL2F0cy5jCj4+Pj4+PiBpbmRleCAx NjExYmZhMWQ1ZGEuLmY3YmIwMTA2OGUxOCAxMDA2NDQKPj4+Pj4+IC0tLSBhL2RyaXZlcnMvcGNp L2F0cy5jCj4+Pj4+PiArKysgYi9kcml2ZXJzL3BjaS9hdHMuYwo+Pj4+Pj4gQEAgLTYwLDYgKzYw LDEwIEBAIGludCBwY2lfYXRzX3N0dV9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50 IHBzKQo+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIGlmIChkZXYtPmF0c19lbmFibGVkIHx8IGRldi0+ aXNfdmlydGZuKQo+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g MDsKPj4+Pj4+Cj4+Pj4+PiArwqDCoMKgwqDCoMKgIC8qIENvbmZpZ3VyZWQgYWxyZWFkeSAqLwo+ Pj4+Pj4gK8KgwqDCoMKgwqDCoCBpZiAoZGV2LT5hdHNfc3R1KQo+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4+Cj4+Pj4+IFRoZW9yZXRpY2FsbHksIHlv dSBjYW4gcmUtY29uZmlndXJlIFNUVSBhcyBsb25nIGFzIG5vIG9uZSBpcyB1c2luZwo+Pj4+PiBp dC4gSW5zdGVhZCBvZiB0aGlzIGNoZWNrLCBpcyB0aGVyZSBhIHdheSB0byBjaGVjayB3aGV0aGVy IHRoZXJlCj4+Pj4+IGFyZSBhY3RpdmUgVk1zIHdoaWNoIGVuYWJsZXMgQVRTPwo+Pj4+Cj4+Pj4g WWVzIEkgYWdyZWUsIHRoZXJlIGlzIG5vIGxpbWl0YXRpb24gb24gaG93IG1hbnkgdGltZXMgeW91 IHdyaXRlIFNUVQo+Pj4+IGJpdHMsIGJ1dCBwcmFjdGljYWxseSBpdCBpcyBoYXBwZW5pbmcgd2hp bGUgUEYgaXMgZW51bWVyYXRlZC4KPj4+Pgo+Pj4+IFRoZSB1c2FnZSBvZiBmdW5jdGlvbiBwY2lf YXRzX3N0dV9jb25maWd1cmUgaXMgYWxtb3N0Cj4+Pj4gc2ltaWxhcihzdWJzZXQpIHRvIHBjaV9l bmFibGVfYXRzIGFuZCBvbmx5IGRpZmZlcmVuY2UgaXMgb25lIGRvZXMKPj4+PiBBVFMgZW5hYmxl ICsgU1RVIHByb2dyYW0gYW5kIGFub3RoZXIgZG9lcyBvbmx5IFNUVSBwcm9ncmFtLgo+Pj4KPj4+ IFdoYXQgd291bGQgeW91IHRoaW5rIG9mIHJlbW92aW5nIHRoZSBTVFUgdXBkYXRlIGZlYXR1cmUg ZnJvbQo+Pj4gcGNpX2VuYWJsZV9hdHMoKSBzbyBpdCBhbHdheXMgZmFpbHMgaWYgcGNpX2F0c19z dHVfY29uZmlndXJlKCkgaGFzIG5vdAo+Pj4gYmVlbiBjYWxsZWQsIGV2ZW4gd2hlbiBjYWxsZWQg b24gdGhlIFBGLCBlLmcuLAo+Pj4KPj4+ICAgaWYgKHBzICE9IHBjaV9waHlzZm4oZGV2KS0+YXRz X3N0dSkKPj4+ICAgICByZXR1cm4gLUVJTlZBTDsKPj4KPj4gSWYgd2UgYXJlIHJlbW92aW5nIHRo ZSBTVFUgdXBkYXRlIGZyb20gcGNpX2VuYWJsZV9hdHMoKSwgd2h5Cj4+IGV2ZW4gYWxsb3cgcGFz c2luZyAicHMgKHBhZ2Ugc2hpZnQpIiBwYXJhbWV0ZXI/IElNTywgd2UgY2FuIGFzc3VtZSB0aGF0 Cj4+IGZvciBTVFUgcmVjb25maWd1cmUsIHVzZXJzIHdpbGwgY2FsbCBwY2lfYXRzX3N0dV9jb25m aWd1cmUoKS4KPiAKPiBUaGUgcmVhc29uIHRvIHBhc3MgInBzIiB3b3VsZCBiZSB0byB2ZXJpZnkg dGhhdCB0aGUgU1RVIHRoZSBjYWxsZXIKPiBwbGFucyB0byB1c2UgbWF0Y2hlcyB0aGUgYWN0dWFs IFNUVS4KCkRvIHdlIHJlYWxseSBuZWVkIHRvIHZlcmlmeSBpdD8gTXkgdGhpbmtpbmcgaXMsIGJ5 IGludHJvZHVjaW5nCnBjaV9hdHNfc3R1X2NvbmZpZ3VyZSgpIHdlIGFyZSBhbHJlYWR5IHRyeWlu ZyB0byBkZWNvdXBsZSB0aGUgU1RVIGNvbmZpZwpmcm9tIHBjaV9lbmFibGVfYXRzKCkuIFNvIHdo eSBhZ2FpbiBjaGVjayBmb3IgaXQgd2hlbiBlbmFibGluZyBBVFM/Cgo+IAo+PiBTaW5jZSB6ZXJv IGlzIGEgdmFsaWQgU1RVLCBlbmFibGluZyBBVFMgY2FuIGJlIGRlY291cGxlZCBmcm9tIFNUVQo+ PiB1cGRhdGUuCj4+Cj4+PiAgIHBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgZGV2LT5hdHNfY2Fw ICsgUENJX0FUU19DVFJMLCAmY3RybCk7Cj4+PiAgIGN0cmwgfD0gUENJX0FUU19DVFJMX0VOQUJM RTsKPj4+ICAgcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgZGV2LT5hdHNfY2FwICsgUENJX0FU U19DVFJMLCBjdHJsKTsKPj4+Cj4+PiBXb3VsZCBwcm9iYWJseSBhbHNvIGhhdmUgdG8gc2V0ICJk ZXYtPmF0c19zdHUgPSAwIiBpbgo+Pj4gcGNpX2Rpc2FibGVfYXRzKCkgdG8gYWxsb3cgdGhlIHBv c3NpYmlsaXR5IG9mIGNhbGxpbmcKPj4+IHBjaV9hdHNfc3R1X2NvbmZpZ3VyZSgpIGFnYWluLgo+ Pj4KPj4+PiBJTU8sIEkgZG9udCB0aGluaywgdGhlcmUgaXMgYW55IG5lZWQgdG8gZmluZCBob3cg bWFueSBhY3RpdmUgVk1zCj4+Pj4gd2l0aCBhdHRhY2hlZCBWRnMgYW5kIGl0IGlzIG5vdCBkb25l IGZvciBwY2lfZW5hYmxlX2F0cyBhcyB3ZWxsLgo+Pj4KPj4+IEVuYWJsaW5nIG9yIGRpc2FibGlu ZyBBVFMgaW4gYSBQRiBvciBWRiBoYXMgbm8gZWZmZWN0IG9uIG90aGVyCj4+PiBmdW5jdGlvbnMu Cj4+Pgo+Pj4gQnV0IGNoYW5naW5nIFNUVSB3aGlsZSBhIFZGIGhhcyBBVFMgZW5hYmxlZCB3b3Vs ZCBkZWZpbml0ZWx5IGJyZWFrIGFueQo+Pj4gdXNlciBvZiB0aGF0IFZGLCBzbyBpZiBpdCdzIHBy YWN0aWNhbCB0byB2ZXJpZnkgdGhhdCBubyBWRnMgaGF2ZSBBVFMKPj4+IGVuYWJsZWQsIEkgdGhp bmsgd2Ugc2hvdWxkLgo+Pgo+PiBJIGFsc28gdGhpbmsgaXQgaXMgYmV0dGVyIHRvIGNoZWNrIGZv ciBhIGF0c19lbmFibGVkIHN0YXR1cyBvZiBWRiBiZWZvcmUKPj4gY29uZmlndXJpbmcgdGhlIFNU VS4KPj4KPj4gTWF5IGJlIHNvbWV0aGluZyBsaWtlIGJlbG93ICh1bnRlc3RlZCksCj4+Cj4+IHN0 YXRpYyBpbnQgaXNfYXRzX2VuYWJsZWRfaW5fdmYoc3RydWN0IHBjaV9kZXYgKmRldikKPj4gewo+ PiAgICAgICAgIHN0cnVjdCBwY2lfc3Jpb3YgKmlvdiA9IGRldi0+c3Jpb3Y7Cj4+ICAgICAgICAg c3RydWN0IHBjaV9kZXYgKnZkZXY7Cj4+Cj4+ICAgICAgICAgaWYgKGRldi0+aXNfdmlydGZuKSAK Pj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pgo+PiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBwY2lfc3Jpb3ZfZ2V0X3RvdGFsdmZzKHBkZXYpOyBpKyspIHsKPj4gICAgICAgICAg ICAgICAgIHZkZXYgPSBwY2lfZ2V0X2RvbWFpbl9idXNfYW5kX3Nsb3QocGNpX2RvbWFpbl9ucihk ZXYtPmJ1cyksCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBjaV9pb3ZfdmlydGZuX2J1cyhkZXYsIGkpLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwY2lfaW92X3ZpcnRmbl9kZXZmbihkZXYsIGkpKTsKPiAKPiBJ IHdvdWxkIHRyeSBoYXJkIHRvIGF2b2lkIHBjaV9nZXRfZG9tYWluX2J1c19hbmRfc2xvdCgpLiAg VGhhdCdzCj4gZXhwZW5zaXZlIChzZWFyY2hlcyAqYWxsKiBQQ0kgZGV2cyB3aXRoIGZvcl9lYWNo X3BjaV9kZXYoKSkgYW5kCj4gcmVxdWlyZXMgZGVhbGluZyB3aXRoIHJlZmVyZW5jZSBjb3VudHMu Cj4gCj4gTWF5YmUgYW4gYXRvbWljIGNvdW50IGluIHRoZSBQRiBvZiBWRnMgd2l0aCBBVFMgZW5h YmxlZC4KPiAKPj4gICAgICAgICAgICAgICAgIGlmICh2ZGV2ICYmIHZkZXYtPmF0c19lbmFibGVk KQo+PiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKPj4gICAgICAgICB9Cj4+Cj4+ ICAgICAgICAgcmV0dXJuIDA7Cj4+Cj4+IH0KPj4KPj4gaW50IHBjaV9hdHNfc3R1X2NvbmZpZ3Vy ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcHMpCj4+IHsKPj4gLi4uCj4+IGlmIChpc19hdHNf ZW5hYmxlZF9pbl92ZihkZXYpKQo+PiAgICByZXR1cm4gLUVCVVNZOwo+Pgo+Pj4KPj4+PiBBbHNv IHRoZSBjYWxsZXIgaGFzIHRoZSByZXF1aXJlbWVudCB0byBjYWxsIGVpdGhlcgo+Pj4+IHBjaV9h dHNfc3R1X2NvbmZpZ3VyZSBvciBwY2lfZW5hYmxlX2F0cyB3aGlsZSBlbnVtZXJhdGluZyB0aGUg UEYuCj4+Pj4KPj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCBpZiAoIXBjaV9hdHNfc3VwcG9ydGVkKGRl dikpCj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFM Owo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gK8KgwqDCoCBpZiAoIXBjaV9hdHNfc3Vw cG9ydGVkKGRldikpCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ Pj4+Pj4+PiArCj4+Pj4+Pj4+PiArwqDCoMKgIGlmIChwcyA8IFBDSV9BVFNfTUlOX1NUVSkKPj4+ Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+Pj4+Pj4+ICsKPj4+Pj4+ Pj4+ICvCoMKgwqAgZGV2LT5hdHNfc3R1ID0gcHM7Cj4+Pj4+Pj4+PiArwqDCoMKgIHBjaV9yZWFk X2NvbmZpZ193b3JkKGRldiwgZGV2LT5hdHNfY2FwICsgUENJX0FUU19DVFJMLCAmY3RybCk7Cj4+ Pj4+Pj4+PiArwqDCoMKgIGN0cmwgfD0gUENJX0FUU19DVFJMX1NUVShkZXYtPmF0c19zdHUgLSBQ Q0lfQVRTX01JTl9TVFUpOwo+Pj4+Pj4+Pj4gK8KgwqDCoCBwY2lfd3JpdGVfY29uZmlnX3dvcmQo ZGV2LCBkZXYtPmF0c19jYXAgKyBQQ0lfQVRTX0NUUkwsIGN0cmwpOwo+Pj4+Pj4+Pj4gKwo+Pj4+ Pj4+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+PiArRVhQT1JUX1NZ TUJPTF9HUEwocGNpX2F0c19zdHVfY29uZmlndXJlKTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICDC oCAvKioKPj4+Pj4+Pj4+ICDCoMKgICogcGNpX2VuYWJsZV9hdHMgLSBlbmFibGUgdGhlIEFUUyBj YXBhYmlsaXR5Cj4+Pj4+Pj4+PiAgwqDCoCAqIEBkZXY6IHRoZSBQQ0kgZGV2aWNlCj4+Pj4+Pj4+ PiBAQCAtNjgsOCArOTcsOCBAQCBpbnQgcGNpX2VuYWJsZV9hdHMoc3RydWN0IHBjaV9kZXYgKmRl diwgaW50IHBzKQo+Pj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsK Pj4+Pj4+Pj4+ICDCoCDCoMKgwqDCoMKgIC8qCj4+Pj4+Pj4+PiAtwqDCoMKgwqAgKiBOb3RlIHRo YXQgZW5hYmxpbmcgQVRTIG9uIGEgVkYgZmFpbHMgdW5sZXNzIGl0J3MgYWxyZWFkeSBlbmFibGVk Cj4+Pj4+Pj4+PiAtwqDCoMKgwqAgKiB3aXRoIHRoZSBzYW1lIFNUVSBvbiB0aGUgUEYuCj4+Pj4+ Pj4+PiArwqDCoMKgwqAgKiBOb3RlIHRoYXQgZW5hYmxpbmcgQVRTIG9uIGEgVkYgZmFpbHMgdW5s ZXNzIGl0J3MgYWxyZWFkeQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgICogY29uZmlndXJlZCB3aXRoIHRo ZSBzYW1lIFNUVSBvbiB0aGUgUEYuCj4+Pj4+Pj4+PiAgwqDCoMKgwqDCoMKgICovCj4+Pj4+Pj4+ PiAgwqDCoMKgwqDCoCBjdHJsID0gUENJX0FUU19DVFJMX0VOQUJMRTsKPj4+Pj4+Pj4+ICDCoMKg wqDCoMKgIGlmIChkZXYtPmlzX3ZpcnRmbikgewo+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvcGNpLWF0cy5oIGIvaW5jbHVkZS9saW51eC9wY2ktYXRzLmgKPj4+Pj4+Pj4+IGlu ZGV4IGRmNTRjZDViMTVkYi4uN2Q2MmE5MmFhZjIzIDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEvaW5j bHVkZS9saW51eC9wY2ktYXRzLmgKPj4+Pj4+Pj4+ICsrKyBiL2luY2x1ZGUvbGludXgvcGNpLWF0 cy5oCj4+Pj4+Pj4+PiBAQCAtOCw2ICs4LDcgQEAKPj4+Pj4+Pj4+ICDCoCAvKiBBZGRyZXNzIFRy YW5zbGF0aW9uIFNlcnZpY2UgKi8KPj4+Pj4+Pj4+ICDCoCBib29sIHBjaV9hdHNfc3VwcG9ydGVk KHN0cnVjdCBwY2lfZGV2ICpkZXYpOwo+Pj4+Pj4+Pj4gIMKgIGludCBwY2lfZW5hYmxlX2F0cyhz dHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcHMpOwo+Pj4+Pj4+Pj4gK2ludCBwY2lfYXRzX3N0dV9j b25maWd1cmUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHBzKTsKPj4+Pj4+Pj4+ICDCoCB2b2lk IHBjaV9kaXNhYmxlX2F0cyhzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKPj4+Pj4+Pj4+ICDCoCBpbnQg cGNpX2F0c19xdWV1ZV9kZXB0aChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKPj4+Pj4+Pj4+ICDCoCBp bnQgcGNpX2F0c19wYWdlX2FsaWduZWQoc3RydWN0IHBjaV9kZXYgKmRldik7Cj4+Pj4+Pj4+PiBA QCAtMTYsNiArMTcsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGNpX2F0c19zdXBwb3J0ZWQoc3Ry dWN0IHBjaV9kZXYgKmQpCj4+Pj4+Pj4+PiAgwqAgeyByZXR1cm4gZmFsc2U7IH0KPj4+Pj4+Pj4+ ICDCoCBzdGF0aWMgaW5saW5lIGludCBwY2lfZW5hYmxlX2F0cyhzdHJ1Y3QgcGNpX2RldiAqZCwg aW50IHBzKQo+Pj4+Pj4+Pj4gIMKgIHsgcmV0dXJuIC1FTk9ERVY7IH0KPj4+Pj4+Pj4+ICtzdGF0 aWMgaW5saW5lIGludCBwY2lfYXRzX3N0dV9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKmQsIGlu dCBwcykKPj4+Pj4+Pj4+ICt7IHJldHVybiAtRU5PREVWOyB9Cj4+Pj4+Pj4+PiAgwqAgc3RhdGlj IGlubGluZSB2b2lkIHBjaV9kaXNhYmxlX2F0cyhzdHJ1Y3QgcGNpX2RldiAqZCkgeyB9Cj4+Pj4+ Pj4+PiAgwqAgc3RhdGljIGlubGluZSBpbnQgcGNpX2F0c19xdWV1ZV9kZXB0aChzdHJ1Y3QgcGNp X2RldiAqZCkKPj4+Pj4+Pj4+ICDCoCB7IHJldHVybiAtRU5PREVWOyB9Cj4+Cj4+IC0tIAo+PiBT YXRoeWFuYXJheWFuYW4gS3VwcHVzd2FteQo+PiBMaW51eCBLZXJuZWwgRGV2ZWxvcGVyCj4+Cj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cj4+IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwo+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwKCi0tIApTYXRoeWFuYXJheWFuYW4gS3VwcHVzd2FteQpMaW51eCBLZXJu ZWwgRGV2ZWxvcGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==