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 C7414C369D9 for ; Wed, 30 Apr 2025 08:05:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:Reply-To:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:Subject: From:MIME-Version:Date:Message-ID:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=LKlThaKf4Qbtqyqk7yy8fDABzOZBP2oKqvniEoI2JRk=; b=dLVzhaSxMFq3DQBu/d/6zqc1aZ nBKSBhWyQ1YacjwM9wRiSZ86jJED+PjACf57ihaBsje25dFD+XkKdTE9Xaz7aIM8SB5cPsEyZzt9m u2Fl/n6hpalI3D1uEMu8+q0kXaFDT3xpkrHkz83syGPqs7TQvtrwwIVZ6HoDe88+/65C9a7dHJABj qs4PgVGxOFhNslsV4af/aHw/o2CkvIrAOp3x3Mgv0ZK3/6e53E+mvyaAQYS7/vJXm4jg6fP0RfJkV 3Ps3+gtUl9zryDYLONnYdoC7owHplcJxzZ/Bj8wqRtzTCsd+bKbq7ly8uoofppFT6o4dbQwLp8Fib LE/Zh1Eg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uA2RW-0000000C5jI-2b9X; Wed, 30 Apr 2025 08:05:22 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uA26a-0000000C1o8-0QWb for linux-amlogic@lists.infradead.org; Wed, 30 Apr 2025 07:43:45 +0000 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-39c1ef4acf2so5233771f8f.0 for ; Wed, 30 Apr 2025 00:43:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1745999022; x=1746603822; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=9SzEy6AnjCXnf6XCivHNCHEN/tEDWXGvmycVUe8Tdeg=; b=sdfC60hh0zQU4rTda02L83n1kvtQrYjlBs0gQaTXhwLTbiFvIHe6DflRek+NzgBs4y FfufKNi+TxXd8cRz8d7CqlN0AGKx0DZEw+54NHAKMaXrnIkrU8VJOmIgBcuMTfcl6F++ t9MiTy4Z3OytD+JJuTveBdAhSfJEJQHs4usYSutwtIcEXL2Xqz4I5jrbeMW6b9WhiKW/ 4Xw691vkO8NTBdRxlnbXvF//MJ2FS0Ci7BP0ZX5dZUSCMz1Lky1hMhAFp2XefU31f1ni 3aZ63vnfb4XY9jNZMwvONKVj0lsgkQ7IGgqEN5lIrJidzcgf2+KwjRBFnX/TNkklDfFk kwLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745999022; x=1746603822; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=9SzEy6AnjCXnf6XCivHNCHEN/tEDWXGvmycVUe8Tdeg=; b=Y/YdN3b93EplINuwocxIWgs0NEWOoR4PUi/DIVGqlDwTUYA92tTN8CqGu7iZWWosAH 66S+9LQEHBu2dHEoUQMcY3Dzaen4ovxWoK+7FyVv6i1Tvx021BRgzMEcXWZdLXiIlwAx DGbdHF0hmwQp8YXlaenFsnuYxtyDVAhV8Mo273lToD8W9MCN7mdFuDiToL6sfp88m0WE Hs8W4GnlIiAgTBL/A9VDd3tFE3+7zvfSKkyoXv4zpUmw0NcDGQaDk/FoKB6vRqvxZTov MUiflkBdPHnbuSgy1jr3f6ZTRCrwxvnl0hz7RZ2ePVWlt+FaOSGPBI8TgImdxw6WH2wv EPtQ== X-Forwarded-Encrypted: i=1; AJvYcCVdkE+SPWD1UQePcwOo5j77wNhlz1aesHgXuyDFnLBs5RTAy0RAeVFt/zP4wN6H/vqfZTjmohTT6PjzCSjf@lists.infradead.org X-Gm-Message-State: AOJu0Yy8Tj9aJYMO+yIXXin4tetgG/7H2WBTpM2FUnv47WaXtgR34wRd CH4kUDdbCcA12QOEHqyJkvmP+4vpvM4/S8l4pYxMTINrvAPW4cnEFTqrB0YRocU= X-Gm-Gg: ASbGncvrEPCwQKYdYmTfLlhyWWkvDPk2C/LcNaKhFfLYT5Qv5d+VI93zElG2tWgrWK3 a2szoN7FmIGAO9OSHxieAqF+Buf+lhKKLfIgZRfpk6nDH1n6ACrMS9fYDCstipmh1pWiPb8MY84 b6BO+leVwHsi+cAL/IOA8s+zNWl2r1Nlhl4xZ1AceeG8ZUG2Kpx4TYqOiRjrfzIvbVWi3PA3Hnv QlpW/pmXxt9clYzSjFQB1HuiUo8glANXbYDS7p6QshM04xlLjVnIbYtLjFAieRU4DJkDtdoIyty HEwyWy3dBahxmcIx0hFI6xnAA+Ch6tSEBj3+2uoXat4GTG6OmG/xYoyeg/ngl4e6noHK6dYY574 pVWRCAWR5a6/0P85FAQ== X-Google-Smtp-Source: AGHT+IEr1/MzNOmXxqQwDD4O840Mb+7POrGnK1mUIw70eit5hq1zEM9H1eqLXUSzjw3gY02wAaBIag== X-Received: by 2002:a05:6000:3104:b0:39e:cbf2:e23f with SMTP id ffacd0b85a97d-3a08f728f4fmr1951888f8f.0.1745999021648; Wed, 30 Apr 2025 00:43:41 -0700 (PDT) Received: from ?IPV6:2a01:e0a:3d9:2080:b3d6:213c:5c50:7785? ([2a01:e0a:3d9:2080:b3d6:213c:5c50:7785]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a073e5e198sm16578112f8f.97.2025.04.30.00.43.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 30 Apr 2025 00:43:41 -0700 (PDT) Message-ID: Date: Wed, 30 Apr 2025 09:43:40 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Neil Armstrong Subject: Re: [PATCH v2] spi: meson-spicc: add DMA support To: Da Xue , xianwei.zhao@amlogic.com Cc: Mark Brown , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Sunny Luo References: <20250414-spi-dma-v2-1-84bbd92fa469@amlogic.com> Content-Language: en-US, fr Autocrypt: addr=neil.armstrong@linaro.org; keydata= xsBNBE1ZBs8BCAD78xVLsXPwV/2qQx2FaO/7mhWL0Qodw8UcQJnkrWmgTFRobtTWxuRx8WWP GTjuhvbleoQ5Cxjr+v+1ARGCH46MxFP5DwauzPekwJUD5QKZlaw/bURTLmS2id5wWi3lqVH4 BVF2WzvGyyeV1o4RTCYDnZ9VLLylJ9bneEaIs/7cjCEbipGGFlfIML3sfqnIvMAxIMZrvcl9 qPV2k+KQ7q+aXavU5W+yLNn7QtXUB530Zlk/d2ETgzQ5FLYYnUDAaRl+8JUTjc0CNOTpCeik 80TZcE6f8M76Xa6yU8VcNko94Ck7iB4vj70q76P/J7kt98hklrr85/3NU3oti3nrIHmHABEB AAHNKk5laWwgQXJtc3Ryb25nIDxuZWlsLmFybXN0cm9uZ0BsaW5hcm8ub3JnPsLAkQQTAQoA OwIbIwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBInsPQWERiF0UPIoSBaat7Gkz/iuBQJk Q5wSAhkBAAoJEBaat7Gkz/iuyhMIANiD94qDtUTJRfEW6GwXmtKWwl/mvqQtaTtZID2dos04 YqBbshiJbejgVJjy+HODcNUIKBB3PSLaln4ltdsV73SBcwUNdzebfKspAQunCM22Mn6FBIxQ GizsMLcP/0FX4en9NaKGfK6ZdKK6kN1GR9YffMJd2P08EO8mHowmSRe/ExAODhAs9W7XXExw UNCY4pVJyRPpEhv373vvff60bHxc1k/FF9WaPscMt7hlkbFLUs85kHtQAmr8pV5Hy9ezsSRa GzJmiVclkPc2BY592IGBXRDQ38urXeM4nfhhvqA50b/nAEXc6FzqgXqDkEIwR66/Gbp0t3+r yQzpKRyQif3OwE0ETVkGzwEIALyKDN/OGURaHBVzwjgYq+ZtifvekdrSNl8TIDH8g1xicBYp QTbPn6bbSZbdvfeQPNCcD4/EhXZuhQXMcoJsQQQnO4vwVULmPGgtGf8PVc7dxKOeta+qUh6+ SRh3vIcAUFHDT3f/Zdspz+e2E0hPV2hiSvICLk11qO6cyJE13zeNFoeY3ggrKY+IzbFomIZY 4yG6xI99NIPEVE9lNBXBKIlewIyVlkOaYvJWSV+p5gdJXOvScNN1epm5YHmf9aE2ZjnqZGoM Mtsyw18YoX9BqMFInxqYQQ3j/HpVgTSvmo5ea5qQDDUaCsaTf8UeDcwYOtgI8iL4oHcsGtUX oUk33HEAEQEAAcLAXwQYAQIACQUCTVkGzwIbDAAKCRAWmrexpM/4rrXiB/sGbkQ6itMrAIfn M7IbRuiSZS1unlySUVYu3SD6YBYnNi3G5EpbwfBNuT3H8//rVvtOFK4OD8cRYkxXRQmTvqa3 3eDIHu/zr1HMKErm+2SD6PO9umRef8V82o2oaCLvf4WeIssFjwB0b6a12opuRP7yo3E3gTCS KmbUuLv1CtxKQF+fUV1cVaTPMyT25Od+RC1K+iOR0F54oUJvJeq7fUzbn/KdlhA8XPGzwGRy 4zcsPWvwnXgfe5tk680fEKZVwOZKIEuJC3v+/yZpQzDvGYJvbyix0lHnrCzq43WefRHI5XTT QbM0WUIBIcGmq38+OgUsMYu4NzLu7uZFAcmp6h8g Organization: Linaro In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250430_004344_180382_3A4E65E3 X-CRM114-Status: GOOD ( 32.50 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: neil.armstrong@linaro.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gMzAvMDQvMjAyNSAwNDoxMywgRGEgWHVlIHdyb3RlOgo+IE9uIE1vbiwgQXByIDE0LCAyMDI1 IGF0IDI6MzDigK9BTSBYaWFud2VpIFpoYW8gdmlhIEI0IFJlbGF5Cj4gPGRldm51bGwreGlhbndl aS56aGFvLmFtbG9naWMuY29tQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBGcm9tOiBYaWFud2Vp IFpoYW8gPHhpYW53ZWkuemhhb0BhbWxvZ2ljLmNvbT4KPj4KPj4gQWRkIERNQSBzdXBwb3J0IGZv ciBzcGljYyBkcml2ZXIuCj4+Cj4+IERNQSB3b3JrcyBpZiB0aGUgdHJhbnNmZXIgbWVldHMgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiAxLiA2NCBiaXRzIHBlciB3b3JkOwo+PiAyLiBUaGUg dHJhbnNmZXIgbGVuZ3RoIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoZSBkbWFfYnVyc3RfbGVuLAo+ PiAgICAgYW5kIHRoZSBkbWFfYnVyc3RfbGVuIHNob3VsZCBiZSBvbmUgb2YgOCw3Li4uMiwKPj4g ICAgIG90aGVyd2lzZSwgaXQgd2lsbCBiZSBzcGxpdCBpbnRvIHNldmVyYWwgU1BJIGJ1cnN0cy4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogU3VubnkgTHVvIDxzdW5ueS5sdW9AYW1sb2dpYy5jb20+Cj4+ IFNpZ25lZC1vZmYtYnk6IFhpYW53ZWkgWmhhbyA8eGlhbndlaS56aGFvQGFtbG9naWMuY29tPgo+ PiAtLS0KPj4gQ2hhbmdlcyBpbiB2MjoKPj4gLSBNYWtlIGZvcm1hdHRpbmcgYWRqdXN0bWVudHMg YW5kIGNvZGUgb3B0aW1pemF0aW9ucyBhY2NvcmRpbmcgdG8gTmVpbCdzIHN1Z2dlc3Rpb25zLgo+ PiAtIFJlbW92ZSB0d28gc3BlY2lhbCBETUEgdHJpZ2dlciBtb2RlcyB0aGF0IGFyZSBub3QgZnVs bHkgaW1wbGVtZW50ZWQuCj4+IC0gTGluayB0byB2MTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcv ci8yMDI1MDQwOC1zcGktZG1hLXYxLTEtM2MzOGJlNjJjMDljQGFtbG9naWMuY29tCj4+IC0tLQo+ PiAgIGRyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jIHwgMjQxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCAyMjAgaW5zZXJ0 aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9z cGktbWVzb24tc3BpY2MuYyBiL2RyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jCj4+IGluZGV4 IGRmNzRhZDUwNjBmOC4uNmI5MTM3MzA3NTMzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3NwaS9z cGktbWVzb24tc3BpY2MuYwo+PiArKysgYi9kcml2ZXJzL3NwaS9zcGktbWVzb24tc3BpY2MuYwo+ PiBAQCAtMjEsMTggKzIxLDI2IEBACj4+ICAgI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgo+ PiAgICNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9waW5jdHJs L2NvbnN1bWVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPj4KPj4gICAv Kgo+PiAtICogVGhlIE1lc29uIFNQSUNDIGNvbnRyb2xsZXIgY291bGQgc3VwcG9ydCBETUEgYmFz ZWQgdHJhbnNmZXJzLCBidXQgaXMgbm90Cj4+IC0gKiBpbXBsZW1lbnRlZCBieSB0aGUgdmVuZG9y IGNvZGUsIGFuZCB3aGlsZSBoYXZpbmcgdGhlIHJlZ2lzdGVycyBkb2N1bWVudGF0aW9uCj4+IC0g KiBpdCBoYXMgbmV2ZXIgd29ya2VkIG9uIHRoZSBHWEwgSGFyZHdhcmUuCj4+IC0gKiBUaGUgUElP IG1vZGUgaXMgdGhlIG9ubHkgbW9kZSBpbXBsZW1lbnRlZCwgYW5kIGR1ZSB0byBiYWRseSBkZXNp Z25lZCBIVyA6Cj4+IC0gKiAtIGFsbCB0cmFuc2ZlcnMgYXJlIGN1dHRlZCBpbiAxNiB3b3JkcyBi dXJzdCBiZWNhdXNlIHRoZSBGSUZPIGhhbmdzIG9uCj4+IC0gKiAgIFRYIHVuZGVyZmxvdywgYW5k IHRoZXJlIGlzIG5vIFRYICJIYWxmLUVtcHR5IiBpbnRlcnJ1cHQsIHNvIHdlIGdvIGJ5Cj4+IC0g KiAgIEZJRk8gbWF4IHNpemUgY2h1bmsgb25seQo+PiAtICogLSBDUyBtYW5hZ2VtZW50IGlzIGR1 bWIsIGFuZCBnb2VzIFVQIGJldHdlZW4gZXZlcnkgYnVyc3QsIHNvIGlzIHJlYWxseSBhCj4+IC0g KiAgICJEYXRhIFZhbGlkIiBzaWduYWwgdGhhbiBhIENoaXAgU2VsZWN0LCBHUElPIGxpbmsgc2hv dWxkIGJlIHVzZWQgaW5zdGVhZAo+PiAtICogICB0byBoYXZlIGEgQ1MgZ28gZG93biBvdmVyIHRo ZSBmdWxsIHRyYW5zZmVyCj4+ICsgKiBUaGVyZSBhcmUgdHdvIG1vZGVzIGZvciBkYXRhIHRyYW5z bWlzc2lvbjogUElPIGFuZCBETUEuCj4+ICsgKiBXaGVuIGJpdHNfcGVyX3dvcmQgaXMgOCwgMTYs IDI0LCBvciAzMiwgZGF0YSBpcyB0cmFuc2ZlcnJlZCB1c2luZyBQSU8gbW9kZS4KPj4gKyAqIFdo ZW4gYml0c19wZXJfd29yZCBpcyA2NCwgRE1BIG1vZGUgaXMgdXNlZCBieSBkZWZhdWx0Lgo+PiAr ICoKPj4gKyAqIERNQSBhY2hpZXZlcyBhIHRyYW5zZmVyIHdpdGggb25lIG9yIG1vcmUgU1BJIGJ1 cnN0cywgZWFjaCBTUEkgYnVyc3QgaXMgbWFkZQo+PiArICogdXAgb2Ygb25lIG9yIG1vcmUgRE1B IGJ1cnN0cy4gVGhlIERNQSBidXJzdCBpbXBsZW1lbnRhdGlvbiBtZWNoYW5pc20gaXMsCj4+ICsg KiBGb3IgVFgsIHdoZW4gdGhlIG51bWJlciBvZiB3b3JkcyBpbiBUWEZJRk8gaXMgbGVzcyB0aGFu IHRoZSBwcmVzZXQKPj4gKyAqIHJlYWRpbmcgdGhyZXNob2xkLCBTUElDQyBzdGFydHMgYSByZWFk aW5nIERNQSBidXJzdCwgd2hpY2ggcmVhZHMgdGhlIHByZXNldAo+PiArICogbnVtYmVyIG9mIHdv cmRzIGZyb20gVFggYnVmZmVyLCB0aGVuIHdyaXRlcyB0aGVtIGludG8gVFhGSUZPLgo+PiArICog Rm9yIFJYLCB3aGVuIHRoZSBudW1iZXIgb2Ygd29yZHMgaW4gUlhGSUZPIGlzIGdyZWF0ZXIgdGhh biB0aGUgcHJlc2V0Cj4+ICsgKiB3cml0aW5nIHRocmVzaG9sZCwgU1BJQ0Mgc3RhcnRzIGEgd3Jp dGluZyByZXF1ZXN0IGJ1cnN0LCB3aGljaCByZWFkcyB0aGUKPj4gKyAqIHByZXNldCBudW1iZXIg b2Ygd29yZHMgZnJvbSBSWEZJRk8sIHRoZW4gd3JpdGUgdGhlbSBpbnRvIFJYIGJ1ZmZlci4KPj4g KyAqIERNQSB3b3JrcyBpZiB0aGUgdHJhbnNmZXIgbWVldHMgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zLAo+PiArICogLSA2NCBiaXRzIHBlciB3b3JkCj4gCj4gSnVzdCBmb3IgY2xhcmlmaWNhdGlv biwgRE1BIGNhbiBvbmx5IHNlbmQgNjQtYml0IHdvcmRzIGR1ZSB0byBoYXJkd2FyZQo+IGRlc2ln biwgcmlnaHQ/Cj4gVGhlIGJpdC1wZXItd29yZCBpbiBzcGkgY29udHJvbCByZWdpc3RlciAoQ09O UkVHKSBoYXMgbm8gZWZmZWN0Pwo+IAo+PiArICogLSBUaGUgdHJhbnNmZXIgbGVuZ3RoIGluIHdv cmQgbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhlIGRtYV9idXJzdF9sZW4sIGFuZAo+PiArICogICB0 aGUgZG1hX2J1cnN0X2xlbiBzaG91bGQgYmUgb25lIG9mIDgsNy4uLjIsIG90aGVyd2lzZSwgaXQg d2lsbCBiZSBzcGxpdAo+PiArICogICBpbnRvIHNldmVyYWwgU1BJIGJ1cnN0cyBieSB0aGlzIGRy aXZlcgo+PiAgICAqLwo+Pgo+PiAgICNkZWZpbmUgU1BJQ0NfTUFYX0JVUlNUICAgICAgICAxMjgK Pj4gQEAgLTEyOCw2ICsxMzYsMjMgQEAKPj4KPj4gICAjZGVmaW5lIFNQSUNDX0RXQUREUiAgIDB4 MjQgICAgLyogV3JpdGUgQWRkcmVzcyBvZiBETUEgKi8KPj4KPj4gKyNkZWZpbmUgU1BJQ0NfTERf Q05UTDAgMHgyOAo+PiArI2RlZmluZSBWU1lOQ19JUlFfU1JDX1NFTEVDVCAgICAgICAgICAgQklU KDApCj4+ICsjZGVmaW5lIERNQV9FTl9TRVRfQllfVlNZTkMgICAgICAgICAgICBCSVQoMikKPj4g KyNkZWZpbmUgWENIX0VOX1NFVF9CWV9WU1lOQyAgICAgICAgICAgIEJJVCgzKQo+PiArI2RlZmlu ZSBETUFfUkVBRF9DT1VOVEVSX0VOICAgICAgICAgICAgQklUKDQpCj4+ICsjZGVmaW5lIERNQV9X UklURV9DT1VOVEVSX0VOICAgICAgICAgICBCSVQoNSkKPj4gKyNkZWZpbmUgRE1BX1JBRERSX0xP QURfQllfVlNZTkMgICAgICAgICAgICAgICAgQklUKDYpCj4+ICsjZGVmaW5lIERNQV9XQUREUl9M T0FEX0JZX1ZTWU5DICAgICAgICAgICAgICAgIEJJVCg3KQo+PiArI2RlZmluZSBETUFfQUREUl9M T0FEX0ZST01fTERfQUREUiAgICAgQklUKDgpCj4+ICsKPj4gKyNkZWZpbmUgU1BJQ0NfTERfQ05U TDEgMHgyYwo+PiArI2RlZmluZSBETUFfUkVBRF9DT1VOVEVSICAgICAgICAgICAgICAgR0VOTUFT SygxNSwgMCkKPj4gKyNkZWZpbmUgRE1BX1dSSVRFX0NPVU5URVIgICAgICAgICAgICAgIEdFTk1B U0soMzEsIDE2KQo+PiArI2RlZmluZSBETUFfQlVSU1RfTEVOX0RFRkFVTFQgICAgICAgICAgOAo+ PiArI2RlZmluZSBETUFfQlVSU1RfQ09VTlRfTUFYICAgICAgICAgICAgMHhmZmZmCj4+ICsjZGVm aW5lIFNQSV9CVVJTVF9MRU5fTUFYICAgICAgKERNQV9CVVJTVF9MRU5fREVGQVVMVCAqIERNQV9C VVJTVF9DT1VOVF9NQVgpCj4+ICsKPiAKPiBMRF9DTlRMMCBhbmQgTERfQ05UTDEgYXJlIG5vdCBp biB0aGlzIGRhdGFzaGVldCBmb3IgR1hMCj4gKFM4MDVYL1M5MDVYL1M5MDVEKS4gRG8gdGhleSBl eGlzdCBvbiB0aGVzZSBTb0NzIGFuZCBhcmUgbm90Cj4gZG9jdW1lbnRlZD8KPiAKPj4gICAjZGVm aW5lIFNQSUNDX0VOSF9DVEwwIDB4MzggICAgLyogRW5oYW5jZWQgRmVhdHVyZSAqLwo+PiAgICNk ZWZpbmUgU1BJQ0NfRU5IX0NMS19DU19ERUxBWV9NQVNLICAgIEdFTk1BU0soMTUsIDApCj4+ICAg I2RlZmluZSBTUElDQ19FTkhfREFUQVJBVEVfTUFTSyAgICAgICAgICAgICAgICBHRU5NQVNLKDIz LCAxNikKPj4gQEAgLTE3MSw2ICsxOTYsOSBAQCBzdHJ1Y3QgbWVzb25fc3BpY2NfZGV2aWNlIHsK Pj4gICAgICAgICAgc3RydWN0IHBpbmN0cmwgICAgICAgICAgICAgICAgICAqcGluY3RybDsKPj4g ICAgICAgICAgc3RydWN0IHBpbmN0cmxfc3RhdGUgICAgICAgICAgICAqcGluc19pZGxlX2hpZ2g7 Cj4+ICAgICAgICAgIHN0cnVjdCBwaW5jdHJsX3N0YXRlICAgICAgICAgICAgKnBpbnNfaWRsZV9s b3c7Cj4+ICsgICAgICAgZG1hX2FkZHJfdCAgICAgICAgICAgICAgICAgICAgICB0eF9kbWE7Cj4+ ICsgICAgICAgZG1hX2FkZHJfdCAgICAgICAgICAgICAgICAgICAgICByeF9kbWE7Cj4+ICsgICAg ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ19kbWE7Cj4+ICAgfTsKPj4K Pj4gICAjZGVmaW5lIHBvdzJfY2xrX3RvX3NwaWNjKF9kaXYpIGNvbnRhaW5lcl9vZihfZGl2LCBz dHJ1Y3QgbWVzb25fc3BpY2NfZGV2aWNlLCBwb3cyX2RpdikKPj4gQEAgLTIwMiw2ICsyMzAsMTQ4 IEBAIHN0YXRpYyB2b2lkIG1lc29uX3NwaWNjX29lbl9lbmFibGUoc3RydWN0IG1lc29uX3NwaWNj X2RldmljZSAqc3BpY2MpCj4+ICAgICAgICAgIHdyaXRlbF9yZWxheGVkKGNvbmYsIHNwaWNjLT5i YXNlICsgU1BJQ0NfRU5IX0NUTDApOwo+PiAgIH0KPj4KPj4gK3N0YXRpYyBpbnQgbWVzb25fc3Bp Y2NfZG1hX21hcChzdHJ1Y3QgbWVzb25fc3BpY2NfZGV2aWNlICpzcGljYywKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzcGlfdHJhbnNmZXIgKnQpCj4+ICt7Cj4+ICsg ICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gc3BpY2MtPmhvc3QtPmRldi5wYXJlbnQ7Cj4+ICsK Pj4gKyAgICAgICBpZiAoISh0LT50eF9idWYgJiYgdC0+cnhfYnVmKSkKPj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgICAgdC0+dHhfZG1hID0gZG1hX21hcF9z aW5nbGUoZGV2LCAodm9pZCAqKXQtPnR4X2J1ZiwgdC0+bGVuLCBETUFfVE9fREVWSUNFKTsKPj4g KyAgICAgICBpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCB0LT50eF9kbWEpKQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKyAgICAgICB0LT5yeF9kbWEgPSBkbWFf bWFwX3NpbmdsZShkZXYsIHQtPnJ4X2J1ZiwgdC0+bGVuLCBETUFfRlJPTV9ERVZJQ0UpOwo+PiAr ICAgICAgIGlmIChkbWFfbWFwcGluZ19lcnJvcihkZXYsIHQtPnJ4X2RtYSkpCj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArICAgICAgIHNwaWNjLT50eF9kbWEgPSB0 LT50eF9kbWE7Cj4+ICsgICAgICAgc3BpY2MtPnJ4X2RtYSA9IHQtPnJ4X2RtYTsKPj4gKwo+PiAr ICAgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBtZXNvbl9zcGljY19k bWFfdW5tYXAoc3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KQo+PiArewo+PiAr ICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHNwaWNjLT5ob3N0LT5kZXYucGFyZW50Owo+PiAr Cj4+ICsgICAgICAgaWYgKHQtPnR4X2RtYSkKPj4gKyAgICAgICAgICAgICAgIGRtYV91bm1hcF9z aW5nbGUoZGV2LCB0LT50eF9kbWEsIHQtPmxlbiwgRE1BX1RPX0RFVklDRSk7Cj4+ICsgICAgICAg aWYgKHQtPnJ4X2RtYSkKPj4gKyAgICAgICAgICAgICAgIGRtYV91bm1hcF9zaW5nbGUoZGV2LCB0 LT5yeF9kbWEsIHQtPmxlbiwgRE1BX0ZST01fREVWSUNFKTsKPj4gK30KPj4gKwo+PiArLyoKPj4g KyAqIEFjY29yZGluZyB0byB0aGUgcmVtYWluIHdvcmRzIGxlbmd0aCwgY2FsY3VsYXRlIGEgc3Vp dGFibGUgc3BpIGJ1cnN0IGxlbmd0aAo+PiArICogYW5kIGEgZG1hIGJ1cnN0IGxlbmd0aCBmb3Ig Y3VycmVudCBzcGkgYnVyc3QKPj4gKyAqLwo+PiArc3RhdGljIHUzMiBtZXNvbl9zcGljY19jYWxj X2RtYV9sZW4oc3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBsZW4sIHUzMiAqZG1hX2J1cnN0X2xlbikKPj4g K3sKPj4gKyAgICAgICB1MzIgaTsKPj4gKwo+PiArICAgICAgIGlmIChsZW4gPD0gc3BpY2MtPmRh dGEtPmZpZm9fc2l6ZSkgewo+PiArICAgICAgICAgICAgICAgKmRtYV9idXJzdF9sZW4gPSBsZW47 Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gbGVuOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAg ICAgICpkbWFfYnVyc3RfbGVuID0gRE1BX0JVUlNUX0xFTl9ERUZBVUxUOwo+PiArCj4+ICsgICAg ICAgaWYgKGxlbiA9PSAoU1BJX0JVUlNUX0xFTl9NQVggKyAxKSkKPj4gKyAgICAgICAgICAgICAg IHJldHVybiBTUElfQlVSU1RfTEVOX01BWCAtIERNQV9CVVJTVF9MRU5fREVGQVVMVDsKPj4gKwo+ PiArICAgICAgIGlmIChsZW4gPj0gU1BJX0JVUlNUX0xFTl9NQVgpCj4+ICsgICAgICAgICAgICAg ICByZXR1cm4gU1BJX0JVUlNUX0xFTl9NQVg7Cj4+ICsKPj4gKyAgICAgICBmb3IgKGkgPSBETUFf QlVSU1RfTEVOX0RFRkFVTFQ7IGkgPiAxOyBpLS0pCj4+ICsgICAgICAgICAgICAgICBpZiAoKGxl biAlIGkpID09IDApIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgKmRtYV9idXJzdF9sZW4g PSBpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVuOwo+PiArICAgICAgICAg ICAgICAgfQo+PiArCj4+ICsgICAgICAgaSA9IGxlbiAlIERNQV9CVVJTVF9MRU5fREVGQVVMVDsK Pj4gKyAgICAgICBsZW4gLT0gaTsKPj4gKwo+PiArICAgICAgIGlmIChpID09IDEpCj4+ICsgICAg ICAgICAgICAgICBsZW4gLT0gRE1BX0JVUlNUX0xFTl9ERUZBVUxUOwo+PiArCj4+ICsgICAgICAg cmV0dXJuIGxlbjsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgbWVzb25fc3BpY2Nfc2V0dXBf ZG1hKHN0cnVjdCBtZXNvbl9zcGljY19kZXZpY2UgKnNwaWNjKQo+PiArewo+PiArICAgICAgIHVu c2lnbmVkIGludCBsZW47Cj4+ICsgICAgICAgdW5zaWduZWQgaW50IGRtYV9idXJzdF9sZW4sIGRt YV9idXJzdF9jb3VudDsKPj4gKyAgICAgICB1bnNpZ25lZCBpbnQgY291bnRfZW4gPSAwOwo+PiAr ICAgICAgIHVuc2lnbmVkIGludCB0eGZpZm9fdGhyZXMgPSAwOwo+PiArICAgICAgIHVuc2lnbmVk IGludCByZWFkX3JlcSA9IDA7Cj4+ICsgICAgICAgdW5zaWduZWQgaW50IHJ4Zmlmb190aHJlcyA9 IDMxOwo+PiArICAgICAgIHVuc2lnbmVkIGludCB3cml0ZV9yZXEgPSAwOwo+PiArICAgICAgIHVu c2lnbmVkIGludCBsZF9jdHIxID0gMDsKPj4gKwo+PiArICAgICAgIHdyaXRlbF9yZWxheGVkKHNw aWNjLT50eF9kbWEsIHNwaWNjLT5iYXNlICsgU1BJQ0NfRFJBRERSKTsKPj4gKyAgICAgICB3cml0 ZWxfcmVsYXhlZChzcGljYy0+cnhfZG1hLCBzcGljYy0+YmFzZSArIFNQSUNDX0RXQUREUik7Cj4+ ICsKPj4gKyAgICAgICAvKiBTZXQgdGhlIG1heCBidXJzdCBsZW5ndGggdG8gc3VwcG9ydCBhIHRy YW5zbWlzc2lvbiB3aXRoIGxlbmd0aCBvZgo+PiArICAgICAgICAqIG5vIG1vcmUgdGhhbiAxMDI0 IGJ5dGVzKDEyOCB3b3JkcyksIHdoaWNoIG11c3QgdXNlIHRoZSBDUyBtYW5hZ2VtZW50Cj4+ICsg ICAgICAgICogYmVjYXVzZSBvZiBzb21lIHN0cmljdCB0aW1pbmcgcmVxdWlyZW1lbnRzCj4+ICsg ICAgICAgICovCj4+ICsgICAgICAgd3JpdGVsX2JpdHNfcmVsYXhlZChTUElDQ19CVVJTVExFTkdU SF9NQVNLLCBTUElDQ19CVVJTVExFTkdUSF9NQVNLLAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3BpY2MtPmJhc2UgKyBTUElDQ19DT05SRUcpOwo+PiArCj4+ICsgICAgICAgbGVuID0g bWVzb25fc3BpY2NfY2FsY19kbWFfbGVuKHNwaWNjLCBzcGljYy0+eGZlcl9yZW1haW4sCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbWFfYnVyc3RfbGVuKTsKPj4g KyAgICAgICBzcGljYy0+eGZlcl9yZW1haW4gLT0gbGVuOwo+PiArICAgICAgIGRtYV9idXJzdF9j b3VudCA9IERJVl9ST1VORF9VUChsZW4sIGRtYV9idXJzdF9sZW4pOwo+PiArICAgICAgIGRtYV9i dXJzdF9sZW4tLTsKPj4gKwo+PiArICAgICAgIGlmIChzcGljYy0+dHhfZG1hKSB7Cj4+ICsgICAg ICAgICAgICAgICBzcGljYy0+dHhfZG1hICs9IGxlbjsKPj4gKyAgICAgICAgICAgICAgIGNvdW50 X2VuIHw9IERNQV9SRUFEX0NPVU5URVJfRU47Cj4+ICsgICAgICAgICAgICAgICB0eGZpZm9fdGhy ZXMgPSBzcGljYy0+ZGF0YS0+Zmlmb19zaXplIC0gZG1hX2J1cnN0X2xlbjsKPj4gKyAgICAgICAg ICAgICAgIHJlYWRfcmVxID0gZG1hX2J1cnN0X2xlbjsKPj4gKyAgICAgICAgICAgICAgIGxkX2N0 cjEgfD0gRklFTERfUFJFUChETUFfUkVBRF9DT1VOVEVSLCBkbWFfYnVyc3RfY291bnQpOwo+PiAr ICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlmIChzcGljYy0+cnhfZG1hKSB7Cj4+ICsgICAgICAg ICAgICAgICBzcGljYy0+cnhfZG1hICs9IGxlbjsKPj4gKyAgICAgICAgICAgICAgIGNvdW50X2Vu IHw9IERNQV9XUklURV9DT1VOVEVSX0VOOwo+PiArICAgICAgICAgICAgICAgcnhmaWZvX3RocmVz ID0gZG1hX2J1cnN0X2xlbjsKPj4gKyAgICAgICAgICAgICAgIHdyaXRlX3JlcSA9IGRtYV9idXJz dF9sZW47Cj4+ICsgICAgICAgICAgICAgICBsZF9jdHIxIHw9IEZJRUxEX1BSRVAoRE1BX1dSSVRF X0NPVU5URVIsIGRtYV9idXJzdF9jb3VudCk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAg d3JpdGVsX3JlbGF4ZWQoY291bnRfZW4sIHNwaWNjLT5iYXNlICsgU1BJQ0NfTERfQ05UTDApOwo+ PiArICAgICAgIHdyaXRlbF9yZWxheGVkKGxkX2N0cjEsIHNwaWNjLT5iYXNlICsgU1BJQ0NfTERf Q05UTDEpOwo+PiArICAgICAgIHdyaXRlbF9yZWxheGVkKFNQSUNDX0RNQV9FTkFCTEUKPj4gKyAg ICAgICAgICAgICAgICAgICB8IFNQSUNDX0RNQV9VUkdFTlQKPj4gKyAgICAgICAgICAgICAgICAg ICB8IEZJRUxEX1BSRVAoU1BJQ0NfVFhGSUZPX1RIUkVTSE9MRF9NQVNLLCB0eGZpZm9fdGhyZXMp Cj4+ICsgICAgICAgICAgICAgICAgICAgfCBGSUVMRF9QUkVQKFNQSUNDX1JFQURfQlVSU1RfTUFT SywgcmVhZF9yZXEpCj4+ICsgICAgICAgICAgICAgICAgICAgfCBGSUVMRF9QUkVQKFNQSUNDX1JY RklGT19USFJFU0hPTERfTUFTSywgcnhmaWZvX3RocmVzKQo+PiArICAgICAgICAgICAgICAgICAg IHwgRklFTERfUFJFUChTUElDQ19XUklURV9CVVJTVF9NQVNLLCB3cml0ZV9yZXEpLAo+PiArICAg ICAgICAgICAgICAgICAgIHNwaWNjLT5iYXNlICsgU1BJQ0NfRE1BUkVHKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGlycXJldHVybl90IG1lc29uX3NwaWNjX2RtYV9pcnEoc3RydWN0IG1lc29uX3Nw aWNjX2RldmljZSAqc3BpY2MpCj4+ICt7Cj4+ICsgICAgICAgaWYgKHJlYWRsX3JlbGF4ZWQoc3Bp Y2MtPmJhc2UgKyBTUElDQ19ETUFSRUcpICYgU1BJQ0NfRE1BX0VOQUJMRSkKPj4gKyAgICAgICAg ICAgICAgIHJldHVybiBJUlFfSEFORExFRDsKPj4gKwo+PiArICAgICAgIGlmIChzcGljYy0+eGZl cl9yZW1haW4pIHsKPj4gKyAgICAgICAgICAgICAgIG1lc29uX3NwaWNjX3NldHVwX2RtYShzcGlj Yyk7Cj4+ICsgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIHdyaXRlbF9iaXRzX3Jl bGF4ZWQoU1BJQ0NfU01DLCAwLCBzcGljYy0+YmFzZSArIFNQSUNDX0NPTlJFRyk7Cj4+ICsgICAg ICAgICAgICAgICB3cml0ZWxfcmVsYXhlZCgwLCBzcGljYy0+YmFzZSArIFNQSUNDX0lOVFJFRyk7 Cj4+ICsgICAgICAgICAgICAgICB3cml0ZWxfcmVsYXhlZCgwLCBzcGljYy0+YmFzZSArIFNQSUND X0RNQVJFRyk7Cj4+ICsgICAgICAgICAgICAgICBtZXNvbl9zcGljY19kbWFfdW5tYXAoc3BpY2Ms IHNwaWNjLT54ZmVyKTsKPj4gKyAgICAgICAgICAgICAgIGNvbXBsZXRlKCZzcGljYy0+ZG9uZSk7 Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+PiArfQo+ PiArCj4+ICAgc3RhdGljIGlubGluZSBib29sIG1lc29uX3NwaWNjX3R4ZnVsbChzdHJ1Y3QgbWVz b25fc3BpY2NfZGV2aWNlICpzcGljYykKPj4gICB7Cj4+ICAgICAgICAgIHJldHVybiAhIUZJRUxE X0dFVChTUElDQ19URiwKPj4gQEAgLTI5Myw2ICs0NjMsOSBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qg bWVzb25fc3BpY2NfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpCj4+Cj4+ICAgICAgICAgIHdyaXRl bF9iaXRzX3JlbGF4ZWQoU1BJQ0NfVEMsIFNQSUNDX1RDLCBzcGljYy0+YmFzZSArIFNQSUNDX1NU QVRSRUcpOwo+Pgo+PiArICAgICAgIGlmIChzcGljYy0+dXNpbmdfZG1hKQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIG1lc29uX3NwaWNjX2RtYV9pcnEoc3BpY2MpOwo+PiArCj4+ICAgICAgICAg IC8qIEVtcHR5IFJYIEZJRk8gKi8KPj4gICAgICAgICAgbWVzb25fc3BpY2Nfcngoc3BpY2MpOwo+ Pgo+PiBAQCAtNDI2LDkgKzU5OSw2IEBAIHN0YXRpYyBpbnQgbWVzb25fc3BpY2NfdHJhbnNmZXJf b25lKHN0cnVjdCBzcGlfY29udHJvbGxlciAqaG9zdCwKPj4KPj4gICAgICAgICAgbWVzb25fc3Bp Y2NfcmVzZXRfZmlmbyhzcGljYyk7Cj4+Cj4+IC0gICAgICAgLyogU2V0dXAgYnVyc3QgKi8KPj4g LSAgICAgICBtZXNvbl9zcGljY19zZXR1cF9idXJzdChzcGljYyk7Cj4+IC0KPj4gICAgICAgICAg LyogU2V0dXAgd2FpdCBmb3IgY29tcGxldGlvbiAqLwo+PiAgICAgICAgICByZWluaXRfY29tcGxl dGlvbigmc3BpY2MtPmRvbmUpOwo+Pgo+PiBAQCAtNDQyLDExICs2MTIsMzYgQEAgc3RhdGljIGlu dCBtZXNvbl9zcGljY190cmFuc2Zlcl9vbmUoc3RydWN0IHNwaV9jb250cm9sbGVyICpob3N0LAo+ PiAgICAgICAgICAvKiBJbmNyZWFzZSBpdCB0d2ljZSBhbmQgYWRkIDIwMCBtcyB0b2xlcmFuY2Ug Ki8KPj4gICAgICAgICAgdGltZW91dCArPSB0aW1lb3V0ICsgMjAwOwo+Pgo+PiAtICAgICAgIC8q IFN0YXJ0IGJ1cnN0ICovCj4+IC0gICAgICAgd3JpdGVsX2JpdHNfcmVsYXhlZChTUElDQ19YQ0gs IFNQSUNDX1hDSCwgc3BpY2MtPmJhc2UgKyBTUElDQ19DT05SRUcpOwo+PiArICAgICAgIGlmICh4 ZmVyLT5iaXRzX3Blcl93b3JkID09IDY0KSB7Cj4+ICsgICAgICAgICAgICAgICBpbnQgcmV0Owo+ PiArCj4+ICsgICAgICAgICAgICAgICAvKiBkbWFfYnVyc3RfbGVuIDEgY2FuJ3QgdHJpZ2dlciBh IGRtYSBidXJzdCAqLwo+PiArICAgICAgICAgICAgICAgaWYgKHhmZXItPmxlbiA8IDE2KQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAgICAgICAg ICAgICAgcmV0ID0gbWVzb25fc3BpY2NfZG1hX21hcChzcGljYywgeGZlcik7Cj4+ICsgICAgICAg ICAgICAgICBpZiAocmV0KSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lc29uX3NwaWNj X2RtYV91bm1hcChzcGljYywgeGZlcik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9l cnIoaG9zdC0+ZGV2LnBhcmVudCwgImRtYSBtYXAgZmFpbGVkXG4iKTsKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAg ICAgICAgICAgICAgc3BpY2MtPnVzaW5nX2RtYSA9IHRydWU7Cj4+ICsgICAgICAgICAgICAgICBz cGljYy0+eGZlcl9yZW1haW4gPSBESVZfUk9VTkRfVVAoeGZlci0+bGVuLCBzcGljYy0+Ynl0ZXNf cGVyX3dvcmQpOwo+PiArICAgICAgICAgICAgICAgbWVzb25fc3BpY2Nfc2V0dXBfZG1hKHNwaWNj KTsKPj4gKyAgICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKFNQSUNDX1RFX0VOLCBzcGljYy0+ YmFzZSArIFNQSUNDX0lOVFJFRyk7Cj4+ICsgICAgICAgICAgICAgICB3cml0ZWxfYml0c19yZWxh eGVkKFNQSUNDX1NNQywgU1BJQ0NfU01DLCBzcGljYy0+YmFzZSArIFNQSUNDX0NPTlJFRyk7Cj4+ ICsgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIHNwaWNjLT51c2luZ19kbWEgPSBm YWxzZTsKPj4gKyAgICAgICAgICAgICAgIC8qIFNldHVwIGJ1cnN0ICovCj4+ICsgICAgICAgICAg ICAgICBtZXNvbl9zcGljY19zZXR1cF9idXJzdChzcGljYyk7Cj4+Cj4+IC0gICAgICAgLyogRW5h YmxlIGludGVycnVwdHMgKi8KPj4gLSAgICAgICB3cml0ZWxfcmVsYXhlZChTUElDQ19UQ19FTiwg c3BpY2MtPmJhc2UgKyBTUElDQ19JTlRSRUcpOwo+PiArICAgICAgICAgICAgICAgLyogU3RhcnQg YnVyc3QgKi8KPj4gKyAgICAgICAgICAgICAgIHdyaXRlbF9iaXRzX3JlbGF4ZWQoU1BJQ0NfWENI LCBTUElDQ19YQ0gsIHNwaWNjLT5iYXNlICsgU1BJQ0NfQ09OUkVHKTsKPj4gKwo+PiArICAgICAg ICAgICAgICAgLyogRW5hYmxlIGludGVycnVwdHMgKi8KPj4gKyAgICAgICAgICAgICAgIHdyaXRl bF9yZWxheGVkKFNQSUNDX1RDX0VOLCBzcGljYy0+YmFzZSArIFNQSUNDX0lOVFJFRyk7Cj4+ICsg ICAgICAgfQo+Pgo+PiAgICAgICAgICBpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgm c3BpY2MtPmRvbmUsIG1zZWNzX3RvX2ppZmZpZXModGltZW91dCkpKQo+PiAgICAgICAgICAgICAg ICAgIHJldHVybiAtRVRJTUVET1VUOwo+PiBAQCAtNTQ1LDYgKzc0MCwxNCBAQCBzdGF0aWMgaW50 IG1lc29uX3NwaWNjX3NldHVwKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCj4+ICAgICAgICAgIGlm ICghc3BpLT5jb250cm9sbGVyX3N0YXRlKQo+PiAgICAgICAgICAgICAgICAgIHNwaS0+Y29udHJv bGxlcl9zdGF0ZSA9IHNwaV9jb250cm9sbGVyX2dldF9kZXZkYXRhKHNwaS0+Y29udHJvbGxlcik7 Cj4+Cj4+ICsgICAgICAgLyogRE1BIHdvcmtzIGF0IDY0IGJpdHMsIHRoZSByZXN0IHdvcmtzIG9u IFBJTyAqLwo+PiArICAgICAgIGlmIChzcGktPmJpdHNfcGVyX3dvcmQgIT0gOCAmJgo+PiArICAg ICAgICAgICBzcGktPmJpdHNfcGVyX3dvcmQgIT0gMTYgJiYKPj4gKyAgICAgICAgICAgc3BpLT5i aXRzX3Blcl93b3JkICE9IDI0ICYmCj4+ICsgICAgICAgICAgIHNwaS0+Yml0c19wZXJfd29yZCAh PSAzMiAmJgo+PiArICAgICAgICAgICBzcGktPmJpdHNfcGVyX3dvcmQgIT0gNjQpCj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiAgICAgICAgICByZXR1cm4gMDsKPj4g ICB9Cj4+Cj4+IEBAIC04NTMsMTAgKzEwNTYsNiBAQCBzdGF0aWMgaW50IG1lc29uX3NwaWNjX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICAgICAgICAgIGhvc3QtPm51bV9j aGlwc2VsZWN0ID0gNDsKPj4gICAgICAgICAgaG9zdC0+ZGV2Lm9mX25vZGUgPSBwZGV2LT5kZXYu b2Zfbm9kZTsKPj4gICAgICAgICAgaG9zdC0+bW9kZV9iaXRzID0gU1BJX0NQSEEgfCBTUElfQ1BP TCB8IFNQSV9DU19ISUdIIHwgU1BJX0xPT1A7Cj4+IC0gICAgICAgaG9zdC0+Yml0c19wZXJfd29y ZF9tYXNrID0gU1BJX0JQV19NQVNLKDMyKSB8Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1BJX0JQV19NQVNLKDI0KSB8Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1BJX0JQV19NQVNLKDE2KSB8Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1BJX0JQV19NQVNLKDgpOwo+IAo+IFRoaXMgc2hvdWxkIG5vdCBiZSByZW1vdmVk LiBTUElfQlBXX01BU0soNjQpIG5lZWRzIHRvIGJlIGFkZGVkLgo+IFJlbW92aW5nIGJpdHNfcGVy X3dvcmRfbWFzayBjYXVzZXMgb3RoZXIgY29kZSB0byBhc3N1bWUgdGhpcyBpcyBhbgo+IDgtYml0 IG9ubHkgY29udHJvbGxlci4KClNQSV9CUFdfTUFTSyg2NCkgZG9lc24ndCBub3QgZXhpc3QsIGl0 J3Mgb25seSBhIDMyYml0IGZpZWxkLCByZW1vdmluZyBpdCBpcyBmaW5lLAp0aGUgY2hlY2sgaXMg ZG9uZSBsYXRlci4KCk5laWwKCj4gCj4gCj4gCj4+ICAgICAgICAgIGhvc3QtPmZsYWdzID0gKFNQ SV9DT05UUk9MTEVSX01VU1RfUlggfCBTUElfQ09OVFJPTExFUl9NVVNUX1RYKTsKPj4gICAgICAg ICAgaG9zdC0+bWluX3NwZWVkX2h6ID0gc3BpY2MtPmRhdGEtPm1pbl9zcGVlZF9oejsKPj4gICAg ICAgICAgaG9zdC0+bWF4X3NwZWVkX2h6ID0gc3BpY2MtPmRhdGEtPm1heF9zcGVlZF9oejsKPj4K Pj4gLS0tCj4+IGJhc2UtY29tbWl0OiA0OTgwN2VkODc4NTE5MTZlZjY1NWY3MmU5NTYyZjk2MzU1 MTgzMDkwCj4+IGNoYW5nZS1pZDogMjAyNTA0MDgtc3BpLWRtYS1jNDk5ZjU2MGQyOTUKPj4KPj4g QmVzdCByZWdhcmRzLAo+PiAtLQo+PiBYaWFud2VpIFpoYW8gPHhpYW53ZWkuemhhb0BhbWxvZ2lj LmNvbT4KPj4KPj4KPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPj4gbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKPj4gbGludXgtYW1sb2dpY0Bs aXN0cy5pbmZyYWRlYWQub3JnCj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYW1sb2dpYwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFtbG9naWMK