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 22E92C46CD2 for ; Sat, 6 Jan 2024 15:27:48 +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:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yADHm6NTRuAA/zOSN1NDVCj/DNLHlJOJKlk5KSzFeIA=; b=VUjya/WdZb9yC/ XW+M3c/PMt5fqPWTqXk19uezwlbf5Lr2oP1zu9l21AlYT+2KkTVV7eSvfIVtxhL+sUApA/uuc7aGC ggpyz5sRSHkLf8rhZrvmqwfrah3xLaNMUEnJpmXw4Vzz+L5orTEcCnn/8EwOmBONNMuep9RWvCUZN i5ZJwd5z5pZJFMbXD4wBNpR8VKZL+2xDkjUu7EGBSbTL7svoZsFmXF8YuKLU9MeKhEGcIWQp5kJqR /xLuinFR3PKdRKo8j0c9DzG9mluTa4GM5vRA11MwanQfkRyUZMSyadHs+8Z4ox53bDm0wKJaaPACy H3lZpOM2eoC3BzRnMu+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rM8a1-001Vrs-0q; Sat, 06 Jan 2024 15:27:21 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rM8Zx-001VrB-2M for linux-arm-kernel@lists.infradead.org; Sat, 06 Jan 2024 15:27:19 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-6da202aa138so445426b3a.2 for ; Sat, 06 Jan 2024 07:27:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704554835; x=1705159635; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=IGnHddRRR39bPJdc9yil/sTAP9OrR9P0NakHbvwB6io=; b=KYW6051T0HFT5eYTCHwHYQAV0a0Ph+ickt5fqwXA16eUxHy8Gqp4L5PKD2fJ1RZnyc R676EKKKQ+dUrHDIBWiVasXs5FEGaCa6O22QxfcBjpMnHU+w/nlv5BWdZT9pmy+n+cjs xSHPuyCXy9M0TFwU+H/WI/zRmJDTzVvdJpSBe22gWvJHvtehCPEYIZjc5UcnOAh7wlQR 4DqmApfO3v/JXspWzV/pLt533mZj4YLyo6B1zD74aqyAZWo11ttn3q5WV60vliLIEKGk s5kTzha5Ga40GEvHPlQgJMmuJ2xxarexzMdxNF9aHvOfOreSsla5oocV+cpQPuCXJAnK SEpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704554835; x=1705159635; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IGnHddRRR39bPJdc9yil/sTAP9OrR9P0NakHbvwB6io=; b=FBnxD+CnxVmgyVzxzzPQ5zlYrIXop3HB6EZ02q/lNTyKxHShIftWaeEj4oLMZY2+FM fJhtlAXclXa18ZkAJHgvxIWZYWCVkHqCf7tRIpFvDdyfIOJNGx02eq4DPBFClnc7c+Y6 /nGfgD2HtubWQz9vBmvdnbVOB6nPBDhYadopSZC28xBsJMfIdKHdwlgoAndK95BWMXNT WHkiImdy95wQT8U5sPL/n2/SpVyA5p70dUwqMgmUe7u9OIahh8GEZLFH3fLkoSU5NW8I +RnlMm1yYzNe2BgjN5lDs1KOaKFbCxCOqQVjM4MYHa2HYOqRHhhJ4EvXBkIBbVuw2j9/ Zyww== X-Gm-Message-State: AOJu0YzyZpQRLTv3kjNrmWntOZZ0NwZUod+MaAsktQb4wThfX6Ehkpfu 6J1Sk1hvPt8wEv4AkVns5ta7ah5t2hWG X-Google-Smtp-Source: AGHT+IG6/ogh81hP2GuC/tJj4VtpQbaF24F7gXWXt/dWAVTZ98B31mEVpIdxzv2ekE28yV9KXpz+9Q== X-Received: by 2002:a05:6a20:12c6:b0:199:2927:45 with SMTP id v6-20020a056a2012c600b0019929270045mr1215916pzg.101.1704554835437; Sat, 06 Jan 2024 07:27:15 -0800 (PST) Received: from thinkpad ([103.197.115.97]) by smtp.gmail.com with ESMTPSA id o23-20020a056a001b5700b006cecaff9e29sm3202904pfv.128.2024.01.06.07.27.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jan 2024 07:27:15 -0800 (PST) Date: Sat, 6 Jan 2024 20:57:08 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: krzysztof.kozlowski@linaro.org, bhelgaas@google.com, conor+dt@kernel.org, devicetree@vger.kernel.org, festevam@gmail.com, helgaas@kernel.org, hongxing.zhu@nxp.com, imx@lists.linux.dev, kernel@pengutronix.de, krzysztof.kozlowski+dt@linaro.org, kw@linux.com, l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lpieralisi@kernel.org, robh@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org Subject: Re: [PATCH v7 01/16] PCI: imx6: Simplify clock handling by using bulk_clk_*() function Message-ID: <20240106152708.GD2512@thinkpad> References: <20231227182727.1747435-1-Frank.Li@nxp.com> <20231227182727.1747435-2-Frank.Li@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20231227182727.1747435-2-Frank.Li@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240106_072717_771293_5537AC02 X-CRM114-Status: GOOD ( 33.04 ) 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 T24gV2VkLCBEZWMgMjcsIDIwMjMgYXQgMDE6Mjc6MTJQTSAtMDUwMCwgRnJhbmsgTGkgd3JvdGU6 CgpTdWJqZWN0IG1lbnRpb25zLCAnYnVsa19jbGsnIEFQSXMgYnV0IHRoZXJlIGlzIG5vIHN1Y2gg dGhpbmcuIEl0IHNob3VsZCBiZQonY2xrX2J1bGsoKScgQVBJcy4KCj4gUmVmYWN0b3JzIHRoZSBj bG9jayBoYW5kbGluZyBsb2dpYy4gQWRkcyBjbGtfbmFtZXNbXSBkZWZpbmUgaW4gZHJ2ZGF0YS4K PiBVc2luZyBjbGtfYnVsayooKSBhcGkgc2ltcGxpZmllcyB0aGUgY29kZS4KPiAKCkkndmUgbWVu dGlvbmVkIHRoaXMgbWFueSB0aW1lcyBpbiB0aGUgcGFzdC4gQnV0IGxldCBtZSByZWl0ZXJhdGUg aGVyZSBhZ2FpbjoKCkNvbW1pdCBtZXNzYWdlIHNob3VsZCBiZSBpbiBpbXBlcmF0aXZlIG1vb2Qg YXMgcGVyIExpbnV4IEtlcm5lbCBydWxlcyBmb3IKc3VibWl0dGluZyBwYXRjaGVzLiBQbGVhc2Ug c2VlIGhlcmU6CkRvY3VtZW50YXRpb24vcHJvY2Vzcy9zdWJtaXR0aW5nLXBhdGNoZXMucnN0CgpU aGUgcmVsZXZhbnQgcGFydCBpczoKCiJEZXNjcmliZSB5b3VyIGNoYW5nZXMgaW4gaW1wZXJhdGl2 ZSBtb29kLCBlLmcuICJtYWtlIHh5enp5IGRvIGZyb3R6IgppbnN0ZWFkIG9mICJbVGhpcyBwYXRj aF0gbWFrZXMgeHl6enkgZG8gZnJvdHoiIG9yICJbSV0gY2hhbmdlZCB4eXp6eQp0byBkbyBmcm90 eiIsIGFzIGlmIHlvdSBhcmUgZ2l2aW5nIG9yZGVycyB0byB0aGUgY29kZWJhc2UgdG8gY2hhbmdl Cml0cyBiZWhhdmlvdXIuIgoKUGxlYXNlIHVzZSB0aGlzIHNhbWUgZm9ybWF0IGZvciByZXN0IG9m IHRoZSBwYXRjaGVzIGFzIHdlbGwgZm9yIGZ1dHVyZSBvbmVzLgoKPiBTaWduZWQtb2ZmLWJ5OiBG cmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KPiAtLS0KPiAKPiBOb3RlczoKPiAgICAgQ2hhbmdl IGZyb20gdjQgdG8gdjUKPiAgICAgLSB1cGRhdGUgY29tbWl0IG1lc3NhZ2UKPiAgICAgLSBkaXJl Y3QgdXNpbmcgY2xrIG5hbWUgbGlzdCwgaW5zdGVhZCBvZiBtYWNybwo+ICAgICAtIHN0aWxsIGtl ZXAgY2FjdWxhdGUgY2xrIGxpc3QgY291bnQgYmVjYXVzZSBzaXplb2YgcmV0dXJuIHByZSBhbGxv Y2F0ZWQKPiAgICAgYXJyYXkgc2l6ZS4KPiAgICAgCj4gICAgIENoYW5nZSBmcm9tIHYzIHRvIHY0 Cj4gICAgIC0gdXNpbmcgY2xrX2J1bGtfKigpIEFQSQo+ICAgICBDaGFuZ2UgZnJvbSB2MSB0byB2 Mwo+ICAgICAtIG5vbmUKPiAKPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYu YyB8IDEyNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMzUg aW5zZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3 Yy9wY2ktaW14Ni5jCj4gaW5kZXggNzQ3MDMzNjJhZWVjNy4uNTBkOWZhYWExN2Y3MSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jCj4gKysrIGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYwo+IEBAIC02MSwxMiArNjEsMTUgQEAg ZW51bSBpbXg2X3BjaWVfdmFyaWFudHMgewo+ICAjZGVmaW5lIElNWDZfUENJRV9GTEFHX0lNWDZf U1BFRURfQ0hBTkdFCUJJVCgxKQo+ICAjZGVmaW5lIElNWDZfUENJRV9GTEFHX1NVUFBPUlRTX1NV U1BFTkQJCUJJVCgyKQo+ICAKPiArI2RlZmluZSBJTVg2X1BDSUVfTUFYX0NMS1MgICAgICAgNgo+ ICsKPiAgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhIHsKPiAgCWVudW0gaW14Nl9wY2llX3Zhcmlh bnRzIHZhcmlhbnQ7Cj4gIAllbnVtIGR3X3BjaWVfZGV2aWNlX21vZGUgbW9kZTsKPiAgCXUzMiBm bGFnczsKPiAgCWludCBkYmlfbGVuZ3RoOwo+ICAJY29uc3QgY2hhciAqZ3ByOwo+ICsJY29uc3Qg Y2hhciAqY2xrX25hbWVzW0lNWDZfUENJRV9NQVhfQ0xLU107Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qg aW14Nl9wY2llIHsKPiBAQCAtNzQsMTEgKzc3LDggQEAgc3RydWN0IGlteDZfcGNpZSB7Cj4gIAlp bnQJCQlyZXNldF9ncGlvOwo+ICAJYm9vbAkJCWdwaW9fYWN0aXZlX2hpZ2g7Cj4gIAlib29sCQkJ bGlua19pc191cDsKPiAtCXN0cnVjdCBjbGsJCSpwY2llX2J1czsKPiAtCXN0cnVjdCBjbGsJCSpw Y2llX3BoeTsKPiAtCXN0cnVjdCBjbGsJCSpwY2llX2luYm91bmRfYXhpOwo+IC0Jc3RydWN0IGNs awkJKnBjaWU7Cj4gLQlzdHJ1Y3QgY2xrCQkqcGNpZV9hdXg7Cj4gKwlzdHJ1Y3QgY2xrX2J1bGtf ZGF0YQljbGtzW0lNWDZfUENJRV9NQVhfQ0xLU107Cj4gKwl1MzIJCQljbGtzX2NudDsKPiAgCXN0 cnVjdCByZWdtYXAJCSppb211eGNfZ3ByOwo+ICAJdTE2CQkJbXNpX2N0cmw7Cj4gIAl1MzIJCQlj b250cm9sbGVyX2lkOwo+IEBAIC00MDcsMTMgKzQwNywxOCBAQCBzdGF0aWMgdm9pZCBpbXg3ZF9w Y2llX3dhaXRfZm9yX3BoeV9wbGxfbG9jayhzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4g IAo+ICBzdGF0aWMgaW50IGlteDZfc2V0dXBfcGh5X21wbGwoc3RydWN0IGlteDZfcGNpZSAqaW14 Nl9wY2llKQo+ICB7Cj4gLQl1bnNpZ25lZCBsb25nIHBoeV9yYXRlID0gY2xrX2dldF9yYXRlKGlt eDZfcGNpZS0+cGNpZV9waHkpOwo+ICsJdW5zaWduZWQgbG9uZyBwaHlfcmF0ZSA9IDA7Cj4gIAlp bnQgbXVsdCwgZGl2Owo+ICAJdTE2IHZhbDsKPiArCWludCBpOwo+ICAKPiAgCWlmICghKGlteDZf cGNpZS0+ZHJ2ZGF0YS0+ZmxhZ3MgJiBJTVg2X1BDSUVfRkxBR19JTVg2X1BIWSkpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+ICsJZm9yIChpID0gMDsgaSA8IGlteDZfcGNpZS0+Y2xrc19jbnQ7IGkrKykK PiArCQlpZiAoc3RybmNtcChpbXg2X3BjaWUtPmNsa3NbaV0uaWQsICJwY2llX3BoeSIsIDgpID09 IDApCj4gKwkJCXBoeV9yYXRlID0gY2xrX2dldF9yYXRlKGlteDZfcGNpZS0+Y2xrc1tpXS5jbGsp Owo+ICsKPiAgCXN3aXRjaCAocGh5X3JhdGUpIHsKPiAgCWNhc2UgMTI1MDAwMDAwOgo+ICAJCS8q Cj4gQEAgLTU1MCwxOSArNTU1LDExIEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX2F0dGFjaF9wZChz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAo+ICBzdGF0aWMgaW50IGlteDZfcGNpZV9lbmFibGVfcmVm X2NsayhzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIHsKPiAtCXN0cnVjdCBkd19wY2ll ICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsKPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2 Owo+ICAJdW5zaWduZWQgaW50IG9mZnNldDsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAgCXN3aXRj aCAoaW14Nl9wY2llLT5kcnZkYXRhLT52YXJpYW50KSB7Cj4gIAljYXNlIElNWDZTWDoKPiAtCQly ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaW14Nl9wY2llLT5wY2llX2luYm91bmRfYXhpKTsKPiAt CQlpZiAocmV0KSB7Cj4gLQkJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGVuYWJsZSBwY2llX2F4 aSBjbG9ja1xuIik7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCj4gIAkJcmVnbWFwX3VwZGF0ZV9i aXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICAJCQkJICAgSU1YNlNY X0dQUjEyX1BDSUVfVEVTVF9QT1dFUkRPV04sIDApOwo+ICAJCWJyZWFrOwo+IEBAIC01ODksMTIg KzU4Niw2IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX2VuYWJsZV9yZWZfY2xrKHN0cnVjdCBpbXg2 X3BjaWUgKmlteDZfcGNpZSkKPiAgCWNhc2UgSU1YOE1RX0VQOgo+ICAJY2FzZSBJTVg4TVA6Cj4g IAljYXNlIElNWDhNUF9FUDoKPiAtCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaW14Nl9wY2ll LT5wY2llX2F1eCk7Cj4gLQkJaWYgKHJldCkgewo+IC0JCQlkZXZfZXJyKGRldiwgInVuYWJsZSB0 byBlbmFibGUgcGNpZV9hdXggY2xvY2tcbiIpOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQo+ICAJ CW9mZnNldCA9IGlteDZfcGNpZV9ncnBfb2Zmc2V0KGlteDZfcGNpZSk7Cj4gIAkJLyoKPiAgCQkg KiBTZXQgdGhlIG92ZXIgcmlkZSBsb3cgYW5kIGVuYWJsZWQKPiBAQCAtNjE1LDkgKzYwNiw2IEBA IHN0YXRpYyBpbnQgaW14Nl9wY2llX2VuYWJsZV9yZWZfY2xrKHN0cnVjdCBpbXg2X3BjaWUgKmlt eDZfcGNpZSkKPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2Rpc2FibGVfcmVmX2NsayhzdHJ1Y3Qg aW14Nl9wY2llICppbXg2X3BjaWUpCj4gIHsKPiAgCXN3aXRjaCAoaW14Nl9wY2llLT5kcnZkYXRh LT52YXJpYW50KSB7Cj4gLQljYXNlIElNWDZTWDoKPiAtCQljbGtfZGlzYWJsZV91bnByZXBhcmUo aW14Nl9wY2llLT5wY2llX2luYm91bmRfYXhpKTsKPiAtCQlicmVhazsKPiAgCWNhc2UgSU1YNlFQ Ogo+ICAJY2FzZSBJTVg2UToKPiAgCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211 eGNfZ3ByLCBJT01VWENfR1BSMSwKPiBAQCAtNjMxLDE0ICs2MTksNiBAQCBzdGF0aWMgdm9pZCBp bXg2X3BjaWVfZGlzYWJsZV9yZWZfY2xrKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAg CQkJCSAgIElNWDdEX0dQUjEyX1BDSUVfUEhZX1JFRkNMS19TRUwsCj4gIAkJCQkgICBJTVg3RF9H UFIxMl9QQ0lFX1BIWV9SRUZDTEtfU0VMKTsKPiAgCQlicmVhazsKPiAtCWNhc2UgSU1YOE1NOgo+ IC0JY2FzZSBJTVg4TU1fRVA6Cj4gLQljYXNlIElNWDhNUToKPiAtCWNhc2UgSU1YOE1RX0VQOgo+ IC0JY2FzZSBJTVg4TVA6Cj4gLQljYXNlIElNWDhNUF9FUDoKPiAtCQljbGtfZGlzYWJsZV91bnBy ZXBhcmUoaW14Nl9wY2llLT5wY2llX2F1eCk7Cj4gLQkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJ CWJyZWFrOwo+ICAJfQo+IEBAIC02NTAsMjMgKzYzMCw5IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2ll X2Nsa19lbmFibGUoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ICAJc3RydWN0IGRldmlj ZSAqZGV2ID0gcGNpLT5kZXY7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXJldCA9IGNsa19wcmVwYXJl X2VuYWJsZShpbXg2X3BjaWUtPnBjaWVfcGh5KTsKPiAtCWlmIChyZXQpIHsKPiAtCQlkZXZfZXJy KGRldiwgInVuYWJsZSB0byBlbmFibGUgcGNpZV9waHkgY2xvY2tcbiIpOwo+ICsJcmV0ID0gIGNs a19idWxrX3ByZXBhcmVfZW5hYmxlKGlteDZfcGNpZS0+Y2xrc19jbnQsIGlteDZfcGNpZS0+Y2xr cyk7CgpFeHRyYSBzcGFjZSBhZnRlciA9Cgo+ICsJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ IC0JfQo+IC0KPiAtCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShpbXg2X3BjaWUtPnBjaWVfYnVz KTsKPiAtCWlmIChyZXQpIHsKPiAtCQlkZXZfZXJyKGRldiwgInVuYWJsZSB0byBlbmFibGUgcGNp ZV9idXMgY2xvY2tcbiIpOwo+IC0JCWdvdG8gZXJyX3BjaWVfYnVzOwo+IC0JfQo+IC0KPiAtCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShpbXg2X3BjaWUtPnBjaWUpOwo+IC0JaWYgKHJldCkgewo+ IC0JCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGVuYWJsZSBwY2llIGNsb2NrXG4iKTsKPiAtCQln b3RvIGVycl9wY2llOwo+IC0JfQo+ICAKPiAgCXJldCA9IGlteDZfcGNpZV9lbmFibGVfcmVmX2Ns ayhpbXg2X3BjaWUpOwo+ICAJaWYgKHJldCkgewo+IEBAIC02NzksMTEgKzY0NSw3IEBAIHN0YXRp YyBpbnQgaW14Nl9wY2llX2Nsa19lbmFibGUoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ ICAJcmV0dXJuIDA7Cj4gIAo+ICBlcnJfcmVmX2NsazoKPiAtCWNsa19kaXNhYmxlX3VucHJlcGFy ZShpbXg2X3BjaWUtPnBjaWUpOwo+IC1lcnJfcGNpZToKPiAtCWNsa19kaXNhYmxlX3VucHJlcGFy ZShpbXg2X3BjaWUtPnBjaWVfYnVzKTsKPiAtZXJyX3BjaWVfYnVzOgo+IC0JY2xrX2Rpc2FibGVf dW5wcmVwYXJlKGlteDZfcGNpZS0+cGNpZV9waHkpOwo+ICsJY2xrX2J1bGtfZGlzYWJsZV91bnBy ZXBhcmUoaW14Nl9wY2llLT5jbGtzX2NudCwgaW14Nl9wY2llLT5jbGtzKTsKPiAgCj4gIAlyZXR1 cm4gcmV0Owo+ICB9Cj4gQEAgLTY5MSw5ICs2NTMsNyBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9j bGtfZW5hYmxlKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgc3RhdGljIHZvaWQgaW14 Nl9wY2llX2Nsa19kaXNhYmxlKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgewo+ICAJ aW14Nl9wY2llX2Rpc2FibGVfcmVmX2NsayhpbXg2X3BjaWUpOwo+IC0JY2xrX2Rpc2FibGVfdW5w cmVwYXJlKGlteDZfcGNpZS0+cGNpZSk7Cj4gLQljbGtfZGlzYWJsZV91bnByZXBhcmUoaW14Nl9w Y2llLT5wY2llX2J1cyk7Cj4gLQljbGtfZGlzYWJsZV91bnByZXBhcmUoaW14Nl9wY2llLT5wY2ll X3BoeSk7Cj4gKwljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZShpbXg2X3BjaWUtPmNsa3NfY250 LCBpbXg2X3BjaWUtPmNsa3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfYXNz ZXJ0X2NvcmVfcmVzZXQoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+IEBAIC0xMzA1LDMy ICsxMjY1LDE5IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4gIAkJcmV0dXJuIGlteDZfcGNpZS0+cmVzZXRfZ3BpbzsKPiAgCX0KPiAg Cj4gLQkvKiBGZXRjaCBjbG9ja3MgKi8KPiAtCWlteDZfcGNpZS0+cGNpZV9idXMgPSBkZXZtX2Ns a19nZXQoZGV2LCAicGNpZV9idXMiKTsKPiAtCWlmIChJU19FUlIoaW14Nl9wY2llLT5wY2llX2J1 cykpCj4gLQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGlteDZfcGNpZS0+cGNp ZV9idXMpLAo+IC0JCQkJICAgICAicGNpZV9idXMgY2xvY2sgc291cmNlIG1pc3Npbmcgb3IgaW52 YWxpZFxuIik7Cj4gKwl3aGlsZSAoaW14Nl9wY2llLT5kcnZkYXRhLT5jbGtfbmFtZXNbaW14Nl9w Y2llLT5jbGtzX2NudF0pIHsKPiArCQlpbnQgaSA9IGlteDZfcGNpZS0+Y2xrc19jbnQ7CgpXaHkg Y2FuJ3QgeW91IGluaXRpYWxpemUgaSB0byAwIGRpcmVjdGx5PwoKUmVzdCBsb29rcyBnb29kIHRv IG1lLgoKLSBNYW5pCgo+ICsKPiArCQlpbXg2X3BjaWUtPmNsa3NbaV0uaWQgPSBpbXg2X3BjaWUt PmRydmRhdGEtPmNsa19uYW1lc1tpXTsKPiArCQlpbXg2X3BjaWUtPmNsa3NfY250Kys7Cj4gKwl9 Cj4gIAo+IC0JaW14Nl9wY2llLT5wY2llID0gZGV2bV9jbGtfZ2V0KGRldiwgInBjaWUiKTsKPiAt CWlmIChJU19FUlIoaW14Nl9wY2llLT5wY2llKSkKPiAtCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShk ZXYsIFBUUl9FUlIoaW14Nl9wY2llLT5wY2llKSwKPiAtCQkJCSAgICAgInBjaWUgY2xvY2sgc291 cmNlIG1pc3Npbmcgb3IgaW52YWxpZFxuIik7Cj4gKwkvKiBGZXRjaCBjbG9ja3MgKi8KPiArCXJl dCA9IGRldm1fY2xrX2J1bGtfZ2V0KGRldiwgaW14Nl9wY2llLT5jbGtzX2NudCwgaW14Nl9wY2ll LT5jbGtzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gIAlzd2l0Y2ggKGlt eDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgewo+IC0JY2FzZSBJTVg2U1g6Cj4gLQkJaW14Nl9w Y2llLT5wY2llX2luYm91bmRfYXhpID0gZGV2bV9jbGtfZ2V0KGRldiwKPiAtCQkJCQkJCSAgICJw Y2llX2luYm91bmRfYXhpIik7Cj4gLQkJaWYgKElTX0VSUihpbXg2X3BjaWUtPnBjaWVfaW5ib3Vu ZF9heGkpKQo+IC0JCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoaW14Nl9wY2ll LT5wY2llX2luYm91bmRfYXhpKSwKPiAtCQkJCQkgICAgICJwY2llX2luYm91bmRfYXhpIGNsb2Nr IG1pc3Npbmcgb3IgaW52YWxpZFxuIik7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIElNWDhNUToKPiAt CWNhc2UgSU1YOE1RX0VQOgo+IC0JCWlteDZfcGNpZS0+cGNpZV9hdXggPSBkZXZtX2Nsa19nZXQo ZGV2LCAicGNpZV9hdXgiKTsKPiAtCQlpZiAoSVNfRVJSKGlteDZfcGNpZS0+cGNpZV9hdXgpKQo+ IC0JCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoaW14Nl9wY2llLT5wY2llX2F1 eCksCj4gLQkJCQkJICAgICAicGNpZV9hdXggY2xvY2sgc291cmNlIG1pc3Npbmcgb3IgaW52YWxp ZFxuIik7Cj4gLQkJZmFsbHRocm91Z2g7Cj4gIAljYXNlIElNWDdEOgo+ICAJCWlmIChkYmlfYmFz ZS0+c3RhcnQgPT0gSU1YOE1RX1BDSUUyX0JBU0VfQUREUikKPiAgCQkJaW14Nl9wY2llLT5jb250 cm9sbGVyX2lkID0gMTsKPiBAQCAtMTM1MywxMCArMTMwMCw2IEBAIHN0YXRpYyBpbnQgaW14Nl9w Y2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAljYXNlIElNWDhNTV9F UDoKPiAgCWNhc2UgSU1YOE1QOgo+ICAJY2FzZSBJTVg4TVBfRVA6Cj4gLQkJaW14Nl9wY2llLT5w Y2llX2F1eCA9IGRldm1fY2xrX2dldChkZXYsICJwY2llX2F1eCIpOwo+IC0JCWlmIChJU19FUlIo aW14Nl9wY2llLT5wY2llX2F1eCkpCj4gLQkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRS X0VSUihpbXg2X3BjaWUtPnBjaWVfYXV4KSwKPiAtCQkJCQkgICAgICJwY2llX2F1eCBjbG9jayBz b3VyY2UgbWlzc2luZyBvciBpbnZhbGlkXG4iKTsKPiAgCQlpbXg2X3BjaWUtPmFwcHNfcmVzZXQg PSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsCj4gIAkJCQkJCQkJCSAiYXBw cyIpOwo+ICAJCWlmIChJU19FUlIoaW14Nl9wY2llLT5hcHBzX3Jlc2V0KSkKPiBAQCAtMTM3Miwx NCArMTMxNSw2IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4gIAlkZWZhdWx0Ogo+ICAJCWJyZWFrOwo+ICAJfQo+IC0JLyogRG9uJ3Qg ZmV0Y2ggdGhlIHBjaWVfcGh5IGNsb2NrLCBpZiBpdCBoYXMgYWJzdHJhY3QgUEhZIGRyaXZlciAq Lwo+IC0JaWYgKGlteDZfcGNpZS0+cGh5ID09IE5VTEwpIHsKPiAtCQlpbXg2X3BjaWUtPnBjaWVf cGh5ID0gZGV2bV9jbGtfZ2V0KGRldiwgInBjaWVfcGh5Iik7Cj4gLQkJaWYgKElTX0VSUihpbXg2 X3BjaWUtPnBjaWVfcGh5KSkKPiAtCQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJS KGlteDZfcGNpZS0+cGNpZV9waHkpLAo+IC0JCQkJCSAgICAgInBjaWVfcGh5IGNsb2NrIHNvdXJj ZSBtaXNzaW5nIG9yIGludmFsaWRcbiIpOwo+IC0JfQo+IC0KPiAgCj4gIAkvKiBHcmFiIHR1cm5v ZmYgcmVzZXQgKi8KPiAgCWlteDZfcGNpZS0+dHVybm9mZl9yZXNldCA9IGRldm1fcmVzZXRfY29u dHJvbF9nZXRfb3B0aW9uYWxfZXhjbHVzaXZlKGRldiwgInR1cm5vZmYiKTsKPiBAQCAtMTQ3Nyw2 ICsxNDEyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbXg2X3BjaWVfZHJ2ZGF0YSBkcnZkYXRh W10gPSB7Cj4gIAkJCSBJTVg2X1BDSUVfRkxBR19JTVg2X1NQRUVEX0NIQU5HRSwKPiAgCQkuZGJp X2xlbmd0aCA9IDB4MjAwLAo+ICAJCS5ncHIgPSAiZnNsLGlteDZxLWlvbXV4Yy1ncHIiLAo+ICsJ CS5jbGtfbmFtZXMgPSB7InBjaWVfYnVzIiwgInBjaWUiLCAicGNpZV9waHkifSwKPiAgCX0sCj4g IAlbSU1YNlNYXSA9IHsKPiAgCQkudmFyaWFudCA9IElNWDZTWCwKPiBAQCAtMTQ4NCw2ICsxNDIw LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbXg2X3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7 Cj4gIAkJCSBJTVg2X1BDSUVfRkxBR19JTVg2X1NQRUVEX0NIQU5HRSB8Cj4gIAkJCSBJTVg2X1BD SUVfRkxBR19TVVBQT1JUU19TVVNQRU5ELAo+ICAJCS5ncHIgPSAiZnNsLGlteDZxLWlvbXV4Yy1n cHIiLAo+ICsJCS5jbGtfbmFtZXMgPSB7InBjaWVfYnVzIiwgInBjaWUiLCAicGNpZV9waHkiLCAi cGNpZV9pbmJvdW5kX2F4aSJ9LAo+ICAJfSwKPiAgCVtJTVg2UVBdID0gewo+ICAJCS52YXJpYW50 ID0gSU1YNlFQLAo+IEBAIC0xNDkyLDQwICsxNDI5LDQ4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICAJCQkgSU1YNl9QQ0lFX0ZMQUdfU1VQ UE9SVFNfU1VTUEVORCwKPiAgCQkuZGJpX2xlbmd0aCA9IDB4MjAwLAo+ICAJCS5ncHIgPSAiZnNs LGlteDZxLWlvbXV4Yy1ncHIiLAo+ICsJCS5jbGtfbmFtZXMgPSB7InBjaWVfYnVzIiwgInBjaWUi LCAicGNpZV9waHkifSwKPiAgCX0sCj4gIAlbSU1YN0RdID0gewo+ICAJCS52YXJpYW50ID0gSU1Y N0QsCj4gIAkJLmZsYWdzID0gSU1YNl9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VTUEVORCwKPiAgCQku Z3ByID0gImZzbCxpbXg3ZC1pb211eGMtZ3ByIiwKPiArCQkuY2xrX25hbWVzID0geyJwY2llX2J1 cyIsICJwY2llIiwgInBjaWVfcGh5In0sCj4gIAl9LAo+ICAJW0lNWDhNUV0gPSB7Cj4gIAkJLnZh cmlhbnQgPSBJTVg4TVEsCj4gIAkJLmdwciA9ICJmc2wsaW14OG1xLWlvbXV4Yy1ncHIiLAo+ICsJ CS5jbGtfbmFtZXMgPSB7InBjaWVfYnVzIiwgInBjaWUiLCAicGNpZV9waHkiLCAicGNpZV9hdXgi fSwKPiAgCX0sCj4gIAlbSU1YOE1NXSA9IHsKPiAgCQkudmFyaWFudCA9IElNWDhNTSwKPiAgCQku ZmxhZ3MgPSBJTVg2X1BDSUVfRkxBR19TVVBQT1JUU19TVVNQRU5ELAo+ICAJCS5ncHIgPSAiZnNs LGlteDhtbS1pb211eGMtZ3ByIiwKPiArCQkuY2xrX25hbWVzID0geyJwY2llX2J1cyIsICJwY2ll IiwgInBjaWVfYXV4In0sCj4gIAl9LAo+ICAJW0lNWDhNUF0gPSB7Cj4gIAkJLnZhcmlhbnQgPSBJ TVg4TVAsCj4gIAkJLmZsYWdzID0gSU1YNl9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VTUEVORCwKPiAg CQkuZ3ByID0gImZzbCxpbXg4bXAtaW9tdXhjLWdwciIsCj4gKwkJLmNsa19uYW1lcyA9IHsicGNp ZV9idXMiLCAicGNpZSIsICJwY2llX2F1eCJ9LAo+ICAJfSwKPiAgCVtJTVg4TVFfRVBdID0gewo+ ICAJCS52YXJpYW50ID0gSU1YOE1RX0VQLAo+ICAJCS5tb2RlID0gRFdfUENJRV9FUF9UWVBFLAo+ ICAJCS5ncHIgPSAiZnNsLGlteDhtcS1pb211eGMtZ3ByIiwKPiArCQkuY2xrX25hbWVzID0geyJw Y2llX2J1cyIsICJwY2llIiwgInBjaWVfcGh5IiwgInBjaWVfYXV4In0sCj4gIAl9LAo+ICAJW0lN WDhNTV9FUF0gPSB7Cj4gIAkJLnZhcmlhbnQgPSBJTVg4TU1fRVAsCj4gIAkJLm1vZGUgPSBEV19Q Q0lFX0VQX1RZUEUsCj4gIAkJLmdwciA9ICJmc2wsaW14OG1tLWlvbXV4Yy1ncHIiLAo+ICsJCS5j bGtfbmFtZXMgPSB7InBjaWVfYnVzIiwgInBjaWUiLCAicGNpZV9hdXgifSwKPiAgCX0sCj4gIAlb SU1YOE1QX0VQXSA9IHsKPiAgCQkudmFyaWFudCA9IElNWDhNUF9FUCwKPiAgCQkubW9kZSA9IERX X1BDSUVfRVBfVFlQRSwKPiAgCQkuZ3ByID0gImZzbCxpbXg4bXAtaW9tdXhjLWdwciIsCj4gKwkJ LmNsa19uYW1lcyA9IHsicGNpZV9idXMiLCAicGNpZSIsICJwY2llX2F1eCJ9LAo+ICAJfSwKPiAg fTsKPiAgCj4gLS0gCj4gMi4zNC4xCj4gCgotLSAK4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+N IOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=