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 X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63B93C04E87 for ; Mon, 20 May 2019 11:27:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3589021707 for ; Mon, 20 May 2019 11:27:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Ob+eKPlK" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730727AbfETL1S (ORCPT ); Mon, 20 May 2019 07:27:18 -0400 Received: from mail-ot1-f67.google.com ([209.85.210.67]:36037 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732739AbfETL1S (ORCPT ); Mon, 20 May 2019 07:27:18 -0400 Received: by mail-ot1-f67.google.com with SMTP id c3so12634947otr.3 for ; Mon, 20 May 2019 04:27:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=gl8p5HmOo32Wp14Ae+7sQEvfQ5n8x/dx1BGblxAS4NQ=; b=Ob+eKPlKwvth41kOkgX0/b4zhZuzFd3xCf9C8qpbfdaEV63qMDTzNlWuZ191mu/0QC sXR9dVXgxekqaUIa5tecP71HYOpBo0rMXEZS8zVqR1opZsH3umfL3WKIhIQ44Tk1hm64 yMsFlCevWabXt1FzEwAE0sV1mR8dKPD3uSZar7L0bSEiRc/CuY/peLwPPXln0oqRnjrM g41JDd18L0VKlA2MBFVSjd8qWpVT4gsTQEsHw7fGTCUCKo3ehimEgNqUnbKhf1xqOaCv GqAXWwqtmC+1uOBXbU0BkV6T1b1fYa+slsHYdBsqUTzemPDVfte3mG/6iR0uRSRyDopf H/qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=gl8p5HmOo32Wp14Ae+7sQEvfQ5n8x/dx1BGblxAS4NQ=; b=PUCVCkXyQEU29YoJVJ+EoG7DqBp24lB9CqQJjTyVpTIEoLu4fLLemOGtdsF0p3MKWJ GWMX70G9ARToXuEifPYu4g4J6sS2jPR15TPiPOK0whpV0pj3eT8YbOqdWCITrb3QEI7g vqnO1RahS58Fvx55Po5d8uwt/M15Oo7z5DN4oqzyRVtl66NIRjKUOSwtlptqIDD0n5IS RwKwT8tLWzskFMQU+nQVR8QZZVlwXhpoS/Z9UJaEn/Twcn8gJLujWm5P2cC4spuf2urk fAJJTQOAygEvBFfusGK0HeLnnHU+P3zYrvGq6b9L3Db9HL83WmhGK+Oa81CYWoyDBxCM yavg== X-Gm-Message-State: APjAAAUJLZjA3SiGyx1KckNLmIo19cS5GMuoGaKHNJdgFWnL09ljQByV 4TP80ueQROkYQifxF7JT6AojUmA9wSTavJ5t9j1T1g== X-Google-Smtp-Source: APXvYqzvRh9+1kmrlhsy7vDYW7hNBG9CEz1jiGKfO/pK4VIQ2LnHcrcRjy0ekFbQeSvJmbUMT47w0xBoC9irHouqomY= X-Received: by 2002:a9d:61ca:: with SMTP id h10mr15718082otk.247.1558351636806; Mon, 20 May 2019 04:27:16 -0700 (PDT) MIME-Version: 1.0 References: <17a22052fdb759ae6129e30f9bd8862f23a03ad9.1557206859.git.baolin.wang@linaro.org> <42b84cfe-3281-7f4e-03cc-6ca126e16191@ti.com> In-Reply-To: <42b84cfe-3281-7f4e-03cc-6ca126e16191@ti.com> From: Baolin Wang Date: Mon, 20 May 2019 19:27:04 +0800 Message-ID: Subject: Re: [PATCH 1/8] dmaengine: Add matching device node validation in __dma_request_channel() To: Peter Ujfalusi Cc: Dan Williams , Vinod Koul , Thierry Reding , Jon Hunter , linux-tegra@vger.kernel.org, Shawn Guo , s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, Zubair.Kakakhel@imgtec.com, Wolfram Sang , jroedel@suse.de, Vincent Guittot , dmaengine@vger.kernel.org, LKML , Linux ARM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org On Tue, 7 May 2019 at 16:37, Peter Ujfalusi wrote: > > Hi, > > On 07/05/2019 9.09, Baolin Wang wrote: > > When user try to request one DMA channel by __dma_request_channel(), it= won't > > validate if it is the correct DMA device to request, that will lead eac= h DMA > > engine driver to validate the correct device node in their filter funct= ion > > if it is necessary. > > > > Thus we can add the matching device node validation in the DMA engine c= ore, > > to remove all of device node validation in the drivers. > > I have picked this patch to my TI UDMA series and with > __dma_request_channel() it works as expected - picking the channel from > the correct DMA device. > > Tested-by: Peter Ujfalusi Thanks Peter. > > > > > Signed-off-by: Baolin Wang > > --- > > drivers/dma/dmaengine.c | 10 ++++++++-- > > drivers/dma/of-dma.c | 4 ++-- > > include/linux/dmaengine.h | 12 ++++++++---- > > 3 files changed, 18 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c > > index 3a11b10..610080c 100644 > > --- a/drivers/dma/dmaengine.c > > +++ b/drivers/dma/dmaengine.c > > @@ -641,11 +641,13 @@ struct dma_chan *dma_get_any_slave_channel(struct= dma_device *device) > > * @mask: capabilities that the channel must satisfy > > * @fn: optional callback to disposition available channels > > * @fn_param: opaque parameter to pass to dma_filter_fn > > + * @np: device node to look for DMA channels > > * > > * Returns pointer to appropriate DMA channel on success or NULL. > > */ > > struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask, > > - dma_filter_fn fn, void *fn_param) > > + dma_filter_fn fn, void *fn_param, > > + struct device_node *np) > > { > > struct dma_device *device, *_d; > > struct dma_chan *chan =3D NULL; > > @@ -653,6 +655,10 @@ struct dma_chan *__dma_request_channel(const dma_c= ap_mask_t *mask, > > /* Find a channel */ > > mutex_lock(&dma_list_mutex); > > list_for_each_entry_safe(device, _d, &dma_device_list, global_nod= e) { > > + /* Finds a DMA controller with matching device node */ > > + if (np && device->dev->of_node && np !=3D device->dev->of= _node) > > + continue; > > + > > chan =3D find_candidate(device, mask, fn, fn_param); > > if (!IS_ERR(chan)) > > break; > > @@ -769,7 +775,7 @@ struct dma_chan *dma_request_chan_by_mask(const dma= _cap_mask_t *mask) > > if (!mask) > > return ERR_PTR(-ENODEV); > > > > - chan =3D __dma_request_channel(mask, NULL, NULL); > > + chan =3D __dma_request_channel(mask, NULL, NULL, NULL); > > if (!chan) { > > mutex_lock(&dma_list_mutex); > > if (list_empty(&dma_device_list)) > > diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c > > index 91fd395..6b43d04 100644 > > --- a/drivers/dma/of-dma.c > > +++ b/drivers/dma/of-dma.c > > @@ -316,8 +316,8 @@ struct dma_chan *of_dma_simple_xlate(struct of_phan= dle_args *dma_spec, > > if (count !=3D 1) > > return NULL; > > > > - return dma_request_channel(info->dma_cap, info->filter_fn, > > - &dma_spec->args[0]); > > + return __dma_request_channel(&info->dma_cap, info->filter_fn, > > + &dma_spec->args[0], dma_spec->np); > > } > > EXPORT_SYMBOL_GPL(of_dma_simple_xlate); > > > > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h > > index d49ec5c..504085b 100644 > > --- a/include/linux/dmaengine.h > > +++ b/include/linux/dmaengine.h > > @@ -1314,7 +1314,8 @@ static inline enum dma_status dma_async_is_comple= te(dma_cookie_t cookie, > > enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *= tx); > > void dma_issue_pending_all(void); > > struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask, > > - dma_filter_fn fn, void *fn_param)= ; > > + dma_filter_fn fn, void *fn_param, > > + struct device_node *np); > > struct dma_chan *dma_request_slave_channel(struct device *dev, const c= har *name); > > > > struct dma_chan *dma_request_chan(struct device *dev, const char *name= ); > > @@ -1339,7 +1340,9 @@ static inline void dma_issue_pending_all(void) > > { > > } > > static inline struct dma_chan *__dma_request_channel(const dma_cap_mas= k_t *mask, > > - dma_filter_fn fn, void *fn_= param) > > + dma_filter_fn fn, > > + void *fn_param, > > + struct device_node *= np) > > { > > return NULL; > > } > > @@ -1411,7 +1414,8 @@ static inline int dmaengine_desc_free(struct dma_= async_tx_descriptor *desc) > > void dma_run_dependencies(struct dma_async_tx_descriptor *tx); > > struct dma_chan *dma_get_slave_channel(struct dma_chan *chan); > > struct dma_chan *dma_get_any_slave_channel(struct dma_device *device); > > -#define dma_request_channel(mask, x, y) __dma_request_channel(&(mask),= x, y) > > +#define dma_request_channel(mask, x, y) \ > > + __dma_request_channel(&(mask), x, y, NULL) > > #define dma_request_slave_channel_compat(mask, x, y, dev, name) \ > > __dma_request_slave_channel_compat(&(mask), x, y, dev, name) > > > > @@ -1429,6 +1433,6 @@ static inline int dmaengine_desc_free(struct dma_= async_tx_descriptor *desc) > > if (!fn || !fn_param) > > return NULL; > > > > - return __dma_request_channel(mask, fn, fn_param); > > + return __dma_request_channel(mask, fn, fn_param, NULL); > > } > > #endif /* DMAENGINE_H */ > > > > - P=C3=A9ter > > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. > Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki --=20 Baolin Wang Best Regards 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 X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32922C04AAC for ; Mon, 20 May 2019 11:27:29 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 0441220644 for ; Mon, 20 May 2019 11:27:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="McqVy1hm"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Ob+eKPlK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0441220644 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Q/MaF+GRX125uDwBgjq9U1aXEz/dJBBkdphgdpferyE=; b=McqVy1hmC+vPcc 97KiCZLQyG7BApzThn8ZLdFMF0jFLKA+Ar3dF2xBfgFEYVMS9Eb4Bc05DpQP6KiggpjiQ+Ox/QrjH 0Az9oXwh73l+adVZBVKWTfTe2yCv46ltq2+LwdqXlwa7ObqxaOdZ25ja2ZjKAGNHbkbMqlxxVjtPR DbxnxeDOSe2fNbuvnTTbKsYUA3vRiA7HoQEoNVk4vGZG3JNDIYZjC/DlgudHKHHRSWnob/TRHbrE0 llY/VfRIrYTJl89aLac8xUI9yalw7+MtcCtTsW4aWoFz9kAnqXamzpybP3M/1Dgr6utW3fOkVy0mb dRMoScv+exgND3K8473g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hSgRu-0007Oi-Sm; Mon, 20 May 2019 11:27:22 +0000 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hSgRr-0007Mr-3N for linux-arm-kernel@lists.infradead.org; Mon, 20 May 2019 11:27:20 +0000 Received: by mail-ot1-x343.google.com with SMTP id 66so12653267otq.0 for ; Mon, 20 May 2019 04:27:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=gl8p5HmOo32Wp14Ae+7sQEvfQ5n8x/dx1BGblxAS4NQ=; b=Ob+eKPlKwvth41kOkgX0/b4zhZuzFd3xCf9C8qpbfdaEV63qMDTzNlWuZ191mu/0QC sXR9dVXgxekqaUIa5tecP71HYOpBo0rMXEZS8zVqR1opZsH3umfL3WKIhIQ44Tk1hm64 yMsFlCevWabXt1FzEwAE0sV1mR8dKPD3uSZar7L0bSEiRc/CuY/peLwPPXln0oqRnjrM g41JDd18L0VKlA2MBFVSjd8qWpVT4gsTQEsHw7fGTCUCKo3ehimEgNqUnbKhf1xqOaCv GqAXWwqtmC+1uOBXbU0BkV6T1b1fYa+slsHYdBsqUTzemPDVfte3mG/6iR0uRSRyDopf H/qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=gl8p5HmOo32Wp14Ae+7sQEvfQ5n8x/dx1BGblxAS4NQ=; b=ntwWTHuuxSCHpaqz4BGT2XdcALhBY/AN4qkNWdrTDER9mU8dnqNNpo0O0ptPfrd5Nt 4k/Hel9kqGBoSkTMzzUsoYW2PbWlcQ992MD26+NQQWPP1ZYpk3ZlvAt1D07cYF5M5KV8 3aw+PM5zmBsgfIazLoq7i4eBjjPBF+CyTiRpvnSZ/FGsfz2lU2hqOafy33hH95bMCxM4 Wy6M/OPrzHSiSW5ZLT6VeMXNkWh78XQsm3chSv3iwdo+hqEsPSWX8EXG3hd+6LMDsa2A cM+BhN5gIbONXozELDCmJ11PU1dSgp6FI0zTHm7WWPDV7zegxPCiIuH+/LKxQwjcGTO+ 6DTQ== X-Gm-Message-State: APjAAAW7YP6X6eRU04+uWJky7BjuMMW8JJ9WJXhLNvpX/aVDfP346S1b lrHYVqKbhrPbl9/LX4600KXBEpSzjtmvOz9z7gguDQ== X-Google-Smtp-Source: APXvYqzvRh9+1kmrlhsy7vDYW7hNBG9CEz1jiGKfO/pK4VIQ2LnHcrcRjy0ekFbQeSvJmbUMT47w0xBoC9irHouqomY= X-Received: by 2002:a9d:61ca:: with SMTP id h10mr15718082otk.247.1558351636806; Mon, 20 May 2019 04:27:16 -0700 (PDT) MIME-Version: 1.0 References: <17a22052fdb759ae6129e30f9bd8862f23a03ad9.1557206859.git.baolin.wang@linaro.org> <42b84cfe-3281-7f4e-03cc-6ca126e16191@ti.com> In-Reply-To: <42b84cfe-3281-7f4e-03cc-6ca126e16191@ti.com> From: Baolin Wang Date: Mon, 20 May 2019 19:27:04 +0800 Message-ID: Subject: Re: [PATCH 1/8] dmaengine: Add matching device node validation in __dma_request_channel() To: Peter Ujfalusi X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190520_042719_144114_296A9916 X-CRM114-Status: GOOD ( 24.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jroedel@suse.de, Vincent Guittot , Zubair.Kakakhel@imgtec.com, dmaengine@vger.kernel.org, festevam@gmail.com, s.hauer@pengutronix.de, LKML , Jon Hunter , Wolfram Sang , Vinod Koul , Thierry Reding , linux-imx@nxp.com, kernel@pengutronix.de, linux-tegra@vger.kernel.org, Dan Williams , Shawn Guo , Linux ARM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCA3IE1heSAyMDE5IGF0IDE2OjM3LCBQZXRlciBVamZhbHVzaSA8cGV0ZXIudWpmYWx1 c2lAdGkuY29tPiB3cm90ZToKPgo+IEhpLAo+Cj4gT24gMDcvMDUvMjAxOSA5LjA5LCBCYW9saW4g V2FuZyB3cm90ZToKPiA+IFdoZW4gdXNlciB0cnkgdG8gcmVxdWVzdCBvbmUgRE1BIGNoYW5uZWwg YnkgX19kbWFfcmVxdWVzdF9jaGFubmVsKCksIGl0IHdvbid0Cj4gPiB2YWxpZGF0ZSBpZiBpdCBp cyB0aGUgY29ycmVjdCBETUEgZGV2aWNlIHRvIHJlcXVlc3QsIHRoYXQgd2lsbCBsZWFkIGVhY2gg RE1BCj4gPiBlbmdpbmUgZHJpdmVyIHRvIHZhbGlkYXRlIHRoZSBjb3JyZWN0IGRldmljZSBub2Rl IGluIHRoZWlyIGZpbHRlciBmdW5jdGlvbgo+ID4gaWYgaXQgaXMgbmVjZXNzYXJ5Lgo+ID4KPiA+ IFRodXMgd2UgY2FuIGFkZCB0aGUgbWF0Y2hpbmcgZGV2aWNlIG5vZGUgdmFsaWRhdGlvbiBpbiB0 aGUgRE1BIGVuZ2luZSBjb3JlLAo+ID4gdG8gcmVtb3ZlIGFsbCBvZiBkZXZpY2Ugbm9kZSB2YWxp ZGF0aW9uIGluIHRoZSBkcml2ZXJzLgo+Cj4gSSBoYXZlIHBpY2tlZCB0aGlzIHBhdGNoIHRvIG15 IFRJIFVETUEgc2VyaWVzIGFuZCB3aXRoCj4gX19kbWFfcmVxdWVzdF9jaGFubmVsKCkgaXQgd29y a3MgYXMgZXhwZWN0ZWQgLSBwaWNraW5nIHRoZSBjaGFubmVsIGZyb20KPiB0aGUgY29ycmVjdCBE TUEgZGV2aWNlLgo+Cj4gVGVzdGVkLWJ5OiBQZXRlciBVamZhbHVzaSA8cGV0ZXIudWpmYWx1c2lA dGkuY29tPgoKVGhhbmtzIFBldGVyLgoKPgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IEJhb2xpbiBX YW5nIDxiYW9saW4ud2FuZ0BsaW5hcm8ub3JnPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9kbWEvZG1h ZW5naW5lLmMgICB8ICAgMTAgKysrKysrKystLQo+ID4gIGRyaXZlcnMvZG1hL29mLWRtYS5jICAg ICAgfCAgICA0ICsrLS0KPiA+ICBpbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oIHwgICAxMiArKysr KysrKy0tLS0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2RtYWVuZ2luZS5jIGIvZHJp dmVycy9kbWEvZG1hZW5naW5lLmMKPiA+IGluZGV4IDNhMTFiMTAuLjYxMDA4MGMgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2RtYS9kbWFlbmdpbmUuYwo+ID4gKysrIGIvZHJpdmVycy9kbWEvZG1h ZW5naW5lLmMKPiA+IEBAIC02NDEsMTEgKzY0MSwxMyBAQCBzdHJ1Y3QgZG1hX2NoYW4gKmRtYV9n ZXRfYW55X3NsYXZlX2NoYW5uZWwoc3RydWN0IGRtYV9kZXZpY2UgKmRldmljZSkKPiA+ICAgKiBA bWFzazogY2FwYWJpbGl0aWVzIHRoYXQgdGhlIGNoYW5uZWwgbXVzdCBzYXRpc2Z5Cj4gPiAgICog QGZuOiBvcHRpb25hbCBjYWxsYmFjayB0byBkaXNwb3NpdGlvbiBhdmFpbGFibGUgY2hhbm5lbHMK PiA+ICAgKiBAZm5fcGFyYW06IG9wYXF1ZSBwYXJhbWV0ZXIgdG8gcGFzcyB0byBkbWFfZmlsdGVy X2ZuCj4gPiArICogQG5wOiBkZXZpY2Ugbm9kZSB0byBsb29rIGZvciBETUEgY2hhbm5lbHMKPiA+ ICAgKgo+ID4gICAqIFJldHVybnMgcG9pbnRlciB0byBhcHByb3ByaWF0ZSBETUEgY2hhbm5lbCBv biBzdWNjZXNzIG9yIE5VTEwuCj4gPiAgICovCj4gPiAgc3RydWN0IGRtYV9jaGFuICpfX2RtYV9y ZXF1ZXN0X2NoYW5uZWwoY29uc3QgZG1hX2NhcF9tYXNrX3QgKm1hc2ssCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX2ZpbHRlcl9mbiBmbiwgdm9pZCAqZm5fcGFy YW0pCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX2ZpbHRlcl9m biBmbiwgdm9pZCAqZm5fcGFyYW0sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCkKPiA+ICB7Cj4gPiAgICAgICBzdHJ1Y3QgZG1h X2RldmljZSAqZGV2aWNlLCAqX2Q7Cj4gPiAgICAgICBzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4gPSBO VUxMOwo+ID4gQEAgLTY1Myw2ICs2NTUsMTAgQEAgc3RydWN0IGRtYV9jaGFuICpfX2RtYV9yZXF1 ZXN0X2NoYW5uZWwoY29uc3QgZG1hX2NhcF9tYXNrX3QgKm1hc2ssCj4gPiAgICAgICAvKiBGaW5k IGEgY2hhbm5lbCAqLwo+ID4gICAgICAgbXV0ZXhfbG9jaygmZG1hX2xpc3RfbXV0ZXgpOwo+ID4g ICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRldmljZSwgX2QsICZkbWFfZGV2aWNlX2xp c3QsIGdsb2JhbF9ub2RlKSB7Cj4gPiArICAgICAgICAgICAgIC8qIEZpbmRzIGEgRE1BIGNvbnRy b2xsZXIgd2l0aCBtYXRjaGluZyBkZXZpY2Ugbm9kZSAqLwo+ID4gKyAgICAgICAgICAgICBpZiAo bnAgJiYgZGV2aWNlLT5kZXYtPm9mX25vZGUgJiYgbnAgIT0gZGV2aWNlLT5kZXYtPm9mX25vZGUp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4gPiAgICAgICAgICAg ICAgIGNoYW4gPSBmaW5kX2NhbmRpZGF0ZShkZXZpY2UsIG1hc2ssIGZuLCBmbl9wYXJhbSk7Cj4g PiAgICAgICAgICAgICAgIGlmICghSVNfRVJSKGNoYW4pKQo+ID4gICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+ID4gQEAgLTc2OSw3ICs3NzUsNyBAQCBzdHJ1Y3QgZG1hX2NoYW4gKmRtYV9y ZXF1ZXN0X2NoYW5fYnlfbWFzayhjb25zdCBkbWFfY2FwX21hc2tfdCAqbWFzaykKPiA+ICAgICAg IGlmICghbWFzaykKPiA+ICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cj4g Pgo+ID4gLSAgICAgY2hhbiA9IF9fZG1hX3JlcXVlc3RfY2hhbm5lbChtYXNrLCBOVUxMLCBOVUxM KTsKPiA+ICsgICAgIGNoYW4gPSBfX2RtYV9yZXF1ZXN0X2NoYW5uZWwobWFzaywgTlVMTCwgTlVM TCwgTlVMTCk7Cj4gPiAgICAgICBpZiAoIWNoYW4pIHsKPiA+ICAgICAgICAgICAgICAgbXV0ZXhf bG9jaygmZG1hX2xpc3RfbXV0ZXgpOwo+ID4gICAgICAgICAgICAgICBpZiAobGlzdF9lbXB0eSgm ZG1hX2RldmljZV9saXN0KSkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9vZi1kbWEuYyBi L2RyaXZlcnMvZG1hL29mLWRtYS5jCj4gPiBpbmRleCA5MWZkMzk1Li42YjQzZDA0IDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9kbWEvb2YtZG1hLmMKPiA+ICsrKyBiL2RyaXZlcnMvZG1hL29mLWRt YS5jCj4gPiBAQCAtMzE2LDggKzMxNiw4IEBAIHN0cnVjdCBkbWFfY2hhbiAqb2ZfZG1hX3NpbXBs ZV94bGF0ZShzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzICpkbWFfc3BlYywKPiA+ICAgICAgIGlmIChj b3VudCAhPSAxKQo+ID4gICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+Cj4gPiAtICAgICBy ZXR1cm4gZG1hX3JlcXVlc3RfY2hhbm5lbChpbmZvLT5kbWFfY2FwLCBpbmZvLT5maWx0ZXJfZm4s Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgJmRtYV9zcGVjLT5hcmdzWzBdKTsKPiA+ICsgICAg IHJldHVybiBfX2RtYV9yZXF1ZXN0X2NoYW5uZWwoJmluZm8tPmRtYV9jYXAsIGluZm8tPmZpbHRl cl9mbiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtYV9zcGVjLT5h cmdzWzBdLCBkbWFfc3BlYy0+bnApOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChvZl9k bWFfc2ltcGxlX3hsYXRlKTsKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWFl bmdpbmUuaCBiL2luY2x1ZGUvbGludXgvZG1hZW5naW5lLmgKPiA+IGluZGV4IGQ0OWVjNWMuLjUw NDA4NWIgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCj4gPiArKysg Yi9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCj4gPiBAQCAtMTMxNCw3ICsxMzE0LDggQEAgc3Rh dGljIGlubGluZSBlbnVtIGRtYV9zdGF0dXMgZG1hX2FzeW5jX2lzX2NvbXBsZXRlKGRtYV9jb29r aWVfdCBjb29raWUsCj4gPiAgZW51bSBkbWFfc3RhdHVzIGRtYV93YWl0X2Zvcl9hc3luY190eChz dHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4KTsKPiA+ICB2b2lkIGRtYV9pc3N1ZV9w ZW5kaW5nX2FsbCh2b2lkKTsKPiA+ICBzdHJ1Y3QgZG1hX2NoYW4gKl9fZG1hX3JlcXVlc3RfY2hh bm5lbChjb25zdCBkbWFfY2FwX21hc2tfdCAqbWFzaywKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG1hX2ZpbHRlcl9mbiBmbiwgdm9pZCAqZm5fcGFyYW0pOwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9maWx0ZXJfZm4gZm4sIHZv aWQgKmZuX3BhcmFtLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwo+ID4gIHN0cnVjdCBkbWFfY2hhbiAqZG1hX3JlcXVlc3Rf c2xhdmVfY2hhbm5lbChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUpOwo+ID4K PiA+ICBzdHJ1Y3QgZG1hX2NoYW4gKmRtYV9yZXF1ZXN0X2NoYW4oc3RydWN0IGRldmljZSAqZGV2 LCBjb25zdCBjaGFyICpuYW1lKTsKPiA+IEBAIC0xMzM5LDcgKzEzNDAsOSBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgZG1hX2lzc3VlX3BlbmRpbmdfYWxsKHZvaWQpCj4gPiAgewo+ID4gIH0KPiA+ICBz dGF0aWMgaW5saW5lIHN0cnVjdCBkbWFfY2hhbiAqX19kbWFfcmVxdWVzdF9jaGFubmVsKGNvbnN0 IGRtYV9jYXBfbWFza190ICptYXNrLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkbWFfZmlsdGVyX2ZuIGZuLCB2b2lkICpmbl9wYXJhbSkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9maWx0ZXJf Zm4gZm4sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkICpmbl9wYXJhbSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gPiAgewo+ID4gICAg ICAgcmV0dXJuIE5VTEw7Cj4gPiAgfQo+ID4gQEAgLTE0MTEsNyArMTQxNCw4IEBAIHN0YXRpYyBp bmxpbmUgaW50IGRtYWVuZ2luZV9kZXNjX2ZyZWUoc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlw dG9yICpkZXNjKQo+ID4gIHZvaWQgZG1hX3J1bl9kZXBlbmRlbmNpZXMoc3RydWN0IGRtYV9hc3lu Y190eF9kZXNjcmlwdG9yICp0eCk7Cj4gPiAgc3RydWN0IGRtYV9jaGFuICpkbWFfZ2V0X3NsYXZl X2NoYW5uZWwoc3RydWN0IGRtYV9jaGFuICpjaGFuKTsKPiA+ICBzdHJ1Y3QgZG1hX2NoYW4gKmRt YV9nZXRfYW55X3NsYXZlX2NoYW5uZWwoc3RydWN0IGRtYV9kZXZpY2UgKmRldmljZSk7Cj4gPiAt I2RlZmluZSBkbWFfcmVxdWVzdF9jaGFubmVsKG1hc2ssIHgsIHkpIF9fZG1hX3JlcXVlc3RfY2hh bm5lbCgmKG1hc2spLCB4LCB5KQo+ID4gKyNkZWZpbmUgZG1hX3JlcXVlc3RfY2hhbm5lbChtYXNr LCB4LCB5KSBcCj4gPiArICAgICBfX2RtYV9yZXF1ZXN0X2NoYW5uZWwoJihtYXNrKSwgeCwgeSwg TlVMTCkKPiA+ICAjZGVmaW5lIGRtYV9yZXF1ZXN0X3NsYXZlX2NoYW5uZWxfY29tcGF0KG1hc2ss IHgsIHksIGRldiwgbmFtZSkgXAo+ID4gICAgICAgX19kbWFfcmVxdWVzdF9zbGF2ZV9jaGFubmVs X2NvbXBhdCgmKG1hc2spLCB4LCB5LCBkZXYsIG5hbWUpCj4gPgo+ID4gQEAgLTE0MjksNiArMTQz Myw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRtYWVuZ2luZV9kZXNjX2ZyZWUoc3RydWN0IGRtYV9h c3luY190eF9kZXNjcmlwdG9yICpkZXNjKQo+ID4gICAgICAgaWYgKCFmbiB8fCAhZm5fcGFyYW0p Cj4gPiAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4KPiA+IC0gICAgIHJldHVybiBfX2Rt YV9yZXF1ZXN0X2NoYW5uZWwobWFzaywgZm4sIGZuX3BhcmFtKTsKPiA+ICsgICAgIHJldHVybiBf X2RtYV9yZXF1ZXN0X2NoYW5uZWwobWFzaywgZm4sIGZuX3BhcmFtLCBOVUxMKTsKPiA+ICB9Cj4g PiAgI2VuZGlmIC8qIERNQUVOR0lORV9IICovCj4gPgo+Cj4gLSBQw6l0ZXIKPgo+IFRleGFzIElu c3RydW1lbnRzIEZpbmxhbmQgT3ksIFBvcmtrYWxhbmthdHUgMjIsIDAwMTgwIEhlbHNpbmtpLgo+ IFktdHVubnVzL0J1c2luZXNzIElEOiAwNjE1NTIxLTQuIEtvdGlwYWlra2EvRG9taWNpbGU6IEhl bHNpbmtpCgoKCi0tIApCYW9saW4gV2FuZwpCZXN0IFJlZ2FyZHMKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK