From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-1542408-1521026184-2-3974674725937005723 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, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='org', MailFrom='org' X-Spam-charsets: plain='us-ascii' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1521026183; b=WU9XI1cyRVZEu6VS4hhuRfLVxLDu+iTr+hjYaFGtNFEeqRe SsxyC7EMtfDmaPvdaZh5hQmXDGnWx0ZpzMuNm4yMmb/28FB947DG59o/lEFPFQp6 PKKPi2DmrT4VsjYzJRwEpAQ3VQdQ6fPbdIucRtD7ibXe6owajGi2jFm+bN8MiLd4 T/qEeHFrqpVEfay8TW3mJpXNX8Emn+hW5trgPc+RBZUdHb2r9G96qiVXd5JgLWtE ryxG5aF6tn3XElc+H5wEVWAXNnEBjx+J+wuBYozFm6bqG0Ar4TbZugnIW/bRuR1+ tOp4k64um1bS4vjhgPrHU63pYC1Yd96ZRjYgPZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to:sender :list-id; s=arctest; t=1521026183; bh=uPL7EcWlXOpYpJc1O1v/w63Gfi 6+2S8Q1h54TmqUpGY=; b=PPoC3d0vvd2jotHbN2ezrN1CAZVocIjM7fH5P2jd8m fHCGxpOoozTSHrfovLRutjz6No6CY+FJzoeuVfbf8uf/hpxerRseyxtZ7rP5dJJb Gkl7xgCqm1xWOIUd2BzwiTPPb3LGp2+b9QK0rCOI6YETS9zY4BN1I2a4ZPDU8dYh swdvLnuBL1RNBa8v/rV6mHF5V3ZkdmGGWsi2faZO5LHH5GqKqVRzPTlXYLB2nRUz Pij4mHOsjr+CNfs6oKOAlEJ9VLoYFYdyD9LoCdVZsIQ90rRCw4oTfJ7BitCt2QGW Tl6g03X/McsMF2RA6/qVwbGnDTe21cWerSDnW1AjJ0hw== ARC-Authentication-Results: i=1; mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Authentication-Results: mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=linuxfoundation.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=linuxfoundation.org header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751596AbeCNLQI (ORCPT ); Wed, 14 Mar 2018 07:16:08 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:46068 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751289AbeCNLQH (ORCPT ); Wed, 14 Mar 2018 07:16:07 -0400 Date: Wed, 14 Mar 2018 12:16:05 +0100 From: Greg Kroah-Hartman To: Heikki Krogerus Cc: Hans de Goede , Darren Hart , Andy Shevchenko , MyungJoo Ham , Chanwoo Choi , Mathias Nyman , Guenter Roeck , Jun Li , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org Subject: Re: [PATCH v7 01/12] drivers: base: Unified device connection lookup Message-ID: <20180314111605.GA21241@kroah.com> References: <20180312143431.82396-1-heikki.krogerus@linux.intel.com> <20180312143431.82396-2-heikki.krogerus@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180312143431.82396-2-heikki.krogerus@linux.intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Mon, Mar 12, 2018 at 05:34:20PM +0300, Heikki Krogerus wrote: > Several frameworks - clk, gpio, phy, pmw, etc. - maintain > lookup tables for describing connections and provide custom > API for handling them. This introduces a single generic > lookup table and API for the connections. > > The motivation for this commit is centralizing the > connection lookup, but the goal is to ultimately extract the > connection descriptions also from firmware by using the > fwnode_graph_* functions and other mechanisms that are > available. > > Reviewed-by: Hans de Goede > Reviewed-by: Andy Shevchenko > Signed-off-by: Heikki Krogerus > --- > Changes in v7: > - API naming improvements suggested by Greg > - Prototypes to device.h, also suggested by Greg > - I removed the DEVCON() macro as it was not used yet and it needs to be > rewritten > > Changes in v6: > -Fix data and match arguments being swapped in __device_find_connection() > call in device_find_connection() (as noticed by Jun Li) > > Changes in v5: > -Add missing documentation for @list struct devcon member > > Changes in v4: > -Add Andy's Reviewed-by > > Changes in v3: > -Various spelling and gramar fixes in the docs pointed out by Randy Dunlap > > Changes in v2: > -Add a (struct devcon) cast to the DEVCON() macro > --- > Documentation/driver-api/device_connection.rst | 43 ++++++++ > drivers/base/Makefile | 3 +- > drivers/base/devcon.c | 141 +++++++++++++++++++++++++ > include/linux/device.h | 22 ++++ > 4 files changed, 208 insertions(+), 1 deletion(-) > create mode 100644 Documentation/driver-api/device_connection.rst > create mode 100644 drivers/base/devcon.c > > diff --git a/Documentation/driver-api/device_connection.rst b/Documentation/driver-api/device_connection.rst > new file mode 100644 > index 000000000000..affbc5566ab0 > --- /dev/null > +++ b/Documentation/driver-api/device_connection.rst > @@ -0,0 +1,43 @@ > +================== > +Device connections > +================== > + > +Introduction > +------------ > + > +Devices often have connections to other devices that are outside of the direct > +child/parent relationship. A serial or network communication controller, which > +could be a PCI device, may need to be able to get a reference to its PHY > +component, which could be attached for example to the I2C bus. Some device > +drivers need to be able to control the clocks or the GPIOs for their devices, > +and so on. > + > +Device connections are generic descriptions of any type of connection between > +two separate devices. > + > +Device connections alone do not create a dependency between the two devices. > +They are only descriptions which are not tied to either of the devices directly. > +A dependency between the two devices exists only if one of the two endpoint > +devices requests a reference to the other. The descriptions themselves can be > +defined in firmware (not yet supported) or they can be built-in. > + > +Usage > +----- > + > +Device connections should exist before device ``->probe`` callback is called for > +either endpoint device in the description. If the connections are defined in > +firmware, this is not a problem. It should be considered if the connection > +descriptions are "built-in", and need to be added separately. > + > +The connection description consists of the names of the two devices with the > +connection, i.e. the endpoints, and unique identifier for the connection which > +is needed if there are multiple connections between the two devices. > + > +After a description exists, the devices in it can request reference to the other > +endpoint device, or they can request the description itself. > + > +API > +--- > + > +.. kernel-doc:: drivers/base/devcon.c > + : functions: device_connection_find_match device_connection_find device_connection_add device_connection_remove > diff --git a/drivers/base/Makefile b/drivers/base/Makefile > index e32a52490051..12a7f64d35a9 100644 > --- a/drivers/base/Makefile > +++ b/drivers/base/Makefile > @@ -5,7 +5,8 @@ obj-y := component.o core.o bus.o dd.o syscore.o \ > driver.o class.o platform.o \ > cpu.o firmware.o init.o map.o devres.o \ > attribute_container.o transport_class.o \ > - topology.o container.o property.o cacheinfo.o > + topology.o container.o property.o cacheinfo.o \ > + devcon.o > obj-$(CONFIG_DEVTMPFS) += devtmpfs.o > obj-$(CONFIG_DMA_CMA) += dma-contiguous.o > obj-y += power/ > diff --git a/drivers/base/devcon.c b/drivers/base/devcon.c > new file mode 100644 > index 000000000000..e783c2c2ed1a > --- /dev/null > +++ b/drivers/base/devcon.c > @@ -0,0 +1,141 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/** > + * Device connections > + * > + * Copyright (C) 2018 Intel Corporation > + * Author: Heikki Krogerus > + */ > + > +#include > + > +static DEFINE_MUTEX(devcon_lock); > +static LIST_HEAD(devcon_list); > + > +/** > + * device_connection_find_match - Find physical connection to a device > + * @dev: Device with the connection > + * @con_id: Identifier for the connection > + * @data: Data for the match function > + * @match: Function to check and convert the connection description > + * > + * Find a connection with unique identifier @con_id between @dev and another > + * device. @match will be used to convert the connection description to data the > + * caller is expecting to be returned. > + */ > +void *device_connection_find_match(struct device *dev, const char *con_id, > + void *data, > + void *(*match)(struct device_connection *con, > + int ep, void *data)) > +{ > + const char *devname = dev_name(dev); > + struct device_connection *con; > + void *ret = NULL; > + int ep; > + > + if (!match) > + return NULL; > + > + rcu_read_lock(); Wait, why are you using rcu at all for this? This is not a "heavy" operation that you need to care about speed for, right? Why get rcu involved at all in this type of thing? Yes, the links in the driver core seem to be using rcu, which I didn't notice until right now, and I can't remember why or when that happened. Let's not make this more complex than it has to be please. Sorry I missed this the last review cycles. greg k-h From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v7,01/12] drivers: base: Unified device connection lookup From: Greg Kroah-Hartman Message-Id: <20180314111605.GA21241@kroah.com> Date: Wed, 14 Mar 2018 12:16:05 +0100 To: Heikki Krogerus Cc: Hans de Goede , Darren Hart , Andy Shevchenko , MyungJoo Ham , Chanwoo Choi , Mathias Nyman , Guenter Roeck , Jun Li , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-ID: T24gTW9uLCBNYXIgMTIsIDIwMTggYXQgMDU6MzQ6MjBQTSArMDMwMCwgSGVpa2tpIEtyb2dlcnVz IHdyb3RlOgo+IFNldmVyYWwgZnJhbWV3b3JrcyAtIGNsaywgZ3BpbywgcGh5LCBwbXcsIGV0Yy4g LSBtYWludGFpbgo+IGxvb2t1cCB0YWJsZXMgZm9yIGRlc2NyaWJpbmcgY29ubmVjdGlvbnMgYW5k IHByb3ZpZGUgY3VzdG9tCj4gQVBJIGZvciBoYW5kbGluZyB0aGVtLiBUaGlzIGludHJvZHVjZXMg YSBzaW5nbGUgZ2VuZXJpYwo+IGxvb2t1cCB0YWJsZSBhbmQgQVBJIGZvciB0aGUgY29ubmVjdGlv bnMuCj4gCj4gVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgY29tbWl0IGlzIGNlbnRyYWxpemluZyB0 aGUKPiBjb25uZWN0aW9uIGxvb2t1cCwgYnV0IHRoZSBnb2FsIGlzIHRvIHVsdGltYXRlbHkgZXh0 cmFjdCB0aGUKPiBjb25uZWN0aW9uIGRlc2NyaXB0aW9ucyBhbHNvIGZyb20gZmlybXdhcmUgYnkg dXNpbmcgdGhlCj4gZndub2RlX2dyYXBoXyogZnVuY3Rpb25zIGFuZCBvdGhlciBtZWNoYW5pc21z IHRoYXQgYXJlCj4gYXZhaWxhYmxlLgo+IAo+IFJldmlld2VkLWJ5OiBIYW5zIGRlIEdvZWRlIDxo ZGVnb2VkZUByZWRoYXQuY29tPgo+IFJldmlld2VkLWJ5OiBBbmR5IFNoZXZjaGVua28gPGFuZHku c2hldmNoZW5rb0BnbWFpbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSGVpa2tpIEtyb2dlcnVzIDxo ZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgo+IC0tLQo+IENoYW5nZXMgaW4gdjc6Cj4g LSBBUEkgbmFtaW5nIGltcHJvdmVtZW50cyBzdWdnZXN0ZWQgYnkgR3JlZwo+IC0gUHJvdG90eXBl cyB0byBkZXZpY2UuaCwgYWxzbyBzdWdnZXN0ZWQgYnkgR3JlZwo+IC0gSSByZW1vdmVkIHRoZSBE RVZDT04oKSBtYWNybyBhcyBpdCB3YXMgbm90IHVzZWQgeWV0IGFuZCBpdCBuZWVkcyB0byBiZQo+ ICAgcmV3cml0dGVuCj4gCj4gQ2hhbmdlcyBpbiB2NjoKPiAtRml4IGRhdGEgYW5kIG1hdGNoIGFy Z3VtZW50cyBiZWluZyBzd2FwcGVkIGluIF9fZGV2aWNlX2ZpbmRfY29ubmVjdGlvbigpCj4gIGNh bGwgaW4gZGV2aWNlX2ZpbmRfY29ubmVjdGlvbigpIChhcyBub3RpY2VkIGJ5IEp1biBMaSkKPiAK PiBDaGFuZ2VzIGluIHY1Ogo+IC1BZGQgbWlzc2luZyBkb2N1bWVudGF0aW9uIGZvciBAbGlzdCBz dHJ1Y3QgZGV2Y29uIG1lbWJlcgo+IAo+IENoYW5nZXMgaW4gdjQ6Cj4gLUFkZCBBbmR5J3MgUmV2 aWV3ZWQtYnkKPiAKPiBDaGFuZ2VzIGluIHYzOgo+IC1WYXJpb3VzIHNwZWxsaW5nIGFuZCBncmFt YXIgZml4ZXMgaW4gdGhlIGRvY3MgcG9pbnRlZCBvdXQgYnkgUmFuZHkgRHVubGFwCj4gCj4gQ2hh bmdlcyBpbiB2MjoKPiAtQWRkIGEgKHN0cnVjdCBkZXZjb24pIGNhc3QgdG8gdGhlIERFVkNPTigp IG1hY3JvCj4gLS0tCj4gIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kZXZpY2VfY29ubmVjdGlv bi5yc3QgfCAgNDMgKysrKysrKysKPiAgZHJpdmVycy9iYXNlL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2Jhc2UvZGV2Y29uLmMgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTQxICsrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVk ZS9saW51eC9kZXZpY2UuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArKysrCj4gIDQg ZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kZXZpY2VfY29ubmVjdGlvbi5y c3QKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYmFzZS9kZXZjb24uYwo+IAo+IGRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZGV2aWNlX2Nvbm5lY3Rpb24ucnN0IGIv RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RldmljZV9jb25uZWN0aW9uLnJzdAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hZmZiYzU1NjZhYjAKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RldmljZV9jb25uZWN0aW9u LnJzdAo+IEBAIC0wLDAgKzEsNDMgQEAKPiArPT09PT09PT09PT09PT09PT09Cj4gK0RldmljZSBj b25uZWN0aW9ucwo+ICs9PT09PT09PT09PT09PT09PT0KPiArCj4gK0ludHJvZHVjdGlvbgo+ICst LS0tLS0tLS0tLS0KPiArCj4gK0RldmljZXMgb2Z0ZW4gaGF2ZSBjb25uZWN0aW9ucyB0byBvdGhl ciBkZXZpY2VzIHRoYXQgYXJlIG91dHNpZGUgb2YgdGhlIGRpcmVjdAo+ICtjaGlsZC9wYXJlbnQg cmVsYXRpb25zaGlwLiBBIHNlcmlhbCBvciBuZXR3b3JrIGNvbW11bmljYXRpb24gY29udHJvbGxl ciwgd2hpY2gKPiArY291bGQgYmUgYSBQQ0kgZGV2aWNlLCBtYXkgbmVlZCB0byBiZSBhYmxlIHRv IGdldCBhIHJlZmVyZW5jZSB0byBpdHMgUEhZCj4gK2NvbXBvbmVudCwgd2hpY2ggY291bGQgYmUg YXR0YWNoZWQgZm9yIGV4YW1wbGUgdG8gdGhlIEkyQyBidXMuIFNvbWUgZGV2aWNlCj4gK2RyaXZl cnMgbmVlZCB0byBiZSBhYmxlIHRvIGNvbnRyb2wgdGhlIGNsb2NrcyBvciB0aGUgR1BJT3MgZm9y IHRoZWlyIGRldmljZXMsCj4gK2FuZCBzbyBvbi4KPiArCj4gK0RldmljZSBjb25uZWN0aW9ucyBh cmUgZ2VuZXJpYyBkZXNjcmlwdGlvbnMgb2YgYW55IHR5cGUgb2YgY29ubmVjdGlvbiBiZXR3ZWVu Cj4gK3R3byBzZXBhcmF0ZSBkZXZpY2VzLgo+ICsKPiArRGV2aWNlIGNvbm5lY3Rpb25zIGFsb25l IGRvIG5vdCBjcmVhdGUgYSBkZXBlbmRlbmN5IGJldHdlZW4gdGhlIHR3byBkZXZpY2VzLgo+ICtU aGV5IGFyZSBvbmx5IGRlc2NyaXB0aW9ucyB3aGljaCBhcmUgbm90IHRpZWQgdG8gZWl0aGVyIG9m IHRoZSBkZXZpY2VzIGRpcmVjdGx5Lgo+ICtBIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvIGRl dmljZXMgZXhpc3RzIG9ubHkgaWYgb25lIG9mIHRoZSB0d28gZW5kcG9pbnQKPiArZGV2aWNlcyBy ZXF1ZXN0cyBhIHJlZmVyZW5jZSB0byB0aGUgb3RoZXIuIFRoZSBkZXNjcmlwdGlvbnMgdGhlbXNl bHZlcyBjYW4gYmUKPiArZGVmaW5lZCBpbiBmaXJtd2FyZSAobm90IHlldCBzdXBwb3J0ZWQpIG9y IHRoZXkgY2FuIGJlIGJ1aWx0LWluLgo+ICsKPiArVXNhZ2UKPiArLS0tLS0KPiArCj4gK0Rldmlj ZSBjb25uZWN0aW9ucyBzaG91bGQgZXhpc3QgYmVmb3JlIGRldmljZSBgYC0+cHJvYmVgYCBjYWxs YmFjayBpcyBjYWxsZWQgZm9yCj4gK2VpdGhlciBlbmRwb2ludCBkZXZpY2UgaW4gdGhlIGRlc2Ny aXB0aW9uLiBJZiB0aGUgY29ubmVjdGlvbnMgYXJlIGRlZmluZWQgaW4KPiArZmlybXdhcmUsIHRo aXMgaXMgbm90IGEgcHJvYmxlbS4gSXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaWYgdGhlIGNvbm5l Y3Rpb24KPiArZGVzY3JpcHRpb25zIGFyZSAiYnVpbHQtaW4iLCBhbmQgbmVlZCB0byBiZSBhZGRl ZCBzZXBhcmF0ZWx5Lgo+ICsKPiArVGhlIGNvbm5lY3Rpb24gZGVzY3JpcHRpb24gY29uc2lzdHMg b2YgdGhlIG5hbWVzIG9mIHRoZSB0d28gZGV2aWNlcyB3aXRoIHRoZQo+ICtjb25uZWN0aW9uLCBp LmUuIHRoZSBlbmRwb2ludHMsIGFuZCB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbm5lY3Rp b24gd2hpY2gKPiAraXMgbmVlZGVkIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb25uZWN0aW9ucyBi ZXR3ZWVuIHRoZSB0d28gZGV2aWNlcy4KPiArCj4gK0FmdGVyIGEgZGVzY3JpcHRpb24gZXhpc3Rz LCB0aGUgZGV2aWNlcyBpbiBpdCBjYW4gcmVxdWVzdCByZWZlcmVuY2UgdG8gdGhlIG90aGVyCj4g K2VuZHBvaW50IGRldmljZSwgb3IgdGhleSBjYW4gcmVxdWVzdCB0aGUgZGVzY3JpcHRpb24gaXRz ZWxmLgo+ICsKPiArQVBJCj4gKy0tLQo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvYmFz ZS9kZXZjb24uYwo+ICsgICA6IGZ1bmN0aW9uczogZGV2aWNlX2Nvbm5lY3Rpb25fZmluZF9tYXRj aCBkZXZpY2VfY29ubmVjdGlvbl9maW5kIGRldmljZV9jb25uZWN0aW9uX2FkZCBkZXZpY2VfY29u bmVjdGlvbl9yZW1vdmUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL01ha2VmaWxlIGIvZHJp dmVycy9iYXNlL01ha2VmaWxlCj4gaW5kZXggZTMyYTUyNDkwMDUxLi4xMmE3ZjY0ZDM1YTkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9iYXNlL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9iYXNlL01h a2VmaWxlCj4gQEAgLTUsNyArNSw4IEBAIG9iai15CQkJOj0gY29tcG9uZW50Lm8gY29yZS5vIGJ1 cy5vIGRkLm8gc3lzY29yZS5vIFwKPiAgCQkJICAgZHJpdmVyLm8gY2xhc3MubyBwbGF0Zm9ybS5v IFwKPiAgCQkJICAgY3B1Lm8gZmlybXdhcmUubyBpbml0Lm8gbWFwLm8gZGV2cmVzLm8gXAo+ICAJ CQkgICBhdHRyaWJ1dGVfY29udGFpbmVyLm8gdHJhbnNwb3J0X2NsYXNzLm8gXAo+IC0JCQkgICB0 b3BvbG9neS5vIGNvbnRhaW5lci5vIHByb3BlcnR5Lm8gY2FjaGVpbmZvLm8KPiArCQkJICAgdG9w b2xvZ3kubyBjb250YWluZXIubyBwcm9wZXJ0eS5vIGNhY2hlaW5mby5vIFwKPiArCQkJICAgZGV2 Y29uLm8KPiAgb2JqLSQoQ09ORklHX0RFVlRNUEZTKQkrPSBkZXZ0bXBmcy5vCj4gIG9iai0kKENP TkZJR19ETUFfQ01BKSArPSBkbWEtY29udGlndW91cy5vCj4gIG9iai15CQkJKz0gcG93ZXIvCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9kZXZjb24uYyBiL2RyaXZlcnMvYmFzZS9kZXZjb24u Ywo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lNzgzYzJjMmVk MWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9iYXNlL2RldmNvbi5jCj4gQEAgLTAs MCArMSwxNDEgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoq Cj4gKyAqIERldmljZSBjb25uZWN0aW9ucwo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTgg SW50ZWwgQ29ycG9yYXRpb24KPiArICogQXV0aG9yOiBIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5r cm9nZXJ1c0BsaW51eC5pbnRlbC5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Rl dmljZS5oPgo+ICsKPiArc3RhdGljIERFRklORV9NVVRFWChkZXZjb25fbG9jayk7Cj4gK3N0YXRp YyBMSVNUX0hFQUQoZGV2Y29uX2xpc3QpOwo+ICsKPiArLyoqCj4gKyAqIGRldmljZV9jb25uZWN0 aW9uX2ZpbmRfbWF0Y2ggLSBGaW5kIHBoeXNpY2FsIGNvbm5lY3Rpb24gdG8gYSBkZXZpY2UKPiAr ICogQGRldjogRGV2aWNlIHdpdGggdGhlIGNvbm5lY3Rpb24KPiArICogQGNvbl9pZDogSWRlbnRp ZmllciBmb3IgdGhlIGNvbm5lY3Rpb24KPiArICogQGRhdGE6IERhdGEgZm9yIHRoZSBtYXRjaCBm dW5jdGlvbgo+ICsgKiBAbWF0Y2g6IEZ1bmN0aW9uIHRvIGNoZWNrIGFuZCBjb252ZXJ0IHRoZSBj b25uZWN0aW9uIGRlc2NyaXB0aW9uCj4gKyAqCj4gKyAqIEZpbmQgYSBjb25uZWN0aW9uIHdpdGgg dW5pcXVlIGlkZW50aWZpZXIgQGNvbl9pZCBiZXR3ZWVuIEBkZXYgYW5kIGFub3RoZXIKPiArICog ZGV2aWNlLiBAbWF0Y2ggd2lsbCBiZSB1c2VkIHRvIGNvbnZlcnQgdGhlIGNvbm5lY3Rpb24gZGVz Y3JpcHRpb24gdG8gZGF0YSB0aGUKPiArICogY2FsbGVyIGlzIGV4cGVjdGluZyB0byBiZSByZXR1 cm5lZC4KPiArICovCj4gK3ZvaWQgKmRldmljZV9jb25uZWN0aW9uX2ZpbmRfbWF0Y2goc3RydWN0 IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpjb25faWQsCj4gKwkJCSAgICAgICB2b2lkICpkYXRh LAo+ICsJCQkgICAgICAgdm9pZCAqKCptYXRjaCkoc3RydWN0IGRldmljZV9jb25uZWN0aW9uICpj b24sCj4gKwkJCQkJICAgICAgaW50IGVwLCB2b2lkICpkYXRhKSkKPiArewo+ICsJY29uc3QgY2hh ciAqZGV2bmFtZSA9IGRldl9uYW1lKGRldik7Cj4gKwlzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24g KmNvbjsKPiArCXZvaWQgKnJldCA9IE5VTEw7Cj4gKwlpbnQgZXA7Cj4gKwo+ICsJaWYgKCFtYXRj aCkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7CgpXYWl0LCB3aHkg YXJlIHlvdSB1c2luZyByY3UgYXQgYWxsIGZvciB0aGlzPyAgVGhpcyBpcyBub3QgYSAiaGVhdnki Cm9wZXJhdGlvbiB0aGF0IHlvdSBuZWVkIHRvIGNhcmUgYWJvdXQgc3BlZWQgZm9yLCByaWdodD8g IFdoeSBnZXQgcmN1Cmludm9sdmVkIGF0IGFsbCBpbiB0aGlzIHR5cGUgb2YgdGhpbmc/CgpZZXMs IHRoZSBsaW5rcyBpbiB0aGUgZHJpdmVyIGNvcmUgc2VlbSB0byBiZSB1c2luZyByY3UsIHdoaWNo IEkgZGlkbid0Cm5vdGljZSB1bnRpbCByaWdodCBub3csIGFuZCBJIGNhbid0IHJlbWVtYmVyIHdo eSBvciB3aGVuIHRoYXQgaGFwcGVuZWQuCkxldCdzIG5vdCBtYWtlIHRoaXMgbW9yZSBjb21wbGV4 IHRoYW4gaXQgaGFzIHRvIGJlIHBsZWFzZS4KClNvcnJ5IEkgbWlzc2VkIHRoaXMgdGhlIGxhc3Qg cmV2aWV3IGN5Y2xlcy4KCmdyZWcgay1oCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBh IG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZv IGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK