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 3C217C4828E for ; Fri, 2 Feb 2024 09:30:04 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WeCwlBoSIeCeNH0hEMCMyM4eakHgDzgY5pZDOQh+HF4=; b=HWWmmB/gWZQ3Bh 9W8lkeMlixLspki0YQQSYmHUpXOqtvgExE/tjFm1JKu79naz9q01bUkP1m+Gu6VKVpXh4e/3VyDYJ uMhHfHeG0SV6KncdGkRQCwqX/+aYPYKUlTAYZQ9I0TEX4uX46je6L9UUmpWQ5q/pXJOoBnr/V1hVD q7+YHIpZsfTAdt9Ys+21aY17sKX3h58NtMDFq9yfTNk09S3eqpPU61lk+rwJcCuFYYLeVV/3RFfbI I5HKif3zfAxiw1LjZS8jDvSi6FMGpTLkLIAfLsGYaYOwqKlqnwNR8W7JcAjWeg6bqMQFfqGG0/8f7 FMYdui8+lix8pkPvPqCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rVprs-0000000Ax9v-0TzC; Fri, 02 Feb 2024 09:29:52 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rVpro-0000000Ax89-0FkQ for linux-arm-kernel@lists.infradead.org; Fri, 02 Feb 2024 09:29:50 +0000 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-40fb5f5fd84so1329995e9.1 for ; Fri, 02 Feb 2024 01:29:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1706866186; x=1707470986; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=dqWXwOrZfySDb/xrg9QNTo/LK6G7+EEsv/T6P7jsQiQ=; b=SimXJUwX8QBewbmQpPDtBtfIToHBLkMc/3CUjQAPAT0IAfM55zp1yEyFgeSkT4UGzR oGrR9BBxe8zthsGONRDF7zCSpU+Ld3iuIVxF2QbWBU2+dDyfkElIGtkvdEzd7XzHYiGw KvGBqSwScEhtdqTnif8NNjIYh4XWXJAd2+pJfeq3EbRo/jBBsSD5PUVlPt9M8cXCJESD P551ZO+Fg7dycuCbF3qZjve/aRO7ugSVzFJp/0TzpqEZSYwlimbKLMpofQ6+iEBFZ/Jh 5/7SmLsYI7xcLTRCGoh5d+rFDwhU4llKb43+Ne81L7F6bUatmED8JbCfU6Sw5fDPJ9UY qbaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706866186; x=1707470986; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dqWXwOrZfySDb/xrg9QNTo/LK6G7+EEsv/T6P7jsQiQ=; b=wwMVHc1rXbRlIFPdkL8ZXNhlA1otFq4f0s6SzvoN+x3IvWgP/WYkI4kckG121m+c5n D0gAsV40fupBj689M06iby/At2TbpJvlo2W92kheyZH09HjaCtpK5micJcw5HFLiSpfU N6y+q8/l+YZpdGC7yzsVUKk1gYefVmFHq5FDwjgTlIX1ON/xzhHKOD9aoz76deD0TzqH pTziJpFixFgSFlJcGEYTnVrstjH5+EC4+jSJRsEO+MN6AiFTegpWEEIH3iLzTYH3+XXn PbmZnIcxuFJuc+kDT2j0sPw+cwKYwnfdDNfyOzsQeM9wKPfedxLnMEwKCFMMxpXaqBEI 1ZOQ== X-Forwarded-Encrypted: i=0; AJvYcCUBlTlEC0PXMp0ef8cntott9YuojzDpP5CIqGKdOsfN6eN4IkiTeFNVmevS73CP5sfINAoIr/+As8Upqd8Tx27s2PzeVQ+fl1YiPyZygf62vjWpU+c= X-Gm-Message-State: AOJu0Yyxgzg1yf4KNjrjnqBqWoLEqWhe6JuR0YtanEgufB5Cgeucm4mk uoK+763fkxXs0knJzaPCoDwCurPAlM+BpMGSScasX9iiFzJE6e/8fccMCXTuGI8= X-Google-Smtp-Source: AGHT+IGYcg2bSrOdYyRdTLrswV4WX0630HsM0u27xji1NyNDI8qWclQgMzoajFtaVfM7gyEiSNjXzw== X-Received: by 2002:a05:600c:600e:b0:40f:c475:b443 with SMTP id az14-20020a05600c600e00b0040fc475b443mr1249100wmb.0.1706866185908; Fri, 02 Feb 2024 01:29:45 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCUHgr/ckAZJoapCsKIMyVmA5/7ks+r+eY+chMDUXYJWY724MDve8ddKDMqD7pjkDCiTToIcS1Pp0pZLP2YWBBeEdFi27PE+/bRut+k0sfk+oeQmXVFPmoLgXmy90UDVNc4U7f0O0OnJrSlIpiXG5pMjoMoSqmnKZLwvLt85aK50kD4fe+v/yywQTQ+3kmjPQ+808ubQ0F/rjIQQSNJ06ra2uea4NK37vavKMvg+yPZSf1G+zHfDUeS3dsC0H2HZOKFOy21DwnOeRji1sfDVzyllWQ79hhZAO/mKsHjrVXm4v5c4L8NQLZ00wwae+guW+Gj2y9JEFnBNCD1/OrgRXIZZD+yBQ4Xon7KM/7Bqjo0+u0i0up8mqybvAjVXr4wHs3untyROZF9dWKSPDbxgW8Vc//BcOKuEYQPE98Aqzqwmutha3AzK+XhyWZwW1uR6WGtxgS16d6Lcw5qLsTq1gGcaPmAK1uWPt4UBRuVaYcqt91RInEdjxwuYe3EZxPDLTsDXL+AMHc7RzciYgmwnNInMM/53TmuQgRBz6SeqjCwmA1OkEMizRLbC/sG4I04xAvLkVsf3ZfQ= Received: from ?IPV6:2a01:e0a:999:a3a0:6d51:959f:bb28:92? ([2a01:e0a:999:a3a0:6d51:959f:bb28:92]) by smtp.gmail.com with ESMTPSA id m21-20020a05600c4f5500b0040ebf340759sm2052550wmq.21.2024.02.02.01.29.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Feb 2024 01:29:45 -0800 (PST) Message-ID: Date: Fri, 2 Feb 2024 10:29:44 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v12 22/25] irqchip: Add RISC-V advanced PLIC driver for direct-mode Content-Language: en-US To: Anup Patel , Palmer Dabbelt , Paul Walmsley , Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Frank Rowand , Conor Dooley Cc: devicetree@vger.kernel.org, Saravana Kannan , Marc Zyngier , Anup Patel , linux-kernel@vger.kernel.org, =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Atish Patra , linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Andrew Jones References: <20240127161753.114685-1-apatel@ventanamicro.com> <20240127161753.114685-23-apatel@ventanamicro.com> From: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= In-Reply-To: <20240127161753.114685-23-apatel@ventanamicro.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240202_012948_376051_DD9117FA X-CRM114-Status: GOOD ( 36.92 ) 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 CgpPbiAyNy8wMS8yMDI0IDE3OjE3LCBBbnVwIFBhdGVsIHdyb3RlOgo+IFRoZSBSSVNDLVYgYWR2 YW5jZWQgaW50ZXJydXB0IGFyY2hpdGVjdHVyZSAoQUlBKSBzcGVjaWZpY2F0aW9uIGRlZmluZXMK PiBhZHZhbmNlZCBwbGF0Zm9ybS1sZXZlbCBpbnRlcnJ1cHQgY29udHJvbGxlciAoQVBMSUMpIHdo aWNoIGhhcyB0d28gbW9kZXMKPiBvZiBvcGVyYXRpb246IDEpIERpcmVjdCBtb2RlIGFuZCAyKSBN U0kgbW9kZS4KPiAoRm9yIG1vcmUgZGV0YWlscywgcmVmZXIgaHR0cHM6Ly9naXRodWIuY29tL3Jp c2N2L3Jpc2N2LWFpYSkKPiAKPiBJbiBBUExJQyBkaXJlY3QtbW9kZSwgd2lyZWQgaW50ZXJydXB0 cyBhcmUgZm9yd2FyZWQgdG8gQ1BVcyAob3IgSEFSVHMpCj4gYXMgYSBsb2NhbCBleHRlcm5hbCBp bnRlcnJ1cHQuCj4gCj4gV2UgYWRkIGEgcGxhdGZvcm0gaXJxY2hpcCBkcml2ZXIgZm9yIHRoZSBS SVNDLVYgQVBMSUMgZGlyZWN0LW1vZGUgdG8KPiBzdXBwb3J0IFJJU0MtViBwbGF0Zm9ybXMgaGF2 aW5nIG9ubHkgd2lyZWQgaW50ZXJydXB0cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbnVwIFBhdGVs IDxhcGF0ZWxAdmVudGFuYW1pY3JvLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9pcnFjaGlwL0tjb25m aWcgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFwbGlj LWRpcmVjdC5jIHwgMzQzICsrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvaXJxY2hp cC9pcnEtcmlzY3YtYXBsaWMtbWFpbi5jICAgfCAyMzIgKysrKysrKysrKysrKysrCj4gIGRyaXZl cnMvaXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMtbWFpbi5oICAgfCAgNDUgKysrCj4gIGluY2x1ZGUv bGludXgvaXJxY2hpcC9yaXNjdi1hcGxpYy5oICAgICAgfCAxMTkgKysrKysrKysKPiAgNiBmaWxl cyBjaGFuZ2VkLCA3NDUgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1kaXJlY3QuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tYWluLmMKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvaXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMtbWFpbi5oCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL2xpbnV4L2lycWNoaXAvcmlzY3YtYXBsaWMuaAo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZyBiL2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnCj4g aW5kZXggMmZjMGNiMzIzNDFhLi5kYmM4ODExZDM3NjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9p cnFjaGlwL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZwo+IEBAIC01NDYs NiArNTQ2LDExIEBAIGNvbmZpZyBTSUZJVkVfUExJQwo+ICAJc2VsZWN0IElSUV9ET01BSU5fSElF UkFSQ0hZCj4gIAlzZWxlY3QgR0VORVJJQ19JUlFfRUZGRUNUSVZFX0FGRl9NQVNLIGlmIFNNUAo+ ICAKPiArY29uZmlnIFJJU0NWX0FQTElDCj4gKwlib29sCj4gKwlkZXBlbmRzIG9uIFJJU0NWCj4g KwlzZWxlY3QgSVJRX0RPTUFJTl9ISUVSQVJDSFkKPiArCj4gIGNvbmZpZyBSSVNDVl9JTVNJQwo+ ICAJYm9vbAo+ICAJZGVwZW5kcyBvbiBSSVNDVgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNo aXAvTWFrZWZpbGUgYi9kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUKPiBpbmRleCBhYmNhNDQ1YTMy MjkuLjdmODI4OTc5MGVkOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUK PiArKysgYi9kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUKPiBAQCAtOTUsNiArOTUsNyBAQCBvYmot JChDT05GSUdfUUNPTV9NUE0pCQkJKz0gaXJxLXFjb20tbXBtLm8KPiAgb2JqLSQoQ09ORklHX0NT S1lfTVBJTlRDKQkJKz0gaXJxLWNza3ktbXBpbnRjLm8KPiAgb2JqLSQoQ09ORklHX0NTS1lfQVBC X0lOVEMpCQkrPSBpcnEtY3NreS1hcGItaW50Yy5vCj4gIG9iai0kKENPTkZJR19SSVNDVl9JTlRD KQkJKz0gaXJxLXJpc2N2LWludGMubwo+ICtvYmotJChDT05GSUdfUklTQ1ZfQVBMSUMpCQkrPSBp cnEtcmlzY3YtYXBsaWMtbWFpbi5vIGlycS1yaXNjdi1hcGxpYy1kaXJlY3Qubwo+ICBvYmotJChD T05GSUdfUklTQ1ZfSU1TSUMpCQkrPSBpcnEtcmlzY3YtaW1zaWMtc3RhdGUubyBpcnEtcmlzY3Yt aW1zaWMtZWFybHkubyBpcnEtcmlzY3YtaW1zaWMtcGxhdGZvcm0ubwo+ICBvYmotJChDT05GSUdf U0lGSVZFX1BMSUMpCQkrPSBpcnEtc2lmaXZlLXBsaWMubwo+ICBvYmotJChDT05GSUdfSU1YX0lS UVNURUVSKQkJKz0gaXJxLWlteC1pcnFzdGVlci5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJx Y2hpcC9pcnEtcmlzY3YtYXBsaWMtZGlyZWN0LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2 LWFwbGljLWRpcmVjdC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw MDAuLjllZDI2NjZiZmI1ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2lycWNoaXAv aXJxLXJpc2N2LWFwbGljLWRpcmVjdC5jCj4gQEAgLTAsMCArMSwzNDMgQEAKPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDIx IFdlc3Rlcm4gRGlnaXRhbCBDb3Jwb3JhdGlvbiBvciBpdHMgYWZmaWxpYXRlcy4KPiArICogQ29w eXJpZ2h0IChDKSAyMDIyIFZlbnRhbmEgTWljcm8gU3lzdGVtcyBJbmMuCgoyMDI0ID8KCj4gKyAq Lwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvY3B1 Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ly cWNoaXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvY2hhaW5lZF9pcnEuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2lycWNoaXAvcmlzY3YtYXBsaWMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvcHJpbnRrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbXAuaD4KPiArCj4gKyNpbmNsdWRlICJp cnEtcmlzY3YtYXBsaWMtbWFpbi5oIgo+ICsKPiArI2RlZmluZSBBUExJQ19ESVNBQkxFX0lERUxJ VkVSWQkJMAo+ICsjZGVmaW5lIEFQTElDX0VOQUJMRV9JREVMSVZFUlkJCTEKPiArI2RlZmluZSBB UExJQ19ESVNBQkxFX0lUSFJFU0hPTEQJMQo+ICsjZGVmaW5lIEFQTElDX0VOQUJMRV9JVEhSRVNI T0xECQkwCj4gKwo+ICtzdHJ1Y3QgYXBsaWNfZGlyZWN0IHsKPiArCXN0cnVjdCBhcGxpY19wcml2 CXByaXY7Cj4gKwlzdHJ1Y3QgaXJxX2RvbWFpbgkqaXJxZG9tYWluOwo+ICsJc3RydWN0IGNwdW1h c2sJCWxtYXNrOwo+ICt9Owo+ICsKPiArc3RydWN0IGFwbGljX2lkYyB7Cj4gKwl1bnNpZ25lZCBp bnQJCWhhcnRfaW5kZXg7Cj4gKwl2b2lkIF9faW9tZW0JCSpyZWdzOwo+ICsJc3RydWN0IGFwbGlj X2RpcmVjdAkqZGlyZWN0Owo+ICt9Owo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGludCBhcGxpY19k aXJlY3RfcGFyZW50X2lycTsKPiArc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBhcGxpY19p ZGMsIGFwbGljX2lkY3MpOwo+ICsKPiArc3RhdGljIHZvaWQgYXBsaWNfZGlyZWN0X2lycV9lb2ko c3RydWN0IGlycV9kYXRhICpkKQo+ICt7Cj4gKwkvKgo+ICsJICogVGhlIGZhc3Rlb2lfaGFuZGxl ciByZXF1aXJlcyBpcnFfZW9pKCkgY2FsbGJhY2sgaGVuY2UKPiArCSAqIHByb3ZpZGUgYSBkdW1t eSBoYW5kbGVyLgo+ICsJICovCj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfU01QCj4gK3N0YXRp YyBpbnQgYXBsaWNfZGlyZWN0X3NldF9hZmZpbml0eShzdHJ1Y3QgaXJxX2RhdGEgKmQsCj4gKwkJ CQkgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrX3ZhbCwgYm9vbCBmb3JjZSkKPiArewo+ICsJ c3RydWN0IGFwbGljX3ByaXYgKnByaXYgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsK PiArCXN0cnVjdCBhcGxpY19kaXJlY3QgKmRpcmVjdCA9Cj4gKwkJCWNvbnRhaW5lcl9vZihwcml2 LCBzdHJ1Y3QgYXBsaWNfZGlyZWN0LCBwcml2KTsKPiArCXN0cnVjdCBhcGxpY19pZGMgKmlkYzsK PiArCXVuc2lnbmVkIGludCBjcHUsIHZhbDsKPiArCXN0cnVjdCBjcHVtYXNrIGFtYXNrOwo+ICsJ dm9pZCBfX2lvbWVtICp0YXJnZXQ7Cj4gKwo+ICsJY3B1bWFza19hbmQoJmFtYXNrLCAmZGlyZWN0 LT5sbWFzaywgbWFza192YWwpOwo+ICsKPiArCWlmIChmb3JjZSkKPiArCQljcHUgPSBjcHVtYXNr X2ZpcnN0KCZhbWFzayk7Cj4gKwllbHNlCj4gKwkJY3B1ID0gY3B1bWFza19hbnlfYW5kKCZhbWFz aywgY3B1X29ubGluZV9tYXNrKTsKPiArCj4gKwlpZiAoY3B1ID49IG5yX2NwdV9pZHMpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWRjID0gcGVyX2NwdV9wdHIoJmFwbGljX2lkY3MsIGNw dSk7Cj4gKwl0YXJnZXQgPSBwcml2LT5yZWdzICsgQVBMSUNfVEFSR0VUX0JBU0U7Cj4gKwl0YXJn ZXQgKz0gKGQtPmh3aXJxIC0gMSkgKiBzaXplb2YodTMyKTsKPiArCXZhbCA9IGlkYy0+aGFydF9p bmRleCAmIEFQTElDX1RBUkdFVF9IQVJUX0lEWF9NQVNLOwo+ICsJdmFsIDw8PSBBUExJQ19UQVJH RVRfSEFSVF9JRFhfU0hJRlQ7CgpIaSBBbnVwLAoKWW91IGNvdWxkIHVzZSBGSUVMRF9QUkVQKCkg aW5zdGVhZCBvZiBtYW51YWwgbWFzay9zaGlmdC4KCiNkZWZpbmUgQVBMSUNfVEFSR0VUX0hBUlRf SURYX01BU0sgMHhmZmZjMDAwMAoKQW5kIHRoZW4gRklFTERfUFJFUChBUExJQ19UQVJHRVRfSEFS VF9JRFhfTUFTSywgaWRjLT5oYXJ0X2luZGV4KQoKCj4gKwl2YWwgfD0gQVBMSUNfREVGQVVMVF9Q UklPUklUWTsKPiArCXdyaXRlbCh2YWwsIHRhcmdldCk7Cj4gKwo+ICsJaXJxX2RhdGFfdXBkYXRl X2VmZmVjdGl2ZV9hZmZpbml0eShkLCBjcHVtYXNrX29mKGNwdSkpOwo+ICsKPiArCXJldHVybiBJ UlFfU0VUX01BU0tfT0tfRE9ORTsKPiArfQo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qg aXJxX2NoaXAgYXBsaWNfZGlyZWN0X2NoaXAgPSB7Cj4gKwkubmFtZQkJPSAiQVBMSUMtRElSRUNU IiwKPiArCS5pcnFfbWFzawk9IGFwbGljX2lycV9tYXNrLAo+ICsJLmlycV91bm1hc2sJPSBhcGxp Y19pcnFfdW5tYXNrLAo+ICsJLmlycV9zZXRfdHlwZQk9IGFwbGljX2lycV9zZXRfdHlwZSwKPiAr CS5pcnFfZW9pCT0gYXBsaWNfZGlyZWN0X2lycV9lb2ksCj4gKyNpZmRlZiBDT05GSUdfU01QCj4g KwkuaXJxX3NldF9hZmZpbml0eSA9IGFwbGljX2RpcmVjdF9zZXRfYWZmaW5pdHksCj4gKyNlbmRp Zgo+ICsJLmZsYWdzCQk9IElSUUNISVBfU0VUX1RZUEVfTUFTS0VEIHwKPiArCQkJICBJUlFDSElQ X1NLSVBfU0VUX1dBS0UgfAo+ICsJCQkgIElSUUNISVBfTUFTS19PTl9TVVNQRU5ELAo+ICt9Owo+ ICsKPiArc3RhdGljIGludCBhcGxpY19kaXJlY3RfaXJxZG9tYWluX3RyYW5zbGF0ZShzdHJ1Y3Qg aXJxX2RvbWFpbiAqZCwKPiArCQkJCQkgc3RydWN0IGlycV9md3NwZWMgKmZ3c3BlYywKPiArCQkJ CQkgdW5zaWduZWQgbG9uZyAqaHdpcnEsCj4gKwkJCQkJIHVuc2lnbmVkIGludCAqdHlwZSkKPiAr ewo+ICsJc3RydWN0IGFwbGljX3ByaXYgKnByaXYgPSBkLT5ob3N0X2RhdGE7Cj4gKwo+ICsJcmV0 dXJuIGFwbGljX2lycWRvbWFpbl90cmFuc2xhdGUoZndzcGVjLCBwcml2LT5nc2lfYmFzZSwKPiAr CQkJCQkgaHdpcnEsIHR5cGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFwbGljX2RpcmVjdF9p cnFkb21haW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwKPiArCQkJCSAgICAgdW5z aWduZWQgaW50IHZpcnEsIHVuc2lnbmVkIGludCBucl9pcnFzLAo+ICsJCQkJICAgICB2b2lkICph cmcpCj4gK3sKPiArCWludCBpLCByZXQ7Cj4gKwl1bnNpZ25lZCBpbnQgdHlwZTsKPiArCWlycV9o d19udW1iZXJfdCBod2lycTsKPiArCXN0cnVjdCBpcnFfZndzcGVjICpmd3NwZWMgPSBhcmc7Cj4g KwlzdHJ1Y3QgYXBsaWNfcHJpdiAqcHJpdiA9IGRvbWFpbi0+aG9zdF9kYXRhOwo+ICsJc3RydWN0 IGFwbGljX2RpcmVjdCAqZGlyZWN0ID0KPiArCQkJY29udGFpbmVyX29mKHByaXYsIHN0cnVjdCBh cGxpY19kaXJlY3QsIHByaXYpOwo+ICsKPiArCXJldCA9IGFwbGljX2lycWRvbWFpbl90cmFuc2xh dGUoZndzcGVjLCBwcml2LT5nc2lfYmFzZSwKPiArCQkJCQkmaHdpcnEsICZ0eXBlKTsKPiArCWlm IChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnJfaXJxczsg aSsrKSB7Cj4gKwkJaXJxX2RvbWFpbl9zZXRfaW5mbyhkb21haW4sIHZpcnEgKyBpLCBod2lycSAr IGksCj4gKwkJCQkgICAgJmFwbGljX2RpcmVjdF9jaGlwLCBwcml2LAo+ICsJCQkJICAgIGhhbmRs ZV9mYXN0ZW9pX2lycSwgTlVMTCwgTlVMTCk7Cj4gKwkJaXJxX3NldF9hZmZpbml0eSh2aXJxICsg aSwgJmRpcmVjdC0+bG1hc2spOwo+ICsJCS8qIFNlZSB0aGUgcmVhc29uIGRlc2NyaWJlZCBpbiBh cGxpY19tc2lfaXJxZG9tYWluX2FsbG9jKCkgKi8KPiArCQlpcnFfc2V0X3N0YXR1c19mbGFncyh2 aXJxICsgaSwgSVJRX0RJU0FCTEVfVU5MQVpZKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBhcGxpY19kaXJlY3Rf aXJxZG9tYWluX29wcyA9IHsKPiArCS50cmFuc2xhdGUJPSBhcGxpY19kaXJlY3RfaXJxZG9tYWlu X3RyYW5zbGF0ZSwKPiArCS5hbGxvYwkJPSBhcGxpY19kaXJlY3RfaXJxZG9tYWluX2FsbG9jLAo+ ICsJLmZyZWUJCT0gaXJxX2RvbWFpbl9mcmVlX2lycXNfdG9wLAo+ICt9Owo+ICsKPiArLyoKPiAr ICogVG8gaGFuZGxlIGFuIEFQTElDIGRpcmVjdCBpbnRlcnJ1cHRzLCB3ZSBqdXN0IHJlYWQgdGhl IENMQUlNSSByZWdpc3Rlcgo+ICsgKiB3aGljaCB3aWxsIHJldHVybiBoaWdoZXN0IHByaW9yaXR5 IHBlbmRpbmcgaW50ZXJydXB0IGFuZCBjbGVhciB0aGUKPiArICogcGVuZGluZyBiaXQgb2YgdGhl IGludGVycnVwdC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkIHVudGlsIENMQUlNSQo+ICsgKiBy ZWdpc3RlciByZXR1cm4gemVybyB2YWx1ZS4KPiArICovCj4gK3N0YXRpYyB2b2lkIGFwbGljX2Rp cmVjdF9oYW5kbGVfaXJxKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKPiArewo+ICsJc3RydWN0IGFw bGljX2lkYyAqaWRjID0gdGhpc19jcHVfcHRyKCZhcGxpY19pZGNzKTsKPiArCXN0cnVjdCBpcnFf Y2hpcCAqY2hpcCA9IGlycV9kZXNjX2dldF9jaGlwKGRlc2MpOwo+ICsJc3RydWN0IGlycV9kb21h aW4gKmlycWRvbWFpbiA9IGlkYy0+ZGlyZWN0LT5pcnFkb21haW47Cj4gKwlpcnFfaHdfbnVtYmVy X3QgaHdfaXJxOwo+ICsJaW50IGlycTsKPiArCj4gKwljaGFpbmVkX2lycV9lbnRlcihjaGlwLCBk ZXNjKTsKPiArCj4gKwl3aGlsZSAoKGh3X2lycSA9IHJlYWRsKGlkYy0+cmVncyArIEFQTElDX0lE Q19DTEFJTUkpKSkgewo+ICsJCWh3X2lycSA9IGh3X2lycSA+PiBBUExJQ19JRENfVE9QSV9JRF9T SElGVDsKPiArCQlpcnEgPSBpcnFfZmluZF9tYXBwaW5nKGlycWRvbWFpbiwgaHdfaXJxKTsKPiAr Cj4gKwkJaWYgKHVubGlrZWx5KGlycSA8PSAwKSkKPiArCQkJZGV2X3dhcm5fcmF0ZWxpbWl0ZWQo aWRjLT5kaXJlY3QtPnByaXYuZGV2LAo+ICsJCQkJCSAgICAgImh3X2lycSAlbHUgbWFwcGluZyBu b3QgZm91bmRcbiIsCj4gKwkJCQkJICAgICBod19pcnEpOwo+ICsJCWVsc2UKPiArCQkJZ2VuZXJp Y19oYW5kbGVfaXJxKGlycSk7Cj4gKwl9Cj4gKwo+ICsJY2hhaW5lZF9pcnFfZXhpdChjaGlwLCBk ZXNjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXBsaWNfaWRjX3NldF9kZWxpdmVyeShzdHJ1 Y3QgYXBsaWNfaWRjICppZGMsIGJvb2wgZW4pCj4gK3sKPiArCXUzMiBkZSA9IChlbikgPyBBUExJ Q19FTkFCTEVfSURFTElWRVJZIDogQVBMSUNfRElTQUJMRV9JREVMSVZFUlk7Cj4gKwl1MzIgdGgg PSAoZW4pID8gQVBMSUNfRU5BQkxFX0lUSFJFU0hPTEQgOiBBUExJQ19ESVNBQkxFX0lUSFJFU0hP TEQ7Cj4gKwo+ICsJLyogUHJpb3JpdHkgbXVzdCBiZSBsZXNzIHRoYW4gdGhyZXNob2xkIGZvciBp bnRlcnJ1cHQgdHJpZ2dlcmluZyAqLwo+ICsJd3JpdGVsKHRoLCBpZGMtPnJlZ3MgKyBBUExJQ19J RENfSVRIUkVTSE9MRCk7Cj4gKwo+ICsJLyogRGVsaXZlcnkgbXVzdCBiZSBzZXQgdG8gMSBmb3Ig aW50ZXJydXB0IHRyaWdnZXJpbmcgKi8KPiArCXdyaXRlbChkZSwgaWRjLT5yZWdzICsgQVBMSUNf SURDX0lERUxJVkVSWSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYXBsaWNfZGlyZWN0X2R5aW5n X2NwdSh1bnNpZ25lZCBpbnQgY3B1KQo+ICt7Cj4gKwlpZiAoYXBsaWNfZGlyZWN0X3BhcmVudF9p cnEpCj4gKwkJZGlzYWJsZV9wZXJjcHVfaXJxKGFwbGljX2RpcmVjdF9wYXJlbnRfaXJxKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhcGxpY19kaXJlY3Rfc3RhcnRp bmdfY3B1KHVuc2lnbmVkIGludCBjcHUpCj4gK3sKPiArCWlmIChhcGxpY19kaXJlY3RfcGFyZW50 X2lycSkKPiArCQllbmFibGVfcGVyY3B1X2lycShhcGxpY19kaXJlY3RfcGFyZW50X2lycSwKPiAr CQkJCWlycV9nZXRfdHJpZ2dlcl90eXBlKGFwbGljX2RpcmVjdF9wYXJlbnRfaXJxKSk7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYXBsaWNfZGlyZWN0X3BhcnNlX3Bh cmVudF9od2lycShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkJICAgdTMyIGluZGV4LCB1MzIg KnBhcmVudF9od2lycSwKPiArCQkJCQkgICB1bnNpZ25lZCBsb25nICpwYXJlbnRfaGFydGlkKQo+ ICt7Cj4gKwlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzIHBhcmVudDsKPiArCWludCByYzsKPiArCj4g KwkvKgo+ICsJICogQ3VycmVudGx5LCBvbmx5IE9GIGZ3bm9kZSBpcyBzdXBwb3J0ZWQgc28gZXh0 ZW5kIHRoaXMKPiArCSAqIGZ1bmN0aW9uIGZvciBBQ1BJIHN1cHBvcnQuCj4gKwkgKi8KPiArCWlm ICghaXNfb2Zfbm9kZShkZXYtPmZ3bm9kZSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ cmMgPSBvZl9pcnFfcGFyc2Vfb25lKHRvX29mX25vZGUoZGV2LT5md25vZGUpLCBpbmRleCwgJnBh cmVudCk7Cj4gKwlpZiAocmMpCj4gKwkJcmV0dXJuIHJjOwo+ICsKPiArCXJjID0gcmlzY3Zfb2Zf cGFyZW50X2hhcnRpZChwYXJlbnQubnAsIHBhcmVudF9oYXJ0aWQpOwo+ICsJaWYgKHJjKQo+ICsJ CXJldHVybiByYzsKPiArCj4gKwkqcGFyZW50X2h3aXJxID0gcGFyZW50LmFyZ3NbMF07Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGFwbGljX2RpcmVjdF9zZXR1cChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHZvaWQgX19pb21lbSAqcmVncykKPiArewo+ICsJaW50IGksIGosIHJjLCBjcHUsIHNl dHVwX2NvdW50ID0gMDsKPiArCXN0cnVjdCBhcGxpY19kaXJlY3QgKmRpcmVjdDsKPiArCXN0cnVj dCBhcGxpY19wcml2ICpwcml2Owo+ICsJc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsKPiArCXVu c2lnbmVkIGxvbmcgaGFydGlkOwo+ICsJc3RydWN0IGFwbGljX2lkYyAqaWRjOwo+ICsJdTMyIHZh bCwgaHdpcnE7Cj4gKwo+ICsJZGlyZWN0ID0ga3phbGxvYyhzaXplb2YoKmRpcmVjdCksIEdGUF9L RVJORUwpOwoKVXNlIGRldm1fa3phbGxvYygpID8KCj4gKwlpZiAoIWRpcmVjdCkKPiArCQlyZXR1 cm4gLUVOT01FTTsKPiArCXByaXYgPSAmZGlyZWN0LT5wcml2Owo+ICsKPiArCXJjID0gYXBsaWNf c2V0dXBfcHJpdihwcml2LCBkZXYsIHJlZ3MpOwo+ICsJaWYgKHJjKSB7Cj4gKwkJZGV2X2Vycihk ZXYsICJmYWlsZWQgdG8gY3JlYXRlIEFQTElDIGNvbnRleHRcbiIpOwo+ICsJCWtmcmVlKGRpcmVj dCk7Cj4gKwkJcmV0dXJuIHJjOwo+ICsJfQo+ICsKPiArCS8qIFNldHVwIHBlci1DUFUgSURDIGFu ZCB0YXJnZXQgQ1BVIG1hc2sgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBwcml2LT5ucl9pZGNzOyBp KyspIHsKPiArCQlyYyA9IGFwbGljX2RpcmVjdF9wYXJzZV9wYXJlbnRfaHdpcnEoZGV2LCBpLCAm aHdpcnEsICZoYXJ0aWQpOwo+ICsJCWlmIChyYykgewo+ICsJCQlkZXZfd2FybihkZXYsICJwYXJl bnQgaXJxIGZvciBJREMlZCBub3QgZm91bmRcbiIsIGkpOwo+ICsJCQljb250aW51ZTsKPiArCQl9 Cj4gKwo+ICsJCS8qCj4gKwkJICogU2tpcCBpbnRlcnJ1cHRzIG90aGVyIHRoYW4gZXh0ZXJuYWwg aW50ZXJydXB0cyBmb3IKPiArCQkgKiBjdXJyZW50IHByaXZpbGVnZSBsZXZlbC4KPiArCQkgKi8K PiArCQlpZiAoaHdpcnEgIT0gUlZfSVJRX0VYVCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWNw dSA9IHJpc2N2X2hhcnRpZF90b19jcHVpZChoYXJ0aWQpOwo+ICsJCWlmIChjcHUgPCAwKSB7Cj4g KwkJCWRldl93YXJuKGRldiwgImludmFsaWQgY3B1aWQgZm9yIElEQyVkXG4iLCBpKTsKPiArCQkJ Y29udGludWU7Cj4gKwkJfQo+ICsKPiArCQljcHVtYXNrX3NldF9jcHUoY3B1LCAmZGlyZWN0LT5s bWFzayk7Cj4gKwo+ICsJCWlkYyA9IHBlcl9jcHVfcHRyKCZhcGxpY19pZGNzLCBjcHUpOwo+ICsJ CWlkYy0+aGFydF9pbmRleCA9IGk7Cj4gKwkJaWRjLT5yZWdzID0gcHJpdi0+cmVncyArIEFQTElD X0lEQ19CQVNFICsgaSAqIEFQTElDX0lEQ19TSVpFOwo+ICsJCWlkYy0+ZGlyZWN0ID0gZGlyZWN0 Owo+ICsKPiArCQlhcGxpY19pZGNfc2V0X2RlbGl2ZXJ5KGlkYywgdHJ1ZSk7Cj4gKwo+ICsJCS8q Cj4gKwkJICogQm9vdCBjcHUgbWlnaHQgbm90IGhhdmUgQVBMSUMgaGFydF9pbmRleCA9IDAgc28g Y2hlY2sKPiArCQkgKiBhbmQgdXBkYXRlIHRhcmdldCByZWdpc3RlcnMgb2YgYWxsIGludGVycnVw dHMuCj4gKwkJICovCj4gKwkJaWYgKGNwdSA9PSBzbXBfcHJvY2Vzc29yX2lkKCkgJiYgaWRjLT5o YXJ0X2luZGV4KSB7Cj4gKwkJCXZhbCA9IGlkYy0+aGFydF9pbmRleCAmIEFQTElDX1RBUkdFVF9I QVJUX0lEWF9NQVNLOwo+ICsJCQl2YWwgPDw9IEFQTElDX1RBUkdFVF9IQVJUX0lEWF9TSElGVDsK CkRpdHRvIChGSUVMRF9QUkVQKQoKPiArCQkJdmFsIHw9IEFQTElDX0RFRkFVTFRfUFJJT1JJVFk7 Cj4gKwkJCWZvciAoaiA9IDE7IGogPD0gcHJpdi0+bnJfaXJxczsgaisrKQo+ICsJCQkJd3JpdGVs KHZhbCwgcHJpdi0+cmVncyArIEFQTElDX1RBUkdFVF9CQVNFICsKPiArCQkJCQkgICAgKGogLSAx KSAqIHNpemVvZih1MzIpKTsKPiArCQl9Cj4gKwo+ICsJCXNldHVwX2NvdW50Kys7Cj4gKwl9Cj4g Kwo+ICsJLyogRmluZCBwYXJlbnQgZG9tYWluIGFuZCByZWdpc3RlciBjaGFpbmVkIGhhbmRsZXIg Ki8KPiArCWRvbWFpbiA9IGlycV9maW5kX21hdGNoaW5nX2Z3bm9kZShyaXNjdl9nZXRfaW50Y19o d25vZGUoKSwKPiArCQkJCQkgIERPTUFJTl9CVVNfQU5ZKTsKPiArCWlmICghYXBsaWNfZGlyZWN0 X3BhcmVudF9pcnEgJiYgZG9tYWluKSB7Cj4gKwkJYXBsaWNfZGlyZWN0X3BhcmVudF9pcnEgPSBp cnFfY3JlYXRlX21hcHBpbmcoZG9tYWluLCBSVl9JUlFfRVhUKTsKPiArCQlpZiAoYXBsaWNfZGly ZWN0X3BhcmVudF9pcnEpIHsKPiArCQkJaXJxX3NldF9jaGFpbmVkX2hhbmRsZXIoYXBsaWNfZGly ZWN0X3BhcmVudF9pcnEsCj4gKwkJCQkJCWFwbGljX2RpcmVjdF9oYW5kbGVfaXJxKTsKPiArCj4g KwkJCS8qCj4gKwkJCSAqIFNldHVwIENQVUhQIG5vdGlmaWVyIHRvIGVuYWJsZSBwYXJlbnQKPiAr CQkJICogaW50ZXJydXB0IG9uIGFsbCBDUFVzCj4gKwkJCSAqLwo+ICsJCQljcHVocF9zZXR1cF9z dGF0ZShDUFVIUF9BUF9PTkxJTkVfRFlOLAo+ICsJCQkJCSAgImlycWNoaXAvcmlzY3YvYXBsaWM6 c3RhcnRpbmciLAo+ICsJCQkJCSAgYXBsaWNfZGlyZWN0X3N0YXJ0aW5nX2NwdSwKPiArCQkJCQkg IGFwbGljX2RpcmVjdF9keWluZ19jcHUpOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKiBGYWlsIGlm IHdlIHdlcmUgbm90IGFibGUgdG8gc2V0dXAgSURDIGZvciBhbnkgQ1BVICovCj4gKwlpZiAoIXNl dHVwX2NvdW50KSB7Cj4gKwkJa2ZyZWUoZGlyZWN0KTsKClNob3VsZG4ndCB0aGUgY3B1aHAgc3Rh dGUgYWxzbyBiZSBkZXN0cm95ZWQgKGNwdWhwX3JlbW92ZV9zdGF0ZSgpKSA/Cgo+ICsJCXJldHVy biAtRU5PREVWOwo+ICsJfQo+ICsKPiArCS8qIFNldHVwIGdsb2JhbCBjb25maWcgYW5kIGludGVy cnVwdCBkZWxpdmVyeSAqLwo+ICsJYXBsaWNfaW5pdF9od19nbG9iYWwocHJpdiwgZmFsc2UpOwo+ ICsKPiArCS8qIENyZWF0ZSBpcnEgZG9tYWluIGluc3RhbmNlIGZvciB0aGUgQVBMSUMgKi8KPiAr CWRpcmVjdC0+aXJxZG9tYWluID0gaXJxX2RvbWFpbl9jcmVhdGVfbGluZWFyKGRldi0+Zndub2Rl LAo+ICsJCQkJCQkgICBwcml2LT5ucl9pcnFzICsgMSwKPiArCQkJCQkJICAgJmFwbGljX2RpcmVj dF9pcnFkb21haW5fb3BzLAo+ICsJCQkJCQkgICBwcml2KTsKPiArCWlmICghZGlyZWN0LT5pcnFk b21haW4pIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0IGlycSBk b21haW5cbiIpOwo+ICsJCWtmcmVlKGRpcmVjdCk7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwl9 Cj4gKwo+ICsJLyogQWR2ZXJ0aXNlIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAqLwo+ICsJZGV2 X2luZm8oZGV2LCAiJWQgaW50ZXJydXB0cyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gJWQgQ1BVc1xu IiwKPiArCQkgcHJpdi0+bnJfaXJxcywgcHJpdi0+bnJfaWRjcyk7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tYWlu LmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFwbGljLW1haW4uYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi44NzQ1MDcwOGE3MzMKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tYWluLmMKPiBAQCAt MCwwICsxLDIzMiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsv Kgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjEgV2VzdGVybiBEaWdpdGFsIENvcnBvcmF0aW9uIG9y IGl0cyBhZmZpbGlhdGVzLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgVmVudGFuYSBNaWNybyBT eXN0ZW1zIEluYy4KCjIwMjQgPwoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4K PiArI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcHJpbnRrLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaXJxY2hpcC9yaXNjdi1hcGxpYy5oPgo+ICsK PiArI2luY2x1ZGUgImlycS1yaXNjdi1hcGxpYy1tYWluLmgiCj4gKwo+ICt2b2lkIGFwbGljX2ly cV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKQo+ICt7Cj4gKwlzdHJ1Y3QgYXBsaWNfcHJpdiAq cHJpdiA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOwo+ICsKPiArCXdyaXRlbChkLT5o d2lycSwgcHJpdi0+cmVncyArIEFQTElDX1NFVElFTlVNKTsKPiArfQo+ICsKPiArdm9pZCBhcGxp Y19pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4gK3sKPiArCXN0cnVjdCBhcGxpY19wcml2 ICpwcml2ID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7Cj4gKwo+ICsJd3JpdGVsKGQt Pmh3aXJxLCBwcml2LT5yZWdzICsgQVBMSUNfQ0xSSUVOVU0pOwo+ICt9Cj4gKwo+ICtpbnQgYXBs aWNfaXJxX3NldF90eXBlKHN0cnVjdCBpcnFfZGF0YSAqZCwgdW5zaWduZWQgaW50IHR5cGUpCj4g K3sKPiArCXUzMiB2YWwgPSAwOwo+ICsJdm9pZCBfX2lvbWVtICpzb3VyY2VjZmc7Cj4gKwlzdHJ1 Y3QgYXBsaWNfcHJpdiAqcHJpdiA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOwo+ICsK PiArCXN3aXRjaCAodHlwZSkgewo+ICsJY2FzZSBJUlFfVFlQRV9OT05FOgo+ICsJCXZhbCA9IEFQ TElDX1NPVVJDRUNGR19TTV9JTkFDVElWRTsKPiArCQlicmVhazsKPiArCWNhc2UgSVJRX1RZUEVf TEVWRUxfTE9XOgo+ICsJCXZhbCA9IEFQTElDX1NPVVJDRUNGR19TTV9MRVZFTF9MT1c7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIElSUV9UWVBFX0xFVkVMX0hJR0g6Cj4gKwkJdmFsID0gQVBMSUNfU09V UkNFQ0ZHX1NNX0xFVkVMX0hJR0g7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIElSUV9UWVBFX0VER0Vf RkFMTElORzoKPiArCQl2YWwgPSBBUExJQ19TT1VSQ0VDRkdfU01fRURHRV9GQUxMOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBJUlFfVFlQRV9FREdFX1JJU0lORzoKPiArCQl2YWwgPSBBUExJQ19TT1VS Q0VDRkdfU01fRURHRV9SSVNFOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwlzb3VyY2VjZmcgPSBwcml2LT5yZWdzICsgQVBMSUNfU09V UkNFQ0ZHX0JBU0U7Cj4gKwlzb3VyY2VjZmcgKz0gKGQtPmh3aXJxIC0gMSkgKiBzaXplb2YodTMy KTsKPiArCXdyaXRlbCh2YWwsIHNvdXJjZWNmZyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK2ludCBhcGxpY19pcnFkb21haW5fdHJhbnNsYXRlKHN0cnVjdCBpcnFfZndzcGVjICpmd3Nw ZWMsIHUzMiBnc2lfYmFzZSwKPiArCQkJICAgICAgdW5zaWduZWQgbG9uZyAqaHdpcnEsIHVuc2ln bmVkIGludCAqdHlwZSkKPiArewo+ICsJaWYgKFdBUk5fT04oZndzcGVjLT5wYXJhbV9jb3VudCA8 IDIpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJaWYgKFdBUk5fT04oIWZ3c3BlYy0+cGFyYW1b MF0pKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCS8qIEZvciBEVCwgZ3NpX2Jhc2UgaXMg YWx3YXlzIHplcm8uICovCj4gKwkqaHdpcnEgPSBmd3NwZWMtPnBhcmFtWzBdIC0gZ3NpX2Jhc2U7 Cj4gKwkqdHlwZSA9IGZ3c3BlYy0+cGFyYW1bMV0gJiBJUlFfVFlQRV9TRU5TRV9NQVNLOwo+ICsK PiArCVdBUk5fT04oKnR5cGUgPT0gSVJRX1RZUEVfTk9ORSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3ZvaWQgYXBsaWNfaW5pdF9od19nbG9iYWwoc3RydWN0IGFwbGljX3ByaXYgKnBy aXYsIGJvb2wgbXNpX21vZGUpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKyNpZmRlZiBDT05GSUdfUklT Q1ZfTV9NT0RFCj4gKwl1MzIgdmFsSDsKPiArCj4gKwlpZiAobXNpX21vZGUpIHsKPiArCQl2YWwg PSBwcml2LT5tc2ljZmcuYmFzZV9wcG47Cj4gKwkJdmFsSCA9ICgodTY0KXByaXYtPm1zaWNmZy5i YXNlX3BwbiA+PiAzMikgJgo+ICsJCQlBUExJQ194TVNJQ0ZHQUREUkhfQkFQUE5fTUFTSzsKPiAr CQl2YWxIIHw9IChwcml2LT5tc2ljZmcubGh4dyAmIEFQTElDX3hNU0lDRkdBRERSSF9MSFhXX01B U0spCj4gKwkJCTw8IEFQTElDX3hNU0lDRkdBRERSSF9MSFhXX1NISUZUOwo+ICsJCXZhbEggfD0g KHByaXYtPm1zaWNmZy5oaHh3ICYgQVBMSUNfeE1TSUNGR0FERFJIX0hIWFdfTUFTSykKPiArCQkJ PDwgQVBMSUNfeE1TSUNGR0FERFJIX0hIWFdfU0hJRlQ7Cj4gKwkJdmFsSCB8PSAocHJpdi0+bXNp Y2ZnLmxoeHMgJiBBUExJQ194TVNJQ0ZHQUREUkhfTEhYU19NQVNLKQo+ICsJCQk8PCBBUExJQ194 TVNJQ0ZHQUREUkhfTEhYU19TSElGVDsKPiArCQl2YWxIIHw9IChwcml2LT5tc2ljZmcuaGh4cyAm IEFQTElDX3hNU0lDRkdBRERSSF9ISFhTX01BU0spCj4gKwkJCTw8IEFQTElDX3hNU0lDRkdBRERS SF9ISFhTX1NISUZUOwoKVXNlIEZJRUxEX1BSRVAgZm9yIGFsbCBvZiB0aGVzZS4KCj4gKwkJd3Jp dGVsKHZhbCwgcHJpdi0+cmVncyArIEFQTElDX3hNU0lDRkdBRERSKTsKPiArCQl3cml0ZWwodmFs SCwgcHJpdi0+cmVncyArIEFQTElDX3hNU0lDRkdBRERSSCk7Cj4gKwl9Cj4gKyNlbmRpZgo+ICsK PiArCS8qIFNldHVwIEFQTElDIGRvbWFpbmNmZyByZWdpc3RlciAqLwo+ICsJdmFsID0gcmVhZGwo cHJpdi0+cmVncyArIEFQTElDX0RPTUFJTkNGRyk7Cj4gKwl2YWwgfD0gQVBMSUNfRE9NQUlOQ0ZH X0lFOwo+ICsJaWYgKG1zaV9tb2RlKQo+ICsJCXZhbCB8PSBBUExJQ19ET01BSU5DRkdfRE07Cj4g Kwl3cml0ZWwodmFsLCBwcml2LT5yZWdzICsgQVBMSUNfRE9NQUlOQ0ZHKTsKPiArCWlmIChyZWFk bChwcml2LT5yZWdzICsgQVBMSUNfRE9NQUlOQ0ZHKSAhPSB2YWwpCj4gKwkJZGV2X3dhcm4ocHJp di0+ZGV2LCAidW5hYmxlIHRvIHdyaXRlIDB4JXggaW4gZG9tYWluY2ZnXG4iLAo+ICsJCQkgdmFs KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXBsaWNfaW5pdF9od19pcnFzKHN0cnVjdCBhcGxp Y19wcml2ICpwcml2KQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwkvKiBEaXNhYmxlIGFsbCBpbnRl cnJ1cHRzICovCj4gKwlmb3IgKGkgPSAwOyBpIDw9IHByaXYtPm5yX2lycXM7IGkgKz0gMzIpCj4g KwkJd3JpdGVsKC0xVSwgcHJpdi0+cmVncyArIEFQTElDX0NMUklFX0JBU0UgKwo+ICsJCQkgICAg KGkgLyAzMikgKiBzaXplb2YodTMyKSk7Cj4gKwo+ICsJLyogU2V0IGludGVycnVwdCB0eXBlIGFu ZCBkZWZhdWx0IHByaW9yaXR5IGZvciBhbGwgaW50ZXJydXB0cyAqLwo+ICsJZm9yIChpID0gMTsg aSA8PSBwcml2LT5ucl9pcnFzOyBpKyspIHsKPiArCQl3cml0ZWwoMCwgcHJpdi0+cmVncyArIEFQ TElDX1NPVVJDRUNGR19CQVNFICsKPiArCQkJICAoaSAtIDEpICogc2l6ZW9mKHUzMikpOwo+ICsJ CXdyaXRlbChBUExJQ19ERUZBVUxUX1BSSU9SSVRZLAo+ICsJCSAgICAgICBwcml2LT5yZWdzICsg QVBMSUNfVEFSR0VUX0JBU0UgKwo+ICsJCSAgICAgICAoaSAtIDEpICogc2l6ZW9mKHUzMikpOwo+ ICsJfQo+ICsKPiArCS8qIENsZWFyIEFQTElDIGRvbWFpbmNmZyAqLwo+ICsJd3JpdGVsKDAsIHBy aXYtPnJlZ3MgKyBBUExJQ19ET01BSU5DRkcpOwo+ICt9Cj4gKwo+ICtpbnQgYXBsaWNfc2V0dXBf cHJpdihzdHJ1Y3QgYXBsaWNfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCSAg ICAgdm9pZCBfX2lvbWVtICpyZWdzKQo+ICt7Cj4gKwlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzIHBh cmVudDsKPiArCWludCByYzsKPiArCj4gKwkvKgo+ICsJICogQ3VycmVudGx5LCBvbmx5IE9GIGZ3 bm9kZSBpcyBzdXBwb3J0ZWQgc28gZXh0ZW5kIHRoaXMKPiArCSAqIGZ1bmN0aW9uIGZvciBBQ1BJ IHN1cHBvcnQuCj4gKwkgKi8KPiArCWlmICghaXNfb2Zfbm9kZShkZXYtPmZ3bm9kZSkpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogU2F2ZSBkZXZpY2UgcG9pbnRlciBhbmQgcmVnaXN0 ZXIgYmFzZSAqLwo+ICsJcHJpdi0+ZGV2ID0gZGV2Owo+ICsJcHJpdi0+cmVncyA9IHJlZ3M7Cj4g Kwo+ICsJLyogRmluZCBvdXQgbnVtYmVyIG9mIGludGVycnVwdCBzb3VyY2VzICovCj4gKwlyYyA9 IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHRvX29mX25vZGUoZGV2LT5md25vZGUpLAo+ICsJCQkJCSAg ICAgInJpc2N2LG51bS1zb3VyY2VzIiwKPiArCQkJCQkgICAgICZwcml2LT5ucl9pcnFzKTsKClVz ZSBkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoKSB3aGljaCB3b3JrcyBmb3IgYm90aCBBQ1BJIGFu ZCBPRi4KCj4gKwlpZiAocmMpIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgbnVt YmVyIG9mIGludGVycnVwdCBzb3VyY2VzXG4iKTsKPiArCQlyZXR1cm4gcmM7Cj4gKwl9Cj4gKwo+ ICsJLyoKPiArCSAqIEZpbmQgb3V0IG51bWJlciBvZiBJRENzIGJhc2VkIG9uIHBhcmVudCBpbnRl cnJ1cHRzCj4gKwkgKgo+ICsJICogSWYgIm1zaS1wYXJlbnQiIHByb3BlcnR5IGlzIHByZXNlbnQg dGhlbiB3ZSBpZ25vcmUgdGhlCj4gKwkgKiBBUExJQyBJRENzIHdoaWNoIGZvcmNlcyB0aGUgQVBM SUMgZHJpdmVyIHRvIHVzZSBNU0kgbW9kZS4KPiArCSAqLwo+ICsJaWYgKCFvZl9wcm9wZXJ0eV9w cmVzZW50KHRvX29mX25vZGUoZGV2LT5md25vZGUpLCAibXNpLXBhcmVudCIpKSB7CgpkZXZpY2Vf cHJvcGVydHlfcHJlc2VudCgpCgo+ICsJCXdoaWxlICghb2ZfaXJxX3BhcnNlX29uZSh0b19vZl9u b2RlKGRldi0+Zndub2RlKSwKPiArCQkJCQkgcHJpdi0+bnJfaWRjcywgJnBhcmVudCkpCj4gKwkJ CXByaXYtPm5yX2lkY3MrKzsKPiArCX0KPiArCj4gKwkvKiBTZXR1cCBpbml0aWFsIHN0YXRlIEFQ TElDIGludGVycnVwdHMgKi8KPiArCWFwbGljX2luaXRfaHdfaXJxcyhwcml2KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhcGxpY19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 Owo+ICsJYm9vbCBtc2lfbW9kZSA9IGZhbHNlOwo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4g Kwl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJLyogTWFwIHRoZSBNTUlP IHJlZ2lzdGVycyAqLwo+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsKPiArCWlmICghcmVzKSB7Cj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQg dG8gZ2V0IE1NSU8gcmVzb3VyY2VcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsJ cmVncyA9IGRldm1faW9yZW1hcCgmcGRldi0+ZGV2LCByZXMtPnN0YXJ0LCByZXNvdXJjZV9zaXpl KHJlcykpOwo+ICsJaWYgKCFyZWdzKSB7Cj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgbWFwIE1N SU8gcmVnaXN0ZXJzXG4iKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KCk1heWJlIHVzZSBk ZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UoKSBzaW5jZSB5b3UgZG9uJ3QgbmVlZCAicmVz IgphZnRlciB0aGF0LgoKCj4gKwo+ICsJLyoKPiArCSAqIElmIG1zaS1wYXJlbnQgcHJvcGVydHkg aXMgcHJlc2VudCB0aGVuIHNldHVwIEFQTElDIE1TSQo+ICsJICogbW9kZSBvdGhlcndpc2Ugc2V0 dXAgQVBMSUMgZGlyZWN0IG1vZGUuCj4gKwkgKi8KPiArCWlmIChpc19vZl9ub2RlKGRldi0+Zndu b2RlKSkKPiArCQltc2lfbW9kZSA9IG9mX3Byb3BlcnR5X3ByZXNlbnQodG9fb2Zfbm9kZShkZXYt PmZ3bm9kZSksCj4gKwkJCQkJCSJtc2ktcGFyZW50Iik7Cj4gKwlpZiAobXNpX21vZGUpCj4gKwkJ cmMgPSAtRU5PREVWOwo+ICsJZWxzZQo+ICsJCXJjID0gYXBsaWNfZGlyZWN0X3NldHVwKGRldiwg cmVncyk7Cj4gKwlpZiAocmMpIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCBzZXR1cCBBUExJ QyBpbiAlcyBtb2RlXG4iLApuaXRwaWNrOiBtYXliZSByZXdvcmQgaXQgbGlrZSAiRmFpbGVkIHRv IHNldHVwIEFQTElDIiBvciAiQVBMSUMgc2V0dXAKZmFpbGVkIGluICVzIG1vZGUiCgo+ICsJCQlt c2lfbW9kZSA/ICJNU0kiIDogImRpcmVjdCIpOwo+ICsJCXJldHVybiByYzsKClJlbW92ZSB0aGlz IHJldHVybi4KCj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7CgpyZXR1cm4gcmM7Cgo+ICt9Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhcGxpY19tYXRjaFtdID0gewo+ICsJ eyAuY29tcGF0aWJsZSA9ICJyaXNjdixhcGxpYyIgfSwKPiArCXt9Cj4gK307Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhcGxpY19kcml2ZXIgPSB7Cj4gKwkuZHJpdmVyID0g ewo+ICsJCS5uYW1lCQk9ICJyaXNjdi1hcGxpYyIsCj4gKwkJLm9mX21hdGNoX3RhYmxlCT0gYXBs aWNfbWF0Y2gsCj4gKwl9LAo+ICsJLnByb2JlID0gYXBsaWNfcHJvYmUsCj4gK307Cj4gK2J1aWx0 aW5fcGxhdGZvcm1fZHJpdmVyKGFwbGljX2RyaXZlcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv aXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMtbWFpbi5oIGIvZHJpdmVycy9pcnFjaGlwL2lycS1yaXNj di1hcGxpYy1tYWluLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAw MC4uNDc0YTA0MjI5MzM0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvaXJxY2hpcC9p cnEtcmlzY3YtYXBsaWMtbWFpbi5oCj4gQEAgLTAsMCArMSw0NSBAQAo+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykg MjAyMSBXZXN0ZXJuIERpZ2l0YWwgQ29ycG9yYXRpb24gb3IgaXRzIGFmZmlsaWF0ZXMuCj4gKyAq IENvcHlyaWdodCAoQykgMjAyMiBWZW50YW5hIE1pY3JvIFN5c3RlbXMgSW5jLgoKMjAyNCA/Cgo+ ICsgKi8KPiArCj4gKyNpZm5kZWYgX0lSUV9SSVNDVl9BUExJQ19NQUlOX0gKPiArI2RlZmluZSBf SVJRX1JJU0NWX0FQTElDX01BSU5fSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPgo+ICsjaW5j bHVkZSA8bGludXgvaXJxZG9tYWluLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9md25vZGUuaD4KPiAr Cj4gKyNkZWZpbmUgQVBMSUNfREVGQVVMVF9QUklPUklUWQkJMQo+ICsKPiArc3RydWN0IGFwbGlj X21zaWNmZyB7Cj4gKwlwaHlzX2FkZHJfdAkJYmFzZV9wcG47Cj4gKwl1MzIJCQloaHhzOwo+ICsJ dTMyCQkJaGh4dzsKPiArCXUzMgkJCWxoeHM7Cj4gKwl1MzIJCQlsaHh3Owo+ICt9Owo+ICsKPiAr c3RydWN0IGFwbGljX3ByaXYgewo+ICsJc3RydWN0IGRldmljZQkJKmRldjsKPiArCXUzMgkJCWdz aV9iYXNlOwo+ICsJdTMyCQkJbnJfaXJxczsKPiArCXUzMgkJCW5yX2lkY3M7Cj4gKwl2b2lkIF9f aW9tZW0JCSpyZWdzOwo+ICsJc3RydWN0IGFwbGljX21zaWNmZwltc2ljZmc7Cj4gK307Cj4gKwo+ ICt2b2lkIGFwbGljX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKTsKPiArdm9pZCBhcGxp Y19pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpOwo+ICtpbnQgYXBsaWNfaXJxX3NldF90eXBl KHN0cnVjdCBpcnFfZGF0YSAqZCwgdW5zaWduZWQgaW50IHR5cGUpOwo+ICtpbnQgYXBsaWNfaXJx ZG9tYWluX3RyYW5zbGF0ZShzdHJ1Y3QgaXJxX2Z3c3BlYyAqZndzcGVjLCB1MzIgZ3NpX2Jhc2Us Cj4gKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgKmh3aXJxLCB1bnNpZ25lZCBpbnQgKnR5cGUpOwo+ ICt2b2lkIGFwbGljX2luaXRfaHdfZ2xvYmFsKHN0cnVjdCBhcGxpY19wcml2ICpwcml2LCBib29s IG1zaV9tb2RlKTsKPiAraW50IGFwbGljX3NldHVwX3ByaXYoc3RydWN0IGFwbGljX3ByaXYgKnBy aXYsIHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkgICAgIHZvaWQgX19pb21lbSAqcmVncyk7Cj4g K2ludCBhcGxpY19kaXJlY3Rfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0g KnJlZ3MpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXJxY2hp cC9yaXNjdi1hcGxpYy5oIGIvaW5jbHVkZS9saW51eC9pcnFjaGlwL3Jpc2N2LWFwbGljLmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTdlMTk4ZWEwMTA5Cj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvbGludXgvaXJxY2hpcC9yaXNjdi1hcGxpYy5o Cj4gQEAgLTAsMCArMSwxMTkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjEgV2VzdGVybiBEaWdpdGFs IENvcnBvcmF0aW9uIG9yIGl0cyBhZmZpbGlhdGVzLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIg VmVudGFuYSBNaWNybyBTeXN0ZW1zIEluYy4KPiArICovCj4gKyNpZm5kZWYgX19MSU5VWF9JUlFD SElQX1JJU0NWX0FQTElDX0gKPiArI2RlZmluZSBfX0xJTlVYX0lSUUNISVBfUklTQ1ZfQVBMSUNf SAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ICsKPiArI2RlZmluZSBBUExJQ19N QVhfSURDCQkJQklUKDE0KQo+ICsjZGVmaW5lIEFQTElDX01BWF9TT1VSQ0UJCTEwMjQKPiArCj4g KyNkZWZpbmUgQVBMSUNfRE9NQUlOQ0ZHCQkJMHgwMDAwCj4gKyNkZWZpbmUgQVBMSUNfRE9NQUlO Q0ZHX1JET05MWQkJMHg4MDAwMDAwMAo+ICsjZGVmaW5lIEFQTElDX0RPTUFJTkNGR19JRQkJQklU KDgpCj4gKyNkZWZpbmUgQVBMSUNfRE9NQUlOQ0ZHX0RNCQlCSVQoMikKPiArI2RlZmluZSBBUExJ Q19ET01BSU5DRkdfQkUJCUJJVCgwKQo+ICsKPiArI2RlZmluZSBBUExJQ19TT1VSQ0VDRkdfQkFT RQkJMHgwMDA0Cj4gKyNkZWZpbmUgQVBMSUNfU09VUkNFQ0ZHX0QJCUJJVCgxMCkKPiArI2RlZmlu ZSBBUExJQ19TT1VSQ0VDRkdfQ0hJTERJRFhfTUFTSwkweDAwMDAwM2ZmCj4gKyNkZWZpbmUgQVBM SUNfU09VUkNFQ0ZHX1NNX01BU0sJMHgwMDAwMDAwNwo+ICsjZGVmaW5lIEFQTElDX1NPVVJDRUNG R19TTV9JTkFDVElWRQkweDAKPiArI2RlZmluZSBBUExJQ19TT1VSQ0VDRkdfU01fREVUQUNICTB4 MQo+ICsjZGVmaW5lIEFQTElDX1NPVVJDRUNGR19TTV9FREdFX1JJU0UJMHg0Cj4gKyNkZWZpbmUg QVBMSUNfU09VUkNFQ0ZHX1NNX0VER0VfRkFMTAkweDUKPiArI2RlZmluZSBBUExJQ19TT1VSQ0VD RkdfU01fTEVWRUxfSElHSAkweDYKPiArI2RlZmluZSBBUExJQ19TT1VSQ0VDRkdfU01fTEVWRUxf TE9XCTB4Nwo+ICsKPiArI2RlZmluZSBBUExJQ19NTVNJQ0ZHQUREUgkJMHgxYmMwCj4gKyNkZWZp bmUgQVBMSUNfTU1TSUNGR0FERFJICQkweDFiYzQKPiArI2RlZmluZSBBUExJQ19TTVNJQ0ZHQURE UgkJMHgxYmM4Cj4gKyNkZWZpbmUgQVBMSUNfU01TSUNGR0FERFJICQkweDFiY2MKPiArCj4gKyNp ZmRlZiBDT05GSUdfUklTQ1ZfTV9NT0RFCj4gKyNkZWZpbmUgQVBMSUNfeE1TSUNGR0FERFIJCUFQ TElDX01NU0lDRkdBRERSCj4gKyNkZWZpbmUgQVBMSUNfeE1TSUNGR0FERFJICQlBUExJQ19NTVNJ Q0ZHQUREUkgKPiArI2Vsc2UKPiArI2RlZmluZSBBUExJQ194TVNJQ0ZHQUREUgkJQVBMSUNfU01T SUNGR0FERFIKPiArI2RlZmluZSBBUExJQ194TVNJQ0ZHQUREUkgJCUFQTElDX1NNU0lDRkdBRERS SAo+ICsjZW5kaWYKPiArCj4gKyNkZWZpbmUgQVBMSUNfeE1TSUNGR0FERFJIX0wJCUJJVCgzMSkK PiArI2RlZmluZSBBUExJQ194TVNJQ0ZHQUREUkhfSEhYU19NQVNLCTB4MWYKPiArI2RlZmluZSBB UExJQ194TVNJQ0ZHQUREUkhfSEhYU19TSElGVAkyNAo+ICsjZGVmaW5lIEFQTElDX3hNU0lDRkdB RERSSF9MSFhTX01BU0sJMHg3Cj4gKyNkZWZpbmUgQVBMSUNfeE1TSUNGR0FERFJIX0xIWFNfU0hJ RlQJMjAKPiArI2RlZmluZSBBUExJQ194TVNJQ0ZHQUREUkhfSEhYV19NQVNLCTB4Nwo+ICsjZGVm aW5lIEFQTElDX3hNU0lDRkdBRERSSF9ISFhXX1NISUZUCTE2Cj4gKyNkZWZpbmUgQVBMSUNfeE1T SUNGR0FERFJIX0xIWFdfTUFTSwkweGYKPiArI2RlZmluZSBBUExJQ194TVNJQ0ZHQUREUkhfTEhY V19TSElGVAkxMgo+ICsjZGVmaW5lIEFQTElDX3hNU0lDRkdBRERSSF9CQVBQTl9NQVNLCTB4ZmZm Cj4gKwo+ICsjZGVmaW5lIEFQTElDX3hNU0lDRkdBRERSX1BQTl9TSElGVAkxMgo+ICsKPiArI2Rl ZmluZSBBUExJQ194TVNJQ0ZHQUREUl9QUE5fSEFSVChfX2xoeHMpIFwKPiArCShCSVQoX19saHhz KSAtIDEpCj4gKwo+ICsjZGVmaW5lIEFQTElDX3hNU0lDRkdBRERSX1BQTl9MSFhfTUFTSyhfX2xo eHcpIFwKPiArCShCSVQoX19saHh3KSAtIDEpCj4gKyNkZWZpbmUgQVBMSUNfeE1TSUNGR0FERFJf UFBOX0xIWF9TSElGVChfX2xoeHMpIFwKPiArCSgoX19saHhzKSkKPiArI2RlZmluZSBBUExJQ194 TVNJQ0ZHQUREUl9QUE5fTEhYKF9fbGh4dywgX19saHhzKSBcCj4gKwkoQVBMSUNfeE1TSUNGR0FE RFJfUFBOX0xIWF9NQVNLKF9fbGh4dykgPDwgXAo+ICsJIEFQTElDX3hNU0lDRkdBRERSX1BQTl9M SFhfU0hJRlQoX19saHhzKSkKPiArCj4gKyNkZWZpbmUgQVBMSUNfeE1TSUNGR0FERFJfUFBOX0hI WF9NQVNLKF9faGh4dykgXAo+ICsJKEJJVChfX2hoeHcpIC0gMSkKPiArI2RlZmluZSBBUExJQ194 TVNJQ0ZHQUREUl9QUE5fSEhYX1NISUZUKF9faGh4cykgXAo+ICsJKChfX2hoeHMpICsgQVBMSUNf eE1TSUNGR0FERFJfUFBOX1NISUZUKQo+ICsjZGVmaW5lIEFQTElDX3hNU0lDRkdBRERSX1BQTl9I SFgoX19oaHh3LCBfX2hoeHMpIFwKPiArCShBUExJQ194TVNJQ0ZHQUREUl9QUE5fSEhYX01BU0so X19oaHh3KSA8PCBcCj4gKwkgQVBMSUNfeE1TSUNGR0FERFJfUFBOX0hIWF9TSElGVChfX2hoeHMp KQo+ICsKPiArI2RlZmluZSBBUExJQ19JUlFCSVRTX1BFUl9SRUcJCTMyCj4gKwo+ICsjZGVmaW5l IEFQTElDX1NFVElQX0JBU0UJCTB4MWMwMAo+ICsjZGVmaW5lIEFQTElDX1NFVElQTlVNCQkJMHgx Y2RjCj4gKwo+ICsjZGVmaW5lIEFQTElDX0NMUklQX0JBU0UJCTB4MWQwMAo+ICsjZGVmaW5lIEFQ TElDX0NMUklQTlVNCQkJMHgxZGRjCj4gKwo+ICsjZGVmaW5lIEFQTElDX1NFVElFX0JBU0UJCTB4 MWUwMAo+ICsjZGVmaW5lIEFQTElDX1NFVElFTlVNCQkJMHgxZWRjCj4gKwo+ICsjZGVmaW5lIEFQ TElDX0NMUklFX0JBU0UJCTB4MWYwMAo+ICsjZGVmaW5lIEFQTElDX0NMUklFTlVNCQkJMHgxZmRj Cj4gKwo+ICsjZGVmaW5lIEFQTElDX1NFVElQTlVNX0xFCQkweDIwMDAKPiArI2RlZmluZSBBUExJ Q19TRVRJUE5VTV9CRQkJMHgyMDA0Cj4gKwo+ICsjZGVmaW5lIEFQTElDX0dFTk1TSQkJCTB4MzAw MAo+ICsKPiArI2RlZmluZSBBUExJQ19UQVJHRVRfQkFTRQkJMHgzMDA0Cj4gKyNkZWZpbmUgQVBM SUNfVEFSR0VUX0hBUlRfSURYX1NISUZUCTE4Cj4gKyNkZWZpbmUgQVBMSUNfVEFSR0VUX0hBUlRf SURYX01BU0sJMHgzZmZmCj4gKyNkZWZpbmUgQVBMSUNfVEFSR0VUX0dVRVNUX0lEWF9TSElGVAkx Mgo+ICsjZGVmaW5lIEFQTElDX1RBUkdFVF9HVUVTVF9JRFhfTUFTSwkweDNmCj4gKyNkZWZpbmUg QVBMSUNfVEFSR0VUX0lQUklPX01BU0sJMHhmZgo+ICsjZGVmaW5lIEFQTElDX1RBUkdFVF9FSUlE X01BU0sJMHg3ZmYKPiArCj4gKyNkZWZpbmUgQVBMSUNfSURDX0JBU0UJCQkweDQwMDAKPiArI2Rl ZmluZSBBUExJQ19JRENfU0laRQkJCTMyCj4gKwo+ICsjZGVmaW5lIEFQTElDX0lEQ19JREVMSVZF UlkJCTB4MDAKPiArCj4gKyNkZWZpbmUgQVBMSUNfSURDX0lGT1JDRQkJMHgwNAo+ICsKPiArI2Rl ZmluZSBBUExJQ19JRENfSVRIUkVTSE9MRAkJMHgwOAo+ICsKPiArI2RlZmluZSBBUExJQ19JRENf VE9QSQkJCTB4MTgKPiArI2RlZmluZSBBUExJQ19JRENfVE9QSV9JRF9TSElGVAkxNgo+ICsjZGVm aW5lIEFQTElDX0lEQ19UT1BJX0lEX01BU0sJMHgzZmYKPiArI2RlZmluZSBBUExJQ19JRENfVE9Q SV9QUklPX01BU0sJMHhmZgo+ICsKPiArI2RlZmluZSBBUExJQ19JRENfQ0xBSU1JCQkweDFjCj4g Kwo+ICsjZW5kaWYKCgpUaGFua3MsCgpDbMOpbWVudAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=