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 5A685C43458 for ; Thu, 9 Jul 2026 14:18:29 +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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6WBRszp/rWyO6dRvknBwzbK6mCV0tU9qqt83fr+vbgA=; b=Nm1wCfGCmJsHKk 2fD/P7QZmZVsfWOZODdMf0ilgYm/wiFZw2LGjZT85sWXXlX6U4ra7NLT8tbwDcKUgNYP1jYkkAr9J 55eH0qrO79dTQg3yU7Nq45AWRvswDAgn7Xcma9Fp5Qdo39NI9HsbbgrDI63HQ6p/1KIHkRWzvA3Y6 5jREIiuHROoMoV62j7AjkyhTPFbb+kRUk5+F5TjWnRacB4z7mL9dsxkjfq6/W/baXOBX97Bz7sGkh nfNKXmCfVQPDN2DG09pbal4YzACXqOfUtpqJbtNiNAUM3xTB47CZ0+Tz/qbcj2PHmdsW7tGohI2JC Q72mimBcXMNU6A4eDehg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1whpa8-00000002jfu-44f6; Thu, 09 Jul 2026 14:18:28 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1whpa7-00000002jfk-1I6m for linux-phy@lists.infradead.org; Thu, 09 Jul 2026 14:18:27 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id C227F41246; Thu, 9 Jul 2026 14:18:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5511B1F000E9; Thu, 9 Jul 2026 14:18:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783606706; bh=FYf4LaeZb21q7QVm5XCYWW8IvRUenakOJim6vJ1uvi0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=SVvYhcbfG6HMihS9ZZ0CLuihh3br18t3IA/HWJXChyFS/4zzIYkWvXkkhiZuuGDmR e19Z1//RqrAt3EKHmN0lfdXBkDv9siFL4+Hwr0BTOBo5xxIU96z8K7txxYOPSvgqDi pg/5ks625cObDQbbU+SFIJTq/6yMYdalug5uQ2y/vxI7F+RuPVPbhrCe3WlgNj/AEG Bvwe22+N4NjmkYj1S3ML5s21n7TKj7R9NjZW5FmvqE18xAkYEieoYtiE6OTPndA7Nz a/DUPmrhlZxGWf6uQShe6IvHAjzPqcuhZauZZ1YkCY5YwK3JTdu6ewDWINRhzu0qyX eRvWjM2xV2rfg== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4] phy: renesas: rcar-gen3-usb2: Avoid long delay in atomic context To: "Claudiu Beznea" Cc: linux-phy@lists.infradead.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com, wsa+renesas@sang-engineering.com In-Reply-To: <20260709140257.843685-1-claudiu.beznea+renesas@tuxon.dev> References: <20260709140257.843685-1-claudiu.beznea+renesas@tuxon.dev> Date: Thu, 09 Jul 2026 14:18:25 +0000 Message-Id: <20260709141826.5511B1F000E9@smtp.kernel.org> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBB IGxpbmdlcmluZyBgLUVUSU1FRE9VVGAgZnJvbSBhIHByZXZpb3VzIGxvb3AgaXRlcmF0aW9uIGNh dXNlcyBzcHVyaW91cyBmYWlsdXJlcyBhbmQgcmVzb3VyY2UgbGVha3MgaW4gYHJjYXJfZ2VuM19w aHlfdXNiMl9wb3dlcl9vbigpYCBhbmQgYHJjYXJfZ2VuM19waHlfdXNiMl9wb3dlcl9vZmYoKWAu Ci0gW0hpZ2hdIGByY2FyX2dlbjNfcGh5X3VzYjJfaXJxc19tYXNrX2FsbCgpYCBlcnJvbmVvdXNs eSBjbGVhcnMgYG9iaW50X2VuYWJsZV9iaXRzYCBmcm9tIGBVU0IyX0lOVF9FTkFCTEVgIGluc3Rl YWQgb2YgYFVTQjJfT0JJTlRFTmAsIGZhaWxpbmcgdG8gbWFzayBPVEcgaW50ZXJydXB0cyBhbmQg Y29ycnVwdGluZyBnZW5lcmFsIGludGVycnVwdCBlbmFibGVzLgotIFtNZWRpdW1dIFRoZSBPVEcg aW5pdGlhbGl6YXRpb24gcmV0cnkgbG9vcCBzaG9ydC1jaXJjdWl0cyBvbiB0aGUgZmluYWwgcmV0 cnksIGFsbG93aW5nIGNvbmN1cnJlbnQgaGFyZHdhcmUgbW9kaWZpY2F0aW9uIGlmIGEgbmV3IGlu aXRpYWxpemF0aW9uIHBoYXNlIGhhcyBzdGFydGVkLgotIFtNZWRpdW1dIENhbGxpbmcgYHJlaW5p dF9jb21wbGV0aW9uKClgIHdoaWxlIHRoZXJlIGFyZSBhY3RpdmUgd2FpdGVycyBjYXVzZXMgYSBk YXRhIHJhY2Ugb24gYHgtPmRvbmVgLCB2aW9sYXRpbmcgdGhlIGNvbXBsZXRpb24gQVBJLgoKUHJl LWV4aXN0aW5nIGlzc3VlczoKLSBbSGlnaF0gVGhlIGludGVycnVwdCBoYW5kbGVyIHVzZXMgYHBt X3J1bnRpbWVfZ2V0X25vcmVzdW1lKClgIGFuZCBgcG1fcnVudGltZV9zdXNwZW5kZWQoKWAgdG8g Z3VhcmQgaGFyZHdhcmUgYWNjZXNzLCB3aGljaCBpcyByYWN5IGFuZCBjYW4gbGVhZCB0byBpbnZh bGlkIHJlZ2lzdGVyIHJlYWRzLgotIFtIaWdoXSBUaGUgc3lzZnMgYXR0cmlidXRlcyBgcm9sZV9z aG93YCBhbmQgYHJvbGVfc3RvcmVgIGFjY2VzcyBoYXJkd2FyZSByZWdpc3RlcnMgd2l0aG91dCBl bnN1cmluZyB0aGUgZGV2aWNlIGlzIGFjdGl2ZWx5IHBvd2VyZWQuCi0gW0hpZ2hdIFNldmVyYWwg cGF0aHMgY2FsbCBgcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCgpYCB3aGlsZSBob2xkaW5nIHRo ZSBgY2gtPmxvY2tgIHNwaW5sb2NrLCB3aGljaCBjYW4gYmxvY2sgYW5kIHRyaWdnZXIgYSBzY2hl ZHVsaW5nLXdoaWxlLWF0b21pYyBCVUcuCi0tCgotLS0gUGF0Y2ggWzFdOiBbUEFUQ0ggdjRdIHBo eTogcmVuZXNhczogcmNhci1nZW4zLXVzYjI6IEF2b2lkIGxvbmcgZGVsYXkgaW4gYXRvbWljIGNv bnRleHQgLS0tCmNvbW1pdCA5ZmRhZDFiYjg3YjkzNmRlNDljNjkyNzJkNTIxZTQ2ZTI2YjdlMTZh CkF1dGhvcjogQ2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhLnVqQGJwLnJlbmVzYXMuY29t PgoKcGh5OiByZW5lc2FzOiByY2FyLWdlbjMtdXNiMjogQXZvaWQgbG9uZyBkZWxheSBpbiBhdG9t aWMgY29udGV4dAoKVGhlIE9URyBQSFkgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgbmVlZHMgdG8g d2FpdCBmb3IgMjAgbXMgYXQgYSBzcGVjaWZpYwpzdGVwLCBhcyBkZXNjcmliZWQgaW4gY29tbWl0 IDcyYzAzMzljMTE1YiAoInBoeTogcmVuZXNhczoKcmNhci1nZW4zLXVzYjI6IGZvbGxvdyB0aGUg aGFyZHdhcmUgbWFudWFsIHByb2NlZHVyZSIpLgoKRml4ZXM6IDU1YTM4N2ViYjkyMSAoInBoeTog cmVuZXNhczogcmNhci1nZW4zLXVzYjI6IExvY2sgYXJvdW5kIGhhcmR3YXJlIHJlZ2lzdGVycyBh bmQgZHJpdmVyIGRhdGEiKQpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwpSZXBvcnRlZC1ieTog UGF2ZWwgTWFjaGVrIDxwYXZlbEBuYWJsYWRldi5jb20+CkNsb3NlczogaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvYWxsL2FmaGtYMllzMkJHMWducXlAZHVvLnVjdy5jegpSZXBvcnRlZC1ieTogTm9i dWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgpDbG9zZXM6IGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2FsbC9hZmhrWDJZczJCRzFnbnF5QGR1by51Y3cuY3oKU2lnbmVkLW9mZi1i eTogQ2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhLnVqQGJwLnJlbmVzYXMuY29tPgoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcmVuZXNhcy9waHktcmNhci1nZW4zLXVzYjIuYyBiL2Ry aXZlcnMvcGh5L3JlbmVzYXMvcGh5LXJjYXItZ2VuMy11c2IyLmMKPiBpbmRleCA5YTQ1ZDg0MGVm ZWIyLi5lMTg3MzkyOGNjODQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGh5L3JlbmVzYXMvcGh5 LXJjYXItZ2VuMy11c2IyLmMKPiArKysgYi9kcml2ZXJzL3BoeS9yZW5lc2FzL3BoeS1yY2FyLWdl bjMtdXNiMi5jCgpbIC4uLiBdCgo+IEBAIC0zOTIsMjYgKzQwNyw1MiBAQCBzdGF0aWMgc3NpemVf dCByb2xlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsCj4gIAlzdHJ1Y3QgcmNhcl9nZW4zX2NoYW4gKmNoID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gIAlib29sIGlzX2JfZGV2aWNlOwo+ICAJZW51bSBwaHlfbW9kZSBjdXJfbW9kZSwgbmV3 X21vZGU7Cj4gKwlpbnQgcmV0cmllcyA9IE5VTV9PRl9QSFlTOwo+ICsJdW5zaWduZWQgbG9uZyBm bGFnczsKPiArCWludCByZXQgPSAtRUlPOwo+ICAKPiAtCWd1YXJkKHNwaW5sb2NrX2lycXNhdmUp KCZjaC0+bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2gtPmxvY2ssIGZsYWdzKTsKCltT ZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gs IGJ1dCBkb2VzIHRoaXMgY2FsbCBjaGFpbiBzbGVlcCB3aGlsZQpob2xkaW5nIHRoZSBzcGlubG9j az8KCnJvbGVfc3RvcmUoKSBhY3F1aXJlcyBjaC0+bG9jayB2aWEgc3Bpbl9sb2NrX2lycXNhdmUo KSwgdGhlbiBjYWxscwpyY2FyX2dlbjNfaW5pdF9mcm9tX2FfcGVyaV90b19hX2hvc3QoKSwgd2hp Y2ggY2FuIGNhc2NhZGUgaW50bwpyY2FyX2dlbjNfZW5hYmxlX3ZidXNfY3RybCgpLgoKRm9yIGNv bmZpZ3VyYXRpb25zIHVzaW5nIHRoZSBpbnRlcm5hbCByZWd1bGF0b3IgKHdoZXJlIG5vX2FkcF9j dHJsIGlzIHRydWUpLAp0aGlzIGNhbGxzIHJlZ3VsYXRvcl9oYXJkd2FyZV9lbmFibGUoKSwgaW52 b2tpbmcgdGhlIGRyaXZlcidzIC5lbmFibGUgY2FsbGJhY2sKKHJjYXJfZ2VuM19waHlfdXNiMl9y ZWd1bGF0b3JfZW5hYmxlKS4KClRoYXQgY2FsbGJhY2sgdW5jb25kaXRpb25hbGx5IGNhbGxzIHBt X3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQoKSwgd2hpY2ggY2FuIHNsZWVwCnN5bmNocm9ub3VzbHkg d2hpbGUgd2FpdGluZyBmb3IgdGhlIGRldmljZSB0byByZXN1bWUuIENvdWxkIHRoaXMgdHJpZ2dl ciBhCnNjaGVkdWxpbmctd2hpbGUtYXRvbWljIHBhbmljPwoKPiAgCj4gLQlpZiAoIWNoLT5pc19v dGdfY2hhbm5lbCB8fCAhcmNhcl9nZW4zX2lzX2FueV9vdGdfcnBoeV9pbml0aWFsaXplZChjaCkp Cj4gLQkJcmV0dXJuIC1FSU87Cj4gKwlpZiAoIWNoLT5pc19vdGdfY2hhbm5lbCkKPiArCQlnb3Rv IHVubG9jazsKPiArCj4gKwl3aGlsZSAocmV0cmllcy0tICYmIGNoLT5vdGdfaW5pdGlhbGl6aW5n KSB7Cj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2gtPmxvY2ssIGZsYWdzKTsKPiArCj4g KwkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZjaC0+b3RnX2luaXRfZG9uZSwK PiArCQkJCQkJICBVU0IyX09UR19JTklUX1RJTUVPVVQpOwo+ICsJCXJldCA9IHJldCA/IDAgOiAt RVRJTUVET1VUOwo+ICsJCWlmIChyZXQgJiYgIXJldHJpZXMpCj4gKwkJCWdvdG8gZXhpdDsKPiAr Cj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmNoLT5sb2NrLCBmbGFncyk7Cj4gKwl9Cj4gKwo+ICsJ aWYgKCFyY2FyX2dlbjNfaXNfYW55X290Z19ycGh5X2luaXRpYWxpemVkKGNoKSkgewo+ICsJCXJl dCA9IC1FSU87Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9Cj4gIAo+IC0JaWYgKHN5c2ZzX3N0cmVx KGJ1ZiwgImhvc3QiKSkKPiArCWlmIChzeXNmc19zdHJlcShidWYsICJob3N0IikpIHsKPiAgCQlu ZXdfbW9kZSA9IFBIWV9NT0RFX1VTQl9IT1NUOwo+IC0JZWxzZSBpZiAoc3lzZnNfc3RyZXEoYnVm LCAicGVyaXBoZXJhbCIpKQo+ICsJfSBlbHNlIGlmIChzeXNmc19zdHJlcShidWYsICJwZXJpcGhl cmFsIikpIHsKPiAgCQluZXdfbW9kZSA9IFBIWV9NT0RFX1VTQl9ERVZJQ0U7Cj4gLQllbHNlCj4g LQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9IGVsc2Ugewo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwkJ Z290byB1bmxvY2s7Cj4gKwl9Cj4gIAo+ICAJLyogaXNfYl9kZXZpY2U6IHRydWUgaXMgQi1EZXZp Y2UuIGZhbHNlIGlzIEEtRGV2aWNlLiAqLwo+ICAJaXNfYl9kZXZpY2UgPSByY2FyX2dlbjNfY2hl Y2tfaWQoY2gpOwo+ICAJY3VyX21vZGUgPSByY2FyX2dlbjNfZ2V0X3BoeV9tb2RlKGNoKTsKCltT ZXZlcml0eTogSGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IGFyZSB0aGVz ZSBoYXJkd2FyZSByZWdpc3RlciBhY2Nlc3NlcyBzYWZlCndpdGhvdXQgZW5zdXJpbmcgdGhlIGRl dmljZSBpcyBhY3RpdmVseSBwb3dlcmVkPwoKcm9sZV9zdG9yZSgpIGNhbGxzIHJjYXJfZ2VuM19j aGVja19pZCgpIGFuZCByY2FyX2dlbjNfZ2V0X3BoeV9tb2RlKCksIHdoaWNoIHJlYWQKaGFyZHdh cmUgcmVnaXN0ZXJzIGxpa2UgVVNCMl9BRFBDVFJMIGFuZCBVU0IyX0xJTkVDVFJMMS4KClNpbmNl IHRoZXNlIHN5c2ZzIGNhbGxiYWNrcyBkb24ndCB1c2UgcG1fcnVudGltZV9nZXRfc3luYygpIGJl Zm9yZSBoYXJkd2FyZQphY2Nlc3NlcywgY291bGQgcmVhZGluZyB0aGVzZSByZWdpc3RlcnMgd2hp bGUgdGhlIFBIWSBkZXZpY2UgaXMgcnVudGltZQpzdXNwZW5kZWQgbGVhZCB0byBpbnZhbGlkIGRh dGEgcmVhZHMgb3IgdHJpZ2dlciBhc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnRzPwoKWyAuLi4g XQoKPiBAQCAtNTAyLDYgKzU0Nyw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCByY2FyX2dlbjNfcGh5 X3VzYjJfaXJxKGludCBpcnEsIHZvaWQgKl9jaCkKPiAgCXZvaWQgX19pb21lbSAqdXNiMl9iYXNl ID0gY2gtPmJhc2U7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjaC0+ZGV2Owo+ICAJaXJxcmV0 dXJuX3QgcmV0ID0gSVJRX05PTkU7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJdTMyIHN0 YXR1czsKPiAgCj4gIAlwbV9ydW50aW1lX2dldF9ub3Jlc3VtZShkZXYpOwo+IEBAIC01MDksMzMg KzU1NSw5MSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgcmNhcl9nZW4zX3BoeV91c2IyX2lycShpbnQg aXJxLCB2b2lkICpfY2gpCj4gIAlpZiAocG1fcnVudGltZV9zdXNwZW5kZWQoZGV2KSkKPiAgCQln b3RvIHJwbV9wdXQ7CgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMgYSBwcmUtZXhpc3RpbmcgaXNz dWUsIGJ1dCBkb2VzIHRoaXMgcnVudGltZSBQTSBjaGVjayBwcm90ZWN0IGFnYWluc3QKY29uY3Vy cmVudCBzdXNwZW5kIHRyYW5zaXRpb25zPwoKVGhlIGhhbmRsZXIgdXNlcyBwbV9ydW50aW1lX2dl dF9ub3Jlc3VtZSgpIHdoaWNoIGluY3JlbWVudHMgdGhlIHVzYWdlIGNvdW50ZXIKYnV0IGRvZXMg bm90IGNoZWNrIHRoZSBzdGF0dXMgYXRvbWljYWxseS4gSWYgdGhlIGRldmljZSB1c2VzIGEgc2hh cmVkIElSUSBsaW5lCmFuZCBhbm90aGVyIGRldmljZSB0cmlnZ2VycyBhbiBpbnRlcnJ1cHQgd2hp bGUgdGhpcyBkZXZpY2UgaXMgaW4gdGhlClJQTV9TVVNQRU5ESU5HIHN0YXRlLCBwbV9ydW50aW1l X3N1c3BlbmRlZCgpIHdpbGwgcmV0dXJuIGZhbHNlLgoKQ291bGQgdGhlIGhhbmRsZXIgdGhlbiBw cm9jZWVkIHRvIHJlYWQgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgYXJlIGFjdGl2ZWx5CmJlaW5n IHBvd2VyZWQgZG93biwgbGVhZGluZyB0byBpbnZhbGlkIHJlYWRzIChlLmcuLCAweGZmZmZmZmZm KSBhbmQgc3B1cmlvdXMKaW50ZXJydXB0IHByb2Nlc3Npbmc/IFNob3VsZCB0aGlzIHVzZSBwbV9y dW50aW1lX2dldF9pZl9hY3RpdmUoKSBpbnN0ZWFkPwoKWyAuLi4gXQoKPiArc3RhdGljIHZvaWQg cmNhcl9nZW4zX3BoeV91c2IyX2lycXNfbWFza19hbGwoc3RydWN0IHJjYXJfZ2VuM19jaGFuICpj aGFubmVsLAo+ICsJCQkJCSAgICAgdTMyICptYXNrZWRfaXJxc19iaXRzKQo+ICt7Cj4gKwl1MzIg dmFsLCBiaXRtYXNrID0gVVNCMl9JTlRfRU5BQkxFX1VDT01fSU5URU47Cj4gKwl2b2lkIF9faW9t ZW0gKnVzYjJfYmFzZSA9IGNoYW5uZWwtPmJhc2U7Cj4gKwo+ICsJZm9yICh1bnNpZ25lZCBpbnQg aSA9IDA7IGkgPCBOVU1fT0ZfUEhZUzsgaSsrKQo+ICsJCWJpdG1hc2sgfD0gY2hhbm5lbC0+cnBo eXNbaV0uaW50X2VuYWJsZV9iaXRzOwo+ICsKPiArCXZhbCA9IHJlYWRsKHVzYjJfYmFzZSArIFVT QjJfSU5UX0VOQUJMRSk7Cj4gKwkqbWFza2VkX2lycXNfYml0cyA9IHZhbCAmIGJpdG1hc2s7Cj4g KwkvKgo+ICsJICogRG9uJ3QgcmVwb3J0IGNoYW5uZWwtPnBoeV9kYXRhLT5vYmludF9lbmFibGVf Yml0cyBJUlFzLiBUaGVzZSBhcmUKPiArCSAqIHVubWFza2VkIGFueXdheSBpbiByY2FyX2dlbjNf aW5pdF9vdGdfcGhhc2UxKCkuCj4gKwkgKi8KPiArCXZhbCAmPSB+KGJpdG1hc2sgfCBjaGFubmVs LT5waHlfZGF0YS0+b2JpbnRfZW5hYmxlX2JpdHMpOwo+ICsJd3JpdGVsKHZhbCwgdXNiMl9iYXNl ICsgVVNCMl9JTlRfRU5BQkxFKTsKPiArfQoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHRoaXMgbWlz dGFrZW5seSBhcHBseSB0aGUgb2JpbnRfZW5hYmxlX2JpdHMgdG8gdGhlIHdyb25nIHJlZ2lzdGVy PwoKVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgVVNCMl9JTlRfRU5BQkxFIHJlZ2lzdGVyLCBidXQg b2JpbnRfZW5hYmxlX2JpdHMgYmVsb25nCnRvIHRoZSBVU0IyX09CSU5URU4gcmVnaXN0ZXIuCgpX aGVuIHJjYXJfZ2VuM19waHlfdXNiMl9pcnFzX3VubWFzaygpIGlzIGNhbGxlZCBsYXRlciwgaXQg b25seSByZXN0b3JlcyBiaXRzCmRlZmluZWQgaW4gYml0bWFzaywgd2hpY2ggZG9lc24ndCBpbmNs dWRlIHRoZSBvYmludCBiaXRzLiBXaWxsIHRoaXMgbGVhdmUgdGhlCmNvcnJ1cHRlZCBiaXRzIGlu IFVTQjJfSU5UX0VOQUJMRSBjbGVhcmVkIHBlcm1hbmVudGx5IGFuZCBmYWlsIHRvIG1hc2sgT1RH CmludGVycnVwdHMgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiB3aW5kb3c/CgpbIC4uLiBdCgo+ ICBzdGF0aWMgaW50IHJjYXJfZ2VuM19waHlfdXNiMl9pbml0KHN0cnVjdCBwaHkgKnApCj4gIHsK PiAgCXN0cnVjdCByY2FyX2dlbjNfcGh5ICpycGh5ID0gcGh5X2dldF9kcnZkYXRhKHApOwo+ICAJ c3RydWN0IHJjYXJfZ2VuM19jaGFuICpjaGFubmVsID0gcnBoeS0+Y2g7Cj4gIAl2b2lkIF9faW9t ZW0gKnVzYjJfYmFzZSA9IGNoYW5uZWwtPmJhc2U7Cj4gKwlpbnQgcmV0cmllcyA9IE5VTV9PRl9Q SFlTOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgCXUzMiB2YWw7Cj4gIAo+IC0JZ3VhcmQo c3BpbmxvY2tfaXJxc2F2ZSkoJmNoYW5uZWwtPmxvY2spOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUo JmNoYW5uZWwtPmxvY2ssIGZsYWdzKTsKPiArCj4gKwl3aGlsZSAocmV0cmllcy0tICYmIGNoYW5u ZWwtPm90Z19pbml0aWFsaXppbmcpIHsKCltTZXZlcml0eTogTWVkaXVtXQpJcyB0aGVyZSBhIHJh Y2UgY29uZGl0aW9uIHdoZW4gdGhlIHJldHJpZXMgY291bnRlciBoaXRzIHplcm8/CgpPbiB0aGUg ZmluYWwgbG9vcCBpdGVyYXRpb24gKHdoZW4gcmV0cmllcyBldmFsdWF0ZXMgdG8gMCBpbnNpZGUg dGhlIGxvb3ApLCBpZgp3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoKSBzdWNjZWVkcyB3aXRo b3V0IHRpbWluZyBvdXQsIHRoZSBsb29wIGNvbmRpdGlvbgp3aWxsIGJlIGV2YWx1YXRlZCBhZ2Fp bi4KCkJlY2F1c2UgcmV0cmllcyBpcyAwLCB0aGUgcG9zdC1kZWNyZW1lbnQgb3BlcmF0b3IgcmV0 dXJucyAwLCBjYXVzaW5nIHRoZSAmJgp0byBzaG9ydC1jaXJjdWl0LiBUaGUgY2hhbm5lbC0+b3Rn X2luaXRpYWxpemluZyB2YXJpYWJsZSBpcyBub3QgY2hlY2tlZCwgYW5kCnRoZSBsb29wIGV4aXRz LgoKSWYgYW5vdGhlciB0aHJlYWQgaGFkIGp1c3Qgc3RhcnRlZCBhIG5ldyBpbml0aWFsaXphdGlv biBwaGFzZSBhbmQgc2V0Cm90Z19pbml0aWFsaXppbmcgPSB0cnVlLCBjb3VsZCB0aGUgZXhpdGlu ZyB0aHJlYWQgcHJvY2VlZCB0byBtb2RpZnkgaGFyZHdhcmUKY29uY3VycmVudGx5PwoKPiArCQlp bnQgcmV0Owo+ICsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGFubmVsLT5sb2NrLCBm bGFncyk7Cj4gKwo+ICsJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmY2hhbm5l bC0+b3RnX2luaXRfZG9uZSwKPiArCQkJCQkJICBVU0IyX09UR19JTklUX1RJTUVPVVQpOwo+ICsJ CXJldCA9IHJldCA/IDAgOiAtRVRJTUVET1VUOwo+ICsJCWlmIChyZXQgJiYgIXJldHJpZXMpCj4g KwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZjaGFubmVsLT5sb2Nr LCBmbGFncyk7Cj4gKwl9CgpbIC4uLiBdCgo+ICAJLyogSW5pdGlhbGl6ZSBvdGcgcGFydCAob25s eSBpZiB3ZSBpbml0aWFsaXplIGEgUEhZIHdpdGggSVJRcykuICovCj4gLQlpZiAocnBoeS0+aW50 X2VuYWJsZV9iaXRzKQo+IC0JCXJjYXJfZ2VuM19pbml0X290ZyhjaGFubmVsKTsKPiArCWlmIChy cGh5LT5pbnRfZW5hYmxlX2JpdHMgJiYgY2hhbm5lbC0+aXNfb3RnX2NoYW5uZWwgJiYKPiArCSAg ICAhcmNhcl9nZW4zX2lzX2FueV9vdGdfcnBoeV9pbml0aWFsaXplZChjaGFubmVsKSkgewo+ICsJ CXUzMiBtYXNrZWRfaXJxX2JpdHMgPSAwOwo+ICsKPiArCQlyY2FyX2dlbjNfaW5pdF9vdGdfcGhh c2UwKGNoYW5uZWwpOwo+ICsJCXJjYXJfZ2VuM19waHlfdXNiMl9pcnFzX21hc2tfYWxsKGNoYW5u ZWwsICZtYXNrZWRfaXJxX2JpdHMpOwo+ICsJCXJlaW5pdF9jb21wbGV0aW9uKCZjaGFubmVsLT5v dGdfaW5pdF9kb25lKTsKPiArCQljaGFubmVsLT5vdGdfaW5pdGlhbGl6aW5nID0gdHJ1ZTsKCltT ZXZlcml0eTogTWVkaXVtXQpJcyBpdCBzYWZlIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY29tcGxldGlv biBoZXJlPwoKV2FpdGVycyBmcm9tIGEgcHJldmlvdXMgd2FpdF9mb3JfY29tcGxldGlvbl90aW1l b3V0KCkgbWlnaHQgc3RpbGwgYmUgaW5zaWRlCndhaXRfZm9yX2NvbW1vbigpIHByb2Nlc3Npbmcg dGhlaXIgd2FrZXVwLgoKU2luY2UgdGhlIGNvbXBsZXRpb24gQVBJIG1hbmRhdGVzIHRoYXQgcmVp bml0X2NvbXBsZXRpb24oKSBtdXN0IG9ubHkgYmUgY2FsbGVkCndoZW4gdGhlcmUgYXJlIG5vIGFj dGl2ZSB3YWl0ZXJzLCBjb3VsZCB0aGlzIGNhdXNlIGEgZGF0YSByYWNlIG9uIHgtPmRvbmUgYW5k CmxlYWQgdG8gdW5wcmVkaWN0YWJsZSB3YWtlLXVwIGJlaGF2aW9yIGZvciBwcmlvciB3YWl0ZXJz PwoKWyAuLi4gXQoKPiAgc3RhdGljIGludCByY2FyX2dlbjNfcGh5X3VzYjJfcG93ZXJfb24oc3Ry dWN0IHBoeSAqcCkKPiAgewo+ICAJc3RydWN0IHJjYXJfZ2VuM19waHkgKnJwaHkgPSBwaHlfZ2V0 X2RydmRhdGEocCk7Cj4gIAlzdHJ1Y3QgcmNhcl9nZW4zX2NoYW4gKmNoYW5uZWwgPSBycGh5LT5j aDsKPiAgCXZvaWQgX19pb21lbSAqdXNiMl9iYXNlID0gY2hhbm5lbC0+YmFzZTsKPiArCWludCBy ZXRyaWVzID0gTlVNX09GX1BIWVM7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAJdTMyIHZh bDsKPiAgCWludCByZXQgPSAwOwo+ICAKPiBAQCAtNjA1LDcgKzc0NiwxOSBAQCBzdGF0aWMgaW50 IHJjYXJfZ2VuM19waHlfdXNiMl9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwKQo+ICAJCQlyZXR1cm4g cmV0Owo+ICAJfQo+ICAKPiAtCWd1YXJkKHNwaW5sb2NrX2lycXNhdmUpKCZjaGFubmVsLT5sb2Nr KTsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZjaGFubmVsLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJ d2hpbGUgKHJldHJpZXMtLSAmJiBjaGFubmVsLT5vdGdfaW5pdGlhbGl6aW5nKSB7Cj4gKwkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbm5lbC0+bG9jaywgZmxhZ3MpOwo+ICsKPiArCQlyZXQg PSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmNoYW5uZWwtPm90Z19pbml0X2RvbmUsCj4g KwkJCQkJCSAgVVNCMl9PVEdfSU5JVF9USU1FT1VUKTsKPiArCQlyZXQgPSByZXQgPyAwIDogLUVU SU1FRE9VVDsKPiArCQlpZiAocmV0ICYmICFyZXRyaWVzKQo+ICsJCQlnb3RvIGRpc2FibGVfcmVn dWxhdG9yOwo+ICsKPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmY2hhbm5lbC0+bG9jaywgZmxhZ3Mp Owo+ICsJfQo+ICAKPiAgCWlmICghcmNhcl9nZW4zX2FyZV9hbGxfcnBoeXNfcG93ZXJfb2ZmKGNo YW5uZWwpKQo+ICAJCWdvdG8gb3V0Owo+IEBAIC02MjAsMjcgKzc3Myw0OSBAQCBzdGF0aWMgaW50 IHJjYXJfZ2VuM19waHlfdXNiMl9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwKQo+ICAJLyogVGhlIHBv d2VyZWQgZmxhZyBzaG91bGQgYmUgc2V0IGZvciBhbnkgb3RoZXIgcGh5cyBhbnl3YXkgKi8KPiAg CXJwaHktPnBvd2VyZWQgPSB0cnVlOwo+ICAKPiAtCXJldHVybiAwOwo+ICsJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmY2hhbm5lbC0+bG9jaywgZmxhZ3MpOwo+ICsKPiArZGlzYWJsZV9yZWd1bGF0 b3I6Cj4gKwlpZiAocmV0ICYmIGNoYW5uZWwtPnZidXMgJiYgIWNoYW5uZWwtPm90Z19pbnRlcm5h bF9yZWcpCj4gKwkJcmVndWxhdG9yX2Rpc2FibGUoY2hhbm5lbC0+dmJ1cyk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiAgfQoKW1NldmVyaXR5OiBIaWdoXQpDb3VsZCBhIGxpbmdlcmluZyAtRVRJTUVE T1VUIGZyb20gdGhlIHByZXZpb3VzIGxvb3AgaXRlcmF0aW9uIGNhdXNlIGEgc3B1cmlvdXMKZmFp bHVyZSBoZXJlPwoKSWYgYSB0aHJlYWQgZW50ZXJzIHRoZSB3YWl0IGxvb3Agd2hpbGUgYW5vdGhl ciB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBPVEcKaW5pdGlhbGl6YXRpb24sIHdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgpIG1pZ2h0IHRpbWUgb3V0IGF0IGxlYXN0IG9uY2UsCnNldHRpbmcg cmV0IHRvIC1FVElNRURPVVQuCgpJZiB0aGUgT1RHIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlcyBi ZWZvcmUgdGhlIG5leHQgbG9vcCBjb25kaXRpb24gZXZhbHVhdGlvbiwKY2hhbm5lbC0+b3RnX2lu aXRpYWxpemluZyBiZWNvbWVzIGZhbHNlIGFuZCB0aGUgbG9vcCBleGl0cyBub3JtYWxseS4KCkhv d2V2ZXIsIHJldCByZXRhaW5zIHRoZSBzdGFsZSAtRVRJTUVET1VUIHZhbHVlLiBJbiBwb3dlcl9v bigpLCB0aGlzIGNhdXNlcyB0aGUKZGlzYWJsZV9yZWd1bGF0b3IgY2xlYW51cCBwYXRoIHRvIGV4 ZWN1dGUgZGVzcGl0ZSBzdWNjZXNzLgoKU2hvdWxkIHJldCBiZSByZXNldCB0byAwIGFmdGVyIGV4 aXRpbmcgdGhlIHdhaXQgbG9vcD8KClsgLi4uIF0KCj4gIHN0YXRpYyBpbnQgcmNhcl9nZW4zX3Bo eV91c2IyX3Bvd2VyX29mZihzdHJ1Y3QgcGh5ICpwKQo+ICB7Cj4gIAlzdHJ1Y3QgcmNhcl9nZW4z X3BoeSAqcnBoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwKTsKPiAgCXN0cnVjdCByY2FyX2dlbjNfY2hh biAqY2hhbm5lbCA9IHJwaHktPmNoOwo+ICsJaW50IHJldHJpZXMgPSBOVU1fT0ZfUEhZUzsKPiAr CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gLQlzY29wZWRfZ3Vh cmQoc3BpbmxvY2tfaXJxc2F2ZSwgJmNoYW5uZWwtPmxvY2spIHsKPiAtCQlycGh5LT5wb3dlcmVk ID0gZmFsc2U7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2hhbm5lbC0+bG9jaywgZmxhZ3MpOwo+ ICAKPiAtCQlpZiAocmNhcl9nZW4zX2FyZV9hbGxfcnBoeXNfcG93ZXJfb2ZmKGNoYW5uZWwpKSB7 Cj4gLQkJCXUzMiB2YWwgPSByZWFkbChjaGFubmVsLT5iYXNlICsgVVNCMl9VU0JDVFIpOwo+ICsJ d2hpbGUgKHJldHJpZXMtLSAmJiBjaGFubmVsLT5vdGdfaW5pdGlhbGl6aW5nKSB7Cj4gKwkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbm5lbC0+bG9jaywgZmxhZ3MpOwo+ICAKPiAtCQkJdmFs IHw9IFVTQjJfVVNCQ1RSX1BMTF9SU1Q7Cj4gLQkJCXdyaXRlbCh2YWwsIGNoYW5uZWwtPmJhc2Ug KyBVU0IyX1VTQkNUUik7Cj4gLQkJfQo+ICsJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGlt ZW91dCgmY2hhbm5lbC0+b3RnX2luaXRfZG9uZSwKPiArCQkJCQkJICBVU0IyX09UR19JTklUX1RJ TUVPVVQpOwo+ICsJCXJldCA9IHJldCA/IDAgOiAtRVRJTUVET1VUOwo+ICsJCWlmIChyZXQgJiYg IXJldHJpZXMpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZj aGFubmVsLT5sb2NrLCBmbGFncyk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGNoYW5uZWwtPnZidXMgJiYg IWNoYW5uZWwtPm90Z19pbnRlcm5hbF9yZWcpCj4gKwlycGh5LT5wb3dlcmVkID0gZmFsc2U7Cj4g Kwo+ICsJaWYgKHJjYXJfZ2VuM19hcmVfYWxsX3JwaHlzX3Bvd2VyX29mZihjaGFubmVsKSkgewo+ ICsJCXUzMiB2YWwgPSByZWFkbChjaGFubmVsLT5iYXNlICsgVVNCMl9VU0JDVFIpOwo+ICsKPiAr CQl2YWwgfD0gVVNCMl9VU0JDVFJfUExMX1JTVDsKPiArCQl3cml0ZWwodmFsLCBjaGFubmVsLT5i YXNlICsgVVNCMl9VU0JDVFIpOwo+ICsJfQo+ICsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmNoYW5uZWwtPmxvY2ssIGZsYWdzKTsKPiArCj4gKwlpZiAoIXJldCAmJiBjaGFubmVsLT52YnVz ICYmICFjaGFubmVsLT5vdGdfaW50ZXJuYWxfcmVnKQo+ICAJCXJldCA9IHJlZ3VsYXRvcl9kaXNh YmxlKGNoYW5uZWwtPnZidXMpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KCltTZXZlcml0eTog SGlnaF0KU2ltaWxhciB0byBwb3dlcl9vbigpLCBjb3VsZCBhIHN0YWxlIC1FVElNRURPVVQgaW4g cmV0IGZyb20gdGhlIHdhaXQgbG9vcApwcmV2ZW50IHRoZSByZWd1bGF0b3IgZnJvbSBiZWluZyBk aXNhYmxlZCBoZXJlLCBsZWFraW5nIHRoZSByZXNvdXJjZT8KCi0tIApTYXNoaWtvIEFJIHJldmll dyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA3MDkxNDAyNTcuODQzNjg1 LTEtY2xhdWRpdS5iZXpuZWErcmVuZXNhc0B0dXhvbi5kZXY/cGFydD0xCgotLSAKbGludXgtcGh5 IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK