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 X-Spam-Level: X-Spam-Status: No, score=-7.8 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CD8EC2D0DB for ; Thu, 23 Jan 2020 14:24:53 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1F19620663 for ; Thu, 23 Jan 2020 14:24:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="u5WDIDKf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1F19620663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B65C16FD20; Thu, 23 Jan 2020 14:24:52 +0000 (UTC) Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDA0C6FD20 for ; Thu, 23 Jan 2020 14:24:50 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id y17so3285163wrh.5 for ; Thu, 23 Jan 2020 06:24:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=vLRw38TJRaABWv0gAYrrNb0UDQjtuEVSATKug8MnE9U=; b=u5WDIDKfuWTAQ/GFuHp1+KW/BBIhmDiEsayyGbL5sxX55TXY3y3EHRYIDem86/oCAj s7OUkR5IYjhJQ5ky1NozaMEhFrUIYLevdN/SszL8DUQZtMmWDX71l3gvAR+Zd7wVngTy RN61J2CVR3FzlF04YU6fpS+h1bEA0mH7tpUAxjB9ouZWNxGxoCNlPQ9j1q5H66uxmkEY rou6srvbF6F/09UTv6gupOUZDB8PbaOt05yI/RSOxzT/cyXaXlMblVYkP82UOKC7Z3Nv yA/xklSRfRUQrj9GCo352Oe8tyeynzGzUqGAYVp/An87iSLcXMShA4C6vKF+NqQy0SBf ulZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=vLRw38TJRaABWv0gAYrrNb0UDQjtuEVSATKug8MnE9U=; b=Qq3Tv2HxXqiLDgZnfweVnOAV9U0hROIV4wDqoCYgeL+de5eR/5bHgT984pdeWkZV6t Sir5cgM0W1Y4Ip9AXtgWJ1IeaYkMZQUxE/nrFPdx7NnWHSw+wsCam6K1MRIaDIvse4Yk wlK2KjOzMLoj2h3hToc/6dIe2h3/YaikDA9kP+D0IjwDpdI4YVdBgSlKugbVzPwB8xvj KJD3aHQnAuSkxSrDRIhPGxgnNCkVVAHfA2GatxorlFpwB8fmtWT2OQ2hc9VwBjIqdfuD vxNdDplSIyj3jM+blT6eByBtwRc8BIzKTjixxinLAY6YCO2EM/sNtmNCs+0T1Nrkt2Wc LL3Q== X-Gm-Message-State: APjAAAWL0rEPtobxp7ohnklJP0AIYU/NBL+PChrxCS8NCsCUasb3Lmx3 3wMZXyDNDvNzeiYNhTAekWU= X-Google-Smtp-Source: APXvYqz6/rh9XRzJieIebfKspur2fZeh0knENcqEM1RGiBEqGpZMr6z3o/btwq0Z3lUFgO1v6WML9Q== X-Received: by 2002:a5d:5592:: with SMTP id i18mr18932255wrv.55.1579789489274; Thu, 23 Jan 2020 06:24:49 -0800 (PST) Received: from ?IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7? ([2a02:908:1252:fb60:be8a:bd56:1f94:86e7]) by smtp.gmail.com with ESMTPSA id z187sm3053166wme.16.2020.01.23.06.24.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 Jan 2020 06:24:48 -0800 (PST) Subject: Re: [PATCH 4/4] drm/amdgpu: rework synchronization of VM updates v3 To: Tom St Denis , amd-gfx@lists.freedesktop.org, Felix.Kuehling@amd.com References: <20200123142122.4084-1-christian.koenig@amd.com> <20200123142122.4084-4-christian.koenig@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <72d0c177-11d2-c43e-bf0d-53123739790d@gmail.com> Date: Thu, 23 Jan 2020 15:24:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" VGhhbmtzLCBwbGVhc2UgZ2l2ZSB0aGVtIGEgZnVsbCByb3VuZC4KClRvb2sgbWUgYSB3ZWVrIHRv IGZpZ3VyZSBvdXQgdGhhdCB3ZSBhY2NpZGVudGFsbHkgcGFzcyBpbiB0aGUgCnJlc2VydmF0aW9u IG9iamVjdCBhcyBOVUxMIGZvciBjbGVhcmVkIEJPcy4KClRoYW5rcywKQ2hyaXN0aWFuLgoKQW0g MjMuMDEuMjAgdW0gMTU6MjIgc2NocmllYiBUb20gU3QgRGVuaXM6Cj4gSnVzdCBhcHBsaWVkIHRo ZXNlIG5vdywgdHJ5aW5nIHRoZW0gb3V0IHdpbGwgcmVwb3J0IGJhY2sgaW4gfjIwIG1pbnMuCj4K PiBPbiAyMDIwLTAxLTIzIDk6MjEgYS5tLiwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4gSWYg cHJvdmlkZWQgd2Ugb25seSBzeW5jIHRvIHRoZSBCT3MgcmVzZXJ2YXRpb24KPj4gb2JqZWN0IGFu ZCBubyBsb25nZXIgdG8gdGhlIHJvb3QgUEQuCj4+Cj4+IHYyOiB1cGRhdGUgY29tbWVudCwgY2xl YW51cCBhbWRncHVfYm9fc3luY193YWl0X3Jlc3YKPj4gdjM6IHVzZSBjb3JyZWN0IHJlc2VydmF0 aW9uIG9iamVjdCB3aGlsZSBjbGVhcmluZwo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4g S8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmPCoCB8IDM3IAo+PiArKysrKysrKysrKysr KysrKysrKy0tLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2Jq ZWN0LmjCoCB8wqAgMyArKysKPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3N5bmMuY8KgwqDCoCB8wqAgNyAtLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdm0uY8KgwqDCoMKgwqAgfCA0MSAKPj4gKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmjCoMKgwqDC oMKgIHzCoCA0ICstLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm1f Y3B1LmPCoCB8IDIyICsrKystLS0tLS0tLS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtX3NkbWEuYyB8IDE1ICsrKy0tLS0tLS0tCj4+IMKgIDcgZmlsZXMgY2hh bmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgCj4+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4+IGluZGV4IDQ2Yzc2ZTJlMTI4 MS4uYzcwYmJkZGEwNzhjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfb2JqZWN0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5jCj4+IEBAIC0xNDAzLDMwICsxNDAzLDUxIEBAIHZvaWQgYW1kZ3B1X2JvX2Zl bmNlKHN0cnVjdCBhbWRncHVfYm8gKmJvLCAKPj4gc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCj4+ IMKgIH0KPj4gwqAgwqAgLyoqCj4+IC0gKiBhbWRncHVfc3luY193YWl0X3Jlc3YgLSBXYWl0IGZv ciBCTyByZXNlcnZhdGlvbiBmZW5jZXMKPj4gKyAqIGFtZGdwdV9ib19zeW5jX3dhaXRfcmVzdiAt IFdhaXQgZm9yIEJPIHJlc2VydmF0aW9uIGZlbmNlcwo+PiDCoMKgICoKPj4gLSAqIEBibzogYnVm ZmVyIG9iamVjdAo+PiArICogQGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcgo+PiArICogQHJl c3Y6IHJlc2VydmF0aW9uIG9iamVjdCB0byBzeW5jIHRvCj4+ICsgKiBAc3luY19tb2RlOiBzeW5j aHJvbml6YXRpb24gbW9kZQo+PiDCoMKgICogQG93bmVyOiBmZW5jZSBvd25lcgo+PiDCoMKgICog QGludHI6IFdoZXRoZXIgdGhlIHdhaXQgaXMgaW50ZXJydXB0aWJsZQo+PiDCoMKgICoKPj4gKyAq IEV4dHJhY3QgdGhlIGZlbmNlcyBmcm9tIHRoZSByZXNlcnZhdGlvbiBvYmplY3QgYW5kIHdhaXRz IGZvciB0aGVtIAo+PiB0byBmaW5pc2guCj4+ICsgKgo+PiDCoMKgICogUmV0dXJuczoKPj4gwqDC oCAqIDAgb24gc3VjY2VzcywgZXJybm8gb3RoZXJ3aXNlLgo+PiDCoMKgICovCj4+IC1pbnQgYW1k Z3B1X2JvX3N5bmNfd2FpdChzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdm9pZCAqb3duZXIsIGJvb2wg aW50cikKPj4gK2ludCBhbWRncHVfYm9fc3luY193YWl0X3Jlc3Yoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHN0cnVjdCAKPj4gZG1hX3Jlc3YgKnJlc3YsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBlbnVtIGFtZGdwdV9zeW5jX21vZGUgc3luY19tb2RlLCB2b2lkICpv d25lciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgaW50cikKPj4g wqAgewo+PiAtwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9h ZGV2KGJvLT50Ym8uYmRldik7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9zeW5jIHN5bmM7 Cj4+IMKgwqDCoMKgwqAgaW50IHI7Cj4+IMKgIMKgwqDCoMKgwqAgYW1kZ3B1X3N5bmNfY3JlYXRl KCZzeW5jKTsKPj4gLcKgwqDCoCBhbWRncHVfc3luY19yZXN2KGFkZXYsICZzeW5jLCBiby0+dGJv LmJhc2UucmVzdiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfU1lOQ19ORV9P V05FUiwgb3duZXIpOwo+PiAtwqDCoMKgIHIgPSBhbWRncHVfc3luY193YWl0KCZzeW5jLCBpbnRy KTsKPj4gK8KgwqDCoCBhbWRncHVfc3luY19yZXN2KGFkZXYsICZzeW5jLCByZXN2LCBzeW5jX21v ZGUsIG93bmVyKTsKPj4gK8KgwqDCoCByID0gYW1kZ3B1X3N5bmNfd2FpdCgmc3luYywgdHJ1ZSk7 Cj4+IMKgwqDCoMKgwqAgYW1kZ3B1X3N5bmNfZnJlZSgmc3luYyk7Cj4+IC0KPj4gwqDCoMKgwqDC oCByZXR1cm4gcjsKPj4gwqAgfQo+PiDCoCArLyoqCj4+ICsgKiBhbWRncHVfYm9fc3luY193YWl0 IC0gV3JhcHBlciBmb3IgYW1kZ3B1X2JvX3N5bmNfd2FpdF9yZXN2Cj4+ICsgKiBAYm86IGJ1ZmZl ciBvYmplY3QgdG8gd2FpdCBmb3IKPj4gKyAqIEBvd25lcjogZmVuY2Ugb3duZXIKPj4gKyAqIEBp bnRyOiBXaGV0aGVyIHRoZSB3YWl0IGlzIGludGVycnVwdGlibGUKPj4gKyAqCj4+ICsgKiBXcmFw cGVyIHRvIHdhaXQgZm9yIGZlbmNlcyBpbiBhIEJPLgo+PiArICogUmV0dXJuczoKPj4gKyAqIDAg b24gc3VjY2VzcywgZXJybm8gb3RoZXJ3aXNlLgo+PiArICovCj4+ICtpbnQgYW1kZ3B1X2JvX3N5 bmNfd2FpdChzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdm9pZCAqb3duZXIsIGJvb2wgaW50cikKPj4g K3sKPj4gK8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRl dihiby0+dGJvLmJkZXYpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIGFtZGdwdV9ib19zeW5jX3dh aXRfcmVzdihhZGV2LCBiby0+dGJvLmJhc2UucmVzdiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9TWU5DX05FX09XTkVSLCBvd25lciwgaW50cik7Cj4+ ICt9Cj4+ICsKPj4gwqAgLyoqCj4+IMKgwqAgKiBhbWRncHVfYm9fZ3B1X29mZnNldCAtIHJldHVy biBHUFUgb2Zmc2V0IG9mIGJvCj4+IMKgwqAgKiBAYm86wqDCoMKgIGFtZGdwdSBvYmplY3QgZm9y IHdoaWNoIHdlIHF1ZXJ5IHRoZSBvZmZzZXQKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmgKPj4gaW5kZXggMmVlYWZjNzdjOWMxLi45NmQ4MDU4ODllOGQg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3Qu aAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKPj4g QEAgLTI4Myw2ICsyODMsOSBAQCB2b2lkIGFtZGdwdV9ib19yZWxlYXNlX25vdGlmeShzdHJ1Y3Qg Cj4+IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7Cj4+IMKgIGludCBhbWRncHVfYm9fZmF1bHRfcmVz ZXJ2ZV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7Cj4+IMKgIHZvaWQgYW1k Z3B1X2JvX2ZlbmNlKHN0cnVjdCBhbWRncHVfYm8gKmJvLCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIHNoYXJlZCk7Cj4+ICtpbnQg YW1kZ3B1X2JvX3N5bmNfd2FpdF9yZXN2KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1 Y3QgCj4+IGRtYV9yZXN2ICpyZXN2LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZW51bSBhbWRncHVfc3luY19tb2RlIHN5bmNfbW9kZSwgdm9pZCAqb3duZXIsCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGludHIpOwo+PiDCoCBpbnQgYW1kZ3B1 X2JvX3N5bmNfd2FpdChzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdm9pZCAqb3duZXIsIGJvb2wgaW50 cik7Cj4+IMKgIHU2NCBhbWRncHVfYm9fZ3B1X29mZnNldChzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7 Cj4+IMKgIGludCBhbWRncHVfYm9fdmFsaWRhdGUoc3RydWN0IGFtZGdwdV9ibyAqYm8pOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3N5bmMuYyAKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc3luYy5jCj4+IGluZGV4IDlmNDIw MzI2NzZkYS4uYjg2MzkyMjUzNjk2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfc3luYy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9zeW5jLmMKPj4gQEAgLTI0OSwxMyArMjQ5LDYgQEAgaW50IGFtZGdwdV9zeW5jX3Jl c3Yoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIAo+PiBzdHJ1Y3QgYW1kZ3B1X3N5bmMgKnN5 bmMsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG93bmVyICE9IEFNREdQVV9GRU5DRV9P V05FUl9VTkRFRklORUQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ PiDCoCAtwqDCoMKgwqDCoMKgwqAgLyogVk0gdXBkYXRlcyBvbmx5IHN5bmMgd2l0aCBtb3ZlcyBi dXQgbm90IHdpdGggdXNlcgo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIGNvbW1hbmQgc3VibWlzc2lv bnMgb3IgS0ZEIGV2aWN0aW9ucyBmZW5jZXMKPj4gLcKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gLcKg wqDCoMKgwqDCoMKgIGlmIChmZW5jZV9vd25lciAhPSBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJ TkVEICYmCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG93bmVyID09IEFNREdQVV9GRU5DRV9P V05FUl9WTSkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+IC0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIC8qIElnbm9yZSBmZW5jZXMgZGVwZW5kaW5nIG9uIHRoZSBzeW5jIG1v ZGUgKi8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAobW9kZSkgewo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgY2FzZSBBTURHUFVfU1lOQ19BTFdBWVM6Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm0uYwo+PiBpbmRleCAwZjc5YzE3MTE4YmYuLmMyNjhhYTE0MzgxZSAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gQEAgLTc5Nyw3 ICs3OTcsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9jbGVhcl9ibyhzdHJ1Y3QgCj4+IGFtZGdw dV9kZXZpY2UgKmFkZXYsCj4+IMKgwqDCoMKgwqAgcGFyYW1zLnZtID0gdm07Cj4+IMKgwqDCoMKg wqAgcGFyYW1zLmRpcmVjdCA9IGRpcmVjdDsKPj4gwqAgLcKgwqDCoCByID0gdm0tPnVwZGF0ZV9m dW5jcy0+cHJlcGFyZSgmcGFyYW1zLCBBTURHUFVfRkVOQ0VfT1dORVJfS0ZELCAKPj4gTlVMTCk7 Cj4+ICvCoMKgwqAgciA9IHZtLT51cGRhdGVfZnVuY3MtPnByZXBhcmUoJnBhcmFtcywgTlVMTCwg QU1ER1BVX1NZTkNfRVhQTElDSVQpOwo+PiDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHI7Cj4+IMKgIEBAIC0xMjkzLDcgKzEyOTMsNyBAQCBpbnQgYW1kZ3B1 X3ZtX3VwZGF0ZV9wZGVzKHN0cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwKPj4gwqDCoMKg wqDCoCBwYXJhbXMudm0gPSB2bTsKPj4gwqDCoMKgwqDCoCBwYXJhbXMuZGlyZWN0ID0gZGlyZWN0 Owo+PiDCoCAtwqDCoMKgIHIgPSB2bS0+dXBkYXRlX2Z1bmNzLT5wcmVwYXJlKCZwYXJhbXMsIEFN REdQVV9GRU5DRV9PV05FUl9WTSwgCj4+IE5VTEwpOwo+PiArwqDCoMKgIHIgPSB2bS0+dXBkYXRl X2Z1bmNzLT5wcmVwYXJlKCZwYXJhbXMsIE5VTEwsIEFNREdQVV9TWU5DX0VYUExJQ0lUKTsKPj4g wqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoCBA QCAtMTU1Miw3ICsxNTUyLDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3Ry dWN0IAo+PiBhbWRncHVfdm1fdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAo+PiDCoMKgICogQGFkZXY6 IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgo+PiDCoMKgICogQHZtOiByZXF1ZXN0ZWQgdm0KPj4gwqDC oCAqIEBkaXJlY3Q6IGRpcmVjdCBzdWJtaXNzaW9uIGluIGEgcGFnZSBmYXVsdAo+PiAtICogQGV4 Y2x1c2l2ZTogZmVuY2Ugd2UgbmVlZCB0byBzeW5jIHRvCj4+ICsgKiBAcmVzdjogZmVuY2VzIHdl IG5lZWQgdG8gc3luYyB0bwo+PiDCoMKgICogQHN0YXJ0OiBzdGFydCBvZiBtYXBwZWQgcmFuZ2UK Pj4gwqDCoCAqIEBsYXN0OiBsYXN0IG1hcHBlZCBlbnRyeQo+PiDCoMKgICogQGZsYWdzOiBmbGFn cyBmb3IgdGhlIGVudHJpZXMKPj4gQEAgLTE1NjcsMTQgKzE1NjcsMTQgQEAgc3RhdGljIGludCBh bWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IAo+PiBhbWRncHVfdm1fdXBkYXRlX3BhcmFtcyAq cGFyYW1zLAo+PiDCoMKgICovCj4+IMKgIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2JvX3VwZGF0ZV9t YXBwaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV92bSAqdm0sIGJvb2wg ZGlyZWN0LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGRtYV9mZW5jZSAqZXhjbHVzaXZlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9yZXN2ICpyZXN2LAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDY0X3Qgc3RhcnQsIHVp bnQ2NF90IGxhc3QsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgYWRkciwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRtYV9hZGRyX3QgKnBhZ2VzX2FkZHIs Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1 X3ZtX3VwZGF0ZV9wYXJhbXMgcGFyYW1zOwo+PiAtwqDCoMKgIHZvaWQgKm93bmVyID0gQU1ER1BV X0ZFTkNFX09XTkVSX1ZNOwo+PiArwqDCoMKgIGVudW0gYW1kZ3B1X3N5bmNfbW9kZSBzeW5jX21v ZGU7Cj4+IMKgwqDCoMKgwqAgaW50IHI7Cj4+IMKgIMKgwqDCoMKgwqAgbWVtc2V0KCZwYXJhbXMs IDAsIHNpemVvZihwYXJhbXMpKTsKPj4gQEAgLTE1ODMsOSArMTU4MywxMyBAQCBzdGF0aWMgaW50 IGFtZGdwdV92bV9ib191cGRhdGVfbWFwcGluZyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCj4+IMKgwqDCoMKgwqAgcGFyYW1zLmRpcmVjdCA9IGRpcmVjdDsKPj4gwqDCoMKgwqDCoCBw YXJhbXMucGFnZXNfYWRkciA9IHBhZ2VzX2FkZHI7Cj4+IMKgIC3CoMKgwqAgLyogc3luYyB0byBl dmVyeXRoaW5nIGV4Y2VwdCBldmljdGlvbiBmZW5jZXMgb24gdW5tYXBwaW5nICovCj4+ICvCoMKg wqAgLyogSW1wbGljaXRseSBzeW5jIHRvIGNvbW1hbmQgc3VibWlzc2lvbnMgaW4gdGhlIHNhbWUg Vk0gYmVmb3JlCj4+ICvCoMKgwqDCoCAqIHVubWFwcGluZy4gU3luYyB0byBtb3ZpbmcgZmVuY2Vz IGJlZm9yZSBtYXBwaW5nLgo+PiArwqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoCBpZiAoIShmbGFn cyAmIEFNREdQVV9QVEVfVkFMSUQpKQo+PiAtwqDCoMKgwqDCoMKgwqAgb3duZXIgPSBBTURHUFVf RkVOQ0VfT1dORVJfS0ZEOwo+PiArwqDCoMKgwqDCoMKgwqAgc3luY19tb2RlID0gQU1ER1BVX1NZ TkNfRVFfT1dORVI7Cj4+ICvCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqAgc3luY19tb2Rl ID0gQU1ER1BVX1NZTkNfRVhQTElDSVQ7Cj4+IMKgIMKgwqDCoMKgwqAgYW1kZ3B1X3ZtX2V2aWN0 aW9uX2xvY2sodm0pOwo+PiDCoMKgwqDCoMKgIGlmICh2bS0+ZXZpY3RpbmcpIHsKPj4gQEAgLTE1 OTMsNyArMTU5Nyw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2JvX3VwZGF0ZV9tYXBwaW5nKHN0 cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g ZXJyb3JfdW5sb2NrOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgLcKgwqDCoCByID0gdm0tPnVwZGF0 ZV9mdW5jcy0+cHJlcGFyZSgmcGFyYW1zLCBvd25lciwgZXhjbHVzaXZlKTsKPj4gK8KgwqDCoCBy ID0gdm0tPnVwZGF0ZV9mdW5jcy0+cHJlcGFyZSgmcGFyYW1zLCByZXN2LCBzeW5jX21vZGUpOwo+ PiDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl91bmxv Y2s7Cj4+IMKgIEBAIC0xNjEyLDcgKzE2MTYsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191 cGRhdGVfbWFwcGluZyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IMKgwqAgKiBh bWRncHVfdm1fYm9fc3BsaXRfbWFwcGluZyAtIHNwbGl0IGEgbWFwcGluZyBpbnRvIHNtYWxsZXIg Y2h1bmtzCj4+IMKgwqAgKgo+PiDCoMKgICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgo+ PiAtICogQGV4Y2x1c2l2ZTogZmVuY2Ugd2UgbmVlZCB0byBzeW5jIHRvCj4+ICsgKiBAcmVzdjog ZmVuY2VzIHdlIG5lZWQgdG8gc3luYyB0bwo+PiDCoMKgICogQHBhZ2VzX2FkZHI6IERNQSBhZGRy ZXNzZXMgdG8gdXNlIGZvciBtYXBwaW5nCj4+IMKgwqAgKiBAdm06IHJlcXVlc3RlZCB2bQo+PiDC oMKgICogQG1hcHBpbmc6IG1hcHBlZCByYW5nZSBhbmQgZmxhZ3MgdG8gdXNlIGZvciB0aGUgdXBk YXRlCj4+IEBAIC0xNjI4LDcgKzE2MzIsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191cGRh dGVfbWFwcGluZyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IMKgwqAgKiAwIGZv ciBzdWNjZXNzLCAtRUlOVkFMIGZvciBmYWlsdXJlLgo+PiDCoMKgICovCj4+IMKgIHN0YXRpYyBp bnQgYW1kZ3B1X3ZtX2JvX3NwbGl0X21hcHBpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRt YV9mZW5jZSAqZXhjbHVzaXZlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkbWFfcmVzdiAqcmVzdiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfYWRkcl90ICpwYWdlc19hZGRyLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVf dm0gKnZtLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBhbWRncHVfYm9fdmFfbWFwcGluZyAqbWFwcGluZywKPj4gQEAgLTE3MDQsNyArMTcw OCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2JvX3NwbGl0X21hcHBpbmcoc3RydWN0IAo+PiBh bWRncHVfZGV2aWNlICphZGV2LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDC oMKgwqDCoMKgwqAgbGFzdCA9IG1pbigodWludDY0X3QpbWFwcGluZy0+bGFzdCwgc3RhcnQgKyBt YXhfZW50cmllcyAtIAo+PiAxKTsKPj4gLcKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfdm1fYm9f dXBkYXRlX21hcHBpbmcoYWRldiwgdm0sIGZhbHNlLCBleGNsdXNpdmUsCj4+ICvCoMKgwqDCoMKg wqDCoCByID0gYW1kZ3B1X3ZtX2JvX3VwZGF0ZV9tYXBwaW5nKGFkZXYsIHZtLCBmYWxzZSwgcmVz diwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RhcnQsIGxhc3QsIGZsYWdzLCBhZGRyLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfYWRkciwgZmVuY2UpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKHIpCj4+IEBAIC0xNzQzLDcgKzE3NDcsOCBAQCBpbnQgYW1kZ3B1X3ZtX2JvX3Vw ZGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4gKmFkZXYsIHN0cnVjdCBhbWRncHVfYm9fdmEg KmJvX3ZhLAo+PiDCoMKgwqDCoMKgIGRtYV9hZGRyX3QgKnBhZ2VzX2FkZHIgPSBOVUxMOwo+PiDC oMKgwqDCoMKgIHN0cnVjdCB0dG1fbWVtX3JlZyAqbWVtOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBk cm1fbW1fbm9kZSAqbm9kZXM7Cj4+IC3CoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZXhjbHVzaXZl LCAqKmxhc3RfdXBkYXRlOwo+PiArwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipsYXN0X3VwZGF0 ZTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3Y7Cj4+IMKgwqDCoMKgwqAgdWludDY0 X3QgZmxhZ3M7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmJvX2FkZXYgPSBh ZGV2Owo+PiDCoMKgwqDCoMKgIGludCByOwo+PiBAQCAtMTc1MSw3ICsxNzU2LDcgQEAgaW50IGFt ZGdwdV92bV9ib191cGRhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgCj4+ICphZGV2LCBzdHJ1Y3Qg YW1kZ3B1X2JvX3ZhICpib192YSwKPj4gwqDCoMKgwqDCoCBpZiAoY2xlYXIgfHwgIWJvKSB7Cj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBtZW0gPSBOVUxMOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbm9k ZXMgPSBOVUxMOwo+PiAtwqDCoMKgwqDCoMKgwqAgZXhjbHVzaXZlID0gTlVMTDsKPj4gK8KgwqDC oMKgwqDCoMKgIHJlc3YgPSB2bS0+cm9vdC5iYXNlLmJvLT50Ym8uYmFzZS5yZXN2Owo+PiDCoMKg wqDCoMKgIH0gZWxzZSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX2RtYV90dCAq dHRtOwo+PiDCoCBAQCAtMTc2MSw3ICsxNzY2LDcgQEAgaW50IGFtZGdwdV92bV9ib191cGRhdGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgCj4+ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2JvX3ZhICpib192 YSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHRtID0gY29udGFpbmVyX29mKGJvLT50 Ym8udHRtLCBzdHJ1Y3QgdHRtX2RtYV90dCwgdHRtKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcGFnZXNfYWRkciA9IHR0bS0+ZG1hX2FkZHJlc3M7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCBleGNsdXNpdmUgPSBiby0+dGJvLm1vdmluZzsKPj4gK8Kg wqDCoMKgwqDCoMKgIHJlc3YgPSBiby0+dGJvLmJhc2UucmVzdjsKPj4gwqDCoMKgwqDCoCB9Cj4+ IMKgIMKgwqDCoMKgwqAgaWYgKGJvKSB7Cj4+IEBAIC0xNzc1LDcgKzE3ODAsOCBAQCBpbnQgYW1k Z3B1X3ZtX2JvX3VwZGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4gKmFkZXYsIHN0cnVjdCBh bWRncHVfYm9fdmEgKmJvX3ZhLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZmxhZ3MgPSAweDA7Cj4+ IMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIGlmIChjbGVhciB8fCAoYm8gJiYgYm8tPnRiby5i YXNlLnJlc3YgPT0gCj4+IHZtLT5yb290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3YpKQo+PiArwqDC oMKgIGlmIChjbGVhciB8fCAoYm8gJiYgYm8tPnRiby5iYXNlLnJlc3YgPT0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHZtLT5yb290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3YpKQo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgbGFzdF91cGRhdGUgPSAmdm0tPmxhc3RfdXBkYXRlOwo+PiDCoMKg wqDCoMKgIGVsc2UKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGxhc3RfdXBkYXRlID0gJmJvX3ZhLT5s YXN0X3B0X3VwZGF0ZTsKPj4gQEAgLTE3ODksNyArMTc5NSw3IEBAIGludCBhbWRncHVfdm1fYm9f dXBkYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlIAo+PiAqYWRldiwgc3RydWN0IGFtZGdwdV9ib192 YSAqYm9fdmEsCj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hf ZW50cnkobWFwcGluZywgJmJvX3ZhLT5pbnZhbGlkcywgbGlzdCkgewo+PiAtwqDCoMKgwqDCoMKg wqAgciA9IGFtZGdwdV92bV9ib19zcGxpdF9tYXBwaW5nKGFkZXYsIGV4Y2x1c2l2ZSwgcGFnZXNf YWRkciwgdm0sCj4+ICvCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3ZtX2JvX3NwbGl0X21hcHBp bmcoYWRldiwgcmVzdiwgcGFnZXNfYWRkciwgdm0sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcHBpbmcsIGZsYWdzLCBib19hZGV2 LCBub2RlcywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbGFzdF91cGRhdGUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIpCj4+ IEBAIC0xOTg0LDYgKzE5OTAsNyBAQCBpbnQgYW1kZ3B1X3ZtX2NsZWFyX2ZyZWVkKHN0cnVjdCBh bWRncHVfZGV2aWNlIAo+PiAqYWRldiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiDCoCB7Cj4+ICvCoMKgwqAgc3RydWN0IGRtYV9y ZXN2ICpyZXN2ID0gdm0tPnJvb3QuYmFzZS5iby0+dGJvLmJhc2UucmVzdjsKPj4gwqDCoMKgwqDC oCBzdHJ1Y3QgYW1kZ3B1X2JvX3ZhX21hcHBpbmcgKm1hcHBpbmc7Cj4+IMKgwqDCoMKgwqAgdWlu dDY0X3QgaW5pdF9wdGVfdmFsdWUgPSAwOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2Ug KmYgPSBOVUxMOwo+PiBAQCAtMTk5OCw3ICsyMDA1LDcgQEAgaW50IGFtZGdwdV92bV9jbGVhcl9m cmVlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4gKmFkZXYsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG1hcHBpbmctPnN0YXJ0IDwgQU1ER1BVX0dNQ19IT0xFX1NUQVJUKQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbml0X3B0ZV92YWx1ZSA9IEFNREdQVV9QVEVfREVGQVVM VF9BVEM7Cj4+IMKgIC3CoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3ZtX2JvX3VwZGF0ZV9tYXBw aW5nKGFkZXYsIHZtLCBmYWxzZSwgTlVMTCwKPj4gK8KgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVf dm1fYm9fdXBkYXRlX21hcHBpbmcoYWRldiwgdm0sIGZhbHNlLCByZXN2LAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXBwaW5nLT5zdGFydCwg bWFwcGluZy0+bGFzdCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW5pdF9wdGVfdmFsdWUsIDAsIE5VTEwsICZmKTsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGFtZGdwdV92bV9mcmVlX21hcHBpbmcoYWRldiwgdm0sIG1hcHBpbmcsIGYpOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4gaW5kZXggYzIxYTM2YmVi YzBjLi5iNTcwNWZjZmM5MzUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5oCj4+IEBAIC0yMzAsOCArMjMwLDggQEAgc3RydWN0IGFtZGdwdV92bV91cGRhdGVfcGFy YW1zIHsKPj4gwqAgwqAgc3RydWN0IGFtZGdwdV92bV91cGRhdGVfZnVuY3Mgewo+PiDCoMKgwqDC oMKgIGludCAoKm1hcF90YWJsZSkoc3RydWN0IGFtZGdwdV9ibyAqYm8pOwo+PiAtwqDCoMKgIGlu dCAoKnByZXBhcmUpKHN0cnVjdCBhbWRncHVfdm1fdXBkYXRlX3BhcmFtcyAqcCwgdm9pZCAqIG93 bmVyLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICpl eGNsdXNpdmUpOwo+PiArwqDCoMKgIGludCAoKnByZXBhcmUpKHN0cnVjdCBhbWRncHVfdm1fdXBk YXRlX3BhcmFtcyAqcCwgc3RydWN0IAo+PiBkbWFfcmVzdiAqcmVzdiwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZW51bSBhbWRncHVfc3luY19tb2RlIHN5bmNfbW9kZSk7Cj4+IMKg wqDCoMKgwqAgaW50ICgqdXBkYXRlKShzdHJ1Y3QgYW1kZ3B1X3ZtX3VwZGF0ZV9wYXJhbXMgKnAs Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywg dWludDY0X3QgcGUsIHVpbnQ2NF90IGFkZHIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBjb3VudCwgdWludDMyX3QgaW5jciwgdWludDY0X3QgZmxhZ3MpOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtX2NwdS5jIAo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bV9jcHUuYwo+PiBpbmRleCA2 OGIwMTNiZTM4MzcuLmUzODUxNjMwNDA3MCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZtX2NwdS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92bV9jcHUuYwo+PiBAQCAtNDQsMjYgKzQ0LDE0IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X3ZtX2NwdV9tYXBfdGFibGUoc3RydWN0IAo+PiBhbWRncHVfYm8gKnRhYmxlKQo+PiDC oMKgICogUmV0dXJuczoKPj4gwqDCoCAqIE5lZ2F0aXYgZXJybm8sIDAgZm9yIHN1Y2Nlc3MuCj4+ IMKgwqAgKi8KPj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2NwdV9wcmVwYXJlKHN0cnVjdCBhbWRn cHVfdm1fdXBkYXRlX3BhcmFtcyAqcCwgCj4+IHZvaWQgKm93bmVyLAo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZXhjbHVzaXZlKQo+PiArc3Rh dGljIGludCBhbWRncHVfdm1fY3B1X3ByZXBhcmUoc3RydWN0IGFtZGdwdV92bV91cGRhdGVfcGFy YW1zICpwLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9y ZXN2ICpyZXN2LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBhbWRn cHVfc3luY19tb2RlIHN5bmNfbW9kZSkKPj4gwqAgewo+PiAtwqDCoMKgIGludCByOwo+PiAtCj4+ IC3CoMKgwqAgLyogV2FpdCBmb3IgYW55IEJPIG1vdmUgdG8gYmUgY29tcGxldGVkICovCj4+IC3C oMKgwqAgaWYgKGV4Y2x1c2l2ZSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgciA9IGRtYV9mZW5jZV93 YWl0KGV4Y2x1c2l2ZSwgdHJ1ZSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkocikp Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiAtwqDCoMKgIH0KPj4gLQo+ PiAtwqDCoMKgIC8qIERvbid0IHdhaXQgZm9yIHN1Ym1pc3Npb25zIGR1cmluZyBwYWdlIGZhdWx0 ICovCj4+IC3CoMKgwqAgaWYgKHAtPmRpcmVjdCkKPj4gK8KgwqDCoCBpZiAoIXJlc3YpCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgLcKgwqDCoCAvKiBXYWl0IGZvciBQVCBC T3MgdG8gYmUgaWRsZS4gUFRzIHNoYXJlIHRoZSBzYW1lIHJlc3YuIG9iamVjdAo+PiAtwqDCoMKg wqAgKiBhcyB0aGUgcm9vdCBQRCBCTwo+PiAtwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCByZXR1cm4g YW1kZ3B1X2JvX3N5bmNfd2FpdChwLT52bS0+cm9vdC5iYXNlLmJvLCBvd25lciwgdHJ1ZSk7Cj4+ ICvCoMKgwqAgcmV0dXJuIGFtZGdwdV9ib19zeW5jX3dhaXRfcmVzdihwLT5hZGV2LCByZXN2LCBz eW5jX21vZGUsIHAtPnZtLCAKPj4gdHJ1ZSk7Cj4+IMKgIH0KPj4gwqAgwqAgLyoqCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm1fc2RtYS5jIAo+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bV9zZG1hLmMKPj4gaW5kZXggYWI2 NDgxNzUxNzYzLi40Y2M3ODgxZjQzOGMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92bV9zZG1hLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtX3NkbWEuYwo+PiBAQCAtNTgsOSArNTgsOSBAQCBzdGF0aWMgaW50IGFt ZGdwdV92bV9zZG1hX21hcF90YWJsZShzdHJ1Y3QgCj4+IGFtZGdwdV9ibyAqdGFibGUpCj4+IMKg wqAgKiBOZWdhdGl2IGVycm5vLCAwIGZvciBzdWNjZXNzLgo+PiDCoMKgICovCj4+IMKgIHN0YXRp YyBpbnQgYW1kZ3B1X3ZtX3NkbWFfcHJlcGFyZShzdHJ1Y3QgYW1kZ3B1X3ZtX3VwZGF0ZV9wYXJh bXMgKnAsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKm93bmVy LCBzdHJ1Y3QgZG1hX2ZlbmNlICpleGNsdXNpdmUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfcmVzdiAqcmVzdiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZW51bSBhbWRncHVfc3luY19tb2RlIHN5bmNfbW9kZSkKPj4gwqAg ewo+PiAtwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKnJvb3QgPSBwLT52bS0+cm9vdC5iYXNlLmJv Owo+PiDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBuZHcgPSBBTURHUFVfVk1fU0RNQV9NSU5fTlVN X0RXOwo+PiDCoMKgwqDCoMKgIGludCByOwo+PiDCoCBAQCAtNzAsMTcgKzcwLDEwIEBAIHN0YXRp YyBpbnQgYW1kZ3B1X3ZtX3NkbWFfcHJlcGFyZShzdHJ1Y3QgCj4+IGFtZGdwdV92bV91cGRhdGVf cGFyYW1zICpwLAo+PiDCoCDCoMKgwqDCoMKgIHAtPm51bV9kd19sZWZ0ID0gbmR3Owo+PiDCoCAt wqDCoMKgIC8qIFdhaXQgZm9yIG1vdmVzIHRvIGJlIGNvbXBsZXRlZCAqLwo+PiAtwqDCoMKgIHIg PSBhbWRncHVfc3luY19mZW5jZSgmcC0+am9iLT5zeW5jLCBleGNsdXNpdmUsIGZhbHNlKTsKPj4g LcKgwqDCoCBpZiAocikKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiAtCj4+IC3CoMKg wqAgLyogRG9uJ3Qgd2FpdCBmb3IgYW55IHN1Ym1pc3Npb25zIGR1cmluZyBwYWdlIGZhdWx0IGhh bmRsaW5nICovCj4+IC3CoMKgwqAgaWYgKHAtPmRpcmVjdCkKPj4gK8KgwqDCoCBpZiAoIXJlc3Yp Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgLcKgwqDCoCByZXR1cm4gYW1k Z3B1X3N5bmNfcmVzdihwLT5hZGV2LCAmcC0+am9iLT5zeW5jLCAKPj4gcm9vdC0+dGJvLmJhc2Uu cmVzdiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTURHUFVfU1lOQ19ORV9P V05FUiwgb3duZXIpOwo+PiArwqDCoMKgIHJldHVybiBhbWRncHVfc3luY19yZXN2KHAtPmFkZXYs ICZwLT5qb2ItPnN5bmMsIHJlc3YsIHN5bmNfbW9kZSwgCj4+IHAtPnZtKTsKPj4gwqAgfQo+PiDC oCDCoCAvKioKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=