From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 677E95C911; Wed, 14 Feb 2024 15:34:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707924861; cv=none; b=l5dbOGSG6VkEyU/Qlst8WBfMdlavVZeDDn8NpQ9VjTTX7r1inSoOEWST5NX9Kdlyy1jG6ZcHv2WjZPqBN8YRczvr9X7/eEJ9Hv/zA22aEwJpr5rYO98EbJFtMiZaUs//5S0Xhukt6kCRZW6EWJ0q1rKLf4MyMU8nwTGtAyeBloM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707924861; c=relaxed/simple; bh=RKBYgy5uDM/vBCiN9tBiPR2VpHrXnY5fjxo9XKnCKHs=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=OPpBQIPzdhETCMZWjvAcYR/1GtygqJBmxmgMNPy5VjB8Sm5Q5pc6CGT6xiVr3pbgJr12y4gTL7tHVoeNeet6U6ukd0LZSlwreNDOyjAwxxHwjiMvWVArzlFmwOp6ZYrd8Rt2hudaYOTQfrAaoPArWQPVPFtigeVhP/ZrvNRMSkE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=icQpm+WR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="icQpm+WR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3FB29C433C7; Wed, 14 Feb 2024 15:34:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1707924860; bh=RKBYgy5uDM/vBCiN9tBiPR2VpHrXnY5fjxo9XKnCKHs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=icQpm+WRIBCwFmc6GMZyzD7hfrgvougrzlFkQQkENhX2hhFv4tKvrybec2LZPF0p2 g4w+i5vJ2cylBctHyW7nrVqW6KPr/tAxRaWjizo57DBTGi3DOfHaFJKv8GA3osWQx5 zkW+b+wjJITdz0ojCZY2Ccjx1teFWK8MymvaLyFA= Date: Wed, 14 Feb 2024 16:34:17 +0100 From: Greg Kroah-Hartman To: Bartosz Golaszewski Cc: Bjorn Andersson , Kalle Valo , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , 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 , Lukas Wunner , Huacai Chen , Alex Elder , Srini Kandagatla , Abel Vesa , 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: Re: Re: [PATCH 4/9] PCI: create platform devices for child OF nodes of the port node Message-ID: <2024021413-grumbling-unlivable-c145@gregkh> References: <20240117160748.37682-1-brgl@bgdev.pl> <20240117160748.37682-5-brgl@bgdev.pl> <2024011707-alibi-pregnancy-a64b@gregkh> <2024011836-wok-treadmill-c517@gregkh> 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 Wed, Feb 07, 2024 at 05:32:38PM +0100, Bartosz Golaszewski wrote: > On Fri, Feb 2, 2024 at 11:02 AM Bartosz Golaszewski wrote: > > > > On Fri, Feb 2, 2024 at 1:03 AM Bjorn Andersson wrote: > > > > > > > [snip] > > > > > > > > > > > > I believe I missed this part of the discussion, why does this need to be > > > > > a platform_device? What does the platform_bus bring that can't be > > > > > provided by some other bus? > > > > > > > > > > > > > Does it need to be a platform_device? No, of course not. Does it make > > > > sense for it to be one? Yes, for two reasons: > > > > > > > > 1. The ATH11K WLAN module is represented on the device tree like a > > > > platform device, we know it's always there and it consumes regulators > > > > from another platform device. The fact it uses PCIe doesn't change the > > > > fact that it is logically a platform device. > > > > > > Are you referring to the ath11k SNOC (firmware running on co-processor > > > in the SoC) variant? > > > > > > Afaict the PCIe-attached ath11k is not represented as a platform_device > > > in DeviceTree. > > > > > > > My bad. In RB5 it isn't (yet - I want to add it in the power > > sequencing series). It is in X13s though[1]. > > > > > Said platform_device is also not a child under the PCIe bus, so this > > > would be a different platform_device... > > > > > > > It's the child of the PCIe port node but there's a reason for it to > > have the `compatible` property. It's because it's an entity of whose > > existence we are aware before the system boots. > > > > > > 2. The platform bus already provides us with the entire infrastructure > > > > that we'd now need to duplicate (possibly adding bugs) in order to > > > > introduce a "power sequencing bus". > > > > > > > > > > This is a perfectly reasonable desire. Look at our PMICs, they are full > > > of platform_devices. But through the years it's been said many times, > > > that this is not a valid or good reason for using platform_devices, and > > > as a result we have e.g. auxiliary bus. > > > > > > > Ok, so I cannot find this information anywhere (nor any example). Do > > you happen to know if the auxiliary bus offers any software node > > integration so that the `compatible` property from DT can get > > seamlessly mapped to auxiliary device IDs? > > > > So I was just trying to port this to using the auxiliary bus, only to > find myself literally reimplementing functions from > drivers/of/device.c. I have a feeling that this is simply wrong. If > we're instantiating devices well defined on the device-tree then IMO > we *should* make them platform devices. Anything else and we'll be > reimplementing drivers/of/ because we will need to parse the device > nodes, check the compatible, match it against drivers etc. Things that > are already implemented for the platform bus and of_* APIs. > > Greg: Could you chime in and confirm that it's alright to use the > platform bus here? Or maybe there is some infrastructure to create > auxiliary devices from software nodes? Note, I HATE the use of the platform bus here, but I don't have a better suggestion. I'd love for the auxbus to work, and if you can create that from software nodes, all the better! But I don't think that's possible just yet, and you would end up implementing all the same stuff that the platform bus has today for this functionality, so I doubt it would be worth it. thanks, greg k-h 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 5CD29C48BC3 for ; Wed, 14 Feb 2024 15:34:42 +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=Kh5qCKd19h1m+S7puqaUnC9bYJr/FZrrXK2XCqvKOE8=; b=B/Eu+FYxyznGSs RiqyLubw+s40fLuy+RMuJAga2iViBaAdklGkUQfX0RSP6cdeqHRLzcgg65Dts4THRIDlOr2SiqzAP jDgT6ZYe7bVI/hgx38pJ7lluQgfcHL/xQBSGcyDCKSYm5DQw4XLZU7LB5QPQvDF1JiB2yuky/YuhG ybaygedtakcTtk1AXxxKNyWSfjXrGRESBiUHdpXWSXv1TVcp6YneRcExr5ngjjL9qouBY+4IvGcuu b95u6cZcKa1R2SkzopFKJiqkLCLK8mNqQLs+ydr339Bw4ZdlaMcqSitZ3WoREJL2uzKZJDELZaBjN iobZOLI5vYUUHn0z35Sg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1raHHF-0000000DLCv-3zBw; Wed, 14 Feb 2024 15:34:25 +0000 Received: from sin.source.kernel.org ([145.40.73.55]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raHHD-0000000DLBx-26sv for linux-arm-kernel@lists.infradead.org; Wed, 14 Feb 2024 15:34:25 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 8B946CE227C; Wed, 14 Feb 2024 15:34:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3FB29C433C7; Wed, 14 Feb 2024 15:34:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1707924860; bh=RKBYgy5uDM/vBCiN9tBiPR2VpHrXnY5fjxo9XKnCKHs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=icQpm+WRIBCwFmc6GMZyzD7hfrgvougrzlFkQQkENhX2hhFv4tKvrybec2LZPF0p2 g4w+i5vJ2cylBctHyW7nrVqW6KPr/tAxRaWjizo57DBTGi3DOfHaFJKv8GA3osWQx5 zkW+b+wjJITdz0ojCZY2Ccjx1teFWK8MymvaLyFA= Date: Wed, 14 Feb 2024 16:34:17 +0100 From: Greg Kroah-Hartman To: Bartosz Golaszewski Cc: Bjorn Andersson , Kalle Valo , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , 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 , Lukas Wunner , Huacai Chen , Alex Elder , Srini Kandagatla , Abel Vesa , 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: Re: Re: [PATCH 4/9] PCI: create platform devices for child OF nodes of the port node Message-ID: <2024021413-grumbling-unlivable-c145@gregkh> References: <20240117160748.37682-1-brgl@bgdev.pl> <20240117160748.37682-5-brgl@bgdev.pl> <2024011707-alibi-pregnancy-a64b@gregkh> <2024011836-wok-treadmill-c517@gregkh> 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-20240214_073423_919740_121DFBFB X-CRM114-Status: GOOD ( 43.35 ) 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 T24gV2VkLCBGZWIgMDcsIDIwMjQgYXQgMDU6MzI6MzhQTSArMDEwMCwgQmFydG9zeiBHb2xhc3pl d3NraSB3cm90ZToKPiBPbiBGcmksIEZlYiAyLCAyMDI0IGF0IDExOjAy4oCvQU0gQmFydG9zeiBH b2xhc3pld3NraSA8YnJnbEBiZ2Rldi5wbD4gd3JvdGU6Cj4gPgo+ID4gT24gRnJpLCBGZWIgMiwg MjAyNCBhdCAxOjAz4oCvQU0gQmpvcm4gQW5kZXJzc29uIDxhbmRlcnNzb25Aa2VybmVsLm9yZz4g d3JvdGU6Cj4gPiA+Cj4gPgo+ID4gW3NuaXBdCj4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IEkgYmVs aWV2ZSBJIG1pc3NlZCB0aGlzIHBhcnQgb2YgdGhlIGRpc2N1c3Npb24sIHdoeSBkb2VzIHRoaXMg bmVlZCB0byBiZQo+ID4gPiA+ID4gYSBwbGF0Zm9ybV9kZXZpY2U/IFdoYXQgZG9lcyB0aGUgcGxh dGZvcm1fYnVzIGJyaW5nIHRoYXQgY2FuJ3QgYmUKPiA+ID4gPiA+IHByb3ZpZGVkIGJ5IHNvbWUg b3RoZXIgYnVzPwo+ID4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IERvZXMgaXQgbmVlZCB0byBiZSBh IHBsYXRmb3JtX2RldmljZT8gTm8sIG9mIGNvdXJzZSBub3QuIERvZXMgaXQgbWFrZQo+ID4gPiA+ IHNlbnNlIGZvciBpdCB0byBiZSBvbmU/IFllcywgZm9yIHR3byByZWFzb25zOgo+ID4gPiA+Cj4g PiA+ID4gMS4gVGhlIEFUSDExSyBXTEFOIG1vZHVsZSBpcyByZXByZXNlbnRlZCBvbiB0aGUgZGV2 aWNlIHRyZWUgbGlrZSBhCj4gPiA+ID4gcGxhdGZvcm0gZGV2aWNlLCB3ZSBrbm93IGl0J3MgYWx3 YXlzIHRoZXJlIGFuZCBpdCBjb25zdW1lcyByZWd1bGF0b3JzCj4gPiA+ID4gZnJvbSBhbm90aGVy IHBsYXRmb3JtIGRldmljZS4gVGhlIGZhY3QgaXQgdXNlcyBQQ0llIGRvZXNuJ3QgY2hhbmdlIHRo ZQo+ID4gPiA+IGZhY3QgdGhhdCBpdCBpcyBsb2dpY2FsbHkgYSBwbGF0Zm9ybSBkZXZpY2UuCj4g PiA+Cj4gPiA+IEFyZSB5b3UgcmVmZXJyaW5nIHRvIHRoZSBhdGgxMWsgU05PQyAoZmlybXdhcmUg cnVubmluZyBvbiBjby1wcm9jZXNzb3IKPiA+ID4gaW4gdGhlIFNvQykgdmFyaWFudD8KPiA+ID4K PiA+ID4gQWZhaWN0IHRoZSBQQ0llLWF0dGFjaGVkIGF0aDExayBpcyBub3QgcmVwcmVzZW50ZWQg YXMgYSBwbGF0Zm9ybV9kZXZpY2UKPiA+ID4gaW4gRGV2aWNlVHJlZS4KPiA+ID4KPiA+Cj4gPiBN eSBiYWQuIEluIFJCNSBpdCBpc24ndCAoeWV0IC0gSSB3YW50IHRvIGFkZCBpdCBpbiB0aGUgcG93 ZXIKPiA+IHNlcXVlbmNpbmcgc2VyaWVzKS4gSXQgaXMgaW4gWDEzcyB0aG91Z2hbMV0uCj4gPgo+ ID4gPiBTYWlkIHBsYXRmb3JtX2RldmljZSBpcyBhbHNvIG5vdCBhIGNoaWxkIHVuZGVyIHRoZSBQ Q0llIGJ1cywgc28gdGhpcwo+ID4gPiB3b3VsZCBiZSBhIGRpZmZlcmVudCBwbGF0Zm9ybV9kZXZp Y2UuLi4KPiA+ID4KPiA+Cj4gPiBJdCdzIHRoZSBjaGlsZCBvZiB0aGUgUENJZSBwb3J0IG5vZGUg YnV0IHRoZXJlJ3MgYSByZWFzb24gZm9yIGl0IHRvCj4gPiBoYXZlIHRoZSBgY29tcGF0aWJsZWAg cHJvcGVydHkuIEl0J3MgYmVjYXVzZSBpdCdzIGFuIGVudGl0eSBvZiB3aG9zZQo+ID4gZXhpc3Rl bmNlIHdlIGFyZSBhd2FyZSBiZWZvcmUgdGhlIHN5c3RlbSBib290cy4KPiA+Cj4gPiA+ID4gMi4g VGhlIHBsYXRmb3JtIGJ1cyBhbHJlYWR5IHByb3ZpZGVzIHVzIHdpdGggdGhlIGVudGlyZSBpbmZy YXN0cnVjdHVyZQo+ID4gPiA+IHRoYXQgd2UnZCBub3cgbmVlZCB0byBkdXBsaWNhdGUgKHBvc3Np Ymx5IGFkZGluZyBidWdzKSBpbiBvcmRlciB0bwo+ID4gPiA+IGludHJvZHVjZSBhICJwb3dlciBz ZXF1ZW5jaW5nIGJ1cyIuCj4gPiA+ID4KPiA+ID4KPiA+ID4gVGhpcyBpcyBhIHBlcmZlY3RseSBy ZWFzb25hYmxlIGRlc2lyZS4gTG9vayBhdCBvdXIgUE1JQ3MsIHRoZXkgYXJlIGZ1bGwKPiA+ID4g b2YgcGxhdGZvcm1fZGV2aWNlcy4gQnV0IHRocm91Z2ggdGhlIHllYXJzIGl0J3MgYmVlbiBzYWlk IG1hbnkgdGltZXMsCj4gPiA+IHRoYXQgdGhpcyBpcyBub3QgYSB2YWxpZCBvciBnb29kIHJlYXNv biBmb3IgdXNpbmcgcGxhdGZvcm1fZGV2aWNlcywgYW5kCj4gPiA+IGFzIGEgcmVzdWx0IHdlIGhh dmUgZS5nLiBhdXhpbGlhcnkgYnVzLgo+ID4gPgo+ID4KPiA+IE9rLCBzbyBJIGNhbm5vdCBmaW5k IHRoaXMgaW5mb3JtYXRpb24gYW55d2hlcmUgKG5vciBhbnkgZXhhbXBsZSkuIERvCj4gPiB5b3Ug aGFwcGVuIHRvIGtub3cgaWYgdGhlIGF1eGlsaWFyeSBidXMgb2ZmZXJzIGFueSBzb2Z0d2FyZSBu b2RlCj4gPiBpbnRlZ3JhdGlvbiBzbyB0aGF0IHRoZSBgY29tcGF0aWJsZWAgcHJvcGVydHkgZnJv bSBEVCBjYW4gZ2V0Cj4gPiBzZWFtbGVzc2x5IG1hcHBlZCB0byBhdXhpbGlhcnkgZGV2aWNlIElE cz8KPiA+Cj4gCj4gU28gSSB3YXMganVzdCB0cnlpbmcgdG8gcG9ydCB0aGlzIHRvIHVzaW5nIHRo ZSBhdXhpbGlhcnkgYnVzLCBvbmx5IHRvCj4gZmluZCBteXNlbGYgbGl0ZXJhbGx5IHJlaW1wbGVt ZW50aW5nIGZ1bmN0aW9ucyBmcm9tCj4gZHJpdmVycy9vZi9kZXZpY2UuYy4gSSBoYXZlIGEgZmVl bGluZyB0aGF0IHRoaXMgaXMgc2ltcGx5IHdyb25nLiBJZgo+IHdlJ3JlIGluc3RhbnRpYXRpbmcg ZGV2aWNlcyB3ZWxsIGRlZmluZWQgb24gdGhlIGRldmljZS10cmVlIHRoZW4gSU1PCj4gd2UgKnNo b3VsZCogbWFrZSB0aGVtIHBsYXRmb3JtIGRldmljZXMuIEFueXRoaW5nIGVsc2UgYW5kIHdlJ2xs IGJlCj4gcmVpbXBsZW1lbnRpbmcgZHJpdmVycy9vZi8gYmVjYXVzZSB3ZSB3aWxsIG5lZWQgdG8g cGFyc2UgdGhlIGRldmljZQo+IG5vZGVzLCBjaGVjayB0aGUgY29tcGF0aWJsZSwgbWF0Y2ggaXQg YWdhaW5zdCBkcml2ZXJzIGV0Yy4gVGhpbmdzIHRoYXQKPiBhcmUgYWxyZWFkeSBpbXBsZW1lbnRl ZCBmb3IgdGhlIHBsYXRmb3JtIGJ1cyBhbmQgb2ZfKiBBUElzLgo+IAo+IEdyZWc6IENvdWxkIHlv dSBjaGltZSBpbiBhbmQgY29uZmlybSB0aGF0IGl0J3MgYWxyaWdodCB0byB1c2UgdGhlCj4gcGxh dGZvcm0gYnVzIGhlcmU/IE9yIG1heWJlIHRoZXJlIGlzIHNvbWUgaW5mcmFzdHJ1Y3R1cmUgdG8g Y3JlYXRlCj4gYXV4aWxpYXJ5IGRldmljZXMgZnJvbSBzb2Z0d2FyZSBub2Rlcz8KCk5vdGUsIEkg SEFURSB0aGUgdXNlIG9mIHRoZSBwbGF0Zm9ybSBidXMgaGVyZSwgYnV0IEkgZG9uJ3QgaGF2ZSBh IGJldHRlcgpzdWdnZXN0aW9uLgoKSSdkIGxvdmUgZm9yIHRoZSBhdXhidXMgdG8gd29yaywgYW5k IGlmIHlvdSBjYW4gY3JlYXRlIHRoYXQgZnJvbQpzb2Z0d2FyZSBub2RlcywgYWxsIHRoZSBiZXR0 ZXIhICBCdXQgSSBkb24ndCB0aGluayB0aGF0J3MgcG9zc2libGUganVzdAp5ZXQsIGFuZCB5b3Ug d291bGQgZW5kIHVwIGltcGxlbWVudGluZyBhbGwgdGhlIHNhbWUgc3R1ZmYgdGhhdCB0aGUKcGxh dGZvcm0gYnVzIGhhcyB0b2RheSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBzbyBJIGRvdWJ0IGl0 IHdvdWxkIGJlCndvcnRoIGl0LgoKdGhhbmtzLAoKZ3JlZyBrLWgKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK