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=-10.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable 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 60AE2C433E2 for ; Fri, 10 Jul 2020 19:30:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3AA652078B for ; Fri, 10 Jul 2020 19:30:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594409409; bh=HKUsObJTxAzGIdEMpdjrd4x7q3Pjx/3zWOsbyKi8J8I=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=lyXYolnQU6srkS5fzc5gLohWVQVQ7CHiqwbPIEBZPJjP3U9oRy0evMVZ7xrozStrL 117I0RnqfyusQ4WSJW1r1pF4D2AX8yh6yHTxYhpyJ66aFLStmtJa/Sm/UUwKk6pzD2 EYBIHc3Vo2a17vSBdfUze6xfiT95RKIS8UFi/dHs= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728066AbgGJTaH (ORCPT ); Fri, 10 Jul 2020 15:30:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:57162 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726867AbgGJTaH (ORCPT ); Fri, 10 Jul 2020 15:30:07 -0400 Received: from pali.im (pali.im [31.31.79.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 637F72076A; Fri, 10 Jul 2020 19:30:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594409406; bh=HKUsObJTxAzGIdEMpdjrd4x7q3Pjx/3zWOsbyKi8J8I=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=b4lsMVUp03tGaCM4yusSTbgfcwdNY0Vg1sMxofe1XOXmiemJxVvz40mZTTs1U2y65 +zn9BzjIgGMIGogaR4VxJVPj5Im+hbb95iECFrVENJHa5RO0Umio8o5mW7fJSzS/yv +KA5KmHrdV96d3kzJdUIUpj2irSPpLGB7Q7mBbbc= Received: by pali.im (Postfix) id 2019A1514; Fri, 10 Jul 2020 21:30:04 +0200 (CEST) Date: Fri, 10 Jul 2020 21:30:03 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Bjorn Helgaas Cc: Lorenzo Pieralisi , Thomas Petazzoni , Andrew Murray , Bjorn Helgaas , Marek =?utf-8?B?QmVow7pu?= , Remi Pommarel , Tomasz Maciej Nowak , Xogium , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] PCI: aardvark: Don't touch PCIe registers if no card connected Message-ID: <20200710193003.2lt3i5ocy5kk3b3p@pali> References: <20200710154458.bntk7cgewvxmubf4@pali> <20200710160828.GA63389@bjorn-Precision-5520> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200710160828.GA63389@bjorn-Precision-5520> User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday 10 July 2020 11:08:28 Bjorn Helgaas wrote: > On Fri, Jul 10, 2020 at 05:44:58PM +0200, Pali Rohár wrote: > > I can reproduce following issue: Connect Compex WLE900VX card, configure > > aardvark to gen2 mode. And then card is detected only after the first > > link training. If kernel tries to retrain link again (e.g. via ASPM > > code) then card is not detected anymore. > > Somebody should go over the ASPM retrain link code and the PCIe spec > with a fine-toothed comb. Maybe we're doing something wrong there. I think this is not ASPM related as card simply disappear just after flipping PCI_EXP_LNKCTL_RL bit second time without changing ASPM bits. > Or maybe aardvark has some hardware issue and we need some sort of > quirk to work around it. It is possible that this is aardvark issue. As I said I really do not know. In aardvark driver there is already merged workaround for this issue: driver force gen1 aardvark mode for gen1 card. > > Another issue which happens for WLE900VX, WLE600VX and WLE1216VS-20 (but > > not for WLE200VX): Linux kernel can detect these cards only if it issues > > card reset via PERST# signal and start link training (via standard pcie > > endpoint register PCI_EXP_LNKCTL/PCI_EXP_LNKCTL_RL) > > I think you mean "downstream port" (not "endpoint") register? Yes. > PCI_EXP_LNKCTL_RL is only applicable to *downstream ports* (root ports > or switch downstream ports) and is reserved for endpoints. > > > immediately after > > enable link training in aardvark (via aardvark specific LINK_TRAINING_EN > > bit). If there is e.g. 100ms delay between enabling link training and > > setting PCI_EXP_LNKCTL_RL bit then these cards are not detected. > > This sounds problematic. Hardware should not be dependent on the > software being "fast enough". In general we should be able to insert > arbitrary delays at any point without breaking anything. Yes, it is problematic. For example following commit broke those cards: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f4c7d053d7f77cd5c1a1ba7c7ce085ddba13d1d7 And this commit fixed it (just msleep was moved to different stage): https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6964494582f56a3882c2c53b0edbfe99eb32b2e1 But we somehow need to deal with it until we find root cause. Basically additional sleep in aardvark init phase can break WLE900VX cards, but not WLE200VX. And because WLE900VX works fine with pci-mvebu and WLE200VX works fine with pci-aardvark we cannot deduce from it if problem for combination of WLE900VX and aardvark is in WLE900VX or in aardvark. > But I have the impression that aardvark requires more software > hand-holding that most hardware does. If it imposes timing > requirements on the software, that *should* be documented in the > aardvark spec. There is absolutely nothing regarding to timings in documentation which I saw. In documentation are just instructions/steps how to init PCI subsystem and it is basically advk_pcie_setup_hw() function. > > I read in kernel bugzilla that WLE600VX and WLE900VX cards are buggy and > > more people have problems with them. But issues described in kernel > > bugzilla (like card is reporting incorrect PCI device id) I'm not > > observing. > > Pointer? Hm... I cannot find right now pointer to bugzilla, but I have pointer to ath9k-devel mailing list with that incorrect device id: https://www.mail-archive.com/ath9k-devel@lists.ath9k.org/msg07529.html > Is the incorrect device ID 0xffff? No, incorrect device ID in that case is 0xabcd and vendor ID is correct (Qualcomm). > That could be a symptom > of a PCIe error. If we read a device ID that's something other than > 0, 0xffff, or the correct ID, that would be really weird. Even 0 > would be really strange. It is strange and also reason why discussion on that list is long. As I said, I'm not seeing that problem with wrong device ID. But I know people who are observing same problem on different boards (which do not use aardvark) as described in above mailing list thread with Compex ath10k cards. > I suspect these wifi cards are a little special because they probably > play unusual games with power for airplane mode and the like. This is another/different problem and is already "documented" in kernel bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=84821#c52 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=-10.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 6CD9DC433DF for ; Fri, 10 Jul 2020 19:31:52 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 368A32076A for ; Fri, 10 Jul 2020 19:31:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="a9V2YCOc"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="b4lsMVUp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 368A32076A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org 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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject: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=cw/O6WplXqUWWmzr23lSp1ekx/CVVdn7gPRaLBCZH58=; b=a9V2YCOcJD7YJEeSj5V13VQKP H3bE8slFUGkbatOkW6da5BgGk3G0VNO50uFlGwYE1XXKaKettRe7fMH5GxQfUT2GH++xkoj6Euofp D3TJtsAwkIwbet3Im7BlKv85DoC5jiEQsV1yBQbYPdsU+9FignLeWGDzSl+cILjtlPAXPsxLyvuiM Z8Wgqf9c15QjVEIhdEckoDxz/1dc0iQWpAo0U/ZZjBn5hfXw1If9J4OZxYTk9LgTYZ0mTycot6B53 500kS5WsVCuUjsOsFrZvv/XoxpB1aVy5TSvIHpaXV+qeojznBr+d9nADtUKQIP9Gw/CZyh37RvhMk Us3baI2lQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jtyio-0007Bl-EO; Fri, 10 Jul 2020 19:30:10 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jtyil-0007BA-Bg for linux-arm-kernel@lists.infradead.org; Fri, 10 Jul 2020 19:30:08 +0000 Received: from pali.im (pali.im [31.31.79.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 637F72076A; Fri, 10 Jul 2020 19:30:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594409406; bh=HKUsObJTxAzGIdEMpdjrd4x7q3Pjx/3zWOsbyKi8J8I=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=b4lsMVUp03tGaCM4yusSTbgfcwdNY0Vg1sMxofe1XOXmiemJxVvz40mZTTs1U2y65 +zn9BzjIgGMIGogaR4VxJVPj5Im+hbb95iECFrVENJHa5RO0Umio8o5mW7fJSzS/yv +KA5KmHrdV96d3kzJdUIUpj2irSPpLGB7Q7mBbbc= Received: by pali.im (Postfix) id 2019A1514; Fri, 10 Jul 2020 21:30:04 +0200 (CEST) Date: Fri, 10 Jul 2020 21:30:03 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Bjorn Helgaas Subject: Re: [PATCH v3] PCI: aardvark: Don't touch PCIe registers if no card connected Message-ID: <20200710193003.2lt3i5ocy5kk3b3p@pali> References: <20200710154458.bntk7cgewvxmubf4@pali> <20200710160828.GA63389@bjorn-Precision-5520> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200710160828.GA63389@bjorn-Precision-5520> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_153007_698194_C885DBD6 X-CRM114-Status: GOOD ( 28.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tomasz Maciej Nowak , Lorenzo Pieralisi , linux-pci@vger.kernel.org, Xogium , linux-kernel@vger.kernel.org, Marek =?utf-8?B?QmVow7pu?= , Remi Pommarel , Thomas Petazzoni , Bjorn Helgaas , linux-arm-kernel@lists.infradead.org, Andrew Murray 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 T24gRnJpZGF5IDEwIEp1bHkgMjAyMCAxMTowODoyOCBCam9ybiBIZWxnYWFzIHdyb3RlOgo+IE9u IEZyaSwgSnVsIDEwLCAyMDIwIGF0IDA1OjQ0OjU4UE0gKzAyMDAsIFBhbGkgUm9ow6FyIHdyb3Rl Ogo+ID4gSSBjYW4gcmVwcm9kdWNlIGZvbGxvd2luZyBpc3N1ZTogQ29ubmVjdCBDb21wZXggV0xF OTAwVlggY2FyZCwgY29uZmlndXJlCj4gPiBhYXJkdmFyayB0byBnZW4yIG1vZGUuIEFuZCB0aGVu IGNhcmQgaXMgZGV0ZWN0ZWQgb25seSBhZnRlciB0aGUgZmlyc3QKPiA+IGxpbmsgdHJhaW5pbmcu IElmIGtlcm5lbCB0cmllcyB0byByZXRyYWluIGxpbmsgYWdhaW4gKGUuZy4gdmlhIEFTUE0KPiA+ IGNvZGUpIHRoZW4gY2FyZCBpcyBub3QgZGV0ZWN0ZWQgYW55bW9yZS4gCj4gCj4gU29tZWJvZHkg c2hvdWxkIGdvIG92ZXIgdGhlIEFTUE0gcmV0cmFpbiBsaW5rIGNvZGUgYW5kIHRoZSBQQ0llIHNw ZWMKPiB3aXRoIGEgZmluZS10b290aGVkIGNvbWIuICBNYXliZSB3ZSdyZSBkb2luZyBzb21ldGhp bmcgd3JvbmcgdGhlcmUuCgpJIHRoaW5rIHRoaXMgaXMgbm90IEFTUE0gcmVsYXRlZCBhcyBjYXJk IHNpbXBseSBkaXNhcHBlYXIganVzdCBhZnRlcgpmbGlwcGluZyBQQ0lfRVhQX0xOS0NUTF9STCBi aXQgc2Vjb25kIHRpbWUgd2l0aG91dCBjaGFuZ2luZyBBU1BNIGJpdHMuCgo+IE9yIG1heWJlIGFh cmR2YXJrIGhhcyBzb21lIGhhcmR3YXJlIGlzc3VlIGFuZCB3ZSBuZWVkIHNvbWUgc29ydCBvZgo+ IHF1aXJrIHRvIHdvcmsgYXJvdW5kIGl0LgoKSXQgaXMgcG9zc2libGUgdGhhdCB0aGlzIGlzIGFh cmR2YXJrIGlzc3VlLiBBcyBJIHNhaWQgSSByZWFsbHkgZG8gbm90Cmtub3cuCgpJbiBhYXJkdmFy ayBkcml2ZXIgdGhlcmUgaXMgYWxyZWFkeSBtZXJnZWQgd29ya2Fyb3VuZCBmb3IgdGhpcyBpc3N1 ZToKZHJpdmVyIGZvcmNlIGdlbjEgYWFyZHZhcmsgbW9kZSBmb3IgZ2VuMSBjYXJkLgoKPiA+IEFu b3RoZXIgaXNzdWUgd2hpY2ggaGFwcGVucyBmb3IgV0xFOTAwVlgsIFdMRTYwMFZYIGFuZCBXTEUx MjE2VlMtMjAgKGJ1dAo+ID4gbm90IGZvciBXTEUyMDBWWCk6IExpbnV4IGtlcm5lbCBjYW4gZGV0 ZWN0IHRoZXNlIGNhcmRzIG9ubHkgaWYgaXQgaXNzdWVzCj4gPiBjYXJkIHJlc2V0IHZpYSBQRVJT VCMgc2lnbmFsIGFuZCBzdGFydCBsaW5rIHRyYWluaW5nICh2aWEgc3RhbmRhcmQgcGNpZQo+ID4g ZW5kcG9pbnQgcmVnaXN0ZXIgUENJX0VYUF9MTktDVEwvUENJX0VYUF9MTktDVExfUkwpCj4gCj4g SSB0aGluayB5b3UgbWVhbiAiZG93bnN0cmVhbSBwb3J0IiAobm90ICJlbmRwb2ludCIpIHJlZ2lz dGVyPwoKWWVzLgoKPiBQQ0lfRVhQX0xOS0NUTF9STCBpcyBvbmx5IGFwcGxpY2FibGUgdG8gKmRv d25zdHJlYW0gcG9ydHMqIChyb290IHBvcnRzCj4gb3Igc3dpdGNoIGRvd25zdHJlYW0gcG9ydHMp IGFuZCBpcyByZXNlcnZlZCBmb3IgZW5kcG9pbnRzLgo+IAo+ID4gaW1tZWRpYXRlbHkgYWZ0ZXIK PiA+IGVuYWJsZSBsaW5rIHRyYWluaW5nIGluIGFhcmR2YXJrICh2aWEgYWFyZHZhcmsgc3BlY2lm aWMgTElOS19UUkFJTklOR19FTgo+ID4gYml0KS4gSWYgdGhlcmUgaXMgZS5nLiAxMDBtcyBkZWxh eSBiZXR3ZWVuIGVuYWJsaW5nIGxpbmsgdHJhaW5pbmcgYW5kCj4gPiBzZXR0aW5nIFBDSV9FWFBf TE5LQ1RMX1JMIGJpdCB0aGVuIHRoZXNlIGNhcmRzIGFyZSBub3QgZGV0ZWN0ZWQuCj4gCj4gVGhp cyBzb3VuZHMgcHJvYmxlbWF0aWMuICBIYXJkd2FyZSBzaG91bGQgbm90IGJlIGRlcGVuZGVudCBv biB0aGUKPiBzb2Z0d2FyZSBiZWluZyAiZmFzdCBlbm91Z2giLiAgSW4gZ2VuZXJhbCB3ZSBzaG91 bGQgYmUgYWJsZSB0byBpbnNlcnQKPiBhcmJpdHJhcnkgZGVsYXlzIGF0IGFueSBwb2ludCB3aXRo b3V0IGJyZWFraW5nIGFueXRoaW5nLgoKWWVzLCBpdCBpcyBwcm9ibGVtYXRpYy4gRm9yIGV4YW1w bGUgZm9sbG93aW5nIGNvbW1pdCBicm9rZSB0aG9zZSBjYXJkczoKaHR0cHM6Ly9naXQua2VybmVs Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L2NvbW1pdC8/ aWQ9ZjRjN2QwNTNkN2Y3N2NkNWMxYTFiYTdjN2NlMDg1ZGRiYTEzZDFkNwoKQW5kIHRoaXMgY29t bWl0IGZpeGVkIGl0IChqdXN0IG1zbGVlcCB3YXMgbW92ZWQgdG8gZGlmZmVyZW50IHN0YWdlKToK aHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMv bGludXguZ2l0L2NvbW1pdC8/aWQ9Njk2NDQ5NDU4MmY1NmEzODgyYzJjNTNiMGVkYmZlOTllYjMy YjJlMQoKQnV0IHdlIHNvbWVob3cgbmVlZCB0byBkZWFsIHdpdGggaXQgdW50aWwgd2UgZmluZCBy b290IGNhdXNlLgoKQmFzaWNhbGx5IGFkZGl0aW9uYWwgc2xlZXAgaW4gYWFyZHZhcmsgaW5pdCBw aGFzZSBjYW4gYnJlYWsgV0xFOTAwVlgKY2FyZHMsIGJ1dCBub3QgV0xFMjAwVlguCgpBbmQgYmVj YXVzZSBXTEU5MDBWWCB3b3JrcyBmaW5lIHdpdGggcGNpLW12ZWJ1IGFuZCBXTEUyMDBWWCB3b3Jr cyBmaW5lCndpdGggcGNpLWFhcmR2YXJrIHdlIGNhbm5vdCBkZWR1Y2UgZnJvbSBpdCBpZiBwcm9i bGVtIGZvciBjb21iaW5hdGlvbiBvZgpXTEU5MDBWWCBhbmQgYWFyZHZhcmsgaXMgaW4gV0xFOTAw Vlggb3IgaW4gYWFyZHZhcmsuCgo+IEJ1dCBJIGhhdmUgdGhlIGltcHJlc3Npb24gdGhhdCBhYXJk dmFyayByZXF1aXJlcyBtb3JlIHNvZnR3YXJlCj4gaGFuZC1ob2xkaW5nIHRoYXQgbW9zdCBoYXJk d2FyZSBkb2VzLiAgSWYgaXQgaW1wb3NlcyB0aW1pbmcKPiByZXF1aXJlbWVudHMgb24gdGhlIHNv ZnR3YXJlLCB0aGF0ICpzaG91bGQqIGJlIGRvY3VtZW50ZWQgaW4gdGhlCj4gYWFyZHZhcmsgc3Bl Yy4KClRoZXJlIGlzIGFic29sdXRlbHkgbm90aGluZyByZWdhcmRpbmcgdG8gdGltaW5ncyBpbiBk b2N1bWVudGF0aW9uIHdoaWNoCkkgc2F3LiBJbiBkb2N1bWVudGF0aW9uIGFyZSBqdXN0IGluc3Ry dWN0aW9ucy9zdGVwcyBob3cgdG8gaW5pdCBQQ0kKc3Vic3lzdGVtIGFuZCBpdCBpcyBiYXNpY2Fs bHkgYWR2a19wY2llX3NldHVwX2h3KCkgZnVuY3Rpb24uCgo+ID4gSSByZWFkIGluIGtlcm5lbCBi dWd6aWxsYSB0aGF0IFdMRTYwMFZYIGFuZCBXTEU5MDBWWCBjYXJkcyBhcmUgYnVnZ3kgYW5kCj4g PiBtb3JlIHBlb3BsZSBoYXZlIHByb2JsZW1zIHdpdGggdGhlbS4gQnV0IGlzc3VlcyBkZXNjcmli ZWQgaW4ga2VybmVsCj4gPiBidWd6aWxsYSAobGlrZSBjYXJkIGlzIHJlcG9ydGluZyBpbmNvcnJl Y3QgUENJIGRldmljZSBpZCkgSSdtIG5vdAo+ID4gb2JzZXJ2aW5nLgo+IAo+IFBvaW50ZXI/CgpI bS4uLiBJIGNhbm5vdCBmaW5kIHJpZ2h0IG5vdyBwb2ludGVyIHRvIGJ1Z3ppbGxhLCBidXQgSSBo YXZlIHBvaW50ZXIgdG8KYXRoOWstZGV2ZWwgbWFpbGluZyBsaXN0IHdpdGggdGhhdCBpbmNvcnJl Y3QgZGV2aWNlIGlkOgoKaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9hdGg5ay1kZXZlbEBs aXN0cy5hdGg5ay5vcmcvbXNnMDc1MjkuaHRtbAoKPiBJcyB0aGUgaW5jb3JyZWN0IGRldmljZSBJ RCAweGZmZmY/CgpObywgaW5jb3JyZWN0IGRldmljZSBJRCBpbiB0aGF0IGNhc2UgaXMgMHhhYmNk IGFuZCB2ZW5kb3IgSUQgaXMgY29ycmVjdAooUXVhbGNvbW0pLgoKPiBUaGF0IGNvdWxkIGJlIGEg c3ltcHRvbQo+IG9mIGEgUENJZSBlcnJvci4gIElmIHdlIHJlYWQgYSBkZXZpY2UgSUQgdGhhdCdz IHNvbWV0aGluZyBvdGhlciB0aGFuCj4gMCwgMHhmZmZmLCBvciB0aGUgY29ycmVjdCBJRCwgdGhh dCB3b3VsZCBiZSByZWFsbHkgd2VpcmQuICBFdmVuIDAKPiB3b3VsZCBiZSByZWFsbHkgc3RyYW5n ZS4KCkl0IGlzIHN0cmFuZ2UgYW5kIGFsc28gcmVhc29uIHdoeSBkaXNjdXNzaW9uIG9uIHRoYXQg bGlzdCBpcyBsb25nLgoKQXMgSSBzYWlkLCBJJ20gbm90IHNlZWluZyB0aGF0IHByb2JsZW0gd2l0 aCB3cm9uZyBkZXZpY2UgSUQuCgpCdXQgSSBrbm93IHBlb3BsZSB3aG8gYXJlIG9ic2VydmluZyBz YW1lIHByb2JsZW0gb24gZGlmZmVyZW50IGJvYXJkcwood2hpY2ggZG8gbm90IHVzZSBhYXJkdmFy aykgYXMgZGVzY3JpYmVkIGluIGFib3ZlIG1haWxpbmcgbGlzdCB0aHJlYWQKd2l0aCBDb21wZXgg YXRoMTBrIGNhcmRzLgoKPiBJIHN1c3BlY3QgdGhlc2Ugd2lmaSBjYXJkcyBhcmUgYSBsaXR0bGUg c3BlY2lhbCBiZWNhdXNlIHRoZXkgcHJvYmFibHkKPiBwbGF5IHVudXN1YWwgZ2FtZXMgd2l0aCBw b3dlciBmb3IgYWlycGxhbmUgbW9kZSBhbmQgdGhlIGxpa2UuCgpUaGlzIGlzIGFub3RoZXIvZGlm ZmVyZW50IHByb2JsZW0gYW5kIGlzIGFscmVhZHkgImRvY3VtZW50ZWQiIGluIGtlcm5lbApidWd6 aWxsYTogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD04NDgyMSNj NTIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK