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 6B6A4E936FE for ; Thu, 5 Oct 2023 05:05:25 +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:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gtJqIMrUw09MEQCmxO0+rnsDRau5Go2KywaMsRsK+A8=; b=RL/au9tcHZam08 BD5sk2Xi6TcZcF3jGmW/bM/xXEGacIU4X7xL/5aJLETsYSkdBlheI0wC7OURGmQiUMOWixuK0G6kl 8Y3BtEG58LMtYmmP7bunT03f4SDIPSAIV3HpX6OlKK5kXlqvy7f6sZrokwgUIHdEVYyqhAqdmaEse whfuxu25kdMEirEFCJ45dkOPWuv9EoKVTyc16IlP2FN/iYZ2vpCf+ZaEdMfwig81qZs66DR52b4ub Git4V3Y/eCmms+pYZ8UerBxjqzmD9ylarK6EyYDLaRyjNpyCtt8dywW72JQ2Do/Yv2kQS8vpNHA3a QuJg52vW6jD4WqMPemPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qoGXW-001QV9-36; Thu, 05 Oct 2023 05:04:46 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qoGXT-001QUM-05 for linux-arm-kernel@lists.infradead.org; Thu, 05 Oct 2023 05:04:45 +0000 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-9b98a699f45so97034466b.3 for ; Wed, 04 Oct 2023 22:04:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1696482278; x=1697087078; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Pk7xhwaEkFwHhfMjiYSi4Y46b4kEa0zBr986kaxm2TY=; b=BE9RHoPV0JzjkTnfUYdqf/ZRdeSOHB07Al1PTbBSsp8YWvyT36SnNh80arHCQhU2Ys e8pjqWT2JM1Vcl+VsKbAVNEl9I0dcjOoIBfYefgqfT7auhSul7kMZdyfNOIBkHAqW3VS MXUCfuS8v58rFVTHp3k5JAlCBC+s/yZBq0oBI5UXUa9j/pueX5PU2EDn92AuWHUe7Fo1 0C/k4rkRYmSrEQlWjYk72sFreAY77AmWGIUFkAykt5jc0Uct0jmm4bLYynxRXT6yRSIA wC1spwywYRqGSesM6I2cqdrkB3XI9D7Xkq0euknutQNDp1vD/D7rNeAFUfpFmHfrzzsp vLBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696482278; x=1697087078; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Pk7xhwaEkFwHhfMjiYSi4Y46b4kEa0zBr986kaxm2TY=; b=BQkpbhZV2FNNLicY+AoGr9ajfwReq/0ZMPcYgCSN84fLmiXVQm0bL0dohafw0HAX1u KG+Di3D+KiC/LJj3GtERMJqlWqhEZEwY4U1VLfPydiE0PD3MxFtCiXAmNRoMyXWtne2p aH/bSitIi2HJPsRkKjrV5G1VbDJ3XGPSK1/ZaDKRvScb2D2+khIzhKYFgtCHoP4fxU10 alh3luXmGUdSkpREi7ys7ZWedjXNMIupgUEcF83CQ4pZrm+FFJlTLxFPKIMHOqbq9zS9 iuNgXSDeq6hHSFJD575g+LuNnklhny1/4s7E+WGpRXxLvn4iC6rHAsUOCKrc6HKTZUUv dOzA== X-Gm-Message-State: AOJu0YzkMFTlXyhlCZ3JacWCsQUHl+wdEcyXYtgOUu39f5rAr2MWI5ka 6q0SQZS1/ZPW5gy6Be0bWAByPQ== X-Google-Smtp-Source: AGHT+IGzJcUaJeonUrdeYzfxApEYs0xmavQL/PnwdaussVLk71huq1WhzcxLhuwdCLhFhyXgP9U4TA== X-Received: by 2002:a17:907:2cd7:b0:9b9:4509:d57a with SMTP id hg23-20020a1709072cd700b009b94509d57amr2161870ejc.13.1696482278069; Wed, 04 Oct 2023 22:04:38 -0700 (PDT) Received: from [192.168.32.2] ([147.161.130.252]) by smtp.gmail.com with ESMTPSA id n2-20020a1709061d0200b009a0955a7ad0sm483292ejh.128.2023.10.04.22.04.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Oct 2023 22:04:37 -0700 (PDT) Message-ID: <45949999-47f5-6811-9709-41abddb18cdf@tuxon.dev> Date: Thu, 5 Oct 2023 08:04:35 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2 11/28] clk: renesas: rzg2l: add a divider clock for RZ/G3S Content-Language: en-US To: Geert Uytterhoeven Cc: mturquette@baylibre.com, sboyd@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, linus.walleij@linaro.org, gregkh@linuxfoundation.org, jirislaby@kernel.org, magnus.damm@gmail.com, catalin.marinas@arm.com, will@kernel.org, quic_bjorande@quicinc.com, konrad.dybcio@linaro.org, arnd@arndb.de, neil.armstrong@linaro.org, prabhakar.mahadev-lad.rj@bp.renesas.com, biju.das.jz@bp.renesas.com, linux-renesas-soc@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230929053915.1530607-1-claudiu.beznea@bp.renesas.com> <20230929053915.1530607-12-claudiu.beznea@bp.renesas.com> From: claudiu beznea In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231004_220443_086742_0780ADC4 X-CRM114-Status: GOOD ( 44.84 ) 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 SGksIEdlZXJ0LAoKT24gMDQuMTAuMjAyMyAxNTozMCwgR2VlcnQgVXl0dGVyaG9ldmVuIHdyb3Rl Ogo+IEhpIENsYXVkaXUsCj4gCj4gT24gRnJpLCBTZXAgMjksIDIwMjMgYXQgNzozOeKAr0FNIENs YXVkaXUgPGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRldj4gd3JvdGU6Cj4+IEZyb206IENsYXVkaXUg QmV6bmVhIDxjbGF1ZGl1LmJlem5lYS51akBicC5yZW5lc2FzLmNvbT4KPj4KPj4gQWRkIGEgZGl2 aWRlciBjbG9jayBkcml2ZXIgZm9yIFJaL0czUy4gVGhpcyB3aWxsIGJlIHVzZWQgaW4gUlovRzNT Cj4+IGJ5IFNESEksIFNQSSwgT0NUQSwgSSwgSTIsIEkzLCBQMCwgUDEsIFAyLCBQMyBjb3JlIGNs b2Nrcy4KPj4gVGhlIGRpdmlkZXIgaGFzIHNvbWUgbGltaXRhdGlvbiBmb3IgU0RISSBhbmQgT0NU QSBjbG9ja3M6Cj4+IC0gU0QgZGl2IGNhbm5vdCBiZSAxIGlmIHBhcmVudCByYXRlIGlzIDgwME1I ego+PiAtIE9DVEEgZGl2IGNhbm5vdCBiZSAxIGlmIHBhcmVudCByYXRlIGlzIDQwME1Iego+PiBG b3IgdGhlc2UgY2xvY2tzIGEgbm90aWZpZXIgY291bGQgYmUgcmVnaXN0ZXJlZCBmcm9tIHBsYXRm b3JtIHNwZWNpZmljCj4+IGNsb2NrIGRyaXZlciBhbmQgcHJvcGVyIGFjdGlvbnMgYXJlIHRha2Vu IGJlZm9yZSBjbG9jayByYXRlIGlzIGNoYW5nZWQsCj4+IGlmIG5lZWRlZC4KPj4KPj4gU2lnbmVk LW9mZi1ieTogQ2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhLnVqQGJwLnJlbmVzYXMuY29t Pgo+PiAtLS0KPj4KPj4gQ2hhbmdlcyBpbiB2MjoKPj4gLSByZW1vdmVkIERJVl9OT1RJRiBtYWNy bwo+IAo+IFRoYW5rcyBmb3IgdGhlIHVwZGF0ZSEKPiAKPj4gLS0tIGEvZHJpdmVycy9jbGsvcmVu ZXNhcy9yemcybC1jcGcuYwo+PiArKysgYi9kcml2ZXJzL2Nsay9yZW5lc2FzL3J6ZzJsLWNwZy5j Cj4+IEBAIC05MSw2ICs5MSwyMiBAQCBzdHJ1Y3Qgc2RfbXV4X2h3X2RhdGEgewo+Pgo+PiAgI2Rl ZmluZSB0b19zZF9tdXhfaHdfZGF0YShfaHcpIGNvbnRhaW5lcl9vZihfaHcsIHN0cnVjdCBzZF9t dXhfaHdfZGF0YSwgaHdfZGF0YSkKPj4KPj4gKy8qKgo+PiArICogc3RydWN0IGRpdl9od19kYXRh IC0gZGl2aWRlciBjbG9jayBoYXJkd2FyZSBkYXRhCj4+ICsgKiBAaHdfZGF0YTogY2xvY2sgaHcg ZGF0YQo+PiArICogQGR0YWJsZTogcG9pbnRlciB0byBkaXZpZGVyIHRhYmxlCj4+ICsgKiBAaW52 YWxpZF9yYXRlOiBpbnZhbGlkIHJhdGUgZm9yIGRpdmlkZXIKPj4gKyAqIEB3aWR0aDogZGl2aWRl ciB3aWR0aAo+PiArICovCj4+ICtzdHJ1Y3QgZGl2X2h3X2RhdGEgewo+PiArICAgICAgIHN0cnVj dCBjbGtfaHdfZGF0YSBod19kYXRhOwo+PiArICAgICAgIGNvbnN0IHN0cnVjdCBjbGtfZGl2X3Rh YmxlICpkdGFibGU7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBpbnZhbGlkX3JhdGU7Cj4+ICsg ICAgICAgdTMyIHdpZHRoOwo+PiArfTsKPj4gKwo+PiArI2RlZmluZSB0b19kaXZfaHdfZGF0YShf aHcpICAgIGNvbnRhaW5lcl9vZihfaHcsIHN0cnVjdCBkaXZfaHdfZGF0YSwgaHdfZGF0YSkKPj4g Kwo+PiAgc3RydWN0IHJ6ZzJsX3BsbDVfcGFyYW0gewo+PiAgICAgICAgIHUzMiBwbDVfZnJhY2lu Owo+PiAgICAgICAgIHU4IHBsNV9yZWZkaXY7Cj4+IEBAIC0yMDAsNiArMjE2LDU0IEBAIGludCBy emcybF9jcGdfc2RfbXV4X2Nsa19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1 bnNpZ25lZCBsb25nIGV2ZW50Cj4+ICAgICAgICAgcmV0dXJuIHJldDsKPj4gIH0KPj4KPj4gK2lu dCByemczc19jcGdfZGl2X2Nsa19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1 bnNpZ25lZCBsb25nIGV2ZW50LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAqZGF0YSkKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgY2xrX25vdGlmaWVyX2RhdGEgKmNuZCA9 IGRhdGE7Cj4+ICsgICAgICAgc3RydWN0IGNsa19odyAqaHcgPSBfX2Nsa19nZXRfaHcoY25kLT5j bGspOwo+PiArICAgICAgIHN0cnVjdCBjbGtfaHdfZGF0YSAqY2xrX2h3X2RhdGEgPSB0b19jbGtf aHdfZGF0YShodyk7Cj4+ICsgICAgICAgc3RydWN0IGRpdl9od19kYXRhICpkaXZfaHdfZGF0YSA9 IHRvX2Rpdl9od19kYXRhKGNsa19od19kYXRhKTsKPj4gKyAgICAgICBzdHJ1Y3QgcnpnMmxfY3Bn X3ByaXYgKnByaXYgPSBjbGtfaHdfZGF0YS0+cHJpdjsKPj4gKyAgICAgICB1MzIgb2ZmID0gR0VU X1JFR19PRkZTRVQoY2xrX2h3X2RhdGEtPmNvbmYpOwo+PiArICAgICAgIHUzMiBzaGlmdCA9IEdF VF9TSElGVChjbGtfaHdfZGF0YS0+Y29uZik7Cj4+ICsgICAgICAgdTMyIGJpdG1hc2sgPSBHRU5N QVNLKEdFVF9XSURUSChjbGtfaHdfZGF0YS0+Y29uZikgLSAxLCAwKTsKPj4gKyAgICAgICB1bnNp Z25lZCBsb25nIGZsYWdzOwo+PiArICAgICAgIGludCByZXQgPSAwOwo+PiArICAgICAgIHUzMiB2 YWw7Cj4+ICsKPj4gKyAgICAgICBpZiAoZXZlbnQgIT0gUFJFX1JBVEVfQ0hBTkdFIHx8ICFkaXZf aHdfZGF0YS0+aW52YWxpZF9yYXRlIHx8Cj4+ICsgICAgICAgICAgIGRpdl9od19kYXRhLT5pbnZh bGlkX3JhdGUgJSBjbmQtPm5ld19yYXRlKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g Cj4gTk9USUZZX0RPTkUgZm9yIGV2ZW50ICE9IFBSRV9SQVRFX0NIQU5HRQo+IE5PVElGWV9PSyBm b3IgdGhlIG90aGVyIGNhc2VzCgpTdXJlIQoKPiAKPj4gKwo+PiArICAgICAgIHNwaW5fbG9ja19p cnFzYXZlKCZwcml2LT5ybXdfbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsgICAgICAgdmFsID0gcmVh ZGwocHJpdi0+YmFzZSArIG9mZik7Cj4+ICsgICAgICAgdmFsID4+PSBzaGlmdDsKPj4gKyAgICAg ICB2YWwgJj0gYml0bWFzazsKPj4gKwo+PiArICAgICAgIC8qCj4+ICsgICAgICAgICogVGhlcmUg YXJlIGRpZmZlcmVudCBjb25zdHJhaW50cyBmb3IgdGhlIHVzZXIgb2YgdGhpcyBub3RpZmllcnMg YXMgZm9sbG93czoKPj4gKyAgICAgICAgKiAxLyBTRCBkaXYgY2Fubm90IGJlIDEgKHZhbCA9PSAw KSBpZiBwYXJlbnQgcmF0ZSBpcyA4MDBNSHoKPj4gKyAgICAgICAgKiAyLyBPQ1RBIGRpdiBjYW5u b3QgYmUgMSAodmFsID09IDApIGlmIHBhcmVudCByYXRlIGlzIDQwME1Iego+PiArICAgICAgICAq IEFzIFNEIGNhbiBoYXZlIG9ubHkgb25lIHBhcmVudCBoYXZpbmcgODAwTUh6IGFuZCBPQ1RBIGRp diBjYW4gaGF2ZQo+PiArICAgICAgICAqIG9ubHkgb25lIHBhcmVudCBoYXZpbmcgNDAwTUh6IHdl IHRvb2sgaW50byBhY2NvdW50IHRoZSBwYXJlbnQgcmF0ZQo+PiArICAgICAgICAqIGF0IHRoZSBi ZWdpbm5pbmcgb2YgZnVuY3Rpb24gKGJ5IGNoZWNraW5nIGludmFsaWRfcmF0ZSAlIG5ld19yYXRl KS4KPj4gKyAgICAgICAgKiBOb3cgaXQgaXMgdGltZSB0byBjaGVjayB0aGUgaGFyZHdhcmUgZGl2 aWRlciBhbmQgdXBkYXRlIGl0IGFjY29yZGluZ2x5Lgo+PiArICAgICAgICAqLwo+PiArICAgICAg IGlmICghdmFsKSB7Cj4+ICsgICAgICAgICAgICAgICB3cml0ZWwoKChiaXRtYXNrIDw8IHNoaWZ0 KSA8PCAxNikgfCBCSVQoc2hpZnQpLCBwcml2LT5iYXNlICsgb2ZmKTsKPiAKPiBIYXZlbid0IHlv dSBleGNoYW5nZWQgdGhlIChzaW5nbGUpIHdyaXRlLWVuYWJsZSBiaXQgYW5kIHRoZSAobXVsdGkt Yml0KQo+IGRpdmlzaW9uIHJhdGlvIHNldHRpbmc/ICBBY2NvcmRpbmcgdG8gdGhlIGRvY3MsIHRo ZSB3cml0ZS1lbmFibGUgYml0Cj4gaXMgYXQgMTYgKyBzaGlmdCwgd2hpbGUgdGhlIGRpdmlzaW9u IHJhdGlvIGlzIGF0IHNoaWZ0LgoKSW5kZWVkLCBJIG1lc3NlZCB0aGlzIHVwLiBUaG91Z2gsIEkn dmUgdGVzdGVkIHF1aXRlIHNvbWUgdXNlIGNhc2VzIGFuZCB0aGV5CmFsbCB3b3JrZWQuLi4gSSds bCByZXZpZXcgdGhpcyBhbnl3YXksIHRoYW5rcyBmb3IgcG9pbnRpbmcgaXQgdXAuCgo+IAo+IEFs c28sIHVzaW5nIGJpdG1hc2sgYXMgdGhlIGRpdmlzaW9uIHJhdGlvIG1lYW5zIHRoZSBtYXhpbXVt IHZhbHVlCj4gdGhhdCBmaXRzIGluIHRoZSBiaXRmaWVsZCwgd2hpY2ggd291bGQgYmUgYSBwcm9o aWJpdGVkIHNldHRpbmcgaW4gY2FzZQo+IG9mIERJVl9PQ1RBLgo+IAo+IE5vdywgbG9va2luZyBh dCByemczc19kaXZfY2xrX3NldF9yYXRlKCkgYmVsb3csIHBlcmhhcHMgeW91IGp1c3Qgd2FudGVk Cj4gdG8gc2V0IHRoZSByYXRpbyB0byB2YWx1ZSB0byAxLCBidXQgdXNlZCB0aGUgd3Jvbmcgc2l6 ZSBmb3IgYml0bWFzaz8KClllcywgdGhlIGlkZWEgd2FzIHRvIHNldCBhIHNhZmUgZGl2aWRlci4K Cj4gCj4+ICsgICAgICAgICAgICAgICAvKiBXYWl0IGZvciB0aGUgdXBkYXRlIGRvbmUuICovCj4+ ICsgICAgICAgICAgICAgICByZXQgPSByemcybF9jcGdfd2FpdF9jbGtfdXBkYXRlX2RvbmUocHJp di0+YmFzZSwgY2xrX2h3X2RhdGEtPnNjb25mKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAg ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5ybXdfbG9jaywgZmxhZ3MpOwo+PiArCj4+ ICsgICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIocHJpdi0+ZGV2LCAi RmFpbGVkIHRvIGRvd25ncmFkZSB0aGUgZGl2XG4iKTsKPiAKPiBhbmQgcmV0dXJuIE5PVElGWV9C QUQKClN1cmUhCgo+IAo+PiArCj4+ICsgICAgICAgcmV0dXJuIHJldDsKPiAKPiBOT1RJRllfT0sK ClN1cmUhCgo+IAo+PiArfQo+PiArCj4+ICBzdGF0aWMgaW50IHJ6ZzJsX3JlZ2lzdGVyX25vdGlm aWVyKHN0cnVjdCBjbGtfaHcgKmh3LCBjb25zdCBzdHJ1Y3QgY3BnX2NvcmVfY2xrICpjb3JlLAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByemcybF9jcGdfcHJp diAqcHJpdikKPj4gIHsKPj4gQEAgLTIxNyw2ICsyODEsMTQ2IEBAIHN0YXRpYyBpbnQgcnpnMmxf cmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IGNsa19odyAqaHcsIGNvbnN0IHN0cnVjdCBjcGdfY29y ZV9jbGsKPj4gICAgICAgICByZXR1cm4gY2xrX25vdGlmaWVyX3JlZ2lzdGVyKGh3LT5jbGssIG5i KTsKPj4gIH0KPj4KPj4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIHJ6ZzNzX2Rpdl9jbGtfcmVjYWxj X3JhdGUoc3RydWN0IGNsa19odyAqaHcsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPj4gK3sKPj4gKyAg ICAgICBzdHJ1Y3QgY2xrX2h3X2RhdGEgKmNsa19od19kYXRhID0gdG9fY2xrX2h3X2RhdGEoaHcp Owo+PiArICAgICAgIHN0cnVjdCBkaXZfaHdfZGF0YSAqZGl2X2h3X2RhdGEgPSB0b19kaXZfaHdf ZGF0YShjbGtfaHdfZGF0YSk7Cj4+ICsgICAgICAgc3RydWN0IHJ6ZzJsX2NwZ19wcml2ICpwcml2 ID0gY2xrX2h3X2RhdGEtPnByaXY7Cj4+ICsgICAgICAgdTMyIHZhbDsKPj4gKwo+PiArICAgICAg IHZhbCA9IHJlYWRsKHByaXYtPmJhc2UgKyBHRVRfUkVHX09GRlNFVChjbGtfaHdfZGF0YS0+Y29u ZikpOwo+PiArICAgICAgIHZhbCA+Pj0gR0VUX1NISUZUKGNsa19od19kYXRhLT5jb25mKTsKPj4g KyAgICAgICB2YWwgJj0gR0VOTUFTSyhHRVRfV0lEVEgoY2xrX2h3X2RhdGEtPmNvbmYpIC0gMSwg MCk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gZGl2aWRlcl9yZWNhbGNfcmF0ZShodywgcGFyZW50 X3JhdGUsIHZhbCwgZGl2X2h3X2RhdGEtPmR0YWJsZSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDTEtfRElWSURFUl9ST1VORF9DTE9TRVNULCBkaXZfaHdfZGF0YS0+d2lk dGgpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCByemczc19kaXZfY2xrX2lzX3JhdGVfdmFs aWQoY29uc3QgdW5zaWduZWQgbG9uZyBpbnZhbGlkX3JhdGUsIHVuc2lnbmVkIGxvbmcgcmF0ZSkK Pj4gK3sKPj4gKyAgICAgICBpZiAoaW52YWxpZF9yYXRlICYmIHJhdGUgPj0gaW52YWxpZF9yYXRl KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+PiArCj4+ICsgICAgICAgcmV0dXJu IHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBsb25nIHJ6ZzNzX2Rpdl9jbGtfcm91bmRfcmF0 ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcGFyZW50X3JhdGUpCj4+ICt7 Cj4+ICsgICAgICAgc3RydWN0IGNsa19od19kYXRhICpjbGtfaHdfZGF0YSA9IHRvX2Nsa19od19k YXRhKGh3KTsKPj4gKyAgICAgICBzdHJ1Y3QgZGl2X2h3X2RhdGEgKmRpdl9od19kYXRhID0gdG9f ZGl2X2h3X2RhdGEoY2xrX2h3X2RhdGEpOwo+PiArICAgICAgIGxvbmcgcm91bmRfcmF0ZTsKPj4g Kwo+PiArICAgICAgIHJvdW5kX3JhdGUgPSBkaXZpZGVyX3JvdW5kX3JhdGUoaHcsIHJhdGUsIHBh cmVudF9yYXRlLCBkaXZfaHdfZGF0YS0+ZHRhYmxlLAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGl2X2h3X2RhdGEtPndpZHRoLCBDTEtfRElWSURFUl9ST1VORF9D TE9TRVNUKTsKPj4gKwo+PiArICAgICAgIGlmICghcnpnM3NfZGl2X2Nsa19pc19yYXRlX3ZhbGlk KGRpdl9od19kYXRhLT5pbnZhbGlkX3JhdGUsIHJvdW5kX3JhdGUpKQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gCj4gU2hvdWxkbid0IHRoaXMgcmV0dXJuIHRoZSBjbG9zZXN0 IHJhdGUgdGhhdCBpcyBhY3R1YWxseSBzdXBwb3J0ZWQgaW5zdGVhZD8KClRoZSBkaXZpZGVyX3Jv dW5kX3JhdGUoKSBhbHJlYWR5IGNob29zZSBpdCBhcyB0aGUgY2xvc2VzdCByYXRlIHRoYXQgaXQg aXMKYWN0dWFsbHkgbm90IHN1cHBvcnRlZCwgdGh1cyBJIGNob3NlIHRvIGp1c3QgcmV0dXJuIC1F SU5WQUwuIEkgY2hvc2UgaXQKdGhpcyB3YXkgdG8gdXNlIGRpdmlkZXJfcm91bmRfcmF0ZSgpLiBE b24ndCBrbm93IGlmIHRoZXJlIGlzIHdheSBhcm91bmQKdGhpcyB1c2luZyBkaXZpZGVyX3JvdW5k X3JhdGUoKSBJJ2xsIGhhdmUgYSBsb29rLgoKPiAKPj4gKwo+PiArICAgICAgIHJldHVybiByb3Vu ZF9yYXRlOwo+PiArfQo+IAo+IEJ1dCBwbGVhc2UgaW1wbGVtZW50IC5kZXRlcm1pbmVfcmF0ZSgp IGluc3RlYWQgb2YgLnJvdW5kX3JhdGUoKSBpbgo+IG5ldyBkcml2ZXJzLgoKSW5kZWVkLCBJIG1p c3NlZCB0aGlzIG9uZS4KCj4gCj4+ICsKPj4gK3N0YXRpYyBpbnQgcnpnM3NfZGl2X2Nsa19zZXRf cmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPj4gK3sK Pj4gKyAgICAgICBzdHJ1Y3QgY2xrX2h3X2RhdGEgKmNsa19od19kYXRhID0gdG9fY2xrX2h3X2Rh dGEoaHcpOwo+PiArICAgICAgIHN0cnVjdCBkaXZfaHdfZGF0YSAqZGl2X2h3X2RhdGEgPSB0b19k aXZfaHdfZGF0YShjbGtfaHdfZGF0YSk7Cj4+ICsgICAgICAgc3RydWN0IHJ6ZzJsX2NwZ19wcml2 ICpwcml2ID0gY2xrX2h3X2RhdGEtPnByaXY7Cj4+ICsgICAgICAgdTMyIG9mZiA9IEdFVF9SRUdf T0ZGU0VUKGNsa19od19kYXRhLT5jb25mKTsKPj4gKyAgICAgICB1MzIgc2hpZnQgPSBHRVRfU0hJ RlQoY2xrX2h3X2RhdGEtPmNvbmYpOwo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ ICsgICAgICAgdTMyIGJpdG1hc2ssIHZhbDsKPj4gKyAgICAgICBpbnQgcmV0Owo+PiArCj4+ICsg ICAgICAgLyoKPj4gKyAgICAgICAgKiBTb21lIGRpdmlkZXJzIGNhbm5vdCBzdXBwb3J0IHNvbWUg cmF0ZXM6Cj4+ICsgICAgICAgICogLSBTRCBkaXYgY2Fubm90IHN1cHBvcnQgODAwIE1IeiB3aGVu IHBhcmVudCBpcyBAODAwTUh6IGFuZCBkaXYgPSAxCj4+ICsgICAgICAgICogLSBPQ1RBIGRpdiBj YW5ub3Qgc3VwcG9ydCA0MDAgTUh6IHdoZW4gcGFyZW50IGlzIEA0MDBNSHogYW5kIGRpdiA9IDEK Pj4gKyAgICAgICAgKiBDaGVjayB0aGVzZSBzY2VuYXJpb3MuCj4+ICsgICAgICAgICovCj4+ICsg ICAgICAgaWYgKCFyemczc19kaXZfY2xrX2lzX3JhdGVfdmFsaWQoZGl2X2h3X2RhdGEtPmludmFs aWRfcmF0ZSwgcmF0ZSkpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAKPiBD YW4gdGhpcyBhY3R1YWxseSBoYXBwZW4/IFdvdWxkbid0IHRoZSBub3RpZmllciBoYXZlIHByZXZl bnRlZCB1cyBmcm9tCj4gZ2V0dGluZyBoZXJlPwoKSSByZW1lbWJlciBJIGFkZGVkIGl0IGhlcmUg YXMgYSByZXN1bHQgb2YgdGVzdGluZy4gSSdsbCBkb3VibGUgY2hlY2sgaXQuCgo+IAo+PiArCj4+ ICsgICAgICAgdmFsID0gZGl2aWRlcl9nZXRfdmFsKHJhdGUsIHBhcmVudF9yYXRlLCBkaXZfaHdf ZGF0YS0+ZHRhYmxlLCBkaXZfaHdfZGF0YS0+d2lkdGgsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENMS19ESVZJREVSX1JPVU5EX0NMT1NFU1QpOwo+PiArCj4+ICsgICAgICAgYml0 bWFzayA9IChHRU5NQVNLKEdFVF9XSURUSChjbGtfaHdfZGF0YS0+Y29uZikgLSAxLCAwKSA8PCBz aGlmdCkgPDwgMTY7Cj4gCj4gSXMgYml0bWFzayB0aGUgKHNpbmdsZSkgd3JpdGUtZW5hYmxlIGJp dD8KPiAKPiBJZiB5ZXMsIHRoYXQgc2hvdWxkIGJlIEJJVCgxNiArIHNoaWZ0KSwgYW5kIHRoZSB2 YXJpYWJsZSBzaG91bGQgYmUKPiByZW5hbWVkIHRvIHJlZmxlY3QgdGhhdC4KPiAKPiBJIGd1ZXNz IHRoZXJlIHNob3VsZCBiZSBhIGdlbmVyYWwgIiNkZWZpbmUgQ1BHX1dFTiBCSVQoMTYpIiwgdGhl biB5b3UKPiBjYW4gc2ltcGx5IHVzZQo+IAo+ICAgICB3cml0ZWwoKENQR19XRU4gfCB2YWwpIDw8 IHNoaWZ0LCAuLi4pOwoKT0suCgo+IAo+PiArCj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUo JnByaXYtPnJtd19sb2NrLCBmbGFncyk7Cj4+ICsgICAgICAgd3JpdGVsKGJpdG1hc2sgfCAodmFs IDw8IHNoaWZ0KSwgcHJpdi0+YmFzZSArIG9mZik7Cj4+ICsgICAgICAgLyogV2FpdCBmb3IgdGhl IHVwZGF0ZSBkb25lLiAqLwo+PiArICAgICAgIHJldCA9IHJ6ZzJsX2NwZ193YWl0X2Nsa191cGRh dGVfZG9uZShwcml2LT5iYXNlLCBjbGtfaHdfZGF0YS0+c2NvbmYpOwo+PiArICAgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPnJtd19sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKyAgICAg ICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMg cnpnM3NfZGl2X2Nsa19vcHMgPSB7Cj4+ICsgICAgICAgLnJlY2FsY19yYXRlID0gcnpnM3NfZGl2 X2Nsa19yZWNhbGNfcmF0ZSwKPj4gKyAgICAgICAucm91bmRfcmF0ZSA9IHJ6ZzNzX2Rpdl9jbGtf cm91bmRfcmF0ZSwKPj4gKyAgICAgICAuc2V0X3JhdGUgPSByemczc19kaXZfY2xrX3NldF9yYXRl LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBjbGsgKiBfX2luaXQKPj4gK3J6ZzNzX2Nw Z19kaXZfY2xrX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBjcGdfY29yZV9jbGsgKmNvcmUsIHN0cnVj dCBjbGsgKipjbGtzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIF9faW9tZW0g KmJhc2UsIHN0cnVjdCByemcybF9jcGdfcHJpdiAqcHJpdikKPj4gK3sKPj4gKyAgICAgICBzdHJ1 Y3QgZGl2X2h3X2RhdGEgKmRpdl9od19kYXRhOwo+PiArICAgICAgIHN0cnVjdCBjbGtfaW5pdF9k YXRhIGluaXQgPSB7fTsKPj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgY2xrX2Rpdl90YWJsZSAqY2xr dDsKPj4gKyAgICAgICBzdHJ1Y3QgY2xrX2h3ICpjbGtfaHc7Cj4+ICsgICAgICAgY29uc3Qgc3Ry dWN0IGNsayAqcGFyZW50Owo+PiArICAgICAgIGNvbnN0IGNoYXIgKnBhcmVudF9uYW1lOwo+PiAr ICAgICAgIHUzMiBtYXg7Cj4+ICsgICAgICAgaW50IHJldDsKPj4gKwo+PiArICAgICAgIHBhcmVu dCA9IGNsa3NbY29yZS0+cGFyZW50ICYgMHhmZmZmXTsKPj4gKyAgICAgICBpZiAoSVNfRVJSKHBh cmVudCkpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX0NBU1QocGFyZW50KTsKPj4gKwo+ PiArICAgICAgIHBhcmVudF9uYW1lID0gX19jbGtfZ2V0X25hbWUocGFyZW50KTsKPj4gKwo+PiAr ICAgICAgIGRpdl9od19kYXRhID0gZGV2bV9remFsbG9jKHByaXYtPmRldiwgc2l6ZW9mKCpkaXZf aHdfZGF0YSksIEdGUF9LRVJORUwpOwo+PiArICAgICAgIGlmICghZGl2X2h3X2RhdGEpCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4gKwo+PiArICAgICAgIGlu aXQubmFtZSA9IGNvcmUtPm5hbWU7Cj4+ICsgICAgICAgaW5pdC5mbGFncyA9IGNvcmUtPmZsYWc7 Cj4+ICsgICAgICAgaW5pdC5vcHMgPSAmcnpnM3NfZGl2X2Nsa19vcHM7Cj4+ICsgICAgICAgaW5p dC5wYXJlbnRfbmFtZXMgPSAmcGFyZW50X25hbWU7Cj4+ICsgICAgICAgaW5pdC5udW1fcGFyZW50 cyA9IDE7Cj4+ICsKPj4gKyAgICAgICAvKiBHZXQgdGhlIG1heGltdW0gZGl2aWRlciB0byByZXRy aWV2ZSBkaXYgd2lkdGguICovCj4+ICsgICAgICAgZm9yIChjbGt0ID0gY29yZS0+ZHRhYmxlOyBj bGt0LT5kaXY7IGNsa3QrKykgewo+PiArICAgICAgICAgICAgICAgaWYgKG1heCA8IGNsa3QtPmRp dikKPiAKPiAibWF4IiBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQKClllcywgeW91J3JlIHJpZ2h0LgoK VGhhbmsgeW91IGZvciB5b3VyIHJldmlldywKQ2xhdWRpdSBCZXpuZWEKCj4gCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIG1heCA9IGNsa3QtPmRpdjsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICBkaXZfaHdfZGF0YS0+aHdfZGF0YS5wcml2ID0gcHJpdjsKPj4gKyAgICAgICBkaXZfaHdf ZGF0YS0+aHdfZGF0YS5jb25mID0gY29yZS0+Y29uZjsKPj4gKyAgICAgICBkaXZfaHdfZGF0YS0+ aHdfZGF0YS5zY29uZiA9IGNvcmUtPnNjb25mOwo+PiArICAgICAgIGRpdl9od19kYXRhLT5kdGFi bGUgPSBjb3JlLT5kdGFibGU7Cj4+ICsgICAgICAgZGl2X2h3X2RhdGEtPmludmFsaWRfcmF0ZSA9 IGNvcmUtPmludmFsaWRfcmF0ZTsKPj4gKyAgICAgICBkaXZfaHdfZGF0YS0+d2lkdGggPSBmbHMo bWF4KSAtIDE7Cj4gCj4gSXNuJ3QgdGhhdAo+PiArCj4+ICsgICAgICAgY2xrX2h3ID0gJmRpdl9o d19kYXRhLT5od19kYXRhLmh3Owo+PiArICAgICAgIGNsa19ody0+aW5pdCA9ICZpbml0Owo+PiAr Cj4+ICsgICAgICAgcmV0ID0gZGV2bV9jbGtfaHdfcmVnaXN0ZXIocHJpdi0+ZGV2LCBjbGtfaHcp Owo+PiArICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUihy ZXQpOwo+PiArCj4+ICsgICAgICAgcmV0ID0gcnpnMmxfcmVnaXN0ZXJfbm90aWZpZXIoY2xrX2h3 LCBjb3JlLCBwcml2KTsKPj4gKyAgICAgICBpZiAocmV0KSB7Cj4+ICsgICAgICAgICAgICAgICBk ZXZfZXJyKHByaXYtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBub3RpZmllciBmb3IgJXNcbiIs Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPm5hbWUpOwo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXR1 cm4gY2xrX2h3LT5jbGs7Cj4+ICt9Cj4gCj4gR3J7b2V0amUsZWV0aW5nfXMsCj4gCj4gICAgICAg ICAgICAgICAgICAgICAgICAgR2VlcnQKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK