From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 4122315AE1 for ; Thu, 11 Jan 2024 12:40:25 +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="I7L9pOnj" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-28ca63fd071so2787945a91.3 for ; Thu, 11 Jan 2024 04:40:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704976825; x=1705581625; 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=lUjrrZ3Jg1GUMAie5ebnK4hlRzI9jSk+yPsyIMgP7Cg=; b=I7L9pOnj2gmHPXX3UUbnrWYfZH2x5047cV/fypzF3Y4ux3Y0oF/TgcPKblFJhFqyfN uRt+i6HwRmtVLCXSAecx2Ihe27aeeuvT5TpzeIlMY+pOieEKi5vEYiIqh8Yh10B/i7CD RswIwp5eHwjY6N1qjV8nIrBBXxP6J14XSk3vW2Bn7p6zOzOIE/PEiBwUrY0QGlV1B3uq 5jloVDT1ujj9h5SuzxJPTboxkF1HAHNqZEefAsPr+DxEp2kTY7JW+n/TN6Iti8VvdcC1 B9JbnzOo84Tyhq4z4XFf3s4P+tBtYNJme3NJUYiuB1DgqPvdhTHQvmnigGmTOd/jg4fy 8JSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704976825; x=1705581625; 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=lUjrrZ3Jg1GUMAie5ebnK4hlRzI9jSk+yPsyIMgP7Cg=; b=MjaHd0xs+wn7sm2viHrVZF+rFyJLirBDtoTs5iikd+st30tC3gojw1S7Rsa9nYtJRT KaM8FLRFl/RfeKSkieawxCxT8of0gergb88p+JDK40sqXPjGJlOrPB3jEWXvGRWuAYlt j5ZGbmh+5A+x+bCBffiPvLmgJPolavdcA2WfDwBCw68vJ/rTZKz4CXTvCFOeGwvwCx29 dRLFGIEpxirfIqGk+BPRi0pt3ua4kgbUeKdBYv6IQdNwT8Yd6mbwxIaN99+uWpHWxhSZ 2da0w01gVsEEmHSq/6udxoFQzZ/UJc9OdVDb4HW7y/HbWRq3rgkhjEZkaifJrxzWkn5/ rxxA== X-Gm-Message-State: AOJu0YyLPKdlOUhor5NZ+eOFPrVyTBGHaQPujvS1Af7TZ1aB4+k2Knne TmJUxB2GlDDKGuQV1mWaivXYYSqs+7/I X-Google-Smtp-Source: AGHT+IFlzCZDk+7khh2nGY76iLSM3Y0+E3O+l032jjoiVmXYGJDOGVhuEwa5Sr5OwMDDcz8NiN7tAg== X-Received: by 2002:a17:90a:4984:b0:28c:f1f3:4dcb with SMTP id d4-20020a17090a498400b0028cf1f34dcbmr914767pjh.69.1704976825101; Thu, 11 Jan 2024 04:40:25 -0800 (PST) Received: from thinkpad ([202.131.159.18]) by smtp.gmail.com with ESMTPSA id mf15-20020a17090b184f00b0028cef2025ddsm1418530pjb.15.2024.01.11.04.40.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jan 2024 04:40:24 -0800 (PST) Date: Thu, 11 Jan 2024 18:10:09 +0530 From: Manivannan Sadhasivam To: Dan Williams Cc: Lukas Wunner , 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 , Jonathan Cameron , Terry Bowman , Kuppuswamy Sathyanarayanan , Ilpo =?iso-8859-1?Q?J=E4rvinen?= , Huacai Chen , Alex Elder , Srini Kandagatla , Greg Kroah-Hartman , 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 3/9] PCI/portdrv: create platform devices for child OF nodes Message-ID: <20240111124009.GA3003@thinkpad> References: <20240104130123.37115-1-brgl@bgdev.pl> <20240104130123.37115-4-brgl@bgdev.pl> <20240109144327.GA10780@wunner.de> <20240110132853.GA6860@wunner.de> <659f00ed271b3_5cee2942@dwillia2-xfh.jf.intel.com.notmuch> 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: <659f00ed271b3_5cee2942@dwillia2-xfh.jf.intel.com.notmuch> On Wed, Jan 10, 2024 at 12:41:17PM -0800, Dan Williams wrote: > [ add Terry ] > > > Lukas Wunner wrote: > > On Wed, Jan 10, 2024 at 01:55:18PM +0100, Bartosz Golaszewski wrote: > > > On Tue, Jan 9, 2024 at 3:43???PM Lukas Wunner wrote: > > > > On Thu, Jan 04, 2024 at 02:01:17PM +0100, Bartosz Golaszewski wrote: > > > > > In order to introduce PCIe power-sequencing, we need to create platform > > > > > devices for child nodes of the port driver node. They will get matched > > > > > against the pwrseq drivers (if one exists) and then the actuak PCIe > > > > > device will reuse the node once it's detected on the bus. > > > > [...] > > > > > --- a/drivers/pci/pcie/portdrv.c > > > > > +++ b/drivers/pci/pcie/portdrv.c > > > > > @@ -715,7 +716,7 @@ static int pcie_portdrv_probe(struct pci_dev *dev, > > > > > pm_runtime_allow(&dev->dev); > > > > > } > > > > > > > > > > - return 0; > > > > > + return devm_of_platform_populate(&dev->dev); > > > > > } > > > > > > > > I think this belongs in of_pci_make_dev_node(), portdrv seems totally > > > > the wrong place. Note that you're currently calling this for RCECs > > > > (Root Complex Event Collectors) as well, which is likely not what > > > > you want. > > > > > > > > > > of_pci_make_dev_node() is only called when the relevant PCI device is > > > instantiated which doesn't happen until it's powered-up and scanned - > > > precisely the problem I'm trying to address. > > > > No, of_pci_make_dev_node() is called *before* device_attach(), > > i.e. before portdrv has even probed. So it seems this should > > work perfectly well for your use case. > > > > > > > > devm functions can't be used in the PCI core, so symmetrically call > > > > of_platform_unpopulate() from of_pci_remove_node(). > > > > > > I don't doubt what you're saying is true (I've seen worse things) but > > > this is the probe() callback of a driver using the driver model. Why > > > wouldn't devres work? > > > > The long term plan is to move the functionality in portdrv to > > the PCI core. Because devm functions can't be used in the PCI > > core, adding new ones to portdrv will *add* a new roadblock to > > migrating portdrv to the PCI core. In other words, it makes > > future maintenance more difficult. > > > > Generally, only PCIe port services which share the same interrupt > > (hotplug, PME, bandwith notification, flit error counter, ...) > > need to live in portdrv. Arbitrary other stuff should not be > > shoehorned into portdrv. > > I came here to say the same thing. It is already the case that portdrv > is not a good model to build new functionality upon [1], and PCI core > enlightenment should be considered first. > The primary reason for plugging the power sequencing into portdrv is due to portdrv binding with all the bridge devices and acting as management driver for the bridges. This is where exactly the power sequencing part needs to be plugged in IMO. But if the idea of the portdrv is just to expose services based on interrupts, then please suggest a better place to plug this power sequencing part. - Mani > The portdrv model is impeding Terry's CXL Port error handling effort, so > I am on the lookout for portdrv growing new entanglements to unwind > later. > > [1]: http://lore.kernel.org/r/20221025232535.GA579167@bhelgaas > -- மணிவண்ணன் சதாசிவம் 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 9F069C47077 for ; Thu, 11 Jan 2024 12:40:59 +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=vKiwa1iE3Ng86c6mZ2mhkmI2OLlK5rTrzF1rquq0VcY=; b=4CNeerXaHNt0Xw fVGcFBAO59FctUCyXpZi6V+tHhMepYzCmrKQ8d3wfrI6hl+G6Kn9p08gdS5W7NJhheYB01rvxKccr xD3L6+MKPrfdSBNwxodxxPtInUdu7cFHhird+zDOekqKFYUCkXcXZj3Jsw8UYP+IX6t4M9Ymvoz/e 4VHXYYi/MD8I32pj/b1mGU24AMhIJQIgu47XIJTHjXIXGOzoyqNtcfce/RMcenym2HZaRZQbdDluh o6trwP0JGvxp4EMK6Nkme/pv17MxKCF+q9NYtUBK/d6YWhOtIINxu4T/IXuvR2/2itTcnamrMrFPx 452Y8d8IkbpUu9WZH87A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rNuML-0003dd-1e; Thu, 11 Jan 2024 12:40:33 +0000 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rNuMI-0003dB-1Z for linux-arm-kernel@lists.infradead.org; Thu, 11 Jan 2024 12:40:32 +0000 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-28ca63fd071so2787941a91.3 for ; Thu, 11 Jan 2024 04:40:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704976825; x=1705581625; 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=lUjrrZ3Jg1GUMAie5ebnK4hlRzI9jSk+yPsyIMgP7Cg=; b=WXTrQ2k/2iCZUCIeoCBOkdvRPwZw+7epieGIr87rjBG0OtpRJHufZmEVs6taOmzXuD x8mjm62jwxBe15EnXGiJ5x/iP0o5FCAWtAUYvQXinZEhY10jLok78axu5/BNagQW2Gbt /ltmYQQZenJkgDIXiMNCWqmd8QykCM5/ueFPQICRLD2sg9Q2tuTLRXwCPMZi1G28/Svu Uw4aRYI1wB9f0DyDqEF+b9wLrD188u/+noSfhNvZ0g1JYQV49P44cNDpjK+27U3oy2um 4OzSsmdMFwR1jIR5rPmwa0jhTCLG7xJbLlhtnfclo58vAg8Q8fI1iGHZfSmdHUpgQ8r/ c+qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704976825; x=1705581625; 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=lUjrrZ3Jg1GUMAie5ebnK4hlRzI9jSk+yPsyIMgP7Cg=; b=LbaNVqb0ReA9TAGt/z5g3JJDevkJYOo5GMyAbp9Rqv4lWSxrFvS6oh/YYjiST64yW7 gohHoFSC12iXYOVXgHn5uGu/6yiYoVJ6D16vq6Sp4RMV4N8bgl/tRQP1nMqpX5ywPuYU GMFHOuMrivyn/pvXDSzxmetJgo68CDBMrcj6jM+LN+Xql+2qyL/T08XX1Y5O5hNW82SE Cecah2gVIiDyn0JQ9FpJfjMXCtl5rhsRMuR/dpe03NCnzIgeuI2veNB0nlpnWvFGYn8Y ERIc7PzW9BdYIehUxwnkBMEn4vnHH0WVCx1InRAYSxxt5zIRiXkfog+Hr2uPvm9e7BbO qruA== X-Gm-Message-State: AOJu0YwbKZozXIo/9TFkFpruD4CV4x5uc4k1PReiMmwbrX1gK5Gsg0Ox 0iivMkWvWaS5yQXloIEXhTgWpRwknhBY X-Google-Smtp-Source: AGHT+IFlzCZDk+7khh2nGY76iLSM3Y0+E3O+l032jjoiVmXYGJDOGVhuEwa5Sr5OwMDDcz8NiN7tAg== X-Received: by 2002:a17:90a:4984:b0:28c:f1f3:4dcb with SMTP id d4-20020a17090a498400b0028cf1f34dcbmr914767pjh.69.1704976825101; Thu, 11 Jan 2024 04:40:25 -0800 (PST) Received: from thinkpad ([202.131.159.18]) by smtp.gmail.com with ESMTPSA id mf15-20020a17090b184f00b0028cef2025ddsm1418530pjb.15.2024.01.11.04.40.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jan 2024 04:40:24 -0800 (PST) Date: Thu, 11 Jan 2024 18:10:09 +0530 From: Manivannan Sadhasivam To: Dan Williams Cc: Lukas Wunner , 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 , Jonathan Cameron , Terry Bowman , Kuppuswamy Sathyanarayanan , Ilpo =?iso-8859-1?Q?J=E4rvinen?= , Huacai Chen , Alex Elder , Srini Kandagatla , Greg Kroah-Hartman , 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 3/9] PCI/portdrv: create platform devices for child OF nodes Message-ID: <20240111124009.GA3003@thinkpad> References: <20240104130123.37115-1-brgl@bgdev.pl> <20240104130123.37115-4-brgl@bgdev.pl> <20240109144327.GA10780@wunner.de> <20240110132853.GA6860@wunner.de> <659f00ed271b3_5cee2942@dwillia2-xfh.jf.intel.com.notmuch> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <659f00ed271b3_5cee2942@dwillia2-xfh.jf.intel.com.notmuch> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240111_044030_529873_52986D46 X-CRM114-Status: GOOD ( 38.84 ) 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 T24gV2VkLCBKYW4gMTAsIDIwMjQgYXQgMTI6NDE6MTdQTSAtMDgwMCwgRGFuIFdpbGxpYW1zIHdy b3RlOgo+IFsgYWRkIFRlcnJ5IF0KPiAKPiAKPiBMdWthcyBXdW5uZXIgd3JvdGU6Cj4gPiBPbiBX ZWQsIEphbiAxMCwgMjAyNCBhdCAwMTo1NToxOFBNICswMTAwLCBCYXJ0b3N6IEdvbGFzemV3c2tp IHdyb3RlOgo+ID4gPiBPbiBUdWUsIEphbiA5LCAyMDI0IGF0IDM6NDM/Pz9QTSBMdWthcyBXdW5u ZXIgPGx1a2FzQHd1bm5lci5kZT4gd3JvdGU6Cj4gPiA+ID4gT24gVGh1LCBKYW4gMDQsIDIwMjQg YXQgMDI6MDE6MTdQTSArMDEwMCwgQmFydG9zeiBHb2xhc3pld3NraSB3cm90ZToKPiA+ID4gPiA+ IEluIG9yZGVyIHRvIGludHJvZHVjZSBQQ0llIHBvd2VyLXNlcXVlbmNpbmcsIHdlIG5lZWQgdG8g Y3JlYXRlIHBsYXRmb3JtCj4gPiA+ID4gPiBkZXZpY2VzIGZvciBjaGlsZCBub2RlcyBvZiB0aGUg cG9ydCBkcml2ZXIgbm9kZS4gVGhleSB3aWxsIGdldCBtYXRjaGVkCj4gPiA+ID4gPiBhZ2FpbnN0 IHRoZSBwd3JzZXEgZHJpdmVycyAoaWYgb25lIGV4aXN0cykgYW5kIHRoZW4gdGhlIGFjdHVhayBQ Q0llCj4gPiA+ID4gPiBkZXZpY2Ugd2lsbCByZXVzZSB0aGUgbm9kZSBvbmNlIGl0J3MgZGV0ZWN0 ZWQgb24gdGhlIGJ1cy4KPiA+ID4gPiBbLi4uXQo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kv cGNpZS9wb3J0ZHJ2LmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGNpL3BjaWUvcG9ydGRydi5j Cj4gPiA+ID4gPiBAQCAtNzE1LDcgKzcxNiw3IEBAIHN0YXRpYyBpbnQgcGNpZV9wb3J0ZHJ2X3By b2JlKHN0cnVjdCBwY2lfZGV2ICpkZXYsCj4gPiA+ID4gPiAgICAgICAgICAgICAgIHBtX3J1bnRp bWVfYWxsb3coJmRldi0+ZGV2KTsKPiA+ID4gPiA+ICAgICAgIH0KPiA+ID4gPiA+Cj4gPiA+ID4g PiAtICAgICByZXR1cm4gMDsKPiA+ID4gPiA+ICsgICAgIHJldHVybiBkZXZtX29mX3BsYXRmb3Jt X3BvcHVsYXRlKCZkZXYtPmRldik7Cj4gPiA+ID4gPiAgfQo+ID4gPiA+Cj4gPiA+ID4gSSB0aGlu ayB0aGlzIGJlbG9uZ3MgaW4gb2ZfcGNpX21ha2VfZGV2X25vZGUoKSwgcG9ydGRydiBzZWVtcyB0 b3RhbGx5Cj4gPiA+ID4gdGhlIHdyb25nIHBsYWNlLiAgTm90ZSB0aGF0IHlvdSdyZSBjdXJyZW50 bHkgY2FsbGluZyB0aGlzIGZvciBSQ0VDcwo+ID4gPiA+IChSb290IENvbXBsZXggRXZlbnQgQ29s bGVjdG9ycykgYXMgd2VsbCwgd2hpY2ggaXMgbGlrZWx5IG5vdCB3aGF0Cj4gPiA+ID4geW91IHdh bnQuCj4gPiA+ID4KPiA+ID4gCj4gPiA+IG9mX3BjaV9tYWtlX2Rldl9ub2RlKCkgaXMgb25seSBj YWxsZWQgd2hlbiB0aGUgcmVsZXZhbnQgUENJIGRldmljZSBpcwo+ID4gPiBpbnN0YW50aWF0ZWQg d2hpY2ggZG9lc24ndCBoYXBwZW4gdW50aWwgaXQncyBwb3dlcmVkLXVwIGFuZCBzY2FubmVkIC0K PiA+ID4gcHJlY2lzZWx5IHRoZSBwcm9ibGVtIEknbSB0cnlpbmcgdG8gYWRkcmVzcy4KPiA+IAo+ ID4gTm8sIG9mX3BjaV9tYWtlX2Rldl9ub2RlKCkgaXMgY2FsbGVkICpiZWZvcmUqIGRldmljZV9h dHRhY2goKSwKPiA+IGkuZS4gYmVmb3JlIHBvcnRkcnYgaGFzIGV2ZW4gcHJvYmVkLiAgU28gaXQg c2VlbXMgdGhpcyBzaG91bGQKPiA+IHdvcmsgcGVyZmVjdGx5IHdlbGwgZm9yIHlvdXIgdXNlIGNh c2UuCj4gPiAKPiA+IAo+ID4gPiA+IGRldm0gZnVuY3Rpb25zIGNhbid0IGJlIHVzZWQgaW4gdGhl IFBDSSBjb3JlLCBzbyBzeW1tZXRyaWNhbGx5IGNhbGwKPiA+ID4gPiBvZl9wbGF0Zm9ybV91bnBv cHVsYXRlKCkgZnJvbSBvZl9wY2lfcmVtb3ZlX25vZGUoKS4KPiA+ID4gCj4gPiA+IEkgZG9uJ3Qg ZG91YnQgd2hhdCB5b3UncmUgc2F5aW5nIGlzIHRydWUgKEkndmUgc2VlbiB3b3JzZSB0aGluZ3Mp IGJ1dAo+ID4gPiB0aGlzIGlzIHRoZSBwcm9iZSgpIGNhbGxiYWNrIG9mIGEgZHJpdmVyIHVzaW5n IHRoZSBkcml2ZXIgbW9kZWwuIFdoeQo+ID4gPiB3b3VsZG4ndCBkZXZyZXMgd29yaz8KPiA+IAo+ ID4gVGhlIGxvbmcgdGVybSBwbGFuIGlzIHRvIG1vdmUgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gcG9y dGRydiB0bwo+ID4gdGhlIFBDSSBjb3JlLiAgQmVjYXVzZSBkZXZtIGZ1bmN0aW9ucyBjYW4ndCBi ZSB1c2VkIGluIHRoZSBQQ0kKPiA+IGNvcmUsIGFkZGluZyBuZXcgb25lcyB0byBwb3J0ZHJ2IHdp bGwgKmFkZCogYSBuZXcgcm9hZGJsb2NrIHRvCj4gPiBtaWdyYXRpbmcgcG9ydGRydiB0byB0aGUg UENJIGNvcmUuICBJbiBvdGhlciB3b3JkcywgaXQgbWFrZXMKPiA+IGZ1dHVyZSBtYWludGVuYW5j ZSBtb3JlIGRpZmZpY3VsdC4KPiA+IAo+ID4gR2VuZXJhbGx5LCBvbmx5IFBDSWUgcG9ydCBzZXJ2 aWNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSBpbnRlcnJ1cHQKPiA+IChob3RwbHVnLCBQTUUsIGJh bmR3aXRoIG5vdGlmaWNhdGlvbiwgZmxpdCBlcnJvciBjb3VudGVyLCAuLi4pCj4gPiBuZWVkIHRv IGxpdmUgaW4gcG9ydGRydi4gIEFyYml0cmFyeSBvdGhlciBzdHVmZiBzaG91bGQgbm90IGJlCj4g PiBzaG9laG9ybmVkIGludG8gcG9ydGRydi4KPiAKPiBJIGNhbWUgaGVyZSB0byBzYXkgdGhlIHNh bWUgdGhpbmcuIEl0IGlzIGFscmVhZHkgdGhlIGNhc2UgdGhhdCBwb3J0ZHJ2Cj4gaXMgbm90IGEg Z29vZCBtb2RlbCB0byBidWlsZCBuZXcgZnVuY3Rpb25hbGl0eSB1cG9uIFsxXSwgYW5kIFBDSSBj b3JlCj4gZW5saWdodGVubWVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBmaXJzdC4KPiAKClRoZSBw cmltYXJ5IHJlYXNvbiBmb3IgcGx1Z2dpbmcgdGhlIHBvd2VyIHNlcXVlbmNpbmcgaW50byBwb3J0 ZHJ2IGlzIGR1ZSB0bwpwb3J0ZHJ2IGJpbmRpbmcgd2l0aCBhbGwgdGhlIGJyaWRnZSBkZXZpY2Vz IGFuZCBhY3RpbmcgYXMgbWFuYWdlbWVudCBkcml2ZXIgZm9yCnRoZSBicmlkZ2VzLiBUaGlzIGlz IHdoZXJlIGV4YWN0bHkgdGhlIHBvd2VyIHNlcXVlbmNpbmcgcGFydCBuZWVkcyB0byBiZSBwbHVn Z2VkCmluIElNTy4gQnV0IGlmIHRoZSBpZGVhIG9mIHRoZSBwb3J0ZHJ2IGlzIGp1c3QgdG8gZXhw b3NlIHNlcnZpY2VzIGJhc2VkIG9uCmludGVycnVwdHMsIHRoZW4gcGxlYXNlIHN1Z2dlc3QgYSBi ZXR0ZXIgcGxhY2UgdG8gcGx1ZyB0aGlzIHBvd2VyIHNlcXVlbmNpbmcKcGFydC4KCi0gTWFuaQoK PiBUaGUgcG9ydGRydiBtb2RlbCBpcyBpbXBlZGluZyBUZXJyeSdzIENYTCBQb3J0IGVycm9yIGhh bmRsaW5nIGVmZm9ydCwgc28KPiBJIGFtIG9uIHRoZSBsb29rb3V0IGZvciBwb3J0ZHJ2IGdyb3dp bmcgbmV3IGVudGFuZ2xlbWVudHMgdG8gdW53aW5kCj4gbGF0ZXIuCj4gCj4gWzFdOiBodHRwOi8v bG9yZS5rZXJuZWwub3JnL3IvMjAyMjEwMjUyMzI1MzUuR0E1NzkxNjdAYmhlbGdhYXMKPiAKCi0t IArgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==