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 8BB44C25B75 for ; Thu, 6 Jun 2024 11:04:49 +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=mk+5Ps4YMXlq7EprNeRy+meub+oDzWuxiq1IwJeen84=; b=R21afmj0M1XNCz WTF2Gmd5o8/VNTIb3vZO87DOQfXJIexfw4rpid2aYMT7rzO8Gj7bClz1AEE67w1gQbtOPZ3dUQi/W iSDYnpaxYJuhOzBW8z4ejzeft89crfL7mmCR/OKRcZBSlOi9DULWUgmltpWL/dC34mLdEWmoiF5Wa VfXDrOEbCWRboz8Uy/p499gucg/1dCzG9/SeSD7tHHbx0TUlNVLWhbybOmIRKIpbTf2k0y00vZp0m sUAJtFJk8ajXAmYw/sQZX0yiCjeoxhzmKS5RPrfHjF1AJsB08R2SyxBw52VxSglF59Y8oekxXG5yP irrz49O+Boa6x2X1nENw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFAv0-00000009Thi-2Ot6; Thu, 06 Jun 2024 11:04:30 +0000 Received: from lelv0143.ext.ti.com ([198.47.23.248]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sFAuw-00000009Th2-24Y6 for linux-arm-kernel@lists.infradead.org; Thu, 06 Jun 2024 11:04:29 +0000 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 456B46Og100174; Thu, 6 Jun 2024 06:04:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1717671846; bh=20X6I5VDlzPvydZWN+ufD39ZfcX3t7agcBykyGbFZcA=; h=Date:Subject:To:CC:References:From:In-Reply-To; b=X2/jq/PV/wz6I8IH7dSClKdOQ/skJn01ghoRGvShsTTV2ub54buEyx2JXCQw+nAa3 /8X77JRCI9y0dk/LDbT+sujWi/fa00Vep1Pq9IUhwiQs8cgHBcKSjJcDanNmO3TDfz CLc93IsbTnBI2xl1mqaBkctgjIY8XvEy80qF1i5I= Received: from DLEE114.ent.ti.com (dlee114.ent.ti.com [157.170.170.25]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 456B46XR059783 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 6 Jun 2024 06:04:06 -0500 Received: from DLEE115.ent.ti.com (157.170.170.26) by DLEE114.ent.ti.com (157.170.170.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Thu, 6 Jun 2024 06:04:06 -0500 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DLEE115.ent.ti.com (157.170.170.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Thu, 6 Jun 2024 06:04:05 -0500 Received: from [10.24.69.25] (danish-tpc.dhcp.ti.com [10.24.69.25]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 456B3xBx034871; Thu, 6 Jun 2024 06:04:00 -0500 Message-ID: Date: Thu, 6 Jun 2024 16:33:58 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH net-next v9 2/2] net: ti: icssg_prueth: add TAPRIO offload support To: Vladimir Oltean CC: Jan Kiszka , Dan Carpenter , Andrew Lunn , Simon Horman , Diogo Ivo , Wolfram Sang , Randy Dunlap , Niklas Schnelle , Vignesh Raghavendra , Richard Cochran , Roger Quadros , Paolo Abeni , Jakub Kicinski , Eric Dumazet , "David S. Miller" , , , , , Jacob Keller , Roger Quadros References: <20240531044512.981587-3-danishanwar@ti.com> <20240531044512.981587-3-danishanwar@ti.com> <20240531135157.aaxgslyur5br6zkb@skbuf> <20240531044512.981587-1-danishanwar@ti.com> <20240531044512.981587-1-danishanwar@ti.com> <20240531044512.981587-3-danishanwar@ti.com> <20240531044512.981587-3-danishanwar@ti.com> <20240531135157.aaxgslyur5br6zkb@skbuf> <9bcc04a9-645a-4571-a679-ffe67300877a@ti.com> <9bcc04a9-645a-4571-a679-ffe67300877a@ti.com> <20240603135100.t57lr4u3j6h6zszd@skbuf> Content-Language: en-US From: MD Danish Anwar In-Reply-To: <20240603135100.t57lr4u3j6h6zszd@skbuf> X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240606_040427_228262_C1C9919F X-CRM114-Status: GOOD ( 58.15 ) 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 SGkgVmxhZGltaXIsCgpPbiAwMy8wNi8yNCA3OjIxIHBtLCBWbGFkaW1pciBPbHRlYW4gd3JvdGU6 Cj4gSGkgRGFuaXNoLAo+IAo+IE9uIE1vbiwgSnVuIDAzLCAyMDI0IGF0IDA1OjQyOjA2UE0gKzA1 MzAsIE1EIERhbmlzaCBBbndhciB3cm90ZToKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9p Y3NzZy9pY3NzZ19xb3MuYwo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAw MDAwMDAwMDAwLi41ZTkzYjFiOWNhNDMKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcW9zLmMKPj4+PiBAQCAtMCwwICsxLDI4 OCBAQAo+Pj4+ICtzdGF0aWMgdm9pZCB0YXNfdXBkYXRlX2Z3X2xpc3RfcG9pbnRlcnMoc3RydWN0 IHBydWV0aF9lbWFjICplbWFjKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgdGFzX2NvbmZpZyAqdGFz ID0gJmVtYWMtPnFvcy50YXMuY29uZmlnOwo+Pj4+ICsKPj4+PiArCWlmICgocmVhZGIodGFzLT5h Y3RpdmVfbGlzdCkpID09IFRBU19MSVNUMCkgewo+Pj4KPj4+IFdobyBhbmQgd2hlbiB1cGRhdGVz IHRhcy0+YWN0aXZlX2xpc3QgZnJvbSBUQVNfTElTVDAgdG8gVEFTX0xJU1QxPwo+Pj4KPj4KPj4g LT5lbWFjX3RhcHJpb19yZXBsYWNlKCkKPj4gCS0+IHRhc191cGRhdGVfb3Blcl9saXN0KCkKPj4g CQktPiB0YXNfc2V0X3RyaWdnZXJfbGlzdF9jaGFuZ2UoKQo+Pgo+PiBUaGlzIEFQSSBzZW5kIGEg cjMwIGNvbW1hbmQgdG8gZmlybXdhcmUgdG8gdHJpZ2dlciB0aGUgbGlzdCBjaGFuZ2UKPj4gYGVt YWNfc2V0X3BvcnRfc3RhdGUoZW1hYywgSUNTU0dfRU1BQ19QT1JUX1RBU19UUklHR0VSKTtgCj4+ Cj4+IFRoaXMgb25jZSBmaXJtd2FyZSByZWNpdmVzIHRoaXMgY29tbWFuZCwgaXQgc3dhcHMgdGhl IGFjdGl2ZSBhbmQgc2hhZG93Cj4+IGxpc3QuCj4+Cj4+IGVtYWNfdGFwcmlvX3JlcGxhY2UoKSBj YWxscyB0YXNfdXBkYXRlX29wZXJfbGlzdCgpCj4+Cj4+IEluIHRhc191cGRhdGVfb3Blcl9saXN0 KCkgaW4gdGhlIGJlZ2lubmluZyBhY3RpdmVfbGlzdCBpcyAwIGkuZS4KPj4gVEFTX0xJU1QwLCB0 YXNfdXBkYXRlX2Z3X2xpc3RfcG9pbnRlcnMoKSBpcyBjYWxsZWQgd2hpY2ggY29uZmlndXJlcyB0 aGUKPj4gYWN0aXZlIGFuZCBzaGFkb3cgbGlzdCBwb2ludGVycy4gVEFTX0xJU1QwIGJlY29tZXMg dGhlIGFjdGl2ZV9saXN0IGFuZAo+PiBUQVNfTElTVDEgYmVjb21lcyB0aGUgc2hhZG93IGxpc3Qu Cj4+Cj4+IExldCdzIHNheSBiZWZvcmUgdGhpcyBBUEkgd2FzIGNhbGxlZCwgYWN0aXZlX2xpc3Qg aXMgVEFTX0xJU1QwICgwKSBhbmQKPj4gc2hhZG93X2xpc3QgaXMgVEFTX0xJU1QxLgo+Pgo+PiBB ZnRlciBnZXR0aW5nIHRoZSBzaGFkb3dfbGlzdCB3ZSBmaWxsIHRocmVlIGRpZmZlcmVudCBhcnJh eXMsCj4+IDEuIGdhdGVfbWFza19saXN0W10KPj4gMi4gd2luX2VuZF90aW1lX2xpc3RbXQo+PiAz LiBnYXRlX2Nsb3NlX3RpbWVfbGlzdFtdW10gLSAyRCBhcnJheSB3aXRoIHNpemUgPSBudW1fZW50 cmllcyAqIG51bV9xdWV1ZXMKPj4KPj4gRHJpdmVyIG9ubHkgdXBkYXRlcyB0aGUgc2hhZG93X2xp c3QuIE9uY2Ugc2hhZG93IGxpc3QgaXMgZmlsbGVkLCB3ZSBjYWxsCj4+IHRhc19zZXRfdHJpZ2dl cl9saXN0X2NoYW5nZSgpIGFuZCBhc2sgZmlybXdhcmUgdG8gY2hhbmdlIHRoZSBhY3RpdmUKPj4g bGlzdC4gTm93IHRoZSBzaGFkb3dfbGlzdCB0aGF0IHdlIGhhZCBmaWxsZWQgKFRBU19MSVNUMSkg d2lsbCBiZWNvbWUKPj4gYWN0aXZlIGxpc3QgYW5kIHZpY2UgdmVyc2EuIFdlIHdpbGwgYWdhaW4g dXBkYXRlIG91ciBwb2ludGVycwo+Pgo+PiBUaGlzIGlzIGhvdyBsaXN0IGlzIGNoYW5nZWQgYnkg Y2FsbGluZyB0YXNfdXBkYXRlX2Z3X2xpc3RfcG9pbnRlcnMuCj4+Cj4+Pj4gKwl0YXNfdXBkYXRl X2Z3X2xpc3RfcG9pbnRlcnMoZW1hYyk7Cj4+Pgo+Pj4gQ2FsbGluZyB0aGlzIHR3aWNlIGluIHRo ZSBzYW1lIGZ1bmN0aW9uPyBFeHBsYW5hdGlvbj8KPj4+Cj4+Cj4+IEFzIGV4cGxhaW5lZCBlYXJs aWVyIHRhc191cGRhdGVfZndfbGlzdF9wb2ludGVycygpIGlzIGNhbGxlZCBpbiB0aGUKPj4gYmVn aW5uaW5nIHRvIHNldCB0aGUgYWN0aXZlIGFuZCBzaGFkb3dfbGlzdC4gQWZ0ZXIgdGhhdCB3ZSBm aWxsIHRoZQo+PiBzaGFkb3cgbGlzdCBhbmQgdGhlbiBzZW5kIGNvbW1tYW5kIHRvIHN3YXAgdGhl IGFjdGl2ZSBhbmQgc2hhZG93IGxpc3QuCj4+IEFzIHRoZSBsaXN0IGFyZSBzd2FwcGVkIHdlIHdp bGwgY2FsbCB0YXNfdXBkYXRlX2Z3X2xpc3RfcG9pbnRlcnMoKSB0bwo+PiB1cGRhdGUgdGhlIGxp c3QgcG9pbnRlcnMuCj4gCj4gT2ssIGJ1dCBpZiBpY3NzZ19xb3NfdGFzX2luaXQoKSBhbHJlYWR5 IGNhbGxzIHRhc191cGRhdGVfZndfbGlzdF9wb2ludGVycygpCj4gaW5pdGlhbGx5LCBJIGRvbid0 IHVuZGVyc3RhbmQgd2h5IHRoZSBmaXJzdCB0YXNfdXBkYXRlX29wZXJfbGlzdCgpIGNhbGwKPiBv ZiB0YXNfdXBkYXRlX29wZXJfbGlzdCgpIGlzIG5lY2Vzc2FyeSwgaWYgb25seSB0YXNfc2V0X3Ry aWdnZXJfbGlzdF9jaGFuZ2UoKQo+IHN3YXBzIHRoZSBhY3RpdmUgd2l0aCB0aGUgc2hhZG93IGxp c3QuIFRoZXJlIHdhcyBubyB1bmFjY291bnRlZCBsaXN0Cj4gc3dhcCBwcmlvciB0byB0aGUgdGFz X3VwZGF0ZV9vcGVyX2xpc3QoKSBjYWxsLCB3YXMgdGhlcmU/Cj4gCgpZb3UgYXJlIHJpZ2h0LiBU aGlzIGFkZGl0aW9uYWwgY2FsbCB0byB0YXNfdXBkYXRlX2Z3X2xpc3RfcG9pbnRlcnMoKSBpcwpu b3QgbmVlZGVkLiBJIHdpbGwgZHJvcCB0aGUgY2FsbCBpbiB0aGUgYmVnaW5pbmcuIFRoZSBjYWxs IHNob3VsZCBvbmx5CmJlIG1hZGUgYWZ0ZXIgdGhlIGxpc3RzIGhhdmUgYmVlbiBzd2FwcGVkLgoK Pj4+PiArc3RhdGljIHZvaWQgdGFzX3Jlc2V0KHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYykKPj4+ PiArewo+Pj4+ICsJc3RydWN0IHRhc19jb25maWcgKnRhcyA9ICZlbWFjLT5xb3MudGFzLmNvbmZp ZzsKPj4+PiArCWludCBpOwo+Pj4+ICsKPj4+PiArCWZvciAoaSA9IDA7IGkgPCBUQVNfTUFYX05V TV9RVUVVRVM7IGkrKykKPj4+PiArCQl0YXMtPm1heF9zZHVfdGFibGUubWF4X3NkdVtpXSA9IDIw NDg7Cj4+Pgo+Pj4gTWFjcm8gKyBzaG9ydCBjb21tZW50IGZvciB0aGUgbWFnaWMgbnVtYmVyLCBw bGVhc2UuCj4+Pgo+Pgo+PiBTdXJlIEkgd2lsbCBhZGQgaXQuIEVhY2ggZWxlbWVudHMgaW4gdGhp cyBhcnJheSBpcyBhIDIgYnl0ZSB2YWx1ZQo+PiBzaG93aW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBv ZiBmcmFtZSB0byBiZSBhbGxvd2VkIHRocm91Z2ggZWFjaCBnYXRlLgo+IAo+IElzIHRoZSBxdWV1 ZU1heFNEVVtdIGFycmF5IGFjdGl2ZSBldmVuIHdpdGggdGhlIFRBUyBiZWluZyBpbiB0aGUgcmVz ZXQKPiBzdGF0ZT8gRG9lcyB0aGlzIGNvbmZpZ3VyYXRpb24gaGF2ZSBhbnkgaW1wYWN0IHVwb24g dGhlIGRldmljZSBNVFU/Cj4gSSBkb24ndCBrbm93IHdoeSAyMDQ4IHdhcyBjaG9zZW4uCgpJIHRh bGtlZCB0byB0aGUgZmlybXdhcmUgdGVhbS4gVGhlIHZhbHVlIG9mIDI0OCBpcyBhY3R1YWxseSB3 cm9uZy4gSXQKc2hvdWxkIGJlIHRoZSBkZXZpY2UgbXR1IG9ubHkgaS5lLiBQUlVFVEhfTUFYX01U VS4KCj4gCj4+Pj4gK3N0YXRpYyBpbnQgdGFzX3NldF9zdGF0ZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMg KmVtYWMsIGVudW0gdGFzX3N0YXRlIHN0YXRlKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgdGFzX2Nv bmZpZyAqdGFzID0gJmVtYWMtPnFvcy50YXMuY29uZmlnOwo+Pj4+ICsJaW50IHJldDsKPj4+PiAr Cj4+Pj4gKwlpZiAodGFzLT5zdGF0ZSA9PSBzdGF0ZSkKPj4+PiArCQlyZXR1cm4gMDsKPj4+PiAr Cj4+Pj4gKwlzd2l0Y2ggKHN0YXRlKSB7Cj4+Pj4gKwljYXNlIFRBU19TVEFURV9SRVNFVDoKPj4+ PiArCQl0YXNfcmVzZXQoZW1hYyk7Cj4+Pj4gKwkJcmV0ID0gZW1hY19zZXRfcG9ydF9zdGF0ZShl bWFjLCBJQ1NTR19FTUFDX1BPUlRfVEFTX1JFU0VUKTsKPj4+PiArCQl0YXMtPnN0YXRlID0gVEFT X1NUQVRFX1JFU0VUOwo+Pj4+ICsJCWJyZWFrOwo+Pj4+ICsJY2FzZSBUQVNfU1RBVEVfRU5BQkxF Ogo+Pj4+ICsJCXJldCA9IGVtYWNfc2V0X3BvcnRfc3RhdGUoZW1hYywgSUNTU0dfRU1BQ19QT1JU X1RBU19FTkFCTEUpOwo+Pj4+ICsJCXRhcy0+c3RhdGUgPSBUQVNfU1RBVEVfRU5BQkxFOwo+Pj4+ ICsJCWJyZWFrOwo+Pj4+ICsJY2FzZSBUQVNfU1RBVEVfRElTQUJMRToKPj4+PiArCQlyZXQgPSBl bWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNfUE9SVF9UQVNfRElTQUJMRSk7Cj4+ Pj4gKwkJdGFzLT5zdGF0ZSA9IFRBU19TVEFURV9ESVNBQkxFOwo+Pj4KPj4+IFRoaXMgY2FuIGJl IGV4cHJlc3NlZCBhcyBqdXN0ICJ0YXMtPnN0YXRlID0gc3RhdGUiIG91dHNpZGUgdGhlIHN3aXRj aCBzdGF0ZW1lbnQuCj4+PiBCdXQgcHJvYmFibHkgc2hvdWxkbid0IGJlLCBpZiAicmV0ICE9IDAi Lgo+Pgo+PiBZZXMgd2Ugc2hvdWxkbid0IGRvIHRoYXQgYXMgd2UgYXJlIHNlbmRpbmcgdGhlIHIz MCBjb21tYW5kIHRvIGZpcm13YXJlCj4+IGluIGVhY2ggY2FzZS4KPiAKPiBJIHdhcyBzYXlpbmcg dGhhdCBpZiB0aGVyZSdzIGEgZmlybXdhcmUgZXJyb3IsIHdlIHByb2JhYmx5IHNob3VsZG4ndAo+ IHVwZGF0ZSBvdXIgdGFzLT5zdGF0ZSBhcyBpZiB0aGVyZSB3YXNuJ3QuCj4gCj4gQW5kIHRoYXQg dGhlIHRhcy0+c3RhdGUgPSBzdGF0ZSBhc3NpZ25tZW50IGlzIGNvbW1vbiBhY3Jvc3MgYWxsIHN3 aXRjaAo+IGNhc2VzLCBzbyBpdCdzIHNpbXBsZXIgdG8gbW92ZSBpdCBvdXQuCj4gCgpVbmRlcnN0 b29kLCBJIHdpbGwgbW92ZSB0aGlzIG91dCBvZiBzd2l0Y2ggYmxvY2sgYW5kIG9ubHkgc2V0IGl0 IGlmCmVtYWNfc2V0X3BvcnRfc3RhdGUoKSB3YXMgYSBzdWNjZXNzLgoKPj4+Cj4+Pj4gKwkJYnJl YWs7Cj4+Pj4gKwlkZWZhdWx0Ogo+Pj4+ICsJCW5ldGRldl9lcnIoZW1hYy0+bmRldiwgIiVzOiB1 bnN1cHBvcnRlZCBzdGF0ZVxuIiwgX19mdW5jX18pOwo+Pj4KPj4+IFRoZXJlIGFyZSB0d28gbGV2 ZWxzIG9mIGxvZ2dpbmcgZm9yIHRoaXMgZXJyb3IsIGFuZCB0aGlzIHBhcnRpY3VsYXIgb25lCj4+ PiBpc24ndCB1c2VmdWwuIFdlIGNhbiBpbmZlciBpdCB3ZW50IHRocm91Z2ggdGhlICJkZWZhdWx0 IiBjYXNlIHdoZW4gdGhlCj4+PiBwcmludGsgYmVsb3cgcmV0dXJuZWQgLUVJTlZBTCwgYmVjYXVz ZSBpZiB0aGF0IC1FSU5WQUwgY2FtZSBmcm9tCj4+PiBlbWFjX3NldF9wb3J0X3N0YXRlKCksIHRo YXQgd291bGQgaGF2ZSBwcmludGVkLCBpbiB0dXJuLCAiaW52YWxpZCBwb3J0IGNvbW1hbmQiLgo+ Pj4KPj4KPj4gQnV0LCB0aGUgZW51bSB0YXNfc3RhdGUgYW5kIGVudW0gaWNzc2dfcG9ydF9zdGF0 ZV9jbWQgYXJlIG5vdCAxLTEgbWFwcGVkLgo+IAo+IENvcnJlY3QsIGJ1dCB5b3UgYXJlbid0IHBy aW50aW5nIHRoZSB0YXNfc3RhdGUgYW55d2F5LCBhbmQgdGhlcmUncyBubwo+IGNvZGUgcGF0aCBw b3NzaWJsZSB3aXRoIGEgdGFzX3N0YXRlIG91dHNpZGUgdGhlIHdlbGwtZGVmaW5lZCB2YWx1ZXMu Cj4gCj4+IGVtYWNfc2V0X3BvcnRfc3RhdGUoKSB3aWxsIG9ubHkgcmV0dXJuIC1FSU5WQUwgd2hl biBgY21kID49Cj4+IElDU1NHX0VNQUNfUE9SVF9NQVhfQ09NTUFORFNgIHdoaWNoIGlzIDE5LiBC dXQgYSB0YXNfc3RhdGUgdmFsdWUgb2YgMyBpcwo+PiBhbHNvIGludmFsaWQgYXMgd2Ugb25seSBz dXBwb3J0IHZhbHVlIG9mIDAsMSBhbmQgMiBzbyBJIHRoaW5rIHRoaXMgcHJpbnQKPj4gc2hvdWRs IGJlIG9rYXkKPj4KPj4gZW51bSB0YXNfc3RhdGUgewo+PiAJVEFTX1NUQVRFX0RJU0FCTEUgPSAw LAo+PiAJVEFTX1NUQVRFX0VOQUJMRSA9IDEsCj4+IAlUQVNfU1RBVEVfUkVTRVQgPSAyLAo+PiB9 Owo+Pgo+Pj4gSSBkb24ndCB0aGluayB0aGF0IGEgImRlZmF1bHQiIGNhc2UgaXMgbmVlZGVkIGhl cmUsIGFzIGxvbmcgYXMgYWxsIGVudW0KPj4+IHZhbHVlcyBhcmUgaGFuZGxlZCwgYW5kIHRoZSBp bnB1dCBpcyBzYW5pdGl6ZWQgZXZlcnl3aGVyZSAod2hpY2ggaXQgaXMpLgo+Pj4KPj4KPj4gSSB0 aGluayB0aGUgZGVmYXVsdCBjYXNlIHNob3VsZCByZW1haW4uIFdpdGhvdXQgZGVmYXVsdCBjYXNl IHRoZQo+PiBmdW5jdGlvbiB3aWxsIHJldHVybiAwIGV2ZW4gZm9yIGludmFsaWQgc2F0ZXMuIEJ5 IGRlZmF1bHQgcmV0ID0gMCwgaW4KPj4gdGhlIHRhc19zdGF0ZSBwYXNzZWQgdG8gQVBJIGlzIG5v dCB2YWxpZCwgbm9uZSBvZiB0aGUgY2FzZSB3aWxsIGJlCj4+IGNhbGxlZCwgcmV0IHdpbGwgcmVt YWluZyB6ZXJvLiBObyBlcnJvciB3aWxsIGJlIHByaW50ZWQgYW5kIHRoZSBmdW5jdGlvbgo+PiB3 aWxsIHJldHVybiAwLiBLZWVwaW5nIGRlZmF1bHQgY2FzZSBtYWtlcyBzdXJlIHRoYXQgdGhlIHdy b25nIHN0YXRlIHdhcwo+PiByZXF1ZXN0ZWQuCj4+Cj4gCj4gRGVhZCBjb2RlIGlzIHdoYXQgaXQg aXMuIElmIGEgbmV3IGVudW0gdGFzX3N0YXRlIHZhbHVlIGlzIGFkZGVkIGFuZCBpdCdzCj4gbm90 IGhhbmRsZWQgdGhlcmUsIHRoZSBfY29tcGlsZXJfIHdpbGwgd2FybiwgcmF0aGVyIHRoYW4gdGhl IExpbnV4IHJ1bnRpbWUuCj4gU28gaXQncyBhY3R1YWxseSBlYXNpZXIgZm9yIHRoZSBkZXZlbG9w ZXIgdG8gY2F0Y2ggaXQsIHJhdGhlciB0aGFuIHRoZSB1c2VyLgo+IFlvdSBkb24ndCBuZWVkIHRv IHByb3RlY3QgYWdhaW5zdCB5b3VyIG93biBzaGFkb3cuCgoKU3VyZSwgSSB3aWxsIGRyb3AgdGhl IGRlZmF1bHQgY2FzZS4KCj4gCj4+Pj4gK3N0YXRpYyBpbnQgdGFzX3NldF90cmlnZ2VyX2xpc3Rf Y2hhbmdlKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYykKPj4+PiArewo+Pj4+ICsJc3RydWN0IHRj X3RhcHJpb19xb3B0X29mZmxvYWQgKmFkbWluX2xpc3QgPSBlbWFjLT5xb3MudGFzLnRhcHJpb19h ZG1pbjsKPj4+PiArCXN0cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+cW9zLnRhcy5jb25m aWc7Cj4+Pj4gKwlzdHJ1Y3QgcHRwX3N5c3RlbV90aW1lc3RhbXAgc3RzOwo+Pj4+ICsJdTMyIGNo YW5nZV9jeWNsZV9jb3VudDsKPj4+PiArCXUzMiBjeWNsZV90aW1lOwo+Pj4+ICsJdTY0IGJhc2Vf dGltZTsKPj4+PiArCXU2NCBjdXJfdGltZTsKPj4+PiArCj4+Pj4gKwkvKiBJRVAgY2xvY2sgaGFz IGEgaGFyZHdhcmUgZXJyYXRhIGR1ZSB0byB3aGljaCBpdCB3cmFwcyBhcm91bmQgZXhhY3RseQo+ Pj4+ICsJICogb25jZSBldmVyeSB0YXByaW8gY3ljbGUuIFRvIGNvbXBlbnNhdGUgZm9yIHRoYXQs IGFkanVzdCBjeWNsZSB0aW1lCj4+Pj4gKwkgKiBieSB0aGUgd3JhcCBhcm91bmQgdGltZSB3aGlj aCBpcyBzdG9yZWQgaW4gZW1hYy0+aWVwLT5kZWZfaW5jCj4+Pj4gKwkgKi8KPj4+PiArCWN5Y2xl X3RpbWUgPSBhZG1pbl9saXN0LT5jeWNsZV90aW1lIC0gZW1hYy0+aWVwLT5kZWZfaW5jOwo+Pj4+ ICsJYmFzZV90aW1lID0gYWRtaW5fbGlzdC0+YmFzZV90aW1lOwo+Pj4+ICsJY3VyX3RpbWUgPSBw cnVldGhfaWVwX2dldHRpbWUoZW1hYywgJnN0cyk7Cj4+Pj4gKwo+Pj4+ICsJaWYgKGJhc2VfdGlt ZSA+IGN1cl90aW1lKQo+Pj4+ICsJCWNoYW5nZV9jeWNsZV9jb3VudCA9IERJVl9ST1VORF9VUF9V TEwoYmFzZV90aW1lIC0gY3VyX3RpbWUsIGN5Y2xlX3RpbWUpOwo+Pj4+ICsJZWxzZQo+Pj4+ICsJ CWNoYW5nZV9jeWNsZV9jb3VudCA9IDE7Cj4+Pj4gKwo+Pj4+ICsJd3JpdGVsKGN5Y2xlX3RpbWUs IGVtYWMtPmRyYW0udmEgKyBUQVNfQURNSU5fQ1lDTEVfVElNRSk7Cj4+Pj4gKwl3cml0ZWwoY2hh bmdlX2N5Y2xlX2NvdW50LCBlbWFjLT5kcmFtLnZhICsgVEFTX0NPTkZJR19DSEFOR0VfQ1lDTEVf Q09VTlQpOwo+Pj4+ICsJd3JpdGViKGFkbWluX2xpc3QtPm51bV9lbnRyaWVzLCBlbWFjLT5kcmFt LnZhICsgVEFTX0FETUlOX0xJU1RfTEVOR1RIKTsKPj4+PiArCj4+Pj4gKwkvKiBjb25maWdfY2hh bmdlIGNsZWFyZWQgYnkgZi93IHRvIGFjayByZWNlcHRpb24gb2YgbmV3IHNoYWRvdyBsaXN0ICov Cj4+Pj4gKwl3cml0ZWIoMSwgJnRhcy0+Y29uZmlnX2xpc3QtPmNvbmZpZ19jaGFuZ2UpOwo+Pj4+ ICsJLyogY29uZmlnX3BlbmRpbmcgY2xlYXJlZCBieSBmL3cgd2hlbiBuZXcgc2hhZG93IGxpc3Qg aXMgY29waWVkIHRvIGFjdGl2ZSBsaXN0ICovCj4+Pj4gKwl3cml0ZWIoMSwgJnRhcy0+Y29uZmln X2xpc3QtPmNvbmZpZ19wZW5kaW5nKTsKPj4+PiArCj4+Pj4gKwlyZXR1cm4gZW1hY19zZXRfcG9y dF9zdGF0ZShlbWFjLCBJQ1NTR19FTUFDX1BPUlRfVEFTX1RSSUdHRVIpOwo+Pj4KPj4+IFRoZSBj YWxsIHBhdGggaGVyZSBpczoKPj4+Cj4+PiBlbWFjX3RhcHJpb19yZXBsYWNlKCkKPj4+IC0+IHRh c191cGRhdGVfb3Blcl9saXN0KCkKPj4+ICAgIC0+IHRhc19zZXRfdHJpZ2dlcl9saXN0X2NoYW5n ZSgpCj4+PiAgICAgICAtPiBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNfUE9S VF9UQVNfVFJJR0dFUik7Cj4+PiAtPiB0YXNfc2V0X3N0YXRlKGVtYWMsIFRBU19TVEFURV9FTkFC TEUpOwo+Pj4gICAgLT4gZW1hY19zZXRfcG9ydF9zdGF0ZShlbWFjLCBJQ1NTR19FTUFDX1BPUlRf VEFTX0VOQUJMRSk7Cj4+Pgo+Pj4gSSdtIHN1cnByaXNlZCBieSB0aGUgY2FsbHMgdG8gZW1hY19z ZXRfcG9ydF9zdGF0ZSgpIGluIHN1Y2ggYSBxdWljawo+Pj4gc3VjY2Vzc2lvbj8gSXMgdGhlcmUg YW55IGZpcm13YXJlIHJlcXVpcmVtZW50IGZvciBob3cgbXVjaCBzaG91bGQgdGhlCj4+PiBwb3J0 IHN0YXkgaW4gdGhlIFRBU19UUklHR0VSIHN0YXRlPyBPciBpcyBpdCBub3QgcmVhbGx5IGEgc3Rh dGUsIGRlc3BpdGUKPj4+IGl0IGJlaW5nIGFuIGFyZ3VtZW50IHRvIGEgZnVuY3Rpb24gbmFtZWQg ZW1hY19zZXRfcG9ydF9zdGF0ZSgpPwo+Pj4KPj4KPj4gSUNTU0dfRU1BQ19QT1JUX1RBU19UUklH R0VSIGlzIG5vdCBhIHN0YXRlLiBlbWFjX3NldF9wb3J0X3N0YXRlKCkgc2VuZHMKPj4gYSBjb21t YW5kIHRvIGZpcm13YXJlLCB3ZSBjYWxsIGl0IHIzMCBjb21tYW5kLiBEcml2ZXIgdGhlbiB3YWl0 cyBmb3IgdGhlCj4+IHJlc3BvbnNlIGZvciBzb21lIHRpbWUuIElmIGEgc3VjY2Vzc2Z1bGwgcmVz cG9uc2UgaXMgcmVjaXZlZCB0aGUKPj4gZnVuY3Rpb24gcmV0dXJuIDAgb3RoZXJ3aXNlIGVycm9y Lgo+Pgo+PiBIZXJlIGZpcnN0IGBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNf UE9SVF9UQVNfVFJJR0dFUilgIGlzCj4+IGNhbGxlZCB3aGljaCB3aWxsIGFzayBmaXJtd2FyZSB0 byBzd2FwIHRoZSBhY3RpdmVfbGlzdCBhbmQgc2hhZG93X2xpc3QKPj4gYXMgZXhwbGFpbmVkIGFi b3ZlLgo+Pgo+PiBBZnRlciB0aGF0IElDU1NHX0VNQUNfUE9SVF9UQVNfRU5BQkxFIGNtZCBpcyBz ZW50LiBVcG9uIHJlY2lldmluaWcgdGhpcwo+PiBjb21tYW5kIGZpcm13YXJlIHdpbGwgRW5hYmxl IFRBUyBmb3IgdGhlIHBhcnRpY3VsYXIgcG9ydC4gKHBvcnQgaXMgcGFydAo+PiBvZiBlbWFjIHN0 cnVjdHVyZSkuCj4+Cj4+IEkgY2FuIHNlZSBob3cgdGhhdCBjYW4gYmUgY29uZnVzaW5nIGdpdmVu IHRoZSBBUEkgbmFtZSBpcwo+PiBlbWFjX3NldF9wb3J0X3N0YXRlKCkuIFNvbWUgb2YgdGhlIGNt ZHMgaW5mYWN0IHRyaWdnZXJzIGEgc3RhdGUgY2hhbmdlCj4+IGVnLiBJQ1NTR19FTUFDX1BPUlRf RElTQUJMRSwgSUNTU0dfRU1BQ19QT1JUX0JMT0NLLAo+PiBJQ1NTR19FTUFDX1BPUlRfRk9SV0FS RCBidXQgc29tZSBvZiB0aGUgY29tbWFuZHMganVzdCB0cmlnZ2VycyBzb21lCj4+IGFjdGlvbiBv biB0aGUgZmlybXdhcmUgc2lkZS4gQmFzZWQgb24gdGhlIGNvbW1hbmQgZmlybXdhcmUgZG9lcyBz b21lCj4+IGFjdGlvbnMuCj4gCj4gSWYgeW91J3JlIHJlcGxhY2luZyBhbiBleGlzdGluZyBhY3Rp dmUgc2NoZWR1bGUgd2l0aCBhIHNoYWRvdyBvbmUsIHRoZQo+IElDU1NHX0VNQUNfUE9SVF9UQVNf RU5BQkxFIGNvbW1hbmQgaXNuJ3QgbmVlZGVkIGJlY2F1c2UgdGhlIFRBUyBpcwo+IGFscmVhZHkg ZW5hYmxlZCBvbiB0aGUgcG9ydCwgcmlnaHQ/IEluIGZhY3QgaXQgd2lsbCBiZSBzdXBwcmVzc2Vk IGJ5Cj4gdGFzX3NldF9zdGF0ZSgpIHdpdGhvdXQgZXZlbiBnZW5lcmF0aW5nIGFuIGVtYWNfc2V0 X3BvcnRfc3RhdGUoKSBjYWxsLAo+IHJpZ2h0Pwo+IAoKQXMgdGhpcyBwb2ludCBUQVMgaXMgbm90 IGVuYWJsZWQuIFRBUyBpcyBlbmFibGVkIG9uIHRoZSBwb3J0IG9ubHkgd2hlbgpJQ1NTR19FTUFD X1BPUlRfVEFTX0VOQUJMRSBpcyBzZW50LiBXaGljaCBoYXBwZW5zIGF0IHRoZSBlbmQgb2YKZW1h Y190YXByaW9fcmVwbGFjZSgpLgoKPj4+PiArfQo+Pj4KPj4+IFRoZXJlJ3Mgc29tZXRoaW5nIGV4 dHJlbWVseSBlbGVtZW50YXJ5IGFib3V0IHRoaXMgZnVuY3Rpb24gd2hpY2ggSSBzdGlsbAo+Pj4g ZG9uJ3QgdW5kZXJzdGFuZC4KPj4+Cj4+PiBXaGVuIGRvZXMgdGhlIHNjaGVkdWxlIGFjdHVhbGx5 IF9zdGFydF8/IENhbiB0aGF0IGJlIGNvbnRyb2xsZWQgYnkgdGhlCj4+PiBkcml2ZXIgd2l0aCB0 aGUgaGlnaCAobmFub3NlY29uZCkgcHJlY2lzaW9uIG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgdGhl Cj4+PiBJQ1NTRyB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBzY2hlZHVsZSBvZiBvdGhlciBlcXVp cG1lbnQgaW4gdGhlIExBTj8KPj4+Cj4+PiBZb3UgbmV2ZXIgcGFzcyB0aGUgYmFzZSB0aW1lIHBl ciBzZSB0byB0aGUgZmlybXdhcmUuIEp1c3QgYSBudW1iZXIgb2YKPj4+IGN5Y2xlcyBmcm9tIG5v dy4gSSBndWVzcyB0aGF0IG51bWJlciBvZiBjeWNsZXMgZGVjaWRlcyB3aGVuIHRoZSBzY2hlZHVs ZQo+Pj4gc3RhcnRzLCBidXQgd2hhdCBhcmUgdGhvc2UgY3ljbGVzIHJlbGF0aXZlIHRvPwo+Pj4K Pj4KPj4gT25jZSB0aGUgc2hhZG93IGxpc3QgaXMgdXBkYXRlZCwgdGhlIHRyaWdnZXIgaXMgc2V0 IGluIHRoZSBmaXJtd2FyZSBhbmQKPj4gZm9yIHRoYXQgQVBJIHRhc19zZXRfdHJpZ2dlcl9saXN0 X2NoYW5nZSgpIGlzIGNhbGxlZC4KPj4KPj4gVGhlIGZvbGxvd2luZyB0aHJlZSBvZmZzZXRzIGFy ZSBjb25maWd1cmVkIGluIHRoaXMgZnVuY3Rpb24sCj4+IDEuIFRBU19BRE1JTl9DWUNMRV9USU1F IOKGkiBhZG1pbiBjeWNsZSB0aW1lCj4+IDIuIFRBU19DT05GSUdfQ0hBTkdFX0NZQ0xFX0NPVU5U IOKGkiBudW1iZXIgb2YgY3ljbGVzIGFmdGVyIHdoaWNoIHRoZQo+PiBhZG1pbiBsaXN0IGlzIHRh a2VuIGFzIG9wZXJhdGluZyBsaXN0Lgo+PiBUaGlzIHBhcmFtZXRlciBpcyBjYWxjdWxhdGVkIGJh c2VkIG9uIHRoZSBiYXNlX3RpbWUsIGN1cl90aW1lIGFuZAo+PiBjeWNsZV90aW1lLiBJZiB0aGUg YmFzZV90aW1lIGlzIGluIHBhc3QgKGFscmVhZHkgcGFzc2VkKSB0aGUKPj4gVEFTX0NPTkZJR19D SEFOR0VfQ1lDTEVfQ09VTlQgaXMgc2V0IHRvIDEuIElmIHRoZSBiYXNlX3RpbWUgaXMgaW4KPj4g ZnV0dXJlLCBUQVNfQ09ORklHX0NIQU5HRV9DWUNMRV9DT1VOVCBpcyBjYWxjdWxhdGVkIHVzaW5n Cj4+IERJVl9ST1VORF9VUF9VTEwoYmFzZV90aW1lIC0gY3VyX3RpbWUsIGN5Y2xlX3RpbWUpCj4+ IDMuIFRBU19BRE1JTl9MSVNUX0xFTkdUSCDihpIgTnVtYmVyIG9mIHdpbmRvdyBlbnRyaWVzIGlu IHRoZSBhZG1pbiBsaXN0Lgo+Pgo+PiBBZnRlciBjb25maWd1cmluZyB0aGUgYWJvdmUgdGhyZWUg cGFyYW1ldGVycywgdGhlIGRyaXZlciBnaXZlcyB0aGUKPj4gdHJpZ2dlciBzaWduYWwgdG8gdGhl IGZpcm13YXJlIHVzaW5nIHRoZSBSMzAgY29tbWFuZCBpbnRlcmZhY2Ugd2l0aAo+PiBJQ1NTR19F TUFDX1BPUlRfVEFTX1RSSUdHRVIgY29tbWFuZC4KPj4KPj4gVGhlIHNjaGVkdWxlIHN0YXJ0cyBi YXNlZCBvbiBUQVNfQ09ORklHX0NIQU5HRV9DWUNMRV9DT1VOVC4gVGhvc2UgY3ljbGVzCj4+IGFy ZSByZWxhdGl2ZSB0byB0aW1lIHJlbWFpbmluZyBpbiB0aGUgYmFzZV90aW1lIGZyb20gbm93IGku ZS4gYmFzZV90aW1lCj4+IC0gY3VyX3RpbWUuCj4gCj4gU28geW91J3JlIHNheWluZyB0aGF0IHRo ZSBmaXJtd2FyZSBleGVjdXRlcyB0aGUgc2NoZWR1bGUgc3dpdGNoIGF0Cj4gCj4gCW5vdyAgICAg ICAgICAgICAgICAgICsgICAgICBUQVNfQURNSU5fQ1lDTEVfVElNRSAqIFRBU19DT05GSUdfQ0hB TkdFX0NZQ0xFX0NPVU5UIG5zCj4gCX5+fgo+IAl0aW1lIG9mIHJlY2VwdGlvbiBvZgo+IAlJQ1NT R19FTUFDX1BPUlRfVEFTX1RSSUdHRVIKPiAJUjMwIGNvbW1hbmQKPiAKPiA/Cj4gCgpJIHRhbGtl ZCB0byB0aGUgZmlybXdhcmUgdGVhbSBvbiB0aGlzIHRvcGljLiBTZWVtcyBsaWtlIHRoaXMgaXMg YWN0dWFsbHkKYSBidWcgaW4gdGhlIGZpcm13YXJlIGRlc2lnbi4gVGhpcyAqbm93KiBpcyB2ZXJ5 IHJlbGF0aXZlIGFuZCBpdCB3aWxsCmFsd2F5cyBpbnRyb2R1Y2Ugaml0dGVyIGFzIHlvdSBoYXZl IG1lbnRpb25lZC4KClRoZSBmaXJtd2FyZSBuZWVkcyB0byBjaGFuZ2UgdG8gaGFuZGxlIHRoZSBi ZWxvdyB0d28gY2FzZXMgdGhhdCB5b3UgaGF2ZQptZW50aW9uZWQuCgpUaGUgc2NoZWR1bGUgc2hv dWxkIHN0YXJ0IGF0IGJhc2UtdGltZSAoZ2l2ZW4gYnkgdXNlcikuIEluc3RlYWQgb2YKc2VuZGlu ZyB0aGUgY3ljbGUgY291bnQgZnJvbSBub3cgdG8gYmFzZS10aW1lIHRvIGZpcm13YXJlLiBEcml2 ZXIgc2hvdWxkCnNlbmQgdGhlIGFic29sdXRlIGN5Y2xlIGNvdW50IGNvcnJlc3BvbmRpbmcgdG8g dGhlIGJhc2UtdGltZS4gRmlybXdhcmUKY2FuIHRoZW4gY2hlY2sgdGhlIGN1cnIgY3ljbGUgY291 bnQgYW5kIHdoZW4gaXQgbWF0Y2hlcyB0aGUgY291bnQgc2V0IGJ5CmRyaXZlciBmaXJtd2FyZSB3 aWxsIHN0YXJ0IHNjaGVkdWxpbmcuCgpjaGFuZ2VfY3ljbGVfY291bnQgPSBiYXNlLXRpbWUgLyBj eWNsZS10aW1lOwoKVGhpcyB3YXkgdGhlIGlycmVndWxhcml0eSB3aXRoICpub3cqIHdpbGwgYmUg cmVtb3ZlZC4gTm93IGV2ZW4gaWYgd2UgcnVuCnRoZSBzYW1lIGNvbW1hbmQgb24gdHdvIGRpZmZl cmVudCBJQ1NTRyBkZXZpY2VzKHdob3NlIGNsb2NrcyBhcmUgc3luY2VkCndpdGggUFRQKSwgdGhl IHNjaGVkdWxpbmcgd2lsbCBoYXBwZW4gYXQgc2FtZSB0aW1lLgoKQXMgdGhlIGNoYW5nZV9jeWNs ZV9jb3VudCB3aWxsIGJlIHNhbWUgZm9yIGJvdGggb2YgdGhlbS4gU2luY2UgdGhlCmNsb2NrcyBh cmUgc3luY2VkIHRoZSBjdXJyZW50IGN5Y2xlIGNvdW50IChyZWFkIGZyb20KVElNRVNZTkNfRldf V0NfQ1lDTEVDT1VOVF9PRkZTRVQpIHdpbGwgYWxzbyBiZSBzYW1lIGZvciBib3RoIHRoZSBkZXZp Y2VzCgo+IEknbSBub3QgcmVhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgY2FsY3Vs YXRlcyB0aGUgY3ljbGUgY291bnQsCj4ganVzdCBpbiB3aGF0IGFyZSB0aGUgcHJpbWl0aXZlcyB0 aGF0IHRoZSBmaXJtd2FyZSBBQkkgd2FudHMuCj4gCj4gRG9lcyB0aGUgcmVhZGJfcG9sbF90aW1l b3V0KCkgY2FsbCBmcm9tIHRhc191cGRhdGVfb3Blcl9saXN0KCkgYWN0dWFsbHkKPiB3YWl0IHVu dGlsIHRoaXMgd2hvbGUgdGltZSBlbGFwc2VzPyBJdCBpcyB1c2VyIHNwYWNlIGlucHV0LCBzbyBp dCBjYW4KPiBrZWVwIGEgdGFzayB3YWl0aW5nIGluIHRoZSBrZXJuZWwsIHdpdGggcnRubF9sb2Nr KCkgYWNxdWlyZWQsIGZvciBhIHZlcnkKPiBsb25nIHRpbWUgaWYgdGhlIGJhc2VfdGltZSBpcyBm YXIgYXdheSBpbiB0aGUgZnV0dXJlLgo+IAoKcmVhZGJfcG9sbF90aW1lb3V0KCkgY2FsbCBmcm9t IHRhc191cGRhdGVfb3Blcl9saXN0KCkgd2FpdHMgZm9yIGV4YWN0bHkKMTAgbXNlY3MuIERyaXZl ciBzZW5kIHRoZSB0cmlnZ2VyX2xpc3RfY2hhbmdlIGNvbW1hbmQgYW5kIHNldHMKY29uZmlnX2No YW5nZSByZWdpc3RlciB0byAxIChkZXRhaWxzIGluIHRhc19zZXRfdHJpZ2dlcl9saXN0X2NoYW5n ZSgpKS4KRHJpdmVyIHdhaXRzIGZvciAxMCBtcyBmb3IgZmlybXdhcmUgdG8gY2xlYXIgdGhpcyBy ZWdpc3Rlci4gSWYgdGhlCnJlZ2lzdGVyIGlzIG5vdCBjbGVhcmVkLCBsaXN0IHdhc24ndCBjaGFu Z2VkIGJ5IGZpcm13YXJlLiBEcml2ZXIgd2lsbAp0aGVuIHJldHVybiBlcnIuCgo+IElmIG15IHVu ZGVyc3RhbmRpbmcgaXMgY29ycmVjdCwgdGhlbiB0aGVyZSBhcmUgMiB0aGluZ3MgeW91IGNhbm5v dCBkbwo+ICh3aGljaCBJTU8gYXJlIHZlcnkgaW1wb3J0YW50KSB3aXRoIHRoZSBjdXJyZW50IGZp cm13YXJlIEFCSToKPiAKPiAxLiBZb3UgY2Fubm90IHN5bmNocm9uaXplIHRoZSBzY2hlZHVsZXMg b24gdHdvIElDU1NHIGRldmljZXMgdG8gb25lCj4gYW5vdGhlci4KPiAKPiBZb3UgYXJlIHN1cHBv c2VkIHRvIGJlIGFibGUgdG8gcnVuIHRoZSBzYW1lIHRhcHJpbyBjb21tYW5kIG9uIHRoZSBlZ3Jl c3MKPiBwb3J0IG9mIDIgY2hhaW5lZCBzd2l0Y2hlcyBpbiBhIExBTjoKPiAKPiB0YyBxZGlzYyBy ZXBsYWNlIGRldiBzd3AwIHBhcmVudCByb290IHRhcHJpbyBcCj4gCW51bV90YyA4IFwKPiAJbWFw IDAgMSAyIDMgNCA1IDYgNyBcCj4gCXF1ZXVlcyAxQDAgMUAxIDFAMiAxQDMgMUA0IDFANSAxQDYg MUA3IFwKPiAJYmFzZS10aW1lIDAgXAo+IAlzY2hlZC1lbnRyeSBTIDB4ODEgMTAwMDAwIFwKPiAJ c2NoZWQtZW50cnkgUyAweDAxIDkwMDAwMCBcCj4gCWZsYWdzIDB4MiBcCj4gCW1heC1zZHUgMCAw IDAgMCAwIDAgMCA3OQo+IAo+IGFuZCwgYXNzdW1pbmcgdGhhdCB0aGUgc3dpdGNoZXMgYXJlIHN5 bmNocm9uaXplZCBieSBQVFAsIHRoZSBnYXRlIGV2ZW50cwo+IHdpbGwgYmUgc3luY2hyb25pemVk IG9uIHRoZSAyIHN3aXRjaGVzLgo+IAo+IEJ1dCBpZiB0aGUgc2NoZWR1bGUgY2hhbmdlIGZvcm11 bGEgaW4gdGhlIGZpcm13YXJlIGlzIGZ1bmRhbWVudGFsbHkKPiBkZXBlbmRhbnQgb24gYSAibm93 IiB0aGF0IGRlcGVuZHMgb24gd2hlbiB0aGUgTGludXggZHJpdmVyIHBlcmZvcm1lZCB0aGUKPiBU QVNfVFJJR0dFUiBhY3Rpb24sIHRoZSBnYXRlIGV2ZW50cyB3aWxsIG5ldmVyIGJlIHByZWNpc2Vs eSBzeW5jaHJvbml6ZWQuCgpBcyBtZW50aW9uZWQgYWJvdmUsIGNoYW5naW5nIHRoZSBpbXBsZW1u dGF0aW9uIGluIGZpcm13YXJlIGFuZCBkcml2ZXIKY2FuIGZpeCB0aGlzLiBXaXRoIHRoZSBzdWdn ZXN0ZWQgbmV3IGltcGxlbWVudGF0aW9uIHRoZSB0aW1pbmcgd2lsbCBub3QKYmUgZGVwZW5kZW50 IG9uIHdoZW4gdGhlIGRyaXZlciBzZW5kcyBUQVNfVFJJR0dFUiBjbWQuCgo+IAo+IEhlcmUsICJi YXNlLXRpbWUgMCIgbWVhbnMgdGhhdCB0aGUgZHJpdmVyL2Zpcm13YXJlL2hhcmR3YXJlIHNob3Vs ZAo+IGFkdmFuY2UgdGhlIHNjaGVkdWxlIHN0YXJ0IHRpbWUgaW50byB0aGUgY2xvc2VzdCBtb21l bnQgaW4gUFRQIHRpbWUKPiB3aGljaCBpcyBhIG11bHRpcGxlIG9mIHRoZSBjeWNsZS10aW1lICgx MDAwMDArOTAwMDAwPTEwMDAwMDApLiBTbyBmb3IKPiBleGFtcGxlLCBpZiB0aGUgY3VycmVudCBQ VFAgdGltZSBpcyAxMDAwLjEyMzQ1Njc4OSwgdGhlIGNsb3Nlc3Qgc3RhcnQKPiB0aW1lIHdvdWxk IGJlIDEwMC4xMjQwMDAwMDAuCj4gCgpUaGF0IHdvdWxkIGJlIGhhbmRsZWQuIFdoZW4gYmFzZS10 aW1lIGlzIDAsIGNoYW5nZV9jeWNsZV9jb3VudCB3b3VsZCBiZQoxIG1lYW5pbmcgZmlybXdhcmUg d2lsbCBzdGFydCBzY2hlZHVsaW5nIGluIHRoZSB2ZXJ5IG5leHQgY3ljbGUuCgo+IDIuIFlvdSBj YW5ub3QgYXBwbHkgYSBwaGFzZSBvZmZzZXQgYmV0d2VlbiB0aGUgc2NoZWR1bGVzIG9uIHR3byBJ Q1NTRwo+IGRldmljZXMgaW4gdGhlIHNhbWUgbmV0d29yay4KPiAKPiBTaW5jZSB0aGVyZSBpcyBh IFBIWS1kZXBlbmRlbnQgcHJvcGFnYXRpb24gZGVsYXkgb24gZWFjaCBsaW5rLCBuZXR3b3JrCj4g ZW5naW5lZXJzIHR5cGljYWxseSBkZWxheSB0aGUgc2NoZWR1bGVzIG9uIHN3aXRjaCBwb3J0cyBh bG9uZyB0aGUgcGF0aAo+IG9mIGEgc3RyZWFtLgo+IAo+IFNheSBmb3IgZXhhbXBsZSB0aGVyZSBp cyBhIHByb3BhZ2F0aW9uIGRlbGF5IG9mIDgwMCBucyBvbiBhIHN3aXRjaCB3aXRoCj4gYmFzZS10 aW1lIDAuIE9uIHRoZSBuZXh0IHN3aXRjaCwgeW91IGNvdWxkIGFkZCB0aGUgc2NoZWR1bGUgbGlr ZSB0aGlzOgo+IAo+IHRjIHFkaXNjIHJlcGxhY2UgZGV2IHN3cDAgcGFyZW50IHJvb3QgdGFwcmlv IFwKPiAJbnVtX3RjIDggXAo+IAltYXAgMCAxIDIgMyA0IDUgNiA3IFwKPiAJcXVldWVzIDFAMCAx QDEgMUAyIDFAMyAxQDQgMUA1IDFANiAxQDcgXAo+IAliYXNlLXRpbWUgODAwIFwKPiAJc2NoZWQt ZW50cnkgUyAweDgxIDEwMDAwMCBcCj4gCXNjaGVkLWVudHJ5IFMgMHgwMSA5MDAwMDAgXAo+IAlm bGFncyAweDIgXAo+IAltYXgtc2R1IDAgMCAwIDAgMCAwIDAgNzkKPiAKPiBTYW1lIHNjaGVkdWxl LCBwaGFzZS1zaGlmdGVkIGJ5IDgwMCBucywgc28gdGhhdCBpZiB0aGUgcGFja2V0IGdvZXMKPiB0 aHJvdWdoIGFuIG9wZW4gZ2F0ZSBpbiB0aGUgZmlyc3Qgc3dpdGNoLCBpdCB3aWxsIGFsc28gZ28g dGhyb3VnaCBhbgo+IG9wZW4gZ2F0ZSB0aHJvdWdoIHRoZSBzZWNvbmQuCj4gCj4gQWNjb3JkaW5n IHRvIHlvdXIgb3duIGNhbGN1bGF0aW9ucyBhbmQgZXhwbGFuYXRpb25zLCB0aGUgZmlybXdhcmUg QUJJCj4gbWFrZXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIGJhc2UtdGltZSAwIGFuZCBiYXNlLXRp bWUgODAwLgo+IAoKSW4gdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBiYXNlLXRpbWUgMCBhbmQgYmFz ZS10aW1lIDgwMCB3aWxsIG1ha2UgYQpkaWZmZXJlbmNlLiBhcyB0aGUgY2hhbmdlX2N5Y2xlX2Nv dW50IHdpbGwgYmUgZGlmZmVyZW50IGZyb20gYm90aCB0aGUgY2FzZXMuCkluIGNhc2Ugb2YgYmFz ZS10aW1lIDAsIGNoYW5nZV9jeWNsZV9jb3VudCB3aWxsIGJlIDEuIEltcGx5aW5nIHNjaGVkdWxl CndpbGwgc3RhcnQgb24gdGhlIHZlcnkgbmV4dCBjeWNsZS4KCkluIGNhc2Ugb2YgYmFzZS10aW1l IDgwMCwgY2hhbmdlX2N5Y2xlX2NvdW50IHdpbGwgYmUgODAwIC8gY3ljbGUtdGltZS4KCj4gSW4g dGhpcyBjYXNlIHRoZXkgYXJlIHByb2JhYmx5IGJvdGggc21hbGxlciB0aGFuIHRoZSBjdXJyZW50 IHRpbWUsIHNvCj4gVEFTX0NPTkZJR19DSEFOR0VfQ1lDTEVfQ09VTlQgd2lsbCBiZSBzZXQgdG8g dGhlIHNhbWUgIjEiIGluIGJvdGggY2FzZXMuCj4gCgpJZiBjeWNsZS10aW1lIGlzIGxhcmdlciB0 aGVuIGJvdGggMCBhbmQgODAwIHRoZW4gdGhlIGNoYW5nZV9jeWNsZV9jb3VudAp3b3VsZCBiZSAx IGluIGJvdGggdGhlIGNhc2VzLgoKPiBCdXQgZXZlbiBhc3N1bWluZyBhIGZ1dHVyZSBiYXNlLXRp bWUsIGl0IHN0aWxsIHdpbGwgbWFrZSBubyBkaWZmZXJlbmNlLgo+IFRoZSBmaXJtd2FyZSBzZWVt cyB0byBvcGVyYXRlIG9ubHkgb24gaW50ZWdlciBtdWx0aXBsZXMgb2YgYSBjeWNsZS10aW1lCj4g KGhlcmUgMTAwMDAwMCkuCgpZZXMsIHRoZSBmaXJtd2FyZSB3b3JrcyBvbmx5IG9uIG11bHRpcGxl IG9mIGN5Y2xlIHRpbWUuIElmIHRoZSBiYXNlLXRpbWUKaXMgbm90IGEgbXVsdGlwbGUgb2YgY3lj bGUgdGltZSwgdGhlIHNjaGVkdWxpbmcgd2lsbCBzdGFydCBvbiB0aGUgbmV4dApjeWNsZSBjb3Vu dC4KCmkuZS4gY2hhbmdlX2N5Y2xlX2NvdW50ID0gY2VpbCAoYmFzZS10aW1lIC8gY3ljbGUtdGlt ZSkKCj4gCj4gU3VtbWFyaXplZCwgdGhlIGJsb2NraW5nIHByb2JsZW1zIEkgc2VlIGFyZToKPiAK PiAtIEZvciBpc3N1ZSAjMiwgdGhlIGRyaXZlciBzaG91bGQgbm90IGxpZSB0byB0aGUgdXNlciBz cGFjZSB0aGF0IGl0Cj4gICBhcHBsaWVkIGEgc2NoZWR1bGUgd2l0aCBhIGJhc2UtdGltZSB0aGF0 IGlzbid0IGEgcHJlY2lzZSBtdWx0aXBsZSBvZgo+ICAgdGhlIGN5Y2xlLXRpbWUsIGJlY2F1c2Ug aXQgZG9lc24ndCBkbyB0aGF0Lgo+IAoKWWVzLCBJIGFja25vd2xlZGdlIGl0J3MgYSBsaW1pdGF0 aW9uLiBEcml2ZXIgY2FuIHByaW50ICJyZXF1ZXN0ZWQKYmFzZS10aW1lIGlzIG5vdCBtdWx0aXBs ZSBvZiBjeWNsZS10aW1lLCBzZWNoZWR1bGluZyB3aWxsIHN0YXJ0IG9uIHRoZQpuZXh0IGF2YWls YWJsZSBjeWNsZSBmcm9tIGJhc2UtdGltZSIuIEkgYWdyZWUgdGhlIGRyaXZlciBzaG91bGRuJ3Qg bGllCmFib3V0IHRoaXMuIFdoZW5ldmVyIGRyaXZlciBlbmNvdW50ZXJzIGEgYmFzZSB0aW1lIHdo aWNoIGlzIG5vdCBtdWx0aXBsZQpvZiBjeWNsZS10aW1lLiBJdCBjYW4gc3RpbGwgZG8gdGhlIHNj aGVkdWxpbmcgYnV0IHRocm93IGEgcHJpbnQgc28gdGhhdAp1c2VyIGlzIGF3YXJlIG9mIHRoaXMu Cgo+IC0gRm9yIGlzc3VlICMxLCB0aGUgYmlnZ2VyIHByb2JsZW0gaXMgdGhhdCB0aGVyZSBpcyBh bHdheXMgYQo+ICAgc29mdHdhcmUtaW5kdWNlZCBqaXR0ZXIgd2hpY2ggbWFrZXMgd2hhdGV2ZXIg dGhlIHVzZXIgc3BhY2UgaGFzCj4gICByZXF1ZXN0ZWQgaXJyZWxldmFudC4KPiAKCkFzIGEgSSBt ZW50aW9uZWQgZWFybGllciwgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiB3aWxsIHRha2UgY2FyZSBv ZiB0aGlzLgoKSSB3aWxsIHdvcmsgd2l0aCB0aGUgZmlybXdhcmUgdGVhbSB0byBnZXQgdGhpcyBm aXhlZC4gT25jZSB0aGF0J3MgZG9uZSBJCndpbGwgc2VuZCBhIG5ldyByZXZpc2lvbi4KClRoYW5r cyBmb3IgYWxsIHRoZSBmZWVkYmFja3MuIFBsZWFzZSBsZXQgbWUga25vdyBpZiBzb21lIG1vcmUK Y2xhcmlmaWNhdGlvbiBpcyBuZWVkZWQuCgo+IFRoaXMgaXMgc3VmZmljaWVudGx5IGJhZCB0aGF0 IEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aCBzcGVuZGluZyBhbnkgbW9yZQo+IHRpbWUgb24gYW55 dGhpbmcgZWxzZSB1bnRpbCBpdCBpcyBjbGVhciBob3cgeW91IGNhbiBtYWtlIHRoZSBmaXJtd2Fy ZQo+IGFjdHVhbGx5IG9iZXkgdGhlIHJlcXVlc3RlZCBiYXNlLXRpbWUuCj4gCj4+Pj4gK3N0YXRp YyBpbnQgZW1hY190YXByaW9fcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKPj4+PiAr CQkJICAgICAgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW8pCj4+Pj4gK3sK Pj4+PiArCXN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYyA9IG5ldGRldl9wcml2KG5kZXYpOwo+Pj4+ ICsJaW50IHJldDsKPj4+PiArCj4+Pj4gKwlpZiAodGFwcmlvLT5jeWNsZV90aW1lX2V4dGVuc2lv bikgewo+Pj4+ICsJCU5MX1NFVF9FUlJfTVNHX01PRCh0YXByaW8tPmV4dGFjaywgIkN5Y2xlIHRp bWUgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiKTsKPj4+PiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7 Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJaWYgKHRhcHJpby0+Y3ljbGVfdGltZSA8IFRBU19NSU5f Q1lDTEVfVElNRSkgewo+Pj4+ICsJCU5MX1NFVF9FUlJfTVNHX0ZNVF9NT0QodGFwcmlvLT5leHRh Y2ssICJjeWNsZV90aW1lICVsbHUgaXMgbGVzcyB0aGFuIG1pbiBzdXBwb3J0ZWQgY3ljbGVfdGlt ZSAlZCIsCj4+Pj4gKwkJCQkgICAgICAgdGFwcmlvLT5jeWNsZV90aW1lLCBUQVNfTUlOX0NZQ0xF X1RJTUUpOwo+Pj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWlm ICh0YXByaW8tPm51bV9lbnRyaWVzID4gVEFTX01BWF9DTURfTElTVFMpIHsKPj4+PiArCQlOTF9T RVRfRVJSX01TR19GTVRfTU9EKHRhcHJpby0+ZXh0YWNrLCAibnVtX2VudHJpZXMgJWx1IGlzIG1v cmUgdGhhbiBtYXggc3VwcG9ydGVkIGVudHJpZXMgJWQiLAo+Pj4+ICsJCQkJICAgICAgIHRhcHJp by0+bnVtX2VudHJpZXMsIFRBU19NQVhfQ01EX0xJU1RTKTsKPj4+PiArCQlyZXR1cm4gLUVJTlZB TDsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlpZiAoZW1hYy0+cW9zLnRhcy50YXByaW9fYWRtaW4p Cj4+Pj4gKwkJdGFwcmlvX29mZmxvYWRfZnJlZShlbWFjLT5xb3MudGFzLnRhcHJpb19hZG1pbik7 Cj4+Pj4gKwo+Pj4+ICsJZW1hYy0+cW9zLnRhcy50YXByaW9fYWRtaW4gPSB0YXByaW9fb2ZmbG9h ZF9nZXQodGFwcmlvKTsKPj4+PiArCXJldCA9IHRhc191cGRhdGVfb3Blcl9saXN0KGVtYWMpOwo+ Pj4KPj4+IElmIHRoaXMgZmFpbHMgYW5kIHRoZXJlIHdhcyBhIHByZXZpb3VzIGVtYWMtPnFvcy50 YXMudGFwcmlvX2FkbWluCj4+PiBzY2hlZHVsZSBwcmVzZW50LCB5b3UganVzdCBicm9rZSBpdC4g SW4gcGFydGljdWxhciwgdGhlCj4+PiAiaWYgKGFkbWluX2xpc3QtPmN5Y2xlX3RpbWUgPiBUQVNf TUFYX0NZQ0xFX1RJTUUpIiBib3VuZHMgY2hlY2sgcmVhbGx5Cj4+PiBkb2Vzbid0IGJlbG9uZyB0 aGVyZTsgaXQgc2hvdWxkIGhhdmUgYmVlbiBkb25lIG11Y2ggZWFybGllciwgdG8gYXZvaWQgYQo+ Pj4gY29tcGxldGUgb2ZmbG9hZCBicmVha2FnZSBmb3Igc3VjaCBhIHNpbGx5IHRoaW5nIChyZXBs YWNpbmcgYSB3b3JraW5nCj4+PiB0YXByaW8gc2NoZWR1bGUgd2l0aCBhIG5ldyBvbmUgdGhhdCBo YXMgdG9vIGxhcmdlIGN5Y2xlIGJyZWFrcyB0aGUgb2xkCj4+PiBzY2hlZHVsZSkuCj4+Pgo+Pgo+ PiBXaWxsIGFkZGluZyB0aGUgY2hlY2sgImlmIChhZG1pbl9saXN0LT5jeWNsZV90aW1lID4gVEFT X01BWF9DWUNMRV9USU1FKSIKPj4gaW4gZW1hY190YXByaW9fcmVwbGFjZSgpIGFsb25nIHdpdGgg dGhlIGFsbCB0aGUgY2hlY2tzIGJlIE9LPwo+IAo+IFllcywgYnV0ICJpdCB3aWxsIGJlIG9rIiBu ZWVkcyB0byBiZSBwdXQgaW4gcHJvcGVyIGNvbnRleHQgKHRoaXMgc21hbGwKPiB0aGluZyBpcyBP SyBkb2Vzbid0IG1lYW4gZXZlcnl0aGluZyBpcyBPSykuCgpVbmRlcnN0b29kLiBJIGtub3cgdGhh dCB0aGUgZnVsbCBjb2RlIGlzIHN0aWxsIHZlcnkgZmFyIGZyb20gYmVpbmcgT0suCgotLSAKVGhh bmtzIGFuZCBSZWdhcmRzLApEYW5pc2gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK