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 1EDC4E7AD42 for ; Thu, 25 Dec 2025 09:02:34 +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=agJB/SwP/0fYcGy6Q7HAkO26CBWrf1nxkxQM9NTH4UQ=; b=WBuk8wX6rBOWdC wwLkTVZUMA15ScRiOU/+T3mayGjNZ5CZYS9oO3v3MKxwXZcEpcAKtx+yqbVq3HMsPBOAxGLnSgZ07 ngAKhMQZxMZomi+7LFr9NWLi1flyKC5tpHB7PWVuRZSHNn9XwtQma8jP3tpPgFfUFG+VrphNRvyMy bHZJNgXHLzgvQgFH0y5cwPHxEyuwi5lsz5ZF2xHyC9eQl/N6I3uwLTMfgF8p7MeVgBNAb0uxJinmZ COdTFZOdQHlVs6i3Qs5dnhWuhQTcX0Xy9fvWGvVEyZv3Zcw44FW87qByJNfxPLX9J4wavqSVv34qy VHR+podCXF0ab1J9KPmQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vYhEm-00000000Fpm-11RM; Thu, 25 Dec 2025 09:02:24 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vYhEi-00000000Fp4-3fBp; Thu, 25 Dec 2025 09:02:22 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id D234F41AB0; Thu, 25 Dec 2025 09:02:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2303C4CEF1; Thu, 25 Dec 2025 09:02:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1766653339; bh=ie7EaaBeEo6gHzNYGikN9tQMfrEcChNEiwfKvqsQdU0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Xy5mwcxZUR4UGgHnzMTecy/ESJza9JQUJkzQ/lgEHFZDijfuv1ePM91IpmtJvyRmC CfHscNawRqNJDgAi1a5Lpt3zRx9H1mxWZWniqZ1XxwxlIrbtrQNcCyeWTpFNjiXCGV ux5FK8OByykYzNp9u8HLAlVuJ4dWcuD+2+PsdCqQVQTpLpz2pt35NTtp0Z3+t8Sh6O GBx+zDs8d1G+/JOcblkZjM+KsMMluL1br0vV7/EzqHCHtorh6pheZiHVWXjF/Rm1OS taCESfjpoNXJlzHLKwaJeYVEIrR+5IrhvRAVVnKNyH3pr2Oz16zwwRytLuRc6DYMuT mGZqTd8/8IEsg== Date: Thu, 25 Dec 2025 10:02:15 +0100 From: Krzysztof Kozlowski To: joaopeixoto@osyx.tech Cc: linux-kernel@vger.kernel.org, ajd@linux.ibm.com, alex@ghiti.fr, aou@eecs.berkeley.edu, bagasdotme@gmail.com, catalin.marinas@arm.com, conor+dt@kernel.org, corbet@lwn.net, dan.j.williams@intel.com, davidmcerdeira@osyx.tech, devicetree@vger.kernel.org, dev@kael-k.io, gregkh@linuxfoundation.org, haren@linux.ibm.com, heiko@sntech.de, jose@osyx.tech, kever.yang@rock-chips.com, krzk+dt@kernel.org, linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk, linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, maddy@linux.ibm.com, mani@kernel.org, nathan@kernel.org, neil.armstrong@linaro.org, palmer@dabbelt.com, pjw@kernel.org, prabhakar.mahadev-lad.rj@bp.renesas.com, robh@kernel.org, will@kernel.org Subject: Re: [PATCH 2/5] virt: add Bao IPC shared memory driver Message-ID: <20251225-nippy-umber-inchworm-ced095@quoll> References: <20251224135217.25350-1-joaopeixoto@osyx.tech> <20251224135217.25350-3-joaopeixoto@osyx.tech> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20251224135217.25350-3-joaopeixoto@osyx.tech> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251225_010221_022879_9D717D3B X-CRM114-Status: GOOD ( 34.68 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBEZWMgMjQsIDIwMjUgYXQgMDE6NTI6MTRQTSArMDAwMCwgam9hb3BlaXhvdG9Ab3N5 eC50ZWNoIHdyb3RlOgo+IEZyb206IEpvw6NvIFBlaXhvdG8gPGpvYW9wZWl4b3RvQG9zeXgudGVj aD4KPiAKPiBBZGQgYSBuZXcgZHJpdmVyIHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgZm9yIGNvbW11 bmljYXRpb24gd2l0aCBndWVzdHMKPiBob3N0ZWQgYnkgdGhlIEJhbyBoeXBlcnZpc29yIHVzaW5n IHNoYXJlZC1tZW1vcnkgY2hhbm5lbHMuIFRoZSBkcml2ZXIKPiBleHBvc2VzIHJlYWQvd3JpdGUg cmVnaW9ucyBkZWZpbmVkIGluIGRldmljZSB0cmVlIGFuZCBub3RpZmllcyB0aGUKPiBoeXBlcnZp c29yIHZpYSBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaHlwZXJjYWxsIChTTUMvSFZDIG9uIEFS TSBhbmQKPiBTQkkgZWNhbGwgb24gUklTQy1WKS4KPiAKPiBUaGUgcGF0Y2ggaW50cm9kdWNlczoK PiAgIC0gZHJpdmVycy9iYW8vIHdpdGggdGhlIGluaXRpYWwgQmFvIElQQyBzaGFyZWQtbWVtb3J5 IGltcGxlbWVudGF0aW9uCj4gICAtIEtjb25maWcgZW50cnkgZW5hYmxpbmcgQkFPX1NITUVNCj4g ICAtIE1ha2VmaWxlIGludGVncmF0aW9uIGZvciBidWlsZGluZyB0aGUgZHJpdmVyCj4gICAtIEEg Y2hhcmFjdGVyIGRldmljZSBpbnRlcmZhY2Ugc3VwcG9ydGluZyBtbWFwKCksIHJlYWQoKSwgYW5k IHdyaXRlKCkKPiAgIC0gUGxhdGZvcm0gZHJpdmVyIHN1cHBvcnQgdXNpbmcgRFQgcHJvcGVydGll cyBmb3IgY2hhbm5lbCBsYXlvdXQKPiAKPiBFYWNoIGRldmljZSBpbnN0YW5jZSBtYXBzIGl0cyBh c3NpZ25lZCBzaGFyZWQtbWVtb3J5IHJlZ2lvbiwgdmFsaWRhdGVzCj4gcmVhZC93cml0ZSBjaGFu bmVsIGNvbmZpZ3VyYXRpb24sIGFuZCBleHBvc2VzIGEgL2Rldi9iYW9pcGM8Tj4gbm9kZQo+IHVz ZWQgYnkgdXNlciBzcGFjZSB0byBleGNoYW5nZSBkYXRhIHdpdGggQmFvIGd1ZXN0cy4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBKb8OjbyBQZWl4b3RvIDxqb2FvcGVpeG90b0Bvc3l4LnRlY2g+Cj4gLS0t Cj4gIGRyaXZlcnMvdmlydC9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgMiArCj4gIGRyaXZl cnMvdmlydC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvdmlydC9i YW8vS2NvbmZpZyAgICAgICAgICAgICB8ICAgMyArCj4gIGRyaXZlcnMvdmlydC9iYW8vTWFrZWZp bGUgICAgICAgICAgICB8ICAgMyArCj4gIGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vS2NvbmZp ZyAgICB8ICAgOSArCj4gIGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vTWFrZWZpbGUgICB8ICAg MyArCj4gIGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vaXBjc2htZW0uYyB8IDUzOSArKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCA1NjAgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9LY29uZmlnCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL01ha2VmaWxlCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL0tjb25maWcKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vaXBjc2htZW0uYwo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3ZpcnQvS2NvbmZpZyBiL2RyaXZlcnMvdmlydC9LY29uZmlnCj4gaW5kZXggNTJl YjdlNGJhNzFmLi5jYjk4YzRjNTJmZDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aXJ0L0tjb25m aWcKPiArKysgYi9kcml2ZXJzL3ZpcnQvS2NvbmZpZwo+IEBAIC00Nyw2ICs0Nyw4IEBAIHNvdXJj ZSAiZHJpdmVycy92aXJ0L25pdHJvX2VuY2xhdmVzL0tjb25maWciCj4gIAo+ICBzb3VyY2UgImRy aXZlcnMvdmlydC9hY3JuL0tjb25maWciCj4gIAo+ICtzb3VyY2UgImRyaXZlcnMvdmlydC9iYW8v S2NvbmZpZyIKPiArCj4gIGVuZGlmCj4gIAo+ICBzb3VyY2UgImRyaXZlcnMvdmlydC9jb2NvL0tj b25maWciCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9NYWtlZmlsZSBiL2RyaXZlcnMvdmly dC9NYWtlZmlsZQo+IGluZGV4IGYyOTkwMWJkNzgyMC4uNjIzYTY3MWY4NzExIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvdmlydC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvdmlydC9NYWtlZmlsZQo+ IEBAIC0xMCwzICsxMCw0IEBAIG9iai15CQkJCSs9IHZib3hndWVzdC8KPiAgb2JqLSQoQ09ORklH X05JVFJPX0VOQ0xBVkVTKQkrPSBuaXRyb19lbmNsYXZlcy8KPiAgb2JqLSQoQ09ORklHX0FDUk5f SFNNKQkJKz0gYWNybi8KPiAgb2JqLXkJCQkJKz0gY29jby8KPiArb2JqLSQoQ09ORklHX0JBT19T SE1FTSkJCSs9IGJhby8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0L2Jhby9LY29uZmlnIGIv ZHJpdmVycy92aXJ0L2Jhby9LY29uZmlnCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwMDAwMDAuLjRmNzkyOWQ1NzQ3NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L3ZpcnQvYmFvL0tjb25maWcKPiBAQCAtMCwwICsxLDMgQEAKPiArIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAo+ICsKPiArc291cmNlICJkcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVt L0tjb25maWciCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9iYW8vTWFrZWZpbGUgYi9kcml2 ZXJzL3ZpcnQvYmFvL01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjY4ZjVkM2YyODJjNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3Zp cnQvYmFvL01ha2VmaWxlCj4gQEAgLTAsMCArMSwzIEBACj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKPiArCj4gK29iai0kKENPTkZJR19CQU9fU0hNRU0pICs9IGlwY3NobWVt Lwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL0tjb25maWcgYi9kcml2 ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL0tjb25maWcKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uNDI2OTAwNzNlODE5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvdmlydC9iYW8vaXBjc2htZW0vS2NvbmZpZwo+IEBAIC0wLDAgKzEsOSBAQAo+ICsjIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gK2NvbmZpZyBCQU9fU0hNRU0KPiArCXRy aXN0YXRlICJCYW8gaHlwZXJ2aXNvciBzaGFyZWQgbWVtb3J5IHN1cHBvcnQiCj4gKwo+ICsJaGVs cAo+ICsJVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIEJhbyBzaGFyZWQgbWVtb3J5IGNvbW11bmlj YXRpb24uCj4gKwlJdCBhbGxvd3MgdGhlIGtlcm5lbCB0byBpbnRlcmZhY2Ugd2l0aCBndWVzdHMg cnVubmluZyB1bmRlcgo+ICsJdGhlIEJhbyBoeXBlcnZpc29yLCBwcm92aWRpbmcgYSBjaGFyYWN0 ZXIgZGV2aWNlIGludGVyZmFjZQo+ICsJZm9yIGV4Y2hhbmdpbmcgZGF0YSB0aHJvdWdoIGRlZGlj YXRlZCBzaGFyZWQtbWVtb3J5IHJlZ2lvbnMuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9i YW8vaXBjc2htZW0vTWFrZWZpbGUgYi9kcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL01ha2VmaWxl Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmUwMjdkY2RiMDZh YQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL01ha2Vm aWxlCj4gQEAgLTAsMCArMSwzIEBACj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPiArb2JqLSQoQ09ORklHX0JBT19TSE1FTSkgKz0gYmFvLm8KPiArYmFvLW9ianMgKz0gaXBj c2htZW0ubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL2lwY3NobWVt LmMgYi9kcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL2lwY3NobWVtLmMKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uY2FkYjc5YmZjYTZlCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2RyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vaXBjc2htZW0uYwo+IEBAIC0wLDAg KzEsNTM5IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4g KyAqIEJhbyBIeXBlcnZpc29yIElQQyBUaHJvdWdoIFNoYXJlZC1tZW1vcnkgRHJpdmVyCj4gKyAq Cj4gKyAqIENvcHlyaWdodCAoYykgQmFvIFByb2plY3QgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KPiArICoKPiArICogQXV0aG9yczoKPiArICoJRGF2aWQgQ2VyZGVpcmEg PGRhdmlkbWNlcmRlaXJhQG9zeXgudGVjaD4KPiArICoJSm9zw6kgTWFydGlucyA8am9zZUBvc3l4 LnRlY2g+Cj4gKyAqCUpvw6NvIFBlaXhvdG8gPGpvYW9wZWl4b3RvQG9zeXgudGVjaD4KPiArICov Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC91YWNj ZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4K PiArI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiAr I2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wb2xsLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvY3Rs Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2Uu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tdXRl eC5oPgo+ICsjaW5jbHVkZSA8bGludXgvd2FpdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW0uaD4K PiArCj4gKyNpZiBkZWZpbmVkKENPTkZJR19BUk02NCkgfHwgZGVmaW5lZChDT05GSUdfQVJNKQo+ ICsjaW5jbHVkZSA8bGludXgvYXJtLXNtY2NjLmg+Cj4gKyNpbmNsdWRlIDxhc20vbWVtb3J5Lmg+ Cj4gKyNlbGlmIENPTkZJR19SSVNDVgo+ICsjaW5jbHVkZSA8YXNtL3NiaS5oPgo+ICsjZW5kaWYK PiArCj4gKyNkZWZpbmUgREVWX05BTUUgImJhb2lwYyIKPiArI2RlZmluZSBNQVhfREVWSUNFUyAx Ngo+ICsjZGVmaW5lIE5BTUVfTEVOIDMyCj4gKwo+ICtzdGF0aWMgZGV2X3QgYmFvX2lwY3NobWVt X2RldnQ7Cj4gK3N0cnVjdCBjbGFzcyAqY2w7Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGJhb19p cGNzaG1lbSAtIEJhbyBJUEMgc2hhcmVkIG1lbW9yeSBkZXZpY2UKPiArICogQGNkZXY6IENoYXJh Y3RlciBkZXZpY2UgaW50ZXJmYWNlCj4gKyAqIEBkZXY6IERldmljZSBzdHJ1Y3R1cmUKPiArICog QGlkOiBEZXZpY2UgaW5zdGFuY2UgSUQKPiArICogQGxhYmVsOiBOYW1lL2xhYmVsIG9mIHRoZSBk ZXZpY2UKPiArICogQHJlYWRfYmFzZTogQmFzZSBhZGRyZXNzIG9mIHRoZSByZWFkIGNoYW5uZWwK PiArICogQHJlYWRfc2l6ZTogU2l6ZSBvZiB0aGUgcmVhZCBjaGFubmVsCj4gKyAqIEB3cml0ZV9i YXNlOiBCYXNlIGFkZHJlc3Mgb2YgdGhlIHdyaXRlIGNoYW5uZWwKPiArICogQHdyaXRlX3NpemU6 IFNpemUgb2YgdGhlIHdyaXRlIGNoYW5uZWwKPiArICogQHBoeXNpY2FsX2Jhc2U6IFBoeXNpY2Fs IG1lbW9yeSBiYXNlIGFkZHJlc3MKPiArICogQHNobWVtX3NpemU6IFRvdGFsIHNpemUgb2YgdGhl IHNoYXJlZCBtZW1vcnkgcmVnaW9uCj4gKyAqLwo+ICtzdHJ1Y3QgYmFvX2lwY3NobWVtIHsKPiAr CXN0cnVjdCBjZGV2IGNkZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwlpbnQgaWQ7Cj4g KwljaGFyIGxhYmVsW05BTUVfTEVOXTsKPiArCXZvaWQgKnJlYWRfYmFzZTsKPiArCXNpemVfdCBy ZWFkX3NpemU7Cj4gKwl2b2lkICp3cml0ZV9iYXNlOwo+ICsJc2l6ZV90IHdyaXRlX3NpemU7Cj4g KwlwaHlzX2FkZHJfdCAqcGh5c2ljYWxfYmFzZTsKPiArCXNpemVfdCBzaG1lbV9zaXplOwo+ICt9 Owo+ICsKPiArI2lmZGVmIENPTkZJR19BUk02NAoKTm8gaWZkZWZzLiBSZWFkIExpbnV4IGNvZGlu ZyBzdHlsZSBmaXJzdC4KCj4gKy8qKgo+ICsgKiBiYW9faXBjc2htZW1fbm90aWZ5IC0gTm90aWZ5 IHRoZSBCYW8gaHlwZXJ2aXNvciBvZiBhbiBJUEMgc2hhcmVkIG1lbW9yeSBldmVudCAoQVJNNjQp Cj4gKyAqIEBkZXY6IElQQyBzaGFyZWQgbWVtb3J5IGRldmljZQo+ICsgKgo+ICsgKiBFeGVjdXRl cyBhIGZhc3QgU01DIGh5cGVyY2FsbCB0byBub3RpZnkgdGhlIGh5cGVydmlzb3Igb2YgYW4gZXZl bnQKPiArICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBJUEMgc2hhcmVkIG1lbW9yeSBkZXZp Y2UuCj4gKyAqCj4gKyAqIFJldHVybjogSHlwZXJjYWxsIHJldHVybiB2YWx1ZS4KPiArICovCj4g K3N0YXRpYyB1aW50NjRfdCBiYW9faXBjc2htZW1fbm90aWZ5KHN0cnVjdCBiYW9faXBjc2htZW0g KmRldikKPiArewo+ICsJcmVnaXN0ZXIgdWludDY0X3QgeDAgYXNtKCJ4MCIpID0KPiArCQlBUk1f U01DQ0NfQ0FMTF9WQUwoQVJNX1NNQ0NDX0ZBU1RfQ0FMTCwgQVJNX1NNQ0NDX1NNQ182NCwKPiAr CQkJCSAgIEFSTV9TTUNDQ19PV05FUl9WRU5ET1JfSFlQLCAxKTsKPiArCXJlZ2lzdGVyIHVpbnQ2 NF90IHgxIGFzbSgieDEiKSA9IGRldi0+aWQ7Cj4gKwlyZWdpc3RlciB1aW50NjRfdCB4MiBhc20o IngyIikgPSAwOwo+ICsKPiArCWFzbSB2b2xhdGlsZSgiaHZjIDBcdFxuIiA6ICI9ciIoeDApIDog InIiKHgwKSwgInIiKHgxKSwgInIiKHgyKSk7Cj4gKwo+ICsJcmV0dXJuIHgwOwo+ICt9Cj4gKyNl bGlmIENPTkZJR19BUk0KPiArLyoqCj4gKyAqIGJhb19pcGNzaG1lbV9ub3RpZnkgLSBOb3RpZnkg dGhlIEJhbyBoeXBlcnZpc29yIG9mIGFuIElQQyBzaGFyZWQgbWVtb3J5IGV2ZW50IChBUk0pCj4g KyAqIEBkZXY6IElQQyBzaGFyZWQgbWVtb3J5IGRldmljZQo+ICsgKgo+ICsgKiBFeGVjdXRlcyBh IGZhc3QgU01DIGh5cGVyY2FsbCB0byBub3RpZnkgdGhlIGh5cGVydmlzb3Igb2YgYW4gZXZlbnQK PiArICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBJUEMgc2hhcmVkIG1lbW9yeSBkZXZpY2Uu Cj4gKyAqCj4gKyAqIFJldHVybjogSHlwZXJjYWxsIHJldHVybiB2YWx1ZS4KPiArICovCj4gK3N0 YXRpYyB1aW50MzJfdCBiYW9faXBjc2htZW1fbm90aWZ5KHN0cnVjdCBiYW9faXBjc2htZW0gKmRl dikKPiArewo+ICsJcmVnaXN0ZXIgdWludDMyX3QgcjAgYXNtKCJyMCIpID0KPiArCQlBUk1fU01D Q0NfQ0FMTF9WQUwoQVJNX1NNQ0NDX0ZBU1RfQ0FMTCwgQVJNX1NNQ0NDX1NNQ18zMiwKPiArCQkJ CSAgIEFSTV9TTUNDQ19PV05FUl9WRU5ET1JfSFlQLCAxKTsKPiArCXJlZ2lzdGVyIHVpbnQzMl90 IHIxIGFzbSgicjEiKSA9IGRldi0+aWQ7Cj4gKwlyZWdpc3RlciB1aW50MzJfdCByMiBhc20oInIy IikgPSAwOwo+ICsKPiArCWFzbSB2b2xhdGlsZSgiaHZjICMwXHRcbiIgOiAiPXIiKHIwKSA6ICJy IihyMCksICJyIihyMSksICJyIihyMikpOwo+ICsKPiArCXJldHVybiByMDsKPiArfQo+ICsjZWxp ZiBDT05GSUdfUklTQ1YKPiArLyoqCj4gKyAqIGJhb19pcGNzaG1lbV9ub3RpZnkgLSBOb3RpZnkg dGhlIEJhbyBoeXBlcnZpc29yIG9mIGFuIElQQyBzaGFyZWQgbWVtb3J5IGV2ZW50IChSSVNDLVYp Cj4gKyAqIEBkZXY6IElQQyBzaGFyZWQgbWVtb3J5IGRldmljZQo+ICsgKgo+ICsgKiBFeGVjdXRl cyBhbiBTQkkgY2FsbCB0byBub3RpZnkgdGhlIEJhbyBoeXBlcnZpc29yIG9mIGFuIElQQyBzaGFy ZWQgbWVtb3J5IGV2ZW50Lgo+ICsgKgo+ICsgKiBSZXR1cm46IFNCSSBjYWxsIGVycm9yIGNvZGUu Cj4gKyAqLwo+ICtzdGF0aWMgdWludDY0X3QgYmFvX2lwY3NobWVtX25vdGlmeShzdHJ1Y3QgYmFv X2lwY3NobWVtICpkZXYpCj4gK3sKPiArCXN0cnVjdCBzYmlyZXQgcmV0ID0gc2JpX2VjYWxsKDB4 MDgwMDBiYTAsIDEsIGRldi0+aWQsIDAsIDAsIDAsIDAsIDApOwo+ICsKPiArCXJldHVybiByZXQu ZXJyb3I7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICsvKioKPiArICogYmFvX2lwY3NobWVtX21tYXBf Zm9wcyAtIG1tYXAgaGFuZGxlciBmb3IgSVBDIHNoYXJlZCBtZW1vcnkKPiArICogQGZpbHA6IEZp bGUgcG9pbnRlcgo+ICsgKiBAdm1hOiBWaXJ0dWFsIG1lbW9yeSBhcmVhCj4gKyAqCj4gKyAqIE1h cHMgdGhlIHBoeXNpY2FsIHNoYXJlZCBtZW1vcnkgb2YgdGhlIEJhbyBJUEMgZGV2aWNlIGludG8K PiArICogdXNlcnNwYWNlIHVzaW5nIHJlbWFwX3Bmbl9yYW5nZS4KPiArICoKPiArICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIC1FRkFVTFQgb24gZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBpbnQg YmFvX2lwY3NobWVtX21tYXBfZm9wcyhzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpCj4gK3sKPiArCXN0cnVjdCBiYW9faXBjc2htZW0gKmJhbyA9IGZpbHAtPnBy aXZhdGVfZGF0YTsKPiArCXVuc2lnbmVkIGxvbmcgdnNpemUgPSB2bWEtPnZtX2VuZCAtIHZtYS0+ dm1fc3RhcnQ7Cj4gKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IHZtYS0+dm1fcGdvZmYgPDwgUEFH RV9TSElGVDsKPiArCXBoeXNfYWRkcl90IHBhZGRyOwo+ICsKPiArCWlmIChXQVJOX09OX09OQ0Uo IWJhbykpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJaWYgKCF2c2l6ZSkKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAob2Zmc2V0ID49IGJhby0+c2htZW1fc2l6ZSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAodnNpemUgPiBiYW8tPnNobWVtX3NpemUgLSBvZmZz ZXQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcGFkZHIgPSAocGh5c19hZGRyX3QpYmFv LT5waHlzaWNhbF9iYXNlICsgb2Zmc2V0Owo+ICsKPiArCWlmICghUEFHRV9BTElHTkVEKHBhZGRy KSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAocmVtYXBfcGZuX3JhbmdlKHZtYSwg dm1hLT52bV9zdGFydCwKPiArCQkJICAgIHBhZGRyID4+IFBBR0VfU0hJRlQsCj4gKwkJCSAgICB2 c2l6ZSwgdm1hLT52bV9wYWdlX3Byb3QpKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICogYmFvX2lwY3NobWVtX3JlYWRfZm9wcyAtIHJl YWQgaGFuZGxlciBmb3IgSVBDIHNoYXJlZCBtZW1vcnkKPiArICogQGZpbHA6IEZpbGUgcG9pbnRl cgo+ICsgKiBAYnVmOiBVc2Vyc3BhY2UgYnVmZmVyCj4gKyAqIEBjb3VudDogTnVtYmVyIG9mIGJ5 dGVzIHRvIHJlYWQKPiArICogQHBwb3M6IEZpbGUgb2Zmc2V0Cj4gKyAqCj4gKyAqIENvcGllcyBk YXRhIGZyb20gdGhlIEJhbyBJUEMgcmVhZCBidWZmZXIgdG8gdXNlcnNwYWNlLgo+ICsgKgo+ICsg KiBSZXR1cm46IE51bWJlciBvZiBieXRlcyByZWFkLCBvciAwIGlmIEVPRi4KPiArICovCj4gK3N0 YXRpYyBzc2l6ZV90IGJhb19pcGNzaG1lbV9yZWFkX2ZvcHMoc3RydWN0IGZpbGUgKmZpbHAsIGNo YXIgX191c2VyICpidWYsCj4gKwkJCQkgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykK PiArewo+ICsJc3RydWN0IGJhb19pcGNzaG1lbSAqYmFvID0gZmlscC0+cHJpdmF0ZV9kYXRhOwo+ ICsJc2l6ZV90IGF2YWlsYWJsZTsKPiArCj4gKwlpZiAoV0FSTl9PTl9PTkNFKCFiYW8gfHwgIWJ1 ZiB8fCAhcHBvcykpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKCpwcG9zID49IGJh by0+cmVhZF9zaXplKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWF2YWlsYWJsZSA9IGJhby0+cmVh ZF9zaXplIC0gKnBwb3M7Cj4gKwlpZiAoY291bnQgPiBhdmFpbGFibGUpCj4gKwkJY291bnQgPSBh dmFpbGFibGU7Cj4gKwo+ICsJaWYgKGNvcHlfdG9fdXNlcihidWYsIGJhby0+cmVhZF9iYXNlICsg KnBwb3MsIGNvdW50KSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCj4gKwkqcHBvcyArPSBjb3Vu dDsKPiArCXJldHVybiBjb3VudDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGJhb19pcGNzaG1lbV93 cml0ZV9mb3BzIC0gd3JpdGUgaGFuZGxlciBmb3IgSVBDIHNoYXJlZCBtZW1vcnkKPiArICogQGZp bHA6IEZpbGUgcG9pbnRlcgo+ICsgKiBAYnVmOiBVc2Vyc3BhY2UgYnVmZmVyCj4gKyAqIEBjb3Vu dDogTnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlCj4gKyAqIEBwcG9zOiBGaWxlIG9mZnNldAo+ICsg Kgo+ICsgKiBDb3BpZXMgZGF0YSBmcm9tIHVzZXJzcGFjZSB0byB0aGUgQmFvIElQQyB3cml0ZSBi dWZmZXIgYW5kCj4gKyAqIG5vdGlmaWVzIHRoZSBoeXBlcnZpc29yIG9mIHRoZSB1cGRhdGUuCj4g KyAqCj4gKyAqIFJldHVybjogTnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCj4gKyAqLwo+ICtzdGF0 aWMgc3NpemVfdCBiYW9faXBjc2htZW1fd3JpdGVfZm9wcyhzdHJ1Y3QgZmlsZSAqZmlscCwgY29u c3QgY2hhciBfX3VzZXIgKmJ1ZiwKPiArCQkJCSAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAq cHBvcykKPiArewo+ICsJc3RydWN0IGJhb19pcGNzaG1lbSAqYmFvID0gZmlscC0+cHJpdmF0ZV9k YXRhOwo+ICsJc2l6ZV90IGF2YWlsOwo+ICsKPiArCWlmIChXQVJOX09OX09OQ0UoIWJhbyB8fCAh YnVmIHx8ICFwcG9zKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoKnBwb3MgPj0g YmFvLT53cml0ZV9zaXplKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWF2YWlsID0gYmFvLT53cml0 ZV9zaXplIC0gKnBwb3M7Cj4gKwlpZiAoY291bnQgPiBhdmFpbCkKPiArCQljb3VudCA9IGF2YWls Owo+ICsKPiArCWlmIChjb3B5X2Zyb21fdXNlcihiYW8tPndyaXRlX2Jhc2UgKyAqcHBvcywgYnVm LCBjb3VudCkpCj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsJKnBwb3MgKz0gY291bnQ7Cj4g Kwo+ICsJLyogTm90aWZ5IGFueSBsaXN0ZW5lcnMgdGhhdCBuZXcgZGF0YSBpcyBhdmFpbGFibGUg Ki8KPiArCWJhb19pcGNzaG1lbV9ub3RpZnkoYmFvKTsKPiArCj4gKwlyZXR1cm4gY291bnQ7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBiYW9faXBjc2htZW1fb3Blbl9mb3BzIC0gb3BlbiBoYW5kbGVy IGZvciBJUEMgc2hhcmVkIG1lbW9yeQo+ICsgKiBAaW5vZGU6IElub2RlIHBvaW50ZXIKPiArICog QGZpbHA6IEZpbGUgcG9pbnRlcgo+ICsgKgo+ICsgKiBBc3NvY2lhdGVzIHRoZSBmaWxlIHdpdGgg dGhlIEJhbyBJUEMgZGV2aWNlIGFuZCBpbmNyZW1lbnRzCj4gKyAqIHRoZSBrb2JqZWN0IHJlZmVy ZW5jZS4KPiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuCj4gKyAqLwo+ICtzdGF0aWMg aW50IGJhb19pcGNzaG1lbV9vcGVuX2ZvcHMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp bGUgKmZpbHApCj4gK3sKPiArCXN0cnVjdCBiYW9faXBjc2htZW0gKmJhbzsKPiArCj4gKwlpZiAo V0FSTl9PTl9PTkNFKCFpbm9kZSB8fCAhZmlscCkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ ICsJYmFvID0gY29udGFpbmVyX29mKGlub2RlLT5pX2NkZXYsIHN0cnVjdCBiYW9faXBjc2htZW0s IGNkZXYpOwo+ICsJZmlscC0+cHJpdmF0ZV9kYXRhID0gYmFvOwo+ICsKPiArCWtvYmplY3RfZ2V0 KCZiYW8tPmRldi0+a29iaik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsg KiBiYW9faXBjc2htZW1fcmVsZWFzZV9mb3BzIC0gcmVsZWFzZSBoYW5kbGVyIGZvciBJUEMgc2hh cmVkIG1lbW9yeQo+ICsgKiBAaW5vZGU6IElub2RlIHBvaW50ZXIKPiArICogQGZpbHA6IEZpbGUg cG9pbnRlcgo+ICsgKgo+ICsgKiBEaXNhc3NvY2lhdGVzIHRoZSBmaWxlIGZyb20gdGhlIEJhbyBJ UEMgZGV2aWNlIGFuZCBkZWNyZW1lbnRzCj4gKyAqIHRoZSBrb2JqZWN0IHJlZmVyZW5jZS4KPiAr ICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGJhb19p cGNzaG1lbV9yZWxlYXNlX2ZvcHMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZp bHApCj4gK3sKPiArCXN0cnVjdCBiYW9faXBjc2htZW0gKmJhbzsKPiArCj4gKwlpZiAoV0FSTl9P Tl9PTkNFKCFpbm9kZSB8fCAhZmlscCkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJYmFv ID0gY29udGFpbmVyX29mKGlub2RlLT5pX2NkZXYsIHN0cnVjdCBiYW9faXBjc2htZW0sIGNkZXYp Owo+ICsJZmlscC0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKPiArCj4gKwlrb2JqZWN0X3B1dCgmYmFv LT5kZXYtPmtvYmopOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBiYW9faXBjc2htZW1fZm9wcyA9IHsKPiArCS5vd25lciA9 IFRISVNfTU9EVUxFLAo+ICsJLnJlYWQgPSBiYW9faXBjc2htZW1fcmVhZF9mb3BzLAo+ICsJLndy aXRlID0gYmFvX2lwY3NobWVtX3dyaXRlX2ZvcHMsCj4gKwkubW1hcCA9IGJhb19pcGNzaG1lbV9t bWFwX2ZvcHMsCj4gKwkub3BlbiA9IGJhb19pcGNzaG1lbV9vcGVuX2ZvcHMsCj4gKwkucmVsZWFz ZSA9IGJhb19pcGNzaG1lbV9yZWxlYXNlX2ZvcHMKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBiYW9f aXBjc2htZW1fcmVnaXN0ZXIgLSBSZWdpc3RlciBhIEJhbyBJUEMgc2hhcmVkIG1lbW9yeSBkZXZp Y2UKPiArICogQHBkZXY6IFBsYXRmb3JtIGRldmljZQo+ICsgKgo+ICsgKiBNYXBzIHRoZSBzaGFy ZWQgbWVtb3J5IHJlZ2lvbiwgdmFsaWRhdGVzIGNoYW5uZWwgbGF5b3V0LCBpbml0aWFsaXplcwo+ ICsgKiB0aGUgcmVhZC93cml0ZSBidWZmZXJzLCByZWdpc3RlcnMgdGhlIGNoYXJhY3RlciBkZXZp Y2UsIGFuZCBjcmVhdGVzCj4gKyAqIHRoZSBzeXNmcyBkZXZpY2UgZW50cnkuCj4gKyAqCj4gKyAq IFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4g KyAqLwo+ICtzdGF0aWMgaW50IGJhb19pcGNzaG1lbV9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQoKTkFLLCB3aGVyZSBkaWQgeW91IGdldCBpdCBmcm9tPyBQcm9iZSBmdW5j dGlvbnMgYXJlIEFCU09MVVRFTFkgTkVWRVIKY2FsbGVkIHJlZ2lzdGVyLgoKPiArewo+ICsJaW50 IHJldCA9IDAsIGlkID0gLTE7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPiArCXN0cnVjdCBtb2R1 bGUgKm93bmVyID0gVEhJU19NT0RVTEU7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnI7Cj4gKwlkZXZf dCBkZXZ0OwoKTm8sIHJlYWQgTGludXggY29kaW5nIHN0eWxlLgoKPiArCXJlc291cmNlX3NpemVf dCBzaG1lbV9zaXplOwo+ICsJdTMyIHdyaXRlX29mZnNldCwgcmVhZF9vZmZzZXQsIHdyaXRlX3Np emUsIHJlYWRfc2l6ZTsKPiArCWJvb2wgcmRfaW5fcmFuZ2UsIHdyX2luX3JhbmdlLCBkaXNqb2lu dDsKPiArCXZvaWQgKnNobWVtX2Jhc2VfYWRkciA9IE5VTEw7Cj4gKwlzdHJ1Y3QgYmFvX2lwY3No bWVtICpiYW87CgpUaGlzIGlzIHJlYWxseSBwb29yIGNvZGluZyBzdHlsZSwgYmFyZWx5IHJlYWRh YmxlIGFuZCBtYWludGFpbmFibGUuIFlvdQpuZWVkIHRvIHJld3RpdGUgdGhpcyBkcml2ZXIgY29t cGxldGVseSB0byBtYXRjaCB3aGF0IHdlIGV4cGVjdCBpbiBMaW51eAprZXJuZWwsIGZvciBleGFt cGxlIGJhc2UgeW91ciB3b3JrIG9uIGxhc3QsIHJldmlld2VkIGNvZGUuCgpJIGFtIG5vdCBldmVu IGxvb2tpbmcgYXQgcmVzdCBvZiB0aGlzIC0gcGxlYXNlIHByb3ZlIHRoYXQgeW91IHZhbHVlIG91 cgp0aW1lIGJ5IHNlbmRpbmcgc29tZXRoaW5nIGZvbGxvd2luZyBMaW51eCBrZXJuZWwgc3R5bGUu CgpCZXN0IHJlZ2FyZHMsCktyenlzenRvZgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtcmlzY3YK