From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yb1-f181.google.com (mail-yb1-f181.google.com [209.85.219.181]) (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 3C3E781726 for ; Thu, 28 Mar 2024 17:58:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711648701; cv=none; b=loQRlc6l3c6lDLsgvqfFGXW5fvFA02860oVZ9Xrw2fCG3+4a41O7Ff1ZRu2DEkU1OOuxb4e1/bqxcQQd0GeoA78K4sfNEgmhQJIHVyYmWXG2yxV0M4iPasjVM3/NaB19SJHB1oEgLBO+xu/phz8zhopqEBHCxtiAlhCJVZfw5qs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711648701; c=relaxed/simple; bh=VF9kw4WTAs6CxHwuSeD4k3v4iYoGGymRT9tDvNquKv0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=nEEmcMFmbC3CjDuyjCxvnN2Xauqy7QdC3dnEjkRlJ03muVRcCjLy4EHefua5//R4hmT5filVmQiLoNFESOR8snhWeDi9Wb5qVLLKiYyDs8J5D6UrsFUxJW45vWDVEv8CNVOOSPsIwBUUEDOvfW7eRSi4AWdrij2wL8d7bhkbWNg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Be/HF6uw; arc=none smtp.client-ip=209.85.219.181 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="Be/HF6uw" Received: by mail-yb1-f181.google.com with SMTP id 3f1490d57ef6-dc74435c428so1282096276.2 for ; Thu, 28 Mar 2024 10:58:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1711648698; x=1712253498; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=IMB2JrEaXdtfR7K1jGqJIj8fJgUdIhDmgzuCsvn0h6Y=; b=Be/HF6uwM1Qk3pOx8fJuRHzRY5ClpLb20uL2Dg4kATWnyV+QL0/t+XlKQNotZDn/Vt 2z/VAzxr9QzRvJWwG5pTY6nk/wNDVMM1v3J1+VW07gZRP50VjRtMmxbQ5F5WuJ82pH7X CQftllm3JdhTMqY/ADdBqN0o6UKTXaAbtdVzQ7R6k0eG05BFxCXxZ3LpfgYQPykzcnFJ l3syEz4ZAv1U47diPMQNvNKyUvfMwi0iv0cNNC2uaa/mkrQB/1X/ckmlbIvk18mLpWS6 6Lg+IL65lbm+WSuPXS9EfSujtxbK5Lx/NP5NTD61UzC+GnvyfMLyn3UhwEFCAt1mN0mt V5CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711648698; x=1712253498; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IMB2JrEaXdtfR7K1jGqJIj8fJgUdIhDmgzuCsvn0h6Y=; b=KUgVKC6LilkFqtAfEUW1k9+f6HqBiLbzFTQmZw2sVE58iNKCbcaUlruMy2aW86HXqn WvWEz8LsDTHswgLUX1uq0oh6MN7CK6BjVr/UWeN7oF5GaihjpnnacsKX/YtjfIjjSg8W LcgvOIDaD+20QpHY8m3LX9VBdaRA1zAt0iBipazxS7Sbd4mvKaYgZLOtTKGCWyF5dlyT c5QfhsxpMCW1kmVJroH7h5lmO10b3C5W711jCnlmwtE3pM7P7VE3DewSXdAHTk4TaaKN A+GDvUUBbG2UU3n2Vz4pu32YRWMcbZA5w7j2y7QzsPlpa23dCsQFcuZkWfrtmLy6L2BF a5iA== X-Forwarded-Encrypted: i=1; AJvYcCX1hCC4VgbJvvDRFcECuImUTPsnzL3lmp1xutT76Bawyl/6k/qNU8q062o9y01iN2D4xtPPOBBX/TLxlbXV6FQOo5gmc0lP4xYflQNW X-Gm-Message-State: AOJu0Yx1DZLZ5U44zSbaOW/ccgkwokMmHVWNxenS2kZ9yw+ozxRxhit1 fNw57CBb/lZkfgTR2dV7igEcyzJUlAjSHy/wh5te92nIIS93x6LB585/zpYLL29Uz1hCxNcvdQk O1hX8E62a2lNotu2evwu8+pu+0DgD1i8M8IkRGA== X-Google-Smtp-Source: AGHT+IFvODLCEqAxm5n0XVkXoNSLzULV36Er2Og/J1Iy7BT7XxZQSRjln9IX9vYVbq35MTHF9K8T2+xldb2BmW5RcZo= X-Received: by 2002:a25:70c5:0:b0:dcf:288e:21ca with SMTP id l188-20020a2570c5000000b00dcf288e21camr38551ybc.11.1711648698172; Thu, 28 Mar 2024 10:58:18 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240327033041.83625-1-jaewon02.kim@samsung.com> In-Reply-To: <20240327033041.83625-1-jaewon02.kim@samsung.com> From: Sam Protsenko Date: Thu, 28 Mar 2024 12:58:07 -0500 Message-ID: Subject: Re: [PATCH] spi: s3c64xx: Use DMA mode from fifo size To: Jaewon Kim Cc: Andi Shyti , Mark Brown , Krzysztof Kozlowski , Alim Akhtar , linux-spi@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 26, 2024 at 10:35=E2=80=AFPM Jaewon Kim wrote: > > The SPI data size is smaller than FIFO, it operates in PIO mode, Spelling: "The" -> "If the" > and if it is larger than FIFO mode, DMA mode is selected. > > If the data size is the same as the FIFO size, it operates in PIO mode > and data is separated into two transfer. In order to prevent, Nit: "transfer" -> "transfers", "prevent" -> "prevent it" > DMA mode must be used from the case of FIFO and data size. > You probably mean this code (it occurs two times in the driver): xfer->len =3D fifo_len - 1; Can you please elaborate on why it's done this way? Why can't we just do "xfer->len =3D fifo_len" and use the whole FIFO for the transfer instead? I don't understand the necessity to split the transfer into two chunks if its size is of FIFO length -- wouldn't it fit into FIFO in that case? (I'm pretty sure this change is correct, just want to understand how exactly it works). > Fixes: 1ee806718d5e ("spi: s3c64xx: support interrupt based pio mode") Just wonder if that fixes some throughput regression, or something worse (like failed transfers when the transfer size is the same as FIFO size)? > Signed-off-by: Jaewon Kim > --- > drivers/spi/spi-s3c64xx.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c > index 9fcbe040cb2f..81ed5fddf83e 100644 > --- a/drivers/spi/spi-s3c64xx.c > +++ b/drivers/spi/spi-s3c64xx.c > @@ -430,7 +430,7 @@ static bool s3c64xx_spi_can_dma(struct spi_controller= *host, > struct s3c64xx_spi_driver_data *sdd =3D spi_controller_get_devdat= a(host); > > if (sdd->rx_dma.ch && sdd->tx_dma.ch) > - return xfer->len > sdd->fifo_depth; > + return xfer->len >=3D sdd->fifo_depth; > > return false; > } > @@ -826,11 +826,11 @@ static int s3c64xx_spi_transfer_one(struct spi_cont= roller *host, > return status; > } > > - if (!is_polling(sdd) && (xfer->len > fifo_len) && > + if (!is_polling(sdd) && xfer->len >=3D fifo_len && > sdd->rx_dma.ch && sdd->tx_dma.ch) { > use_dma =3D 1; > Would be nice to remove this empty line, while at it. > - } else if (xfer->len >=3D fifo_len) { > + } else if (xfer->len > fifo_len) { Below in the same function I can see similar code: if (target_len >=3D fifo_len) xfer->len =3D fifo_len - 1; Shouldn't that 'if' condition be fixed too? Or it's ok as it is? (Just noticed it by searching, not sure myself, hence asking). > tx_buf =3D xfer->tx_buf; > rx_buf =3D xfer->rx_buf; > origin_len =3D xfer->len; > -- > 2.43.2 > > 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 51E01CD11DF for ; Thu, 28 Mar 2024 17:58:40 +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:Cc: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=S2qPOMf9KW3xHVfyaHYs/MAhUpH6HGfYqUHNsmmf3KA=; b=fhdUcn5bQKnEJi OWKwQb/WbIyonB0zP7n+VVv6IJ77jQTSHqCqpKvJH7tiOj1vIr/q0+hFry5LKWj9bsBN96i/uHlOx PzlCLQFdzHHPNWw2Qt9tH8KzmThJJVPrAKpzgs80ERTB6Ic0PUnRt8axD5FrCs13taMi21uY5hesM Fpj+8DnZ7eyeCZTfj7e8OafwsPryypu3gOY755rrS9+ohspzv6huJT1nEE7VrCrbMMVhKFoqXlKIw Tm59LJwnXEa+DOjRwVOhhhyWf2PdSFgPidCMleYIgYi5t/n3qXLP/c88BjvKeHQNWBJ0J+nsr4ugq inBYnc7QSYQdHmsgMc5Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpu1A-0000000F3sT-1CrN; Thu, 28 Mar 2024 17:58:24 +0000 Received: from mail-yb1-xb31.google.com ([2607:f8b0:4864:20::b31]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpu16-0000000F3qc-2QoZ for linux-arm-kernel@lists.infradead.org; Thu, 28 Mar 2024 17:58:22 +0000 Received: by mail-yb1-xb31.google.com with SMTP id 3f1490d57ef6-dcd7c526cc0so1239446276.1 for ; Thu, 28 Mar 2024 10:58:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1711648698; x=1712253498; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=IMB2JrEaXdtfR7K1jGqJIj8fJgUdIhDmgzuCsvn0h6Y=; b=b6SHkhOanBGaDsKqxLQLiMDi/3U1Un8ATFovXBhfM0TAfXKzM/NuZWFZH9jAqdlGN5 pRwBajb1Xeo5ERY3GiekINX6Tnbp3MNwYgznPtg7Pa21yN3hwke+6zrCCv+u87QTWxp8 8YQmuntYEav/UPwz4O09U6ZBfZqkdLZlScDgdKvRnriInuTBMwmZ6AjpNFEhhcMl+Z24 Othy2vV38vdwGwq5XnxKOjHaJGgvSzCVtlxvw7hLYd/ibPGx1N/IlaCuf0Lm/thWq5zD WRUtaBPPyDNZqOShb5y0DD45P/SjaCeiO6r3QIzh+uxQVF6n6785Hp0dhCKh5r+5J8Yo 4Dnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711648698; x=1712253498; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IMB2JrEaXdtfR7K1jGqJIj8fJgUdIhDmgzuCsvn0h6Y=; b=kezvsJJi7WhE2EP6Mg+5EVOhCe69jQYxSM1xZcwvr6x7H4/PPUS4m8kkqCyFETFeVb LxoL1TpmFivIDJSTWgUjeh3mwqZXUwCmbUZGz0PNf7IGQi95epG4WlOIHDaHCXetzP3h N1KydhA97wravXL7kWrRhA0Let5MjFQQxY5MJGhH0p/JWT+Qu+TYO2ai25UbyHmvzgb1 3LeSqYZzlix4loyyNS6zy0BqkyEWD/3wC5Kves5MoObHpK8z5XWdhSYC/IR8AVpHjTqJ tUX8DWPraFajNlERhgTyJfQZwBlwfDbpzQsU36k/Xvet4Nw17A3KKPCngbt0Ebwj0DfM FPmQ== X-Forwarded-Encrypted: i=1; AJvYcCUir4th/OyuvDzolKyNzcNO5xQ0B4cm7fx8zArUaBxN6dQKH2JXPpP+ok603DWC1wkeatyLy9cA2ZELkFd+MtK8G1bQX3tH3TFqJE6H9EszcDN2Z9Y= X-Gm-Message-State: AOJu0Ywzib68mikfQ794Q2IAHFljmh3IYkCXzNzQa8Fyu1SQplNilJyb TK+u1j0rlA2wkhUMaJ4rHaqPwmzBQmtAxH9bE0nGmzR9E2RK26SJXQebNOSoq3HUsXFnKr89LsF UlcHqCMDTlByJnN6dK6XF9YUGh5YijXo+e1m4gg== X-Google-Smtp-Source: AGHT+IFvODLCEqAxm5n0XVkXoNSLzULV36Er2Og/J1Iy7BT7XxZQSRjln9IX9vYVbq35MTHF9K8T2+xldb2BmW5RcZo= X-Received: by 2002:a25:70c5:0:b0:dcf:288e:21ca with SMTP id l188-20020a2570c5000000b00dcf288e21camr38551ybc.11.1711648698172; Thu, 28 Mar 2024 10:58:18 -0700 (PDT) MIME-Version: 1.0 References: <20240327033041.83625-1-jaewon02.kim@samsung.com> In-Reply-To: <20240327033041.83625-1-jaewon02.kim@samsung.com> From: Sam Protsenko Date: Thu, 28 Mar 2024 12:58:07 -0500 Message-ID: Subject: Re: [PATCH] spi: s3c64xx: Use DMA mode from fifo size To: Jaewon Kim Cc: Andi Shyti , Mark Brown , Krzysztof Kozlowski , Alim Akhtar , linux-spi@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240328_105820_693130_04278A95 X-CRM114-Status: GOOD ( 26.64 ) 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 T24gVHVlLCBNYXIgMjYsIDIwMjQgYXQgMTA6MzXigK9QTSBKYWV3b24gS2ltIDxqYWV3b24wMi5r aW1Ac2Ftc3VuZy5jb20+IHdyb3RlOgo+Cj4gVGhlIFNQSSBkYXRhIHNpemUgaXMgc21hbGxlciB0 aGFuIEZJRk8sIGl0IG9wZXJhdGVzIGluIFBJTyBtb2RlLAoKU3BlbGxpbmc6ICJUaGUiIC0+ICJJ ZiB0aGUiCgo+IGFuZCBpZiBpdCBpcyBsYXJnZXIgdGhhbiBGSUZPIG1vZGUsIERNQSBtb2RlIGlz IHNlbGVjdGVkLgo+Cj4gSWYgdGhlIGRhdGEgc2l6ZSBpcyB0aGUgc2FtZSBhcyB0aGUgRklGTyBz aXplLCBpdCBvcGVyYXRlcyBpbiBQSU8gbW9kZQo+IGFuZCBkYXRhIGlzIHNlcGFyYXRlZCBpbnRv IHR3byB0cmFuc2Zlci4gSW4gb3JkZXIgdG8gcHJldmVudCwKCk5pdDogInRyYW5zZmVyIiAtPiAi dHJhbnNmZXJzIiwgInByZXZlbnQiIC0+ICJwcmV2ZW50IGl0IgoKPiBETUEgbW9kZSBtdXN0IGJl IHVzZWQgZnJvbSB0aGUgY2FzZSBvZiBGSUZPIGFuZCBkYXRhIHNpemUuCj4KCllvdSBwcm9iYWJs eSBtZWFuIHRoaXMgY29kZSAoaXQgb2NjdXJzIHR3byB0aW1lcyBpbiB0aGUgZHJpdmVyKToKCiAg ICB4ZmVyLT5sZW4gPSBmaWZvX2xlbiAtIDE7CgpDYW4geW91IHBsZWFzZSBlbGFib3JhdGUgb24g d2h5IGl0J3MgZG9uZSB0aGlzIHdheT8gV2h5IGNhbid0IHdlIGp1c3QKZG8gInhmZXItPmxlbiA9 IGZpZm9fbGVuIiBhbmQgdXNlIHRoZSB3aG9sZSBGSUZPIGZvciB0aGUgdHJhbnNmZXIKaW5zdGVh ZD8gSSBkb24ndCB1bmRlcnN0YW5kIHRoZSBuZWNlc3NpdHkgdG8gc3BsaXQgdGhlIHRyYW5zZmVy IGludG8KdHdvIGNodW5rcyBpZiBpdHMgc2l6ZSBpcyBvZiBGSUZPIGxlbmd0aCAtLSB3b3VsZG4n dCBpdCBmaXQgaW50byBGSUZPCmluIHRoYXQgY2FzZT8gKEknbSBwcmV0dHkgc3VyZSB0aGlzIGNo YW5nZSBpcyBjb3JyZWN0LCBqdXN0IHdhbnQgdG8KdW5kZXJzdGFuZCBob3cgZXhhY3RseSBpdCB3 b3JrcykuCgo+IEZpeGVzOiAxZWU4MDY3MThkNWUgKCJzcGk6IHMzYzY0eHg6IHN1cHBvcnQgaW50 ZXJydXB0IGJhc2VkIHBpbyBtb2RlIikKCkp1c3Qgd29uZGVyIGlmIHRoYXQgZml4ZXMgc29tZSB0 aHJvdWdocHV0IHJlZ3Jlc3Npb24sIG9yIHNvbWV0aGluZwp3b3JzZSAobGlrZSBmYWlsZWQgdHJh bnNmZXJzIHdoZW4gdGhlIHRyYW5zZmVyIHNpemUgaXMgdGhlIHNhbWUgYXMKRklGTyBzaXplKT8K Cj4gU2lnbmVkLW9mZi1ieTogSmFld29uIEtpbSA8amFld29uMDIua2ltQHNhbXN1bmcuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL3NwaS9zcGktczNjNjR4eC5jIHwgNiArKystLS0KPiAgMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3NwaS9zcGktczNjNjR4eC5jIGIvZHJpdmVycy9zcGkvc3BpLXMzYzY0eHguYwo+IGlu ZGV4IDlmY2JlMDQwY2IyZi4uODFlZDVmZGRmODNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3Bp L3NwaS1zM2M2NHh4LmMKPiArKysgYi9kcml2ZXJzL3NwaS9zcGktczNjNjR4eC5jCj4gQEAgLTQz MCw3ICs0MzAsNyBAQCBzdGF0aWMgYm9vbCBzM2M2NHh4X3NwaV9jYW5fZG1hKHN0cnVjdCBzcGlf Y29udHJvbGxlciAqaG9zdCwKPiAgICAgICAgIHN0cnVjdCBzM2M2NHh4X3NwaV9kcml2ZXJfZGF0 YSAqc2RkID0gc3BpX2NvbnRyb2xsZXJfZ2V0X2RldmRhdGEoaG9zdCk7Cj4KPiAgICAgICAgIGlm IChzZGQtPnJ4X2RtYS5jaCAmJiBzZGQtPnR4X2RtYS5jaCkKPiAtICAgICAgICAgICAgICAgcmV0 dXJuIHhmZXItPmxlbiA+IHNkZC0+Zmlmb19kZXB0aDsKPiArICAgICAgICAgICAgICAgcmV0dXJu IHhmZXItPmxlbiA+PSBzZGQtPmZpZm9fZGVwdGg7Cj4KPiAgICAgICAgIHJldHVybiBmYWxzZTsK PiAgfQo+IEBAIC04MjYsMTEgKzgyNiwxMSBAQCBzdGF0aWMgaW50IHMzYzY0eHhfc3BpX3RyYW5z ZmVyX29uZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmhvc3QsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHN0YXR1czsKPiAgICAgICAgIH0KPgo+IC0gICAgICAgaWYgKCFpc19wb2xs aW5nKHNkZCkgJiYgKHhmZXItPmxlbiA+IGZpZm9fbGVuKSAmJgo+ICsgICAgICAgaWYgKCFpc19w b2xsaW5nKHNkZCkgJiYgeGZlci0+bGVuID49IGZpZm9fbGVuICYmCj4gICAgICAgICAgICAgc2Rk LT5yeF9kbWEuY2ggJiYgc2RkLT50eF9kbWEuY2gpIHsKPiAgICAgICAgICAgICAgICAgdXNlX2Rt YSA9IDE7Cj4KCldvdWxkIGJlIG5pY2UgdG8gcmVtb3ZlIHRoaXMgZW1wdHkgbGluZSwgd2hpbGUg YXQgaXQuCgo+IC0gICAgICAgfSBlbHNlIGlmICh4ZmVyLT5sZW4gPj0gZmlmb19sZW4pIHsKPiAr ICAgICAgIH0gZWxzZSBpZiAoeGZlci0+bGVuID4gZmlmb19sZW4pIHsKCkJlbG93IGluIHRoZSBz YW1lIGZ1bmN0aW9uIEkgY2FuIHNlZSBzaW1pbGFyIGNvZGU6CgogICAgICAgICAgICBpZiAodGFy Z2V0X2xlbiA+PSBmaWZvX2xlbikKICAgICAgICAgICAgICAgIHhmZXItPmxlbiA9IGZpZm9fbGVu IC0gMTsKClNob3VsZG4ndCB0aGF0ICdpZicgY29uZGl0aW9uIGJlIGZpeGVkIHRvbz8gT3IgaXQn cyBvayBhcyBpdCBpcz8gKEp1c3QKbm90aWNlZCBpdCBieSBzZWFyY2hpbmcsIG5vdCBzdXJlIG15 c2VsZiwgaGVuY2UgYXNraW5nKS4KCj4gICAgICAgICAgICAgICAgIHR4X2J1ZiA9IHhmZXItPnR4 X2J1ZjsKPiAgICAgICAgICAgICAgICAgcnhfYnVmID0geGZlci0+cnhfYnVmOwo+ICAgICAgICAg ICAgICAgICBvcmlnaW5fbGVuID0geGZlci0+bGVuOwo+IC0tCj4gMi40My4yCj4KPgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=