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 8E8E3C433EF for ; Tue, 8 Feb 2022 09:31:55 +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:Cc:To:From:Subject:References: Mime-Version:Message-Id:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=9GVYLZvG7bjf+m10mzUqjsJueHF3ujU+QE2hPRzYoAo=; b=y28xlD3SnUWvnYBrRF4dD+XZmc 8N/7MiUIM7CRqp4meovYooxv8+M9xi79esR0hcPNjawZXkxEu/h85B2xsBVHzjOds2+SpqtoponZa gk7sTIakItB3vn/ej6ppGIqiW8L+0bzPedSBLQ6+48AZ4QlMr4D+qI3zQWCDAZz2xcrz2v8lpfga6 biJHDClkoWIhRMZYkbfVw0IsV4IYTTmG+NmR5f2MJ+Z091JmgwLjjqcWZNEM7ehLo9sO+y9MxNhMP kwIT3Rh3dDHF8cYGOxKGg6XRmWK9gw3soeZ8Z2N3y9s+Vbh+bau5kSJJSZ3plXrD447RYZXqMfmEg Sw7pakTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHMpn-00DEl8-Lh; Tue, 08 Feb 2022 09:30:51 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHLin-00Ctsg-W3 for linux-arm-kernel@lists.infradead.org; Tue, 08 Feb 2022 08:19:38 +0000 Received: by mail-yb1-xb49.google.com with SMTP id j17-20020a25ec11000000b0061dabf74012so11648671ybh.15 for ; Tue, 08 Feb 2022 00:19:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=/twOVjciuaTkQuDR6O6gYp6Efb4Bpt3N4vpRNZOtFxA=; b=tQgyeW6QZJO7KCgfdP5c9j64/W2aBj7z+MGthF0vw6z06kMadV2l0NwP6l4/FKAyG+ pVs02MnUcviVWQQteK1288suvpxgzI2ycATiE437+/XQAN5tfCJwPBWP6grbe7CLLowK zIeTxsK1xVkk5KsaoyQSLBmjUTM8Wkz82/OmRGHWfQFWhVcFEXQd1rEH3jr4Qy709rAd 7oTwTsVxIKiRJ8LPiXcBvK3NzQgRHWYRL0ysu9RrfiL4xhSU748sS87eAcLhryewUehj VsAqqdVgBVpGC4iwv+GXajELqilVzxSO4FTEoBcszn2aNJ6cWpbU322Ntt8hwilv3oqq Vddg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=/twOVjciuaTkQuDR6O6gYp6Efb4Bpt3N4vpRNZOtFxA=; b=PQohNvOuOH0I8+P9yr6d1q/S2Sw0nX1Q0s51T+KJMe2P7cZsMGZcOmUHNV1UY/MEmI TAQzt+euSABJbwFDKx3Dy/a8OwkBi6NClkiyE2qJVPe1nUQ+hEbkKeQa8lcHq3QUoh1r I47ty0J1pYmnzIaJfhJKo0pZgnXlu8IgT0tfacbwCkbq5QQKof1ArxSNehXit0Kt3umL rOAwJ9h0BPgUL16+yBFd4r9Z03egbv2ptzc6ESVbwqWuQqALVi0JRRKPuuUShkWh5woR M/6KrkhyA3IGqslFeY3nl686eke0VkLkmzaaG//hIsrJORGLBqAiv2S1kjJhIdcXUaks lEpQ== X-Gm-Message-State: AOAM5306GI+QecLYs0cqcXwoK7oW5ipqxKaNByevXXEQ04SWfsb8ai05 8XOOvgFhbL9xOkYmBCQYt5weaMZhHu4= X-Google-Smtp-Source: ABdhPJzjWlObbdLcuNDCuVDs9xDklfK1PKcHny3Y1Fwtaz/RkfSZBm47NkOSefar/gq8CdmMEUjlbvWntIM= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:5f31:19c3:21f5:7300]) (user=yuzhao job=sendgmr) by 2002:a05:6902:1201:: with SMTP id s1mr3569636ybu.626.1644308372292; Tue, 08 Feb 2022 00:19:32 -0800 (PST) Date: Tue, 8 Feb 2022 01:18:54 -0700 In-Reply-To: <20220208081902.3550911-1-yuzhao@google.com> Message-Id: <20220208081902.3550911-5-yuzhao@google.com> Mime-Version: 1.0 References: <20220208081902.3550911-1-yuzhao@google.com> X-Mailer: git-send-email 2.35.0.263.gb82422642f-goog Subject: [PATCH v7 04/12] mm: multigenerational LRU: groundwork From: Yu Zhao To: Andrew Morton , Johannes Weiner , Mel Gorman , Michal Hocko Cc: Andi Kleen , Aneesh Kumar , Barry Song <21cnbao@gmail.com>, Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Michael Larabel , Mike Rapoport , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, page-reclaim@google.com, x86@kernel.org, Yu Zhao , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , "=?UTF-8?q?Holger=20Hoffst=C3=A4tte?=" , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220208_001934_120396_ECDA1B47 X-CRM114-Status: GOOD ( 31.65 ) 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 RXZpY3RhYmxlIHBhZ2VzIGFyZSBkaXZpZGVkIGludG8gbXVsdGlwbGUgZ2VuZXJhdGlvbnMgZm9y IGVhY2ggbHJ1dmVjLgpUaGUgeW91bmdlc3QgZ2VuZXJhdGlvbiBudW1iZXIgaXMgc3RvcmVkIGlu IGxydWdlbi0+bWF4X3NlcSBmb3IgYm90aAphbm9uIGFuZCBmaWxlIHR5cGVzIGFzIHRoZXkncmUg YWdlZCBvbiBhbiBlcXVhbCBmb290aW5nLiBUaGUgb2xkZXN0CmdlbmVyYXRpb24gbnVtYmVycyBh cmUgc3RvcmVkIGluIGxydWdlbi0+bWluX3NlcVtdIHNlcGFyYXRlbHkgZm9yIGFub24KYW5kIGZp bGUgdHlwZXMgYXMgY2xlYW4gZmlsZSBwYWdlcyBjYW4gYmUgZXZpY3RlZCByZWdhcmRsZXNzIG9m IHN3YXAKY29uc3RyYWludHMuIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgbW9ub3RvbmljYWxs eSBpbmNyZWFzaW5nLgoKR2VuZXJhdGlvbiBudW1iZXJzIGFyZSB0cnVuY2F0ZWQgaW50byBvcmRl cl9iYXNlXzIoTUFYX05SX0dFTlMrMSkgYml0cwppbiBvcmRlciB0byBmaXQgaW50byB0aGUgZ2Vu IGNvdW50ZXIgaW4gZm9saW8tPmZsYWdzLiBFYWNoIHRydW5jYXRlZApnZW5lcmF0aW9uIG51bWJl ciBpcyBhbiBpbmRleCB0byBscnVnZW4tPmxpc3RzW10uIFRoZSBzbGlkaW5nIHdpbmRvdwp0ZWNo bmlxdWUgaXMgdXNlZCB0byB0cmFjayBhdCBsZWFzdCBNSU5fTlJfR0VOUyBhbmQgYXQgbW9zdApN QVhfTlJfR0VOUyBnZW5lcmF0aW9ucy4gVGhlIGdlbiBjb3VudGVyIHN0b3JlcyAoc2VxJU1BWF9O Ul9HRU5TKSsxCndoaWxlIGEgcGFnZSBpcyBvbiBvbmUgb2YgbHJ1Z2VuLT5saXN0c1tdLiBPdGhl cndpc2UgaXQgc3RvcmVzIDAuCgpUaGVyZSBhcmUgdHdvIGNvbmNlcHR1YWxseSBpbmRlcGVuZGVu dCBwcm9jZXNzZXMgKGFzIGluIHRoZQptYW51ZmFjdHVyaW5nIHByb2Nlc3MpOiAidGhlIGFnaW5n Iiwgd2hpY2ggcHJvZHVjZXMgeW91bmcgZ2VuZXJhdGlvbnMsCmFuZCAidGhlIGV2aWN0aW9uIiwg d2hpY2ggY29uc3VtZXMgb2xkIGdlbmVyYXRpb25zLiBUaGV5IGZvcm0gYQpjbG9zZWQtbG9vcCBz eXN0ZW0sIGkuZS4sICJ0aGUgcGFnZSByZWNsYWltIi4gQm90aCBwcm9jZXNzZXMgY2FuIGJlCmlu dm9rZWQgZnJvbSB1c2Vyc3BhY2UgZm9yIHRoZSBwdXJwb3NlcyBvZiB3b3JraW5nIHNldCBlc3Rp bWF0aW9uIGFuZApwcm9hY3RpdmUgcmVjbGFpbS4gVGhlc2UgZmVhdHVyZXMgYXJlIHJlcXVpcmVk IHRvIG9wdGltaXplIGpvYgpzY2hlZHVsaW5nIChiaW4gcGFja2luZykgaW4gZGF0YSBjZW50ZXJz LiBUaGUgdmFyaWFibGUgc2l6ZSBvZiB0aGUKc2xpZGluZyB3aW5kb3cgaXMgZGVzaWduZWQgZm9y IHN1Y2ggdXNlIGNhc2VzIFsxXVsyXS4KClRvIGF2b2lkIGNvbmZ1c2lvbnMsIHRoZSB0ZXJtcyAi aG90IiBhbmQgImNvbGQiIHdpbGwgYmUgYXBwbGllZCB0byB0aGUKbXVsdGlnZW5lcmF0aW9uYWwg TFJVLCBhcyBhIG5ldyBjb252ZW50aW9uOyB0aGUgdGVybXMgImFjdGl2ZSIgYW5kCiJpbmFjdGl2 ZSIgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBhY3RpdmUvaW5hY3RpdmUgTFJVLCBhcyB1c3VhbC4K ClRoZSBwcm90ZWN0aW9uIG9mIGhvdCBwYWdlcyBhbmQgdGhlIHNlbGVjdGlvbiBvZiBjb2xkIHBh Z2VzIGFyZSBiYXNlZApvbiBwYWdlIGFjY2VzcyBjaGFubmVscyBhbmQgcGF0dGVybnMuIFRoZXJl IGFyZSB0d28gYWNjZXNzIGNoYW5uZWxzOgpvbmUgdGhyb3VnaCBwYWdlIHRhYmxlcyBhbmQgdGhl IG90aGVyIHRocm91Z2ggZmlsZSBkZXNjcmlwdG9ycy4gVGhlCnByb3RlY3Rpb24gb2YgdGhlIGZv cm1lciBjaGFubmVsIGlzIGJ5IGRlc2lnbiBzdHJvbmdlciBiZWNhdXNlOgoxKSBUaGUgdW5jZXJ0 YWludHkgaW4gZGV0ZXJtaW5pbmcgdGhlIGFjY2VzcyBwYXR0ZXJucyBvZiB0aGUgZm9ybWVyCiAg IGNoYW5uZWwgaXMgaGlnaGVyIGR1ZSB0byB0aGUgYXBwcm94aW1hdGlvbiBvZiB0aGUgYWNjZXNz ZWQgYml0LgoyKSBUaGUgY29zdCBvZiBldmljdGluZyB0aGUgZm9ybWVyIGNoYW5uZWwgaXMgaGln aGVyIGR1ZSB0byB0aGUgVExCCiAgIGZsdXNoZXMgcmVxdWlyZWQgYW5kIHRoZSBsaWtlbGlob29k IG9mIGVuY291bnRlcmluZyB0aGUgZGlydHkgYml0LgozKSBUaGUgcGVuYWx0eSBvZiB1bmRlcnBy b3RlY3RpbmcgdGhlIGZvcm1lciBjaGFubmVsIGlzIGhpZ2hlciBiZWNhdXNlCiAgIGFwcGxpY2F0 aW9ucyB1c3VhbGx5IGRvbid0IHByZXBhcmUgdGhlbXNlbHZlcyBmb3IgbWFqb3IgcGFnZSBmYXVs dHMKICAgbGlrZSB0aGV5IGRvIGZvciBibG9ja2VkIEkvTy4gRS5nLiwgR1VJIGFwcGxpY2F0aW9u cyBjb21tb25seSB1c2UKICAgZGVkaWNhdGVkIEkvTyB0aHJlYWRzIHRvIGF2b2lkIGJsb2NraW5n IHRoZSByZW5kZXJpbmcgdGhyZWFkcy4KVGhlcmUgYXJlIGFsc28gdHdvIGFjY2VzcyBwYXR0ZXJu czogb25lIHdpdGggdGVtcG9yYWwgbG9jYWxpdHkgYW5kIHRoZQpvdGhlciB3aXRob3V0LiBGb3Ig dGhlIHJlYXNvbnMgbGlzdGVkIGFib3ZlLCB0aGUgZm9ybWVyIGNoYW5uZWwgaXMKYXNzdW1lZCB0 byBmb2xsb3cgdGhlIGZvcm1lciBwYXR0ZXJuIHVubGVzcyBWTV9TRVFfUkVBRCBvcgpWTV9SQU5E X1JFQUQgaXMgcHJlc2VudCwgYW5kIHRoZSBsYXR0ZXIgY2hhbm5lbCBpcyBhc3N1bWVkIHRvIGZv bGxvdwp0aGUgbGF0dGVyIHBhdHRlcm4gdW5sZXNzIG91dGx5aW5nIHJlZmF1bHRzIGhhdmUgYmVl biBvYnNlcnZlZC4KClRoZSBuZXh0IHBhdGNoIHdpbGwgYWRkcmVzcyB0aGUgIm91dGx5aW5nIHJl ZmF1bHRzIi4gQSBmZXcgbWFjcm9zLAppLmUuLCBMUlVfUkVGU18qLCB1c2VkIHRoZXJlIGFyZSBh ZGRlZCBpbiB0aGlzIHBhdGNoIHRvIG1ha2UgdGhlCnBhdGNoc2V0IGxlc3MgZGlmZnkuCgpBIHBh Z2UgaXMgYWRkZWQgdG8gdGhlIHlvdW5nZXN0IGdlbmVyYXRpb24gb24gZmF1bHRpbmcuIFRoZSBh Z2luZwpuZWVkcyB0byBjaGVjayB0aGUgYWNjZXNzZWQgYml0IGF0IGxlYXN0IHR3aWNlIGJlZm9y ZSBoYW5kaW5nIHRoaXMKcGFnZSBvdmVyIHRvIHRoZSBldmljdGlvbi4gVGhlIGZpcnN0IGNoZWNr IHRha2VzIGNhcmUgb2YgdGhlIGFjY2Vzc2VkCmJpdCBzZXQgb24gdGhlIGluaXRpYWwgZmF1bHQ7 IHRoZSBzZWNvbmQgY2hlY2sgbWFrZXMgc3VyZSB0aGlzIHBhZ2UKaGFzbid0IGJlZW4gdXNlZCBz aW5jZSB0aGVuLiBUaGlzIHByb2Nlc3MsIEFLQSBzZWNvbmQgY2hhbmNlLCByZXF1aXJlcwphIG1p bmltdW0gb2YgdHdvIGdlbmVyYXRpb25zLCBoZW5jZSBNSU5fTlJfR0VOUy4KClsxXSBodHRwczov L3Jlc2VhcmNoLmdvb2dsZS9wdWJzL3B1YjQ4NTUxLwpbMl0gaHR0cHM6Ly93d3cuY3MuY211LmVk dS9+ZHNrYXJsYXQvcHVibGljYXRpb25zL3Rtb19hc3Bsb3MyMi5wZGYKClNpZ25lZC1vZmYtYnk6 IFl1IFpoYW8gPHl1emhhb0Bnb29nbGUuY29tPgpBY2tlZC1ieTogQnJpYW4gR2VmZm9uIDxiZ2Vm Zm9uQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBKYW4gQWxleGFuZGVyIFN0ZWZmZW5zIChoZWZ0aWcp IDxoZWZ0aWdAYXJjaGxpbnV4Lm9yZz4KQWNrZWQtYnk6IE9sZWtzYW5kciBOYXRhbGVua28gPG9s ZWtzYW5kckBuYXRhbGVua28ubmFtZT4KQWNrZWQtYnk6IFN0ZXZlbiBCYXJyZXR0IDxzdGV2ZW5A bGlxdW9yaXgubmV0PgpBY2tlZC1ieTogU3VsZWltYW4gU291aGxhbCA8c3VsZWltYW5AZ29vZ2xl LmNvbT4KVGVzdGVkLWJ5OiBEYW5pZWwgQnlybmUgPGRqYnlybmVAbXR1LmVkdT4KVGVzdGVkLWJ5 OiBEb25hbGQgQ2FyciA8ZEBjaGFvcy1yZWlucy5jb20+ClRlc3RlZC1ieTogSG9sZ2VyIEhvZmZz dMOkdHRlIDxob2xnZXJAYXBwbGllZC1hc3luY2hyb255LmNvbT4KVGVzdGVkLWJ5OiBLb25zdGFu dGluIEtoYXJsYW1vdiA8SGktQW5nZWxAeWFuZGV4LnJ1PgpUZXN0ZWQtYnk6IFNodWFuZyBaaGFp IDxzemhhaTJAY3Mucm9jaGVzdGVyLmVkdT4KVGVzdGVkLWJ5OiBTb2ZpYSBUcmluaCA8c29maWEu dHJpbmhAZWRpLndvcmtzPgotLS0KIGZzL2Z1c2UvZGV2LmMgICAgICAgICAgICAgICAgICAgICB8 ICAgMyArLQogaW5jbHVkZS9saW51eC9tbS5oICAgICAgICAgICAgICAgIHwgICAyICsKIGluY2x1 ZGUvbGludXgvbW1faW5saW5lLmggICAgICAgICB8IDE5MSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGluY2x1ZGUvbGludXgvbW16b25lLmggICAgICAgICAgICB8ICA3NiArKysrKysr KysrKysKIGluY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaCB8ICAxOSArKy0KIGluY2x1 ZGUvbGludXgvcGFnZS1mbGFncy5oICAgICAgICB8ICAgNCArLQogaW5jbHVkZS9saW51eC9zY2hl ZC5oICAgICAgICAgICAgIHwgICA0ICsKIGtlcm5lbC9ib3VuZHMuYyAgICAgICAgICAgICAgICAg ICB8ICAgMyArCiBtbS9odWdlX21lbW9yeS5jICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIG1t L21lbWNvbnRyb2wuYyAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBtbS9tZW1vcnkuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgMjUgKysrKwogbW0vbW1faW5pdC5jICAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICstCiBtbS9wYWdlX2FsbG9jLmMgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogbW0vc3dhcC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsKIG1tL3Ztc2Nhbi5j ICAgICAgICAgICAgICAgICAgICAgICB8ICA4NSArKysrKysrKysrKysrCiAxNSBmaWxlcyBjaGFu Z2VkLCA0MTggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMv ZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmMKaW5kZXggY2Q1NGE1Mjk0NjBkLi43NjkxMzlhOGJl ODYgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZGV2LmMKKysrIGIvZnMvZnVzZS9kZXYuYwpAQCAtNzg1 LDcgKzc4NSw4IEBAIHN0YXRpYyBpbnQgZnVzZV9jaGVja19wYWdlKHN0cnVjdCBwYWdlICpwYWdl KQogCSAgICAgICAxIDw8IFBHX2FjdGl2ZSB8CiAJICAgICAgIDEgPDwgUEdfd29ya2luZ3NldCB8 CiAJICAgICAgIDEgPDwgUEdfcmVjbGFpbSB8Ci0JICAgICAgIDEgPDwgUEdfd2FpdGVycykpKSB7 CisJICAgICAgIDEgPDwgUEdfd2FpdGVycyB8CisJICAgICAgIExSVV9HRU5fTUFTSyB8IExSVV9S RUZTX01BU0spKSkgewogCQlkdW1wX3BhZ2UocGFnZSwgImZ1c2U6IHRyeWluZyB0byBzdGVhbCB3 ZWlyZCBwYWdlIik7CiAJCXJldHVybiAxOwogCX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv bW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCAyMTNjYzU2OWIxOTIuLjA1ZGQzMzI2NTc0 MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0u aApAQCAtMTAzMiw2ICsxMDMyLDggQEAgdm1fZmF1bHRfdCBmaW5pc2hfbWt3cml0ZV9mYXVsdChz dHJ1Y3Qgdm1fZmF1bHQgKnZtZik7CiAjZGVmaW5lIFpPTkVTX1BHT0ZGCQkoTk9ERVNfUEdPRkYg LSBaT05FU19XSURUSCkKICNkZWZpbmUgTEFTVF9DUFVQSURfUEdPRkYJKFpPTkVTX1BHT0ZGIC0g TEFTVF9DUFVQSURfV0lEVEgpCiAjZGVmaW5lIEtBU0FOX1RBR19QR09GRgkJKExBU1RfQ1BVUElE X1BHT0ZGIC0gS0FTQU5fVEFHX1dJRFRIKQorI2RlZmluZSBMUlVfR0VOX1BHT0ZGCQkoS0FTQU5f VEFHX1BHT0ZGIC0gTFJVX0dFTl9XSURUSCkKKyNkZWZpbmUgTFJVX1JFRlNfUEdPRkYJCShMUlVf R0VOX1BHT0ZGIC0gTFJVX1JFRlNfV0lEVEgpCiAKIC8qCiAgKiBEZWZpbmUgdGhlIGJpdCBzaGlm dHMgdG8gYWNjZXNzIGVhY2ggc2VjdGlvbi4gIEZvciBub24tZXhpc3RlbnQKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvbW1faW5saW5lLmggYi9pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oCmlu ZGV4IGI3MjU4MzlkZmU3MS4uNDZmNGZkZTAyOTlmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L21tX2lubGluZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW1faW5saW5lLmgKQEAgLTkyLDExICs5 MiwxOTYgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBlbnVtIGxydV9saXN0IGZvbGlvX2xydV9s aXN0KHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJcmV0dXJuIGxydTsKIH0KIAorI2lmZGVmIENPTkZJ R19MUlVfR0VOCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBscnVfZ2VuX2VuYWJsZWQodm9pZCkKK3sK KwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGxydV9nZW5faW5fZmF1bHQo dm9pZCkKK3sKKwlyZXR1cm4gY3VycmVudC0+aW5fbHJ1X2ZhdWx0OworfQorCitzdGF0aWMgaW5s aW5lIGludCBscnVfZ2VuX2Zyb21fc2VxKHVuc2lnbmVkIGxvbmcgc2VxKQoreworCXJldHVybiBz ZXEgJSBNQVhfTlJfR0VOUzsKK30KKworc3RhdGljIGlubGluZSBib29sIGxydV9nZW5faXNfYWN0 aXZlKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgaW50IGdlbikKK3sKKwl1bnNpZ25lZCBsb25nIG1h eF9zZXEgPSBscnV2ZWMtPmxydWdlbi5tYXhfc2VxOworCisJVk1fQlVHX09OKGdlbiA+PSBNQVhf TlJfR0VOUyk7CisKKwkvKiBzZWUgdGhlIGNvbW1lbnQgb24gTUlOX05SX0dFTlMgKi8KKwlyZXR1 cm4gZ2VuID09IGxydV9nZW5fZnJvbV9zZXEobWF4X3NlcSkgfHwgZ2VuID09IGxydV9nZW5fZnJv bV9zZXEobWF4X3NlcSAtIDEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl91cGRh dGVfc2l6ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIGVudW0gbHJ1X2xpc3QgbHJ1LAorCQkJCSAg ICAgICBpbnQgem9uZSwgbG9uZyBkZWx0YSkKK3sKKwlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0 ID0gbHJ1dmVjX3BnZGF0KGxydXZlYyk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZscnV2ZWMt PmxydV9sb2NrKTsKKwlXQVJOX09OX09OQ0UoZGVsdGEgIT0gKGludClkZWx0YSk7CisKKwlfX21v ZF9scnV2ZWNfc3RhdGUobHJ1dmVjLCBOUl9MUlVfQkFTRSArIGxydSwgZGVsdGEpOworCV9fbW9k X3pvbmVfcGFnZV9zdGF0ZSgmcGdkYXQtPm5vZGVfem9uZXNbem9uZV0sIE5SX1pPTkVfTFJVX0JB U0UgKyBscnUsIGRlbHRhKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGxydV9nZW5fYmFsYW5j ZV9zaXplKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbywKKwkJCQkJ aW50IG9sZF9nZW4sIGludCBuZXdfZ2VuKQoreworCWludCB0eXBlID0gZm9saW9faXNfZmlsZV9s cnUoZm9saW8pOworCWludCB6b25lID0gZm9saW9fem9uZW51bShmb2xpbyk7CisJaW50IGRlbHRh ID0gZm9saW9fbnJfcGFnZXMoZm9saW8pOworCWVudW0gbHJ1X2xpc3QgbHJ1ID0gdHlwZSAqIExS VV9JTkFDVElWRV9GSUxFOworCXN0cnVjdCBscnVfZ2VuX3N0cnVjdCAqbHJ1Z2VuID0gJmxydXZl Yy0+bHJ1Z2VuOworCisJVk1fQlVHX09OKG9sZF9nZW4gIT0gLTEgJiYgb2xkX2dlbiA+PSBNQVhf TlJfR0VOUyk7CisJVk1fQlVHX09OKG5ld19nZW4gIT0gLTEgJiYgbmV3X2dlbiA+PSBNQVhfTlJf R0VOUyk7CisJVk1fQlVHX09OKG9sZF9nZW4gPT0gLTEgJiYgbmV3X2dlbiA9PSAtMSk7CisKKwlp ZiAob2xkX2dlbiA+PSAwKQorCQlXUklURV9PTkNFKGxydWdlbi0+bnJfcGFnZXNbb2xkX2dlbl1b dHlwZV1bem9uZV0sCisJCQkgICBscnVnZW4tPm5yX3BhZ2VzW29sZF9nZW5dW3R5cGVdW3pvbmVd IC0gZGVsdGEpOworCWlmIChuZXdfZ2VuID49IDApCisJCVdSSVRFX09OQ0UobHJ1Z2VuLT5ucl9w YWdlc1tuZXdfZ2VuXVt0eXBlXVt6b25lXSwKKwkJCSAgIGxydWdlbi0+bnJfcGFnZXNbbmV3X2dl bl1bdHlwZV1bem9uZV0gKyBkZWx0YSk7CisKKwlpZiAob2xkX2dlbiA8IDApIHsKKwkJaWYgKGxy dV9nZW5faXNfYWN0aXZlKGxydXZlYywgbmV3X2dlbikpCisJCQlscnUgKz0gTFJVX0FDVElWRTsK KwkJbHJ1X2dlbl91cGRhdGVfc2l6ZShscnV2ZWMsIGxydSwgem9uZSwgZGVsdGEpOworCQlyZXR1 cm47CisJfQorCisJaWYgKG5ld19nZW4gPCAwKSB7CisJCWlmIChscnVfZ2VuX2lzX2FjdGl2ZShs cnV2ZWMsIG9sZF9nZW4pKQorCQkJbHJ1ICs9IExSVV9BQ1RJVkU7CisJCWxydV9nZW5fdXBkYXRl X3NpemUobHJ1dmVjLCBscnUsIHpvbmUsIC1kZWx0YSk7CisJCXJldHVybjsKKwl9CisKKwlpZiAo IWxydV9nZW5faXNfYWN0aXZlKGxydXZlYywgb2xkX2dlbikgJiYgbHJ1X2dlbl9pc19hY3RpdmUo bHJ1dmVjLCBuZXdfZ2VuKSkgeworCQlscnVfZ2VuX3VwZGF0ZV9zaXplKGxydXZlYywgbHJ1LCB6 b25lLCAtZGVsdGEpOworCQlscnVfZ2VuX3VwZGF0ZV9zaXplKGxydXZlYywgbHJ1ICsgTFJVX0FD VElWRSwgem9uZSwgZGVsdGEpOworCX0KKworCS8qIFByb21vdGlvbiBpcyBsZWdpdCB3aGlsZSBh IHBhZ2UgaXMgb24gYW4gTFJVIGxpc3QsIGJ1dCBkZW1vdGlvbiBpc24ndC4gKi8KKwlWTV9CVUdf T04obHJ1X2dlbl9pc19hY3RpdmUobHJ1dmVjLCBvbGRfZ2VuKSAmJiAhbHJ1X2dlbl9pc19hY3Rp dmUobHJ1dmVjLCBuZXdfZ2VuKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBscnVfZ2VuX2Fk ZF9mb2xpbyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wg cmVjbGFpbWluZykKK3sKKwlpbnQgZ2VuOworCXVuc2lnbmVkIGxvbmcgb2xkX2ZsYWdzLCBuZXdf ZmxhZ3M7CisJaW50IHR5cGUgPSBmb2xpb19pc19maWxlX2xydShmb2xpbyk7CisJaW50IHpvbmUg PSBmb2xpb196b25lbnVtKGZvbGlvKTsKKwlzdHJ1Y3QgbHJ1X2dlbl9zdHJ1Y3QgKmxydWdlbiA9 ICZscnV2ZWMtPmxydWdlbjsKKworCWlmIChmb2xpb190ZXN0X3VuZXZpY3RhYmxlKGZvbGlvKSB8 fCAhbHJ1Z2VuLT5lbmFibGVkKQorCQlyZXR1cm4gZmFsc2U7CisJLyoKKwkgKiBUaGVyZSBhcmUg dGhyZWUgY29tbW9uIGNhc2VzIGZvciB0aGlzIHBhZ2U6CisJICogMSkgSWYgaXQgc2hvdWxkbid0 IGJlIGV2aWN0ZWQsIGUuZy4sIGl0IHdhcyBqdXN0IGZhdWx0ZWQgaW4sIGFkZCBpdAorCSAqICAg IHRvIHRoZSB5b3VuZ2VzdCBnZW5lcmF0aW9uLgorCSAqIDIpIElmIGl0IGNhbid0IGJlIGV2aWN0 ZWQgaW1tZWRpYXRlbHksIGkuZS4sIGl0J3MgYW4gYW5vbiBwYWdlIGFuZAorCSAqICAgIG5vdCBp biBzd2FwY2FjaGUsIG9yIGEgZGlydHkgcGFnZSBwZW5kaW5nIHdyaXRlYmFjaywgYWRkIGl0IHRv IHRoZQorCSAqICAgIHNlY29uZCBvbGRlc3QgZ2VuZXJhdGlvbi4KKwkgKiAzKSBJZiBpdCBtYXkg YmUgZXZpY3RlZCBpbW1lZGlhdGVseSwgZS5nLiwgaXQncyBhIGNsZWFuIHBhZ2UsIGFkZCBpdAor CSAqICAgIHRvIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbi4KKwkgKi8KKwlpZiAoZm9saW9fdGVzdF9h Y3RpdmUoZm9saW8pKQorCQlnZW4gPSBscnVfZ2VuX2Zyb21fc2VxKGxydWdlbi0+bWF4X3NlcSk7 CisJZWxzZSBpZiAoKCF0eXBlICYmICFmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpIHx8CisJ CSAoZm9saW9fdGVzdF9yZWNsYWltKGZvbGlvKSAmJgorCQkgIChmb2xpb190ZXN0X2RpcnR5KGZv bGlvKSB8fCBmb2xpb190ZXN0X3dyaXRlYmFjayhmb2xpbykpKSkKKwkJZ2VuID0gbHJ1X2dlbl9m cm9tX3NlcShscnVnZW4tPm1pbl9zZXFbdHlwZV0gKyAxKTsKKwllbHNlCisJCWdlbiA9IGxydV9n ZW5fZnJvbV9zZXEobHJ1Z2VuLT5taW5fc2VxW3R5cGVdKTsKKworCWRvIHsKKwkJbmV3X2ZsYWdz ID0gb2xkX2ZsYWdzID0gUkVBRF9PTkNFKGZvbGlvLT5mbGFncyk7CisJCVZNX0JVR19PTl9GT0xJ TyhuZXdfZmxhZ3MgJiBMUlVfR0VOX01BU0ssIGZvbGlvKTsKKworCQluZXdfZmxhZ3MgJj0gfihM UlVfR0VOX01BU0sgfCBCSVQoUEdfYWN0aXZlKSk7CisJCW5ld19mbGFncyB8PSAoZ2VuICsgMVVM KSA8PCBMUlVfR0VOX1BHT0ZGOworCX0gd2hpbGUgKGNtcHhjaGcoJmZvbGlvLT5mbGFncywgb2xk X2ZsYWdzLCBuZXdfZmxhZ3MpICE9IG9sZF9mbGFncyk7CisKKwlscnVfZ2VuX2JhbGFuY2Vfc2l6 ZShscnV2ZWMsIGZvbGlvLCAtMSwgZ2VuKTsKKwkvKiBmb3IgZm9saW9fcm90YXRlX3JlY2xhaW1h YmxlKCkgKi8KKwlpZiAocmVjbGFpbWluZykKKwkJbGlzdF9hZGRfdGFpbCgmZm9saW8tPmxydSwg JmxydWdlbi0+bGlzdHNbZ2VuXVt0eXBlXVt6b25lXSk7CisJZWxzZQorCQlsaXN0X2FkZCgmZm9s aW8tPmxydSwgJmxydWdlbi0+bGlzdHNbZ2VuXVt0eXBlXVt6b25lXSk7CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGxydV9nZW5fZGVsX2ZvbGlvKHN0cnVjdCBscnV2 ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCByZWNsYWltaW5nKQoreworCWlu dCBnZW47CisJdW5zaWduZWQgbG9uZyBvbGRfZmxhZ3MsIG5ld19mbGFnczsKKworCWRvIHsKKwkJ bmV3X2ZsYWdzID0gb2xkX2ZsYWdzID0gUkVBRF9PTkNFKGZvbGlvLT5mbGFncyk7CisJCWlmICgh KG5ld19mbGFncyAmIExSVV9HRU5fTUFTSykpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJVk1fQlVH X09OX0ZPTElPKGZvbGlvX3Rlc3RfYWN0aXZlKGZvbGlvKSwgZm9saW8pOworCQlWTV9CVUdfT05f Rk9MSU8oZm9saW9fdGVzdF91bmV2aWN0YWJsZShmb2xpbyksIGZvbGlvKTsKKworCQlnZW4gPSAo KG5ld19mbGFncyAmIExSVV9HRU5fTUFTSykgPj4gTFJVX0dFTl9QR09GRikgLSAxOworCisJCW5l d19mbGFncyAmPSB+TFJVX0dFTl9NQVNLOworCQkvKiBmb3Igc2hyaW5rX3BhZ2VfbGlzdCgpICov CisJCWlmIChyZWNsYWltaW5nKQorCQkJbmV3X2ZsYWdzICY9IH4oQklUKFBHX3JlZmVyZW5jZWQp IHwgQklUKFBHX3JlY2xhaW0pKTsKKwkJZWxzZSBpZiAobHJ1X2dlbl9pc19hY3RpdmUobHJ1dmVj LCBnZW4pKQorCQkJbmV3X2ZsYWdzIHw9IEJJVChQR19hY3RpdmUpOworCX0gd2hpbGUgKGNtcHhj aGcoJmZvbGlvLT5mbGFncywgb2xkX2ZsYWdzLCBuZXdfZmxhZ3MpICE9IG9sZF9mbGFncyk7CisK KwlscnVfZ2VuX2JhbGFuY2Vfc2l6ZShscnV2ZWMsIGZvbGlvLCBnZW4sIC0xKTsKKwlsaXN0X2Rl bCgmZm9saW8tPmxydSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworI2Vsc2UKKworc3RhdGljIGlu bGluZSBib29sIGxydV9nZW5fZW5hYmxlZCh2b2lkKQoreworCXJldHVybiBmYWxzZTsKK30KKwor c3RhdGljIGlubGluZSBib29sIGxydV9nZW5faW5fZmF1bHQodm9pZCkKK3sKKwlyZXR1cm4gZmFs c2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBscnVfZ2VuX2FkZF9mb2xpbyhzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcmVjbGFpbWluZykKK3sKKwly ZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBscnVfZ2VuX2RlbF9mb2xpbyhz dHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcmVjbGFpbWlu ZykKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfTFJVX0dFTiAqLwor CiBzdGF0aWMgX19hbHdheXNfaW5saW5lCiB2b2lkIGxydXZlY19hZGRfZm9saW8oc3RydWN0IGxy dXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewogCWVudW0gbHJ1X2xpc3QgbHJ1 ID0gZm9saW9fbHJ1X2xpc3QoZm9saW8pOwogCisJaWYgKGxydV9nZW5fYWRkX2ZvbGlvKGxydXZl YywgZm9saW8sIGZhbHNlKSkKKwkJcmV0dXJuOworCiAJdXBkYXRlX2xydV9zaXplKGxydXZlYywg bHJ1LCBmb2xpb196b25lbnVtKGZvbGlvKSwKIAkJCWZvbGlvX25yX3BhZ2VzKGZvbGlvKSk7CiAJ bGlzdF9hZGQoJmZvbGlvLT5scnUsICZscnV2ZWMtPmxpc3RzW2xydV0pOwpAQCAtMTEzLDYgKzI5 OCw5IEBAIHZvaWQgbHJ1dmVjX2FkZF9mb2xpb190YWlsKHN0cnVjdCBscnV2ZWMgKmxydXZlYywg c3RydWN0IGZvbGlvICpmb2xpbykKIHsKIAllbnVtIGxydV9saXN0IGxydSA9IGZvbGlvX2xydV9s aXN0KGZvbGlvKTsKIAorCWlmIChscnVfZ2VuX2FkZF9mb2xpbyhscnV2ZWMsIGZvbGlvLCB0cnVl KSkKKwkJcmV0dXJuOworCiAJdXBkYXRlX2xydV9zaXplKGxydXZlYywgbHJ1LCBmb2xpb196b25l bnVtKGZvbGlvKSwKIAkJCWZvbGlvX25yX3BhZ2VzKGZvbGlvKSk7CiAJbGlzdF9hZGRfdGFpbCgm Zm9saW8tPmxydSwgJmxydXZlYy0+bGlzdHNbbHJ1XSk7CkBAIC0xMjcsNiArMzE1LDkgQEAgc3Rh dGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGFkZF9wYWdlX3RvX2xydV9saXN0X3RhaWwoc3RydWN0 IHBhZ2UgKnBhZ2UsCiBzdGF0aWMgX19hbHdheXNfaW5saW5lCiB2b2lkIGxydXZlY19kZWxfZm9s aW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKQogeworCWlmIChs cnVfZ2VuX2RlbF9mb2xpbyhscnV2ZWMsIGZvbGlvLCBmYWxzZSkpCisJCXJldHVybjsKKwogCWxp c3RfZGVsKCZmb2xpby0+bHJ1KTsKIAl1cGRhdGVfbHJ1X3NpemUobHJ1dmVjLCBmb2xpb19scnVf bGlzdChmb2xpbyksIGZvbGlvX3pvbmVudW0oZm9saW8pLAogCQkJLWZvbGlvX25yX3BhZ2VzKGZv bGlvKSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51 eC9tbXpvbmUuaAppbmRleCBhZWQ0NGU5YjVkODkuLjBmNWU4YTk5NTc4MSAxMDA2NDQKLS0tIGEv aW5jbHVkZS9saW51eC9tbXpvbmUuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0z MDMsNiArMzAzLDc4IEBAIGVudW0gbHJ1dmVjX2ZsYWdzIHsKIAkJCQkJICovCiB9OwogCitzdHJ1 Y3QgbHJ1dmVjOworCisjZGVmaW5lIExSVV9HRU5fTUFTSwkJKChCSVQoTFJVX0dFTl9XSURUSCkg LSAxKSA8PCBMUlVfR0VOX1BHT0ZGKQorI2RlZmluZSBMUlVfUkVGU19NQVNLCQkoKEJJVChMUlVf UkVGU19XSURUSCkgLSAxKSA8PCBMUlVfUkVGU19QR09GRikKKworI2lmZGVmIENPTkZJR19MUlVf R0VOCisKKyNkZWZpbmUgTUlOX0xSVV9CQVRDSAkJQklUU19QRVJfTE9ORworI2RlZmluZSBNQVhf TFJVX0JBVENICQkoTUlOX0xSVV9CQVRDSCAqIDEyOCkKKworLyoKKyAqIEV2aWN0YWJsZSBwYWdl cyBhcmUgZGl2aWRlZCBpbnRvIG11bHRpcGxlIGdlbmVyYXRpb25zLiBUaGUgeW91bmdlc3QgYW5k IHRoZQorICogb2xkZXN0IGdlbmVyYXRpb24gbnVtYmVycywgbWF4X3NlcSBhbmQgbWluX3NlcSwg YXJlIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZy4KKyAqIFRoZXkgZm9ybSBhIHNsaWRpbmcgd2lu ZG93IG9mIGEgdmFyaWFibGUgc2l6ZSBbTUlOX05SX0dFTlMsIE1BWF9OUl9HRU5TXS4gQW4KKyAq IG9mZnNldCB3aXRoaW4gTUFYX05SX0dFTlMsIGdlbiwgaW5kZXhlcyB0aGUgTFJVIGxpc3Qgb2Yg dGhlIGNvcnJlc3BvbmRpbmcKKyAqIGdlbmVyYXRpb24uIFRoZSBnZW4gY291bnRlciBpbiBmb2xp by0+ZmxhZ3Mgc3RvcmVzIGdlbisxIHdoaWxlIGEgcGFnZSBpcyBvbgorICogb25lIG9mIGxydWdl bi0+bGlzdHNbXS4gT3RoZXJ3aXNlIGl0IHN0b3JlcyAwLgorICoKKyAqIEEgcGFnZSBpcyBhZGRl ZCB0byB0aGUgeW91bmdlc3QgZ2VuZXJhdGlvbiBvbiBmYXVsdGluZy4gVGhlIGFnaW5nIG5lZWRz IHRvCisgKiBjaGVjayB0aGUgYWNjZXNzZWQgYml0IGF0IGxlYXN0IHR3aWNlIGJlZm9yZSBoYW5k aW5nIHRoaXMgcGFnZSBvdmVyIHRvIHRoZQorICogZXZpY3Rpb24uIFRoZSBmaXJzdCBjaGVjayB0 YWtlcyBjYXJlIG9mIHRoZSBhY2Nlc3NlZCBiaXQgc2V0IG9uIHRoZSBpbml0aWFsCisgKiBmYXVs dDsgdGhlIHNlY29uZCBjaGVjayBtYWtlcyBzdXJlIHRoaXMgcGFnZSBoYXNuJ3QgYmVlbiB1c2Vk IHNpbmNlIHRoZW4uCisgKiBUaGlzIHByb2Nlc3MsIEFLQSBzZWNvbmQgY2hhbmNlLCByZXF1aXJl cyBhIG1pbmltdW0gb2YgdHdvIGdlbmVyYXRpb25zLAorICogaGVuY2UgTUlOX05SX0dFTlMuIEFu ZCB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGFjdGl2ZS9pbmFjdGl2ZSBMUlUsIHRoZXNlCisg KiB0d28gZ2VuZXJhdGlvbnMgYXJlIG1hcHBlZCB0byB0aGUgYWN0aXZlOyB0aGUgcmVzdCBvZiBn ZW5lcmF0aW9ucywgaWYgdGhleQorICogZXhpc3QsIGFyZSBtYXBwZWQgdG8gdGhlIGluYWN0aXZl LiBQR19hY3RpdmUgaXMgYWx3YXlzIGNsZWFyZWQgd2hpbGUgYSBwYWdlCisgKiBpcyBvbiBvbmUg b2YgbHJ1Z2VuLT5saXN0c1tdIHNvIHRoYXQgZGVtb3Rpb24sIHdoaWNoIGhhcHBlbnMgY29uc2Vx dWVudGx5CisgKiB3aGVuIHRoZSBhZ2luZyBwcm9kdWNlcyBhIG5ldyBnZW5lcmF0aW9uLCBuZWVk cyBub3QgdG8gd29ycnkgYWJvdXQgaXQuCisgKi8KKyNkZWZpbmUgTUlOX05SX0dFTlMJCTJVCisj ZGVmaW5lIE1BWF9OUl9HRU5TCQkoKHVuc2lnbmVkIGludClDT05GSUdfTlJfTFJVX0dFTlMpCisK K3N0cnVjdCBscnVfZ2VuX3N0cnVjdCB7CisJLyogdGhlIGFnaW5nIGluY3JlbWVudHMgdGhlIHlv dW5nZXN0IGdlbmVyYXRpb24gbnVtYmVyICovCisJdW5zaWduZWQgbG9uZyBtYXhfc2VxOworCS8q IHRoZSBldmljdGlvbiBpbmNyZW1lbnRzIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbiBudW1iZXJzICov CisJdW5zaWduZWQgbG9uZyBtaW5fc2VxW0FOT05fQU5EX0ZJTEVdOworCS8qIHRoZSBiaXJ0aCB0 aW1lIG9mIGVhY2ggZ2VuZXJhdGlvbiBpbiBqaWZmaWVzICovCisJdW5zaWduZWQgbG9uZyB0aW1l c3RhbXBzW01BWF9OUl9HRU5TXTsKKwkvKiB0aGUgbXVsdGlnZW5lcmF0aW9uYWwgTFJVIGxpc3Rz ICovCisJc3RydWN0IGxpc3RfaGVhZCBsaXN0c1tNQVhfTlJfR0VOU11bQU5PTl9BTkRfRklMRV1b TUFYX05SX1pPTkVTXTsKKwkvKiB0aGUgc2l6ZXMgb2YgdGhlIGFib3ZlIGxpc3RzICovCisJdW5z aWduZWQgbG9uZyBucl9wYWdlc1tNQVhfTlJfR0VOU11bQU5PTl9BTkRfRklMRV1bTUFYX05SX1pP TkVTXTsKKwkvKiB3aGV0aGVyIHRoZSBtdWx0aWdlbmVyYXRpb25hbCBMUlUgaXMgZW5hYmxlZCAq LworCWJvb2wgZW5hYmxlZDsKK307CisKK3ZvaWQgbHJ1X2dlbl9pbml0X3N0YXRlKHN0cnVjdCBt ZW1fY2dyb3VwICptZW1jZywgc3RydWN0IGxydXZlYyAqbHJ1dmVjKTsKKworI2lmZGVmIENPTkZJ R19NRU1DRwordm9pZCBscnVfZ2VuX2luaXRfbWVtY2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNn KTsKK3ZvaWQgbHJ1X2dlbl9mcmVlX21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyk7Cisj ZW5kaWYKKworI2Vsc2UgLyogIUNPTkZJR19MUlVfR0VOICovCisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBscnVfZ2VuX2luaXRfc3RhdGUoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMpCit7Cit9CisKKyNpZmRlZiBDT05GSUdfTUVNQ0cKK3N0YXRpYyBpbmxpbmUg dm9pZCBscnVfZ2VuX2luaXRfbWVtY2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQoreworfQor CitzdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9mcmVlX21lbWNnKHN0cnVjdCBtZW1fY2dyb3Vw ICptZW1jZykKK3sKK30KKyNlbmRpZgorCisjZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi8KKwog c3RydWN0IGxydXZlYyB7CiAJc3RydWN0IGxpc3RfaGVhZAkJbGlzdHNbTlJfTFJVX0xJU1RTXTsK IAkvKiBwZXIgbHJ1dmVjIGxydV9sb2NrIGZvciBtZW1jZyAqLwpAQCAtMzIwLDYgKzM5MiwxMCBA QCBzdHJ1Y3QgbHJ1dmVjIHsKIAl1bnNpZ25lZCBsb25nCQkJcmVmYXVsdHNbQU5PTl9BTkRfRklM RV07CiAJLyogVmFyaW91cyBscnV2ZWMgc3RhdGUgZmxhZ3MgKGVudW0gbHJ1dmVjX2ZsYWdzKSAq LwogCXVuc2lnbmVkIGxvbmcJCQlmbGFnczsKKyNpZmRlZiBDT05GSUdfTFJVX0dFTgorCS8qIGV2 aWN0YWJsZSBwYWdlcyBkaXZpZGVkIGludG8gZ2VuZXJhdGlvbnMgKi8KKwlzdHJ1Y3QgbHJ1X2dl bl9zdHJ1Y3QJCWxydWdlbjsKKyNlbmRpZgogI2lmZGVmIENPTkZJR19NRU1DRwogCXN0cnVjdCBw Z2xpc3RfZGF0YSAqcGdkYXQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGFn ZS1mbGFncy1sYXlvdXQuaCBiL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaAppbmRl eCBlZjFlM2U3MzZlMTQuLjhjZGJiZGNjYjVhZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9w YWdlLWZsYWdzLWxheW91dC5oCisrKyBiL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQu aApAQCAtMjYsNiArMjYsMTQgQEAKIAogI2RlZmluZSBaT05FU19XSURUSAkJWk9ORVNfU0hJRlQK IAorI2lmZGVmIENPTkZJR19MUlVfR0VOCisvKiBMUlVfR0VOX1dJRFRIIGlzIGdlbmVyYXRlZCBm cm9tIG9yZGVyX2Jhc2VfMihDT05GSUdfTlJfTFJVX0dFTlMgKyAxKS4gKi8KKyNkZWZpbmUgTFJV X1JFRlNfV0lEVEgJCShDT05GSUdfVElFUlNfUEVSX0dFTiAtIDIpCisjZWxzZQorI2RlZmluZSBM UlVfR0VOX1dJRFRICQkwCisjZGVmaW5lIExSVV9SRUZTX1dJRFRICQkwCisjZW5kaWYgLyogQ09O RklHX0xSVV9HRU4gKi8KKwogI2lmZGVmIENPTkZJR19TUEFSU0VNRU0KICNpbmNsdWRlIDxhc20v c3BhcnNlbWVtLmg+CiAjZGVmaW5lIFNFQ1RJT05TX1NISUZUCShNQVhfUEhZU01FTV9CSVRTIC0g U0VDVElPTl9TSVpFX0JJVFMpCkBAIC01NSw3ICs2Myw4IEBACiAjZGVmaW5lIFNFQ1RJT05TX1dJ RFRICQkwCiAjZW5kaWYKIAotI2lmIFpPTkVTX1dJRFRIICsgU0VDVElPTlNfV0lEVEggKyBOT0RF U19TSElGVCA8PSBCSVRTX1BFUl9MT05HIC0gTlJfUEFHRUZMQUdTCisjaWYgWk9ORVNfV0lEVEgg KyBMUlVfR0VOX1dJRFRIICsgTFJVX1JFRlNfV0lEVEggKyBTRUNUSU9OU19XSURUSCArIE5PREVT X1NISUZUIFwKKwk8PSBCSVRTX1BFUl9MT05HIC0gTlJfUEFHRUZMQUdTCiAjZGVmaW5lIE5PREVT X1dJRFRICQlOT0RFU19TSElGVAogI2VsaWYgZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1N QVApCiAjZXJyb3IgIlZtZW1tYXA6IE5vIHNwYWNlIGZvciBub2RlcyBmaWVsZCBpbiBwYWdlIGZs YWdzIgpAQCAtODksOCArOTgsOCBAQAogI2RlZmluZSBMQVNUX0NQVVBJRF9TSElGVCAwCiAjZW5k aWYKIAotI2lmIFpPTkVTX1dJRFRIICsgU0VDVElPTlNfV0lEVEggKyBOT0RFU19XSURUSCArIEtB U0FOX1RBR19XSURUSCArIExBU1RfQ1BVUElEX1NISUZUIFwKLQk8PSBCSVRTX1BFUl9MT05HIC0g TlJfUEFHRUZMQUdTCisjaWYgWk9ORVNfV0lEVEggKyBMUlVfR0VOX1dJRFRIICsgTFJVX1JFRlNf V0lEVEggKyBTRUNUSU9OU19XSURUSCArIE5PREVTX1dJRFRIICsgXAorCUtBU0FOX1RBR19XSURU SCArIExBU1RfQ1BVUElEX1NISUZUIDw9IEJJVFNfUEVSX0xPTkcgLSBOUl9QQUdFRkxBR1MKICNk ZWZpbmUgTEFTVF9DUFVQSURfV0lEVEggTEFTVF9DUFVQSURfU0hJRlQKICNlbHNlCiAjZGVmaW5l IExBU1RfQ1BVUElEX1dJRFRIIDAKQEAgLTEwMCw4ICsxMDksOCBAQAogI2RlZmluZSBMQVNUX0NQ VVBJRF9OT1RfSU5fUEFHRV9GTEFHUwogI2VuZGlmCiAKLSNpZiBaT05FU19XSURUSCArIFNFQ1RJ T05TX1dJRFRIICsgTk9ERVNfV0lEVEggKyBLQVNBTl9UQUdfV0lEVEggKyBMQVNUX0NQVVBJRF9X SURUSCBcCi0JPiBCSVRTX1BFUl9MT05HIC0gTlJfUEFHRUZMQUdTCisjaWYgWk9ORVNfV0lEVEgg KyBMUlVfR0VOX1dJRFRIICsgTFJVX1JFRlNfV0lEVEggKyBTRUNUSU9OU19XSURUSCArIE5PREVT X1dJRFRIICsgXAorCUtBU0FOX1RBR19XSURUSCArIExBU1RfQ1BVUElEX1dJRFRIID4gQklUU19Q RVJfTE9ORyAtIE5SX1BBR0VGTEFHUwogI2Vycm9yICJOb3QgZW5vdWdoIGJpdHMgaW4gcGFnZSBm bGFncyIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCBi L2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oCmluZGV4IDFjM2I2ZTVjOGJmZC4uYTk1NTE4Y2E5 OGViIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaAorKysgYi9pbmNsdWRl L2xpbnV4L3BhZ2UtZmxhZ3MuaApAQCAtOTM1LDcgKzkzNSw3IEBAIF9fUEFHRUZMQUcoSXNvbGF0 ZWQsIGlzb2xhdGVkLCBQRl9BTlkpOwogCSAxVUwgPDwgUEdfcHJpdmF0ZQl8IDFVTCA8PCBQR19w cml2YXRlXzIJfAlcCiAJIDFVTCA8PCBQR193cml0ZWJhY2sJfCAxVUwgPDwgUEdfcmVzZXJ2ZWQJ fAlcCiAJIDFVTCA8PCBQR19zbGFiCQl8IDFVTCA8PCBQR19hY3RpdmUgCXwJXAotCSAxVUwgPDwg UEdfdW5ldmljdGFibGUJfCBfX1BHX01MT0NLRUQpCisJIDFVTCA8PCBQR191bmV2aWN0YWJsZQl8 IF9fUEdfTUxPQ0tFRCB8IExSVV9HRU5fTUFTSykKIAogLyoKICAqIEZsYWdzIGNoZWNrZWQgd2hl biBhIHBhZ2UgaXMgcHJlcHBlZCBmb3IgcmV0dXJuIGJ5IHRoZSBwYWdlIGFsbG9jYXRvci4KQEAg LTk0Niw3ICs5NDYsNyBAQCBfX1BBR0VGTEFHKElzb2xhdGVkLCBpc29sYXRlZCwgUEZfQU5ZKTsK ICAqIGFsbG9jLWZyZWUgY3ljbGUgdG8gcHJldmVudCBmcm9tIHJldXNpbmcgdGhlIHBhZ2UuCiAg Ki8KICNkZWZpbmUgUEFHRV9GTEFHU19DSEVDS19BVF9QUkVQCVwKLQkoUEFHRUZMQUdTX01BU0sg JiB+X19QR19IV1BPSVNPTikKKwkoKFBBR0VGTEFHU19NQVNLICYgfl9fUEdfSFdQT0lTT04pIHwg TFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykKIAogI2RlZmluZSBQQUdFX0ZMQUdTX1BSSVZB VEUJCQkJXAogCSgxVUwgPDwgUEdfcHJpdmF0ZSB8IDFVTCA8PCBQR19wcml2YXRlXzIpCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKaW5k ZXggNzViYThhYTYwMjQ4Li5lN2ZlNzg0YjExYWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgv c2NoZWQuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKQEAgLTkxNCw2ICs5MTQsMTAgQEAg c3RydWN0IHRhc2tfc3RydWN0IHsKICNpZmRlZiBDT05GSUdfTUVNQ0cKIAl1bnNpZ25lZAkJCWlu X3VzZXJfZmF1bHQ6MTsKICNlbmRpZgorI2lmZGVmIENPTkZJR19MUlVfR0VOCisJLyogd2hldGhl ciB0aGUgTFJVIGFsZ29yaXRobSBtYXkgYXBwbHkgdG8gdGhpcyBhY2Nlc3MgKi8KKwl1bnNpZ25l ZAkJCWluX2xydV9mYXVsdDoxOworI2VuZGlmCiAjaWZkZWYgQ09ORklHX0NPTVBBVF9CUksKIAl1 bnNpZ25lZAkJCWJya19yYW5kb21pemVkOjE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2tlcm5lbC9i b3VuZHMuYyBiL2tlcm5lbC9ib3VuZHMuYwppbmRleCA5Nzk1ZDc1YjA5YjIuLmFiYTEzYWE3MzM2 YyAxMDA2NDQKLS0tIGEva2VybmVsL2JvdW5kcy5jCisrKyBiL2tlcm5lbC9ib3VuZHMuYwpAQCAt MjIsNiArMjIsOSBAQCBpbnQgbWFpbih2b2lkKQogCURFRklORShOUl9DUFVTX0JJVFMsIGlsb2cy KENPTkZJR19OUl9DUFVTKSk7CiAjZW5kaWYKIAlERUZJTkUoU1BJTkxPQ0tfU0laRSwgc2l6ZW9m KHNwaW5sb2NrX3QpKTsKKyNpZmRlZiBDT05GSUdfTFJVX0dFTgorCURFRklORShMUlVfR0VOX1dJ RFRILCBvcmRlcl9iYXNlXzIoQ09ORklHX05SX0xSVV9HRU5TICsgMSkpOworI2VuZGlmCiAJLyog RW5kIG9mIGNvbnN0YW50cyAqLwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9tbS9odWdlX21l bW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCA0MDZhM2MyOGMwMjYuLjNkZjM4OWZkMzA3 ZiAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYworKysgYi9tbS9odWdlX21lbW9yeS5jCkBA IC0yMzY0LDcgKzIzNjQsOCBAQCBzdGF0aWMgdm9pZCBfX3NwbGl0X2h1Z2VfcGFnZV90YWlsKHN0 cnVjdCBwYWdlICpoZWFkLCBpbnQgdGFpbCwKICNpZmRlZiBDT05GSUdfNjRCSVQKIAkJCSAoMUwg PDwgUEdfYXJjaF8yKSB8CiAjZW5kaWYKLQkJCSAoMUwgPDwgUEdfZGlydHkpKSk7CisJCQkgKDFM IDw8IFBHX2RpcnR5KSB8CisJCQkgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpOwogCiAJ LyogLT5tYXBwaW5nIGluIGZpcnN0IHRhaWwgcGFnZSBpcyBjb21wb3VuZF9tYXBjb3VudCAqLwog CVZNX0JVR19PTl9QQUdFKHRhaWwgPiAyICYmIHBhZ2VfdGFpbC0+bWFwcGluZyAhPSBUQUlMX01B UFBJTkcsCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5k ZXggMDlkMzQyYzdjYmQwLi5jYWJiNTA4NTUzMWIgMTAwNjQ0Ci0tLSBhL21tL21lbWNvbnRyb2wu YworKysgYi9tbS9tZW1jb250cm9sLmMKQEAgLTUxMjEsNiArNTEyMSw3IEBAIHN0YXRpYyB2b2lk IF9fbWVtX2Nncm91cF9mcmVlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKIAogc3RhdGljIHZv aWQgbWVtX2Nncm91cF9mcmVlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKIHsKKwlscnVfZ2Vu X2ZyZWVfbWVtY2cobWVtY2cpOwogCW1lbWNnX3diX2RvbWFpbl9leGl0KG1lbWNnKTsKIAlfX21l bV9jZ3JvdXBfZnJlZShtZW1jZyk7CiB9CkBAIC01MTgwLDYgKzUxODEsNyBAQCBzdGF0aWMgc3Ry dWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfYWxsb2Modm9pZCkKIAltZW1jZy0+ZGVmZXJyZWRf c3BsaXRfcXVldWUuc3BsaXRfcXVldWVfbGVuID0gMDsKICNlbmRpZgogCWlkcl9yZXBsYWNlKCZt ZW1fY2dyb3VwX2lkciwgbWVtY2csIG1lbWNnLT5pZC5pZCk7CisJbHJ1X2dlbl9pbml0X21lbWNn KG1lbWNnKTsKIAlyZXR1cm4gbWVtY2c7CiBmYWlsOgogCW1lbV9jZ3JvdXBfaWRfcmVtb3ZlKG1l bWNnKTsKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXggYTczNzkx OTZhNDdlLi5kMjdlNWYxYTI1MzMgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeS5jCisrKyBiL21tL21l bW9yeS5jCkBAIC00NzU0LDYgKzQ3NTQsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkIG1tX2FjY291 bnRfZmF1bHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAJCXBlcmZfc3dfZXZlbnQoUEVSRl9DT1VO VF9TV19QQUdFX0ZBVUxUU19NSU4sIDEsIHJlZ3MsIGFkZHJlc3MpOwogfQogCisjaWZkZWYgQ09O RklHX0xSVV9HRU4KK3N0YXRpYyB2b2lkIGxydV9nZW5fZW50ZXJfZmF1bHQoc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEpCit7CisJLyogdGhlIExSVSBhbGdvcml0aG0gZG9lc24ndCBhcHBseSB0 byBzZXF1ZW50aWFsIG9yIHJhbmRvbSByZWFkcyAqLworCWN1cnJlbnQtPmluX2xydV9mYXVsdCA9 ICEodm1hLT52bV9mbGFncyAmIChWTV9TRVFfUkVBRCB8IFZNX1JBTkRfUkVBRCkpOworfQorCitz dGF0aWMgdm9pZCBscnVfZ2VuX2V4aXRfZmF1bHQodm9pZCkKK3sKKwljdXJyZW50LT5pbl9scnVf ZmF1bHQgPSBmYWxzZTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCBscnVfZ2VuX2VudGVyX2ZhdWx0 KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworfQorCitzdGF0aWMgdm9pZCBscnVfZ2Vu X2V4aXRfZmF1bHQodm9pZCkKK3sKK30KKyNlbmRpZiAvKiBDT05GSUdfTFJVX0dFTiAqLworCiAv KgogICogQnkgdGhlIHRpbWUgd2UgZ2V0IGhlcmUsIHdlIGFscmVhZHkgaG9sZCB0aGUgbW0gc2Vt YXBob3JlCiAgKgpAQCAtNDc4NSwxMSArNDgwNiwxNSBAQCB2bV9mYXVsdF90IGhhbmRsZV9tbV9m YXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAog CWlmIChmbGFncyAmIEZBVUxUX0ZMQUdfVVNFUikKIAkJbWVtX2Nncm91cF9lbnRlcl91c2VyX2Zh dWx0KCk7CiAKKwlscnVfZ2VuX2VudGVyX2ZhdWx0KHZtYSk7CisKIAlpZiAodW5saWtlbHkoaXNf dm1faHVnZXRsYl9wYWdlKHZtYSkpKQogCQlyZXQgPSBodWdldGxiX2ZhdWx0KHZtYS0+dm1fbW0s IHZtYSwgYWRkcmVzcywgZmxhZ3MpOwogCWVsc2UKIAkJcmV0ID0gX19oYW5kbGVfbW1fZmF1bHQo dm1hLCBhZGRyZXNzLCBmbGFncyk7CiAKKwlscnVfZ2VuX2V4aXRfZmF1bHQoKTsKKwogCWlmIChm bGFncyAmIEZBVUxUX0ZMQUdfVVNFUikgewogCQltZW1fY2dyb3VwX2V4aXRfdXNlcl9mYXVsdCgp OwogCQkvKgpkaWZmIC0tZ2l0IGEvbW0vbW1faW5pdC5jIGIvbW0vbW1faW5pdC5jCmluZGV4IDlk ZGFmMGUxYjBhYi4uMGQ3YjJiZDI0NTRhIDEwMDY0NAotLS0gYS9tbS9tbV9pbml0LmMKKysrIGIv bW0vbW1faW5pdC5jCkBAIC02NSwxNCArNjUsMTYgQEAgdm9pZCBfX2luaXQgbW1pbml0X3Zlcmlm eV9wYWdlZmxhZ3NfbGF5b3V0KHZvaWQpCiAKIAlzaGlmdCA9IDggKiBzaXplb2YodW5zaWduZWQg bG9uZyk7CiAJd2lkdGggPSBzaGlmdCAtIFNFQ1RJT05TX1dJRFRIIC0gTk9ERVNfV0lEVEggLSBa T05FU19XSURUSAotCQktIExBU1RfQ1BVUElEX1NISUZUIC0gS0FTQU5fVEFHX1dJRFRIOworCQkt IExBU1RfQ1BVUElEX1NISUZUIC0gS0FTQU5fVEFHX1dJRFRIIC0gTFJVX0dFTl9XSURUSCAtIExS VV9SRUZTX1dJRFRIOwogCW1taW5pdF9kcHJpbnRrKE1NSU5JVF9UUkFDRSwgInBhZ2VmbGFnc19s YXlvdXRfd2lkdGhzIiwKLQkJIlNlY3Rpb24gJWQgTm9kZSAlZCBab25lICVkIExhc3RjcHVwaWQg JWQgS2FzYW50YWcgJWQgRmxhZ3MgJWRcbiIsCisJCSJTZWN0aW9uICVkIE5vZGUgJWQgWm9uZSAl ZCBMYXN0Y3B1cGlkICVkIEthc2FudGFnICVkIEdlbiAlZCBUaWVyICVkIEZsYWdzICVkXG4iLAog CQlTRUNUSU9OU19XSURUSCwKIAkJTk9ERVNfV0lEVEgsCiAJCVpPTkVTX1dJRFRILAogCQlMQVNU X0NQVVBJRF9XSURUSCwKIAkJS0FTQU5fVEFHX1dJRFRILAorCQlMUlVfR0VOX1dJRFRILAorCQlM UlVfUkVGU19XSURUSCwKIAkJTlJfUEFHRUZMQUdTKTsKIAltbWluaXRfZHByaW50ayhNTUlOSVRf VFJBQ0UsICJwYWdlZmxhZ3NfbGF5b3V0X3NoaWZ0cyIsCiAJCSJTZWN0aW9uICVkIE5vZGUgJWQg Wm9uZSAlZCBMYXN0Y3B1cGlkICVkIEthc2FudGFnICVkXG4iLApkaWZmIC0tZ2l0IGEvbW0vcGFn ZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IDM1ODlmZWJjNmQzMS4uYTNmYWE4YzAy YzA3IDEwMDY0NAotLS0gYS9tbS9wYWdlX2FsbG9jLmMKKysrIGIvbW0vcGFnZV9hbGxvYy5jCkBA IC03NDgwLDYgKzc0ODAsNyBAQCBzdGF0aWMgdm9pZCBfX21lbWluaXQgcGdkYXRfaW5pdF9pbnRl cm5hbHMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKIAogCXBnZGF0X3BhZ2VfZXh0X2luaXQo cGdkYXQpOwogCWxydXZlY19pbml0KCZwZ2RhdC0+X19scnV2ZWMpOworCWxydV9nZW5faW5pdF9z dGF0ZShOVUxMLCAmcGdkYXQtPl9fbHJ1dmVjKTsKIH0KIAogc3RhdGljIHZvaWQgX19tZW1pbml0 IHpvbmVfaW5pdF9pbnRlcm5hbHMoc3RydWN0IHpvbmUgKnpvbmUsIGVudW0gem9uZV90eXBlIGlk eCwgaW50IG5pZCwKZGlmZiAtLWdpdCBhL21tL3N3YXAuYyBiL21tL3N3YXAuYwppbmRleCBiY2Yz YWMyODhiNTYuLmUyZWYyYWNjY2M3NCAxMDA2NDQKLS0tIGEvbW0vc3dhcC5jCisrKyBiL21tL3N3 YXAuYwpAQCAtNDYyLDYgKzQ2MiwxMSBAQCB2b2lkIGZvbGlvX2FkZF9scnUoc3RydWN0IGZvbGlv ICpmb2xpbykKIAlWTV9CVUdfT05fRk9MSU8oZm9saW9fdGVzdF9hY3RpdmUoZm9saW8pICYmIGZv bGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pLCBmb2xpbyk7CiAJVk1fQlVHX09OX0ZPTElPKGZv bGlvX3Rlc3RfbHJ1KGZvbGlvKSwgZm9saW8pOwogCisJLyogc2VlIHRoZSBjb21tZW50IGluIGxy dV9nZW5fYWRkX2ZvbGlvKCkgKi8KKwlpZiAobHJ1X2dlbl9lbmFibGVkKCkgJiYgIWZvbGlvX3Rl c3RfdW5ldmljdGFibGUoZm9saW8pICYmCisJICAgIGxydV9nZW5faW5fZmF1bHQoKSAmJiAhKGN1 cnJlbnQtPmZsYWdzICYgUEZfTUVNQUxMT0MpKQorCQlmb2xpb19zZXRfYWN0aXZlKGZvbGlvKTsK KwogCWZvbGlvX2dldChmb2xpbyk7CiAJbG9jYWxfbG9jaygmbHJ1X3B2ZWNzLmxvY2spOwogCXB2 ZWMgPSB0aGlzX2NwdV9wdHIoJmxydV9wdmVjcy5scnVfYWRkKTsKZGlmZiAtLWdpdCBhL21tL3Zt c2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggYjcyMjhiNzNlMWIzLi5kNzVhNTczOGQxZGMgMTAw NjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC0zMDQwLDYgKzMwNDAs OTEgQEAgc3RhdGljIGJvb2wgY2FuX2FnZV9hbm9uX3BhZ2VzKHN0cnVjdCBwZ2xpc3RfZGF0YSAq cGdkYXQsCiAJcmV0dXJuIGNhbl9kZW1vdGUocGdkYXQtPm5vZGVfaWQsIHNjKTsKIH0KIAorI2lm ZGVmIENPTkZJR19MUlVfR0VOCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICBzaG9ydGhhbmQgaGVscGVycworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworI2RlZmluZSBmb3JfZWFjaF9nZW5fdHlwZV96b25lKGdlbiwgdHlwZSwgem9uZSkJCQkJ XAorCWZvciAoKGdlbikgPSAwOyAoZ2VuKSA8IE1BWF9OUl9HRU5TOyAoZ2VuKSsrKQkJCVwKKwkJ Zm9yICgodHlwZSkgPSAwOyAodHlwZSkgPCBBTk9OX0FORF9GSUxFOyAodHlwZSkrKykJXAorCQkJ Zm9yICgoem9uZSkgPSAwOyAoem9uZSkgPCBNQVhfTlJfWk9ORVM7ICh6b25lKSsrKQorCitzdGF0 aWMgc3RydWN0IGxydXZlYyAqZ2V0X2xydXZlYyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGlu dCBuaWQpCit7CisJc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCA9IE5PREVfREFUQShuaWQpOwor CisjaWZkZWYgQ09ORklHX01FTUNHCisJaWYgKG1lbWNnKSB7CisJCXN0cnVjdCBscnV2ZWMgKmxy dXZlYyA9ICZtZW1jZy0+bm9kZWluZm9bbmlkXS0+bHJ1dmVjOworCisJCS8qIGZvciBob3RhZGRf bmV3X3BnZGF0KCkgKi8KKwkJaWYgKCFscnV2ZWMtPnBnZGF0KQorCQkJbHJ1dmVjLT5wZ2RhdCA9 IHBnZGF0OworCisJCXJldHVybiBscnV2ZWM7CisJfQorI2VuZGlmCisJcmV0dXJuIHBnZGF0ID8g JnBnZGF0LT5fX2xydXZlYyA6IE5VTEw7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbgorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKwordm9pZCBscnVfZ2VuX2luaXRfc3RhdGUoc3RydWN0IG1lbV9jZ3JvdXAgKm1l bWNnLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJaW50IGk7CisJaW50IGdlbiwgdHlwZSwg em9uZTsKKwlzdHJ1Y3QgbHJ1X2dlbl9zdHJ1Y3QgKmxydWdlbiA9ICZscnV2ZWMtPmxydWdlbjsK KworCWxydWdlbi0+bWF4X3NlcSA9IE1JTl9OUl9HRU5TICsgMTsKKwlscnVnZW4tPmVuYWJsZWQg PSBscnVfZ2VuX2VuYWJsZWQoKTsKKworCWZvciAoaSA9IDA7IGkgPD0gTUlOX05SX0dFTlMgKyAx OyBpKyspCisJCWxydWdlbi0+dGltZXN0YW1wc1tpXSA9IGppZmZpZXM7CisKKwlmb3JfZWFjaF9n ZW5fdHlwZV96b25lKGdlbiwgdHlwZSwgem9uZSkKKwkJSU5JVF9MSVNUX0hFQUQoJmxydWdlbi0+ bGlzdHNbZ2VuXVt0eXBlXVt6b25lXSk7Cit9CisKKyNpZmRlZiBDT05GSUdfTUVNQ0cKK3ZvaWQg bHJ1X2dlbl9pbml0X21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKK3sKKwlpbnQgbmlk OworCisJZm9yX2VhY2hfbm9kZShuaWQpIHsKKwkJc3RydWN0IGxydXZlYyAqbHJ1dmVjID0gZ2V0 X2xydXZlYyhtZW1jZywgbmlkKTsKKworCQlscnVfZ2VuX2luaXRfc3RhdGUobWVtY2csIGxydXZl Yyk7CisJfQorfQorCit2b2lkIGxydV9nZW5fZnJlZV9tZW1jZyhzdHJ1Y3QgbWVtX2Nncm91cCAq bWVtY2cpCit7CisJaW50IG5pZDsKKworCWZvcl9lYWNoX25vZGUobmlkKSB7CisJCXN0cnVjdCBs cnV2ZWMgKmxydXZlYyA9IGdldF9scnV2ZWMobWVtY2csIG5pZCk7CisKKwkJVk1fQlVHX09OKG1l bWNocl9pbnYobHJ1dmVjLT5scnVnZW4ubnJfcGFnZXMsIDAsCisJCQkJICAgICBzaXplb2YobHJ1 dmVjLT5scnVnZW4ubnJfcGFnZXMpKSk7CisJfQorfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgX19p bml0IGluaXRfbHJ1X2dlbih2b2lkKQoreworCUJVSUxEX0JVR19PTihNSU5fTlJfR0VOUyArIDEg Pj0gTUFYX05SX0dFTlMpOworCUJVSUxEX0JVR19PTihCSVQoTFJVX0dFTl9XSURUSCkgPD0gTUFY X05SX0dFTlMpOworCisJcmV0dXJuIDA7Cit9OworbGF0ZV9pbml0Y2FsbChpbml0X2xydV9nZW4p OworCisjZW5kaWYgLyogQ09ORklHX0xSVV9HRU4gKi8KKwogc3RhdGljIHZvaWQgc2hyaW5rX2xy dXZlYyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKQogewog CXVuc2lnbmVkIGxvbmcgbnJbTlJfTFJVX0xJU1RTXTsKLS0gCjIuMzUuMC4yNjMuZ2I4MjQyMjY0 MmYtZ29vZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK