From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 71AF52CA7 for ; Tue, 9 Jan 2024 07:42:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="rzR+v8jR" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-28c9d424cceso1812596a91.0 for ; Mon, 08 Jan 2024 23:42:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704786179; x=1705390979; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=hbh9aOHx7+CSCvz+p9Wnk1Alp9/EgNmTd2TSmQXJErs=; b=rzR+v8jRYlcV6Du2wjV9SWn/leGlSxC2xqyL2rlmiqdSltIK5DjRyYmjpE/pmpJK+O sydKGwyjCh4x6VFYcjoKMhTXDZlJj9k1+ttsomsQxlGv2k8mI5j1nqlxeGIGORjfPq7d JLhDFFHFU1d957w5czZAy/H68MUIK7COMZsSXXn2w2MlrFxq1ERIoWZUfrw3QWfiPdPp U6QWmOWa6jDNlPT0zVTjRFzS2vZWeh/GfW125WTC4ltk7LQ5/Y6R2Xm5zsxLEgGGNpAP d3jQLu4SHPkh+dju8hNV7IiQDsXDzOFzKxRRWlk1pjj73nn/0SiobOs+x7MwDNEyxTaa +A6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704786179; x=1705390979; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hbh9aOHx7+CSCvz+p9Wnk1Alp9/EgNmTd2TSmQXJErs=; b=a6VxnlIPk3l3uK47PFLZdrl5Zw2PJlzeY1ob/8PmfoLtGiTO4AsrVT+lm4KyEe/1E3 kegQSZeoTn8XAZvn+RyJDVxa4bnAuh/hy2XhAGp4AD+m54awI1wUNvV768ganpJzh4DX Rp3MrzJi9DsVRTQkI1GgFhnxI+ihFawDJ1zh41IcKpyenREifidl2smv6Tr14Zgfn2W6 jpiDgw31HbmQR9XtyWLO4j1NC6Fe0HNLkBCCfZEjj9ol4HsDymZeuvIsLBhjQYQzC2xA +SjOf7qHtgSkktPkliFEu+KLf9QdRPun9C/dZ4Y2wJPLTUZjGs6dYQHIKkCyi8cMBpn+ UgFw== X-Gm-Message-State: AOJu0YwTuigzNMOLwHmpcGzxoTyyjE/8ymu/fgSkNcOuYKX84EwBNXwn zsnRA6VLTIY9JzRmroHaTVVfvrw79/Dr X-Google-Smtp-Source: AGHT+IFcxvhYW0JAZdJq+N+9m95XOtUpUXsjOgoxUB/mRwSbbeb71nZBw7f0ddc9ml/vx8VlhUFUbA== X-Received: by 2002:a17:90b:f0f:b0:28d:9b5b:e70b with SMTP id br15-20020a17090b0f0f00b0028d9b5be70bmr429191pjb.0.1704786178748; Mon, 08 Jan 2024 23:42:58 -0800 (PST) Received: from thinkpad ([117.213.102.45]) by smtp.gmail.com with ESMTPSA id g7-20020a1709029f8700b001d425d495c9sm1083349plq.190.2024.01.08.23.41.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jan 2024 23:42:57 -0800 (PST) Date: Tue, 9 Jan 2024 13:11:24 +0530 From: Manivannan Sadhasivam To: Chen-Yu Tsai Cc: Florian Fainelli , Bartosz Golaszewski , Kalle Valo , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Catalin Marinas , Will Deacon , Bjorn Helgaas , Heiko Stuebner , Jernej Skrabec , Chris Morgan , Linus Walleij , Geert Uytterhoeven , Arnd Bergmann , Neil Armstrong , =?iso-8859-1?Q?N=EDcolas_F_=2E_R_=2E_A_=2E?= Prado , Marek Szyprowski , Peng Fan , Robert Richter , Dan Williams , Jonathan Cameron , Terry Bowman , Kuppuswamy Sathyanarayanan , Ilpo =?iso-8859-1?Q?J=E4rvinen?= , Huacai Chen , Alex Elder , Srini Kandagatla , Greg Kroah-Hartman , Jim Quinlan , james.quinlan@broadcom.com, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, Bartosz Golaszewski Subject: Re: [RFC 0/9] PCI: introduce the concept of power sequencing of PCIe devices Message-ID: <20240109074124.GA3303@thinkpad> References: <20240104130123.37115-1-brgl@bgdev.pl> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Tue, Jan 09, 2024 at 03:08:32PM +0800, Chen-Yu Tsai wrote: > On Tue, Jan 9, 2024 at 12:09 PM Florian Fainelli wrote: > > > > Hello, > > > > On 1/4/2024 5:01 AM, Bartosz Golaszewski wrote: > > > From: Bartosz Golaszewski > > > > > > During last year's Linux Plumbers we had several discussions centered > > > around the need to power-on PCI devices before they can be detected on > > > the bus. > > > > > > The consensus during the conference was that we need to introduce a > > > class of "PCI slot drivers" that would handle the power-sequencing. > > > > > > After some additional brain-storming with Manivannan and the realization > > > that the DT maintainers won't like adding any "fake" nodes not > > > representing actual devices, we decided to reuse the existing > > > infrastructure provided by the PCIe port drivers. > > > > > > The general idea is to instantiate platform devices for child nodes of > > > the PCIe port DT node. For those nodes for which a power-sequencing > > > driver exists, we bind it and let it probe. The driver then triggers a > > > rescan of the PCI bus with the aim of detecting the now powered-on > > > device. The device will consume the same DT node as the platform, > > > power-sequencing device. We use device links to make the latter become > > > the parent of the former. > > > > > > The main advantage of this approach is not modifying the existing DT in > > > any way and especially not adding any "fake" platform devices. > > > > There is prior work in that area which was applied, but eventually reverted: > > > > https://www.spinics.net/lists/linux-pci/msg119136.html > > > > and finally re-applied albeit in a different shape: > > > > https://lore.kernel.org/all/20220716222454.29914-1-jim2101024@gmail.com/ > > > > so we might want to think about how to have pcie-brcmstb.c converted > > over your proposed approach. AFAIR there is also pcie-rockchip.c which > > has some rudimentary support for voltage regulators of PCIe end-points. > > I think the current in-tree approaches mostly target either PCIe slots, > whether full size or mini-PCIe or M.2, or soldered-on components that > either only have a single power rail, have internal regulators, or have > surrounding circuitry that would be incorporated on a PCIe card. > > These all have standardized power rails (+12V, +3.3V, +3.3V aux, etc.). > Right. But ideally, they should also be converted to use this power sequencing driver at some point in the future. > > What does not yet appear in this RFC is support for suspend/resume, > > especially for power states where both the RC and the EP might be losing > > power. There also needs to be some thoughts given to wake-up enabled > > PCIe devices like Wi-Fi which might need to remain powered on to service > > Wake-on-WLAN frames if nothing else. > > I don't think it is necessary to add PM support in this series itself. Even though PM support is always nice to have or even necessary for controllers pulling the power plug during suspend, it makes sense to merge this basic implementation and add features on top. It should be noted that both the controller drivers and the power sequencing drivers should be in sync during suspend i.e., if the controller driver decides to put the device into D3Cold and turning off the controller power supplies, then this driver should also power off the device. But if the controller driver decides to keep the device in low power states (ASPM), then this driver _should_not_ turn off the device power. Right now, there is no global policy for controller drivers and each one does a different job. IMO this should also be fixed, but that also requires an agreement from PM folks. (Well there is one more entity in this loop, PCIe device drivers... sigh) > > I sense a potential for a lot of custom power sequencing drivers being > > added and ultimately leading to the decision to create a "generic" one > > which is entirely driven by Device Tree properties... > > We can have one "generic" slot power sequencing driver, which just > enables all the power rails together. I would very much like to see that. > Yeah. And that "generic" driver could be used for simple usecases mentioned above. > I believe the power sequencing in this series is currently targeting more > tightly coupled designs that use power rails directly from the PMIC, and > thus require more explicit power sequencing. > Precisely! - Mani > ChenYu > > > > Thanks for doing this! > > -- > > Florian > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > -- மணிவண்ணன் சதாசிவம் 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 9C99DC46CD2 for ; Tue, 9 Jan 2024 07:43:36 +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: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=1zgxJVZKAlNdQhcqUGivXuiCOmwBztr5is50Xz2rFYA=; b=Rp2HpQrURfZJmc F3XPpHPNRyU6RUDe/9fG3jBaoNL7EdZSnmFN3l4MPm7doEDuQAq8exTV6MuKCACgzNxDC07Y1OhU2 YMwM+s2/AxkUtD7FxmpkAep5wYhgUJTpFwYxwubd+EUSnLuMwRsTPufQVrEqIPiacUrReDYqn6TGm HMVM0vCpf9wJc6cklFF9jg5D4LaT+AR77Sjz/N1TxbL1pwDC/BIwn0EWtfBdSPOAmM7Gm8faQM2+d j8GvBmrKaNJq4PwtcamI9/pU7vW9BgGOYzru7A8K6YAWjEGAvuqqGfgT8dwIdRJ31tTfpqtqY95xC lQtOZRZ+kCiAVoG5IWzw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rN6lL-007C0K-2y; Tue, 09 Jan 2024 07:43:03 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rN6lI-007C01-2D for linux-arm-kernel@lists.infradead.org; Tue, 09 Jan 2024 07:43:02 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-28cb3bc3fe7so1800332a91.1 for ; Mon, 08 Jan 2024 23:42:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704786179; x=1705390979; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=hbh9aOHx7+CSCvz+p9Wnk1Alp9/EgNmTd2TSmQXJErs=; b=i65xnmg2XWyVk8ZcKuRqifibLMnsYmZPOpApC/wvPOdxls1wkXbygSiFfFKPnX46/V 4uZTycR/zbqG1wKR2E9+3khPdXs00fNekwzQEyqrsX0do37mK5y6QgtooYlkJyPdiTg6 PmkrRt+11xGZ4ReP/zkyD5Dil31vUrBFSldpBPgpHimlGbPpCt8WAho1NqLd/W5wJFbN UBPG5BPGpbY0Kf4FQJpi7/EbPCFsNLPRtJ4iXfrqntPr9V2k7DYLIB4bQs3Qq5mG5GfA KXj3vb5ikdqN9JC27awoG3HCiSE/bpeHsO/B9fR20ZLvnTYOVT5SRCMq1y/q+Zwu9qDI WGww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704786179; x=1705390979; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hbh9aOHx7+CSCvz+p9Wnk1Alp9/EgNmTd2TSmQXJErs=; b=dl5WHPbpRWyoWB6UrwBNNN3OddUJVU3u3mlI/6mR3nbYIDwycoOU/V342NFLsFNiGG DzgHNHCkyxOnv7GrQEPp1Igq3qaxUojkjMFVzCJMP6b0HbAeZsUnDtrpVTQ5c3h03tjH eblhL93LNFffzSWN2MiHlTy9TsjR64QaYkK+xC/0ScJeuDcwJZwR7+FHH0d5kemW7gDI ph7RiB4v0UVNqmEreu5k/nCPLixBt3w2OrfXsKpoGrpLE0gY7532U57YC2v6DFSRI8ZI +Aw9qJgX7MUMlg1zFAAQxEQSKSxJ84FVs/EpfWT9hovTTz8ZjnOZ4/j5DyVdg93Gblaz /QuA== X-Gm-Message-State: AOJu0YyqN9LvVfG+HKzk+bPWjDOl93gKDYfw3Tp7lBq4r53ol0gA5ims oPm2TMgdSZDd5SbTGTAk/TFbku3IEnsi X-Google-Smtp-Source: AGHT+IFcxvhYW0JAZdJq+N+9m95XOtUpUXsjOgoxUB/mRwSbbeb71nZBw7f0ddc9ml/vx8VlhUFUbA== X-Received: by 2002:a17:90b:f0f:b0:28d:9b5b:e70b with SMTP id br15-20020a17090b0f0f00b0028d9b5be70bmr429191pjb.0.1704786178748; Mon, 08 Jan 2024 23:42:58 -0800 (PST) Received: from thinkpad ([117.213.102.45]) by smtp.gmail.com with ESMTPSA id g7-20020a1709029f8700b001d425d495c9sm1083349plq.190.2024.01.08.23.41.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jan 2024 23:42:57 -0800 (PST) Date: Tue, 9 Jan 2024 13:11:24 +0530 From: Manivannan Sadhasivam To: Chen-Yu Tsai Cc: Florian Fainelli , Bartosz Golaszewski , Kalle Valo , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Catalin Marinas , Will Deacon , Bjorn Helgaas , Heiko Stuebner , Jernej Skrabec , Chris Morgan , Linus Walleij , Geert Uytterhoeven , Arnd Bergmann , Neil Armstrong , =?iso-8859-1?Q?N=EDcolas_F_=2E_R_=2E_A_=2E?= Prado , Marek Szyprowski , Peng Fan , Robert Richter , Dan Williams , Jonathan Cameron , Terry Bowman , Kuppuswamy Sathyanarayanan , Ilpo =?iso-8859-1?Q?J=E4rvinen?= , Huacai Chen , Alex Elder , Srini Kandagatla , Greg Kroah-Hartman , Jim Quinlan , james.quinlan@broadcom.com, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, Bartosz Golaszewski Subject: Re: [RFC 0/9] PCI: introduce the concept of power sequencing of PCIe devices Message-ID: <20240109074124.GA3303@thinkpad> References: <20240104130123.37115-1-brgl@bgdev.pl> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240108_234300_757125_FCA075ED X-CRM114-Status: GOOD ( 50.54 ) 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 T24gVHVlLCBKYW4gMDksIDIwMjQgYXQgMDM6MDg6MzJQTSArMDgwMCwgQ2hlbi1ZdSBUc2FpIHdy b3RlOgo+IE9uIFR1ZSwgSmFuIDksIDIwMjQgYXQgMTI6MDnigK9QTSBGbG9yaWFuIEZhaW5lbGxp IDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ID4gSGVsbG8sCj4gPgo+ID4gT24g MS80LzIwMjQgNTowMSBBTSwgQmFydG9zeiBHb2xhc3pld3NraSB3cm90ZToKPiA+ID4gRnJvbTog QmFydG9zeiBHb2xhc3pld3NraSA8YmFydG9zei5nb2xhc3pld3NraUBsaW5hcm8ub3JnPgo+ID4g Pgo+ID4gPiBEdXJpbmcgbGFzdCB5ZWFyJ3MgTGludXggUGx1bWJlcnMgd2UgaGFkIHNldmVyYWwg ZGlzY3Vzc2lvbnMgY2VudGVyZWQKPiA+ID4gYXJvdW5kIHRoZSBuZWVkIHRvIHBvd2VyLW9uIFBD SSBkZXZpY2VzIGJlZm9yZSB0aGV5IGNhbiBiZSBkZXRlY3RlZCBvbgo+ID4gPiB0aGUgYnVzLgo+ ID4gPgo+ID4gPiBUaGUgY29uc2Vuc3VzIGR1cmluZyB0aGUgY29uZmVyZW5jZSB3YXMgdGhhdCB3 ZSBuZWVkIHRvIGludHJvZHVjZSBhCj4gPiA+IGNsYXNzIG9mICJQQ0kgc2xvdCBkcml2ZXJzIiB0 aGF0IHdvdWxkIGhhbmRsZSB0aGUgcG93ZXItc2VxdWVuY2luZy4KPiA+ID4KPiA+ID4gQWZ0ZXIg c29tZSBhZGRpdGlvbmFsIGJyYWluLXN0b3JtaW5nIHdpdGggTWFuaXZhbm5hbiBhbmQgdGhlIHJl YWxpemF0aW9uCj4gPiA+IHRoYXQgdGhlIERUIG1haW50YWluZXJzIHdvbid0IGxpa2UgYWRkaW5n IGFueSAiZmFrZSIgbm9kZXMgbm90Cj4gPiA+IHJlcHJlc2VudGluZyBhY3R1YWwgZGV2aWNlcywg d2UgZGVjaWRlZCB0byByZXVzZSB0aGUgZXhpc3RpbmcKPiA+ID4gaW5mcmFzdHJ1Y3R1cmUgcHJv dmlkZWQgYnkgdGhlIFBDSWUgcG9ydCBkcml2ZXJzLgo+ID4gPgo+ID4gPiBUaGUgZ2VuZXJhbCBp ZGVhIGlzIHRvIGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgZm9yIGNoaWxkIG5vZGVzIG9m Cj4gPiA+IHRoZSBQQ0llIHBvcnQgRFQgbm9kZS4gRm9yIHRob3NlIG5vZGVzIGZvciB3aGljaCBh IHBvd2VyLXNlcXVlbmNpbmcKPiA+ID4gZHJpdmVyIGV4aXN0cywgd2UgYmluZCBpdCBhbmQgbGV0 IGl0IHByb2JlLiBUaGUgZHJpdmVyIHRoZW4gdHJpZ2dlcnMgYQo+ID4gPiByZXNjYW4gb2YgdGhl IFBDSSBidXMgd2l0aCB0aGUgYWltIG9mIGRldGVjdGluZyB0aGUgbm93IHBvd2VyZWQtb24KPiA+ ID4gZGV2aWNlLiBUaGUgZGV2aWNlIHdpbGwgY29uc3VtZSB0aGUgc2FtZSBEVCBub2RlIGFzIHRo ZSBwbGF0Zm9ybSwKPiA+ID4gcG93ZXItc2VxdWVuY2luZyBkZXZpY2UuIFdlIHVzZSBkZXZpY2Ug bGlua3MgdG8gbWFrZSB0aGUgbGF0dGVyIGJlY29tZQo+ID4gPiB0aGUgcGFyZW50IG9mIHRoZSBm b3JtZXIuCj4gPiA+Cj4gPiA+IFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGlzIGFwcHJvYWNoIGlz IG5vdCBtb2RpZnlpbmcgdGhlIGV4aXN0aW5nIERUIGluCj4gPiA+IGFueSB3YXkgYW5kIGVzcGVj aWFsbHkgbm90IGFkZGluZyBhbnkgImZha2UiIHBsYXRmb3JtIGRldmljZXMuCj4gPgo+ID4gVGhl cmUgaXMgcHJpb3Igd29yayBpbiB0aGF0IGFyZWEgd2hpY2ggd2FzIGFwcGxpZWQsIGJ1dCBldmVu dHVhbGx5IHJldmVydGVkOgo+ID4KPiA+IGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xp bnV4LXBjaS9tc2cxMTkxMzYuaHRtbAo+ID4KPiA+IGFuZCBmaW5hbGx5IHJlLWFwcGxpZWQgYWxi ZWl0IGluIGEgZGlmZmVyZW50IHNoYXBlOgo+ID4KPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2FsbC8yMDIyMDcxNjIyMjQ1NC4yOTkxNC0xLWppbTIxMDEwMjRAZ21haWwuY29tLwo+ID4KPiA+ IHNvIHdlIG1pZ2h0IHdhbnQgdG8gdGhpbmsgYWJvdXQgaG93IHRvIGhhdmUgcGNpZS1icmNtc3Ri LmMgY29udmVydGVkCj4gPiBvdmVyIHlvdXIgcHJvcG9zZWQgYXBwcm9hY2guIEFGQUlSIHRoZXJl IGlzIGFsc28gcGNpZS1yb2NrY2hpcC5jIHdoaWNoCj4gPiBoYXMgc29tZSBydWRpbWVudGFyeSBz dXBwb3J0IGZvciB2b2x0YWdlIHJlZ3VsYXRvcnMgb2YgUENJZSBlbmQtcG9pbnRzLgo+IAo+IEkg dGhpbmsgdGhlIGN1cnJlbnQgaW4tdHJlZSBhcHByb2FjaGVzIG1vc3RseSB0YXJnZXQgZWl0aGVy IFBDSWUgc2xvdHMsCj4gd2hldGhlciBmdWxsIHNpemUgb3IgbWluaS1QQ0llIG9yIE0uMiwgb3Ig c29sZGVyZWQtb24gY29tcG9uZW50cyB0aGF0Cj4gZWl0aGVyIG9ubHkgaGF2ZSBhIHNpbmdsZSBw b3dlciByYWlsLCBoYXZlIGludGVybmFsIHJlZ3VsYXRvcnMsIG9yIGhhdmUKPiBzdXJyb3VuZGlu ZyBjaXJjdWl0cnkgdGhhdCB3b3VsZCBiZSBpbmNvcnBvcmF0ZWQgb24gYSBQQ0llIGNhcmQuCj4g Cj4gVGhlc2UgYWxsIGhhdmUgc3RhbmRhcmRpemVkIHBvd2VyIHJhaWxzICgrMTJWLCArMy4zViwg KzMuM1YgYXV4LCBldGMuKS4KPiAKClJpZ2h0LiBCdXQgaWRlYWxseSwgdGhleSBzaG91bGQgYWxz byBiZSBjb252ZXJ0ZWQgdG8gdXNlIHRoaXMgcG93ZXIgc2VxdWVuY2luZwpkcml2ZXIgYXQgc29t ZSBwb2ludCBpbiB0aGUgZnV0dXJlLgoKPiA+IFdoYXQgZG9lcyBub3QgeWV0IGFwcGVhciBpbiB0 aGlzIFJGQyBpcyBzdXBwb3J0IGZvciBzdXNwZW5kL3Jlc3VtZSwKPiA+IGVzcGVjaWFsbHkgZm9y IHBvd2VyIHN0YXRlcyB3aGVyZSBib3RoIHRoZSBSQyBhbmQgdGhlIEVQIG1pZ2h0IGJlIGxvc2lu Zwo+ID4gcG93ZXIuIFRoZXJlIGFsc28gbmVlZHMgdG8gYmUgc29tZSB0aG91Z2h0cyBnaXZlbiB0 byB3YWtlLXVwIGVuYWJsZWQKPiA+IFBDSWUgZGV2aWNlcyBsaWtlIFdpLUZpIHdoaWNoIG1pZ2h0 IG5lZWQgdG8gcmVtYWluIHBvd2VyZWQgb24gdG8gc2VydmljZQo+ID4gV2FrZS1vbi1XTEFOIGZy YW1lcyBpZiBub3RoaW5nIGVsc2UuCj4gPgoKSSBkb24ndCB0aGluayBpdCBpcyBuZWNlc3Nhcnkg dG8gYWRkIFBNIHN1cHBvcnQgaW4gdGhpcyBzZXJpZXMgaXRzZWxmLiBFdmVuCnRob3VnaCBQTSBz dXBwb3J0IGlzIGFsd2F5cyBuaWNlIHRvIGhhdmUgb3IgZXZlbiBuZWNlc3NhcnkgZm9yIGNvbnRy b2xsZXJzCnB1bGxpbmcgdGhlIHBvd2VyIHBsdWcgZHVyaW5nIHN1c3BlbmQsIGl0IG1ha2VzIHNl bnNlIHRvIG1lcmdlIHRoaXMgYmFzaWMKaW1wbGVtZW50YXRpb24gYW5kIGFkZCBmZWF0dXJlcyBv biB0b3AuCgpJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBib3RoIHRoZSBjb250cm9sbGVyIGRyaXZl cnMgYW5kIHRoZSBwb3dlciBzZXF1ZW5jaW5nCmRyaXZlcnMgc2hvdWxkIGJlIGluIHN5bmMgZHVy aW5nIHN1c3BlbmQgaS5lLiwgaWYgdGhlIGNvbnRyb2xsZXIgZHJpdmVyIGRlY2lkZXMKdG8gcHV0 IHRoZSBkZXZpY2UgaW50byBEM0NvbGQgYW5kIHR1cm5pbmcgb2ZmIHRoZSBjb250cm9sbGVyIHBv d2VyIHN1cHBsaWVzLAp0aGVuIHRoaXMgZHJpdmVyIHNob3VsZCBhbHNvIHBvd2VyIG9mZiB0aGUg ZGV2aWNlLiBCdXQgaWYgdGhlIGNvbnRyb2xsZXIgZHJpdmVyCmRlY2lkZXMgdG8ga2VlcCB0aGUg ZGV2aWNlIGluIGxvdyBwb3dlciBzdGF0ZXMgKEFTUE0pLCB0aGVuIHRoaXMgZHJpdmVyCl9zaG91 bGRfbm90XyB0dXJuIG9mZiB0aGUgZGV2aWNlIHBvd2VyLgoKUmlnaHQgbm93LCB0aGVyZSBpcyBu byBnbG9iYWwgcG9saWN5IGZvciBjb250cm9sbGVyIGRyaXZlcnMgYW5kIGVhY2ggb25lIGRvZXMg YQpkaWZmZXJlbnQgam9iLiBJTU8gdGhpcyBzaG91bGQgYWxzbyBiZSBmaXhlZCwgYnV0IHRoYXQg YWxzbyByZXF1aXJlcyBhbgphZ3JlZW1lbnQgZnJvbSBQTSBmb2xrcy4KCihXZWxsIHRoZXJlIGlz IG9uZSBtb3JlIGVudGl0eSBpbiB0aGlzIGxvb3AsIFBDSWUgZGV2aWNlIGRyaXZlcnMuLi4gc2ln aCkKCj4gPiBJIHNlbnNlIGEgcG90ZW50aWFsIGZvciBhIGxvdCBvZiBjdXN0b20gcG93ZXIgc2Vx dWVuY2luZyBkcml2ZXJzIGJlaW5nCj4gPiBhZGRlZCBhbmQgdWx0aW1hdGVseSBsZWFkaW5nIHRv IHRoZSBkZWNpc2lvbiB0byBjcmVhdGUgYSAiZ2VuZXJpYyIgb25lCj4gPiB3aGljaCBpcyBlbnRp cmVseSBkcml2ZW4gYnkgRGV2aWNlIFRyZWUgcHJvcGVydGllcy4uLgo+IAo+IFdlIGNhbiBoYXZl IG9uZSAiZ2VuZXJpYyIgc2xvdCBwb3dlciBzZXF1ZW5jaW5nIGRyaXZlciwgd2hpY2gganVzdAo+ IGVuYWJsZXMgYWxsIHRoZSBwb3dlciByYWlscyB0b2dldGhlci4gSSB3b3VsZCB2ZXJ5IG11Y2gg bGlrZSB0byBzZWUgdGhhdC4KPiAKClllYWguIEFuZCB0aGF0ICJnZW5lcmljIiBkcml2ZXIgY291 bGQgYmUgdXNlZCBmb3Igc2ltcGxlIHVzZWNhc2VzIG1lbnRpb25lZAphYm92ZS4KCj4gSSBiZWxp ZXZlIHRoZSBwb3dlciBzZXF1ZW5jaW5nIGluIHRoaXMgc2VyaWVzIGlzIGN1cnJlbnRseSB0YXJn ZXRpbmcgbW9yZQo+IHRpZ2h0bHkgY291cGxlZCBkZXNpZ25zIHRoYXQgdXNlIHBvd2VyIHJhaWxz IGRpcmVjdGx5IGZyb20gdGhlIFBNSUMsIGFuZAo+IHRodXMgcmVxdWlyZSBtb3JlIGV4cGxpY2l0 IHBvd2VyIHNlcXVlbmNpbmcuCj4gCgpQcmVjaXNlbHkhCgotIE1hbmkKCj4gQ2hlbll1Cj4gCj4g Cj4gPiBUaGFua3MgZm9yIGRvaW5nIHRoaXMhCj4gPiAtLQo+ID4gRmxvcmlhbgo+ID4KPiA+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdAo+ID4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCj4gPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwKPiAKCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k 4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==