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=-6.7 required=3.0 tests=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 C7002C5DF60 for ; Tue, 5 Nov 2019 16:34:44 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (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 BE09921882 for ; Tue, 5 Nov 2019 16:34:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="JMQe0+2y" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BE09921882 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id EEB4C16CA; Tue, 5 Nov 2019 17:33:50 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz EEB4C16CA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1572971681; bh=ogg02eBs9wTN8F1N0ESi73kwEZCLXweNPvc2kNOR33Q=; h=Date:From:To:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=JMQe0+2yVkarIJdD/RJh22taXjg9XuBmNFpEfBZbBEjHaXrQrU3SupwqWH2yvFoK/ 0i1LF9G9poTzsWi+z0/ANUVz29Us8V7pQTJ30t7Y4CMxHjxoI5ZL3U42lVW8UnKfcz gPbixOEXbbllQDJEKROet0JqlBg6GfaZgl4Do+5U= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 5901FF80446; Tue, 5 Nov 2019 17:33:50 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 2E02CF8049B; Tue, 5 Nov 2019 17:33:49 +0100 (CET) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 15AE7F8015B for ; Tue, 5 Nov 2019 17:33:45 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 15AE7F8015B X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id B6203B440; Tue, 5 Nov 2019 16:33:44 +0000 (UTC) Date: Tue, 05 Nov 2019 17:33:44 +0100 Message-ID: From: Takashi Iwai To: Russell King - ARM Linux admin In-Reply-To: <20191105160215.GQ25745@shell.armlinux.org.uk> References: <6ad19121-c0e3-d278-2943-ff93ef80353b@baylibre.com> <20191105160215.GQ25745@shell.armlinux.org.uk> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Cc: Jernej Skrabec , Jonas Karlman , Neil Armstrong , alsa-devel@alsa-project.org, dri-devel@lists.freedesktop.org, Andrzej Hajda , Laurent Pinchart , Philipp Zabel Subject: Re: [alsa-devel] Incorrect buffer handling in dw-hdmi bridge audio X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On Tue, 05 Nov 2019 17:02:15 +0100, Russell King - ARM Linux admin wrote: > > On Tue, Nov 05, 2019 at 09:07:43AM +0100, Neil Armstrong wrote: > > Hi, > > > > On 05/11/2019 08:55, Takashi Iwai wrote: > > > Hi, > > > > > > while recently working on the ALSA memory allocator API cleanup, I > > > noticed that dw-hdmi bridge driver seems doing weird about the buffer > > > management. It pre-allocates the usual device buffers fully at the > > > probe time, while each stream allocates the buffer via the vmalloc > > > helpers and replaces with it at each open. > > > > > > I guess it's no expected behavior? It's basically a full waste of > > > resources, and the vmalloc buffer isn't guaranteed to work well for > > > mmap on every architecture. > > > > > > Below is the patch to address it. Can anyone check whether this still > > > works? > > > > I don't have the setup to check, but this has been pushed by Russell I Added in CC. > > > > I also added the imx maintainer since it's (AFAIK) only used on iMX SoCs. > > > > Neil > > > > > > > > Since I have a cleanup series and this is involved, I'd like to take > > > the fix through my tree once after it's confirmed (and get ACK if > > > possible). > > > > > > > > > Thanks! > > > > > > Takashi > > > > > > -- 8< -- > > > From: Takashi Iwai > > > Subject: [PATCH] drm/bridge: dw-hdmi: Fix the incorrect buffer allocations > > > > > > The driver sets up the buffer preallocation with SNDRV_DMA_TYPE_DEV, > > > while it re-allocates and releases vmalloc pages. This is not only a > > > lot of waste resources but also causes the mmap malfunction. > > > > > > Change / drop the vmalloc-related code and use the standard buffer > > > allocation / release code instead. > > I think getting rid of the vmalloc code here is a mistake - I seem to > remember using the standard buffer allocation causes failures, due to > memory fragmentation. Since the hardware is limited to DMA from at > most one page, there is no reason for this driver to require contiguous > pages, hence why it's using - and should use - vmalloc pages. vmalloc > is way kinder to the MM subsystem than trying to request large order > contiguous pages. > > So, NAK on this patch. OK, then we should do other way round, rather drop the buffer preallocation instead. Currently vmalloc buffer is always allocated at each open and overrides the preallocated buffer, so the whole 64k and more are wasted for no use. (BTW, the current code has this snippet: /* Limit the buffer size to the size of the preallocated buffer */ ret = snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_BUFFER_SIZE, 0, substream->dma_buffer.bytes); ... and this would have to limit the buffer size only to the preallocated size -- which essentially makes the argument above invalid. However, this check looks actually bogus, the constraint parameter should be SNDRV_PCM_HW_PARAM_BUFFER_BYTES, not _SIZE. It might be the reason it worked somehow...) So below is the revised patch. Could you guys check it again? There I copied the comment as is, although the 512k mentioned there looks inconsistent with the actual code. Should it be 1M? Thanks! Takashi -- 8< -- From: Takashi Iwai Subject: [PATCH] drm/bridge: dw-hdmi: A couple of fixes wrt buffer allocation The driver sets up the buffer preallocation with SNDRV_DMA_TYPE_DEV, while it always re-allocates and releases vmalloc pages, hence the preallocated pages are never used. Also, the current code contains the hw constraint to limit the buffer size to the preallocated size. It doesn't work as expected, however, because it's applying to an incorrect parameter (SNDRV_PCM_HW_PARAM_BUFFER_SIZE instead of _BUFFER_BYTES). This patch tries to address these issues: drop the unnecessary buffer preallocation and fix the hw constraint to the right parameter. Since the buffer preallocation is dropped, the max buffer size that was passed to the preallocation is passed directly now to the hw constraint call. Signed-off-by: Takashi Iwai --- drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c index 2b7539701b42..3efbbc59994b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c @@ -337,10 +337,14 @@ static int dw_hdmi_open(struct snd_pcm_substream *substream) if (ret < 0) return ret; - /* Limit the buffer size to the size of the preallocated buffer */ + /* + * Limit the buffer size: + * to support 8-channel 96kHz audio reliably, we need 512k + * to satisfy alsa with our restricted period (ERR004323). + */ ret = snd_pcm_hw_constraint_minmax(runtime, - SNDRV_PCM_HW_PARAM_BUFFER_SIZE, - 0, substream->dma_buffer.bytes); + SNDRV_PCM_HW_PARAM_BUFFER_BYTES, + 0, 1024 * 1024); if (ret < 0) return ret; @@ -560,13 +564,6 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) strlcpy(pcm->name, DRIVER_NAME, sizeof(pcm->name)); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_dw_hdmi_ops); - /* - * To support 8-channel 96kHz audio reliably, we need 512k - * to satisfy alsa with our restricted period (ERR004323). - */ - snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, - dev, 128 * 1024, 1024 * 1024); - ret = snd_card_register(card); if (ret < 0) goto err; -- 2.16.4 _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: Incorrect buffer handling in dw-hdmi bridge audio Date: Tue, 05 Nov 2019 17:33:44 +0100 Message-ID: References: <6ad19121-c0e3-d278-2943-ff93ef80353b@baylibre.com> <20191105160215.GQ25745@shell.armlinux.org.uk> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8B2B66EAEB for ; Tue, 5 Nov 2019 16:33:46 +0000 (UTC) In-Reply-To: <20191105160215.GQ25745@shell.armlinux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King - ARM Linux admin Cc: Jernej Skrabec , Jonas Karlman , Neil Armstrong , alsa-devel@alsa-project.org, dri-devel@lists.freedesktop.org, Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAwNSBOb3YgMjAxOSAxNzowMjoxNSArMDEwMCwKUnVzc2VsbCBLaW5nIC0gQVJNIExp bnV4IGFkbWluIHdyb3RlOgo+IAo+IE9uIFR1ZSwgTm92IDA1LCAyMDE5IGF0IDA5OjA3OjQzQU0g KzAxMDAsIE5laWwgQXJtc3Ryb25nIHdyb3RlOgo+ID4gSGksCj4gPiAKPiA+IE9uIDA1LzExLzIw MTkgMDg6NTUsIFRha2FzaGkgSXdhaSB3cm90ZToKPiA+ID4gSGksCj4gPiA+IAo+ID4gPiB3aGls ZSByZWNlbnRseSB3b3JraW5nIG9uIHRoZSBBTFNBIG1lbW9yeSBhbGxvY2F0b3IgQVBJIGNsZWFu dXAsIEkKPiA+ID4gbm90aWNlZCB0aGF0IGR3LWhkbWkgYnJpZGdlIGRyaXZlciBzZWVtcyBkb2lu ZyB3ZWlyZCBhYm91dCB0aGUgYnVmZmVyCj4gPiA+IG1hbmFnZW1lbnQuICBJdCBwcmUtYWxsb2Nh dGVzIHRoZSB1c3VhbCBkZXZpY2UgYnVmZmVycyBmdWxseSBhdCB0aGUKPiA+ID4gcHJvYmUgdGlt ZSwgd2hpbGUgZWFjaCBzdHJlYW0gYWxsb2NhdGVzIHRoZSBidWZmZXIgdmlhIHRoZSB2bWFsbG9j Cj4gPiA+IGhlbHBlcnMgYW5kIHJlcGxhY2VzIHdpdGggaXQgYXQgZWFjaCBvcGVuLgo+ID4gPiAK PiA+ID4gSSBndWVzcyBpdCdzIG5vIGV4cGVjdGVkIGJlaGF2aW9yPyAgSXQncyBiYXNpY2FsbHkg YSBmdWxsIHdhc3RlIG9mCj4gPiA+IHJlc291cmNlcywgYW5kIHRoZSB2bWFsbG9jIGJ1ZmZlciBp c24ndCBndWFyYW50ZWVkIHRvIHdvcmsgd2VsbCBmb3IKPiA+ID4gbW1hcCBvbiBldmVyeSBhcmNo aXRlY3R1cmUuCj4gPiA+IAo+ID4gPiBCZWxvdyBpcyB0aGUgcGF0Y2ggdG8gYWRkcmVzcyBpdC4g IENhbiBhbnlvbmUgY2hlY2sgd2hldGhlciB0aGlzIHN0aWxsCj4gPiA+IHdvcmtzPwo+ID4gCj4g PiBJIGRvbid0IGhhdmUgdGhlIHNldHVwIHRvIGNoZWNrLCBidXQgdGhpcyBoYXMgYmVlbiBwdXNo ZWQgYnkgUnVzc2VsbCBJIEFkZGVkIGluIENDLgo+ID4gCj4gPiBJIGFsc28gYWRkZWQgdGhlIGlt eCBtYWludGFpbmVyIHNpbmNlIGl0J3MgKEFGQUlLKSBvbmx5IHVzZWQgb24gaU1YIFNvQ3MuCj4g PiAKPiA+IE5laWwKPiA+IAo+ID4gPiAKPiA+ID4gU2luY2UgSSBoYXZlIGEgY2xlYW51cCBzZXJp ZXMgYW5kIHRoaXMgaXMgaW52b2x2ZWQsIEknZCBsaWtlIHRvIHRha2UKPiA+ID4gdGhlIGZpeCB0 aHJvdWdoIG15IHRyZWUgb25jZSBhZnRlciBpdCdzIGNvbmZpcm1lZCAoYW5kIGdldCBBQ0sgaWYK PiA+ID4gcG9zc2libGUpLgo+ID4gPiAKPiA+ID4gCj4gPiA+IFRoYW5rcyEKPiA+ID4gCj4gPiA+ IFRha2FzaGkKPiA+ID4gCj4gPiA+IC0tIDg8IC0tCj4gPiA+IEZyb206IFRha2FzaGkgSXdhaSA8 dGl3YWlAc3VzZS5kZT4KPiA+ID4gU3ViamVjdDogW1BBVENIXSBkcm0vYnJpZGdlOiBkdy1oZG1p OiBGaXggdGhlIGluY29ycmVjdCBidWZmZXIgYWxsb2NhdGlvbnMKPiA+ID4gCj4gPiA+IFRoZSBk cml2ZXIgc2V0cyB1cCB0aGUgYnVmZmVyIHByZWFsbG9jYXRpb24gd2l0aCBTTkRSVl9ETUFfVFlQ RV9ERVYsCj4gPiA+IHdoaWxlIGl0IHJlLWFsbG9jYXRlcyBhbmQgcmVsZWFzZXMgdm1hbGxvYyBw YWdlcy4gIFRoaXMgaXMgbm90IG9ubHkgYQo+ID4gPiBsb3Qgb2Ygd2FzdGUgcmVzb3VyY2VzIGJ1 dCBhbHNvIGNhdXNlcyB0aGUgbW1hcCBtYWxmdW5jdGlvbi4KPiA+ID4gCj4gPiA+IENoYW5nZSAv IGRyb3AgdGhlIHZtYWxsb2MtcmVsYXRlZCBjb2RlIGFuZCB1c2UgdGhlIHN0YW5kYXJkIGJ1ZmZl cgo+ID4gPiBhbGxvY2F0aW9uIC8gcmVsZWFzZSBjb2RlIGluc3RlYWQuCj4gCj4gSSB0aGluayBn ZXR0aW5nIHJpZCBvZiB0aGUgdm1hbGxvYyBjb2RlIGhlcmUgaXMgYSBtaXN0YWtlIC0gSSBzZWVt IHRvCj4gcmVtZW1iZXIgdXNpbmcgdGhlIHN0YW5kYXJkIGJ1ZmZlciBhbGxvY2F0aW9uIGNhdXNl cyBmYWlsdXJlcywgZHVlIHRvCj4gbWVtb3J5IGZyYWdtZW50YXRpb24uICBTaW5jZSB0aGUgaGFy ZHdhcmUgaXMgbGltaXRlZCB0byBETUEgZnJvbSBhdAo+IG1vc3Qgb25lIHBhZ2UsIHRoZXJlIGlz IG5vIHJlYXNvbiBmb3IgdGhpcyBkcml2ZXIgdG8gcmVxdWlyZSBjb250aWd1b3VzCj4gcGFnZXMs IGhlbmNlIHdoeSBpdCdzIHVzaW5nIC0gYW5kIHNob3VsZCB1c2UgLSB2bWFsbG9jIHBhZ2VzLiAg dm1hbGxvYwo+IGlzIHdheSBraW5kZXIgdG8gdGhlIE1NIHN1YnN5c3RlbSB0aGFuIHRyeWluZyB0 byByZXF1ZXN0IGxhcmdlIG9yZGVyCj4gY29udGlndW91cyBwYWdlcy4KPiAKPiBTbywgTkFLIG9u IHRoaXMgcGF0Y2guCgpPSywgdGhlbiB3ZSBzaG91bGQgZG8gb3RoZXIgd2F5IHJvdW5kLCByYXRo ZXIgZHJvcCB0aGUgYnVmZmVyCnByZWFsbG9jYXRpb24gaW5zdGVhZC4gIEN1cnJlbnRseSB2bWFs bG9jIGJ1ZmZlciBpcyBhbHdheXMgYWxsb2NhdGVkCmF0IGVhY2ggb3BlbiBhbmQgb3ZlcnJpZGVz IHRoZSBwcmVhbGxvY2F0ZWQgYnVmZmVyLCBzbyB0aGUgd2hvbGUgNjRrCmFuZCBtb3JlIGFyZSB3 YXN0ZWQgZm9yIG5vIHVzZS4KCihCVFcsIHRoZSBjdXJyZW50IGNvZGUgaGFzIHRoaXMgc25pcHBl dDoKCgkvKiBMaW1pdCB0aGUgYnVmZmVyIHNpemUgdG8gdGhlIHNpemUgb2YgdGhlIHByZWFsbG9j YXRlZCBidWZmZXIgKi8KCXJldCA9IHNuZF9wY21faHdfY29uc3RyYWludF9taW5tYXgocnVudGlt ZSwKCQkJCQkgICBTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX1NJWkUsCgkJCQkJICAgMCwgc3Vi c3RyZWFtLT5kbWFfYnVmZmVyLmJ5dGVzKTsKCi4uLiBhbmQgdGhpcyB3b3VsZCBoYXZlIHRvIGxp bWl0IHRoZSBidWZmZXIgc2l6ZSBvbmx5IHRvIHRoZQpwcmVhbGxvY2F0ZWQgc2l6ZSAtLSB3aGlj aCBlc3NlbnRpYWxseSBtYWtlcyB0aGUgYXJndW1lbnQgYWJvdmUKaW52YWxpZC4gIEhvd2V2ZXIs IHRoaXMgY2hlY2sgbG9va3MgYWN0dWFsbHkgYm9ndXMsIHRoZSBjb25zdHJhaW50CnBhcmFtZXRl ciBzaG91bGQgYmUgU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUywgbm90IF9TSVpFLiAg SXQKbWlnaHQgYmUgdGhlIHJlYXNvbiBpdCB3b3JrZWQgc29tZWhvdy4uLikKClNvIGJlbG93IGlz IHRoZSByZXZpc2VkIHBhdGNoLiAgQ291bGQgeW91IGd1eXMgY2hlY2sgaXQgYWdhaW4/CgpUaGVy ZSBJIGNvcGllZCB0aGUgY29tbWVudCBhcyBpcywgYWx0aG91Z2ggdGhlIDUxMmsgbWVudGlvbmVk IHRoZXJlCmxvb2tzIGluY29uc2lzdGVudCB3aXRoIHRoZSBhY3R1YWwgY29kZS4gIFNob3VsZCBp dCBiZSAxTT8KCgpUaGFua3MhCgpUYWthc2hpCgotLSA4PCAtLQpGcm9tOiBUYWthc2hpIEl3YWkg PHRpd2FpQHN1c2UuZGU+ClN1YmplY3Q6IFtQQVRDSF0gZHJtL2JyaWRnZTogZHctaGRtaTogQSBj b3VwbGUgb2YgZml4ZXMgd3J0IGJ1ZmZlciBhbGxvY2F0aW9uCgpUaGUgZHJpdmVyIHNldHMgdXAg dGhlIGJ1ZmZlciBwcmVhbGxvY2F0aW9uIHdpdGggU05EUlZfRE1BX1RZUEVfREVWLAp3aGlsZSBp dCBhbHdheXMgcmUtYWxsb2NhdGVzIGFuZCByZWxlYXNlcyB2bWFsbG9jIHBhZ2VzLCBoZW5jZSB0 aGUKcHJlYWxsb2NhdGVkIHBhZ2VzIGFyZSBuZXZlciB1c2VkLiAgQWxzbywgdGhlIGN1cnJlbnQg Y29kZSBjb250YWlucwp0aGUgaHcgY29uc3RyYWludCB0byBsaW1pdCB0aGUgYnVmZmVyIHNpemUg dG8gdGhlIHByZWFsbG9jYXRlZCBzaXplLgpJdCBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQsIGhv d2V2ZXIsIGJlY2F1c2UgaXQncyBhcHBseWluZyB0byBhbgppbmNvcnJlY3QgcGFyYW1ldGVyIChT TkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX1NJWkUgaW5zdGVhZCBvZgpfQlVGRkVSX0JZVEVTKS4K ClRoaXMgcGF0Y2ggdHJpZXMgdG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXM6IGRyb3AgdGhlIHVubmVj ZXNzYXJ5IGJ1ZmZlcgpwcmVhbGxvY2F0aW9uIGFuZCBmaXggdGhlIGh3IGNvbnN0cmFpbnQgdG8g dGhlIHJpZ2h0IHBhcmFtZXRlci4gIFNpbmNlCnRoZSBidWZmZXIgcHJlYWxsb2NhdGlvbiBpcyBk cm9wcGVkLCB0aGUgbWF4IGJ1ZmZlciBzaXplIHRoYXQgd2FzCnBhc3NlZCB0byB0aGUgcHJlYWxs b2NhdGlvbiBpcyBwYXNzZWQgZGlyZWN0bHkgbm93IHRvIHRoZSBodwpjb25zdHJhaW50IGNhbGwu CgpTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLWFoYi1hdWRpby5jIHwgMTcgKysrKysr Ky0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRt aS1haGItYXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS1h aGItYXVkaW8uYwppbmRleCAyYjc1Mzk3MDFiNDIuLjNlZmJiYzU5OTk0YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1oZG1pLWFoYi1hdWRpby5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS1haGItYXVkaW8uYwpAQCAt MzM3LDEwICszMzcsMTQgQEAgc3RhdGljIGludCBkd19oZG1pX29wZW4oc3RydWN0IHNuZF9wY21f c3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAKLQkv KiBMaW1pdCB0aGUgYnVmZmVyIHNpemUgdG8gdGhlIHNpemUgb2YgdGhlIHByZWFsbG9jYXRlZCBi dWZmZXIgKi8KKwkvKgorCSAqIExpbWl0IHRoZSBidWZmZXIgc2l6ZToKKwkgKiB0byBzdXBwb3J0 IDgtY2hhbm5lbCA5NmtIeiBhdWRpbyByZWxpYWJseSwgd2UgbmVlZCA1MTJrCisJICogdG8gc2F0 aXNmeSBhbHNhIHdpdGggb3VyIHJlc3RyaWN0ZWQgcGVyaW9kIChFUlIwMDQzMjMpLgorCSAqLwog CXJldCA9IHNuZF9wY21faHdfY29uc3RyYWludF9taW5tYXgocnVudGltZSwKLQkJCQkJICAgU05E UlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFLAotCQkJCQkgICAwLCBzdWJzdHJlYW0tPmRtYV9i dWZmZXIuYnl0ZXMpOworCQkJCQkgICBTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX0JZVEVTLAor CQkJCQkgICAwLCAxMDI0ICogMTAyNCk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAK QEAgLTU2MCwxMyArNTY0LDYgQEAgc3RhdGljIGludCBzbmRfZHdfaGRtaV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cmxjcHkocGNtLT5uYW1lLCBEUklWRVJfTkFNRSwg c2l6ZW9mKHBjbS0+bmFtZSkpOwogCXNuZF9wY21fc2V0X29wcyhwY20sIFNORFJWX1BDTV9TVFJF QU1fUExBWUJBQ0ssICZzbmRfZHdfaGRtaV9vcHMpOwogCi0JLyoKLQkgKiBUbyBzdXBwb3J0IDgt Y2hhbm5lbCA5NmtIeiBhdWRpbyByZWxpYWJseSwgd2UgbmVlZCA1MTJrCi0JICogdG8gc2F0aXNm eSBhbHNhIHdpdGggb3VyIHJlc3RyaWN0ZWQgcGVyaW9kIChFUlIwMDQzMjMpLgotCSAqLwotCXNu ZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwocGNtLCBTTkRSVl9ETUFfVFlQRV9E RVYsCi0JCQlkZXYsIDEyOCAqIDEwMjQsIDEwMjQgKiAxMDI0KTsKLQogCXJldCA9IHNuZF9jYXJk X3JlZ2lzdGVyKGNhcmQpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycjsKLS0gCjIuMTYuNAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs