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=-7.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 C0937C47093 for ; Wed, 2 Jun 2021 19:03:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ACC03613EC for ; Wed, 2 Jun 2021 19:03:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229758AbhFBTEu (ORCPT ); Wed, 2 Jun 2021 15:04:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:34056 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229755AbhFBTEs (ORCPT ); Wed, 2 Jun 2021 15:04:48 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 06146613DE; Wed, 2 Jun 2021 19:03:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1622660585; bh=UmpCat1vUqyqVee399R6xx/T2Sz4LjLr8R8Go7S3p1k=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IslsaRMEZqqFu3ZzSgqNdLrDRXTjEsWWBTdbepFtuZAlmqCW7jni6jsPwMosOCRva hVL4+t36l+lWWC9rTXUuGHZZNChuQuVPwsgAcgarySIPQWhv3ySLboMSW6JMAf2YId ToOOtiPdJHHzvzYjHqjjfZEO2eYA4AX3Aljp7kAmGXZVA7L2lL6g56NGyyXCmMhVl1 sQBuEtFrWqF1K+sFvakhAFEVFj0EMbQqcXRB118BwCBgCvQ2560yN11nj7Z+69id6J JER6VIjNBqPeimx5Ez/tElO4wGeBBVyTueFWmNTpZMfSZeX2/qtGWJoWzcr8IJn95m meDf8kBhp6UbA== Received: by pali.im (Postfix) id 81EBA1534; Wed, 2 Jun 2021 21:03:02 +0200 (CEST) Date: Wed, 2 Jun 2021 21:03:02 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Bjorn Helgaas Cc: Bjorn Helgaas , Kalle Valo , Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= , Marek =?utf-8?B?QmVow7pu?= , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , vtolkm@gmail.com, Rob Herring , Ilias Apalodimas , Thomas Petazzoni , linux-pci@vger.kernel.org, ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] PCI: Disallow retraining link for Atheros chips on non-Gen1 PCIe bridges Message-ID: <20210602190302.d3ibdtwti4yq57vi@pali> References: <20210602120816.axi4dtnyg5gl2h2z@pali> <20210602155559.GA2028037@bjorn-Precision-5520> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210602155559.GA2028037@bjorn-Precision-5520> User-Agent: NeoMutt/20180716 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Wednesday 02 June 2021 10:55:59 Bjorn Helgaas wrote: > On Wed, Jun 02, 2021 at 02:08:16PM +0200, Pali Rohár wrote: > > On Tuesday 01 June 2021 19:00:36 Bjorn Helgaas wrote: > > > > I wonder if this could be restructured as a generic quirk in quirks.c > > > that simply set the bridge's TLS to 2.5 GT/s during enumeration. Or > > > would the retrain fail even in that case? > > > > If I understand it correctly then PCIe link is already up when kernel > > starts enumeration. So setting Bridge TLS to 2.5 GT/s does not change > > anything here. > > > > Moreover it would have side effect that cards which are already set to > > 5+ GT/s would be downgraded to 2.5 GT/s during enumeration and for > > increasing speed would be needed another round of "enumeration" to set a > > new TLS and retrain link again. As TLS affects link only after link goes > > into Recovery state. > > > > So this would just complicate card enumeration and settings. > > The current quirk complicates the ASPM code. I'm hoping that if we > set the bridge's Target Link Speed during enumeration, the link > retrain will "just work" without complicating the ASPM code. > > An enumeration quirk wouldn't have to set the bridge's TLS to 2.5 > GT/s; the quirk would be attached to specific endpoint devices and > could set the bridge's TLS to whatever the endpoint supports. Now I see what you mean. Yes, I agree this is a good idea and can simplify code. Quirk is not related to ASPM code and basically has nothing with it, just I put it into aspm.c because this is the only place where link retraining was activated. But with this proposal there is one issue. Some kernel drivers already overwrite PCI_EXP_LNKCTL2_TLS value. So if PCI enumeration code set some value into PCI_EXP_LNKCTL2_TLS bits then drivers can change it and once ASPM will try to retrain link this may cause this issue. > > Moreover here we are dealing with specific OTP/EEPROM bug in Atheros > > chips, which was confirmed that exists. As I wrote in previous email, I > > was told that semi-official workaround is do Warm Reset or Cold Reset > > with turning power off from card. Which on most platforms / boards is > > not possible. > > If there's a specific bug with a real root-cause analysis, please cite > it. The threads mentioned in the current commit log are basically > informed speculation. I had (private) discussion with Adrian Chadd about ABCD device id issue. I hope that nobody is against if I put there summary and important parts about secondary bus reset (=hot reset): The reason for abcd is because: * the MAC has hardware that upon cold reset, will read EEPROM/OTP values for things like PCIe and other register defaults, and squirt them into the MAC/PHY/etc registers * the default values for the PCIe bus pre-AR9300 were 0x168c:0xff, where is the normal chip ID * the default values for the PCIe bus POST-AR9300 were 0x168c:0xabcd, where they're always that regardless of the chip family * so yeah, all you know with 0x168c:0xabcd is there's an atheros device there, but not WHICH it is. * the bug is that the reset line isn't held low for long enough, or it's bounced twice in quick succession, before the MAC has time to program in the defaults from EEPROM/OTP and it doesn't do it a second time. * the MAC has hardware that upon cold reset, will read EEPROM/OTP values for things like PCIe and other register defaults, and squirt them into the MAC/PHY/etc registers * need to use the external reset line OR try using D3, not D3hot (I assume that "external reset line" means PERST# - PCIe Warm Reset and "D3, not D3hot" means D3cold) And now my experiments: Disabling and Enabling link via root bridge has exactly same syndromes as hot reset on all tested cards. See that different chips (pre-AR9300 and post-AR9300) have slightly different behavior and it matches all my experiments (I wrote test details in commit message). And doing link retrain when root bridge has non-2.5GT/s value in PCI_EXP_LNKCTL2_TLS has also same effect as hot reset. So based on same results from my experiments all these actions (disabling link, hot reset and link retrain) have common issue. 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=-5.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 95197C4708F for ; Wed, 2 Jun 2021 19:03:24 +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 501A8613E6 for ; Wed, 2 Jun 2021 19:03:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 501A8613E6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=ath10k-bounces+ath10k=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=IgZbU3kyKfqOpqOlakWZbEgtPSQyrsnBVFV3Pf9Po04=; b=VDcUBmxfI35JAI hTVRurnxyzmM/afrpgqEqtAvIFHCo+7Qc9LEFVthUNvuB2ONG+tNy6w9xEyhP4d4Ja6koQFdwLBif +yQDWe1bXVuWvWPzUM0hWpO3RuSkc67C1wxqbMOCSve0n7pvPX1nTMEMhDM/yckM4OZ6hv9ONkqz2 3h3X2FM6PVoTbevUt/TQI//siMxwc8rhxlUgljYD3ZzSRqaWyytK9hyzX5AxaJFRknhpjErdQOfY3 QKxpxhejXpu7PSJS/qkBRu627Zdtjm9X12IUIbhmXsxOAqoMHK2DeA/b8nCHEXMy1zhUqcAwBfSuF jXG0pbDisp9KJDFMmu9w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1loW8y-005sHq-Os; Wed, 02 Jun 2021 19:03:08 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1loW8v-005sGQ-Iy for ath10k@lists.infradead.org; Wed, 02 Jun 2021 19:03:07 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 06146613DE; Wed, 2 Jun 2021 19:03:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1622660585; bh=UmpCat1vUqyqVee399R6xx/T2Sz4LjLr8R8Go7S3p1k=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IslsaRMEZqqFu3ZzSgqNdLrDRXTjEsWWBTdbepFtuZAlmqCW7jni6jsPwMosOCRva hVL4+t36l+lWWC9rTXUuGHZZNChuQuVPwsgAcgarySIPQWhv3ySLboMSW6JMAf2YId ToOOtiPdJHHzvzYjHqjjfZEO2eYA4AX3Aljp7kAmGXZVA7L2lL6g56NGyyXCmMhVl1 sQBuEtFrWqF1K+sFvakhAFEVFj0EMbQqcXRB118BwCBgCvQ2560yN11nj7Z+69id6J JER6VIjNBqPeimx5Ez/tElO4wGeBBVyTueFWmNTpZMfSZeX2/qtGWJoWzcr8IJn95m meDf8kBhp6UbA== Received: by pali.im (Postfix) id 81EBA1534; Wed, 2 Jun 2021 21:03:02 +0200 (CEST) Date: Wed, 2 Jun 2021 21:03:02 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Bjorn Helgaas Cc: Bjorn Helgaas , Kalle Valo , Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= , Marek =?utf-8?B?QmVow7pu?= , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , vtolkm@gmail.com, Rob Herring , Ilias Apalodimas , Thomas Petazzoni , linux-pci@vger.kernel.org, ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] PCI: Disallow retraining link for Atheros chips on non-Gen1 PCIe bridges Message-ID: <20210602190302.d3ibdtwti4yq57vi@pali> References: <20210602120816.axi4dtnyg5gl2h2z@pali> <20210602155559.GA2028037@bjorn-Precision-5520> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210602155559.GA2028037@bjorn-Precision-5520> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210602_120305_685537_3BF8FB76 X-CRM114-Status: GOOD ( 32.46 ) X-BeenThere: ath10k@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: "ath10k" Errors-To: ath10k-bounces+ath10k=archiver.kernel.org@lists.infradead.org T24gV2VkbmVzZGF5IDAyIEp1bmUgMjAyMSAxMDo1NTo1OSBCam9ybiBIZWxnYWFzIHdyb3RlOgo+ IE9uIFdlZCwgSnVuIDAyLCAyMDIxIGF0IDAyOjA4OjE2UE0gKzAyMDAsIFBhbGkgUm9ow6FyIHdy b3RlOgo+ID4gT24gVHVlc2RheSAwMSBKdW5lIDIwMjEgMTk6MDA6MzYgQmpvcm4gSGVsZ2FhcyB3 cm90ZToKPiAKPiA+ID4gSSB3b25kZXIgaWYgdGhpcyBjb3VsZCBiZSByZXN0cnVjdHVyZWQgYXMg YSBnZW5lcmljIHF1aXJrIGluIHF1aXJrcy5jCj4gPiA+IHRoYXQgc2ltcGx5IHNldCB0aGUgYnJp ZGdlJ3MgVExTIHRvIDIuNSBHVC9zIGR1cmluZyBlbnVtZXJhdGlvbi4gIE9yCj4gPiA+IHdvdWxk IHRoZSByZXRyYWluIGZhaWwgZXZlbiBpbiB0aGF0IGNhc2U/Cj4gPiAKPiA+IElmIEkgdW5kZXJz dGFuZCBpdCBjb3JyZWN0bHkgdGhlbiBQQ0llIGxpbmsgaXMgYWxyZWFkeSB1cCB3aGVuIGtlcm5l bAo+ID4gc3RhcnRzIGVudW1lcmF0aW9uLiBTbyBzZXR0aW5nIEJyaWRnZSBUTFMgdG8gMi41IEdU L3MgZG9lcyBub3QgY2hhbmdlCj4gPiBhbnl0aGluZyBoZXJlLgo+ID4gCj4gPiBNb3Jlb3ZlciBp dCB3b3VsZCBoYXZlIHNpZGUgZWZmZWN0IHRoYXQgY2FyZHMgd2hpY2ggYXJlIGFscmVhZHkgc2V0 IHRvCj4gPiA1KyBHVC9zIHdvdWxkIGJlIGRvd25ncmFkZWQgdG8gMi41IEdUL3MgZHVyaW5nIGVu dW1lcmF0aW9uIGFuZCBmb3IKPiA+IGluY3JlYXNpbmcgc3BlZWQgd291bGQgYmUgbmVlZGVkIGFu b3RoZXIgcm91bmQgb2YgImVudW1lcmF0aW9uIiB0byBzZXQgYQo+ID4gbmV3IFRMUyBhbmQgcmV0 cmFpbiBsaW5rIGFnYWluLiBBcyBUTFMgYWZmZWN0cyBsaW5rIG9ubHkgYWZ0ZXIgbGluayBnb2Vz Cj4gPiBpbnRvIFJlY292ZXJ5IHN0YXRlLgo+ID4gCj4gPiBTbyB0aGlzIHdvdWxkIGp1c3QgY29t cGxpY2F0ZSBjYXJkIGVudW1lcmF0aW9uIGFuZCBzZXR0aW5ncy4KPiAKPiBUaGUgY3VycmVudCBx dWlyayBjb21wbGljYXRlcyB0aGUgQVNQTSBjb2RlLiAgSSdtIGhvcGluZyB0aGF0IGlmIHdlCj4g c2V0IHRoZSBicmlkZ2UncyBUYXJnZXQgTGluayBTcGVlZCBkdXJpbmcgZW51bWVyYXRpb24sIHRo ZSBsaW5rCj4gcmV0cmFpbiB3aWxsICJqdXN0IHdvcmsiIHdpdGhvdXQgY29tcGxpY2F0aW5nIHRo ZSBBU1BNIGNvZGUuCj4gCj4gQW4gZW51bWVyYXRpb24gcXVpcmsgd291bGRuJ3QgaGF2ZSB0byBz ZXQgdGhlIGJyaWRnZSdzIFRMUyB0byAyLjUKPiBHVC9zOyB0aGUgcXVpcmsgd291bGQgYmUgYXR0 YWNoZWQgdG8gc3BlY2lmaWMgZW5kcG9pbnQgZGV2aWNlcyBhbmQKPiBjb3VsZCBzZXQgdGhlIGJy aWRnZSdzIFRMUyB0byB3aGF0ZXZlciB0aGUgZW5kcG9pbnQgc3VwcG9ydHMuCgpOb3cgSSBzZWUg d2hhdCB5b3UgbWVhbi4gWWVzLCBJIGFncmVlIHRoaXMgaXMgYSBnb29kIGlkZWEgYW5kIGNhbgpz aW1wbGlmeSBjb2RlLiBRdWlyayBpcyBub3QgcmVsYXRlZCB0byBBU1BNIGNvZGUgYW5kIGJhc2lj YWxseSBoYXMKbm90aGluZyB3aXRoIGl0LCBqdXN0IEkgcHV0IGl0IGludG8gYXNwbS5jIGJlY2F1 c2UgdGhpcyBpcyB0aGUgb25seQpwbGFjZSB3aGVyZSBsaW5rIHJldHJhaW5pbmcgd2FzIGFjdGl2 YXRlZC4KCkJ1dCB3aXRoIHRoaXMgcHJvcG9zYWwgdGhlcmUgaXMgb25lIGlzc3VlLiBTb21lIGtl cm5lbCBkcml2ZXJzIGFscmVhZHkKb3ZlcndyaXRlIFBDSV9FWFBfTE5LQ1RMMl9UTFMgdmFsdWUu IFNvIGlmIFBDSSBlbnVtZXJhdGlvbiBjb2RlIHNldCBzb21lCnZhbHVlIGludG8gUENJX0VYUF9M TktDVEwyX1RMUyBiaXRzIHRoZW4gZHJpdmVycyBjYW4gY2hhbmdlIGl0IGFuZCBvbmNlCkFTUE0g d2lsbCB0cnkgdG8gcmV0cmFpbiBsaW5rIHRoaXMgbWF5IGNhdXNlIHRoaXMgaXNzdWUuCgo+ID4g TW9yZW92ZXIgaGVyZSB3ZSBhcmUgZGVhbGluZyB3aXRoIHNwZWNpZmljIE9UUC9FRVBST00gYnVn IGluIEF0aGVyb3MKPiA+IGNoaXBzLCB3aGljaCB3YXMgY29uZmlybWVkIHRoYXQgZXhpc3RzLiBB cyBJIHdyb3RlIGluIHByZXZpb3VzIGVtYWlsLCBJCj4gPiB3YXMgdG9sZCB0aGF0IHNlbWktb2Zm aWNpYWwgd29ya2Fyb3VuZCBpcyBkbyBXYXJtIFJlc2V0IG9yIENvbGQgUmVzZXQKPiA+IHdpdGgg dHVybmluZyBwb3dlciBvZmYgZnJvbSBjYXJkLiBXaGljaCBvbiBtb3N0IHBsYXRmb3JtcyAvIGJv YXJkcyBpcwo+ID4gbm90IHBvc3NpYmxlLgo+IAo+IElmIHRoZXJlJ3MgYSBzcGVjaWZpYyBidWcg d2l0aCBhIHJlYWwgcm9vdC1jYXVzZSBhbmFseXNpcywgcGxlYXNlIGNpdGUKPiBpdC4gIFRoZSB0 aHJlYWRzIG1lbnRpb25lZCBpbiB0aGUgY3VycmVudCBjb21taXQgbG9nIGFyZSBiYXNpY2FsbHkK PiBpbmZvcm1lZCBzcGVjdWxhdGlvbi4KCkkgaGFkIChwcml2YXRlKSBkaXNjdXNzaW9uIHdpdGgg QWRyaWFuIENoYWRkIGFib3V0IEFCQ0QgZGV2aWNlIGlkIGlzc3VlLgpJIGhvcGUgdGhhdCBub2Jv ZHkgaXMgYWdhaW5zdCBpZiBJIHB1dCB0aGVyZSBzdW1tYXJ5IGFuZCBpbXBvcnRhbnQgcGFydHMK YWJvdXQgc2Vjb25kYXJ5IGJ1cyByZXNldCAoPWhvdCByZXNldCk6CgoKVGhlIHJlYXNvbiBmb3Ig YWJjZCBpcyBiZWNhdXNlOgoqIHRoZSBNQUMgaGFzIGhhcmR3YXJlIHRoYXQgdXBvbiBjb2xkIHJl c2V0LCB3aWxsIHJlYWQgRUVQUk9NL09UUAogIHZhbHVlcyBmb3IgdGhpbmdzIGxpa2UgUENJZSBh bmQgb3RoZXIgcmVnaXN0ZXIgZGVmYXVsdHMsIGFuZCBzcXVpcnQKICB0aGVtIGludG8gdGhlIE1B Qy9QSFkvZXRjIHJlZ2lzdGVycwoqIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIFBDSWUgYnVz IHByZS1BUjkzMDAgd2VyZSAweDE2OGM6MHhmZjxpZD4sCiAgd2hlcmUgPGlkPiBpcyB0aGUgbm9y bWFsIGNoaXAgSUQKKiB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBQQ0llIGJ1cyBQT1NULUFS OTMwMCB3ZXJlIDB4MTY4YzoweGFiY2QsCiAgd2hlcmUgdGhleSdyZSBhbHdheXMgdGhhdCByZWdh cmRsZXNzIG9mIHRoZSBjaGlwIGZhbWlseQoqIHNvIHllYWgsIGFsbCB5b3Uga25vdyB3aXRoIDB4 MTY4YzoweGFiY2QgaXMgdGhlcmUncyBhbiBhdGhlcm9zCiAgZGV2aWNlIHRoZXJlLCBidXQgbm90 IFdISUNIIGl0IGlzLgoKKiB0aGUgYnVnIGlzIHRoYXQgdGhlIHJlc2V0IGxpbmUgaXNuJ3QgaGVs ZCBsb3cgZm9yIGxvbmcgZW5vdWdoLCBvciBpdCdzCiAgYm91bmNlZCB0d2ljZSBpbiBxdWljayBz dWNjZXNzaW9uLCBiZWZvcmUgdGhlIE1BQyBoYXMgdGltZSB0byBwcm9ncmFtCiAgaW4gdGhlIGRl ZmF1bHRzIGZyb20gRUVQUk9NL09UUCBhbmQgaXQgZG9lc24ndCBkbyBpdCBhIHNlY29uZCB0aW1l LgoKKiB0aGUgTUFDIGhhcyBoYXJkd2FyZSB0aGF0IHVwb24gY29sZCByZXNldCwgd2lsbCByZWFk IEVFUFJPTS9PVFAKICB2YWx1ZXMgZm9yIHRoaW5ncyBsaWtlIFBDSWUgYW5kIG90aGVyIHJlZ2lz dGVyIGRlZmF1bHRzLCBhbmQgc3F1aXJ0CiAgdGhlbSBpbnRvIHRoZSBNQUMvUEhZL2V0YyByZWdp c3RlcnMKCiogbmVlZCB0byB1c2UgdGhlIGV4dGVybmFsIHJlc2V0IGxpbmUgT1IgdHJ5IHVzaW5n IEQzLCBub3QgRDNob3QKICAoSSBhc3N1bWUgdGhhdCAiZXh0ZXJuYWwgcmVzZXQgbGluZSIgbWVh bnMgUEVSU1QjIC0gUENJZSBXYXJtIFJlc2V0CiAgYW5kICJEMywgbm90IEQzaG90IiBtZWFucyBE M2NvbGQpCgoKQW5kIG5vdyBteSBleHBlcmltZW50czogRGlzYWJsaW5nIGFuZCBFbmFibGluZyBs aW5rIHZpYSByb290IGJyaWRnZSBoYXMKZXhhY3RseSBzYW1lIHN5bmRyb21lcyBhcyBob3QgcmVz ZXQgb24gYWxsIHRlc3RlZCBjYXJkcy4gU2VlIHRoYXQKZGlmZmVyZW50IGNoaXBzIChwcmUtQVI5 MzAwIGFuZCBwb3N0LUFSOTMwMCkgaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnQKYmVoYXZpb3IgYW5k IGl0IG1hdGNoZXMgYWxsIG15IGV4cGVyaW1lbnRzIChJIHdyb3RlIHRlc3QgZGV0YWlscyBpbgpj b21taXQgbWVzc2FnZSkuIEFuZCBkb2luZyBsaW5rIHJldHJhaW4gd2hlbiByb290IGJyaWRnZSBo YXMgbm9uLTIuNUdUL3MKdmFsdWUgaW4gUENJX0VYUF9MTktDVEwyX1RMUyBoYXMgYWxzbyBzYW1l IGVmZmVjdCBhcyBob3QgcmVzZXQuClNvIGJhc2VkIG9uIHNhbWUgcmVzdWx0cyBmcm9tIG15IGV4 cGVyaW1lbnRzIGFsbCB0aGVzZSBhY3Rpb25zCihkaXNhYmxpbmcgbGluaywgaG90IHJlc2V0IGFu ZCBsaW5rIHJldHJhaW4pIGhhdmUgY29tbW9uIGlzc3VlLgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYXRoMTBrIG1haWxpbmcgbGlzdAphdGgxMGtAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2F0aDEwawo=