From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:55842 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751669AbeCUQZf (ORCPT ); Wed, 21 Mar 2018 12:25:35 -0400 Date: Wed, 21 Mar 2018 16:26:04 +0000 From: Lorenzo Pieralisi To: Sridhar Pitchai Cc: Bjorn Helgaas , Jake Oshins , Haiyang Zhang , Stephen Hemminger , Dexuan Cui , KY Srinivasan , "Michael Kelley (EOSG)" , "devel@linuxdriverproject.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v3]PCI: hv: fix PCI-BUS domainID corruption Message-ID: <20180321162555.GA16028@red-moon> References: <20180315120522.GA15651@e107981-ln.cambridge.arm.com> <04DBCCAB-4BA7-4E05-A047-44824995963E@microsoft.com> <65B4E847-CC40-4166-BE8F-D44049EDB2FF@microsoft.com> <20180320183208.GB24991@e107981-ln.cambridge.arm.com> <4E6E5EE3-2EFA-4326-BE14-D5465F5F439F@microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 In-Reply-To: <4E6E5EE3-2EFA-4326-BE14-D5465F5F439F@microsoft.com> Sender: linux-pci-owner@vger.kernel.org List-ID: On Tue, Mar 20, 2018 at 11:00:36PM +0000, Sridhar Pitchai wrote: > Hi Lorenzo, > Transparent SRIOV is exposing the NIC directly to the kernel via > para-virtual device, unlike creating a netdev and associating it > with the bond driver. Further descriptions here, > https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=0c195567a8f6e82ea5535cd9f1d54a1626dd233e > > Previously, when using the bond driver, unique and persistent VF NIC > name was required, so we used serial number as PCI domain which is > included as part of the VF NIC name. Transparent SRIOV mode puts VF > NIC based on MAC match as a slave of synthetic NIC, so VF NIC’s name > is no longer important. Please read the link I sent you in relation to email formatting. Then add your description above in a way that anyone not 100% familiar with hyperv can understand it - that's what the commit log is for. You are sending this patch to stable kernels, patch above has been in the kernel from v4.14. The patch you are fixing since v4.11, you ought to be careful since you do not want to have broken kernel versions owing to stable patches mismatches, that's why I asked and I will ask again, are you sure you won't trigger a regression by sending this fix to stable ? I assume the bond driver mechanism is now done and dusted. Thanks, Lorenzo > Thanks, > Sridhar > > On 3/20/18, 11:32 AM, "Lorenzo Pieralisi" wrote: > > On Tue, Mar 20, 2018 at 05:56:15PM +0000, Sridhar Pitchai wrote: > > Hi Lorenzo, > > > Are we good with the explanation? Can I send the patch with the > > updated commit comments? > > Almost. > > [...] > > > Since we have the transparent SRIOV mode now, the short VF device name > > is no longer needed. > > Can you correlate transparent SRIOV mode to the point you are making > below ? Please explain what transparent SRIOV mode allows you to remove > and why. The rest of the explanation seems OK. > > Please follow this email format: > > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fvger.kernel.org%2Flkml%2F%23s3-9&data=04%7C01%7CSridhar.Pitchai%40microsoft.com%7Cc5cdcb7951f64318e52708d58e90e6f2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636571675366181738%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=yBdqc4NQZsO7O9vfgJsr5olU8GfLNjF5e9EAaCb7vq4%3D&reserved=0 > > Thanks, > Lorenzo > > > I still do not understand what this means and how it is related to the > > patch below, it may be clear to you, it is not to me, at all. > > > > Sridhar >> the patch below, was introduced to make the device name small, by taking only > > 16bits of the serial number. Since we are not going to have the serial number > > updated to the BUS id, this has to be removed. > > > > Fixes: 4a9b0933bdfc("PCI:hv:Use device serial number as PCI domain") > > > > Fixes: 4a9b0933bdfc ("PCI: hv: Use device serial number as PCI domain") > > Sridhr >> yes > > > > I asked you an explicit question. Commit above was added for a reason > > I assume. This patch implies that kernel has been broken since v4.11 > > which is almost a year ago and nobody every noticed ? Or there are > > systems where commit above is _necessary_ and this patch would break > > them ? > > > > I want a detailed explanation that highlights *why* it is safe to apply > > this patch and send it to stable kernels, commit log above won't do. > > > > Sridhar>> HyperV provides a unique domain ID for PCI BUS. But it is modified by the child > > device when it is added. This cannot produce a unique domain ID all the time. > > Here in the bug, we see the collision between the serial number and already > > existing PCI bus. The cleaner way is never touch the domain ID provided by > > hyperV during the PCI bus creation. As long as hyperV make sure it provides a > > unique domain ID for the PCI for a VM it will not break, and HyperV will > > guarantees that the domain for the PCI bus for a given VM will be always unique. > > The original patch was also intending to have a unique domain ID for the PCI > > bus, by taking the serial number of the device, but it is not sufficient, when > > the device serial number is number which is the domain ID of the existing PCI > > bus. With the current kernel we can repro this issue by adding a device with a > > serial number matching the existing PCI bus domain id. (in this case that > > happens to be zero). > > > > > > Thanks, > > Lorenzo > > > > Cc: stable@vger.kernel.org > > Signed-off-by: Sridhar Pitchai > > --- > > Changes in v3: > > * fix the commit comment. [KY Srinivasan, Michael Kelley] > > --- > > drivers/pci/host/pci-hyperv.c | 11 ----------- > > 1 file changed, 11 deletions(-) > > diff --git a/drivers/pci/host/pci-hyperv.c b/drivers/pci/host/pci-hyperv.c > > index 2faf38e..ac67e56 100644 > > --- a/drivers/pci/host/pci-hyperv.c > > +++ b/drivers/pci/host/pci-hyperv.c > > @@ -1518,17 +1518,6 @@ static struct hv_pci_dev *new_pcichild_device(struct hv_pcibus_device *hbus, > > get_pcichild(hpdev, hv_pcidev_ref_childlist); > > spin_lock_irqsave(&hbus->device_list_lock, flags); > > > > - /* > > - * When a device is being added to the bus, we set the PCI domain > > - * number to be the device serial number, which is non-zero and > > - * unique on the same VM. The serial numbers start with 1, and > > - * increase by 1 for each device. So device names including this > > - * can have shorter names than based on the bus instance UUID. > > - * Only the first device serial number is used for domain, so the > > - * domain number will not change after the first device is added. > > - */ > > - if (list_empty(&hbus->children)) > > - hbus->sysdata.domain = desc->ser; > > list_add_tail(&hpdev->list_entry, &hbus->children); > > spin_unlock_irqrestore(&hbus->device_list_lock, flags); > > return hpdev; > > -- > > 2.7.4 > > > > > > > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-223322-1521649543-2-13648327041975083851 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, RCVD_IN_DNSWL_MED -2.3, SPF_PASS -0.001, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='140.211.166.136', Host='smtp3.osuosl.org', Country='US', FromHeader='com', MailFrom='org' X-Spam-charsets: plain='utf-8' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: driverdev-devel-bounces@linuxdriverproject.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1521649542; b=W9N3kba1tOMbsE/aOOEdkofY173gS/rrAMpK73cG61/COhW bJrxsn86EVoxvnZ39YFH/Cwx7qv4BpoVMnhptqurXf2Olm7Jrj/NxTeNchhoGZe+ /yqVMm0Vw3qMVf2KHtztjdoAuDjxK4FdhLyLPyzYw6+/DNo/wThEDUG627/dRszf qVyhMnWc54N25hGAmPr1//3JCw+b9XuSwHxfwVRLJMCRK1a0kg5CeQSN/UfIqskz LZkYxPc4K9GLspQB++1HRRr8GdsCeYABrplQWiWB91JkfV/jA+nC8XKa/JqubQqW n/GZhwnxAODSSUW3GDwPT5qsLOwyKIr6MCdrYxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:subject:message-id :references:mime-version:in-reply-to:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:cc:content-type :content-transfer-encoding:sender; s=arctest; t=1521649542; bh=i bZVaO4/azDUkM7DRNkWC3tQMOinhmGaiIputVd9/BA=; b=uuue590iYmV4EesJz EcMpvIOFlh5d04ekL+M7DAbEv/EU7t1iPa7OwBkplCM+Yj1LOHVsDZfKrUkwe9jt zhHOZf+gIoWE+sgH3bp+kn5vVX+GcBY0KHFvCi9c4DpNcpGaTlCnl4DN3VyRvWab TKk//uByFoR+0j1UUinSawBDSRfLsRh8l/tKhd/mQ0oNECWh2o3iRqx0Mb7LzlzT Lu3n1FAVvHXKeRMTHB08M+LwaxC7B9VdO93wiu85p4rHOl0RrazUi/tK1zMLVyft z99ve/xeQQR9OetCDQaiKHKAzZ2kiIWwPxX0poSjONdIj4e8THfaM6s0WxWypo+0 drxRw== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=arm.com; iprev=pass policy.iprev=140.211.166.136 (smtp3.osuosl.org); spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org smtp.helo=silver.osuosl.org; x-aligned-from=fail; x-ptr=fail x-ptr-helo=silver.osuosl.org x-ptr-lookup=smtp3.osuosl.org; x-return-mx=pass smtp.domain=linuxdriverproject.org smtp.result=pass smtp_is_org_domain=yes header.domain=arm.com header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128; x-vs=clean score=-100 state=0 Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=arm.com; iprev=pass policy.iprev=140.211.166.136 (smtp3.osuosl.org); spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org smtp.helo=silver.osuosl.org; x-aligned-from=fail; x-ptr=fail x-ptr-helo=silver.osuosl.org x-ptr-lookup=smtp3.osuosl.org; x-return-mx=pass smtp.domain=linuxdriverproject.org smtp.result=pass smtp_is_org_domain=yes header.domain=arm.com header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128; x-vs=clean score=-100 state=0 X-ME-VSCategory: clean X-Remote-Delivered-To: driverdev-devel@osuosl.org Date: Wed, 21 Mar 2018 16:26:04 +0000 From: Lorenzo Pieralisi To: Sridhar Pitchai Subject: Re: [PATCH v3]PCI: hv: fix PCI-BUS domainID corruption Message-ID: <20180321162555.GA16028@red-moon> References: <20180315120522.GA15651@e107981-ln.cambridge.arm.com> <04DBCCAB-4BA7-4E05-A047-44824995963E@microsoft.com> <65B4E847-CC40-4166-BE8F-D44049EDB2FF@microsoft.com> <20180320183208.GB24991@e107981-ln.cambridge.arm.com> <4E6E5EE3-2EFA-4326-BE14-D5465F5F439F@microsoft.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <4E6E5EE3-2EFA-4326-BE14-D5465F5F439F@microsoft.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.24 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stephen Hemminger , "linux-pci@vger.kernel.org" , Haiyang Zhang , "linux-kernel@vger.kernel.org" , "Michael Kelley \(EOSG\)" , Jake Oshins , Bjorn Helgaas , "devel@linuxdriverproject.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMTE6MDA6MzZQTSArMDAwMCwgU3JpZGhhciBQaXRjaGFp IHdyb3RlOgo+IEhpIExvcmVuem8sCj4gICAgVHJhbnNwYXJlbnQgU1JJT1YgaXMgZXhwb3Npbmcg dGhlIE5JQyBkaXJlY3RseSB0byB0aGUga2VybmVsIHZpYQo+ICAgIHBhcmEtdmlydHVhbCBkZXZp Y2UsIHVubGlrZSBjcmVhdGluZyBhIG5ldGRldiBhbmQgYXNzb2NpYXRpbmcgaXQKPiAgICB3aXRo IHRoZSBib25kIGRyaXZlci4gRnVydGhlciBkZXNjcmlwdGlvbnMgaGVyZSwKPiAgICBodHRwczov L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9uZXh0L2xpbnV4LW5leHQu Z2l0L2NvbW1pdC8/aWQ9MGMxOTU1NjdhOGY2ZTgyZWE1NTM1Y2Q5ZjFkNTRhMTYyNmRkMjMzZQo+ IAo+IFByZXZpb3VzbHksIHdoZW4gdXNpbmcgdGhlIGJvbmQgZHJpdmVyLCB1bmlxdWUgYW5kIHBl cnNpc3RlbnQgVkYgTklDCj4gbmFtZSB3YXMgcmVxdWlyZWQsIHNvIHdlIHVzZWQgc2VyaWFsIG51 bWJlciBhcyBQQ0kgZG9tYWluIHdoaWNoIGlzCj4gaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgVkYg TklDIG5hbWUuICBUcmFuc3BhcmVudCBTUklPViBtb2RlIHB1dHMgVkYKPiBOSUMgYmFzZWQgb24g TUFDIG1hdGNoIGFzIGEgc2xhdmUgb2Ygc3ludGhldGljIE5JQywgc28gVkYgTklD4oCZcyBuYW1l Cj4gaXMgbm8gbG9uZ2VyIGltcG9ydGFudC4KClBsZWFzZSByZWFkIHRoZSBsaW5rIEkgc2VudCB5 b3UgaW4gcmVsYXRpb24gdG8gZW1haWwgZm9ybWF0dGluZy4KClRoZW4gYWRkIHlvdXIgZGVzY3Jp cHRpb24gYWJvdmUgaW4gYSB3YXkgdGhhdCBhbnlvbmUgbm90IDEwMCUgZmFtaWxpYXIKd2l0aCBo eXBlcnYgY2FuIHVuZGVyc3RhbmQgaXQgLSB0aGF0J3Mgd2hhdCB0aGUgY29tbWl0IGxvZyBpcyBm b3IuCgpZb3UgYXJlIHNlbmRpbmcgdGhpcyBwYXRjaCB0byBzdGFibGUga2VybmVscywgcGF0Y2gg YWJvdmUgaGFzIGJlZW4gaW4KdGhlIGtlcm5lbCBmcm9tIHY0LjE0LiBUaGUgcGF0Y2ggeW91IGFy ZSBmaXhpbmcgc2luY2UgdjQuMTEsIHlvdSBvdWdodAp0byBiZSBjYXJlZnVsIHNpbmNlIHlvdSBk byBub3Qgd2FudCB0byBoYXZlIGJyb2tlbiBrZXJuZWwgdmVyc2lvbnMgb3dpbmcKdG8gc3RhYmxl IHBhdGNoZXMgbWlzbWF0Y2hlcywgdGhhdCdzIHdoeSBJIGFza2VkIGFuZCBJIHdpbGwgYXNrIGFn YWluLAphcmUgeW91IHN1cmUgeW91IHdvbid0IHRyaWdnZXIgYSByZWdyZXNzaW9uIGJ5IHNlbmRp bmcgdGhpcyBmaXggdG8Kc3RhYmxlID8KCkkgYXNzdW1lIHRoZSBib25kIGRyaXZlciBtZWNoYW5p c20gaXMgbm93IGRvbmUgYW5kIGR1c3RlZC4KClRoYW5rcywKTG9yZW56bwoKPiBUaGFua3MsCj4g U3JpZGhhcgo+IAo+IO+7v09uIDMvMjAvMTgsIDExOjMyIEFNLCAiTG9yZW56byBQaWVyYWxpc2ki IDxsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29tPiB3cm90ZToKPiAKPiAgICAgT24gVHVlLCBNYXIg MjAsIDIwMTggYXQgMDU6NTY6MTVQTSArMDAwMCwgU3JpZGhhciBQaXRjaGFpIHdyb3RlOgo+ICAg ICA+IEhpIExvcmVuem8sCj4gICAgIAo+ICAgICA+IEFyZSB3ZSBnb29kIHdpdGggdGhlIGV4cGxh bmF0aW9uPyBDYW4gSSBzZW5kIHRoZSBwYXRjaCB3aXRoIHRoZQo+ICAgICA+IHVwZGF0ZWQgY29t bWl0IGNvbW1lbnRzPwo+ICAgICAKPiAgICAgQWxtb3N0Lgo+ICAgICAKPiAgICAgWy4uLl0KPiAg ICAgCj4gICAgID4gICAgIFNpbmNlIHdlIGhhdmUgdGhlIHRyYW5zcGFyZW50IFNSSU9WIG1vZGUg bm93LCB0aGUgc2hvcnQgVkYgZGV2aWNlIG5hbWUKPiAgICAgPiAgICAgaXMgbm8gbG9uZ2VyIG5l ZWRlZC4KPiAgICAgCj4gICAgIENhbiB5b3UgY29ycmVsYXRlIHRyYW5zcGFyZW50IFNSSU9WIG1v ZGUgdG8gdGhlIHBvaW50IHlvdSBhcmUgbWFraW5nCj4gICAgIGJlbG93ID8gUGxlYXNlIGV4cGxh aW4gd2hhdCB0cmFuc3BhcmVudCBTUklPViBtb2RlIGFsbG93cyB5b3UgdG8gcmVtb3ZlCj4gICAg IGFuZCB3aHkuIFRoZSByZXN0IG9mIHRoZSBleHBsYW5hdGlvbiBzZWVtcyBPSy4KPiAgICAgCj4g ICAgIFBsZWFzZSBmb2xsb3cgdGhpcyBlbWFpbCBmb3JtYXQ6Cj4gICAgIAo+ICAgICBodHRwczov L25hMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJG dmdlci5rZXJuZWwub3JnJTJGbGttbCUyRiUyM3MzLTkmZGF0YT0wNCU3QzAxJTdDU3JpZGhhci5Q aXRjaGFpJTQwbWljcm9zb2Z0LmNvbSU3Q2M1Y2RjYjc5NTFmNjQzMThlNTI3MDhkNThlOTBlNmYy JTdDNzJmOTg4YmY4NmYxNDFhZjkxYWIyZDdjZDAxMWRiNDclN0MxJTdDMCU3QzYzNjU3MTY3NTM2 NjE4MTczOCU3Q1Vua25vd24lN0NUV0ZwYkdac2IzZDhleUpXSWpvaU1DNHdMakF3TURBaUxDSlFJ am9pVjJsdU16SWlMQ0pCVGlJNklrMWhhV3dpZlElM0QlM0QlN0MtMSZzZGF0YT15QmRxYzROUVpz TzdPOXZmZ0pzcjVvbFU4R2ZMTmpGNWU5RUFhQ2I3dnE0JTNEJnJlc2VydmVkPTAKPiAgICAgCj4g ICAgIFRoYW5rcywKPiAgICAgTG9yZW56bwo+ICAgICAKPiAgICAgPiAgICAgSSBzdGlsbCBkbyBu b3QgdW5kZXJzdGFuZCB3aGF0IHRoaXMgbWVhbnMgYW5kIGhvdyBpdCBpcyByZWxhdGVkIHRvIHRo ZQo+ICAgICA+ICAgICBwYXRjaCBiZWxvdywgaXQgbWF5IGJlIGNsZWFyIHRvIHlvdSwgaXQgaXMg bm90IHRvIG1lLCBhdCBhbGwuCj4gICAgID4gICAgIAo+ICAgICA+ICAgICBTcmlkaGFyID4+IHRo ZSBwYXRjaCBiZWxvdywgd2FzIGludHJvZHVjZWQgdG8gbWFrZSB0aGUgZGV2aWNlIG5hbWUgc21h bGwsIGJ5IHRha2luZyBvbmx5Cj4gICAgID4gICAgIDE2Yml0cyBvZiB0aGUgc2VyaWFsIG51bWJl ci4gU2luY2Ugd2UgYXJlIG5vdCBnb2luZyB0byBoYXZlIHRoZSBzZXJpYWwgbnVtYmVyCj4gICAg ID4gICAgIHVwZGF0ZWQgdG8gdGhlIEJVUyBpZCwgdGhpcyBoYXMgdG8gYmUgcmVtb3ZlZC4KPiAg ICAgPiAgICAgCj4gICAgID4gICAgIEZpeGVzOiA0YTliMDkzM2JkZmMoIlBDSTpodjpVc2UgZGV2 aWNlIHNlcmlhbCBudW1iZXIgYXMgUENJIGRvbWFpbiIpCj4gICAgID4gICAgIAo+ICAgICA+ICAg ICBGaXhlczogNGE5YjA5MzNiZGZjICgiUENJOiBodjogVXNlIGRldmljZSBzZXJpYWwgbnVtYmVy IGFzIFBDSSBkb21haW4iKQo+ICAgICA+ICAgICBTcmlkaHIgPj4geWVzCj4gICAgID4gICAgIAo+ ICAgICA+ICAgICBJIGFza2VkIHlvdSBhbiBleHBsaWNpdCBxdWVzdGlvbi4gQ29tbWl0IGFib3Zl IHdhcyBhZGRlZCBmb3IgYSByZWFzb24KPiAgICAgPiAgICAgSSBhc3N1bWUuIFRoaXMgcGF0Y2gg aW1wbGllcyB0aGF0IGtlcm5lbCBoYXMgYmVlbiBicm9rZW4gc2luY2UgdjQuMTEKPiAgICAgPiAg ICAgd2hpY2ggaXMgYWxtb3N0IGEgeWVhciBhZ28gYW5kIG5vYm9keSBldmVyeSBub3RpY2VkID8g T3IgdGhlcmUgYXJlCj4gICAgID4gICAgIHN5c3RlbXMgd2hlcmUgY29tbWl0IGFib3ZlIGlzIF9u ZWNlc3NhcnlfIGFuZCB0aGlzIHBhdGNoIHdvdWxkIGJyZWFrCj4gICAgID4gICAgIHRoZW0gPwo+ ICAgICA+ICAgICAKPiAgICAgPiAgICAgSSB3YW50IGEgZGV0YWlsZWQgZXhwbGFuYXRpb24gdGhh dCBoaWdobGlnaHRzICp3aHkqIGl0IGlzIHNhZmUgdG8gYXBwbHkKPiAgICAgPiAgICAgdGhpcyBw YXRjaCBhbmQgc2VuZCBpdCB0byBzdGFibGUga2VybmVscywgY29tbWl0IGxvZyBhYm92ZSB3b24n dCBkby4KPiAgICAgPiAgICAgCj4gICAgID4gICAgIFNyaWRoYXI+PiBIeXBlclYgcHJvdmlkZXMg YSB1bmlxdWUgZG9tYWluIElEIGZvciBQQ0kgQlVTLiBCdXQgaXQgaXMgbW9kaWZpZWQgYnkgdGhl IGNoaWxkCj4gICAgID4gICAgIGRldmljZSB3aGVuIGl0IGlzIGFkZGVkLiBUaGlzIGNhbm5vdCBw cm9kdWNlIGEgdW5pcXVlIGRvbWFpbiBJRCBhbGwgdGhlIHRpbWUuCj4gICAgID4gICAgIEhlcmUg aW4gdGhlIGJ1Zywgd2Ugc2VlIHRoZSBjb2xsaXNpb24gYmV0d2VlbiB0aGUgc2VyaWFsIG51bWJl ciBhbmQgYWxyZWFkeQo+ICAgICA+ICAgICBleGlzdGluZyBQQ0kgYnVzLiBUaGUgY2xlYW5lciB3 YXkgaXMgbmV2ZXIgdG91Y2ggdGhlIGRvbWFpbiBJRCBwcm92aWRlZCBieQo+ICAgICA+ICAgICBo eXBlclYgZHVyaW5nIHRoZSBQQ0kgYnVzIGNyZWF0aW9uLiBBcyBsb25nIGFzIGh5cGVyViBtYWtl IHN1cmUgaXQgcHJvdmlkZXMgYQo+ICAgICA+ICAgICB1bmlxdWUgZG9tYWluIElEIGZvciB0aGUg UENJIGZvciBhIFZNIGl0IHdpbGwgbm90IGJyZWFrLCBhbmQgSHlwZXJWIHdpbGwKPiAgICAgPiAg ICAgZ3VhcmFudGVlcyB0aGF0IHRoZSBkb21haW4gZm9yIHRoZSBQQ0kgYnVzIGZvciBhIGdpdmVu IFZNIHdpbGwgYmUgYWx3YXlzIHVuaXF1ZS4KPiAgICAgPiAgICAgVGhlIG9yaWdpbmFsIHBhdGNo IHdhcyBhbHNvIGludGVuZGluZyB0byBoYXZlIGEgdW5pcXVlIGRvbWFpbiBJRCBmb3IgdGhlIFBD SQo+ICAgICA+ICAgICBidXMsIGJ5IHRha2luZyB0aGUgc2VyaWFsIG51bWJlciBvZiB0aGUgZGV2 aWNlLCBidXQgaXQgaXMgbm90IHN1ZmZpY2llbnQsIHdoZW4KPiAgICAgPiAgICAgdGhlIGRldmlj ZSBzZXJpYWwgbnVtYmVyIGlzIG51bWJlciB3aGljaCBpcyB0aGUgZG9tYWluIElEIG9mIHRoZSBl eGlzdGluZyBQQ0kKPiAgICAgPiAgICAgYnVzLiAgV2l0aCB0aGUgY3VycmVudCBrZXJuZWwgd2Ug Y2FuIHJlcHJvIHRoaXMgaXNzdWUgYnkgYWRkaW5nIGEgZGV2aWNlIHdpdGggYQo+ICAgICA+ICAg ICBzZXJpYWwgbnVtYmVyIG1hdGNoaW5nIHRoZSBleGlzdGluZyBQQ0kgYnVzIGRvbWFpbiBpZC4g KGluIHRoaXMgY2FzZSB0aGF0Cj4gICAgID4gICAgIGhhcHBlbnMgdG8gYmUgemVybykuCj4gICAg ID4gICAgIAo+ICAgICA+ICAgICAKPiAgICAgPiAgICAgVGhhbmtzLAo+ICAgICA+ICAgICBMb3Jl bnpvCj4gICAgID4gICAgIAo+ICAgICA+ICAgICBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+ ICAgICA+ICAgICBTaWduZWQtb2ZmLWJ5OiBTcmlkaGFyIFBpdGNoYWkgPHNycGl0Y2hhQG1pY3Jv c29mdC5jb20+Cj4gICAgID4gICAgIC0tLQo+ICAgICA+ICAgICBDaGFuZ2VzIGluIHYzOgo+ICAg ICA+ICAgICAqIGZpeCB0aGUgY29tbWl0IGNvbW1lbnQuIFtLWSBTcmluaXZhc2FuLCBNaWNoYWVs IEtlbGxleV0KPiAgICAgPiAgICAgLS0tCj4gICAgID4gICAgICAgZHJpdmVycy9wY2kvaG9zdC9w Y2ktaHlwZXJ2LmMgfCAxMSAtLS0tLS0tLS0tLQo+ICAgICA+ICAgICAgIDEgZmlsZSBjaGFuZ2Vk LCAxMSBkZWxldGlvbnMoLSkKPiAgICAgPiAgICAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hv c3QvcGNpLWh5cGVydi5jIGIvZHJpdmVycy9wY2kvaG9zdC9wY2ktaHlwZXJ2LmMKPiAgICAgPiAg ICAgaW5kZXggMmZhZjM4ZS4uYWM2N2U1NiAxMDA2NDQKPiAgICAgPiAgICAgLS0tIGEvZHJpdmVy cy9wY2kvaG9zdC9wY2ktaHlwZXJ2LmMKPiAgICAgPiAgICAgKysrIGIvZHJpdmVycy9wY2kvaG9z dC9wY2ktaHlwZXJ2LmMKPiAgICAgPiAgICAgQEAgLTE1MTgsMTcgKzE1MTgsNiBAQCBzdGF0aWMg c3RydWN0IGh2X3BjaV9kZXYgKm5ld19wY2ljaGlsZF9kZXZpY2Uoc3RydWN0IGh2X3BjaWJ1c19k ZXZpY2UgKmhidXMsCj4gICAgID4gICAgICAgCWdldF9wY2ljaGlsZChocGRldiwgaHZfcGNpZGV2 X3JlZl9jaGlsZGxpc3QpOwo+ICAgICA+ICAgICAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmaGJ1cy0+ ZGV2aWNlX2xpc3RfbG9jaywgZmxhZ3MpOwo+ICAgICA+ICAgICAgIAo+ICAgICA+ICAgICAtCS8q Cj4gICAgID4gICAgIC0JICogV2hlbiBhIGRldmljZSBpcyBiZWluZyBhZGRlZCB0byB0aGUgYnVz LCB3ZSBzZXQgdGhlIFBDSSBkb21haW4KPiAgICAgPiAgICAgLQkgKiBudW1iZXIgdG8gYmUgdGhl IGRldmljZSBzZXJpYWwgbnVtYmVyLCB3aGljaCBpcyBub24temVybyBhbmQKPiAgICAgPiAgICAg LQkgKiB1bmlxdWUgb24gdGhlIHNhbWUgVk0uICBUaGUgc2VyaWFsIG51bWJlcnMgc3RhcnQgd2l0 aCAxLCBhbmQKPiAgICAgPiAgICAgLQkgKiBpbmNyZWFzZSBieSAxIGZvciBlYWNoIGRldmljZS4g IFNvIGRldmljZSBuYW1lcyBpbmNsdWRpbmcgdGhpcwo+ICAgICA+ICAgICAtCSAqIGNhbiBoYXZl IHNob3J0ZXIgbmFtZXMgdGhhbiBiYXNlZCBvbiB0aGUgYnVzIGluc3RhbmNlIFVVSUQuCj4gICAg ID4gICAgIC0JICogT25seSB0aGUgZmlyc3QgZGV2aWNlIHNlcmlhbCBudW1iZXIgaXMgdXNlZCBm b3IgZG9tYWluLCBzbyB0aGUKPiAgICAgPiAgICAgLQkgKiBkb21haW4gbnVtYmVyIHdpbGwgbm90 IGNoYW5nZSBhZnRlciB0aGUgZmlyc3QgZGV2aWNlIGlzIGFkZGVkLgo+ICAgICA+ICAgICAtCSAq Lwo+ICAgICA+ICAgICAtCWlmIChsaXN0X2VtcHR5KCZoYnVzLT5jaGlsZHJlbikpCj4gICAgID4g ICAgIC0JCWhidXMtPnN5c2RhdGEuZG9tYWluID0gZGVzYy0+c2VyOwo+ICAgICA+ICAgICAgIAls aXN0X2FkZF90YWlsKCZocGRldi0+bGlzdF9lbnRyeSwgJmhidXMtPmNoaWxkcmVuKTsKPiAgICAg PiAgICAgICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGJ1cy0+ZGV2aWNlX2xpc3RfbG9jaywg ZmxhZ3MpOwo+ICAgICA+ICAgICAgIAlyZXR1cm4gaHBkZXY7Cj4gICAgID4gICAgIC0tCj4gICAg ID4gICAgIDIuNy40IAo+ICAgICA+ICAgICAKPiAgICAgPiAgICAgCj4gICAgID4gCj4gICAgIAo+ IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkZXZlbCBt YWlsaW5nIGxpc3QKZGV2ZWxAbGludXhkcml2ZXJwcm9qZWN0Lm9yZwpodHRwOi8vZHJpdmVyZGV2 LmxpbnV4ZHJpdmVycHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcml2ZXJkZXYtZGV2ZWwK