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 C4AD8C4345F for ; Sat, 27 Apr 2024 09:30:24 +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=1RzIVZScvshtzxyZkqE+8ysHMbqtL/yaVU2nuWReNIA=; b=vfTYFkfjL2l8sV viqxXljVhYdMRzN73E7gsgci8lZS+lgUofFdlPGeGvsI/IrGZCRJaMcZ82nPXJlsLQE5buWur9p4N peSA/IrHA44wpmym1+TRwtUXRgCwxnKpYo2W4BjMqjtuqhWKq6gHAEmoQ1LDjT4hQBv4p0J06e+FS AsFGVU/EsbTYQGps8lNoFNdZOsmeZxI9DlaZLG8pJuI/ZpyYRseT94dmaDYQRUggELvAsG8J3PlNl 1g0CfpI7Q5dRsNqnRnwPM/1qNTDzqzI9XVRWrw2y1v1bIqcZjiN6noZ8MdVU79kSnfrbw2km8zvaf Y4OPJDNfv98ijtcBFcCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0eNh-0000000FEGH-21mF; Sat, 27 Apr 2024 09:30:05 +0000 Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0eNY-0000000FEEx-2Z8W for linux-arm-kernel@lists.infradead.org; Sat, 27 Apr 2024 09:30:01 +0000 Received: by mail-ot1-x32f.google.com with SMTP id 46e09a7af769-6ea1f98f3b9so1261090a34.1 for ; Sat, 27 Apr 2024 02:29:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714210190; x=1714814990; 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=eLOVzuHTFRrre7jCPHyf/MbhIFfVwCEVIQxrn/Td89g=; b=si3pq6twREY4HGJ+IHdqvj+2qQ9+tO4QxOqYFraWMGAoYrSRNs2d5ue3chUbBgpHHl 4SNNgZMg8HKVK8JPMrVGOQNbaJeKXhdCCS4kMqCXr5h8gdZaoTe/xj71qgpX+3MDEJc3 tm2um2Wy5hzyj0gZQaKWgQ5g+/Jb1w/pYJy0Xl1/q0wq1vLXlZ9X4pb2rbCWqzvTqM5X //R1IJqvkHvg28HjSkXc+SuIUdHooQLvIIi+91eTDZwavD6IkIY2h4Q2VZCgSv10GvxD bVmYUoVuhqfVtmqlOfKS2CEY+eBhvD0W1uVVzPSETvYAMG/VRTJGhLrqG+vO1rWLkxYa pdOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714210190; x=1714814990; 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=eLOVzuHTFRrre7jCPHyf/MbhIFfVwCEVIQxrn/Td89g=; b=ObyNdY8eZHhe4pE3r4kS4ETfW6V70WjtStq7qT4v2rJ+8uMuSrwApGO0WMcOhnQUCz a6IuupYzaxN836jXyXEw+QAFm7xy0nDL45doA4wyiRzA2eKh6Fkp9fcnHLsJeFzkywMj tM0SSpMolh3Jp9Hcr76XTbYEIabgnoQpHpdQjgDGaL5KMTicp4Wypk+ufe2IcRTaeGUU MYeqvWxumP4W4qds7VoTDMlQkE6k/NnZ5rRublxi8t/mqcq5IrZ6TdxVv9gLD+28uCVS NVUyDL8Y8TgqR2iY38gdLFh51QsTGAWoZrnDK+mdD2ZoG3h96EqCAAav4QUPg6uq1lrM KH/Q== X-Forwarded-Encrypted: i=1; AJvYcCUI2Ekk6rxXuhfcrjLhOdgF1MB1UpbKWCDfwHeouUS0osdeEqxoPo/3oW3LhTMmGLGebdSRVExbWhYi6Vhel8hKvYR9WrqVQ2ryqGYrgcZbDWHmZ9U= X-Gm-Message-State: AOJu0YyH9EOxd0aZAeGToBQl2fVz1nbN5z+ZVq0MEaXjFj3II8InjMlX iczhWku/0Z9xOE994IJsAYZs4Fwozu5NpKFXwh96NFs1aQ00Pd43rGEyjQleyA== X-Google-Smtp-Source: AGHT+IFX7rE1yPP+A5uBy9flD95xPmWaRQRgnj07xYVP7iXJtS8W8ZHsuBT9+2zr1KIXOjNqJ2yI3w== X-Received: by 2002:aca:1b03:0:b0:3c8:6249:4274 with SMTP id b3-20020aca1b03000000b003c862494274mr350854oib.42.1714210189946; Sat, 27 Apr 2024 02:29:49 -0700 (PDT) Received: from thinkpad ([117.213.97.210]) by smtp.gmail.com with ESMTPSA id h3-20020a056a00218300b006ed4aa9d48esm15983546pfi.212.2024.04.27.02.29.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 02:29:49 -0700 (PDT) Date: Sat, 27 Apr 2024 14:59:39 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Philipp Zabel , Liam Girdwood , Mark Brown , Krzysztof Kozlowski , Conor Dooley , linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH v3 03/11] PCI: imx6: Rename imx6_* with imx_* Message-ID: <20240427092939.GH1981@thinkpad> References: <20240402-pci2_upstream-v3-0-803414bdb430@nxp.com> <20240402-pci2_upstream-v3-3-803414bdb430@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240402-pci2_upstream-v3-3-803414bdb430@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240427_022956_828936_EF1AAC5C X-CRM114-Status: GOOD ( 26.56 ) 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 T24gVHVlLCBBcHIgMDIsIDIwMjQgYXQgMTA6MzM6MzlBTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 CgpQQ0k6IGlteDY6IFJlbmFtZSAnaW14NicgcHJlZml4IHRvICdpbXgnCgo+IGlteDZfKiBhY3R1 YWxseSBtZWFuIGZvciBhbGwgaW14IGNoaXBzIChpbXg2eCwgaW14N3gsIGlteDh4IGFuZCBpbXg5 eCkuCj4gUmVuYW1lIGlteDZfKiB3aXRoIGlteF8qIHRvIGF2b2lkIGNvbmZ1c2UuCj4gCgonU2lu Y2UgdGhpcyBkcml2ZXIgaGFzIGV2b2x2ZWQgdG8gc3VwcG9ydCBvdGhlciBpLk1YIFNvQ3Mgc3Vj aCBhcyBpLk1YNy84LzksCmxldCdzIHJlbmFtZSB0aGUgJ2lteDYnIHByZWZpeCB0byAnaW14JyB0 byBhdm9pZCBjb25mdXNpb24uIEJ1dCB0aGUgZHJpdmVyIG5hbWUKaXMgbGVmdCB1bmNoYW5nZWQg dG8gYXZvaWQgYnJlYWtpbmcgdXNlcnNwYWNlIHNjcmlwdHMuJwoKPiBTaWduZWQtb2ZmLWJ5OiBG cmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KCldpdGggYWJvdmUgY2hhbmdlcywKClJldmlld2Vk LWJ5OiBNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8u b3JnPgoKLSBNYW5pCgo+IC0tLQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14 Ni5jIHwgNzYwICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNo YW5nZWQsIDM4MCBpbnNlcnRpb25zKCspLCAzODAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMgYi9kcml2ZXJzL3BjaS9j b250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jCj4gaW5kZXggNmM0ZDI1YjkyMjI1ZS4uZTkzMDcwZDYw ZGY1MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5j Cj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYwo+IEBAIC01NSw5 ICs1NSw5IEBACj4gICNkZWZpbmUgSU1YOTVfUEUwX0dFTl9DVFJMXzMJCQkweDEwNTgKPiAgI2Rl ZmluZSBJTVg5NV9QQ0lFX0xUU1NNX0VOCQkJQklUKDApCj4gIAo+IC0jZGVmaW5lIHRvX2lteDZf cGNpZSh4KQlkZXZfZ2V0X2RydmRhdGEoKHgpLT5kZXYpCj4gKyNkZWZpbmUgdG9faW14X3BjaWUo eCkJZGV2X2dldF9kcnZkYXRhKCh4KS0+ZGV2KQo+ICAKPiAtZW51bSBpbXg2X3BjaWVfdmFyaWFu dHMgewo+ICtlbnVtIGlteF9wY2llX3ZhcmlhbnRzIHsKPiAgCUlNWDZRLAo+ICAJSU1YNlNYLAo+ ICAJSU1YNlFQLAo+IEBAIC03MiwyNSArNzIsMjUgQEAgZW51bSBpbXg2X3BjaWVfdmFyaWFudHMg ewo+ICAJSU1YOTVfRVAsCj4gIH07Cj4gIAo+IC0jZGVmaW5lIElNWDZfUENJRV9GTEFHX0lNWDZf UEhZCQkJQklUKDApCj4gLSNkZWZpbmUgSU1YNl9QQ0lFX0ZMQUdfSU1YNl9TUEVFRF9DSEFOR0UJ QklUKDEpCj4gLSNkZWZpbmUgSU1YNl9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VTUEVORAkJQklUKDIp Cj4gLSNkZWZpbmUgSU1YNl9QQ0lFX0ZMQUdfSEFTX1BIWURSVgkJCUJJVCgzKQo+IC0jZGVmaW5l IElNWDZfUENJRV9GTEFHX0hBU19BUFBfUkVTRVQJCUJJVCg0KQo+IC0jZGVmaW5lIElNWDZfUENJ RV9GTEFHX0hBU19QSFlfUkVTRVQJCUJJVCg1KQo+IC0jZGVmaW5lIElNWDZfUENJRV9GTEFHX0hB U19TRVJERVMJCUJJVCg2KQo+IC0jZGVmaW5lIElNWDZfUENJRV9GTEFHX1NVUFBPUlRfNjRCSVQJ CUJJVCg3KQo+ICsjZGVmaW5lIElNWF9QQ0lFX0ZMQUdfSU1YX1BIWQkJCUJJVCgwKQo+ICsjZGVm aW5lIElNWF9QQ0lFX0ZMQUdfSU1YX1NQRUVEX0NIQU5HRQlCSVQoMSkKPiArI2RlZmluZSBJTVhf UENJRV9GTEFHX1NVUFBPUlRTX1NVU1BFTkQJCUJJVCgyKQo+ICsjZGVmaW5lIElNWF9QQ0lFX0ZM QUdfSEFTX1BIWURSVgkJCUJJVCgzKQo+ICsjZGVmaW5lIElNWF9QQ0lFX0ZMQUdfSEFTX0FQUF9S RVNFVAkJQklUKDQpCj4gKyNkZWZpbmUgSU1YX1BDSUVfRkxBR19IQVNfUEhZX1JFU0VUCQlCSVQo NSkKPiArI2RlZmluZSBJTVhfUENJRV9GTEFHX0hBU19TRVJERVMJCUJJVCg2KQo+ICsjZGVmaW5l IElNWF9QQ0lFX0ZMQUdfU1VQUE9SVF82NEJJVAkJQklUKDcpCj4gIAo+IC0jZGVmaW5lIGlteDZf Y2hlY2tfZmxhZyhwY2ksIHZhbCkgICAgIChwY2ktPmRydmRhdGEtPmZsYWdzICYgdmFsKQo+ICsj ZGVmaW5lIGlteF9jaGVja19mbGFnKHBjaSwgdmFsKSAgICAgKHBjaS0+ZHJ2ZGF0YS0+ZmxhZ3Mg JiB2YWwpCj4gIAo+IC0jZGVmaW5lIElNWDZfUENJRV9NQVhfQ0xLUyAgICAgICA2Cj4gKyNkZWZp bmUgSU1YX1BDSUVfTUFYX0NMS1MgICAgICAgNgo+ICAKPiAtI2RlZmluZSBJTVg2X1BDSUVfTUFY X0lOU1RBTkNFUwkJCTIKPiArI2RlZmluZSBJTVhfUENJRV9NQVhfSU5TVEFOQ0VTCQkJMgo+ICAK PiAtc3RydWN0IGlteDZfcGNpZTsKPiArc3RydWN0IGlteF9wY2llOwo+ICAKPiAtc3RydWN0IGlt eDZfcGNpZV9kcnZkYXRhIHsKPiAtCWVudW0gaW14Nl9wY2llX3ZhcmlhbnRzIHZhcmlhbnQ7Cj4g K3N0cnVjdCBpbXhfcGNpZV9kcnZkYXRhIHsKPiArCWVudW0gaW14X3BjaWVfdmFyaWFudHMgdmFy aWFudDsKPiAgCWVudW0gZHdfcGNpZV9kZXZpY2VfbW9kZSBtb2RlOwo+ICAJdTMyIGZsYWdzOwo+ ICAJaW50IGRiaV9sZW5ndGg7Cj4gQEAgLTk5LDE4ICs5OSwxOCBAQCBzdHJ1Y3QgaW14Nl9wY2ll X2RydmRhdGEgewo+ICAJY29uc3QgdTMyIGNsa3NfY250Owo+ICAJY29uc3QgdTMyIGx0c3NtX29m ZjsKPiAgCWNvbnN0IHUzMiBsdHNzbV9tYXNrOwo+IC0JY29uc3QgdTMyIG1vZGVfb2ZmW0lNWDZf UENJRV9NQVhfSU5TVEFOQ0VTXTsKPiAtCWNvbnN0IHUzMiBtb2RlX21hc2tbSU1YNl9QQ0lFX01B WF9JTlNUQU5DRVNdOwo+ICsJY29uc3QgdTMyIG1vZGVfb2ZmW0lNWF9QQ0lFX01BWF9JTlNUQU5D RVNdOwo+ICsJY29uc3QgdTMyIG1vZGVfbWFza1tJTVhfUENJRV9NQVhfSU5TVEFOQ0VTXTsKPiAg CWNvbnN0IHN0cnVjdCBwY2lfZXBjX2ZlYXR1cmVzICplcGNfZmVhdHVyZXM7Cj4gLQlpbnQgKCpp bml0X3BoeSkoc3RydWN0IGlteDZfcGNpZSAqcGNpZSk7Cj4gKwlpbnQgKCppbml0X3BoeSkoc3Ry dWN0IGlteF9wY2llICpwY2llKTsKPiAgfTsKPiAgCj4gLXN0cnVjdCBpbXg2X3BjaWUgewo+ICtz dHJ1Y3QgaW14X3BjaWUgewo+ICAJc3RydWN0IGR3X3BjaWUJCSpwY2k7Cj4gIAlpbnQJCQlyZXNl dF9ncGlvOwo+ICAJYm9vbAkJCWdwaW9fYWN0aXZlX2hpZ2g7Cj4gIAlib29sCQkJbGlua19pc191 cDsKPiAtCXN0cnVjdCBjbGtfYnVsa19kYXRhCWNsa3NbSU1YNl9QQ0lFX01BWF9DTEtTXTsKPiAr CXN0cnVjdCBjbGtfYnVsa19kYXRhCWNsa3NbSU1YX1BDSUVfTUFYX0NMS1NdOwo+ICAJc3RydWN0 IHJlZ21hcAkJKmlvbXV4Y19ncHI7Cj4gIAl1MTYJCQltc2lfY3RybDsKPiAgCXUzMgkJCWNvbnRy b2xsZXJfaWQ7Cj4gQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgaW14Nl9wY2llIHsKPiAgCS8q IHBvd2VyIGRvbWFpbiBmb3IgcGNpZSBwaHkgKi8KPiAgCXN0cnVjdCBkZXZpY2UJCSpwZF9wY2ll X3BoeTsKPiAgCXN0cnVjdCBwaHkJCSpwaHk7Cj4gLQljb25zdCBzdHJ1Y3QgaW14Nl9wY2llX2Ry dmRhdGEgKmRydmRhdGE7Cj4gKwljb25zdCBzdHJ1Y3QgaW14X3BjaWVfZHJ2ZGF0YSAqZHJ2ZGF0 YTsKPiAgfTsKPiAgCj4gIC8qIFBhcmFtZXRlcnMgZm9yIHRoZSB3YWl0aW5nIGZvciBQQ0llIFBI WSBQTEwgdG8gbG9jayBvbiBpLk1YNyAqLwo+IEBAIC0xODYsMjggKzE4NiwyOCBAQCBzdHJ1Y3Qg aW14Nl9wY2llIHsKPiAgI2RlZmluZSBQSFlfUlhfT1ZSRF9JTl9MT19SWF9EQVRBX0VOCQlCSVQo NSkKPiAgI2RlZmluZSBQSFlfUlhfT1ZSRF9JTl9MT19SWF9QTExfRU4JCUJJVCgzKQo+ICAKPiAt c3RhdGljIHVuc2lnbmVkIGludCBpbXg2X3BjaWVfZ3JwX29mZnNldChjb25zdCBzdHJ1Y3QgaW14 Nl9wY2llICppbXg2X3BjaWUpCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaW14X3BjaWVfZ3JwX29m ZnNldChjb25zdCBzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llKQo+ICB7Cj4gLQlXQVJOX09OKGlt eDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCAhPSBJTVg4TVEgJiYKPiAtCQlpbXg2X3BjaWUtPmRy dmRhdGEtPnZhcmlhbnQgIT0gSU1YOE1RX0VQICYmCj4gLQkJaW14Nl9wY2llLT5kcnZkYXRhLT52 YXJpYW50ICE9IElNWDhNTSAmJgo+IC0JCWlteDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCAhPSBJ TVg4TU1fRVAgJiYKPiAtCQlpbXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQgIT0gSU1YOE1QICYm Cj4gLQkJaW14Nl9wY2llLT5kcnZkYXRhLT52YXJpYW50ICE9IElNWDhNUF9FUCk7Cj4gLQlyZXR1 cm4gaW14Nl9wY2llLT5jb250cm9sbGVyX2lkID09IDEgPyBJT01VWENfR1BSMTYgOiBJT01VWENf R1BSMTQ7Cj4gKwlXQVJOX09OKGlteF9wY2llLT5kcnZkYXRhLT52YXJpYW50ICE9IElNWDhNUSAm Jgo+ICsJCWlteF9wY2llLT5kcnZkYXRhLT52YXJpYW50ICE9IElNWDhNUV9FUCAmJgo+ICsJCWlt eF9wY2llLT5kcnZkYXRhLT52YXJpYW50ICE9IElNWDhNTSAmJgo+ICsJCWlteF9wY2llLT5kcnZk YXRhLT52YXJpYW50ICE9IElNWDhNTV9FUCAmJgo+ICsJCWlteF9wY2llLT5kcnZkYXRhLT52YXJp YW50ICE9IElNWDhNUCAmJgo+ICsJCWlteF9wY2llLT5kcnZkYXRhLT52YXJpYW50ICE9IElNWDhN UF9FUCk7Cj4gKwlyZXR1cm4gaW14X3BjaWUtPmNvbnRyb2xsZXJfaWQgPT0gMSA/IElPTVVYQ19H UFIxNiA6IElPTVVYQ19HUFIxNDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBpbXg5NV9wY2llX2lu aXRfcGh5KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiArc3RhdGljIGludCBpbXg5NV9w Y2llX2luaXRfcGh5KHN0cnVjdCBpbXhfcGNpZSAqaW14X3BjaWUpCj4gIHsKPiAtCXJlZ21hcF91 cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMo aW14X3BjaWUtPmlvbXV4Y19ncHIsCj4gIAkJCUlNWDk1X1BDSUVfU1NfUldfUkVHXzAsCj4gIAkJ CUlNWDk1X1BDSUVfUEhZX0NSX1BBUkFfU0VMLAo+ICAJCQlJTVg5NV9QQ0lFX1BIWV9DUl9QQVJB X1NFTCk7Cj4gIAo+IC0JcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwK PiArCXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwKPiAgCQkJICAgSU1Y OTVfUENJRV9QSFlfR0VOX0NUUkwsCj4gIAkJCSAgIElNWDk1X1BDSUVfUkVGX1VTRV9QQUQsIDAp Owo+IC0JcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwKPiArCXJlZ21h cF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwKPiAgCQkJICAgSU1YOTVfUENJRV9T U19SV19SRUdfMCwKPiAgCQkJICAgSU1YOTVfUENJRV9SRUZfQ0xLRU4sCj4gIAkJCSAgIElNWDk1 X1BDSUVfUkVGX0NMS0VOKTsKPiBAQCAtMjE1LDkgKzIxNSw5IEBAIHN0YXRpYyBpbnQgaW14OTVf cGNpZV9pbml0X3BoeShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW14Nl9wY2llX2NvbmZpZ3VyZV90eXBlKHN0cnVjdCBp bXg2X3BjaWUgKmlteDZfcGNpZSkKPiArc3RhdGljIHZvaWQgaW14X3BjaWVfY29uZmlndXJlX3R5 cGUoc3RydWN0IGlteF9wY2llICppbXhfcGNpZSkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGlteDZf cGNpZV9kcnZkYXRhICpkcnZkYXRhID0gaW14Nl9wY2llLT5kcnZkYXRhOwo+ICsJY29uc3Qgc3Ry dWN0IGlteF9wY2llX2RydmRhdGEgKmRydmRhdGEgPSBpbXhfcGNpZS0+ZHJ2ZGF0YTsKPiAgCXVu c2lnbmVkIGludCBtYXNrLCB2YWwsIG1vZGUsIGlkOwo+ICAKPiAgCWlmIChkcnZkYXRhLT5tb2Rl ID09IERXX1BDSUVfRVBfVFlQRSkKPiBAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIGlt eDZfcGNpZV9jb25maWd1cmVfdHlwZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAll bHNlCj4gIAkJbW9kZSA9IFBDSV9FWFBfVFlQRV9ST09UX1BPUlQ7Cj4gIAo+IC0JaWQgPSBpbXg2 X3BjaWUtPmNvbnRyb2xsZXJfaWQ7Cj4gKwlpZCA9IGlteF9wY2llLT5jb250cm9sbGVyX2lkOwo+ ICAKPiAgCS8qIElmIG1vZGVfbWFza1tpZF0gaXMgemVybywgbWVhbnMgZWFjaCBjb250cm9sbGVy IGhhdmUgaXRzIGluZGl2aWR1YWwgZ3ByICovCj4gIAlpZiAoIWRydmRhdGEtPm1vZGVfbWFza1tp ZF0pCj4gQEAgLTIzNCwxMiArMjM0LDEyIEBAIHN0YXRpYyB2b2lkIGlteDZfcGNpZV9jb25maWd1 cmVfdHlwZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAltYXNrID0gZHJ2ZGF0YS0+ bW9kZV9tYXNrW2lkXTsKPiAgCXZhbCA9IG1vZGUgPDwgKGZmcyhtYXNrKSAtIDEpOwo+ICAKPiAt CXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIGRydmRhdGEtPm1vZGVf b2ZmW2lkXSwgbWFzaywgdmFsKTsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9t dXhjX2dwciwgZHJ2ZGF0YS0+bW9kZV9vZmZbaWRdLCBtYXNrLCB2YWwpOwo+ICB9Cj4gIAo+IC1z dGF0aWMgaW50IHBjaWVfcGh5X3BvbGxfYWNrKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSwg Ym9vbCBleHBfdmFsKQo+ICtzdGF0aWMgaW50IHBjaWVfcGh5X3BvbGxfYWNrKHN0cnVjdCBpbXhf cGNpZSAqaW14X3BjaWUsIGJvb2wgZXhwX3ZhbCkKPiAgewo+IC0Jc3RydWN0IGR3X3BjaWUgKnBj aSA9IGlteDZfcGNpZS0+cGNpOwo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IGlteF9wY2llLT5w Y2k7Cj4gIAlib29sIHZhbDsKPiAgCXUzMiBtYXhfaXRlcmF0aW9ucyA9IDEwOwo+ICAJdTMyIHdh aXRfY291bnRlciA9IDA7Cj4gQEAgLTI1OCw5ICsyNTgsOSBAQCBzdGF0aWMgaW50IHBjaWVfcGh5 X3BvbGxfYWNrKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSwgYm9vbCBleHBfdmFsKQo+ICAJ cmV0dXJuIC1FVElNRURPVVQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgcGNpZV9waHlfd2FpdF9h Y2soc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llLCBpbnQgYWRkcikKPiArc3RhdGljIGludCBw Y2llX3BoeV93YWl0X2FjayhzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llLCBpbnQgYWRkcikKPiAg ewo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IGlteDZfcGNpZS0+cGNpOwo+ICsJc3RydWN0IGR3 X3BjaWUgKnBjaSA9IGlteF9wY2llLT5wY2k7Cj4gIAl1MzIgdmFsOwo+ICAJaW50IHJldDsKPiAg Cj4gQEAgLTI3MCwyNCArMjcwLDI0IEBAIHN0YXRpYyBpbnQgcGNpZV9waHlfd2FpdF9hY2soc3Ry dWN0IGlteDZfcGNpZSAqaW14Nl9wY2llLCBpbnQgYWRkcikKPiAgCXZhbCB8PSBQQ0lFX1BIWV9D VFJMX0NBUF9BRFI7Cj4gIAlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX1BIWV9DVFJMLCB2 YWwpOwo+ICAKPiAtCXJldCA9IHBjaWVfcGh5X3BvbGxfYWNrKGlteDZfcGNpZSwgdHJ1ZSk7Cj4g KwlyZXQgPSBwY2llX3BoeV9wb2xsX2FjayhpbXhfcGNpZSwgdHJ1ZSk7Cj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJdmFsID0gUENJRV9QSFlfQ1RSTF9EQVRBKGFkZHIpOwo+ ICAJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9QSFlfQ1RSTCwgdmFsKTsKPiAgCj4gLQly ZXR1cm4gcGNpZV9waHlfcG9sbF9hY2soaW14Nl9wY2llLCBmYWxzZSk7Cj4gKwlyZXR1cm4gcGNp ZV9waHlfcG9sbF9hY2soaW14X3BjaWUsIGZhbHNlKTsKPiAgfQo+ICAKPiAgLyogUmVhZCBmcm9t IHRoZSAxNi1iaXQgUENJZSBQSFkgY29udHJvbCByZWdpc3RlcnMgKG5vdCBtZW1vcnktbWFwcGVk KSAqLwo+IC1zdGF0aWMgaW50IHBjaWVfcGh5X3JlYWQoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9w Y2llLCBpbnQgYWRkciwgdTE2ICpkYXRhKQo+ICtzdGF0aWMgaW50IHBjaWVfcGh5X3JlYWQoc3Ry dWN0IGlteF9wY2llICppbXhfcGNpZSwgaW50IGFkZHIsIHUxNiAqZGF0YSkKPiAgewo+IC0Jc3Ry dWN0IGR3X3BjaWUgKnBjaSA9IGlteDZfcGNpZS0+cGNpOwo+ICsJc3RydWN0IGR3X3BjaWUgKnBj aSA9IGlteF9wY2llLT5wY2k7Cj4gIAl1MzIgcGh5X2N0bDsKPiAgCWludCByZXQ7Cj4gIAo+IC0J cmV0ID0gcGNpZV9waHlfd2FpdF9hY2soaW14Nl9wY2llLCBhZGRyKTsKPiArCXJldCA9IHBjaWVf cGh5X3dhaXRfYWNrKGlteF9wY2llLCBhZGRyKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgaW50IHBjaWVfcGh5X3JlYWQoc3Ry dWN0IGlteDZfcGNpZSAqaW14Nl9wY2llLCBpbnQgYWRkciwgdTE2ICpkYXRhKQo+ICAJcGh5X2N0 bCA9IFBDSUVfUEhZX0NUUkxfUkQ7Cj4gIAlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX1BI WV9DVFJMLCBwaHlfY3RsKTsKPiAgCj4gLQlyZXQgPSBwY2llX3BoeV9wb2xsX2FjayhpbXg2X3Bj aWUsIHRydWUpOwo+ICsJcmV0ID0gcGNpZV9waHlfcG9sbF9hY2soaW14X3BjaWUsIHRydWUpOwo+ ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMzA0LDE4ICszMDQsMTggQEAg c3RhdGljIGludCBwY2llX3BoeV9yZWFkKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSwgaW50 IGFkZHIsIHUxNiAqZGF0YSkKPiAgCS8qIGRlYXNzZXJ0IFJlYWQgc2lnbmFsICovCj4gIAlkd19w Y2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX1BIWV9DVFJMLCAweDAwKTsKPiAgCj4gLQlyZXR1cm4g cGNpZV9waHlfcG9sbF9hY2soaW14Nl9wY2llLCBmYWxzZSk7Cj4gKwlyZXR1cm4gcGNpZV9waHlf cG9sbF9hY2soaW14X3BjaWUsIGZhbHNlKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBwY2llX3Bo eV93cml0ZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsIGludCBhZGRyLCB1MTYgZGF0YSkK PiArc3RhdGljIGludCBwY2llX3BoeV93cml0ZShzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llLCBp bnQgYWRkciwgdTE2IGRhdGEpCj4gIHsKPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBpbXg2X3Bj aWUtPnBjaTsKPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSBpbXhfcGNpZS0+cGNpOwo+ICAJdTMy IHZhcjsKPiAgCWludCByZXQ7Cj4gIAo+ICAJLyogd3JpdGUgYWRkciAqLwo+ICAJLyogY2FwIGFk ZHIgKi8KPiAtCXJldCA9IHBjaWVfcGh5X3dhaXRfYWNrKGlteDZfcGNpZSwgYWRkcik7Cj4gKwly ZXQgPSBwY2llX3BoeV93YWl0X2FjayhpbXhfcGNpZSwgYWRkcik7Cj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+IEBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIGludCBwY2llX3Bo eV93cml0ZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsIGludCBhZGRyLCB1MTYgZGF0YSkK PiAgCXZhciB8PSBQQ0lFX1BIWV9DVFJMX0NBUF9EQVQ7Cj4gIAlkd19wY2llX3dyaXRlbF9kYmko cGNpLCBQQ0lFX1BIWV9DVFJMLCB2YXIpOwo+ICAKPiAtCXJldCA9IHBjaWVfcGh5X3BvbGxfYWNr KGlteDZfcGNpZSwgdHJ1ZSk7Cj4gKwlyZXQgPSBwY2llX3BoeV9wb2xsX2FjayhpbXhfcGNpZSwg dHJ1ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC0zMzUsNyArMzM1 LDcgQEAgc3RhdGljIGludCBwY2llX3BoeV93cml0ZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3Bj aWUsIGludCBhZGRyLCB1MTYgZGF0YSkKPiAgCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIFBDSUVf UEhZX0NUUkwsIHZhcik7Cj4gIAo+ICAJLyogd2FpdCBmb3IgYWNrIGRlLWFzc2VydGlvbiAqLwo+ IC0JcmV0ID0gcGNpZV9waHlfcG9sbF9hY2soaW14Nl9wY2llLCBmYWxzZSk7Cj4gKwlyZXQgPSBw Y2llX3BoeV9wb2xsX2FjayhpbXhfcGNpZSwgZmFsc2UpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1 cm4gcmV0Owo+ICAKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBpbnQgcGNpZV9waHlfd3Jp dGUoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llLCBpbnQgYWRkciwgdTE2IGRhdGEpCj4gIAlk d19wY2llX3dyaXRlbF9kYmkocGNpLCBQQ0lFX1BIWV9DVFJMLCB2YXIpOwo+ICAKPiAgCS8qIHdh aXQgZm9yIGFjayAqLwo+IC0JcmV0ID0gcGNpZV9waHlfcG9sbF9hY2soaW14Nl9wY2llLCB0cnVl KTsKPiArCXJldCA9IHBjaWVfcGh5X3BvbGxfYWNrKGlteF9wY2llLCB0cnVlKTsKPiAgCWlmIChy ZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gQEAgLTM1Myw3ICszNTMsNyBAQCBzdGF0aWMgaW50 IHBjaWVfcGh5X3dyaXRlKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSwgaW50IGFkZHIsIHUx NiBkYXRhKQo+ICAJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgUENJRV9QSFlfQ1RSTCwgdmFyKTsK PiAgCj4gIAkvKiB3YWl0IGZvciBhY2sgZGUtYXNzZXJ0aW9uICovCj4gLQlyZXQgPSBwY2llX3Bo eV9wb2xsX2FjayhpbXg2X3BjaWUsIGZhbHNlKTsKPiArCXJldCA9IHBjaWVfcGh5X3BvbGxfYWNr KGlteF9wY2llLCBmYWxzZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IEBA IC0zNjIsNzQgKzM2Miw3NCBAQCBzdGF0aWMgaW50IHBjaWVfcGh5X3dyaXRlKHN0cnVjdCBpbXg2 X3BjaWUgKmlteDZfcGNpZSwgaW50IGFkZHIsIHUxNiBkYXRhKQo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gLXN0YXRpYyBpbnQgaW14OG1xX3BjaWVfaW5pdF9waHkoc3RydWN0IGlteDZfcGNpZSAq aW14Nl9wY2llKQo+ICtzdGF0aWMgaW50IGlteDhtcV9wY2llX2luaXRfcGh5KHN0cnVjdCBpbXhf cGNpZSAqaW14X3BjaWUpCj4gIHsKPiAgCS8qIFRPRE86IEN1cnJlbnRseSB0aGlzIGNvZGUgYXNz dW1lcyBleHRlcm5hbCBvc2NpbGxhdG9yIGlzIGJlaW5nIHVzZWQgKi8KPiAtCXJlZ21hcF91cGRh dGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsCj4gLQkJCSAgIGlteDZfcGNpZV9ncnBfb2Zm c2V0KGlteDZfcGNpZSksCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4Y19n cHIsCj4gKwkJCSAgIGlteF9wY2llX2dycF9vZmZzZXQoaW14X3BjaWUpLAo+ICAJCQkgICBJTVg4 TVFfR1BSX1BDSUVfUkVGX1VTRV9QQUQsCj4gIAkJCSAgIElNWDhNUV9HUFJfUENJRV9SRUZfVVNF X1BBRCk7Cj4gIAkvKgo+ICAJICogUmVnYXJkaW5nIHRoZSBkYXRhc2hlZXQsIHRoZSBQQ0lFX1ZQ SCBpcyBzdWdnZXN0ZWQgdG8gYmUgMS44Vi4gSWYgdGhlIFBDSUVfVlBIIGlzCj4gIAkgKiBzdXBw bGllZCBieSAzLjNWLCB0aGUgVlJFR19CWVBBU1Mgc2hvdWxkIGJlIGNsZWFyZWQgdG8gemVyby4K PiAgCSAqLwo+IC0JaWYgKGlteDZfcGNpZS0+dnBoICYmIHJlZ3VsYXRvcl9nZXRfdm9sdGFnZShp bXg2X3BjaWUtPnZwaCkgPiAzMDAwMDAwKQo+IC0JCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3Bj aWUtPmlvbXV4Y19ncHIsCj4gLQkJCQkgICBpbXg2X3BjaWVfZ3JwX29mZnNldChpbXg2X3BjaWUp LAo+ICsJaWYgKGlteF9wY2llLT52cGggJiYgcmVndWxhdG9yX2dldF92b2x0YWdlKGlteF9wY2ll LT52cGgpID4gMzAwMDAwMCkKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4 Y19ncHIsCj4gKwkJCQkgICBpbXhfcGNpZV9ncnBfb2Zmc2V0KGlteF9wY2llKSwKPiAgCQkJCSAg IElNWDhNUV9HUFJfUENJRV9WUkVHX0JZUEFTUywKPiAgCQkJCSAgIDApOwo+ICAKPiAgCXJldHVy biAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGlteDdkX3BjaWVfaW5pdF9waHkoc3RydWN0IGlt eDZfcGNpZSAqaW14Nl9wY2llKQo+ICtzdGF0aWMgaW50IGlteDdkX3BjaWVfaW5pdF9waHkoc3Ry dWN0IGlteF9wY2llICppbXhfcGNpZSkKPiAgewo+IC0JcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZf cGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLCBJTVg3RF9HUFIxMl9QQ0lFX1BIWV9SRUZD TEtfU0VMLCAwKTsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwg SU9NVVhDX0dQUjEyLCBJTVg3RF9HUFIxMl9QQ0lFX1BIWV9SRUZDTEtfU0VMLCAwKTsKPiAgCj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBpbXg2X3BjaWVfaW5pdF9waHkoc3Ry dWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ICtzdGF0aWMgaW50IGlteF9wY2llX2luaXRfcGh5 KHN0cnVjdCBpbXhfcGNpZSAqaW14X3BjaWUpCj4gIHsKPiAtCXJlZ21hcF91cGRhdGVfYml0cyhp bXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwKPiArCXJlZ21hcF91cGRhdGVfYml0 cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICAJCQkJICAgSU1YNlFfR1BS MTJfUENJRV9DVExfMiwgMCA8PCAxMCk7Cj4gIAo+ICAJLyogY29uZmlndXJlIGNvbnN0YW50IGlu cHV0IHNpZ25hbCB0byB0aGUgcGNpZSBjdHJsIGFuZCBwaHkgKi8KPiAtCXJlZ21hcF91cGRhdGVf Yml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwKPiArCXJlZ21hcF91cGRh dGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICAJCQkgICBJTVg2 UV9HUFIxMl9MT1NfTEVWRUwsIDkgPDwgNCk7Cj4gIAo+IC0JcmVnbWFwX3VwZGF0ZV9iaXRzKGlt eDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjgsCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMo aW14X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI4LAo+ICAJCQkgICBJTVg2UV9HUFI4X1RY X0RFRU1QSF9HRU4xLAo+IC0JCQkgICBpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4xIDw8IDApOwo+ IC0JcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjgs Cj4gKwkJCSAgIGlteF9wY2llLT50eF9kZWVtcGhfZ2VuMSA8PCAwKTsKPiArCXJlZ21hcF91cGRh dGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjgsCj4gIAkJCSAgIElNWDZR X0dQUjhfVFhfREVFTVBIX0dFTjJfM1A1REIsCj4gLQkJCSAgIGlteDZfcGNpZS0+dHhfZGVlbXBo X2dlbjJfM3A1ZGIgPDwgNik7Cj4gLQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211 eGNfZ3ByLCBJT01VWENfR1BSOCwKPiArCQkJICAgaW14X3BjaWUtPnR4X2RlZW1waF9nZW4yXzNw NWRiIDw8IDYpOwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9wY2llLT5pb211eGNfZ3ByLCBJ T01VWENfR1BSOCwKPiAgCQkJICAgSU1YNlFfR1BSOF9UWF9ERUVNUEhfR0VOMl82REIsCj4gLQkJ CSAgIGlteDZfcGNpZS0+dHhfZGVlbXBoX2dlbjJfNmRiIDw8IDEyKTsKPiAtCXJlZ21hcF91cGRh dGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI4LAo+ICsJCQkgICBpbXhf cGNpZS0+dHhfZGVlbXBoX2dlbjJfNmRiIDw8IDEyKTsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhp bXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjgsCj4gIAkJCSAgIElNWDZRX0dQUjhfVFhf U1dJTkdfRlVMTCwKPiAtCQkJICAgaW14Nl9wY2llLT50eF9zd2luZ19mdWxsIDw8IDE4KTsKPiAt CXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI4LAo+ ICsJCQkgICBpbXhfcGNpZS0+dHhfc3dpbmdfZnVsbCA8PCAxOCk7Cj4gKwlyZWdtYXBfdXBkYXRl X2JpdHMoaW14X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFI4LAo+ICAJCQkgICBJTVg2UV9H UFI4X1RYX1NXSU5HX0xPVywKPiAtCQkJICAgaW14Nl9wY2llLT50eF9zd2luZ19sb3cgPDwgMjUp Owo+ICsJCQkgICBpbXhfcGNpZS0+dHhfc3dpbmdfbG93IDw8IDI1KTsKPiAgCXJldHVybiAwOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGlteDZzeF9wY2llX2luaXRfcGh5KHN0cnVjdCBpbXg2X3Bj aWUgKmlteDZfcGNpZSkKPiArc3RhdGljIGludCBpbXg2c3hfcGNpZV9pbml0X3BoeShzdHJ1Y3Qg aW14X3BjaWUgKmlteF9wY2llKQo+ICB7Cj4gLQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2ll LT5pb211eGNfZ3ByLCBJT01VWENfR1BSMTIsCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3Bj aWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwKPiAgCQkJICAgSU1YNlNYX0dQUjEyX1BDSUVf UlhfRVFfTUFTSywgSU1YNlNYX0dQUjEyX1BDSUVfUlhfRVFfMik7Cj4gIAo+IC0JcmV0dXJuIGlt eDZfcGNpZV9pbml0X3BoeShpbXg2X3BjaWUpOwo+ICsJcmV0dXJuIGlteF9wY2llX2luaXRfcGh5 KGlteF9wY2llKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW14N2RfcGNpZV93YWl0X2Zvcl9w aHlfcGxsX2xvY2soc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ICtzdGF0aWMgdm9pZCBp bXg3ZF9wY2llX3dhaXRfZm9yX3BoeV9wbGxfbG9jayhzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2ll KQo+ICB7Cj4gIAl1MzIgdmFsOwo+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0gaW14Nl9wY2llLT5w Y2ktPmRldjsKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlteF9wY2llLT5wY2ktPmRldjsKPiAg Cj4gLQlpZiAocmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGlteDZfcGNpZS0+aW9tdXhjX2dwciwK PiArCWlmIChyZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoaW14X3BjaWUtPmlvbXV4Y19ncHIsCj4g IAkJCQkgICAgIElPTVVYQ19HUFIyMiwgdmFsLAo+ICAJCQkJICAgICB2YWwgJiBJTVg3RF9HUFIy Ml9QQ0lFX1BIWV9QTExfTE9DS0VELAo+ICAJCQkJICAgICBQSFlfUExMX0xPQ0tfV0FJVF9VU0xF RVBfTUFYLAo+IEBAIC00MzcsMTkgKzQzNywxOSBAQCBzdGF0aWMgdm9pZCBpbXg3ZF9wY2llX3dh aXRfZm9yX3BoeV9wbGxfbG9jayhzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAkJZGV2 X2VycihkZXYsICJQQ0llIFBMTCBsb2NrIHRpbWVvdXRcbiIpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW50IGlteDZfc2V0dXBfcGh5X21wbGwoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ICtz dGF0aWMgaW50IGlteF9zZXR1cF9waHlfbXBsbChzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llKQo+ ICB7Cj4gIAl1bnNpZ25lZCBsb25nIHBoeV9yYXRlID0gMDsKPiAgCWludCBtdWx0LCBkaXY7Cj4g IAl1MTYgdmFsOwo+ICAJaW50IGk7Cj4gIAo+IC0JaWYgKCEoaW14Nl9wY2llLT5kcnZkYXRhLT5m bGFncyAmIElNWDZfUENJRV9GTEFHX0lNWDZfUEhZKSkKPiArCWlmICghKGlteF9wY2llLT5kcnZk YXRhLT5mbGFncyAmIElNWF9QQ0lFX0ZMQUdfSU1YX1BIWSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ IC0JZm9yIChpID0gMDsgaSA8IGlteDZfcGNpZS0+ZHJ2ZGF0YS0+Y2xrc19jbnQ7IGkrKykKPiAt CQlpZiAoc3RybmNtcChpbXg2X3BjaWUtPmNsa3NbaV0uaWQsICJwY2llX3BoeSIsIDgpID09IDAp Cj4gLQkJCXBoeV9yYXRlID0gY2xrX2dldF9yYXRlKGlteDZfcGNpZS0+Y2xrc1tpXS5jbGspOwo+ ICsJZm9yIChpID0gMDsgaSA8IGlteF9wY2llLT5kcnZkYXRhLT5jbGtzX2NudDsgaSsrKQo+ICsJ CWlmIChzdHJuY21wKGlteF9wY2llLT5jbGtzW2ldLmlkLCAicGNpZV9waHkiLCA4KSA9PSAwKQo+ ICsJCQlwaHlfcmF0ZSA9IGNsa19nZXRfcmF0ZShpbXhfcGNpZS0+Y2xrc1tpXS5jbGspOwo+ICAK PiAgCXN3aXRjaCAocGh5X3JhdGUpIHsKPiAgCWNhc2UgMTI1MDAwMDAwOgo+IEBAIC00NjcsNDYg KzQ2Nyw0NiBAQCBzdGF0aWMgaW50IGlteDZfc2V0dXBfcGh5X21wbGwoc3RydWN0IGlteDZfcGNp ZSAqaW14Nl9wY2llKQo+ICAJCWRpdiA9IDE7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0J CWRldl9lcnIoaW14Nl9wY2llLT5wY2ktPmRldiwKPiArCQlkZXZfZXJyKGlteF9wY2llLT5wY2kt PmRldiwKPiAgCQkJIlVuc3VwcG9ydGVkIFBIWSByZWZlcmVuY2UgY2xvY2sgcmF0ZSAlbHVcbiIs IHBoeV9yYXRlKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlwY2llX3BoeV9y ZWFkKGlteDZfcGNpZSwgUENJRV9QSFlfTVBMTF9PVlJEX0lOX0xPLCAmdmFsKTsKPiArCXBjaWVf cGh5X3JlYWQoaW14X3BjaWUsIFBDSUVfUEhZX01QTExfT1ZSRF9JTl9MTywgJnZhbCk7Cj4gIAl2 YWwgJj0gfihQQ0lFX1BIWV9NUExMX01VTFRJUExJRVJfTUFTSyA8PAo+ICAJCSBQQ0lFX1BIWV9N UExMX01VTFRJUExJRVJfU0hJRlQpOwo+ICAJdmFsIHw9IG11bHQgPDwgUENJRV9QSFlfTVBMTF9N VUxUSVBMSUVSX1NISUZUOwo+ICAJdmFsIHw9IFBDSUVfUEhZX01QTExfTVVMVElQTElFUl9PVlJE Owo+IC0JcGNpZV9waHlfd3JpdGUoaW14Nl9wY2llLCBQQ0lFX1BIWV9NUExMX09WUkRfSU5fTE8s IHZhbCk7Cj4gKwlwY2llX3BoeV93cml0ZShpbXhfcGNpZSwgUENJRV9QSFlfTVBMTF9PVlJEX0lO X0xPLCB2YWwpOwo+ICAKPiAtCXBjaWVfcGh5X3JlYWQoaW14Nl9wY2llLCBQQ0lFX1BIWV9BVEVP VlJELCAmdmFsKTsKPiArCXBjaWVfcGh5X3JlYWQoaW14X3BjaWUsIFBDSUVfUEhZX0FURU9WUkQs ICZ2YWwpOwo+ICAJdmFsICY9IH4oUENJRV9QSFlfQVRFT1ZSRF9SRUZfQ0xLRElWX01BU0sgPDwK PiAgCQkgUENJRV9QSFlfQVRFT1ZSRF9SRUZfQ0xLRElWX1NISUZUKTsKPiAgCXZhbCB8PSBkaXYg PDwgUENJRV9QSFlfQVRFT1ZSRF9SRUZfQ0xLRElWX1NISUZUOwo+ICAJdmFsIHw9IFBDSUVfUEhZ X0FURU9WUkRfRU47Cj4gLQlwY2llX3BoeV93cml0ZShpbXg2X3BjaWUsIFBDSUVfUEhZX0FURU9W UkQsIHZhbCk7Cj4gKwlwY2llX3BoeV93cml0ZShpbXhfcGNpZSwgUENJRV9QSFlfQVRFT1ZSRCwg dmFsKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW14Nl9wY2ll X3Jlc2V0X3BoeShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gK3N0YXRpYyB2b2lkIGlt eF9wY2llX3Jlc2V0X3BoeShzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llKQo+ICB7Cj4gIAl1MTYg dG1wOwo+ICAKPiAtCWlmICghKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+ZmxhZ3MgJiBJTVg2X1BDSUVf RkxBR19JTVg2X1BIWSkpCj4gKwlpZiAoIShpbXhfcGNpZS0+ZHJ2ZGF0YS0+ZmxhZ3MgJiBJTVhf UENJRV9GTEFHX0lNWF9QSFkpKQo+ICAJCXJldHVybjsKPiAgCj4gLQlwY2llX3BoeV9yZWFkKGlt eDZfcGNpZSwgUEhZX1JYX09WUkRfSU5fTE8sICZ0bXApOwo+ICsJcGNpZV9waHlfcmVhZChpbXhf cGNpZSwgUEhZX1JYX09WUkRfSU5fTE8sICZ0bXApOwo+ICAJdG1wIHw9IChQSFlfUlhfT1ZSRF9J Tl9MT19SWF9EQVRBX0VOIHwKPiAgCQlQSFlfUlhfT1ZSRF9JTl9MT19SWF9QTExfRU4pOwo+IC0J cGNpZV9waHlfd3JpdGUoaW14Nl9wY2llLCBQSFlfUlhfT1ZSRF9JTl9MTywgdG1wKTsKPiArCXBj aWVfcGh5X3dyaXRlKGlteF9wY2llLCBQSFlfUlhfT1ZSRF9JTl9MTywgdG1wKTsKPiAgCj4gIAl1 c2xlZXBfcmFuZ2UoMjAwMCwgMzAwMCk7Cj4gIAo+IC0JcGNpZV9waHlfcmVhZChpbXg2X3BjaWUs IFBIWV9SWF9PVlJEX0lOX0xPLCAmdG1wKTsKPiArCXBjaWVfcGh5X3JlYWQoaW14X3BjaWUsIFBI WV9SWF9PVlJEX0lOX0xPLCAmdG1wKTsKPiAgCXRtcCAmPSB+KFBIWV9SWF9PVlJEX0lOX0xPX1JY X0RBVEFfRU4gfAo+ICAJCSAgUEhZX1JYX09WUkRfSU5fTE9fUlhfUExMX0VOKTsKPiAtCXBjaWVf cGh5X3dyaXRlKGlteDZfcGNpZSwgUEhZX1JYX09WUkRfSU5fTE8sIHRtcCk7Cj4gKwlwY2llX3Bo eV93cml0ZShpbXhfcGNpZSwgUEhZX1JYX09WUkRfSU5fTE8sIHRtcCk7Cj4gIH0KPiAgCj4gICNp ZmRlZiBDT05GSUdfQVJNCj4gQEAgLTU0NSwyMiArNTQ1LDIyIEBAIHN0YXRpYyBpbnQgaW14NnFf cGNpZV9hYm9ydF9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgYWRkciwKPiAgfQo+ICAjZW5kaWYKPiAg Cj4gLXN0YXRpYyBpbnQgaW14Nl9wY2llX2F0dGFjaF9wZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g K3N0YXRpYyBpbnQgaW14X3BjaWVfYXR0YWNoX3BkKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgewo+ IC0Jc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4g KwlzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gIAlz dHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbms7Cj4gIAo+ICAJLyogRG8gbm90aGluZyB3aGVuIGluIGEg c2luZ2xlIHBvd2VyIGRvbWFpbiAqLwo+ICAJaWYgKGRldi0+cG1fZG9tYWluKQo+ICAJCXJldHVy biAwOwo+ICAKPiAtCWlteDZfcGNpZS0+cGRfcGNpZSA9IGRldl9wbV9kb21haW5fYXR0YWNoX2J5 X25hbWUoZGV2LCAicGNpZSIpOwo+IC0JaWYgKElTX0VSUihpbXg2X3BjaWUtPnBkX3BjaWUpKQo+ IC0JCXJldHVybiBQVFJfRVJSKGlteDZfcGNpZS0+cGRfcGNpZSk7Cj4gKwlpbXhfcGNpZS0+cGRf cGNpZSA9IGRldl9wbV9kb21haW5fYXR0YWNoX2J5X25hbWUoZGV2LCAicGNpZSIpOwo+ICsJaWYg KElTX0VSUihpbXhfcGNpZS0+cGRfcGNpZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoaW14X3BjaWUt PnBkX3BjaWUpOwo+ICAJLyogRG8gbm90aGluZyB3aGVuIHBvd2VyIGRvbWFpbiBtaXNzaW5nICov Cj4gLQlpZiAoIWlteDZfcGNpZS0+cGRfcGNpZSkKPiArCWlmICghaW14X3BjaWUtPnBkX3BjaWUp Cj4gIAkJcmV0dXJuIDA7Cj4gLQlsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldiwgaW14Nl9wY2ll LT5wZF9wY2llLAo+ICsJbGluayA9IGRldmljZV9saW5rX2FkZChkZXYsIGlteF9wY2llLT5wZF9w Y2llLAo+ICAJCQlETF9GTEFHX1NUQVRFTEVTUyB8Cj4gIAkJCURMX0ZMQUdfUE1fUlVOVElNRSB8 Cj4gIAkJCURMX0ZMQUdfUlBNX0FDVElWRSk7Cj4gQEAgLTU2OSwxMSArNTY5LDExIEBAIHN0YXRp YyBpbnQgaW14Nl9wY2llX2F0dGFjaF9wZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JaW14Nl9wY2llLT5wZF9wY2llX3BoeSA9IGRldl9wbV9k b21haW5fYXR0YWNoX2J5X25hbWUoZGV2LCAicGNpZV9waHkiKTsKPiAtCWlmIChJU19FUlIoaW14 Nl9wY2llLT5wZF9wY2llX3BoeSkpCj4gLQkJcmV0dXJuIFBUUl9FUlIoaW14Nl9wY2llLT5wZF9w Y2llX3BoeSk7Cj4gKwlpbXhfcGNpZS0+cGRfcGNpZV9waHkgPSBkZXZfcG1fZG9tYWluX2F0dGFj aF9ieV9uYW1lKGRldiwgInBjaWVfcGh5Iik7Cj4gKwlpZiAoSVNfRVJSKGlteF9wY2llLT5wZF9w Y2llX3BoeSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoaW14X3BjaWUtPnBkX3BjaWVfcGh5KTsKPiAg Cj4gLQlsaW5rID0gZGV2aWNlX2xpbmtfYWRkKGRldiwgaW14Nl9wY2llLT5wZF9wY2llX3BoeSwK PiArCWxpbmsgPSBkZXZpY2VfbGlua19hZGQoZGV2LCBpbXhfcGNpZS0+cGRfcGNpZV9waHksCj4g IAkJCURMX0ZMQUdfU1RBVEVMRVNTIHwKPiAgCQkJRExfRkxBR19QTV9SVU5USU1FIHwKPiAgCQkJ RExfRkxBR19SUE1fQUNUSVZFKTsKPiBAQCAtNTg1LDIwICs1ODUsMjAgQEAgc3RhdGljIGludCBp bXg2X3BjaWVfYXR0YWNoX3BkKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgaW50IGlteDZfcGNpZV9lbmFibGVfcmVmX2NsayhzdHJ1Y3QgaW14Nl9w Y2llICppbXg2X3BjaWUpCj4gK3N0YXRpYyBpbnQgaW14X3BjaWVfZW5hYmxlX3JlZl9jbGsoc3Ry dWN0IGlteF9wY2llICppbXhfcGNpZSkKPiAgewo+ICAJdW5zaWduZWQgaW50IG9mZnNldDsKPiAg CWludCByZXQgPSAwOwo+ICAKPiAtCXN3aXRjaCAoaW14Nl9wY2llLT5kcnZkYXRhLT52YXJpYW50 KSB7Cj4gKwlzd2l0Y2ggKGlteF9wY2llLT5kcnZkYXRhLT52YXJpYW50KSB7Cj4gIAljYXNlIElN WDZTWDoKPiAtCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01V WENfR1BSMTIsCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9wY2llLT5pb211eGNfZ3ByLCBJ T01VWENfR1BSMTIsCj4gIAkJCQkgICBJTVg2U1hfR1BSMTJfUENJRV9URVNUX1BPV0VSRE9XTiwg MCk7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIElNWDZRUDoKPiAgCWNhc2UgSU1YNlE6Cj4gIAkJLyog cG93ZXIgdXAgY29yZSBwaHkgYW5kIGVuYWJsZSByZWYgY2xvY2sgKi8KPiAtCQlyZWdtYXBfdXBk YXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMSwKPiArCQlyZWdtYXBf dXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxLAo+ICAJCQkJICAg SU1YNlFfR1BSMV9QQ0lFX1RFU1RfUEQsIDAgPDwgMTgpOwo+ICAJCS8qCj4gIAkJICogdGhlIGFz eW5jIHJlc2V0IGlucHV0IG5lZWQgcmVmIGNsb2NrIHRvIHN5bmMgaW50ZXJuYWxseSwKPiBAQCAt NjA3LDcgKzYwNyw3IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX2VuYWJsZV9yZWZfY2xrKHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgCQkgKiBhZGQgb25lIH4xMHVzIGRlbGF5IGhlcmUu Cj4gIAkJICovCj4gIAkJdXNsZWVwX3JhbmdlKDEwLCAxMDApOwo+IC0JCXJlZ21hcF91cGRhdGVf Yml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxLAo+ICsJCXJlZ21hcF91cGRh dGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEsCj4gIAkJCQkgICBJTVg2 UV9HUFIxX1BDSUVfUkVGX0NMS19FTiwgMSA8PCAxNik7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIElN WDdEOgo+IEBAIC02MjAsMTUgKzYyMCwxNSBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9lbmFibGVf cmVmX2NsayhzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAljYXNlIElNWDhNUV9FUDoK PiAgCWNhc2UgSU1YOE1QOgo+ICAJY2FzZSBJTVg4TVBfRVA6Cj4gLQkJb2Zmc2V0ID0gaW14Nl9w Y2llX2dycF9vZmZzZXQoaW14Nl9wY2llKTsKPiArCQlvZmZzZXQgPSBpbXhfcGNpZV9ncnBfb2Zm c2V0KGlteF9wY2llKTsKPiAgCQkvKgo+ICAJCSAqIFNldCB0aGUgb3ZlciByaWRlIGxvdyBhbmQg ZW5hYmxlZAo+ICAJCSAqIG1ha2Ugc3VyZSB0aGF0IFJFRl9DTEsgaXMgdHVybmVkIG9uLgo+ICAJ CSAqLwo+IC0JCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIG9mZnNl dCwKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4Y19ncHIsIG9mZnNldCwK PiAgCQkJCSAgIElNWDhNUV9HUFJfUENJRV9DTEtfUkVRX09WRVJSSURFLAo+ICAJCQkJICAgMCk7 Cj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgb2Zmc2V0LAo+ ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgb2Zmc2V0LAo+ICAJ CQkJICAgSU1YOE1RX0dQUl9QQ0lFX0NMS19SRVFfT1ZFUlJJREVfRU4sCj4gIAkJCQkgICBJTVg4 TVFfR1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklERV9FTik7Cj4gIAkJYnJlYWs7Cj4gQEAgLTYzNywx OSArNjM3LDE5IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX2VuYWJsZV9yZWZfY2xrKHN0cnVjdCBp bXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIGlteDZfcGNpZV9kaXNhYmxlX3JlZl9jbGsoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2ll KQo+ICtzdGF0aWMgdm9pZCBpbXhfcGNpZV9kaXNhYmxlX3JlZl9jbGsoc3RydWN0IGlteF9wY2ll ICppbXhfcGNpZSkKPiAgewo+IC0Jc3dpdGNoIChpbXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQp IHsKPiArCXN3aXRjaCAoaW14X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiAgCWNhc2UgSU1Y NlFQOgo+ICAJY2FzZSBJTVg2UToKPiAtCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5p b211eGNfZ3ByLCBJT01VWENfR1BSMSwKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUt PmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxLAo+ICAJCQkJSU1YNlFfR1BSMV9QQ0lFX1JFRl9DTEtf RU4sIDApOwo+IC0JCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElP TVVYQ19HUFIxLAo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwg SU9NVVhDX0dQUjEsCj4gIAkJCQlJTVg2UV9HUFIxX1BDSUVfVEVTVF9QRCwKPiAgCQkJCUlNWDZR X0dQUjFfUENJRV9URVNUX1BEKTsKPiAgCQlicmVhazsKPiAgCWNhc2UgSU1YN0Q6Cj4gLQkJcmVn bWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICsJ CXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ ICAJCQkJICAgSU1YN0RfR1BSMTJfUENJRV9QSFlfUkVGQ0xLX1NFTCwKPiAgCQkJCSAgIElNWDdE X0dQUjEyX1BDSUVfUEhZX1JFRkNMS19TRUwpOwo+ICAJCWJyZWFrOwo+IEBAIC02NTgsMTcgKzY1 OCwxNyBAQCBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfZGlzYWJsZV9yZWZfY2xrKHN0cnVjdCBpbXg2 X3BjaWUgKmlteDZfcGNpZSkKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIGludCBpbXg2X3BjaWVf Y2xrX2VuYWJsZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gK3N0YXRpYyBpbnQgaW14 X3BjaWVfY2xrX2VuYWJsZShzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHdfcGNpZSAqcGNpID0gaW14Nl9wY2llLT5wY2k7Cj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gaW14X3BjaWUtPnBjaTsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Owo+ICAJ aW50IHJldDsKPiAgCj4gLQlyZXQgPSBjbGtfYnVsa19wcmVwYXJlX2VuYWJsZShpbXg2X3BjaWUt PmRydmRhdGEtPmNsa3NfY250LCBpbXg2X3BjaWUtPmNsa3MpOwo+ICsJcmV0ID0gY2xrX2J1bGtf cHJlcGFyZV9lbmFibGUoaW14X3BjaWUtPmRydmRhdGEtPmNsa3NfY250LCBpbXhfcGNpZS0+Y2xr cyk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JcmV0ID0gaW14Nl9wY2ll X2VuYWJsZV9yZWZfY2xrKGlteDZfcGNpZSk7Cj4gKwlyZXQgPSBpbXhfcGNpZV9lbmFibGVfcmVm X2NsayhpbXhfcGNpZSk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJZGV2X2VycihkZXYsICJ1bmFibGUg dG8gZW5hYmxlIHBjaWUgcmVmIGNsb2NrXG4iKTsKPiAgCQlnb3RvIGVycl9yZWZfY2xrOwo+IEBA IC02NzksNDEgKzY3OSw0MSBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9jbGtfZW5hYmxlKHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgCXJldHVybiAwOwo+ICAKPiAgZXJyX3JlZl9jbGs6 Cj4gLQljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZShpbXg2X3BjaWUtPmRydmRhdGEtPmNsa3Nf Y250LCBpbXg2X3BjaWUtPmNsa3MpOwo+ICsJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoaW14 X3BjaWUtPmRydmRhdGEtPmNsa3NfY250LCBpbXhfcGNpZS0+Y2xrcyk7Cj4gIAo+ICAJcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW14Nl9wY2llX2Nsa19kaXNhYmxlKHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiArc3RhdGljIHZvaWQgaW14X3BjaWVfY2xrX2Rpc2Fi bGUoc3RydWN0IGlteF9wY2llICppbXhfcGNpZSkKPiAgewo+IC0JaW14Nl9wY2llX2Rpc2FibGVf cmVmX2NsayhpbXg2X3BjaWUpOwo+IC0JY2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoaW14Nl9w Y2llLT5kcnZkYXRhLT5jbGtzX2NudCwgaW14Nl9wY2llLT5jbGtzKTsKPiArCWlteF9wY2llX2Rp c2FibGVfcmVmX2NsayhpbXhfcGNpZSk7Cj4gKwljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZShp bXhfcGNpZS0+ZHJ2ZGF0YS0+Y2xrc19jbnQsIGlteF9wY2llLT5jbGtzKTsKPiAgfQo+ICAKPiAt c3RhdGljIHZvaWQgaW14Nl9wY2llX2Fzc2VydF9jb3JlX3Jlc2V0KHN0cnVjdCBpbXg2X3BjaWUg KmlteDZfcGNpZSkKPiArc3RhdGljIHZvaWQgaW14X3BjaWVfYXNzZXJ0X2NvcmVfcmVzZXQoc3Ry dWN0IGlteF9wY2llICppbXhfcGNpZSkKPiAgewo+IC0JcmVzZXRfY29udHJvbF9hc3NlcnQoaW14 Nl9wY2llLT5wY2llcGh5X3Jlc2V0KTsKPiAtCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGlteDZfcGNp ZS0+YXBwc19yZXNldCk7Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydChpbXhfcGNpZS0+cGNpZXBo eV9yZXNldCk7Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydChpbXhfcGNpZS0+YXBwc19yZXNldCk7 Cj4gIAo+IC0Jc3dpdGNoIChpbXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiArCXN3aXRj aCAoaW14X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiAgCWNhc2UgSU1YNlNYOgo+IC0JCXJl Z21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwKPiAr CQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxMiwK PiAgCQkJCSAgIElNWDZTWF9HUFIxMl9QQ0lFX1RFU1RfUE9XRVJET1dOLAo+ICAJCQkJICAgSU1Y NlNYX0dQUjEyX1BDSUVfVEVTVF9QT1dFUkRPV04pOwo+ICAJCS8qIEZvcmNlIFBDSWUgUEhZIHJl c2V0ICovCj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9N VVhDX0dQUjUsCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9wY2llLT5pb211eGNfZ3ByLCBJ T01VWENfR1BSNSwKPiAgCQkJCSAgIElNWDZTWF9HUFI1X1BDSUVfQlROUlNUX1JFU0VULAo+ICAJ CQkJICAgSU1YNlNYX0dQUjVfUENJRV9CVE5SU1RfUkVTRVQpOwo+ICAJCWJyZWFrOwo+ICAJY2Fz ZSBJTVg2UVA6Cj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwg SU9NVVhDX0dQUjEsCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9wY2llLT5pb211eGNfZ3By LCBJT01VWENfR1BSMSwKPiAgCQkJCSAgIElNWDZRX0dQUjFfUENJRV9TV19SU1QsCj4gIAkJCQkg ICBJTVg2UV9HUFIxX1BDSUVfU1dfUlNUKTsKPiAgCQlicmVhazsKPiAgCWNhc2UgSU1YNlE6Cj4g LQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEs Cj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BS MSwKPiAgCQkJCSAgIElNWDZRX0dQUjFfUENJRV9URVNUX1BELCAxIDw8IDE4KTsKPiAtCQlyZWdt YXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMSwKPiArCQly ZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxLAo+ICAJ CQkJICAgSU1YNlFfR1BSMV9QQ0lFX1JFRl9DTEtfRU4sIDAgPDwgMTYpOwo+ICAJCWJyZWFrOwo+ ICAJZGVmYXVsdDoKPiBAQCAtNzIxLDQ3ICs3MjEsNDcgQEAgc3RhdGljIHZvaWQgaW14Nl9wY2ll X2Fzc2VydF9jb3JlX3Jlc2V0KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgCX0KPiAg Cj4gIAkvKiBTb21lIGJvYXJkcyBkb24ndCBoYXZlIFBDSWUgcmVzZXQgR1BJTy4gKi8KPiAtCWlm IChncGlvX2lzX3ZhbGlkKGlteDZfcGNpZS0+cmVzZXRfZ3BpbykpCj4gLQkJZ3Bpb19zZXRfdmFs dWVfY2Fuc2xlZXAoaW14Nl9wY2llLT5yZXNldF9ncGlvLAo+IC0JCQkJCWlteDZfcGNpZS0+Z3Bp b19hY3RpdmVfaGlnaCk7Cj4gKwlpZiAoZ3Bpb19pc192YWxpZChpbXhfcGNpZS0+cmVzZXRfZ3Bp bykpCj4gKwkJZ3Bpb19zZXRfdmFsdWVfY2Fuc2xlZXAoaW14X3BjaWUtPnJlc2V0X2dwaW8sCj4g KwkJCQkJaW14X3BjaWUtPmdwaW9fYWN0aXZlX2hpZ2gpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50 IGlteDZfcGNpZV9kZWFzc2VydF9jb3JlX3Jlc2V0KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNp ZSkKPiArc3RhdGljIGludCBpbXhfcGNpZV9kZWFzc2VydF9jb3JlX3Jlc2V0KHN0cnVjdCBpbXhf cGNpZSAqaW14X3BjaWUpCj4gIHsKPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUt PnBjaTsKPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSBpbXhfcGNpZS0+cGNpOwo+ICAJc3RydWN0 IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7Cj4gIAo+IC0JcmVzZXRfY29udHJvbF9kZWFzc2VydChp bXg2X3BjaWUtPnBjaWVwaHlfcmVzZXQpOwo+ICsJcmVzZXRfY29udHJvbF9kZWFzc2VydChpbXhf cGNpZS0+cGNpZXBoeV9yZXNldCk7Cj4gIAo+IC0Jc3dpdGNoIChpbXg2X3BjaWUtPmRydmRhdGEt PnZhcmlhbnQpIHsKPiArCXN3aXRjaCAoaW14X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiAg CWNhc2UgSU1YN0Q6Cj4gIAkJLyogV29ya2Fyb3VuZCBmb3IgRVJSMDEwNzI4LCBmYWlsdXJlIG9m IFBDSS1lIFBMTCBWQ08gdG8KPiAgCQkgKiBvc2NpbGxhdGUsIGVzcGVjaWFsbHkgd2hlbiBjb2xk LiAgVGhpcyB0dXJucyBvZmYgIkR1dHktY3ljbGUKPiAgCQkgKiBDb3JyZWN0b3IiIGFuZCBvdGhl ciBteXN0ZXJpb3VzIHVuZG9jdW1lbnRlZCB0aGluZ3MuCj4gIAkJICovCj4gLQkJaWYgKGxpa2Vs eShpbXg2X3BjaWUtPnBoeV9iYXNlKSkgewo+ICsJCWlmIChsaWtlbHkoaW14X3BjaWUtPnBoeV9i YXNlKSkgewo+ICAJCQkvKiBEZS1hc3NlcnQgRENDX0ZCX0VOICovCj4gIAkJCXdyaXRlbChQQ0lF X1BIWV9DTU5fUkVHNF9EQ0NfRkJfRU4sCj4gLQkJCSAgICAgICBpbXg2X3BjaWUtPnBoeV9iYXNl ICsgUENJRV9QSFlfQ01OX1JFRzQpOwo+ICsJCQkgICAgICAgaW14X3BjaWUtPnBoeV9iYXNlICsg UENJRV9QSFlfQ01OX1JFRzQpOwo+ICAJCQkvKiBBc3NlcnQgUlhfRVFTIGFuZCBSWF9FUVNfU0VM ICovCj4gIAkJCXdyaXRlbChQQ0lFX1BIWV9DTU5fUkVHMjRfUlhfRVFfU0VMCj4gIAkJCQl8IFBD SUVfUEhZX0NNTl9SRUcyNF9SWF9FUSwKPiAtCQkJICAgICAgIGlteDZfcGNpZS0+cGh5X2Jhc2Ug KyBQQ0lFX1BIWV9DTU5fUkVHMjQpOwo+ICsJCQkgICAgICAgaW14X3BjaWUtPnBoeV9iYXNlICsg UENJRV9QSFlfQ01OX1JFRzI0KTsKPiAgCQkJLyogQXNzZXJ0IEFUVF9NT0RFICovCj4gIAkJCXdy aXRlbChQQ0lFX1BIWV9DTU5fUkVHMjZfQVRUX01PREUsCj4gLQkJCSAgICAgICBpbXg2X3BjaWUt PnBoeV9iYXNlICsgUENJRV9QSFlfQ01OX1JFRzI2KTsKPiArCQkJICAgICAgIGlteF9wY2llLT5w aHlfYmFzZSArIFBDSUVfUEhZX0NNTl9SRUcyNik7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJZGV2X3dh cm4oZGV2LCAiVW5hYmxlIHRvIGFwcGx5IEVSUjAxMDcyOCB3b3JrYXJvdW5kLiBEVCBtaXNzaW5n IGZzbCxpbXg3ZC1wY2llLXBoeSBwaGFuZGxlID9cbiIpOwo+ICAJCX0KPiAgCj4gLQkJaW14N2Rf cGNpZV93YWl0X2Zvcl9waHlfcGxsX2xvY2soaW14Nl9wY2llKTsKPiArCQlpbXg3ZF9wY2llX3dh aXRfZm9yX3BoeV9wbGxfbG9jayhpbXhfcGNpZSk7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIElNWDZT WDoKPiAtCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJT01VWENf R1BSNSwKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14X3BjaWUtPmlvbXV4Y19ncHIsIElPTVVY Q19HUFI1LAo+ICAJCQkJICAgSU1YNlNYX0dQUjVfUENJRV9CVE5SU1RfUkVTRVQsIDApOwo+ICAJ CWJyZWFrOwo+ICAJY2FzZSBJTVg2UVA6Cj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNp ZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEsCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9w Y2llLT5pb211eGNfZ3ByLCBJT01VWENfR1BSMSwKPiAgCQkJCSAgIElNWDZRX0dQUjFfUENJRV9T V19SU1QsIDApOwo+ICAKPiAgCQl1c2xlZXBfcmFuZ2UoMjAwLCA1MDApOwo+IEBAIC03NzEsMTAg Kzc3MSwxMCBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9kZWFzc2VydF9jb3JlX3Jlc2V0KHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgCX0KPiAgCj4gIAkvKiBTb21lIGJvYXJkcyBkb24n dCBoYXZlIFBDSWUgcmVzZXQgR1BJTy4gKi8KPiAtCWlmIChncGlvX2lzX3ZhbGlkKGlteDZfcGNp ZS0+cmVzZXRfZ3BpbykpIHsKPiArCWlmIChncGlvX2lzX3ZhbGlkKGlteF9wY2llLT5yZXNldF9n cGlvKSkgewo+ICAJCW1zbGVlcCgxMDApOwo+IC0JCWdwaW9fc2V0X3ZhbHVlX2NhbnNsZWVwKGlt eDZfcGNpZS0+cmVzZXRfZ3BpbywKPiAtCQkJCQkhaW14Nl9wY2llLT5ncGlvX2FjdGl2ZV9oaWdo KTsKPiArCQlncGlvX3NldF92YWx1ZV9jYW5zbGVlcChpbXhfcGNpZS0+cmVzZXRfZ3BpbywKPiAr CQkJCQkhaW14X3BjaWUtPmdwaW9fYWN0aXZlX2hpZ2gpOwo+ICAJCS8qIFdhaXQgZm9yIDEwMG1z IGFmdGVyIFBFUlNUIyBkZWFzc2VydGlvbiAoUENJZSByNS4wLCA2LjYuMSkgKi8KPiAgCQltc2xl ZXAoMTAwKTsKPiAgCX0KPiBAQCAtNzgyLDkgKzc4Miw5IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2ll X2RlYXNzZXJ0X2NvcmVfcmVzZXQoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgaW14Nl9wY2llX3dhaXRfZm9yX3NwZWVkX2No YW5nZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gK3N0YXRpYyBpbnQgaW14X3BjaWVf d2FpdF9mb3Jfc3BlZWRfY2hhbmdlKHN0cnVjdCBpbXhfcGNpZSAqaW14X3BjaWUpCj4gIHsKPiAt CXN0cnVjdCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsKPiArCXN0cnVjdCBkd19wY2ll ICpwY2kgPSBpbXhfcGNpZS0+cGNpOwo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7 Cj4gIAl1MzIgdG1wOwo+ICAJdW5zaWduZWQgaW50IHJldHJpZXM7Cj4gQEAgLTgwMSwzMyArODAx LDMzIEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3dhaXRfZm9yX3NwZWVkX2NoYW5nZShzdHJ1Y3Qg aW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgfQo+ICAKPiAt c3RhdGljIHZvaWQgaW14Nl9wY2llX2x0c3NtX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g K3N0YXRpYyB2b2lkIGlteF9wY2llX2x0c3NtX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g IHsKPiAtCXN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp Owo+IC0JY29uc3Qgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhICpkcnZkYXRhID0gaW14Nl9wY2ll LT5kcnZkYXRhOwo+ICsJc3RydWN0IGlteF9wY2llICppbXhfcGNpZSA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwo+ICsJY29uc3Qgc3RydWN0IGlteF9wY2llX2RydmRhdGEgKmRydmRhdGEgPSBpbXhf cGNpZS0+ZHJ2ZGF0YTsKPiAgCj4gIAlpZiAoZHJ2ZGF0YS0+bHRzc21fbWFzaykKPiAtCQlyZWdt YXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBkcnZkYXRhLT5sdHNzbV9vZmYs IGRydmRhdGEtPmx0c3NtX21hc2ssCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteF9wY2llLT5p b211eGNfZ3ByLCBkcnZkYXRhLT5sdHNzbV9vZmYsIGRydmRhdGEtPmx0c3NtX21hc2ssCj4gIAkJ CQkgICBkcnZkYXRhLT5sdHNzbV9tYXNrKTsKPiAgCj4gLQlyZXNldF9jb250cm9sX2RlYXNzZXJ0 KGlteDZfcGNpZS0+YXBwc19yZXNldCk7Cj4gKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGlteF9w Y2llLT5hcHBzX3Jlc2V0KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW14Nl9wY2llX2x0c3Nt X2Rpc2FibGUoc3RydWN0IGRldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBpbXhfcGNpZV9sdHNz bV9kaXNhYmxlKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgewo+IC0Jc3RydWN0IGlteDZfcGNpZSAq aW14Nl9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gLQljb25zdCBzdHJ1Y3QgaW14Nl9w Y2llX2RydmRhdGEgKmRydmRhdGEgPSBpbXg2X3BjaWUtPmRydmRhdGE7Cj4gKwlzdHJ1Y3QgaW14 X3BjaWUgKmlteF9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwljb25zdCBzdHJ1Y3Qg aW14X3BjaWVfZHJ2ZGF0YSAqZHJ2ZGF0YSA9IGlteF9wY2llLT5kcnZkYXRhOwo+ICAKPiAgCWlm IChkcnZkYXRhLT5sdHNzbV9tYXNrKQo+IC0JCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUt PmlvbXV4Y19ncHIsIGRydmRhdGEtPmx0c3NtX29mZiwKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMo aW14X3BjaWUtPmlvbXV4Y19ncHIsIGRydmRhdGEtPmx0c3NtX29mZiwKPiAgCQkJCSAgIGRydmRh dGEtPmx0c3NtX21hc2ssIDApOwo+ICAKPiAtCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGlteDZfcGNp ZS0+YXBwc19yZXNldCk7Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydChpbXhfcGNpZS0+YXBwc19y ZXNldCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgaW14Nl9wY2llX3N0YXJ0X2xpbmsoc3RydWN0 IGR3X3BjaWUgKnBjaSkKPiArc3RhdGljIGludCBpbXhfcGNpZV9zdGFydF9saW5rKHN0cnVjdCBk d19wY2llICpwY2kpCj4gIHsKPiAtCXN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSA9IHRvX2lt eDZfcGNpZShwY2kpOwo+ICsJc3RydWN0IGlteF9wY2llICppbXhfcGNpZSA9IHRvX2lteF9wY2ll KHBjaSk7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsKPiAgCXU4IG9mZnNldCA9 IGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwgUENJX0NBUF9JRF9FWFApOwo+ICAJdTMyIHRt cDsKPiBAQCAtODQ2LDcgKzg0Niw3IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3N0YXJ0X2xpbmso c3RydWN0IGR3X3BjaWUgKnBjaSkKPiAgCWR3X3BjaWVfZGJpX3JvX3dyX2RpcyhwY2kpOwo+ICAK PiAgCS8qIFN0YXJ0IExUU1NNLiAqLwo+IC0JaW14Nl9wY2llX2x0c3NtX2VuYWJsZShkZXYpOwo+ ICsJaW14X3BjaWVfbHRzc21fZW5hYmxlKGRldik7Cj4gIAo+ICAJcmV0ID0gZHdfcGNpZV93YWl0 X2Zvcl9saW5rKHBjaSk7Cj4gIAlpZiAocmV0KQo+IEBAIC04NjksOCArODY5LDggQEAgc3RhdGlj IGludCBpbXg2X3BjaWVfc3RhcnRfbGluayhzdHJ1Y3QgZHdfcGNpZSAqcGNpKQo+ICAJCWR3X3Bj aWVfd3JpdGVsX2RiaShwY2ksIFBDSUVfTElOS19XSURUSF9TUEVFRF9DT05UUk9MLCB0bXApOwo+ ICAJCWR3X3BjaWVfZGJpX3JvX3dyX2RpcyhwY2kpOwo+ICAKPiAtCQlpZiAoaW14Nl9wY2llLT5k cnZkYXRhLT5mbGFncyAmCj4gLQkJICAgIElNWDZfUENJRV9GTEFHX0lNWDZfU1BFRURfQ0hBTkdF KSB7Cj4gKwkJaWYgKGlteF9wY2llLT5kcnZkYXRhLT5mbGFncyAmCj4gKwkJICAgIElNWF9QQ0lF X0ZMQUdfSU1YX1NQRUVEX0NIQU5HRSkgewo+ICAJCQkvKgo+ICAJCQkgKiBPbiBpLk1YNywgRElS RUNUX1NQRUVEX0NIQU5HRSBiZWhhdmVzIGRpZmZlcmVudGx5Cj4gIAkJCSAqIGZyb20gaS5NWDYg ZmFtaWx5IHdoZW4gbm8gbGluayBzcGVlZCB0cmFuc2l0aW9uCj4gQEAgLTg4MCw3ICs4ODAsNyBA QCBzdGF0aWMgaW50IGlteDZfcGNpZV9zdGFydF9saW5rKHN0cnVjdCBkd19wY2llICpwY2kpCj4g IAkJCSAqIGZhaWx1cmUuCj4gIAkJCSAqLwo+ICAKPiAtCQkJcmV0ID0gaW14Nl9wY2llX3dhaXRf Zm9yX3NwZWVkX2NoYW5nZShpbXg2X3BjaWUpOwo+ICsJCQlyZXQgPSBpbXhfcGNpZV93YWl0X2Zv cl9zcGVlZF9jaGFuZ2UoaW14X3BjaWUpOwo+ICAJCQlpZiAocmV0KSB7Cj4gIAkJCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBicmluZyBsaW5rIHVwIVxuIik7Cj4gIAkJCQlnb3RvIGVycl9yZXNl dF9waHk7Cj4gQEAgLTg5NSwzNyArODk1LDM3IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3N0YXJ0 X2xpbmsoc3RydWN0IGR3X3BjaWUgKnBjaSkKPiAgCQlkZXZfaW5mbyhkZXYsICJMaW5rOiBPbmx5 IEdlbjEgaXMgZW5hYmxlZFxuIik7Cj4gIAl9Cj4gIAo+IC0JaW14Nl9wY2llLT5saW5rX2lzX3Vw ID0gdHJ1ZTsKPiArCWlteF9wY2llLT5saW5rX2lzX3VwID0gdHJ1ZTsKPiAgCXRtcCA9IGR3X3Bj aWVfcmVhZHdfZGJpKHBjaSwgb2Zmc2V0ICsgUENJX0VYUF9MTktTVEEpOwo+ICAJZGV2X2luZm8o ZGV2LCAiTGluayB1cCwgR2VuJWlcbiIsIHRtcCAmIFBDSV9FWFBfTE5LU1RBX0NMUyk7Cj4gIAly ZXR1cm4gMDsKPiAgCj4gIGVycl9yZXNldF9waHk6Cj4gLQlpbXg2X3BjaWUtPmxpbmtfaXNfdXAg PSBmYWxzZTsKPiArCWlteF9wY2llLT5saW5rX2lzX3VwID0gZmFsc2U7Cj4gIAlkZXZfZGJnKGRl diwgIlBIWSBERUJVR19SMD0weCUwOHggREVCVUdfUjE9MHglMDh4XG4iLAo+ICAJCWR3X3BjaWVf cmVhZGxfZGJpKHBjaSwgUENJRV9QT1JUX0RFQlVHMCksCj4gIAkJZHdfcGNpZV9yZWFkbF9kYmko cGNpLCBQQ0lFX1BPUlRfREVCVUcxKSk7Cj4gLQlpbXg2X3BjaWVfcmVzZXRfcGh5KGlteDZfcGNp ZSk7Cj4gKwlpbXhfcGNpZV9yZXNldF9waHkoaW14X3BjaWUpOwo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gLXN0YXRpYyB2b2lkIGlteDZfcGNpZV9zdG9wX2xpbmsoc3RydWN0IGR3X3BjaWUgKnBj aSkKPiArc3RhdGljIHZvaWQgaW14X3BjaWVfc3RvcF9saW5rKHN0cnVjdCBkd19wY2llICpwY2kp Cj4gIHsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Owo+ICAKPiAgCS8qIFR1cm4g b2ZmIFBDSWUgTFRTU00gKi8KPiAtCWlteDZfcGNpZV9sdHNzbV9kaXNhYmxlKGRldik7Cj4gKwlp bXhfcGNpZV9sdHNzbV9kaXNhYmxlKGRldik7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgaW14Nl9w Y2llX2hvc3RfaW5pdChzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApCj4gK3N0YXRpYyBpbnQgaW14X3Bj aWVfaG9zdF9pbml0KHN0cnVjdCBkd19wY2llX3JwICpwcCkKPiAgewo+ICAJc3RydWN0IGR3X3Bj aWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwcCk7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSBwY2ktPmRldjsKPiAtCXN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSA9IHRvX2lteDZfcGNp ZShwY2kpOwo+ICsJc3RydWN0IGlteF9wY2llICppbXhfcGNpZSA9IHRvX2lteF9wY2llKHBjaSk7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChpbXg2X3BjaWUtPnZwY2llKSB7Cj4gLQkJcmV0ID0g cmVndWxhdG9yX2VuYWJsZShpbXg2X3BjaWUtPnZwY2llKTsKPiArCWlmIChpbXhfcGNpZS0+dnBj aWUpIHsKPiArCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGlteF9wY2llLT52cGNpZSk7Cj4gIAkJ aWYgKHJldCkgewo+ICAJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgdnBjaWUgcmVn dWxhdG9yOiAlZFxuIiwKPiAgCQkJCXJldCk7Cj4gQEAgLTkzMyw4MyArOTMzLDgzIEBAIHN0YXRp YyBpbnQgaW14Nl9wY2llX2hvc3RfaW5pdChzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApCj4gIAkJfQo+ ICAJfQo+ICAKPiAtCWlteDZfcGNpZV9hc3NlcnRfY29yZV9yZXNldChpbXg2X3BjaWUpOwo+ICsJ aW14X3BjaWVfYXNzZXJ0X2NvcmVfcmVzZXQoaW14X3BjaWUpOwo+ICAKPiAtCWlmIChpbXg2X3Bj aWUtPmRydmRhdGEtPmluaXRfcGh5KQo+IC0JCWlteDZfcGNpZS0+ZHJ2ZGF0YS0+aW5pdF9waHko aW14Nl9wY2llKTsKPiArCWlmIChpbXhfcGNpZS0+ZHJ2ZGF0YS0+aW5pdF9waHkpCj4gKwkJaW14 X3BjaWUtPmRydmRhdGEtPmluaXRfcGh5KGlteF9wY2llKTsKPiAgCj4gLQlpbXg2X3BjaWVfY29u ZmlndXJlX3R5cGUoaW14Nl9wY2llKTsKPiArCWlteF9wY2llX2NvbmZpZ3VyZV90eXBlKGlteF9w Y2llKTsKPiAgCj4gLQlyZXQgPSBpbXg2X3BjaWVfY2xrX2VuYWJsZShpbXg2X3BjaWUpOwo+ICsJ cmV0ID0gaW14X3BjaWVfY2xrX2VuYWJsZShpbXhfcGNpZSk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJ ZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZW5hYmxlIHBjaWUgY2xvY2tzOiAlZFxuIiwgcmV0KTsK PiAgCQlnb3RvIGVycl9yZWdfZGlzYWJsZTsKPiAgCX0KPiAgCj4gLQlpZiAoaW14Nl9wY2llLT5w aHkpIHsKPiAtCQlyZXQgPSBwaHlfaW5pdChpbXg2X3BjaWUtPnBoeSk7Cj4gKwlpZiAoaW14X3Bj aWUtPnBoeSkgewo+ICsJCXJldCA9IHBoeV9pbml0KGlteF9wY2llLT5waHkpOwo+ICAJCWlmIChy ZXQpIHsKPiAgCQkJZGV2X2VycihkZXYsICJwY2llIFBIWSBwb3dlciB1cCBmYWlsZWRcbiIpOwo+ ICAJCQlnb3RvIGVycl9jbGtfZGlzYWJsZTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaWYgKGlteDZf cGNpZS0+cGh5KSB7Cj4gLQkJcmV0ID0gcGh5X3Bvd2VyX29uKGlteDZfcGNpZS0+cGh5KTsKPiAr CWlmIChpbXhfcGNpZS0+cGh5KSB7Cj4gKwkJcmV0ID0gcGh5X3Bvd2VyX29uKGlteF9wY2llLT5w aHkpOwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJZGV2X2VycihkZXYsICJ3YWl0aW5nIGZvciBQSFkg cmVhZHkgdGltZW91dCFcbiIpOwo+ICAJCQlnb3RvIGVycl9waHlfb2ZmOwo+ICAJCX0KPiAgCX0K PiAgCj4gLQlyZXQgPSBpbXg2X3BjaWVfZGVhc3NlcnRfY29yZV9yZXNldChpbXg2X3BjaWUpOwo+ ICsJcmV0ID0gaW14X3BjaWVfZGVhc3NlcnRfY29yZV9yZXNldChpbXhfcGNpZSk7Cj4gIAlpZiAo cmV0IDwgMCkgewo+ICAJCWRldl9lcnIoZGV2LCAicGNpZSBkZWFzc2VydCBjb3JlIHJlc2V0IGZh aWxlZDogJWRcbiIsIHJldCk7Cj4gIAkJZ290byBlcnJfcGh5X29mZjsKPiAgCX0KPiAgCj4gLQlp bXg2X3NldHVwX3BoeV9tcGxsKGlteDZfcGNpZSk7Cj4gKwlpbXhfc2V0dXBfcGh5X21wbGwoaW14 X3BjaWUpOwo+ICAKPiAgCXJldHVybiAwOwo+ICAKPiAgZXJyX3BoeV9vZmY6Cj4gLQlpZiAoaW14 Nl9wY2llLT5waHkpCj4gLQkJcGh5X2V4aXQoaW14Nl9wY2llLT5waHkpOwo+ICsJaWYgKGlteF9w Y2llLT5waHkpCj4gKwkJcGh5X2V4aXQoaW14X3BjaWUtPnBoeSk7Cj4gIGVycl9jbGtfZGlzYWJs ZToKPiAtCWlteDZfcGNpZV9jbGtfZGlzYWJsZShpbXg2X3BjaWUpOwo+ICsJaW14X3BjaWVfY2xr X2Rpc2FibGUoaW14X3BjaWUpOwo+ICBlcnJfcmVnX2Rpc2FibGU6Cj4gLQlpZiAoaW14Nl9wY2ll LT52cGNpZSkKPiAtCQlyZWd1bGF0b3JfZGlzYWJsZShpbXg2X3BjaWUtPnZwY2llKTsKPiArCWlm IChpbXhfcGNpZS0+dnBjaWUpCj4gKwkJcmVndWxhdG9yX2Rpc2FibGUoaW14X3BjaWUtPnZwY2ll KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlteDZfcGNpZV9ob3N0 X2V4aXQoc3RydWN0IGR3X3BjaWVfcnAgKnBwKQo+ICtzdGF0aWMgdm9pZCBpbXhfcGNpZV9ob3N0 X2V4aXQoc3RydWN0IGR3X3BjaWVfcnAgKnBwKQo+ICB7Cj4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBwKTsKPiAtCXN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNp ZSA9IHRvX2lteDZfcGNpZShwY2kpOwo+ICsJc3RydWN0IGlteF9wY2llICppbXhfcGNpZSA9IHRv X2lteF9wY2llKHBjaSk7Cj4gIAo+IC0JaWYgKGlteDZfcGNpZS0+cGh5KSB7Cj4gLQkJaWYgKHBo eV9wb3dlcl9vZmYoaW14Nl9wY2llLT5waHkpKQo+ICsJaWYgKGlteF9wY2llLT5waHkpIHsKPiAr CQlpZiAocGh5X3Bvd2VyX29mZihpbXhfcGNpZS0+cGh5KSkKPiAgCQkJZGV2X2VycihwY2ktPmRl diwgInVuYWJsZSB0byBwb3dlciBvZmYgUEhZXG4iKTsKPiAtCQlwaHlfZXhpdChpbXg2X3BjaWUt PnBoeSk7Cj4gKwkJcGh5X2V4aXQoaW14X3BjaWUtPnBoeSk7Cj4gIAl9Cj4gLQlpbXg2X3BjaWVf Y2xrX2Rpc2FibGUoaW14Nl9wY2llKTsKPiArCWlteF9wY2llX2Nsa19kaXNhYmxlKGlteF9wY2ll KTsKPiAgCj4gLQlpZiAoaW14Nl9wY2llLT52cGNpZSkKPiAtCQlyZWd1bGF0b3JfZGlzYWJsZShp bXg2X3BjaWUtPnZwY2llKTsKPiArCWlmIChpbXhfcGNpZS0+dnBjaWUpCj4gKwkJcmVndWxhdG9y X2Rpc2FibGUoaW14X3BjaWUtPnZwY2llKTsKPiAgfQo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBkd19wY2llX2hvc3Rfb3BzIGlteDZfcGNpZV9ob3N0X29wcyA9IHsKPiAtCS5pbml0ID0gaW14 Nl9wY2llX2hvc3RfaW5pdCwKPiAtCS5kZWluaXQgPSBpbXg2X3BjaWVfaG9zdF9leGl0LAo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGR3X3BjaWVfaG9zdF9vcHMgaW14X3BjaWVfaG9zdF9vcHMgPSB7 Cj4gKwkuaW5pdCA9IGlteF9wY2llX2hvc3RfaW5pdCwKPiArCS5kZWluaXQgPSBpbXhfcGNpZV9o b3N0X2V4aXQsCj4gIH07Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGR3X3BjaWVfb3BzIGR3 X3BjaWVfb3BzID0gewo+IC0JLnN0YXJ0X2xpbmsgPSBpbXg2X3BjaWVfc3RhcnRfbGluaywKPiAt CS5zdG9wX2xpbmsgPSBpbXg2X3BjaWVfc3RvcF9saW5rLAo+ICsJLnN0YXJ0X2xpbmsgPSBpbXhf cGNpZV9zdGFydF9saW5rLAo+ICsJLnN0b3BfbGluayA9IGlteF9wY2llX3N0b3BfbGluaywKPiAg fTsKPiAgCj4gLXN0YXRpYyB2b2lkIGlteDZfcGNpZV9lcF9pbml0KHN0cnVjdCBkd19wY2llX2Vw ICplcCkKPiArc3RhdGljIHZvaWQgaW14X3BjaWVfZXBfaW5pdChzdHJ1Y3QgZHdfcGNpZV9lcCAq ZXApCj4gIHsKPiAgCWVudW0gcGNpX2Jhcm5vIGJhcjsKPiAgCXN0cnVjdCBkd19wY2llICpwY2kg PSB0b19kd19wY2llX2Zyb21fZXAoZXApOwo+IEBAIC0xMDE4LDcgKzEwMTgsNyBAQCBzdGF0aWMg dm9pZCBpbXg2X3BjaWVfZXBfaW5pdChzdHJ1Y3QgZHdfcGNpZV9lcCAqZXApCj4gIAkJZHdfcGNp ZV9lcF9yZXNldF9iYXIocGNpLCBiYXIpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGlteDZfcGNp ZV9lcF9yYWlzZV9pcnEoc3RydWN0IGR3X3BjaWVfZXAgKmVwLCB1OCBmdW5jX25vLAo+ICtzdGF0 aWMgaW50IGlteF9wY2llX2VwX3JhaXNlX2lycShzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAsIHU4IGZ1 bmNfbm8sCj4gIAkJCQkgIHVuc2lnbmVkIGludCB0eXBlLCB1MTYgaW50ZXJydXB0X251bSkKPiAg ewo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9lcChlcCk7Cj4gQEAg LTEwNjUsMzUgKzEwNjUsMzUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXBjX2ZlYXR1cmVz IGlteDk1X3BjaWVfZXBjX2ZlYXR1cmVzID0gewo+ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBwY2lfZXBjX2ZlYXR1cmVzKgo+IC1pbXg2X3BjaWVfZXBfZ2V0X2ZlYXR1cmVzKHN0cnVj dCBkd19wY2llX2VwICplcCkKPiAraW14X3BjaWVfZXBfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBkd19w Y2llX2VwICplcCkKPiAgewo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJv bV9lcChlcCk7Cj4gLQlzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUgPSB0b19pbXg2X3BjaWUo cGNpKTsKPiArCXN0cnVjdCBpbXhfcGNpZSAqaW14X3BjaWUgPSB0b19pbXhfcGNpZShwY2kpOwo+ ICAKPiAtCXJldHVybiBpbXg2X3BjaWUtPmRydmRhdGEtPmVwY19mZWF0dXJlczsKPiArCXJldHVy biBpbXhfcGNpZS0+ZHJ2ZGF0YS0+ZXBjX2ZlYXR1cmVzOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGR3X3BjaWVfZXBfb3BzIHBjaWVfZXBfb3BzID0gewo+IC0JLmluaXQgPSBpbXg2 X3BjaWVfZXBfaW5pdCwKPiAtCS5yYWlzZV9pcnEgPSBpbXg2X3BjaWVfZXBfcmFpc2VfaXJxLAo+ IC0JLmdldF9mZWF0dXJlcyA9IGlteDZfcGNpZV9lcF9nZXRfZmVhdHVyZXMsCj4gKwkuaW5pdCA9 IGlteF9wY2llX2VwX2luaXQsCj4gKwkucmFpc2VfaXJxID0gaW14X3BjaWVfZXBfcmFpc2VfaXJx LAo+ICsJLmdldF9mZWF0dXJlcyA9IGlteF9wY2llX2VwX2dldF9mZWF0dXJlcywKPiAgfTsKPiAg Cj4gLXN0YXRpYyBpbnQgaW14Nl9hZGRfcGNpZV9lcChzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3Bj aWUsCj4gK3N0YXRpYyBpbnQgaW14X2FkZF9wY2llX2VwKHN0cnVjdCBpbXhfcGNpZSAqaW14X3Bj aWUsCj4gIAkJCSAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIHsKPiAgCWludCBy ZXQ7Cj4gIAl1bnNpZ25lZCBpbnQgcGNpZV9kYmkyX29mZnNldDsKPiAgCXN0cnVjdCBkd19wY2ll X2VwICplcDsKPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsKPiArCXN0 cnVjdCBkd19wY2llICpwY2kgPSBpbXhfcGNpZS0+cGNpOwo+ICAJc3RydWN0IGR3X3BjaWVfcnAg KnBwID0gJnBjaS0+cHA7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsKPiAgCj4g LQlpbXg2X3BjaWVfaG9zdF9pbml0KHBwKTsKPiArCWlteF9wY2llX2hvc3RfaW5pdChwcCk7Cj4g IAllcCA9ICZwY2ktPmVwOwo+ICAJZXAtPm9wcyA9ICZwY2llX2VwX29wczsKPiAgCj4gLQlzd2l0 Y2ggKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgewo+ICsJc3dpdGNoIChpbXhfcGNpZS0+ ZHJ2ZGF0YS0+dmFyaWFudCkgewo+ICAJY2FzZSBJTVg4TVFfRVA6Cj4gIAljYXNlIElNWDhNTV9F UDoKPiAgCWNhc2UgSU1YOE1QX0VQOgo+IEBAIC0xMTE1LDEwICsxMTE1LDEwIEBAIHN0YXRpYyBp bnQgaW14Nl9hZGRfcGNpZV9lcChzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsCj4gIAlpZiAo ZGV2aWNlX3Byb3BlcnR5X21hdGNoX3N0cmluZyhkZXYsICJyZWctbmFtZXMiLCAiZGJpMiIpID49 IDApCj4gIAkJcGNpLT5kYmlfYmFzZTIgPSBOVUxMOwo+ICAKPiAtCWlmIChpbXg2X2NoZWNrX2Zs YWcoaW14Nl9wY2llLCBJTVg2X1BDSUVfRkxBR19TVVBQT1JUXzY0QklUKSkKPiArCWlmIChpbXhf Y2hlY2tfZmxhZyhpbXhfcGNpZSwgSU1YX1BDSUVfRkxBR19TVVBQT1JUXzY0QklUKSkKPiAgCQlk bWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRldiwgRE1BX0JJVF9NQVNLKDY0KSk7Cj4gIAo+IC0J ZXAtPnBhZ2Vfc2l6ZSA9IGlteDZfcGNpZS0+ZHJ2ZGF0YS0+ZXBjX2ZlYXR1cmVzLT5hbGlnbjsK PiArCWVwLT5wYWdlX3NpemUgPSBpbXhfcGNpZS0+ZHJ2ZGF0YS0+ZXBjX2ZlYXR1cmVzLT5hbGln bjsKPiAgCj4gIAlyZXQgPSBkd19wY2llX2VwX2luaXQoZXApOwo+ICAJaWYgKHJldCkgewo+IEBA IC0xMTI2LDMwICsxMTI2LDMwIEBAIHN0YXRpYyBpbnQgaW14Nl9hZGRfcGNpZV9lcChzdHJ1Y3Qg aW14Nl9wY2llICppbXg2X3BjaWUsCj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCS8qIFN0YXJ0 IExUU1NNLiAqLwo+IC0JaW14Nl9wY2llX2x0c3NtX2VuYWJsZShkZXYpOwo+ICsJaW14X3BjaWVf bHRzc21fZW5hYmxlKGRldik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIGlteDZfcGNpZV9wbV90dXJub2ZmKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAr c3RhdGljIHZvaWQgaW14X3BjaWVfcG1fdHVybm9mZihzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2ll KQo+ICB7Cj4gLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpbXg2X3BjaWUtPnBjaS0+ZGV2Owo+ICsJ c3RydWN0IGRldmljZSAqZGV2ID0gaW14X3BjaWUtPnBjaS0+ZGV2Owo+ICAKPiAgCS8qIFNvbWUg dmFyaWFudHMgaGF2ZSBhIHR1cm5vZmYgcmVzZXQgaW4gRFQgKi8KPiAtCWlmIChpbXg2X3BjaWUt PnR1cm5vZmZfcmVzZXQpIHsKPiAtCQlyZXNldF9jb250cm9sX2Fzc2VydChpbXg2X3BjaWUtPnR1 cm5vZmZfcmVzZXQpOwo+IC0JCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaW14Nl9wY2llLT50dXJu b2ZmX3Jlc2V0KTsKPiArCWlmIChpbXhfcGNpZS0+dHVybm9mZl9yZXNldCkgewo+ICsJCXJlc2V0 X2NvbnRyb2xfYXNzZXJ0KGlteF9wY2llLT50dXJub2ZmX3Jlc2V0KTsKPiArCQlyZXNldF9jb250 cm9sX2RlYXNzZXJ0KGlteF9wY2llLT50dXJub2ZmX3Jlc2V0KTsKPiAgCQlnb3RvIHBtX3R1cm5v ZmZfc2xlZXA7Cj4gIAl9Cj4gIAo+ICAJLyogT3RoZXJzIHBva2UgZGlyZWN0bHkgYXQgSU9NVVhD IHJlZ2lzdGVycyAqLwo+IC0Jc3dpdGNoIChpbXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsK PiArCXN3aXRjaCAoaW14X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiAgCWNhc2UgSU1YNlNY Ogo+ICAJY2FzZSBJTVg2UVA6Cj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9t dXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+ aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICAJCQkJSU1YNlNYX0dQUjEyX1BDSUVfUE1fVFVS Tl9PRkYsCj4gIAkJCQlJTVg2U1hfR1BSMTJfUENJRV9QTV9UVVJOX09GRik7Cj4gLQkJcmVnbWFw X3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICsJCXJl Z21hcF91cGRhdGVfYml0cyhpbXhfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICAJ CQkJSU1YNlNYX0dQUjEyX1BDSUVfUE1fVFVSTl9PRkYsIDApOwo+ICAJCWJyZWFrOwo+ICAJZGVm YXVsdDoKPiBAQCAtMTE2OCw3MyArMTE2OCw3MyBAQCBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfcG1f dHVybm9mZihzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gIAl1c2xlZXBfcmFuZ2UoMTAw MCwgMTAwMDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbXg2X3BjaWVfbXNpX3NhdmVfcmVz dG9yZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsIGJvb2wgc2F2ZSkKPiArc3RhdGljIHZv aWQgaW14X3BjaWVfbXNpX3NhdmVfcmVzdG9yZShzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llLCBi b29sIHNhdmUpCj4gIHsKPiAgCXU4IG9mZnNldDsKPiAgCXUxNiB2YWw7Cj4gLQlzdHJ1Y3QgZHdf cGNpZSAqcGNpID0gaW14Nl9wY2llLT5wY2k7Cj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gaW14 X3BjaWUtPnBjaTsKPiAgCj4gIAlpZiAocGNpX21zaV9lbmFibGVkKCkpIHsKPiAgCQlvZmZzZXQg PSBkd19wY2llX2ZpbmRfY2FwYWJpbGl0eShwY2ksIFBDSV9DQVBfSURfTVNJKTsKPiAgCQlpZiAo c2F2ZSkgewo+ICAJCQl2YWwgPSBkd19wY2llX3JlYWR3X2RiaShwY2ksIG9mZnNldCArIFBDSV9N U0lfRkxBR1MpOwo+IC0JCQlpbXg2X3BjaWUtPm1zaV9jdHJsID0gdmFsOwo+ICsJCQlpbXhfcGNp ZS0+bXNpX2N0cmwgPSB2YWw7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJZHdfcGNpZV9kYmlfcm9fd3Jf ZW4ocGNpKTsKPiAtCQkJdmFsID0gaW14Nl9wY2llLT5tc2lfY3RybDsKPiArCQkJdmFsID0gaW14 X3BjaWUtPm1zaV9jdHJsOwo+ICAJCQlkd19wY2llX3dyaXRld19kYmkocGNpLCBvZmZzZXQgKyBQ Q0lfTVNJX0ZMQUdTLCB2YWwpOwo+ICAJCQlkd19wY2llX2RiaV9yb193cl9kaXMocGNpKTsKPiAg CQl9Cj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgaW14Nl9wY2llX3N1c3BlbmRfbm9pcnEo c3RydWN0IGRldmljZSAqZGV2KQo+ICtzdGF0aWMgaW50IGlteF9wY2llX3N1c3BlbmRfbm9pcnEo c3RydWN0IGRldmljZSAqZGV2KQo+ICB7Cj4gLQlzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiAtCXN0cnVjdCBkd19wY2llX3JwICpwcCA9ICZpbXg2 X3BjaWUtPnBjaS0+cHA7Cj4gKwlzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llID0gZGV2X2dldF9k cnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgZHdfcGNpZV9ycCAqcHAgPSAmaW14X3BjaWUtPnBjaS0+ cHA7Cj4gIAo+IC0JaWYgKCEoaW14Nl9wY2llLT5kcnZkYXRhLT5mbGFncyAmIElNWDZfUENJRV9G TEFHX1NVUFBPUlRTX1NVU1BFTkQpKQo+ICsJaWYgKCEoaW14X3BjaWUtPmRydmRhdGEtPmZsYWdz ICYgSU1YX1BDSUVfRkxBR19TVVBQT1JUU19TVVNQRU5EKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4g LQlpbXg2X3BjaWVfbXNpX3NhdmVfcmVzdG9yZShpbXg2X3BjaWUsIHRydWUpOwo+IC0JaW14Nl9w Y2llX3BtX3R1cm5vZmYoaW14Nl9wY2llKTsKPiAtCWlteDZfcGNpZV9zdG9wX2xpbmsoaW14Nl9w Y2llLT5wY2kpOwo+IC0JaW14Nl9wY2llX2hvc3RfZXhpdChwcCk7Cj4gKwlpbXhfcGNpZV9tc2lf c2F2ZV9yZXN0b3JlKGlteF9wY2llLCB0cnVlKTsKPiArCWlteF9wY2llX3BtX3R1cm5vZmYoaW14 X3BjaWUpOwo+ICsJaW14X3BjaWVfc3RvcF9saW5rKGlteF9wY2llLT5wY2kpOwo+ICsJaW14X3Bj aWVfaG9zdF9leGl0KHBwKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGlu dCBpbXg2X3BjaWVfcmVzdW1lX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldikKPiArc3RhdGljIGlu dCBpbXhfcGNpZV9yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KQo+ICB7Cj4gIAlpbnQg cmV0Owo+IC0Jc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gLQlzdHJ1Y3QgZHdfcGNpZV9ycCAqcHAgPSAmaW14Nl9wY2llLT5wY2ktPnBwOwo+ICsJ c3RydWN0IGlteF9wY2llICppbXhfcGNpZSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3Ry dWN0IGR3X3BjaWVfcnAgKnBwID0gJmlteF9wY2llLT5wY2ktPnBwOwo+ICAKPiAtCWlmICghKGlt eDZfcGNpZS0+ZHJ2ZGF0YS0+ZmxhZ3MgJiBJTVg2X1BDSUVfRkxBR19TVVBQT1JUU19TVVNQRU5E KSkKPiArCWlmICghKGlteF9wY2llLT5kcnZkYXRhLT5mbGFncyAmIElNWF9QQ0lFX0ZMQUdfU1VQ UE9SVFNfU1VTUEVORCkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JcmV0ID0gaW14Nl9wY2llX2hv c3RfaW5pdChwcCk7Cj4gKwlyZXQgPSBpbXhfcGNpZV9ob3N0X2luaXQocHApOwo+ICAJaWYgKHJl dCkKPiAgCQlyZXR1cm4gcmV0Owo+IC0JaW14Nl9wY2llX21zaV9zYXZlX3Jlc3RvcmUoaW14Nl9w Y2llLCBmYWxzZSk7Cj4gKwlpbXhfcGNpZV9tc2lfc2F2ZV9yZXN0b3JlKGlteF9wY2llLCBmYWxz ZSk7Cj4gIAlkd19wY2llX3NldHVwX3JjKHBwKTsKPiAgCj4gLQlpZiAoaW14Nl9wY2llLT5saW5r X2lzX3VwKQo+IC0JCWlteDZfcGNpZV9zdGFydF9saW5rKGlteDZfcGNpZS0+cGNpKTsKPiArCWlm IChpbXhfcGNpZS0+bGlua19pc191cCkKPiArCQlpbXhfcGNpZV9zdGFydF9saW5rKGlteF9wY2ll LT5wY2kpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IGRldl9wbV9vcHMgaW14Nl9wY2llX3BtX29wcyA9IHsKPiAtCU5PSVJRX1NZU1RFTV9TTEVFUF9Q TV9PUFMoaW14Nl9wY2llX3N1c3BlbmRfbm9pcnEsCj4gLQkJCQkgIGlteDZfcGNpZV9yZXN1bWVf bm9pcnEpCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBpbXhfcGNpZV9wbV9vcHMg PSB7Cj4gKwlOT0lSUV9TWVNURU1fU0xFRVBfUE1fT1BTKGlteF9wY2llX3N1c3BlbmRfbm9pcnEs Cj4gKwkJCQkgIGlteF9wY2llX3Jlc3VtZV9ub2lycSkKPiAgfTsKPiAgCj4gLXN0YXRpYyBpbnQg aW14Nl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3N0YXRpYyBp bnQgaW14X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJ c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAgCXN0cnVjdCBkd19wY2llICpwY2k7 Cj4gLQlzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWU7Cj4gKwlzdHJ1Y3QgaW14X3BjaWUgKmlt eF9wY2llOwo+ICAJc3RydWN0IGRldmljZV9ub2RlICpucDsKPiAgCXN0cnVjdCByZXNvdXJjZSAq ZGJpX2Jhc2U7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBkZXYtPm9mX25vZGU7Cj4g QEAgLTEyNDIsOCArMTI0Miw4IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAl1MTYgdmFsOwo+ICAJaW50IGk7Cj4gIAo+IC0JaW14 Nl9wY2llID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbXg2X3BjaWUpLCBHRlBfS0VSTkVM KTsKPiAtCWlmICghaW14Nl9wY2llKQo+ICsJaW14X3BjaWUgPSBkZXZtX2t6YWxsb2MoZGV2LCBz aXplb2YoKmlteF9wY2llKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWlteF9wY2llKQo+ICAJCXJl dHVybiAtRU5PTUVNOwo+ICAKPiAgCXBjaSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcGNp KSwgR0ZQX0tFUk5FTCk7Cj4gQEAgLTEyNTIsMTAgKzEyNTIsMTAgQEAgc3RhdGljIGludCBpbXg2 X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCj4gIAlwY2ktPmRl diA9IGRldjsKPiAgCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOwo+IC0JcGNpLT5wcC5vcHMgPSAm aW14Nl9wY2llX2hvc3Rfb3BzOwo+ICsJcGNpLT5wcC5vcHMgPSAmaW14X3BjaWVfaG9zdF9vcHM7 Cj4gIAo+IC0JaW14Nl9wY2llLT5wY2kgPSBwY2k7Cj4gLQlpbXg2X3BjaWUtPmRydmRhdGEgPSBv Zl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKPiArCWlteF9wY2llLT5wY2kgPSBwY2k7Cj4g KwlpbXhfcGNpZS0+ZHJ2ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+ICAK PiAgCS8qIEZpbmQgdGhlIFBIWSBpZiBvbmUgaXMgZGVmaW5lZCwgb25seSBpbXg3ZCB1c2VzIGl0 ICovCj4gIAlucCA9IG9mX3BhcnNlX3BoYW5kbGUobm9kZSwgImZzbCxpbXg3ZC1wY2llLXBoeSIs IDApOwo+IEBAIC0xMjY3LDkgKzEyNjcsOSBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCQlkZXZfZXJyKGRldiwgIlVuYWJsZSB0 byBtYXAgUENJZSBQSFlcbiIpOwo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiAtCQlpbXg2X3Bj aWUtPnBoeV9iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgJnJlcyk7Cj4gLQkJaWYg KElTX0VSUihpbXg2X3BjaWUtPnBoeV9iYXNlKSkKPiAtCQkJcmV0dXJuIFBUUl9FUlIoaW14Nl9w Y2llLT5waHlfYmFzZSk7Cj4gKwkJaW14X3BjaWUtPnBoeV9iYXNlID0gZGV2bV9pb3JlbWFwX3Jl c291cmNlKGRldiwgJnJlcyk7Cj4gKwkJaWYgKElTX0VSUihpbXhfcGNpZS0+cGh5X2Jhc2UpKQo+ ICsJCQlyZXR1cm4gUFRSX0VSUihpbXhfcGNpZS0+cGh5X2Jhc2UpOwo+ICAJfQo+ICAKPiAgCXBj aS0+ZGJpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2 LCAwLCAmZGJpX2Jhc2UpOwo+IEBAIC0xMjc3LDEyICsxMjc3LDEyIEBAIHN0YXRpYyBpbnQgaW14 Nl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJcmV0dXJuIFBU Ul9FUlIocGNpLT5kYmlfYmFzZSk7Cj4gIAo+ICAJLyogRmV0Y2ggR1BJT3MgKi8KPiAtCWlteDZf cGNpZS0+cmVzZXRfZ3BpbyA9IG9mX2dldF9uYW1lZF9ncGlvKG5vZGUsICJyZXNldC1ncGlvIiwg MCk7Cj4gLQlpbXg2X3BjaWUtPmdwaW9fYWN0aXZlX2hpZ2ggPSBvZl9wcm9wZXJ0eV9yZWFkX2Jv b2wobm9kZSwKPiArCWlteF9wY2llLT5yZXNldF9ncGlvID0gb2ZfZ2V0X25hbWVkX2dwaW8obm9k ZSwgInJlc2V0LWdwaW8iLCAwKTsKPiArCWlteF9wY2llLT5ncGlvX2FjdGl2ZV9oaWdoID0gb2Zf cHJvcGVydHlfcmVhZF9ib29sKG5vZGUsCj4gIAkJCQkJCSJyZXNldC1ncGlvLWFjdGl2ZS1oaWdo Iik7Cj4gLQlpZiAoZ3Bpb19pc192YWxpZChpbXg2X3BjaWUtPnJlc2V0X2dwaW8pKSB7Cj4gLQkJ cmV0ID0gZGV2bV9ncGlvX3JlcXVlc3Rfb25lKGRldiwgaW14Nl9wY2llLT5yZXNldF9ncGlvLAo+ IC0JCQkJaW14Nl9wY2llLT5ncGlvX2FjdGl2ZV9oaWdoID8KPiArCWlmIChncGlvX2lzX3ZhbGlk KGlteF9wY2llLT5yZXNldF9ncGlvKSkgewo+ICsJCXJldCA9IGRldm1fZ3Bpb19yZXF1ZXN0X29u ZShkZXYsIGlteF9wY2llLT5yZXNldF9ncGlvLAo+ICsJCQkJaW14X3BjaWUtPmdwaW9fYWN0aXZl X2hpZ2ggPwo+ICAJCQkJCUdQSU9GX09VVF9JTklUX0hJR0ggOgo+ICAJCQkJCUdQSU9GX09VVF9J TklUX0xPVywKPiAgCQkJCSJQQ0llIHJlc2V0Iik7Cj4gQEAgLTEyOTAsNzAgKzEyOTAsNzAgQEAg c3RhdGljIGludCBpbXg2X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiAgCQkJZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZ2V0IHJlc2V0IGdwaW9cbiIpOwo+ICAJCQly ZXR1cm4gcmV0Owo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoaW14Nl9wY2llLT5yZXNldF9ncGlvID09 IC1FUFJPQkVfREVGRVIpIHsKPiAtCQlyZXR1cm4gaW14Nl9wY2llLT5yZXNldF9ncGlvOwo+ICsJ fSBlbHNlIGlmIChpbXhfcGNpZS0+cmVzZXRfZ3BpbyA9PSAtRVBST0JFX0RFRkVSKSB7Cj4gKwkJ cmV0dXJuIGlteF9wY2llLT5yZXNldF9ncGlvOwo+ICAJfQo+ICAKPiAtCWlmIChpbXg2X3BjaWUt PmRydmRhdGEtPmNsa3NfY250ID49IElNWDZfUENJRV9NQVhfQ0xLUykKPiArCWlmIChpbXhfcGNp ZS0+ZHJ2ZGF0YS0+Y2xrc19jbnQgPj0gSU1YX1BDSUVfTUFYX0NMS1MpCj4gIAkJcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCAtRU5PTUVNLCAiY2xrc19jbnQgaXMgdG9vIGJpZ1xuIik7Cj4gIAo+ IC0JZm9yIChpID0gMDsgaSA8IGlteDZfcGNpZS0+ZHJ2ZGF0YS0+Y2xrc19jbnQ7IGkrKykKPiAt CQlpbXg2X3BjaWUtPmNsa3NbaV0uaWQgPSBpbXg2X3BjaWUtPmRydmRhdGEtPmNsa19uYW1lc1tp XTsKPiArCWZvciAoaSA9IDA7IGkgPCBpbXhfcGNpZS0+ZHJ2ZGF0YS0+Y2xrc19jbnQ7IGkrKykK PiArCQlpbXhfcGNpZS0+Y2xrc1tpXS5pZCA9IGlteF9wY2llLT5kcnZkYXRhLT5jbGtfbmFtZXNb aV07Cj4gIAo+ICAJLyogRmV0Y2ggY2xvY2tzICovCj4gLQlyZXQgPSBkZXZtX2Nsa19idWxrX2dl dChkZXYsIGlteDZfcGNpZS0+ZHJ2ZGF0YS0+Y2xrc19jbnQsIGlteDZfcGNpZS0+Y2xrcyk7Cj4g KwlyZXQgPSBkZXZtX2Nsa19idWxrX2dldChkZXYsIGlteF9wY2llLT5kcnZkYXRhLT5jbGtzX2Nu dCwgaW14X3BjaWUtPmNsa3MpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAt CWlmIChpbXg2X2NoZWNrX2ZsYWcoaW14Nl9wY2llLCBJTVg2X1BDSUVfRkxBR19IQVNfUEhZRFJW KSkgewo+IC0JCWlteDZfcGNpZS0+cGh5ID0gZGV2bV9waHlfZ2V0KGRldiwgInBjaWUtcGh5Iik7 Cj4gLQkJaWYgKElTX0VSUihpbXg2X3BjaWUtPnBoeSkpCj4gLQkJCXJldHVybiBkZXZfZXJyX3By b2JlKGRldiwgUFRSX0VSUihpbXg2X3BjaWUtPnBoeSksCj4gKwlpZiAoaW14X2NoZWNrX2ZsYWco aW14X3BjaWUsIElNWF9QQ0lFX0ZMQUdfSEFTX1BIWURSVikpIHsKPiArCQlpbXhfcGNpZS0+cGh5 ID0gZGV2bV9waHlfZ2V0KGRldiwgInBjaWUtcGh5Iik7Cj4gKwkJaWYgKElTX0VSUihpbXhfcGNp ZS0+cGh5KSkKPiArCQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGlteF9wY2ll LT5waHkpLAo+ICAJCQkJCSAgICAgImZhaWxlZCB0byBnZXQgcGNpZSBwaHlcbiIpOwo+ICAJfQo+ ICAKPiAtCWlmIChpbXg2X2NoZWNrX2ZsYWcoaW14Nl9wY2llLCBJTVg2X1BDSUVfRkxBR19IQVNf QVBQX1JFU0VUKSkgewo+IC0JCWlteDZfcGNpZS0+YXBwc19yZXNldCA9IGRldm1fcmVzZXRfY29u dHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgImFwcHMiKTsKPiAtCQlpZiAoSVNfRVJSKGlteDZfcGNp ZS0+YXBwc19yZXNldCkpCj4gLQkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihp bXg2X3BjaWUtPmFwcHNfcmVzZXQpLAo+ICsJaWYgKGlteF9jaGVja19mbGFnKGlteF9wY2llLCBJ TVhfUENJRV9GTEFHX0hBU19BUFBfUkVTRVQpKSB7Cj4gKwkJaW14X3BjaWUtPmFwcHNfcmVzZXQg PSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsICJhcHBzIik7Cj4gKwkJaWYg KElTX0VSUihpbXhfcGNpZS0+YXBwc19yZXNldCkpCj4gKwkJCXJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgUFRSX0VSUihpbXhfcGNpZS0+YXBwc19yZXNldCksCj4gIAkJCQkJICAgICAiZmFpbGVk IHRvIGdldCBwY2llIGFwcHMgcmVzZXQgY29udHJvbFxuIik7Cj4gIAl9Cj4gIAo+IC0JaWYgKGlt eDZfY2hlY2tfZmxhZyhpbXg2X3BjaWUsIElNWDZfUENJRV9GTEFHX0hBU19QSFlfUkVTRVQpKSB7 Cj4gLQkJaW14Nl9wY2llLT5wY2llcGh5X3Jlc2V0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9l eGNsdXNpdmUoZGV2LCAicGNpZXBoeSIpOwo+IC0JCWlmIChJU19FUlIoaW14Nl9wY2llLT5wY2ll cGh5X3Jlc2V0KSkKPiAtCQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGlteDZf cGNpZS0+cGNpZXBoeV9yZXNldCksCj4gKwlpZiAoaW14X2NoZWNrX2ZsYWcoaW14X3BjaWUsIElN WF9QQ0lFX0ZMQUdfSEFTX1BIWV9SRVNFVCkpIHsKPiArCQlpbXhfcGNpZS0+cGNpZXBoeV9yZXNl dCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKGRldiwgInBjaWVwaHkiKTsKPiAr CQlpZiAoSVNfRVJSKGlteF9wY2llLT5wY2llcGh5X3Jlc2V0KSkKPiArCQkJcmV0dXJuIGRldl9l cnJfcHJvYmUoZGV2LCBQVFJfRVJSKGlteF9wY2llLT5wY2llcGh5X3Jlc2V0KSwKPiAgCQkJCQkg ICAgICJGYWlsZWQgdG8gZ2V0IFBDSUVQSFkgcmVzZXQgY29udHJvbFxuIik7Cj4gIAl9Cj4gIAo+ IC0Jc3dpdGNoIChpbXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiArCXN3aXRjaCAoaW14 X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiAgCWNhc2UgSU1YOE1ROgo+ICAJY2FzZSBJTVg4 TVFfRVA6Cj4gIAljYXNlIElNWDdEOgo+ICAJCWlmIChkYmlfYmFzZS0+c3RhcnQgPT0gSU1YOE1R X1BDSUUyX0JBU0VfQUREUikKPiAtCQkJaW14Nl9wY2llLT5jb250cm9sbGVyX2lkID0gMTsKPiAr CQkJaW14X3BjaWUtPmNvbnRyb2xsZXJfaWQgPSAxOwo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoK PiAgCQlicmVhazsKPiAgCX0KPiAgCj4gIAkvKiBHcmFiIHR1cm5vZmYgcmVzZXQgKi8KPiAtCWlt eDZfcGNpZS0+dHVybm9mZl9yZXNldCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfb3B0aW9uYWxf ZXhjbHVzaXZlKGRldiwgInR1cm5vZmYiKTsKPiAtCWlmIChJU19FUlIoaW14Nl9wY2llLT50dXJu b2ZmX3Jlc2V0KSkgewo+ICsJaW14X3BjaWUtPnR1cm5vZmZfcmVzZXQgPSBkZXZtX3Jlc2V0X2Nv bnRyb2xfZ2V0X29wdGlvbmFsX2V4Y2x1c2l2ZShkZXYsICJ0dXJub2ZmIik7Cj4gKwlpZiAoSVNf RVJSKGlteF9wY2llLT50dXJub2ZmX3Jlc2V0KSkgewo+ICAJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGdldCBUVVJOT0ZGIHJlc2V0IGNvbnRyb2xcbiIpOwo+IC0JCXJldHVybiBQVFJfRVJSKGlt eDZfcGNpZS0+dHVybm9mZl9yZXNldCk7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoaW14X3BjaWUtPnR1 cm5vZmZfcmVzZXQpOwo+ICAJfQo+ICAKPiAtCWlmIChpbXg2X3BjaWUtPmRydmRhdGEtPmdwcikg ewo+ICsJaWYgKGlteF9wY2llLT5kcnZkYXRhLT5ncHIpIHsKPiAgCS8qIEdyYWIgR1BSIGNvbmZp ZyByZWdpc3RlciByYW5nZSAqLwo+IC0JCWlteDZfcGNpZS0+aW9tdXhjX2dwciA9Cj4gLQkJCSBz eXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRpYmxlKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+Z3By KTsKPiAtCQlpZiAoSVNfRVJSKGlteDZfcGNpZS0+aW9tdXhjX2dwcikpCj4gLQkJCXJldHVybiBk ZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihpbXg2X3BjaWUtPmlvbXV4Y19ncHIpLAo+ICsJCWlt eF9wY2llLT5pb211eGNfZ3ByID0KPiArCQkJIHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X2NvbXBh dGlibGUoaW14X3BjaWUtPmRydmRhdGEtPmdwcik7Cj4gKwkJaWYgKElTX0VSUihpbXhfcGNpZS0+ aW9tdXhjX2dwcikpCj4gKwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihpbXhf cGNpZS0+aW9tdXhjX2dwciksCj4gIAkJCQkJICAgICAidW5hYmxlIHRvIGZpbmQgaW9tdXhjIHJl Z2lzdGVyc1xuIik7Cj4gIAl9Cj4gIAo+IC0JaWYgKGlteDZfY2hlY2tfZmxhZyhpbXg2X3BjaWUs IElNWDZfUENJRV9GTEFHX0hBU19TRVJERVMpKSB7Cj4gKwlpZiAoaW14X2NoZWNrX2ZsYWcoaW14 X3BjaWUsIElNWF9QQ0lFX0ZMQUdfSEFTX1NFUkRFUykpIHsKPiAgCQl2b2lkIF9faW9tZW0gKm9m ZiA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgImFwcCIpOwo+ ICAKPiAgCQlpZiAoSVNfRVJSKG9mZikpCj4gQEAgLTEzNjYsNTkgKzEzNjYsNTkgQEAgc3RhdGlj IGludCBpbXg2X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCQkJ LnJlZ19zdHJpZGUgPSA0LAo+ICAJCX07Cj4gIAo+IC0JCWlteDZfcGNpZS0+aW9tdXhjX2dwciA9 IGRldm1fcmVnbWFwX2luaXRfbW1pbyhkZXYsIG9mZiwgJnJlZ21hcF9jb25maWcpOwo+IC0JCWlm IChJU19FUlIoaW14Nl9wY2llLT5pb211eGNfZ3ByKSkKPiAtCQkJcmV0dXJuIGRldl9lcnJfcHJv YmUoZGV2LCBQVFJfRVJSKGlteDZfcGNpZS0+aW9tdXhjX2dwciksCj4gKwkJaW14X3BjaWUtPmlv bXV4Y19ncHIgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCBvZmYsICZyZWdtYXBfY29uZmln KTsKPiArCQlpZiAoSVNfRVJSKGlteF9wY2llLT5pb211eGNfZ3ByKSkKPiArCQkJcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGlteF9wY2llLT5pb211eGNfZ3ByKSwKPiAgCQkJCQkg ICAgICJ1bmFibGUgdG8gZmluZCBpb211eGMgcmVnaXN0ZXJzXG4iKTsKPiAgCX0KPiAgCj4gIAkv KiBHcmFiIFBDSWUgUEhZIFR4IFNldHRpbmdzICovCj4gIAlpZiAob2ZfcHJvcGVydHlfcmVhZF91 MzIobm9kZSwgImZzbCx0eC1kZWVtcGgtZ2VuMSIsCj4gLQkJCQkgJmlteDZfcGNpZS0+dHhfZGVl bXBoX2dlbjEpKQo+IC0JCWlteDZfcGNpZS0+dHhfZGVlbXBoX2dlbjEgPSAwOwo+ICsJCQkJICZp bXhfcGNpZS0+dHhfZGVlbXBoX2dlbjEpKQo+ICsJCWlteF9wY2llLT50eF9kZWVtcGhfZ2VuMSA9 IDA7Cj4gIAo+ICAJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJmc2wsdHgtZGVlbXBo LWdlbjItM3A1ZGIiLAo+IC0JCQkJICZpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4yXzNwNWRiKSkK PiAtCQlpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4yXzNwNWRiID0gMDsKPiArCQkJCSAmaW14X3Bj aWUtPnR4X2RlZW1waF9nZW4yXzNwNWRiKSkKPiArCQlpbXhfcGNpZS0+dHhfZGVlbXBoX2dlbjJf M3A1ZGIgPSAwOwo+ICAKPiAgCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAiZnNsLHR4 LWRlZW1waC1nZW4yLTZkYiIsCj4gLQkJCQkgJmlteDZfcGNpZS0+dHhfZGVlbXBoX2dlbjJfNmRi KSkKPiAtCQlpbXg2X3BjaWUtPnR4X2RlZW1waF9nZW4yXzZkYiA9IDIwOwo+ICsJCQkJICZpbXhf cGNpZS0+dHhfZGVlbXBoX2dlbjJfNmRiKSkKPiArCQlpbXhfcGNpZS0+dHhfZGVlbXBoX2dlbjJf NmRiID0gMjA7Cj4gIAo+ICAJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJmc2wsdHgt c3dpbmctZnVsbCIsCj4gLQkJCQkgJmlteDZfcGNpZS0+dHhfc3dpbmdfZnVsbCkpCj4gLQkJaW14 Nl9wY2llLT50eF9zd2luZ19mdWxsID0gMTI3Owo+ICsJCQkJICZpbXhfcGNpZS0+dHhfc3dpbmdf ZnVsbCkpCj4gKwkJaW14X3BjaWUtPnR4X3N3aW5nX2Z1bGwgPSAxMjc7Cj4gIAo+ICAJaWYgKG9m X3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJmc2wsdHgtc3dpbmctbG93IiwKPiAtCQkJCSAmaW14 Nl9wY2llLT50eF9zd2luZ19sb3cpKQo+IC0JCWlteDZfcGNpZS0+dHhfc3dpbmdfbG93ID0gMTI3 Owo+ICsJCQkJICZpbXhfcGNpZS0+dHhfc3dpbmdfbG93KSkKPiArCQlpbXhfcGNpZS0+dHhfc3dp bmdfbG93ID0gMTI3Owo+ICAKPiAgCS8qIExpbWl0IGxpbmsgc3BlZWQgKi8KPiAgCXBjaS0+bGlu a19nZW4gPSAxOwo+ICAJb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgImZzbCxtYXgtbGluay1z cGVlZCIsICZwY2ktPmxpbmtfZ2VuKTsKPiAgCj4gLQlpbXg2X3BjaWUtPnZwY2llID0gZGV2bV9y ZWd1bGF0b3JfZ2V0X29wdGlvbmFsKCZwZGV2LT5kZXYsICJ2cGNpZSIpOwo+IC0JaWYgKElTX0VS UihpbXg2X3BjaWUtPnZwY2llKSkgewo+IC0JCWlmIChQVFJfRVJSKGlteDZfcGNpZS0+dnBjaWUp ICE9IC1FTk9ERVYpCj4gLQkJCXJldHVybiBQVFJfRVJSKGlteDZfcGNpZS0+dnBjaWUpOwo+IC0J CWlteDZfcGNpZS0+dnBjaWUgPSBOVUxMOwo+ICsJaW14X3BjaWUtPnZwY2llID0gZGV2bV9yZWd1 bGF0b3JfZ2V0X29wdGlvbmFsKCZwZGV2LT5kZXYsICJ2cGNpZSIpOwo+ICsJaWYgKElTX0VSUihp bXhfcGNpZS0+dnBjaWUpKSB7Cj4gKwkJaWYgKFBUUl9FUlIoaW14X3BjaWUtPnZwY2llKSAhPSAt RU5PREVWKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihpbXhfcGNpZS0+dnBjaWUpOwo+ICsJCWlteF9w Y2llLT52cGNpZSA9IE5VTEw7Cj4gIAl9Cj4gIAo+IC0JaW14Nl9wY2llLT52cGggPSBkZXZtX3Jl Z3VsYXRvcl9nZXRfb3B0aW9uYWwoJnBkZXYtPmRldiwgInZwaCIpOwo+IC0JaWYgKElTX0VSUihp bXg2X3BjaWUtPnZwaCkpIHsKPiAtCQlpZiAoUFRSX0VSUihpbXg2X3BjaWUtPnZwaCkgIT0gLUVO T0RFVikKPiAtCQkJcmV0dXJuIFBUUl9FUlIoaW14Nl9wY2llLT52cGgpOwo+IC0JCWlteDZfcGNp ZS0+dnBoID0gTlVMTDsKPiArCWlteF9wY2llLT52cGggPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0 aW9uYWwoJnBkZXYtPmRldiwgInZwaCIpOwo+ICsJaWYgKElTX0VSUihpbXhfcGNpZS0+dnBoKSkg ewo+ICsJCWlmIChQVFJfRVJSKGlteF9wY2llLT52cGgpICE9IC1FTk9ERVYpCj4gKwkJCXJldHVy biBQVFJfRVJSKGlteF9wY2llLT52cGgpOwo+ICsJCWlteF9wY2llLT52cGggPSBOVUxMOwo+ICAJ fQo+ICAKPiAtCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGlteDZfcGNpZSk7Cj4gKwlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBpbXhfcGNpZSk7Cj4gIAo+IC0JcmV0ID0gaW14Nl9wY2ll X2F0dGFjaF9wZChkZXYpOwo+ICsJcmV0ID0gaW14X3BjaWVfYXR0YWNoX3BkKGRldik7Cj4gIAlp ZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+ bW9kZSA9PSBEV19QQ0lFX0VQX1RZUEUpIHsKPiAtCQlyZXQgPSBpbXg2X2FkZF9wY2llX2VwKGlt eDZfcGNpZSwgcGRldik7Cj4gKwlpZiAoaW14X3BjaWUtPmRydmRhdGEtPm1vZGUgPT0gRFdfUENJ RV9FUF9UWVBFKSB7Cj4gKwkJcmV0ID0gaW14X2FkZF9wY2llX2VwKGlteF9wY2llLCBwZGV2KTsK PiAgCQlpZiAocmV0IDwgMCkKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0gZWxzZSB7Cj4gQEAgLTE0 MzgsMTIgKzE0MzgsMTIgQEAgc3RhdGljIGludCBpbXg2X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBp bXg2X3BjaWVfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArc3RhdGlj IHZvaWQgaW14X3BjaWVfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAg ewo+IC0Jc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7Cj4gKwlzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llID0gcGxhdGZvcm1fZ2V0X2RydmRh dGEocGRldik7Cj4gIAo+ICAJLyogYnJpbmcgZG93biBsaW5rLCBzbyBib290bG9hZGVyIGdldHMg Y2xlYW4gc3RhdGUgaW4gY2FzZSBvZiByZWJvb3QgKi8KPiAtCWlteDZfcGNpZV9hc3NlcnRfY29y ZV9yZXNldChpbXg2X3BjaWUpOwo+ICsJaW14X3BjaWVfYXNzZXJ0X2NvcmVfcmVzZXQoaW14X3Bj aWUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGlteDZxX2Nsa3NbXSA9 IHsicGNpZV9idXMiLCAicGNpZSIsICJwY2llX3BoeSJ9Owo+IEBAIC0xNDUxLDExICsxNDUxLDEx IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaW14OG1tX2Nsa3NbXSA9IHsicGNpZV9idXMi LCAicGNpZSIsICJwY2llX2F1eCJ9Owo+ICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGlteDht cV9jbGtzW10gPSB7InBjaWVfYnVzIiwgInBjaWUiLCAicGNpZV9waHkiLCAicGNpZV9hdXgifTsK PiAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBpbXg2c3hfY2xrc1tdID0geyJwY2llX2J1cyIs ICJwY2llIiwgInBjaWVfcGh5IiwgInBjaWVfaW5ib3VuZF9heGkifTsKPiAgCj4gLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGlteF9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICAJW0lNWDZRXSA9IHsK PiAgCQkudmFyaWFudCA9IElNWDZRLAo+IC0JCS5mbGFncyA9IElNWDZfUENJRV9GTEFHX0lNWDZf UEhZIHwKPiAtCQkJIElNWDZfUENJRV9GTEFHX0lNWDZfU1BFRURfQ0hBTkdFLAo+ICsJCS5mbGFn cyA9IElNWF9QQ0lFX0ZMQUdfSU1YX1BIWSB8Cj4gKwkJCSBJTVhfUENJRV9GTEFHX0lNWF9TUEVF RF9DSEFOR0UsCj4gIAkJLmRiaV9sZW5ndGggPSAweDIwMCwKPiAgCQkuZ3ByID0gImZzbCxpbXg2 cS1pb211eGMtZ3ByIiwKPiAgCQkuY2xrX25hbWVzID0gaW14NnFfY2xrcywKPiBAQCAtMTQ2NCwx MyArMTQ2NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhIGRydmRh dGFbXSA9IHsKPiAgCQkubHRzc21fbWFzayA9IElNWDZRX0dQUjEyX1BDSUVfQ1RMXzIsCj4gIAkJ Lm1vZGVfb2ZmWzBdID0gSU9NVVhDX0dQUjEyLAo+ICAJCS5tb2RlX21hc2tbMF0gPSBJTVg2UV9H UFIxMl9ERVZJQ0VfVFlQRSwKPiAtCQkuaW5pdF9waHkgPSBpbXg2X3BjaWVfaW5pdF9waHksCj4g KwkJLmluaXRfcGh5ID0gaW14X3BjaWVfaW5pdF9waHksCj4gIAl9LAo+ICAJW0lNWDZTWF0gPSB7 Cj4gIAkJLnZhcmlhbnQgPSBJTVg2U1gsCj4gLQkJLmZsYWdzID0gSU1YNl9QQ0lFX0ZMQUdfSU1Y Nl9QSFkgfAo+IC0JCQkgSU1YNl9QQ0lFX0ZMQUdfSU1YNl9TUEVFRF9DSEFOR0UgfAo+IC0JCQkg SU1YNl9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VTUEVORCwKPiArCQkuZmxhZ3MgPSBJTVhfUENJRV9G TEFHX0lNWF9QSFkgfAo+ICsJCQkgSU1YX1BDSUVfRkxBR19JTVhfU1BFRURfQ0hBTkdFIHwKPiAr CQkJIElNWF9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VTUEVORCwKPiAgCQkuZ3ByID0gImZzbCxpbXg2 cS1pb211eGMtZ3ByIiwKPiAgCQkuY2xrX25hbWVzID0gaW14NnN4X2Nsa3MsCj4gIAkJLmNsa3Nf Y250ID0gQVJSQVlfU0laRShpbXg2c3hfY2xrcyksCj4gQEAgLTE0ODIsOSArMTQ4Miw5IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICAJfSwK PiAgCVtJTVg2UVBdID0gewo+ICAJCS52YXJpYW50ID0gSU1YNlFQLAo+IC0JCS5mbGFncyA9IElN WDZfUENJRV9GTEFHX0lNWDZfUEhZIHwKPiAtCQkJIElNWDZfUENJRV9GTEFHX0lNWDZfU1BFRURf Q0hBTkdFIHwKPiAtCQkJIElNWDZfUENJRV9GTEFHX1NVUFBPUlRTX1NVU1BFTkQsCj4gKwkJLmZs YWdzID0gSU1YX1BDSUVfRkxBR19JTVhfUEhZIHwKPiArCQkJIElNWF9QQ0lFX0ZMQUdfSU1YX1NQ RUVEX0NIQU5HRSB8Cj4gKwkJCSBJTVhfUENJRV9GTEFHX1NVUFBPUlRTX1NVU1BFTkQsCj4gIAkJ LmRiaV9sZW5ndGggPSAweDIwMCwKPiAgCQkuZ3ByID0gImZzbCxpbXg2cS1pb211eGMtZ3ByIiwK PiAgCQkuY2xrX25hbWVzID0gaW14NnFfY2xrcywKPiBAQCAtMTQ5MywxMyArMTQ5MywxMyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHsKPiAgCQku bHRzc21fbWFzayA9IElNWDZRX0dQUjEyX1BDSUVfQ1RMXzIsCj4gIAkJLm1vZGVfb2ZmWzBdID0g SU9NVVhDX0dQUjEyLAo+ICAJCS5tb2RlX21hc2tbMF0gPSBJTVg2UV9HUFIxMl9ERVZJQ0VfVFlQ RSwKPiAtCQkuaW5pdF9waHkgPSBpbXg2X3BjaWVfaW5pdF9waHksCj4gKwkJLmluaXRfcGh5ID0g aW14X3BjaWVfaW5pdF9waHksCj4gIAl9LAo+ICAJW0lNWDdEXSA9IHsKPiAgCQkudmFyaWFudCA9 IElNWDdELAo+IC0JCS5mbGFncyA9IElNWDZfUENJRV9GTEFHX1NVUFBPUlRTX1NVU1BFTkQgfAo+ IC0JCQkgSU1YNl9QQ0lFX0ZMQUdfSEFTX0FQUF9SRVNFVCB8Cj4gLQkJCSBJTVg2X1BDSUVfRkxB R19IQVNfUEhZX1JFU0VULAo+ICsJCS5mbGFncyA9IElNWF9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VT UEVORCB8Cj4gKwkJCSBJTVhfUENJRV9GTEFHX0hBU19BUFBfUkVTRVQgfAo+ICsJCQkgSU1YX1BD SUVfRkxBR19IQVNfUEhZX1JFU0VULAo+ICAJCS5ncHIgPSAiZnNsLGlteDdkLWlvbXV4Yy1ncHIi LAo+ICAJCS5jbGtfbmFtZXMgPSBpbXg2cV9jbGtzLAo+ICAJCS5jbGtzX2NudCA9IEFSUkFZX1NJ WkUoaW14NnFfY2xrcyksCj4gQEAgLTE1MDksOCArMTUwOSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICAJfSwKPiAgCVtJTVg4TVFdID0g ewo+ICAJCS52YXJpYW50ID0gSU1YOE1RLAo+IC0JCS5mbGFncyA9IElNWDZfUENJRV9GTEFHX0hB U19BUFBfUkVTRVQgfAo+IC0JCQkgSU1YNl9QQ0lFX0ZMQUdfSEFTX1BIWV9SRVNFVCwKPiArCQku ZmxhZ3MgPSBJTVhfUENJRV9GTEFHX0hBU19BUFBfUkVTRVQgfAo+ICsJCQkgSU1YX1BDSUVfRkxB R19IQVNfUEhZX1JFU0VULAo+ICAJCS5ncHIgPSAiZnNsLGlteDhtcS1pb211eGMtZ3ByIiwKPiAg CQkuY2xrX25hbWVzID0gaW14OG1xX2Nsa3MsCj4gIAkJLmNsa3NfY250ID0gQVJSQVlfU0laRShp bXg4bXFfY2xrcyksCj4gQEAgLTE1MjIsOSArMTUyMiw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICAJfSwKPiAgCVtJTVg4TU1dID0gewo+ ICAJCS52YXJpYW50ID0gSU1YOE1NLAo+IC0JCS5mbGFncyA9IElNWDZfUENJRV9GTEFHX1NVUFBP UlRTX1NVU1BFTkQgfAo+IC0JCQkgSU1YNl9QQ0lFX0ZMQUdfSEFTX1BIWURSViB8Cj4gLQkJCSBJ TVg2X1BDSUVfRkxBR19IQVNfQVBQX1JFU0VULAo+ICsJCS5mbGFncyA9IElNWF9QQ0lFX0ZMQUdf U1VQUE9SVFNfU1VTUEVORCB8Cj4gKwkJCSBJTVhfUENJRV9GTEFHX0hBU19QSFlEUlYgfAo+ICsJ CQkgSU1YX1BDSUVfRkxBR19IQVNfQVBQX1JFU0VULAo+ICAJCS5ncHIgPSAiZnNsLGlteDhtbS1p b211eGMtZ3ByIiwKPiAgCQkuY2xrX25hbWVzID0gaW14OG1tX2Nsa3MsCj4gIAkJLmNsa3NfY250 ID0gQVJSQVlfU0laRShpbXg4bW1fY2xrcyksCj4gQEAgLTE1MzMsOSArMTUzMyw5IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0gewo+ICAJfSwKPiAg CVtJTVg4TVBdID0gewo+ICAJCS52YXJpYW50ID0gSU1YOE1QLAo+IC0JCS5mbGFncyA9IElNWDZf UENJRV9GTEFHX1NVUFBPUlRTX1NVU1BFTkQgfAo+IC0JCQkgSU1YNl9QQ0lFX0ZMQUdfSEFTX1BI WURSViB8Cj4gLQkJCSBJTVg2X1BDSUVfRkxBR19IQVNfQVBQX1JFU0VULAo+ICsJCS5mbGFncyA9 IElNWF9QQ0lFX0ZMQUdfU1VQUE9SVFNfU1VTUEVORCB8Cj4gKwkJCSBJTVhfUENJRV9GTEFHX0hB U19QSFlEUlYgfAo+ICsJCQkgSU1YX1BDSUVfRkxBR19IQVNfQVBQX1JFU0VULAo+ICAJCS5ncHIg PSAiZnNsLGlteDhtcC1pb211eGMtZ3ByIiwKPiAgCQkuY2xrX25hbWVzID0gaW14OG1tX2Nsa3Ms Cj4gIAkJLmNsa3NfY250ID0gQVJSQVlfU0laRShpbXg4bW1fY2xrcyksCj4gQEAgLTE1NDQsNyAr MTU0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW14Nl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtd ID0gewo+ICAJfSwKPiAgCVtJTVg5NV0gPSB7Cj4gIAkJLnZhcmlhbnQgPSBJTVg5NSwKPiAtCQku ZmxhZ3MgPSBJTVg2X1BDSUVfRkxBR19IQVNfU0VSREVTLAo+ICsJCS5mbGFncyA9IElNWF9QQ0lF X0ZMQUdfSEFTX1NFUkRFUywKPiAgCQkuY2xrX25hbWVzID0gaW14OG1xX2Nsa3MsCj4gIAkJLmNs a3NfY250ID0gQVJSQVlfU0laRShpbXg4bXFfY2xrcyksCj4gIAkJLmx0c3NtX29mZiA9IElNWDk1 X1BFMF9HRU5fQ1RSTF8zLAo+IEBAIC0xNTU1LDggKzE1NTUsOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGlteDZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHsKPiAgCX0sCj4gIAlbSU1YOE1RX0VQ XSA9IHsKPiAgCQkudmFyaWFudCA9IElNWDhNUV9FUCwKPiAtCQkuZmxhZ3MgPSBJTVg2X1BDSUVf RkxBR19IQVNfQVBQX1JFU0VUIHwKPiAtCQkJIElNWDZfUENJRV9GTEFHX0hBU19QSFlfUkVTRVQs Cj4gKwkJLmZsYWdzID0gSU1YX1BDSUVfRkxBR19IQVNfQVBQX1JFU0VUIHwKPiArCQkJIElNWF9Q Q0lFX0ZMQUdfSEFTX1BIWV9SRVNFVCwKPiAgCQkubW9kZSA9IERXX1BDSUVfRVBfVFlQRSwKPiAg CQkuZ3ByID0gImZzbCxpbXg4bXEtaW9tdXhjLWdwciIsCj4gIAkJLmNsa19uYW1lcyA9IGlteDht cV9jbGtzLAo+IEBAIC0xNTcwLDggKzE1NzAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlteDZf cGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHsKPiAgCX0sCj4gIAlbSU1YOE1NX0VQXSA9IHsKPiAg CQkudmFyaWFudCA9IElNWDhNTV9FUCwKPiAtCQkuZmxhZ3MgPSBJTVg2X1BDSUVfRkxBR19IQVNf QVBQX1JFU0VUIHwKPiAtCQkJIElNWDZfUENJRV9GTEFHX0hBU19QSFlEUlYsCj4gKwkJLmZsYWdz ID0gSU1YX1BDSUVfRkxBR19IQVNfQVBQX1JFU0VUIHwKPiArCQkJIElNWF9QQ0lFX0ZMQUdfSEFT X1BIWURSViwKPiAgCQkubW9kZSA9IERXX1BDSUVfRVBfVFlQRSwKPiAgCQkuZ3ByID0gImZzbCxp bXg4bW0taW9tdXhjLWdwciIsCj4gIAkJLmNsa19uYW1lcyA9IGlteDhtbV9jbGtzLAo+IEBAIC0x NTgyLDggKzE1ODIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhIGRy dmRhdGFbXSA9IHsKPiAgCX0sCj4gIAlbSU1YOE1QX0VQXSA9IHsKPiAgCQkudmFyaWFudCA9IElN WDhNUF9FUCwKPiAtCQkuZmxhZ3MgPSBJTVg2X1BDSUVfRkxBR19IQVNfQVBQX1JFU0VUIHwKPiAt CQkJIElNWDZfUENJRV9GTEFHX0hBU19QSFlEUlYsCj4gKwkJLmZsYWdzID0gSU1YX1BDSUVfRkxB R19IQVNfQVBQX1JFU0VUIHwKPiArCQkJIElNWF9QQ0lFX0ZMQUdfSEFTX1BIWURSViwKPiAgCQku bW9kZSA9IERXX1BDSUVfRVBfVFlQRSwKPiAgCQkuZ3ByID0gImZzbCxpbXg4bXAtaW9tdXhjLWdw ciIsCj4gIAkJLmNsa19uYW1lcyA9IGlteDhtbV9jbGtzLAo+IEBAIC0xNTk0LDggKzE1OTQsOCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHsKPiAg CX0sCj4gIAlbSU1YOTVfRVBdID0gewo+ICAJCS52YXJpYW50ID0gSU1YOTVfRVAsCj4gLQkJLmZs YWdzID0gSU1YNl9QQ0lFX0ZMQUdfSEFTX1NFUkRFUyB8Cj4gLQkJCSBJTVg2X1BDSUVfRkxBR19T VVBQT1JUXzY0QklULAo+ICsJCS5mbGFncyA9IElNWF9QQ0lFX0ZMQUdfSEFTX1NFUkRFUyB8Cj4g KwkJCSBJTVhfUENJRV9GTEFHX1NVUFBPUlRfNjRCSVQsCj4gIAkJLmNsa19uYW1lcyA9IGlteDht cV9jbGtzLAo+ICAJCS5jbGtzX2NudCA9IEFSUkFZX1NJWkUoaW14OG1xX2Nsa3MpLAo+ICAJCS5s dHNzbV9vZmYgPSBJTVg5NV9QRTBfR0VOX0NUUkxfMywKPiBAQCAtMTYwOCw3ICsxNjA4LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpbXg2X3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7Cj4gIAl9 LAo+ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14Nl9wY2ll X29mX21hdGNoW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteF9w Y2llX29mX21hdGNoW10gPSB7Cj4gIAl7IC5jb21wYXRpYmxlID0gImZzbCxpbXg2cS1wY2llIiwg IC5kYXRhID0gJmRydmRhdGFbSU1YNlFdLCAgfSwKPiAgCXsgLmNvbXBhdGlibGUgPSAiZnNsLGlt eDZzeC1wY2llIiwgLmRhdGEgPSAmZHJ2ZGF0YVtJTVg2U1hdLCB9LAo+ICAJeyAuY29tcGF0aWJs ZSA9ICJmc2wsaW14NnFwLXBjaWUiLCAuZGF0YSA9ICZkcnZkYXRhW0lNWDZRUF0sIH0sCj4gQEAg LTE2MjQsMTkgKzE2MjQsMTkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14 Nl9wY2llX29mX21hdGNoW10gPSB7Cj4gIAl7fSwKPiAgfTsKPiAgCj4gLXN0YXRpYyBzdHJ1Y3Qg cGxhdGZvcm1fZHJpdmVyIGlteDZfcGNpZV9kcml2ZXIgPSB7Cj4gK3N0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIGlteF9wY2llX2RyaXZlciA9IHsKPiAgCS5kcml2ZXIgPSB7Cj4gIAkJLm5h bWUJPSAiaW14NnEtcGNpZSIsCj4gLQkJLm9mX21hdGNoX3RhYmxlID0gaW14Nl9wY2llX29mX21h dGNoLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGlteF9wY2llX29mX21hdGNoLAo+ICAJCS5zdXBw cmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwKPiAtCQkucG0gPSAmaW14Nl9wY2llX3BtX29wcywKPiAr CQkucG0gPSAmaW14X3BjaWVfcG1fb3BzLAo+ICAJCS5wcm9iZV90eXBlID0gUFJPQkVfUFJFRkVS X0FTWU5DSFJPTk9VUywKPiAgCX0sCj4gLQkucHJvYmUgICAgPSBpbXg2X3BjaWVfcHJvYmUsCj4g LQkuc2h1dGRvd24gPSBpbXg2X3BjaWVfc2h1dGRvd24sCj4gKwkucHJvYmUgICAgPSBpbXhfcGNp ZV9wcm9iZSwKPiArCS5zaHV0ZG93biA9IGlteF9wY2llX3NodXRkb3duLAo+ICB9Owo+ICAKPiAt c3RhdGljIHZvaWQgaW14Nl9wY2llX3F1aXJrKHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4gK3N0YXRp YyB2b2lkIGlteF9wY2llX3F1aXJrKHN0cnVjdCBwY2lfZGV2ICpkZXYpCj4gIHsKPiAgCXN0cnVj dCBwY2lfYnVzICpidXMgPSBkZXYtPmJ1czsKPiAgCXN0cnVjdCBkd19wY2llX3JwICpwcCA9IGJ1 cy0+c3lzZGF0YTsKPiBAQCAtMTY0NiwzMyArMTY0NiwzMyBAQCBzdGF0aWMgdm9pZCBpbXg2X3Bj aWVfcXVpcmsoc3RydWN0IHBjaV9kZXYgKmRldikKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyogTWFr ZSBzdXJlIHdlIG9ubHkgcXVpcmsgZGV2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkcml2ZXIg Ki8KPiAtCWlmIChidXMtPmRldi5wYXJlbnQtPnBhcmVudC0+ZHJpdmVyICE9ICZpbXg2X3BjaWVf ZHJpdmVyLmRyaXZlcikKPiArCWlmIChidXMtPmRldi5wYXJlbnQtPnBhcmVudC0+ZHJpdmVyICE9 ICZpbXhfcGNpZV9kcml2ZXIuZHJpdmVyKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAocGNpX2lz X3Jvb3RfYnVzKGJ1cykpIHsKPiAgCQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9m cm9tX3BwKHBwKTsKPiAtCQlzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUgPSB0b19pbXg2X3Bj aWUocGNpKTsKPiArCQlzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llID0gdG9faW14X3BjaWUocGNp KTsKPiAgCj4gIAkJLyoKPiAgCQkgKiBMaW1pdCBjb25maWcgbGVuZ3RoIHRvIGF2b2lkIHRoZSBr ZXJuZWwgcmVhZGluZyBiZXlvbmQKPiAgCQkgKiB0aGUgcmVnaXN0ZXIgc2V0IGFuZCBjYXVzaW5n IGFuIGFib3J0IG9uIGkuTVggNlF1YWQKPiAgCQkgKi8KPiAtCQlpZiAoaW14Nl9wY2llLT5kcnZk YXRhLT5kYmlfbGVuZ3RoKSB7Cj4gLQkJCWRldi0+Y2ZnX3NpemUgPSBpbXg2X3BjaWUtPmRydmRh dGEtPmRiaV9sZW5ndGg7Cj4gKwkJaWYgKGlteF9wY2llLT5kcnZkYXRhLT5kYmlfbGVuZ3RoKSB7 Cj4gKwkJCWRldi0+Y2ZnX3NpemUgPSBpbXhfcGNpZS0+ZHJ2ZGF0YS0+ZGJpX2xlbmd0aDsKPiAg CQkJZGV2X2luZm8oJmRldi0+ZGV2LCAiTGltaXRpbmcgY2ZnX3NpemUgdG8gJWRcbiIsCj4gIAkJ CQkJZGV2LT5jZmdfc2l6ZSk7Cj4gIAkJfQo+ICAJfQo+ICB9Cj4gIERFQ0xBUkVfUENJX0ZJWFVQ X0NMQVNTX0hFQURFUihQQ0lfVkVORE9SX0lEX1NZTk9QU1lTLCAweGFiY2QsCj4gLQkJCVBDSV9D TEFTU19CUklER0VfUENJLCA4LCBpbXg2X3BjaWVfcXVpcmspOwo+ICsJCQlQQ0lfQ0xBU1NfQlJJ REdFX1BDSSwgOCwgaW14X3BjaWVfcXVpcmspOwo+ICAKPiAtc3RhdGljIGludCBfX2luaXQgaW14 Nl9wY2llX2luaXQodm9pZCkKPiArc3RhdGljIGludCBfX2luaXQgaW14X3BjaWVfaW5pdCh2b2lk KQo+ICB7Cj4gICNpZmRlZiBDT05GSUdfQVJNCj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwo+ ICAKPiAtCW5wID0gb2ZfZmluZF9tYXRjaGluZ19ub2RlKE5VTEwsIGlteDZfcGNpZV9vZl9tYXRj aCk7Cj4gKwlucCA9IG9mX2ZpbmRfbWF0Y2hpbmdfbm9kZShOVUxMLCBpbXhfcGNpZV9vZl9tYXRj aCk7Cj4gIAlpZiAoIW5wKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAJb2Zfbm9kZV9wdXQobnAp Owo+IEBAIC0xNjg4LDYgKzE2ODgsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBpbXg2X3BjaWVfaW5p dCh2b2lkKQo+ICAJCQkiZXh0ZXJuYWwgYWJvcnQgb24gbm9uLWxpbmVmZXRjaCIpOwo+ICAjZW5k aWYKPiAgCj4gLQlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZpbXg2X3BjaWVfZHJp dmVyKTsKPiArCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmlteF9wY2llX2RyaXZl cik7Cj4gIH0KPiAtZGV2aWNlX2luaXRjYWxsKGlteDZfcGNpZV9pbml0KTsKPiArZGV2aWNlX2lu aXRjYWxsKGlteF9wY2llX2luaXQpOwo+IAo+IC0tIAo+IDIuMzQuMQo+IAoKLS0gCuCuruCuo+Cu v+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK