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 23018C531C9 for ; Sat, 25 Jul 2026 05:22:05 +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=wRT1vjLm6Tmw4W+M+9xHwFtp+Rjg1IWO7mQDi6NRsNI=; b=THibOfpRGsd1SQ ib1qM3DyHByXLqSfrFzr0zhwLutUKg2vdwvF8ijoxQpG4dPLmQCZwsC82y7WS56qYjgUKmtHDz7jz ljYrt72nVwFGkq8w8T/9b9F1/8WitCfM9CMrXf9R1ILMnY3d6AsUI7dn7RQIiFp9Wj2Oz1C3kF1S7 s4/+oOX6iA3DgBgzQylN8KGsXzK+aEjNVttaHgU8BG5BoNKaAHQrtJchKWYvi/OfB0tNFvIoJoPHG F86lWYwIUt+n0yBF3O1BlNZTN92NWt9SnxhLWFaOvx3EutwFb+zUdiQyoh2FezmahBYl28Imx96uF uESUpcf7T4a63AuQbDnw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnUpo-000000004TS-3U0o; Sat, 25 Jul 2026 05:22:04 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnUpn-000000004TM-2k4W for linux-phy@lists.infradead.org; Sat, 25 Jul 2026 05:22:03 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 6988A43B27; Sat, 25 Jul 2026 05:22:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6AEE1F000E9; Sat, 25 Jul 2026 05:22:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784956923; bh=bG66rhHvJ03E/3MxvHqTQu0vzSPnTuJRVoJfRS1ke/A=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=STmcpFqqNkddAsNbnqEkO6fcohLg7IzzhVnv/YKT1KlsnfYUsWHlO6imbbMWjqLTT EcfPpNStzl3xhcNOuJYyBxHxqAzyJm3NNxX6lrbEgRY+mwCFIwaGSXXcp6oJAFGtPV yomTfztGQoJTsLO2TI5AvEqoznPLcsSiY9TsLt7Zso7mMBVpAQXN/aS7KuSmnTFEMV U6LAdjuqO+2CLihQVTxSzn9kxBTv5AJB7KyG0+bVe1fZHoE9J54QoQpmpIe9gA4pp4 2zoBagh6HV9WpGenJ0Tp3sCBJ26e0oR2KZzXpce3WTAilyNcRXJScQyo15S3E6l+n6 q5MnQ00IBJa3w== From: sashiko-bot@kernel.org Subject: Re: [PATCH 09/17] drm/spacemit: add Saturn DPU hardware backend To: "Cody Kang" Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, vkoul@kernel.org, robh@kernel.org, dri-devel@lists.freedesktop.org, olteanv@gmail.com, neil.armstrong@linaro.org, conor+dt@kernel.org In-Reply-To: <20260724-k3-display-v1-9-f22a10a52867@gmail.com> References: <20260724-k3-display-v1-0-f22a10a52867@gmail.com> <20260724-k3-display-v1-9-f22a10a52867@gmail.com> Date: Sat, 25 Jul 2026 05:22:02 +0000 Message-Id: <20260725052202.C6AEE1F000E9@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 OCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIFVzYWdlIG9mIHNsZWVw LWNhcGFibGUgZnVuY3Rpb25zIGluIGF0b21pYyBDUlRDIGFuZCBwbGFuZSBoYXJkd2FyZSBwcm9n cmFtbWluZyBjYWxsYmFja3MuCi0gW0hpZ2hdIFVuY2hlY2tlZCByZXR1cm4gdmFsdWUgb2YgYGNs a19yb3VuZF9yYXRlYCBsZWFkcyB0byBoYXJkd2FyZSBtaXNjb25maWd1cmF0aW9uLgotIFtIaWdo XSBEYXRhIHJhY2Ugb24gYGZsaXBfZG9uZWAgYmV0d2VlbiB0aGUgdGltZW91dCBoYW5kbGVyIGFu ZCBJU1IgbGVhZGluZyB0byB2YmxhbmsgcmVmY291bnQgdW5kZXJmbG93LgotIFtIaWdoXSBVbmNv bmRpdGlvbmFsIGRlcmVmZXJlbmNlIG9mIGBzdGF0ZS0+ZmJgIHRyaWdnZXJzIGtlcm5lbCBwYW5p YyBmb3Igc29saWQgZmlsbCBwbGFuZXMuCi0gW0hpZ2hdIFdoZW4gdGhlIGNtZGxpc3QgYnVmZmVy IG92ZXJmbG93cywgYGNsLT5ub2RfbGVuYCBpcyBpbmNyZW1lbnRlZCBkZXNwaXRlIHRoZSByb3cg d3JpdGUgYmVpbmcgYWJvcnRlZCwgY2F1c2luZyB0aGUgaGFyZHdhcmUgdG8gcmVhZCBvdXQtb2Yt Ym91bmRzIERNQSBtZW1vcnkuCi0gW0hpZ2hdIFRoZSBgY2xfcmRtYWAgcmVnaXN0ZXIgYnVmZmVy IGlzIG5ldmVyIHBhY2tlZCBpbnRvIHRoZSBjbWRsaXN0IGFuZCBnZXRzIGNvcnJ1cHRlZCB3aGVu IHNoYXJlZCBhY3Jvc3MgcGxhbmVzLgotIFtIaWdoXSBTaWduZWQgcGxhbmUgY29vcmRpbmF0ZXMg YXJlIGRpcmVjdGx5IGNhc3QgdG8gdTMyLCBjYXVzaW5nIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyBy ZWdpc3RlciBwcm9ncmFtbWluZyB3aGVuIG9mZi1zY3JlZW4uCi0gW01lZGl1bV0gVGhlIGBJTlRf VlNZTkNfVVBEQVRFYCBpbnRlcnJ1cHQgaXMgbWlzc2luZyBmcm9tIHRoZSBgaXJxX2xpc3RgIG1h cHBpbmcgYXJyYXksIHByZXZlbnRpbmcgaXRzIHN0YXR1cyBmcm9tIGJlaW5nIGNsZWFyZWQuCi0t CgotLS0gUGF0Y2ggWzldOiBbUEFUQ0ggMDkvMTddIGRybS9zcGFjZW1pdDogYWRkIFNhdHVybiBE UFUgaGFyZHdhcmUgYmFja2VuZCAtLS0KY29tbWl0IDFjZjA5YWQwY2M3ZDEzNjM5YmNiZmM2M2U5 MGQ4ZjQzMTU5MGJmYmQKQXV0aG9yOiBDb2R5IEthbmcgPGNvZHlrYW5nLmhrQGdtYWlsLmNvbT4K CmRybS9zcGFjZW1pdDogYWRkIFNhdHVybiBEUFUgaGFyZHdhcmUgYmFja2VuZAoKQWRkIHRoZSBy ZWdpc3Rlci1sZXZlbCBwcm9ncmFtbWluZyBvZiBvbmUgU2F0dXJuIGluc3RhbmNlOiBjbG9jayBh bmQKcmVzZXQgYnJpbmctdXAsIHNjZW5lIGNvbnRyb2wgYW5kIHRpbWluZyBnZW5lcmF0b3Igc2V0 dXAsIFJETUEgY2hhbm5lbAphbmQgY29tcG9zZXIgbGF5ZXIgcHJvZ3JhbW1pbmcsIEZCQyBsaW5l LWJ1ZmZlciBidWRnZXRpbmcsIGludGVycnVwdApkaXNwYXRjaCBhbmQgdGhlIGNmZy1yZWFkeS92 c3luYyBoYW5kc2hha2UgdGhhdCBwYWNlcyBjb21taXRzLiBUaGUKYmFja2VuZCBpcyBleHBvc2Vk IGFzIGFuIG9wcyB0YWJsZSBhbmQgaGFyZHdhcmUgZGVzY3JpcHRvciB0byBiZQphZ2dyZWdhdGVk IGJ5IHRoZSBLTVMgbGF5ZXIgaW4gYW4gdXBjb21pbmcgcGF0Y2guCgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vc3BhY2VtaXQvZHB1L2RwdV9zYXR1cm4uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9zcGFjZW1pdC9kcHUvZHB1X3NhdHVybi5jCj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uOGQ1ZjEz YmM1MzczYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3BhY2VtaXQv ZHB1L2RwdV9zYXR1cm4uYwpbIC4uLiBdCj4gK3N0YXRpYyBpbnQgZHB1X2VuYWJsZV9jbG9ja3Mo c3RydWN0IHNwYWNlbWl0X2NydGMgKmFfY3J0YykKPiArewo+ICsJc3RydWN0IGRwdV9jbGtfY29u dGV4dCAqY2xrX2N0eCA9ICZhX2NydGMtPmNsa19jdHg7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSAmYV9jcnRjLT5jcnRjOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAm Y3J0Yy0+bW9kZTsKPiArCXU2NCBjbGtfdmFsOwo+ICsJdTY0IHNldF9jbGtfdmFsOwo+ICsJaW50 IHJldDsKPiArCj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2xrX2N0eC0+cHhjbGspOwo+ ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycjsKPiArCXNldF9jbGtfdmFsID0gbW9kZS0+Y2xvY2sg KiAxMDAwOwo+ICsJaWYgKHNldF9jbGtfdmFsKSB7Cj4gKwkJc2V0X2Nsa192YWwgPSBjbGtfcm91 bmRfcmF0ZShjbGtfY3R4LT5weGNsaywgc2V0X2Nsa192YWwpOwoKW1NldmVyaXR5OiBIaWdoXQpE b2VzIHRoaXMgY29kZSBwcm9wZXJseSBoYW5kbGUgbmVnYXRpdmUgZXJyb3IgY29kZXMgZnJvbSBj bGtfcm91bmRfcmF0ZSgpPwoKSWYgY2xrX3JvdW5kX3JhdGUoKSBmYWlscyBhbmQgcmV0dXJucyBh biBlcnJvciBsaWtlIC1FSU5WQUwsIHRoZSB1bmNoZWNrZWQKdmFsdWUgaXMgY2FzdCBkaXJlY3Rs eSB0byB1NjQgc2V0X2Nsa192YWwuIFRoaXMgd2lsbCBzaWduLWV4dGVuZCB0aGUgZXJyb3IKY29k ZSBpbnRvIGEgbWFzc2l2ZSBwb3NpdGl2ZSBpbnRlZ2VyIGJlZm9yZSBpdCBnZXRzIHBhc3NlZCB0 byBjbGtfc2V0X3JhdGUoKSwKd2hpY2ggY2FuIGxlYWQgdG8gaGFyZHdhcmUgbWlzY29uZmlndXJh dGlvbi4KCj4gKwkJY2xrX3ZhbCA9IGNsa19nZXRfcmF0ZShjbGtfY3R4LT5weGNsayk7Cj4gKwkJ aWYgKGNsa192YWwgIT0gc2V0X2Nsa192YWwpIHsKPiArCQkJY2xrX3NldF9yYXRlKGNsa19jdHgt PnB4Y2xrLCBzZXRfY2xrX3ZhbCk7Cj4gKwkJCWRybV9kYmcoY3J0Yy0+ZGV2LCAicHhjbGs9JWxs ZFxuIiwgY2xrX3ZhbCk7Cj4gKwkJfQo+ICsJfQpbIC4uLiBdCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBkcHVfaXNyX3ZibGFuayhzdHJ1Y3Qgc3BhY2VtaXRfY3J0YyAqYV9jcnRjLCBib29sICpmbGlw KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmYV9jcnRjLT5jcnRjOwo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRybSA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1fcGVuZGluZ192 YmxhbmtfZXZlbnQgKmV2ZW50Owo+ICsKPiArCWRybV9jcnRjX2hhbmRsZV92YmxhbmsoY3J0Yyk7 Cj4gKwo+ICsJaWYgKCpmbGlwKQo+ICsJCXJldHVybjsKPiArCSpmbGlwID0gdHJ1ZTsKCltTZXZl cml0eTogSGlnaF0KQ2FuIHRoaXMgcmFjZSBjb25kaXRpb24gY2F1c2UgYSB2YmxhbmsgcmVmZXJl bmNlIHVuZGVyZmxvdz8KClRoZSB0aW1lciBoYW5kbGVyIHNwYWNlbWl0X2NmZ19yZHlfdGltZXJf aGFuZGxlcigpIHNldHMgZmxpcF9kb25lIHRvIHRydWUgYW5kCmNhbGxzIGRybV9jcnRjX3ZibGFu a19wdXQoKSBhc3luY2hyb25vdXNseS4KCklmIHRoZSBJU1IgcnVucyBjb25jdXJyZW50bHksIGJv dGggdGhyZWFkcyBjYW4gb2JzZXJ2ZSBmbGlwX2RvbmUgYXMgZmFsc2UKZHVlIHRvIHRoZSBsb2Nr bGVzcyBUT0NUT1UgY2hlY2sgaGVyZS4gVGhleSB3aWxsIGJvdGggc2V0IGl0IHRvIHRydWUgYW5k CmRyb3AgdGhlIHZibGFuayByZWZlcmVuY2UsIHB1dHRpbmcgdGhlIHJlZmVyZW5jZSB0d2ljZS4K Cj4gKwo+ICsJLyoKPiArCSAqIGV2ZW50X2xvY2sgc2VyaWFsaXNlcyB0aGlzIGFnYWluc3QgdGhl IGNvbW1pdCBhcm1pbmcKPiArCSAqIGNydGMtPnN0YXRlLT5ldmVudC4KPiArCSAqLwo+ICsJc3Bp bl9sb2NrKCZkcm0tPmV2ZW50X2xvY2spOwpbIC4uLiBdCj4gK3N0YXRpYyB1MzIgZHB1X29ubGlu ZV9pc3Ioc3RydWN0IHNwYWNlbWl0X2NydGMgKmFfY3J0YykKPiArewo+ICsJdTMyIGlycV9yYXcs IGlycV9iaXQsIGlycV91cl9iaXQ7Cj4gKwlzdHJ1Y3Qgc3BhY2VtaXRfZHJtX3ByaXZhdGUgKnBy aXYgPSBhX2NydGMtPmNydGMuZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBzcGFjZW1pdF9o d19kZXZpY2UgKmh3ZGV2ID0gcHJpdi0+aHdkZXY7Cj4gKwlpbnQgZGV2X2lkID0gYV9jcnRjLT5k ZXZfaWQ7Cj4gKwo+ICsJdHJhY2VfZHB1X2lzcihhX2NydGMtPmRldl9pZCk7ClsgLi4uIF0KPiAr CWlycV9iaXQgPSBod2Rldi0+Z2V0X2lycV9iaXQoSU5UX1JFU1QsIGRldl9pZCkgfCBpcnFfdXJf Yml0Owo+ICsJaWYgKGlycV9yYXcgJiBpcnFfYml0KQo+ICsJCWh3ZGV2LT5jbHJfaW50X3N0cyhh X2NydGMsIGlycV9iaXQsIGRldl9pZCk7Cj4gKwo+ICsJaXJxX2JpdCA9IGh3ZGV2LT5nZXRfaXJx X2JpdChJTlRfVlNZTkNfVVBEQVRFLCBkZXZfaWQpOwo+ICsJaWYgKGlycV9yYXcgJiBpcnFfYml0 KQo+ICsJCWh3ZGV2LT5jbHJfaW50X3N0cyhhX2NydGMsIGlycV9iaXQsIGRldl9pZCk7CgpbU2V2 ZXJpdHk6IE1lZGl1bV0KSXMgaXQgcG9zc2libGUgdG8gY2xlYXIgdGhlIElOVF9WU1lOQ19VUERB VEUgaW50ZXJydXB0PwoKVGhlIGlycV9saXN0IGFycmF5IGluIGRwdV9zYXR1cm5faGVlLmMgb25s eSBkZWZpbmVzIHVwIHRvIElOVF9SRVNULgoKV2hlbiBnZXRfaXJxX2JpdCgpIGlzIGNhbGxlZCB3 aXRoIElOVF9WU1lOQ19VUERBVEUgKGluZGV4IDUpLCBpdCB0cmlnZ2Vycwp0aGUgQVJSQVlfU0la RShpcnFfbGlzdCkgY2hlY2sgYW5kIHJldHVybnMgMC4gQ29uc2VxdWVudGx5LCB0aGUgaW50ZXJy dXB0CnN0YXR1cyBjYW4gbmV2ZXIgYmUgY2xlYXJlZCBieSB0aGlzIGhhbmRsZXIuCgo+ICsKPiAr CXJldHVybiAwOwo+ICt9ClsgLi4uIF0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Nw YWNlbWl0L2RwdS9kcHVfc2F0dXJuX2hlZS5jIGIvZHJpdmVycy9ncHUvZHJtL3NwYWNlbWl0L2Rw dS9kcHVfc2F0dXJuX2hlZS5jCj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uYzIzZTRjYTM2ZDI2Ygo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3BhY2VtaXQvZHB1L2RwdV9z YXR1cm5faGVlLmMKWyAuLi4gXQo+ICt2b2lkIHNhdHVybl9oZWVfcGxhbmVfdXBkYXRlX2h3X2No YW5uZWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gK3sKPiArCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnN0YXRlID0gcGxhbmUtPnN0YXRlOwo+ICsJc3RydWN0IHNwYWNlbWl0X2NydGMgKmFf Y3J0YyA9IHRvX3NwYWNlbWl0X2NydGMoc3RhdGUtPmNydGMpOwo+ICsJc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwpbIC4uLiBdCj4gKwlzcmNfdyA9IHN0YXRl LT5zcmNfdyA+PiAxNjsKPiArCXNyY19oID0gc3RhdGUtPnNyY19oID4+IDE2Owo+ICsJc3JjX3gg PSBzdGF0ZS0+c3JjX3ggPj4gMTY7Cj4gKwlzcmNfeSA9IHN0YXRlLT5zcmNfeSA+PiAxNjsKPiAr Cj4gKwljcnRjX3cgPSBzdGF0ZS0+Y3J0Y193Owo+ICsJY3J0Y19oID0gc3RhdGUtPmNydGNfaDsK PiArCWNydGNfeCA9IHN0YXRlLT5jcnRjX3g7Cj4gKwljcnRjX3kgPSBzdGF0ZS0+Y3J0Y195OwoK W1NldmVyaXR5OiBIaWdoXQpDYW4gdGhpcyBjYXVzZSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgcmVn aXN0ZXIgcHJvZ3JhbW1pbmcgaWYgdGhlIHBsYW5lIGlzCnBhcnRpYWxseSBvZmYtc2NyZWVuPwoK VGhlIHBsYW5lIGNvb3JkaW5hdGVzIHN0YXRlLT5jcnRjX3ggYW5kIHN0YXRlLT5jcnRjX3kgYXJl IHNpZ25lZCAzMi1iaXQKaW50ZWdlcnMuIERpcmVjdGx5IGFzc2lnbmluZyB0aGVtIHRvIHVuc2ln bmVkIDMyLWJpdCB2YXJpYWJsZXMgd2lsbCBjYXVzZQpuZWdhdGl2ZSB2YWx1ZXMgdG8gb3ZlcmZs b3cgaW50byBleHRyZW1lbHkgbGFyZ2UgcG9zaXRpdmUgaW50ZWdlcnMuCgpXaGVuIHRoZXNlIGFy ZSB3cml0dGVuIHRvIHRoZSBoYXJkd2FyZSBhcmVhIGNvbnRyb2wgcmVnaXN0ZXJzLCBpdCBjcmVh dGVzCmludmFsaWQgY29uc3RyYWludHMgbGlrZSBhcmVhX2xlZnQgYmVpbmcgZ3JlYXRlciB0aGFu IGFyZWFfcmlnaHQuCgo+ICsKPiArCWRybV9kYmcocGxhbmUtPmRldiwgImNydGNfeCAldSBjcnRj X3kgJXVcbiIsIGNydGNfeCwgY3J0Y195KTsKPiArCj4gKwlpZiAocmRtYV9pZCA9PSBSRE1BX0lO VkFMSURfSUQpCj4gKwkJc29saWRfZW4gPSB0cnVlOwo+ICsKPiArCXRyYWNlX2RwdV9wbGFuZV9p bmZvKHN0YXRlLCBmYiwgcmRtYV9pZCwgYWxwaGEsIHN0YXRlLT5yb3RhdGlvbik7Cj4gKwo+ICsJ LyogRm9yIHNvbGlkIGNvbG9yIGJvdGggc3JjX3cgYW5kIHNyY19oIGFyZSAwICovCj4gKwlpZiAo IXNvbGlkX2VuKSB7Cj4gKwkJYmFzZSA9IFJETUFfQkFTRV9BRERSW3JkbWFfaWRdOwo+ICsJCS8q IGxpbmVhciBzY2Fub3V0IG9ubHk6IHRoZSBGQkMgZGVjb2RlIHBhdGggaXMgbm90IGV4cG9zZWQg Ki8KPiArCQlkcHVfd3JpdGUoaHdkZXYsIFJETUFfUEFUSF9YX1JFRywgYmFzZSwgbGF5ZXJfbW9k ZSwgMCwgY2xfcmRtYSk7CgpbU2V2ZXJpdHk6IEhpZ2hdCklzIHRoZSBjbF9yZG1hIHJlZ2lzdGVy IGJ1ZmZlciBldmVyIGZsdXNoZWQgdG8gdGhlIGNvbW1hbmQgbGlzdD8KClJETUEgY29uZmlndXJh dGlvbnMgYXJlIHdyaXR0ZW4gdG8gYV9jcnRjLT5jbF9yZG1hLCBidXQgY21kbGlzdF9yZWdzX3Bh Y2tpbmcoKQppcyBuZXZlciBjYWxsZWQgZm9yIHRoaXMgYnVmZmVyLCBtZWFuaW5nIHRoZSBjb25m aWd1cmF0aW9ucyBhcmUgZGlzY2FyZGVkIGFuZApuZXZlciByZWFjaCB0aGUgaGFyZHdhcmUuCgpG dXJ0aGVybW9yZSwgZG9lcyBzaGFyaW5nIGFfY3J0Yy0+Y2xfcmRtYSBhY3Jvc3MgcGxhbmVzIGNv cnJ1cHQgdGhlIHN0YXRlPwpXaGVuIGRwdV93cml0ZSgpIGlzIGNhbGxlZCwgaXQgdW5jb25kaXRp b25hbGx5IG92ZXJ3cml0ZXMgY2xfcC0+YmFzZS4gSWYKbXVsdGlwbGUgcGxhbmVzIGFyZSB1cGRh dGVkIGNvbmN1cnJlbnRseSwgdGhlIGxhc3QgcGxhbmUgd2lsbCBvdmVyd3JpdGUgdGhlCmJhc2Ug YWRkcmVzcyBmb3IgYWxsIHByaW9yIHBsYW5lcycgcmVnaXN0ZXJzIGluIHRoaXMgc2hhcmVkIGJ1 ZmZlci4KCj4gKwkJZHB1X3dyaXRlKGh3ZGV2LCBSRE1BX1BBVEhfWF9SRUcsIGJhc2UsIGxheWVy X2NtcHNyX2lkLAo+ICsJCQkgIGFfY3J0Yy0+ZGV2X2lkLCBjbF9yZG1hKTsKWyAuLi4gXQo+ICsJ fSBlbHNlIHsKPiArCQkvKiBDb25zdGFudC1maWxsIGxheWVyOiB6ZXJvLXNpemUgc291cmNlLCB0 cmFuc3BhcmVudCBibGFjay4gKi8KPiArCQlzb2xpZF9yID0gMDsKPiArCQlzb2xpZF9nID0gMDsK PiArCQlzb2xpZF9iID0gMDsKPiArCQlzb2xpZF9hID0gMDsKPiArCX0KPiArCj4gKwlzd2l0Y2gg KHBpeGVsX2FscGhhKSB7ClsgLi4uIF0KPiArCX0KPiArCj4gKwlpZiAoc3RhdGUtPmZiLT5mb3Jt YXQgJiYgc3RhdGUtPmZiLT5mb3JtYXQtPmhhc19hbHBoYSAmJgoKW1NldmVyaXR5OiBIaWdoXQpX aWxsIHRoaXMgY3Jhc2ggaWYgdGhlIHBsYW5lIGlzIGEgc29saWQgZmlsbCBwbGFuZT8KCkluIERS TSwgc29saWQgZmlsbCBwbGFuZXMgZG8gbm90IHJlcXVpcmUgYW4gYXR0YWNoZWQgZnJhbWVidWZm ZXIsIG1lYW5pbmcKc3RhdGUtPmZiIGNhbiBiZSBOVUxMLiBVbmNvbmRpdGlvbmFsbHkgZGVyZWZl cmVuY2luZyBzdGF0ZS0+ZmItPmZvcm1hdCBoZXJlCndpdGhvdXQgdmVyaWZ5aW5nIGlmIHN0YXRl LT5mYiBpcyB2YWxpZCB3aWxsIHRyaWdnZXIgYSBrZXJuZWwgcGFuaWMuCgo+ICsJICAgIHBpeGVs X2FscGhhICE9IERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUpIHsKPiArCQlpZiAoYWxwaGEgIT0g MHhmZikKPiArCQkJYWxwaGFfc2VsID0gMHgyOwo+ICsJCWVsc2UKPiArCQkJYWxwaGFfc2VsID0g MHgxOwo+ICsJfSBlbHNlIHsKPiArCQlibGVuZF9tb2RlID0gMHgwOwo+ICsJCWFscGhhX3NlbCA9 IDB4MDsKPiArCX0KPiArCj4gKwljbF9jbXAgPSBhbGxvY19jbWRsaXN0X3JlZ3MoQ01QU19YX1JF Ryk7CgpbU2V2ZXJpdHk6IEhpZ2hdClNpbmNlIHBsYW5lIGF0b21pYyB1cGRhdGUgY2FsbGJhY2tz IGV4ZWN1dGUgaW4gYXRvbWljIGNvbnRleHQgZHVyaW5nCm5vbi1ibG9ja2luZyBjb21taXRzLCBp cyBpdCBzYWZlIHRvIGFsbG9jYXRlIG1lbW9yeSBoZXJlPwoKVGhlIGFsbG9jX2NtZGxpc3RfcmVn cygpIG1hY3JvIHVzZXMga3phbGxvYygpIHdpdGggR0ZQX0tFUk5FTC4gQ2FsbGluZwpzbGVlcGlu ZyBmdW5jdGlvbnMgZnJvbSBhbiBhdG9taWMgY29udGV4dCBjYXVzZXMga2VybmVsIHdhcm5pbmdz LApzeXN0ZW0gaW5zdGFiaWxpdHksIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzLgoKPiArCj4gKwli YXNlID0gQ01QX0JBU0VfQUREUlthX2NydGMtPmRldl9pZF07Cj4gKwlkcHVfd3JpdGUoaHdkZXYs IENNUFNfWF9SRUcsIGJhc2UsIGRzdF93LCBtb2RlLT5oZGlzcGxheSwgY2xfY21wKTsKWyAuLi4g XQo+ICt2b2lkIHNhdHVybl9oZWVfY21kbGlzdF9maWxsX2RhdGFfcm93KHN0cnVjdCBjbWRsaXN0 ICpjbCwgdTMyIHN0cm9iZSwKPiArCQkJCSAgICAgIHUzMiBvZmZzZXQsIHUzMiB2YWx1ZVtdKQo+ ICt7Cj4gKwlzdHJ1Y3QgY21kbGlzdF9yb3cgKnJvdzsKPiArCXU4IGk7Cj4gKwo+ICsJLyoKPiAr CSAqIHBhY2tpbmcgY291bnRzIHJvd3MgYmxpbmRseTsgZHJvcCB0aGUgcm93IHJhdGhlciB0aGFu IHRoZSBidWZmZXIgZW5kCj4gKwkgKi8KPiArCWlmIChXQVJOX09OQ0UoQ0xfSEVBREVSX1NaICsg KGNsLT5ub2RfbGVuICsgMSkgKiBDTF9ST1dfU1ogPiBjbC0+c2l6ZSwKPiArCQkgICAgICAiY21k bGlzdCBidWZmZXIgZnVsbCAocm93cyAldSlcbiIsIGNsLT5ub2RfbGVuKSkKPiArCQlyZXR1cm47 CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgdGhpcyBjb3JyZWN0bHkgaGFuZGxlIGNvbW1hbmQgbGlz dCBidWZmZXIgb3ZlcmZsb3dzPwoKV2hlbiB0aGUgY21kbGlzdCBidWZmZXIgaXMgZnVsbCwgdGhp cyBmdW5jdGlvbiBpc3N1ZXMgYSB3YXJuaW5nIGFuZCByZXR1cm5zCmVhcmx5IHdpdGhvdXQgd3Jp dGluZyB0aGUgcm93LgoKSG93ZXZlciwgaXRzIGNhbGxlciBpbiBjbWRsaXN0X3JlZ3NfcGFja2lu ZygpIGlnbm9yZXMgdGhpcyBmYWlsdXJlIGFuZApzdGlsbCBpbmNyZW1lbnRzIGNsLT5ub2RfbGVu LiBUaGlzIGFydGlmaWNpYWxseSBpbmZsYXRlcyB0aGUgbGVuZ3RoIGluIHRoZQpoZWFkZXIuIFdo ZW4gdGhlIERQVSBoYXJkd2FyZSBwYXJzZXMgdGhlIGNtZGxpc3QsIGl0IHdpbGwgYXR0ZW1wdCB0 byByZWFkCm91dC1vZi1ib3VuZHMgRE1BIG1lbW9yeS4KCj4gKwo+ICsJcm93ID0gKHN0cnVjdCBj bWRsaXN0X3JvdyAqKSgoY2hhciAqKWNsLT52YSArIENMX0hFQURFUl9TWikgKyBjbC0+bm9kX2xl bjsKWyAuLi4gXQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3BhY2VtaXQvZHB1L3Nh dHVybl9mYmNtZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9zcGFjZW1pdC9kcHUvc2F0dXJuX2ZiY21l bS5jCj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uMTQ0NzE2ZWM5YjgwYwo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3BhY2VtaXQvZHB1L3NhdHVybl9mYmNtZW0uYwpbIC4u LiBdCj4gK2ludCBzYXR1cm5fY2FsX2xheWVyX2ZiY21lbV9zaXplKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICsJCQkJIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlz dHJ1Y3Qgc3BhY2VtaXRfcGxhbmVfc3RhdGUgKnBzdGF0ZSA9IHRvX3NwYWNlbWl0X3BsYW5lX3N0 YXRlKHN0YXRlKTsKPiArCXUzMiBkcm1fNGNjX2ZtdCA9IHBzdGF0ZS0+c3RhdGUuZmItPmZvcm1h dC0+Zm9ybWF0OwoKW1NldmVyaXR5OiBIaWdoXQpXaWxsIHRoaXMgY3Jhc2ggaWYgdGhlIHBsYW5l IGlzIGEgc29saWQgZmlsbCBwbGFuZT8KCkluIERSTSwgc29saWQgZmlsbCBwbGFuZXMgZG8gbm90 IHJlcXVpcmUgYW4gYXR0YWNoZWQgZnJhbWVidWZmZXIsIG1lYW5pbmcKc3RhdGUtPmZiIGNhbiBi ZSBOVUxMLiBVbmNvbmRpdGlvbmFsbHkgZGVyZWZlcmVuY2luZyBzdGF0ZS0+ZmItPmZvcm1hdCBo ZXJlCndpdGhvdXQgdmVyaWZ5aW5nIGlmIHN0YXRlLT5mYiBpcyB2YWxpZCB3aWxsIHRyaWdnZXIg YSBrZXJuZWwgcGFuaWMuCgo+ICsJdTMyIGNyb3BfdyA9IHBzdGF0ZS0+c3RhdGUuc3JjX3cgPj4g MTY7Cj4gKwo+ICsJLyogT25seSBsaW5lYXIgc2l6aW5nOiB0aGUgY29tcHJlc3NlZCBwYXRoIGlz IG5vdCBleHBvc2VkLiAqLwo+ICsJcmV0dXJuIGdldF9yYXdfZGF0YV9wbGFuZV9yZG1hX21lbV9z aXplKGRybV80Y2NfZm10LCBjcm9wX3csCj4gKwkJCQkJCSZwc3RhdGUtPmZiY21lbV9zaXplKTsK PiArfQoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRj aHNldC8yMDI2MDcyNC1rMy1kaXNwbGF5LXYxLTAtZjIyYTEwYTUyODY3QGdtYWlsLmNvbT9wYXJ0 PTkKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBo eQo=