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=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY 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 5BFAFC43603 for ; Sat, 7 Dec 2019 00:54:05 +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 35E44217BA for ; Sat, 7 Dec 2019 00:54:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 35E44217BA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.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 F399C6FABC; Sat, 7 Dec 2019 00:54:04 +0000 (UTC) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 39CF66FABC for ; Sat, 7 Dec 2019 00:54:04 +0000 (UTC) Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-48-lmWtC5eKORqToafGhxyY6Q-1; Fri, 06 Dec 2019 19:54:01 -0500 Received: by mail-qt1-f197.google.com with SMTP id h14so6343431qtq.11 for ; Fri, 06 Dec 2019 16:54:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:organization:user-agent:mime-version :content-transfer-encoding; bh=tAVG4ABqbS1HfleKIGCLChuNRHCQ7qtxXsmtmzlTJzM=; b=kOIyPBQNIx6EryTRG1wFXQ+ko1D4ukoH4/e7tmnnAp1xucte/b+CNqjdD3gaMo6LpL xaoS4SIkBjmFiSJGnKGYNgzKuwqs3arYeupmAfuYUdCCQnbFGfOwEH/OQapcz3k1Akyy qQjIZEwaVlnqZ62phfLeE9tvvZQHrExNnbB4CxY7/Tt1aMYhLLNNowpezW1EHn6xxmjz 1N/4lj7uiq75Kj5g6c7L4+l2t3ZrOQWeJK8eoD42IHvEMH5MLLm9ZwbbtnuR3ZucFcb9 45g2MzA1oK9FW81I26pappVxvMFvZLeX/9RsSdTisK+8/SwMBMhBLa6XCXsnFe2MZcbn xuwQ== X-Gm-Message-State: APjAAAXlAUu6gPaFslNymqpFnxmeSkwzAHeXzukZ0wT7TVkbX+ieSWa1 omoPQIMZvhEtMarFDJXnriws6gRZ3uJKzFOjK/KkGyeHy437ZrVYz1oL3h9Tm82LIDMO8vIDAXb UFYSmxZQjINJHfvNr5eNLcX/VnQ== X-Received: by 2002:a37:693:: with SMTP id 141mr16668273qkg.134.1575680040980; Fri, 06 Dec 2019 16:54:00 -0800 (PST) X-Google-Smtp-Source: APXvYqxCrUmFgEZsIeGfbnvUJxlb0+0qb17Tut5WEpKdi2QvGZzkJBbFTwPUA3dAwK2r6Jo603KLWg== X-Received: by 2002:a37:693:: with SMTP id 141mr16668262qkg.134.1575680040567; Fri, 06 Dec 2019 16:54:00 -0800 (PST) Received: from dhcp-10-20-1-90.bss.redhat.com ([144.121.20.162]) by smtp.gmail.com with ESMTPSA id r10sm86040qkm.23.2019.12.06.16.53.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2019 16:53:59 -0800 (PST) Message-ID: <0d3a98b34876a9834bece72fc8a26db3400be232.camel@redhat.com> Subject: Re: [PATCH v8 14/17] drm/amd/display: MST DSC compute fair share From: Lyude Paul To: mikita.lipski@amd.com, amd-gfx@lists.freedesktop.org Date: Fri, 06 Dec 2019 19:53:59 -0500 In-Reply-To: <20191203143530.27262-15-mikita.lipski@amd.com> References: <20191203143530.27262-1-mikita.lipski@amd.com> <20191203143530.27262-15-mikita.lipski@amd.com> Organization: Red Hat User-Agent: Evolution 3.34.2 (3.34.2-1.fc31) MIME-Version: 1.0 X-MC-Unique: lmWtC5eKORqToafGhxyY6Q-1 X-Mimecast-Spam-Score: 0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1575680043; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tAVG4ABqbS1HfleKIGCLChuNRHCQ7qtxXsmtmzlTJzM=; b=VN6Pw/sgFKGMgOLQmNxh93Ok7rxQGdCIxeBmaciw3Vw6oKVQ7NorEJVaqtgToG0GcLkBoB 2pYgG1Y+VkO4/0AUG5VE1SiFmMSqTKDJ6zByZvM+ulwMUMidvA+dwnByUJlINwDoW9RibO 39qbTH0zjPrGq2iCuXXJM83Dtusi1z0= X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Manasi Navare , David Francis , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" SSd2ZSBzdGlsbCBnb3R0YSBkbyBhIGxpdHRsZSBiaXQgb2YgdGhpbmtpbmcgb24gdGhpcyBvbmUs IGJ1dCBJJ2xsIG1ha2Ugc3VyZQp0byBnZXQgYmFjayB0byB5b3UgYWJvdXQgdGhpcyBwYXRjaCBv biBtb25kYXkuIEluIHRoZSBtZWFuIHRpbWUsIGV2ZXJ5dGhpbmcKZWxzZSBsb29rcyBncmVhdCEg VGhhbmtzIGZvciB0aGUgZ29vZCB3b3JrIDopCgpPbiBUdWUsIDIwMTktMTItMDMgYXQgMDk6MzUg LTA1MDAsIG1pa2l0YS5saXBza2lAYW1kLmNvbSB3cm90ZToKPiBGcm9tOiBEYXZpZCBGcmFuY2lz IDxEYXZpZC5GcmFuY2lzQGFtZC5jb20+Cj4gCj4gSWYgdGhlcmUgaXMgbGltaXRlZCBsaW5rIGJh bmR3aWR0aCBvbiBhIE1TVCBuZXR3b3JrLAo+IGl0IG11c3QgYmUgZGl2aWRlZCBmYWlybHkgYmV0 d2VlbiB0aGUgc3RyZWFtcyBvbiB0aGF0IG5ldHdvcmsKPiAKPiBJbXBsZW1lbnQgYW4gYWxnb3Jp dGhtIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBEU0MgY29uZmlnCj4gZm9yIGVhY2ggc3RyZWFt Cj4gCj4gVGhlIGFsZ29yaXRobToKPiBUaGlzCj4gICAgICBbICAgICAgICAgICAgICAgICAgIF0g ICAgICAgICAgKCApCj4gcmVwcmVzZW50cyB0aGUgcmFuZ2Ugb2YgYmFuZHdpZHRocyBwb3NzaWJs ZSBmb3IgYSBnaXZlbiBzdHJlYW0uCj4gVGhlIFtdIGFyZWEgcmVwcmVzZW50cyB0aGUgcmFuZ2Ug b2YgRFNDIGNvbmZpZ3MsIGFuZCB0aGUgKCkKPiByZXByZXNlbnRzIG5vIERTQy4gVGhlIGJhbmR3 aWR0aCB1c2VkIGluY3JlYXNlcyBmcm9tIGxlZnQgdG8gcmlnaHQuCj4gCj4gRmlyc3QsIHRyeSBk aXNhYmxpbmcgRFNDIG9uIGFsbCBzdHJlYW1zCj4gICAgICBbICAgICAgICAgICAgICAgICAgXSAg ICAgICAgICAofCkKPiAgICAgIFsgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgKHwp Cj4gQ2hlY2sgdGhpcyBhZ2FpbnN0IHRoZSBiYW5kd2lkdGggbGltaXRzIG9mIHRoZSBsaW5rIGFu ZCBlYWNoIGJyYW5jaAo+IChpbmNsdWRpbmcgZWFjaCBlbmRwb2ludCkuIElmIGl0IHBhc3Nlcywg dGhlIGpvYiBpcyBkb25lCj4gCj4gU2Vjb25kLCB0cnkgbWF4aW11bSBEU0MgY29tcHJlc3Npb24g b24gYWxsIHN0cmVhbXMKPiB0aGF0IHN1cHBvcnQgRFNDCj4gICAgICBbfCAgICAgICAgIF0gICAg ICAgICggKQo+ICAgICAgW3wgICAgICAgICAgICAgICAgXSAgICAgICAgICggKQo+IElmIHRoaXMg ZG9lcyBub3QgcGFzcywgdGhlbiBlbmFibGluZyB0aGlzIGNvbWJpbmF0aW9uIG9mIHN0cmVhbXMK PiBpcyBpbXBvc3NpYmxlCj4gCj4gT3RoZXJ3aXNlLCBkaXZpZGUgdGhlIHJlbWFpbmluZyBiYW5k d2lkdGggZXZlbmx5IGFtb25nc3QgdGhlIHN0cmVhbXMKPiAgICAgIFsgICAgICAgIHwgIF0gICAg ICAgICAoICkKPiAgICAgIFsgICAgICAgIHwgICAgICBdICAgICAgICAoICkKPiAKPiBJZiBvbmUg b3IgbW9yZSBvZiB0aGUgc3RyZWFtcyByZWFjaCBtaW5pbXVtIGNvbXByZXNzaW9uLCBldmVubHkK PiBkaXZpZGUgdGhlIHJlYW1pbmluZyBiYW5kd2lkdGggYW1vbmdzdCB0aGUgcmVtYWluaW5nIHN0 cmVhbXMKPiAgICAgIFsgICAgfF0gKCApCj4gICAgICBbICAgICAgIHxdICAgKCApCj4gICAgICBb ICAgICAgICAgICAgICAgICB8ICAgXSAgICAgICAgICAgICAgICggKQo+ICAgICAgWyAgICAgICAg ICAgICAgICAgfCAgICAgIF0gICAgICAgICAgICAgICAgICAoICkKPiAKPiBJZiBhbGwgc3RyZWFt cyBjYW4gcmVhY2ggbWluaW11bSBjb21wcmVzc2lvbiwgZGlzYWJsZSBjb21wcmVzc2lvbgo+IGdy ZWVkaWx5Cj4gICAgICBbICAgICAgfF0gICggKQo+ICAgICAgWyAgICAgICAgfF0gICAgKCApCj4g ICAgICBbICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo fCkKPiAKPiBQZXJmb3JtIHRoaXMgYWxnb3JpdGhtIG9uIGVhY2ggZnVsbCB1cGRhdGUsIG9uIGVh Y2ggTVNUIGxpbmsKPiB3aXRoIGF0IGxlYXN0IG9uZSBEU0Mgc3RyZWFtIG9uIGl0Cj4gCj4gQWZ0 ZXIgdGhlIGNvbmZpZ3MgYXJlIGNvbXB1dGVkLCBjYWxsCj4gZGNuMjBfYWRkX2RzY190b19zdHJl YW1fcmVzb3VyY2Ugb24gZWFjaCBzdHJlYW0gd2l0aCBEU0MgZW5hYmxlZC4KPiBJdCBpcyBvbmx5 IGFmdGVyIGFsbCBzdHJlYW1zIGFyZSBjcmVhdGVkIHRoYXQgd2UgY2FuIGtub3cgd2hpY2gKPiBv ZiB0aGVtIHdpbGwgbmVlZCBEU0MuCj4gCj4gRG8gYWxsIG9mIHRoaXMgYXQgdGhlIGVuZCBvZiBh bWRncHUgYXRvbWljIGNoZWNrLiAgSWYgaXQgZmFpbHMsCj4gZmFpbCBjaGVjazsgVGhpcyBjb21i aW5hdGlvbiBvZiB0aW1pbmdzIGNhbm5vdCBiZSBzdXBwb3J0ZWQuCj4gCj4gdjI6IFVzZSBkcm1f ZHBfbXN0X2F0b21pY19jaGVjayB0byB2YWxpZGF0ZSBidyBmb3IgY2VydGFpbiBkc2MKPiBjb25m aWd1cmF0aW9ucwo+IAo+IHYzOiBVc2UgZGNfZHNjX3BvbGljeSBzdHJ1Y3R1cmUgdG8gZ2V0IG1p biBhbmQgbWF4IGJwcCByYXRlCj4gZm9yIERTQyBjb25maWd1cmF0aW9uCj4gCj4gQ2M6IEx5dWRl IFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gQ2M6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IFdlbmppbmcgTGl1IDxXZW5qaW5nLkxpdUBh bWQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERhdmlkIEZyYW5jaXMgPERhdmlkLkZyYW5jaXNAYW1k LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNaWtpdGEgTGlwc2tpIDxtaWtpdGEubGlwc2tpQGFtZC5j b20+Cj4gLS0tCj4gIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0u YyB8ICAgMyArCj4gIC4uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmMg ICB8IDM2NCArKysrKysrKysrKysrKysrKysKPiAgLi4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbV9tc3RfdHlwZXMuaCAgIHwgICAzICsKPiAgLi4uL2RybS9hbWQvZGlzcGxheS9kYy9kY24y MC9kY24yMF9yZXNvdXJjZS5jIHwgICA3ICstCj4gIC4uLi9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNu MjAvZGNuMjBfcmVzb3VyY2UuaCB8ICAgMSArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMzc2IGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPiBpbmRleCA3NTNhNzk3MzQ4MTcuLjkz YTIzMGQ5NTZlZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG0uYwo+IEBAIC04MDk1LDYgKzgwOTUsOSBAQCBzdGF0aWMgaW50IGFt ZGdwdV9kbV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UKPiAqZGV2LAo+ICAJCWlmIChy ZXQpCj4gIAkJCWdvdG8gZmFpbDsKPiAgCj4gKwkJaWYgKCFjb21wdXRlX21zdF9kc2NfY29uZmln c19mb3Jfc3RhdGUoc3RhdGUsIGRtX3N0YXRlLQo+ID5jb250ZXh0KSkKPiArCQkJZ290byBmYWls Owo+ICsKPiAgCQlpZiAoZGNfdmFsaWRhdGVfZ2xvYmFsX3N0YXRlKGRjLCBkbV9zdGF0ZS0+Y29u dGV4dCwgZmFsc2UpICE9Cj4gRENfT0spIHsKPiAgCQkJcmV0ID0gLUVJTlZBTDsKPiAgCQkJZ290 byBmYWlsOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmMKPiBpbmRleCBjMzc2YzhjY2QzOTEuLjZk MTNkMWMzMzUzMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jCj4gQEAgLTQwLDYgKzQwLDEw IEBACj4gICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKPiAgI2luY2x1ZGUgImFtZGdwdV9k bV9kZWJ1Z2ZzLmgiCj4gICNlbmRpZgo+ICsKPiArCj4gKyNpbmNsdWRlICJkYy9kY24yMC9kY24y MF9yZXNvdXJjZS5oIgo+ICsKPiAgLyogI2RlZmluZSBUUkFDRV9EUENEICovCj4gIAo+ICAjaWZk ZWYgVFJBQ0VfRFBDRAo+IEBAIC00OTksMyArNTAzLDM2MyBAQCBpbnQgZG1fbXN0X2dldF9wYm5f ZGl2aWRlcihzdHJ1Y3QgZGNfbGluayAqbGluaykKPiAgCXJldHVybiBkY19saW5rX2JhbmR3aWR0 aF9rYnBzKGxpbmssCj4gIAkJCWRjX2xpbmtfZ2V0X2xpbmtfY2FwKGxpbmspKSAvICg4ICogMTAw MCAqIDU0KTsKPiAgfQo+ICsKPiArc3RydWN0IGRzY19tc3RfZmFpcm5lc3NfcGFyYW1zIHsKPiAr CXN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nOwo+ICsJc3RydWN0IGRjX3NpbmsgKnNpbms7 Cj4gKwlzdHJ1Y3QgZGNfZHNjX2J3X3JhbmdlIGJ3X3JhbmdlOwo+ICsJYm9vbCBjb21wcmVzc2lv bl9wb3NzaWJsZTsKPiArCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7Cj4gK307Cj4gKwo+ ICtzdHJ1Y3QgZHNjX21zdF9mYWlybmVzc192YXJzIHsKPiArCWludCBwYm47Cj4gKwlib29sIGRz Y19lbmFibGVkOwo+ICsJaW50IGJwcF94MTY7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGticHNf dG9fcGVha19wYm4oaW50IGticHMpCj4gK3sKPiArCXU2NCBwZWFrX2ticHMgPSBrYnBzOwo+ICsK PiArCXBlYWtfa2JwcyAqPSAxMDA2Owo+ICsJcGVha19rYnBzIC89IDEwMDA7Cj4gKwlyZXR1cm4g KGludCkgRElWX1JPVU5EX1VQKHBlYWtfa2JwcyAqIDY0LCAoNTQgKiA4ICogMTAwMCkpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXRfZHNjX2NvbmZpZ3NfZnJvbV9mYWlybmVzc192YXJzKHN0 cnVjdAo+IGRzY19tc3RfZmFpcm5lc3NfcGFyYW1zICpwYXJhbXMsCj4gKwkJc3RydWN0IGRzY19t c3RfZmFpcm5lc3NfdmFycyAqdmFycywKPiArCQlpbnQgY291bnQpCj4gK3sKPiArCWludCBpOwo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gKwkJbWVtc2V0KCZwYXJhbXNb aV0udGltaW5nLT5kc2NfY2ZnLCAwLCBzaXplb2YocGFyYW1zW2ldLnRpbWluZy0KPiA+ZHNjX2Nm ZykpOwo+ICsJCWlmICh2YXJzW2ldLmRzY19lbmFibGVkICYmIGRjX2RzY19jb21wdXRlX2NvbmZp ZygKPiArCQkJCQlwYXJhbXNbaV0uc2luay0+Y3R4LT5kYy0+cmVzX3Bvb2wtCj4gPmRzY3NbMF0s Cj4gKwkJCQkJJnBhcmFtc1tpXS5zaW5rLQo+ID5zaW5rX2RzY19jYXBzLmRzY19kZWNfY2FwcywK PiArCQkJCQlwYXJhbXNbaV0uc2luay0+Y3R4LT5kYy0KPiA+ZGVidWcuZHNjX21pbl9zbGljZV9o ZWlnaHRfb3ZlcnJpZGUsCj4gKwkJCQkJMCwKPiArCQkJCQlwYXJhbXNbaV0udGltaW5nLAo+ICsJ CQkJCSZwYXJhbXNbaV0udGltaW5nLT5kc2NfY2ZnKSkgewo+ICsJCQlwYXJhbXNbaV0udGltaW5n LT5mbGFncy5EU0MgPSAxOwo+ICsJCQlwYXJhbXNbaV0udGltaW5nLT5kc2NfY2ZnLmJpdHNfcGVy X3BpeGVsID0KPiB2YXJzW2ldLmJwcF94MTY7Cj4gKwkJfSBlbHNlIHsKPiArCQkJcGFyYW1zW2ld LnRpbWluZy0+ZmxhZ3MuRFNDID0gMDsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgYnBwX3gxNl9mcm9tX3BibihzdHJ1Y3QgZHNjX21zdF9mYWlybmVzc19wYXJhbXMgcGFyYW0s IGludCBwYm4pCj4gK3sKPiArCXN0cnVjdCBkY19kc2NfY29uZmlnIGRzY19jb25maWc7Cj4gKwl1 NjQga2JwczsKPiArCj4gKwlrYnBzID0gKHU2NClwYm4gKiA5OTQgKiA4ICogNTQgLyA2NDsKPiAr CWRjX2RzY19jb21wdXRlX2NvbmZpZygKPiArCQkJcGFyYW0uc2luay0+Y3R4LT5kYy0+cmVzX3Bv b2wtPmRzY3NbMF0sCj4gKwkJCSZwYXJhbS5zaW5rLT5zaW5rX2RzY19jYXBzLmRzY19kZWNfY2Fw cywKPiArCQkJcGFyYW0uc2luay0+Y3R4LT5kYy0KPiA+ZGVidWcuZHNjX21pbl9zbGljZV9oZWln aHRfb3ZlcnJpZGUsCj4gKwkJCShpbnQpIGticHMsIHBhcmFtLnRpbWluZywgJmRzY19jb25maWcp Owo+ICsKPiArCXJldHVybiBkc2NfY29uZmlnLmJpdHNfcGVyX3BpeGVsOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBpbmNyZWFzZV9kc2NfYnBwKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKPiArCQkJICAgICBzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywKPiArCQkJICAgICBzdHJ1Y3Qg ZHNjX21zdF9mYWlybmVzc19wYXJhbXMgKnBhcmFtcywKPiArCQkJICAgICBzdHJ1Y3QgZHNjX21z dF9mYWlybmVzc192YXJzICp2YXJzLAo+ICsJCQkgICAgIGludCBjb3VudCkKPiArewo+ICsJaW50 IGk7Cj4gKwlib29sIGJwcF9pbmNyZWFzZWRbTUFYX1BJUEVTXTsKPiArCWludCBpbml0aWFsX3Ns YWNrW01BWF9QSVBFU107Cj4gKwlpbnQgbWluX2luaXRpYWxfc2xhY2s7Cj4gKwlpbnQgbmV4dF9p bmRleDsKPiArCWludCByZW1haW5pbmdfdG9faW5jcmVhc2UgPSAwOwo+ICsJaW50IHBibl9wZXJf dGltZXNsb3Q7Cj4gKwlpbnQgbGlua190aW1lc2xvdHNfdXNlZDsKPiArCWludCBmYWlyX3Bibl9h bGxvYzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICsJCWlmICh2YXJz W2ldLmRzY19lbmFibGVkKSB7Cj4gKwkJCWluaXRpYWxfc2xhY2tbaV0gPQo+IGticHNfdG9fcGVh a19wYm4ocGFyYW1zW2ldLmJ3X3JhbmdlLm1heF9rYnBzKSAtIHZhcnNbaV0ucGJuOwo+ICsJCQli cHBfaW5jcmVhc2VkW2ldID0gZmFsc2U7Cj4gKwkJCXJlbWFpbmluZ190b19pbmNyZWFzZSArPSAx Owo+ICsJCX0gZWxzZSB7Cj4gKwkJCWluaXRpYWxfc2xhY2tbaV0gPSAwOwo+ICsJCQlicHBfaW5j cmVhc2VkW2ldID0gdHJ1ZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcGJuX3Blcl90aW1lc2xvdCA9 IGRjX2xpbmtfYmFuZHdpZHRoX2ticHMoZGNfbGluaywKPiArCQkJZGNfbGlua19nZXRfbGlua19j YXAoZGNfbGluaykpIC8gKDggKiAxMDAwICogNTQpOwo+ICsKPiArCXdoaWxlIChyZW1haW5pbmdf dG9faW5jcmVhc2UpIHsKPiArCQluZXh0X2luZGV4ID0gLTE7Cj4gKwkJbWluX2luaXRpYWxfc2xh Y2sgPSAtMTsKPiArCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICsJCQlpZiAoIWJw cF9pbmNyZWFzZWRbaV0pIHsKPiArCQkJCWlmIChtaW5faW5pdGlhbF9zbGFjayA9PSAtMSB8fAo+ IG1pbl9pbml0aWFsX3NsYWNrID4gaW5pdGlhbF9zbGFja1tpXSkgewo+ICsJCQkJCW1pbl9pbml0 aWFsX3NsYWNrID0gaW5pdGlhbF9zbGFja1tpXTsKPiArCQkJCQluZXh0X2luZGV4ID0gaTsKPiAr CQkJCX0KPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJaWYgKG5leHRfaW5kZXggPT0gLTEpCj4gKwkJ CWJyZWFrOwo+ICsKPiArCQlsaW5rX3RpbWVzbG90c191c2VkID0gMDsKPiArCj4gKwkJZm9yIChp ID0gMDsgaSA8IGNvdW50OyBpKyspCj4gKwkJCWxpbmtfdGltZXNsb3RzX3VzZWQgKz0gRElWX1JP VU5EX1VQKHZhcnNbaV0ucGJuLAo+IHBibl9wZXJfdGltZXNsb3QpOwo+ICsKPiArCQlmYWlyX3Bi bl9hbGxvYyA9ICg2MyAtIGxpbmtfdGltZXNsb3RzX3VzZWQpIC8KPiByZW1haW5pbmdfdG9faW5j cmVhc2UgKiBwYm5fcGVyX3RpbWVzbG90Owo+ICsKPiArCQlpZiAoaW5pdGlhbF9zbGFja1tuZXh0 X2luZGV4XSA+IGZhaXJfcGJuX2FsbG9jKSB7Cj4gKwkJCXZhcnNbbmV4dF9pbmRleF0ucGJuICs9 IGZhaXJfcGJuX2FsbG9jOwo+ICsJCQlkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdGF0 ZSwKPiArCQkJCQkJICAgICAgcGFyYW1zW25leHRfaW5kZXhdLnBvcnQtCj4gPm1nciwKPiArCQkJ CQkJICAgICAgcGFyYW1zW25leHRfaW5kZXhdLnBvcnQsCj4gKwkJCQkJCSAgICAgIHZhcnNbbmV4 dF9pbmRleF0ucGJuLAo+ICsJCQkJCQkgICAgICBkbV9tc3RfZ2V0X3Bibl9kaXZpZGVyKGQKPiBj X2xpbmspKTsKPiArCQkJaWYgKCFkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdGF0ZSkpIHsKPiAr CQkJCXZhcnNbbmV4dF9pbmRleF0uYnBwX3gxNiA9Cj4gYnBwX3gxNl9mcm9tX3BibihwYXJhbXNb bmV4dF9pbmRleF0sIHZhcnNbbmV4dF9pbmRleF0ucGJuKTsKPiArCQkJfSBlbHNlIHsKPiArCQkJ CXZhcnNbbmV4dF9pbmRleF0ucGJuIC09IGZhaXJfcGJuX2FsbG9jOwo+ICsJCQkJZHJtX2RwX2F0 b21pY19maW5kX3ZjcGlfc2xvdHMoc3RhdGUsCj4gKwkJCQkJCSAgICAgIHBhcmFtc1tuZXh0X2lu ZGV4XS5wb3J0LQo+ID5tZ3IsCj4gKwkJCQkJCSAgICAgIHBhcmFtc1tuZXh0X2luZGV4XS5wb3J0 LAo+ICsJCQkJCQkgICAgICB2YXJzW25leHRfaW5kZXhdLnBibiwKPiArCQkJCQkJICAgICAgZG1f bXN0X2dldF9wYm5fZGl2aWRlcihkCj4gY19saW5rKSk7Cj4gKwkJCX0KPiArCQl9IGVsc2Ugewo+ ICsJCQl2YXJzW25leHRfaW5kZXhdLnBibiArPSBpbml0aWFsX3NsYWNrW25leHRfaW5kZXhdOwo+ ICsJCQlkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdGF0ZSwKPiArCQkJCQkJICAgICAg cGFyYW1zW25leHRfaW5kZXhdLnBvcnQtCj4gPm1nciwKPiArCQkJCQkJICAgICAgcGFyYW1zW25l eHRfaW5kZXhdLnBvcnQsCj4gKwkJCQkJCSAgICAgIHZhcnNbbmV4dF9pbmRleF0ucGJuLAo+ICsJ CQkJCQkgICAgICBkbV9tc3RfZ2V0X3Bibl9kaXZpZGVyKGQKPiBjX2xpbmspKTsKPiArCQkJaWYg KCFkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdGF0ZSkpIHsKPiArCQkJCXZhcnNbbmV4dF9pbmRl eF0uYnBwX3gxNiA9Cj4gcGFyYW1zW25leHRfaW5kZXhdLmJ3X3JhbmdlLm1heF90YXJnZXRfYnBw X3gxNjsKPiArCQkJfSBlbHNlIHsKPiArCQkJCXZhcnNbbmV4dF9pbmRleF0ucGJuIC09Cj4gaW5p dGlhbF9zbGFja1tuZXh0X2luZGV4XTsKPiArCQkJCWRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Ns b3RzKHN0YXRlLAo+ICsJCQkJCQkgICAgICBwYXJhbXNbbmV4dF9pbmRleF0ucG9ydC0KPiA+bWdy LAo+ICsJCQkJCQkgICAgICBwYXJhbXNbbmV4dF9pbmRleF0ucG9ydCwKPiArCQkJCQkJICAgICAg dmFyc1tuZXh0X2luZGV4XS5wYm4sCj4gKwkJCQkJCSAgICAgIGRtX21zdF9nZXRfcGJuX2Rpdmlk ZXIoZAo+IGNfbGluaykpOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQlicHBfaW5jcmVhc2VkW25l eHRfaW5kZXhdID0gdHJ1ZTsKPiArCQlyZW1haW5pbmdfdG9faW5jcmVhc2UtLTsKPiArCX0KPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgdHJ5X2Rpc2FibGVfZHNjKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSwKPiArCQkJICAgIHN0cnVjdCBkY19saW5rICpkY19saW5rLAo+ICsJCQkgICAg c3RydWN0IGRzY19tc3RfZmFpcm5lc3NfcGFyYW1zICpwYXJhbXMsCj4gKwkJCSAgICBzdHJ1Y3Qg ZHNjX21zdF9mYWlybmVzc192YXJzICp2YXJzLAo+ICsJCQkgICAgaW50IGNvdW50KQo+ICt7Cj4g KwlpbnQgaTsKPiArCWJvb2wgdHJpZWRbTUFYX1BJUEVTXTsKPiArCWludCBrYnBzX2luY3JlYXNl W01BWF9QSVBFU107Cj4gKwlpbnQgbWF4X2ticHNfaW5jcmVhc2U7Cj4gKwlpbnQgbmV4dF9pbmRl eDsKPiArCWludCByZW1haW5pbmdfdG9fdHJ5ID0gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg Y291bnQ7IGkrKykgewo+ICsJCWlmICh2YXJzW2ldLmRzY19lbmFibGVkICYmIHZhcnNbaV0uYnBw X3gxNiA9PQo+IHBhcmFtc1tpXS5id19yYW5nZS5tYXhfdGFyZ2V0X2JwcF94MTYpIHsKPiArCQkJ a2Jwc19pbmNyZWFzZVtpXSA9IHBhcmFtc1tpXS5id19yYW5nZS5zdHJlYW1fa2JwcyAtCj4gcGFy YW1zW2ldLmJ3X3JhbmdlLm1heF9rYnBzOwo+ICsJCQl0cmllZFtpXSA9IGZhbHNlOwo+ICsJCQly ZW1haW5pbmdfdG9fdHJ5ICs9IDE7Cj4gKwkJfSBlbHNlIHsKPiArCQkJa2Jwc19pbmNyZWFzZVtp XSA9IDA7Cj4gKwkJCXRyaWVkW2ldID0gdHJ1ZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJd2hpbGUg KHJlbWFpbmluZ190b190cnkpIHsKPiArCQluZXh0X2luZGV4ID0gLTE7Cj4gKwkJbWF4X2ticHNf aW5jcmVhc2UgPSAtMTsKPiArCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICsJCQlp ZiAoIXRyaWVkW2ldKSB7Cj4gKwkJCQlpZiAobWF4X2ticHNfaW5jcmVhc2UgPT0gLTEgfHwKPiBt YXhfa2Jwc19pbmNyZWFzZSA8IGticHNfaW5jcmVhc2VbaV0pIHsKPiArCQkJCQltYXhfa2Jwc19p bmNyZWFzZSA9IGticHNfaW5jcmVhc2VbaV07Cj4gKwkJCQkJbmV4dF9pbmRleCA9IGk7Cj4gKwkJ CQl9Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWlmIChuZXh0X2luZGV4ID09IC0xKQo+ICsJCQli cmVhazsKPiArCj4gKwkJdmFyc1tuZXh0X2luZGV4XS5wYm4gPQo+IGticHNfdG9fcGVha19wYm4o cGFyYW1zW25leHRfaW5kZXhdLmJ3X3JhbmdlLnN0cmVhbV9rYnBzKTsKPiArCQlkcm1fZHBfYXRv bWljX2ZpbmRfdmNwaV9zbG90cyhzdGF0ZSwKPiArCQkJCQkgICAgICBwYXJhbXNbbmV4dF9pbmRl eF0ucG9ydC0+bWdyLAo+ICsJCQkJCSAgICAgIHBhcmFtc1tuZXh0X2luZGV4XS5wb3J0LAo+ICsJ CQkJCSAgICAgIHZhcnNbbmV4dF9pbmRleF0ucGJuLAo+ICsJCQkJCSAgICAgIDApOwo+ICsKPiAr CQlpZiAoIWRybV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0YXRlKSkgewo+ICsJCQl2YXJzW25leHRf aW5kZXhdLmRzY19lbmFibGVkID0gZmFsc2U7Cj4gKwkJCXZhcnNbbmV4dF9pbmRleF0uYnBwX3gx NiA9IDA7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdmFyc1tuZXh0X2luZGV4XS5wYm4gPQo+IGticHNf dG9fcGVha19wYm4ocGFyYW1zW25leHRfaW5kZXhdLmJ3X3JhbmdlLm1heF9rYnBzKTsKPiArCQkJ ZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RhdGUsCj4gKwkJCQkJICAgICAgcGFyYW1z W25leHRfaW5kZXhdLnBvcnQtPm1nciwKPiArCQkJCQkgICAgICBwYXJhbXNbbmV4dF9pbmRleF0u cG9ydCwKPiArCQkJCQkgICAgICB2YXJzW25leHRfaW5kZXhdLnBibiwKPiArCQkJCQkgICAgICBk bV9tc3RfZ2V0X3Bibl9kaXZpZGVyKGRjX2xpbmspKQo+IDsKPiArCQl9Cj4gKwo+ICsJCXRyaWVk W25leHRfaW5kZXhdID0gdHJ1ZTsKPiArCQlyZW1haW5pbmdfdG9fdHJ5LS07Cj4gKwl9Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIGNvbXB1dGVfbXN0X2RzY19jb25maWdzX2Zvcl9saW5rKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlCj4gKnN0YXRlLAo+ICsJCQkJCSAgICAgc3RydWN0IGRjX3N0YXRl ICpkY19zdGF0ZSwKPiArCQkJCQkgICAgIHN0cnVjdCBkY19saW5rICpkY19saW5rKQo+ICt7Cj4g KwlpbnQgaTsKPiArCXN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbTsKPiArCXN0cnVjdCBk c2NfbXN0X2ZhaXJuZXNzX3BhcmFtcyBwYXJhbXNbTUFYX1BJUEVTXTsKPiArCXN0cnVjdCBkc2Nf bXN0X2ZhaXJuZXNzX3ZhcnMgdmFyc1tNQVhfUElQRVNdOwo+ICsJc3RydWN0IGFtZGdwdV9kbV9j b25uZWN0b3IgKmFjb25uZWN0b3I7Cj4gKwlpbnQgY291bnQgPSAwOwo+ICsKPiArCW1lbXNldChw YXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKPiArCj4gKwkvKiBTZXQgdXAgcGFyYW1zICovCj4g Kwlmb3IgKGkgPSAwOyBpIDwgZGNfc3RhdGUtPnN0cmVhbV9jb3VudDsgaSsrKSB7Cj4gKwkJc3Ry dWN0IGRjX2RzY19wb2xpY3kgZHNjX3BvbGljeSA9IHswfTsKPiArCj4gKwkJc3RyZWFtID0gZGNf c3RhdGUtPnN0cmVhbXNbaV07Cj4gKwo+ICsJCWlmIChzdHJlYW0tPmxpbmsgIT0gZGNfbGluaykK PiArCQkJY29udGludWU7Cj4gKwo+ICsJCXN0cmVhbS0+dGltaW5nLmZsYWdzLkRTQyA9IDA7Cj4g Kwo+ICsJCXBhcmFtc1tjb3VudF0udGltaW5nID0gJnN0cmVhbS0+dGltaW5nOwo+ICsJCXBhcmFt c1tjb3VudF0uc2luayA9IHN0cmVhbS0+c2luazsKPiArCQlhY29ubmVjdG9yID0gKHN0cnVjdCBh bWRncHVfZG1fY29ubmVjdG9yICopc3RyZWFtLQo+ID5kbV9zdHJlYW1fY29udGV4dDsKPiArCQlw YXJhbXNbY291bnRdLnBvcnQgPSBhY29ubmVjdG9yLT5wb3J0Owo+ICsJCXBhcmFtc1tjb3VudF0u Y29tcHJlc3Npb25fcG9zc2libGUgPSBzdHJlYW0tPnNpbmstCj4gPnNpbmtfZHNjX2NhcHMuZHNj X2RlY19jYXBzLmlzX2RzY19zdXBwb3J0ZWQ7Cj4gKwkJZGNfZHNjX2dldF9wb2xpY3lfZm9yX3Rp bWluZyhwYXJhbXNbY291bnRdLnRpbWluZywKPiAmZHNjX3BvbGljeSk7Cj4gKwkJaWYgKCFkY19k c2NfY29tcHV0ZV9iYW5kd2lkdGhfcmFuZ2UoCj4gKwkJCQlzdHJlYW0tPnNpbmstPmN0eC0+ZGMt PnJlc19wb29sLT5kc2NzWzBdLAo+ICsJCQkJc3RyZWFtLT5zaW5rLT5jdHgtPmRjLQo+ID5kZWJ1 Zy5kc2NfbWluX3NsaWNlX2hlaWdodF9vdmVycmlkZSwKPiArCQkJCWRzY19wb2xpY3kubWluX3Rh cmdldF9icHAsCj4gKwkJCQlkc2NfcG9saWN5Lm1heF90YXJnZXRfYnBwLAo+ICsJCQkJJnN0cmVh bS0+c2luay0+c2lua19kc2NfY2Fwcy5kc2NfZGVjX2NhcHMsCj4gKwkJCQkmc3RyZWFtLT50aW1p bmcsICZwYXJhbXNbY291bnRdLmJ3X3JhbmdlKSkKPiArCQkJcGFyYW1zW2NvdW50XS5id19yYW5n ZS5zdHJlYW1fa2JwcyA9Cj4gZGNfYmFuZHdpZHRoX2luX2ticHNfZnJvbV90aW1pbmcoJnN0cmVh bS0+dGltaW5nKTsKPiArCj4gKwkJY291bnQrKzsKPiArCX0KPiArCS8qIFRyeSBubyBjb21wcmVz c2lvbiAqLwo+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPiArCQl2YXJzW2ldLnBi biA9Cj4ga2Jwc190b19wZWFrX3BibihwYXJhbXNbaV0uYndfcmFuZ2Uuc3RyZWFtX2ticHMpOwo+ ICsJCXZhcnNbaV0uZHNjX2VuYWJsZWQgPSBmYWxzZTsKPiArCQl2YXJzW2ldLmJwcF94MTYgPSAw Owo+ICsJCWRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0YXRlLAo+ICsJCQkJCSAgICAg IHBhcmFtc1tpXS5wb3J0LT5tZ3IsCj4gKwkJCQkJICAgICAgcGFyYW1zW2ldLnBvcnQsCj4gKwkJ CQkJICAgICAgdmFyc1tpXS5wYm4sCj4gKwkJCQkJICAgICAgMCk7Cj4gKwl9Cj4gKwlpZiAoIWRy bV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0YXRlKSkgewo+ICsJCXNldF9kc2NfY29uZmlnc19mcm9t X2ZhaXJuZXNzX3ZhcnMocGFyYW1zLCB2YXJzLCBjb3VudCk7Cj4gKwkJcmV0dXJuIHRydWU7Cj4g Kwl9Cj4gKwo+ICsJLyogVHJ5IG1heCBjb21wcmVzc2lvbiAqLwo+ICsJZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspIHsKPiArCQlpZiAocGFyYW1zW2ldLmNvbXByZXNzaW9uX3Bvc3NpYmxlKSB7 Cj4gKwkJCXZhcnNbaV0ucGJuID0KPiBrYnBzX3RvX3BlYWtfcGJuKHBhcmFtc1tpXS5id19yYW5n ZS5taW5fa2Jwcyk7Cj4gKwkJCXZhcnNbaV0uZHNjX2VuYWJsZWQgPSB0cnVlOwo+ICsJCQl2YXJz W2ldLmJwcF94MTYgPQo+IHBhcmFtc1tpXS5id19yYW5nZS5taW5fdGFyZ2V0X2JwcF94MTY7Cj4g KwkJCWRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0YXRlLAo+ICsJCQkJCSAgICAgIHBh cmFtc1tpXS5wb3J0LT5tZ3IsCj4gKwkJCQkJICAgICAgcGFyYW1zW2ldLnBvcnQsCj4gKwkJCQkJ ICAgICAgdmFyc1tpXS5wYm4sCj4gKwkJCQkJICAgICAgZG1fbXN0X2dldF9wYm5fZGl2aWRlcihk Y19saW5rKSkKPiA7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdmFyc1tpXS5wYm4gPQo+IGticHNfdG9f cGVha19wYm4ocGFyYW1zW2ldLmJ3X3JhbmdlLnN0cmVhbV9rYnBzKTsKPiArCQkJdmFyc1tpXS5k c2NfZW5hYmxlZCA9IGZhbHNlOwo+ICsJCQl2YXJzW2ldLmJwcF94MTYgPSAwOwo+ICsJCQlkcm1f ZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdGF0ZSwKPiArCQkJCQkgICAgICBwYXJhbXNbaV0u cG9ydC0+bWdyLAo+ICsJCQkJCSAgICAgIHBhcmFtc1tpXS5wb3J0LAo+ICsJCQkJCSAgICAgIHZh cnNbaV0ucGJuLAo+ICsJCQkJCSAgICAgIDApOwo+ICsJCX0KPiArCX0KPiArCWlmIChkcm1fZHBf bXN0X2F0b21pY19jaGVjayhzdGF0ZSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCS8qIE9w dGltaXplIGRlZ3JlZSBvZiBjb21wcmVzc2lvbiAqLwo+ICsJaW5jcmVhc2VfZHNjX2JwcChzdGF0 ZSwgZGNfbGluaywgcGFyYW1zLCB2YXJzLCBjb3VudCk7Cj4gKwo+ICsJdHJ5X2Rpc2FibGVfZHNj KHN0YXRlLCBkY19saW5rLCBwYXJhbXMsIHZhcnMsIGNvdW50KTsKPiArCj4gKwlzZXRfZHNjX2Nv bmZpZ3NfZnJvbV9mYWlybmVzc192YXJzKHBhcmFtcywgdmFycywgY291bnQpOwo+ICsKPiArCXJl dHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtib29sIGNvbXB1dGVfbXN0X2RzY19jb25maWdzX2Zvcl9z dGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCQkgICAgICAgc3RydWN0 IGRjX3N0YXRlICpkY19zdGF0ZSkKPiArewo+ICsJaW50IGksIGo7Cj4gKwlzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXRlICpzdHJlYW07Cj4gKwlib29sIGNvbXB1dGVkX3N0cmVhbXNbTUFYX1BJUEVTXTsK PiArCXN0cnVjdCBhbWRncHVfZG1fY29ubmVjdG9yICphY29ubmVjdG9yOwo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCBkY19zdGF0ZS0+c3RyZWFtX2NvdW50OyBpKyspCj4gKwkJY29tcHV0ZWRfc3Ry ZWFtc1tpXSA9IGZhbHNlOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBkY19zdGF0ZS0+c3RyZWFt X2NvdW50OyBpKyspIHsKPiArCQlzdHJlYW0gPSBkY19zdGF0ZS0+c3RyZWFtc1tpXTsKPiArCj4g KwkJaWYgKHN0cmVhbS0+c2lnbmFsICE9IFNJR05BTF9UWVBFX0RJU1BMQVlfUE9SVF9NU1QpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlhY29ubmVjdG9yID0gKHN0cnVjdCBhbWRncHVfZG1fY29u bmVjdG9yICopc3RyZWFtLQo+ID5kbV9zdHJlYW1fY29udGV4dDsKPiArCj4gKwkJaWYgKCFhY29u bmVjdG9yIHx8ICFhY29ubmVjdG9yLT5kY19zaW5rKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJ aWYgKCFhY29ubmVjdG9yLT5kY19zaW5rLQo+ID5zaW5rX2RzY19jYXBzLmRzY19kZWNfY2Fwcy5p c19kc2Nfc3VwcG9ydGVkKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKGNvbXB1dGVkX3N0 cmVhbXNbaV0pCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQltdXRleF9sb2NrKCZhY29ubmVjdG9y LT5tc3RfbWdyLmxvY2spOwo+ICsJCWlmICghY29tcHV0ZV9tc3RfZHNjX2NvbmZpZ3NfZm9yX2xp bmsoc3RhdGUsIGRjX3N0YXRlLCBzdHJlYW0tCj4gPmxpbmspKSB7Cj4gKwkJCW11dGV4X3VubG9j aygmYWNvbm5lY3Rvci0+bXN0X21nci5sb2NrKTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0K PiArCQltdXRleF91bmxvY2soJmFjb25uZWN0b3ItPm1zdF9tZ3IubG9jayk7Cj4gKwo+ICsJCWZv ciAoaiA9IDA7IGogPCBkY19zdGF0ZS0+c3RyZWFtX2NvdW50OyBqKyspIHsKPiArCQkJaWYgKGRj X3N0YXRlLT5zdHJlYW1zW2pdLT5saW5rID09IHN0cmVhbS0+bGluaykKPiArCQkJCWNvbXB1dGVk X3N0cmVhbXNbal0gPSB0cnVlOwo+ICsJCX0KPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg ZGNfc3RhdGUtPnN0cmVhbV9jb3VudDsgaSsrKSB7Cj4gKwkJc3RyZWFtID0gZGNfc3RhdGUtPnN0 cmVhbXNbaV07Cj4gKwo+ICsJCWlmIChzdHJlYW0tPnRpbWluZy5mbGFncy5EU0MgPT0gMSkKPiAr CQkJZGNuMjBfYWRkX2RzY190b19zdHJlYW1fcmVzb3VyY2Uoc3RyZWFtLT5jdHgtPmRjLAo+IGRj X3N0YXRlLCBzdHJlYW0pOwo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21z dF90eXBlcy5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbV9tc3RfdHlwZXMuaAo+IGluZGV4IGE1NTNlYTA0NjE4NS4uZDQ1MWNlOWNlY2MwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2Rt X21zdF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9k bS9hbWRncHVfZG1fbXN0X3R5cGVzLmgKPiBAQCAtMzQsNCArMzQsNyBAQCBpbnQgZG1fbXN0X2dl dF9wYm5fZGl2aWRlcihzdHJ1Y3QgZGNfbGluayAqbGluayk7Cj4gIHZvaWQgYW1kZ3B1X2RtX2lu aXRpYWxpemVfZHBfY29ubmVjdG9yKHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpkbSwK PiAgCQkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3Rvcgo+ICphY29ubmVjdG9yKTsK PiAgCj4gKwo+ICtib29sIGNvbXB1dGVfbXN0X2RzY19jb25maWdzX2Zvcl9zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCQkgICAgICAgc3RydWN0IGRjX3N0YXRlICpk Y19zdGF0ZSk7Cj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNlLmMKPiBpbmRleCAyY2NmZDg0YTdkYTQuLjdm MDNhNmI1YWUxYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZGNuMjAvZGNuMjBfcmVzb3VyY2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9kY24yMC9kY24yMF9yZXNvdXJjZS5jCj4gQEAgLTE1NTgsNyArMTU1OCw3IEBAIHN0YXRp YyB2b2lkIHJlbGVhc2VfZHNjKHN0cnVjdCByZXNvdXJjZV9jb250ZXh0Cj4gKnJlc19jdHgsCj4g IAo+ICAKPiAgCj4gLXN0YXRpYyBlbnVtIGRjX3N0YXR1cyBhZGRfZHNjX3RvX3N0cmVhbV9yZXNv dXJjZShzdHJ1Y3QgZGMgKmRjLAo+ICtlbnVtIGRjX3N0YXR1cyBkY24yMF9hZGRfZHNjX3RvX3N0 cmVhbV9yZXNvdXJjZShzdHJ1Y3QgZGMgKmRjLAo+ICAJCXN0cnVjdCBkY19zdGF0ZSAqZGNfY3R4 LAo+ICAJCXN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSkKPiAgewo+IEBAIC0xNTcz LDYgKzE1NzMsOSBAQCBzdGF0aWMgZW51bSBkY19zdGF0dXMKPiBhZGRfZHNjX3RvX3N0cmVhbV9y ZXNvdXJjZShzdHJ1Y3QgZGMgKmRjLAo+ICAJCWlmIChwaXBlX2N0eC0+c3RyZWFtICE9IGRjX3N0 cmVhbSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICsJCWlmIChwaXBlX2N0eC0+c3RyZWFtX3Jlcy5k c2MpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAgCQlhY3F1aXJlX2RzYygmZGNfY3R4LT5yZXNfY3R4 LCBwb29sLCAmcGlwZV9jdHgtCj4gPnN0cmVhbV9yZXMuZHNjKTsKPiAgCj4gIAkJLyogVGhlIG51 bWJlciBvZiBEU0NzIGNhbiBiZSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBwaXBlcyAqLwo+IEBA IC0xNjIyLDcgKzE2MjUsNyBAQCBlbnVtIGRjX3N0YXR1cyBkY24yMF9hZGRfc3RyZWFtX3RvX2N0 eChzdHJ1Y3QgZGMgKmRjLAo+IHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwKPiAgCj4gIAkvKiBH ZXQgYSBEU0MgaWYgcmVxdWlyZWQgYW5kIGF2YWlsYWJsZSAqLwo+ICAJaWYgKHJlc3VsdCA9PSBE Q19PSyAmJiBkY19zdHJlYW0tPnRpbWluZy5mbGFncy5EU0MpCj4gLQkJcmVzdWx0ID0gYWRkX2Rz Y190b19zdHJlYW1fcmVzb3VyY2UoZGMsIG5ld19jdHgsIGRjX3N0cmVhbSk7Cj4gKwkJcmVzdWx0 ID0gZGNuMjBfYWRkX2RzY190b19zdHJlYW1fcmVzb3VyY2UoZGMsIG5ld19jdHgsCj4gZGNfc3Ry ZWFtKTsKPiAgCj4gIAlpZiAocmVzdWx0ID09IERDX09LKQo+ICAJCXJlc3VsdCA9IGRjbjIwX2J1 aWxkX21hcHBlZF9yZXNvdXJjZShkYywgbmV3X2N0eCwgZGNfc3RyZWFtKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNlLmgK PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24yMC9kY24yMF9yZXNvdXJjZS5o Cj4gaW5kZXggODQwY2E2NmMzNGUxLi5mNTg5Mzg0MGI3OWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjIwL2RjbjIwX3Jlc291cmNlLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMjAvZGNuMjBfcmVzb3VyY2UuaAo+IEBA IC0xNTcsNiArMTU3LDcgQEAgdm9pZCBkY24yMF9jYWxjdWxhdGVfZGxnX3BhcmFtcygKPiAgCj4g IGVudW0gZGNfc3RhdHVzIGRjbjIwX2J1aWxkX21hcHBlZF9yZXNvdXJjZShjb25zdCBzdHJ1Y3Qg ZGMgKmRjLCBzdHJ1Y3QKPiBkY19zdGF0ZSAqY29udGV4dCwgc3RydWN0IGRjX3N0cmVhbV9zdGF0 ZSAqc3RyZWFtKTsKPiAgZW51bSBkY19zdGF0dXMgZGNuMjBfYWRkX3N0cmVhbV90b19jdHgoc3Ry dWN0IGRjICpkYywgc3RydWN0IGRjX3N0YXRlCj4gKm5ld19jdHgsIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKmRjX3N0cmVhbSk7Cj4gK2VudW0gZGNfc3RhdHVzIGRjbjIwX2FkZF9kc2NfdG9fc3Ry ZWFtX3Jlc291cmNlKHN0cnVjdCBkYyAqZGMsIHN0cnVjdAo+IGRjX3N0YXRlICpkY19jdHgsIHN0 cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7Cj4gIGVudW0gZGNfc3RhdHVzIGRjbjIw X3JlbW92ZV9zdHJlYW1fZnJvbV9jdHgoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3N0YXRlCj4g Km5ld19jdHgsIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7Cj4gIGVudW0gZGNf c3RhdHVzIGRjbjIwX2dldF9kZWZhdWx0X3N3aXp6bGVfbW9kZShzdHJ1Y3QgZGNfcGxhbmVfc3Rh dGUKPiAqcGxhbmVfc3RhdGUpOwo+ICAKLS0gCkNoZWVycywKCUx5dWRlIFBhdWwKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBs aXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==