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 17444C433F5 for ; Tue, 8 Feb 2022 08:23:19 +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=vk6cjRJ69br00V32GW3gEWj1tq8NkEp+ClvLFSMLhNs=; b=4U7Ew7bX1S9AGCJMMOIueBKkAR iAuMuNTN9Eh8S/3vjuW6xG2q9+l6AGUM/xoRQUgjdIg9Cl19hP7UNA5I5wd/Eq4yTHTF2B8o9x8NK mMDitdJLFLdKOhfZH3FhoN/VTGMP1olqKqSdLJUAheHuU1ThlJZ7jTpDE4jFgND+kvM53buvhgX8O VZquJePkmf/iIgQAjDCEARWBmmm9hL16JEb/jhXzpF1rua+ra0IfpBhot5/zrEYqejsQlXpwQ83vE lwMBPCKkwYkdZJqkEEDKncFMbpyg+IvbgDtZ4QOJUOs1NdQw3uRsCV+W7GPOimTW5msYcFL8+6+dR p9Kd+BOw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHLkl-00Cuop-Gd; Tue, 08 Feb 2022 08:21:36 +0000 Received: from mail-yb1-f202.google.com ([209.85.219.202]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHLiv-00CtzU-FK for linux-arm-kernel@lists.infradead.org; Tue, 08 Feb 2022 08:19:53 +0000 Received: by mail-yb1-f202.google.com with SMTP id u6-20020a25f806000000b0061dc4f694b0so9279106ybd.4 for ; Tue, 08 Feb 2022 00:19:40 -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=0BXyO0PKK7CUSbeV+6Qnj8UbyGthBxtpCJsNt1soUUg=; b=KAx/iZ9svyK4ObUuX8iuJmFV3DiPdun9klzyG5ld1dYnzaBrkASTVzQxY84IbSKHzr 4xxKGTr2M2y0Mfkw+1VlzsT9YDQQE82VA1lRjpiZF1cHgCjyeiY18kxA0jDugTYpznp7 LnewJWKHsv/5TAO10lfqEGyj10AIzXBYZE16i9eN2RLjXdVjMJ9tXVbtLIfDtbxFV/Jo TNoU9JOxwZtsVRF1gcI8WMGFpn+RpNgS7n4HKOblWKkymgC4O3UqvcHnaqz/mN3jQ94F ArYg8fhyNRBNzb5Pzk6w2gskCSclECA9FkpOMpQHgn3qbNJ7oRsA8sqqiIaS0jarHPe+ m5KQ== 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=0BXyO0PKK7CUSbeV+6Qnj8UbyGthBxtpCJsNt1soUUg=; b=zt8amZmhWPZs1rXjoNkUIt+G54lQ22DhyRzgv6RfW3kbKS6OU0xTuvVC4s1UFvqdk2 LG+A1Sj/4E/uiqiIFkL6B7peBt6Hcyt5fl61EsWYnnLVtW9QRop+xoKek/ytx0i25Mg7 Capuc9Cpk0chMUW/+Tw0gapGqkSpFLrvamALwiKE7GU8F7IgzaiuBRQbGrR08w7buEfw uXBdPqT/hlrmG/xXNJNR3ee3h+tm14+QLEKxkzomGwND1xds+0QR+YbOz0QmTmFCV0xC wsiRdnkJHX5gWxOZam3TBFs7qW3aTtC9WcKG+xA5m8LgIrpLqJ/xVd+vBEK26vlFdg9O Ibxw== X-Gm-Message-State: AOAM533X3XiYtch754hKnhG1DkY+R2YR6GGV8CHgireBKftAlXTHHIo2 M+/VpKOEJBeWo9M7vFs2JaS+whepSgk= X-Google-Smtp-Source: ABdhPJyfRNtK8fQEnpFOFnjoUd54PtiPMNuR17kYMjb9Xjj4M6nkXaP0KwGeiWwcMRE8Var+bOeyh57f1jQ= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:5f31:19c3:21f5:7300]) (user=yuzhao job=sendgmr) by 2002:a81:ce0b:: with SMTP id t11mr3946599ywi.421.1644308379615; Tue, 08 Feb 2022 00:19:39 -0800 (PST) Date: Tue, 8 Feb 2022 01:18:59 -0700 In-Reply-To: <20220208081902.3550911-1-yuzhao@google.com> Message-Id: <20220208081902.3550911-10-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 09/12] mm: multigenerational LRU: runtime switch 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_001941_562231_647C614B X-CRM114-Status: GOOD ( 26.05 ) 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 QWRkIC9zeXMva2VybmVsL21tL2xydV9nZW4vZW5hYmxlZCBhcyBhIHJ1bnRpbWUgc3dpdGNoLiBG ZWF0dXJlcyB0aGF0CmNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGluY2x1ZGU6CiAgMHgwMDAx OiB0aGUgbXVsdGlnZW5lcmF0aW9uYWwgTFJVCiAgMHgwMDAyOiB0aGUgcGFnZSB0YWJsZSB3YWxr cywgd2hlbiBhcmNoX2hhc19od19wdGVfeW91bmcoKSByZXR1cm5zCiAgICAgICAgICB0cnVlCiAg MHgwMDA0OiB0aGUgdXNlIG9mIHRoZSBhY2Nlc3NlZCBiaXQgaW4gbm9uLWxlYWYgUE1EIGVudHJp ZXMsIHdoZW4KICAgICAgICAgIENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORz15CiAg W3lZbk5dOiBhcHBseSB0byBhbGwgdGhlIGZlYXR1cmVzIGFib3ZlCkUuZy4sCiAgZWNobyB5ID4v c3lzL2tlcm5lbC9tbS9scnVfZ2VuL2VuYWJsZWQKICBjYXQgL3N5cy9rZXJuZWwvbW0vbHJ1X2dl bi9lbmFibGVkCiAgMHgwMDA3CiAgZWNobyA1ID4vc3lzL2tlcm5lbC9tbS9scnVfZ2VuL2VuYWJs ZWQKICBjYXQgL3N5cy9rZXJuZWwvbW0vbHJ1X2dlbi9lbmFibGVkCiAgMHgwMDA1CgpOQjogdGhl IHBhZ2UgdGFibGUgd2Fsa3MgaGFwcGVuIG9uIHRoZSBzY2FsZSBvZiBzZWNvbmRzIHVuZGVyIGhl YXZ5Cm1lbW9yeSBwcmVzc3VyZS4gVW5kZXIgc3VjaCBhIGNvbmRpdGlvbiwgdGhlIG1tYXBfbG9j ayBjb250ZW50aW9uIGlzIGEKbGVzc2VyIGNvbmNlcm4sIGNvbXBhcmVkIHdpdGggdGhlIExSVSBs b2NrIGNvbnRlbnRpb24gYW5kIHRoZSBJL08KY29uZ2VzdGlvbi4gU28gZmFyIHRoZSBvbmx5IHdl bGwta25vd24gY2FzZSBvZiB0aGUgbW1hcF9sb2NrCmNvbnRlbnRpb24gaXMgQW5kcm9pZCwgZHVl IHRvIFNjdWRvIFsxXSB3aGljaCBhbGxvY2F0ZXMgc2V2ZXJhbAp0aG91c2FuZCBWTUFzIGZvciBt ZXJlbHkgYSBmZXcgaHVuZHJlZCBNQnMuIFRoZSBTUEYgYW5kIHRoZSBNYXBsZSBUcmVlCmFsc28g aGF2ZSBwcm92aWRlZCB0aGVpciBvd24gYXNzZXNzbWVudHMgWzJdWzNdLiBIb3dldmVyLCBpZiB0 aGUgcGFnZQp0YWJsZSB3YWxrcyBkbyB3b3JzZW4gdGhlIG1tYXBfbG9jayBjb250ZW50aW9uLCB0 aGUgcnVudGltZSBzd2l0Y2ggY2FuCmJlIHVzZWQgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuIElu IHRoaXMgY2FzZSB0aGUgbXVsdGlnZW5lcmF0aW9uYWwKTFJVIHdpbGwgc3VmZmVyIGEgbWlub3Ig cGVyZm9ybWFuY2UgZGVncmFkYXRpb24sIGFzIHNob3duIHByZXZpb3VzbHkuCgpUaGUgdXNlIG9m IHRoZSBhY2Nlc3NlZCBiaXQgaW4gbm9uLWxlYWYgUE1EIGVudHJpZXMgY2FuIGFsc28gYmUKZGlz YWJsZWQsIHNpbmNlIHRoaXMgZmVhdHVyZSB3YXNuJ3QgdGVzdGVkIG9uIHg4NiB2YXJpZXRpZXMg b3RoZXIgdGhhbgpJbnRlbCBhbmQgQU1ELgoKWzFdIGh0dHBzOi8vc291cmNlLmFuZHJvaWQuY29t L2RldmljZXMvdGVjaC9kZWJ1Zy9zY3VkbwpbMl0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGtt bC8yMDIyMDEyODEzMTAwNi42NzcxMi0xLW1pY2hlbEBsZXNwaW5hc3NlLm9yZy8KWzNdIGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMjAyMDIwMjQxMzcuMjUxNjQzOC0xLUxpYW0uSG93 bGV0dEBvcmFjbGUuY29tLwoKU2lnbmVkLW9mZi1ieTogWXUgWmhhbyA8eXV6aGFvQGdvb2dsZS5j b20+CkFja2VkLWJ5OiBCcmlhbiBHZWZmb24gPGJnZWZmb25AZ29vZ2xlLmNvbT4KQWNrZWQtYnk6 IEphbiBBbGV4YW5kZXIgU3RlZmZlbnMgKGhlZnRpZykgPGhlZnRpZ0BhcmNobGludXgub3JnPgpB Y2tlZC1ieTogT2xla3NhbmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFsZW5rby5uYW1lPgpB Y2tlZC1ieTogU3RldmVuIEJhcnJldHQgPHN0ZXZlbkBsaXF1b3JpeC5uZXQ+CkFja2VkLWJ5OiBT dWxlaW1hbiBTb3VobGFsIDxzdWxlaW1hbkBnb29nbGUuY29tPgpUZXN0ZWQtYnk6IERhbmllbCBC eXJuZSA8ZGpieXJuZUBtdHUuZWR1PgpUZXN0ZWQtYnk6IERvbmFsZCBDYXJyIDxkQGNoYW9zLXJl aW5zLmNvbT4KVGVzdGVkLWJ5OiBIb2xnZXIgSG9mZnN0w6R0dGUgPGhvbGdlckBhcHBsaWVkLWFz eW5jaHJvbnkuY29tPgpUZXN0ZWQtYnk6IEtvbnN0YW50aW4gS2hhcmxhbW92IDxIaS1BbmdlbEB5 YW5kZXgucnU+ClRlc3RlZC1ieTogU2h1YW5nIFpoYWkgPHN6aGFpMkBjcy5yb2NoZXN0ZXIuZWR1 PgpUZXN0ZWQtYnk6IFNvZmlhIFRyaW5oIDxzb2ZpYS50cmluaEBlZGkud29ya3M+Ci0tLQogaW5j bHVkZS9saW51eC9jZ3JvdXAuaCAgICAgICAgICB8ICAxNSArLQogaW5jbHVkZS9saW51eC9tbV9p bmxpbmUuaCAgICAgICB8ICAxMCArLQogaW5jbHVkZS9saW51eC9tbXpvbmUuaCAgICAgICAgICB8 ICAgNyArCiBrZXJuZWwvY2dyb3VwL2Nncm91cC1pbnRlcm5hbC5oIHwgICAxIC0KIG1tL0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogbW0vdm1zY2FuLmMgICAgICAgICAgICAg ICAgICAgICB8IDIzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogNiBmaWxlcyBj aGFuZ2VkLCAyNjcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L2Nncm91cC5oIGIvaW5jbHVkZS9saW51eC9jZ3JvdXAuaAppbmRleCA3NWMx NTE0MTNmZGEuLmIxNDUwMjVmM2VhYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZ3JvdXAu aAorKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cC5oCkBAIC00MzIsNiArNDMyLDE4IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBjZ3JvdXBfcHV0KHN0cnVjdCBjZ3JvdXAgKmNncnApCiAJY3NzX3B1dCgm Y2dycC0+c2VsZik7CiB9CiAKK2V4dGVybiBzdHJ1Y3QgbXV0ZXggY2dyb3VwX211dGV4OworCitz dGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX2xvY2sodm9pZCkKK3sKKwltdXRleF9sb2NrKCZjZ3Jv dXBfbXV0ZXgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX3VubG9jayh2b2lkKQor eworCW11dGV4X3VubG9jaygmY2dyb3VwX211dGV4KTsKK30KKwogLyoqCiAgKiB0YXNrX2Nzc19z ZXRfY2hlY2sgLSBvYnRhaW4gYSB0YXNrJ3MgY3NzX3NldCB3aXRoIGV4dHJhIGFjY2VzcyBjb25k aXRpb25zCiAgKiBAdGFzazogdGhlIHRhc2sgdG8gb2J0YWluIGNzc19zZXQgZm9yCkBAIC00NDYs NyArNDU4LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNncm91cF9wdXQoc3RydWN0IGNncm91cCAq Y2dycCkKICAqIGFzIGxvY2tzIHVzZWQgZHVyaW5nIHRoZSBjZ3JvdXBfc3Vic3lzOjphdHRhY2go KSBtZXRob2RzLgogICovCiAjaWZkZWYgQ09ORklHX1BST1ZFX1JDVQotZXh0ZXJuIHN0cnVjdCBt dXRleCBjZ3JvdXBfbXV0ZXg7CiBleHRlcm4gc3BpbmxvY2tfdCBjc3Nfc2V0X2xvY2s7CiAjZGVm aW5lIHRhc2tfY3NzX3NldF9jaGVjayh0YXNrLCBfX2MpCQkJCQlcCiAJcmN1X2RlcmVmZXJlbmNl X2NoZWNrKCh0YXNrKS0+Y2dyb3VwcywJCQkJXApAQCAtNzA3LDYgKzcxOCw4IEBAIHN0cnVjdCBj Z3JvdXA7CiBzdGF0aWMgaW5saW5lIHU2NCBjZ3JvdXBfaWQoY29uc3Qgc3RydWN0IGNncm91cCAq Y2dycCkgeyByZXR1cm4gMTsgfQogc3RhdGljIGlubGluZSB2b2lkIGNzc19nZXQoc3RydWN0IGNn cm91cF9zdWJzeXNfc3RhdGUgKmNzcykge30KIHN0YXRpYyBpbmxpbmUgdm9pZCBjc3NfcHV0KHN0 cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgY2dy b3VwX2xvY2sodm9pZCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBjZ3JvdXBfdW5sb2NrKHZvaWQp IHt9CiBzdGF0aWMgaW5saW5lIGludCBjZ3JvdXBfYXR0YWNoX3Rhc2tfYWxsKHN0cnVjdCB0YXNr X3N0cnVjdCAqZnJvbSwKIAkJCQkJIHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkgeyByZXR1cm4gMDsg fQogc3RhdGljIGlubGluZSBpbnQgY2dyb3Vwc3RhdHNfYnVpbGQoc3RydWN0IGNncm91cHN0YXRz ICpzdGF0cywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1faW5saW5lLmggYi9pbmNsdWRl L2xpbnV4L21tX2lubGluZS5oCmluZGV4IDM3YzhhMGVkZTRmZi4uMTMwZDYyNzUxZTA1IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW1f aW5saW5lLmgKQEAgLTk2LDcgKzk2LDE1IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgZW51bSBs cnVfbGlzdCBmb2xpb19scnVfbGlzdChzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCiBzdGF0aWMgaW5s aW5lIGJvb2wgbHJ1X2dlbl9lbmFibGVkKHZvaWQpCiB7Ci0JcmV0dXJuIHRydWU7CisjaWZkZWYg Q09ORklHX0xSVV9HRU5fRU5BQkxFRAorCURFQ0xBUkVfU1RBVElDX0tFWV9UUlVFKGxydV9nZW5f Y2Fwc1tOUl9MUlVfR0VOX0NBUFNdKTsKKworCXJldHVybiBzdGF0aWNfYnJhbmNoX2xpa2VseSgm bHJ1X2dlbl9jYXBzW0xSVV9HRU5fQ09SRV0pOworI2Vsc2UKKwlERUNMQVJFX1NUQVRJQ19LRVlf RkFMU0UobHJ1X2dlbl9jYXBzW05SX0xSVV9HRU5fQ0FQU10pOworCisJcmV0dXJuIHN0YXRpY19i cmFuY2hfdW5saWtlbHkoJmxydV9nZW5fY2Fwc1tMUlVfR0VOX0NPUkVdKTsKKyNlbmRpZgogfQog CiBzdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9pbl9mYXVsdCh2b2lkKQpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9tbXpvbmUuaCBiL2luY2x1ZGUvbGludXgvbW16b25lLmgKaW5kZXggZmEw YTdhODRlZTU4Li40ZWNlYzkxNTI3NjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW16b25l LmgKKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaApAQCAtMzExLDYgKzMxMSwxMyBAQCBzdHJ1 Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGs7CiAKICNpZmRlZiBDT05GSUdfTFJVX0dFTgogCitlbnVt IHsKKwlMUlVfR0VOX0NPUkUsCisJTFJVX0dFTl9NTV9XQUxLLAorCUxSVV9HRU5fTk9OTEVBRl9Z T1VORywKKwlOUl9MUlVfR0VOX0NBUFMKK307CisKICNkZWZpbmUgTUlOX0xSVV9CQVRDSAkJQklU U19QRVJfTE9ORwogI2RlZmluZSBNQVhfTFJVX0JBVENICQkoTUlOX0xSVV9CQVRDSCAqIDEyOCkK IApkaWZmIC0tZ2l0IGEva2VybmVsL2Nncm91cC9jZ3JvdXAtaW50ZXJuYWwuaCBiL2tlcm5lbC9j Z3JvdXAvY2dyb3VwLWludGVybmFsLmgKaW5kZXggNmUzNmU4NTRiNTEyLi45MjllZDNiZjFhN2Mg MTAwNjQ0Ci0tLSBhL2tlcm5lbC9jZ3JvdXAvY2dyb3VwLWludGVybmFsLmgKKysrIGIva2VybmVs L2Nncm91cC9jZ3JvdXAtaW50ZXJuYWwuaApAQCAtMTY1LDcgKzE2NSw2IEBAIHN0cnVjdCBjZ3Jv dXBfbWdjdHggewogI2RlZmluZSBERUZJTkVfQ0dST1VQX01HQ1RYKG5hbWUpCQkJCQkJXAogCXN0 cnVjdCBjZ3JvdXBfbWdjdHggbmFtZSA9IENHUk9VUF9NR0NUWF9JTklUKG5hbWUpCiAKLWV4dGVy biBzdHJ1Y3QgbXV0ZXggY2dyb3VwX211dGV4OwogZXh0ZXJuIHNwaW5sb2NrX3QgY3NzX3NldF9s b2NrOwogZXh0ZXJuIHN0cnVjdCBjZ3JvdXBfc3Vic3lzICpjZ3JvdXBfc3Vic3lzW107CiBleHRl cm4gc3RydWN0IGxpc3RfaGVhZCBjZ3JvdXBfcm9vdHM7CmRpZmYgLS1naXQgYS9tbS9LY29uZmln IGIvbW0vS2NvbmZpZwppbmRleCBlODk5NjIzZDVkZjAuLmFhZTcyYjc0MGQ4YSAxMDA2NDQKLS0t IGEvbW0vS2NvbmZpZworKysgYi9tbS9LY29uZmlnCkBAIC05MDMsNiArOTAzLDEyIEBAIGNvbmZp ZyBMUlVfR0VOCiAJICBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL211bHRpZ2VuX2xydS5y c3QgYW5kCiAJICBEb2N1bWVudGF0aW9uL3ZtL211bHRpZ2VuX2xydS5yc3QgZm9yIGRldGFpbHMu CiAKK2NvbmZpZyBMUlVfR0VOX0VOQUJMRUQKKwlib29sICJFbmFibGUgYnkgZGVmYXVsdCIKKwlk ZXBlbmRzIG9uIExSVV9HRU4KKwloZWxwCisJICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBtdWx0 aWdlbmVyYXRpb25hbCBMUlUgYnkgZGVmYXVsdC4KKwogY29uZmlnIE5SX0xSVV9HRU5TCiAJaW50 ICJNYXggbnVtYmVyIG9mIGdlbmVyYXRpb25zIgogCWRlcGVuZHMgb24gTFJVX0dFTgpkaWZmIC0t Z2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYwppbmRleCBmYzA5YjZjMTA2MjQuLjcwMGMz NWYyYTAzMCAxMDA2NDQKLS0tIGEvbW0vdm1zY2FuLmMKKysrIGIvbW0vdm1zY2FuLmMKQEAgLTMw NjYsNiArMzA2NiwxMiBAQCBlbnVtIHsKIAlUWVBFX0ZJTEUsCiB9OwogCisjaWZkZWYgQ09ORklH X0xSVV9HRU5fRU5BQkxFRAorREVGSU5FX1NUQVRJQ19LRVlfQVJSQVlfVFJVRShscnVfZ2VuX2Nh cHMsIE5SX0xSVV9HRU5fQ0FQUyk7CisjZWxzZQorREVGSU5FX1NUQVRJQ19LRVlfQVJSQVlfRkFM U0UobHJ1X2dlbl9jYXBzLCBOUl9MUlVfR0VOX0NBUFMpOworI2VuZGlmCisKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKICAqICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmQgaGVscGVy cwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTMxMDIsNiArMzEwOCwxNSBAQCBzdGF0aWMg aW50IGZvbGlvX2xydV90aWVyKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJcmV0dXJuIGxydV90aWVy X2Zyb21fcmVmcyhyZWZzKTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0X2NhcChpbnQgY2FwKQorewor I2lmZGVmIENPTkZJR19MUlVfR0VOX0VOQUJMRUQKKwlyZXR1cm4gc3RhdGljX2JyYW5jaF9saWtl bHkoJmxydV9nZW5fY2Fwc1tjYXBdKTsKKyNlbHNlCisJcmV0dXJuIHN0YXRpY19icmFuY2hfdW5s aWtlbHkoJmxydV9nZW5fY2Fwc1tjYXBdKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgc3RydWN0IGxy dXZlYyAqZ2V0X2xydXZlYyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBuaWQpCiB7CiAJ c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCA9IE5PREVfREFUQShuaWQpOwpAQCAtMzg5Myw3ICsz OTA4LDggQEAgc3RhdGljIHZvaWQgd2Fsa19wbWRfcmFuZ2VfbG9ja2VkKHB1ZF90ICpwdWQsIHVu c2lnbmVkIGxvbmcgbmV4dCwgc3RydWN0IHZtX2FyZWEKIAkJCWdvdG8gbmV4dDsKIAogCQlpZiAo IXBtZF90cmFuc19odWdlKHBtZFtpXSkpIHsKLQkJCWlmIChJU19FTkFCTEVEKENPTkZJR19BUkNI X0hBU19OT05MRUFGX1BNRF9ZT1VORykpCisJCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfQVJDSF9I QVNfTk9OTEVBRl9QTURfWU9VTkcpICYmCisJCQkgICAgZ2V0X2NhcChMUlVfR0VOX05PTkxFQUZf WU9VTkcpKQogCQkJCXBtZHBfdGVzdF9hbmRfY2xlYXJfeW91bmcodm1hLCBhZGRyLCBwbWQgKyBp KTsKIAkJCWdvdG8gbmV4dDsKIAkJfQpAQCAtNDAwMCwxMCArNDAxNiwxMiBAQCBzdGF0aWMgdm9p ZCB3YWxrX3BtZF9yYW5nZShwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l ZCBsb25nIGVuZCwKIAkJcHJpdi0+bW1fc3RhdHNbTU1fUE1EX1RPVEFMXSsrOwogCiAjaWZkZWYg Q09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HCi0JCWlmICghcG1kX3lvdW5nKHZhbCkp Ci0JCQljb250aW51ZTsKKwkJaWYgKGdldF9jYXAoTFJVX0dFTl9OT05MRUFGX1lPVU5HKSkgewor CQkJaWYgKCFwbWRfeW91bmcodmFsKSkKKwkJCQljb250aW51ZTsKIAotCQl3YWxrX3BtZF9yYW5n ZV9sb2NrZWQocHVkLCBhZGRyLCB2bWEsIHdhbGssICZwb3MpOworCQkJd2Fsa19wbWRfcmFuZ2Vf bG9ja2VkKHB1ZCwgYWRkciwgdm1hLCB3YWxrLCAmcG9zKTsKKwkJfQogI2VuZGlmCiAJCWlmICgh cHJpdi0+ZnVsbF9zY2FuICYmICF0ZXN0X2Jsb29tX2ZpbHRlcihwcml2LT5scnV2ZWMsIHByaXYt Pm1heF9zZXEsIHBtZCArIGkpKQogCQkJY29udGludWU7CkBAIC00MjM1LDcgKzQyNTMsNyBAQCBz dGF0aWMgYm9vbCB0cnlfdG9faW5jX21heF9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCB1bnNp Z25lZCBsb25nIG1heF9zZXEsCiAJICogaGFuZGZ1bCBvZiBQVEVzLiBTcHJlYWRpbmcgdGhlIHdv cmsgb3V0IG92ZXIgYSBwZXJpb2Qgb2YgdGltZSB1c3VhbGx5CiAJICogaXMgbGVzcyBlZmZpY2ll bnQsIGJ1dCBpdCBhdm9pZHMgYnVyc3R5IHBhZ2UgZmF1bHRzLgogCSAqLwotCWlmICghZnVsbF9z Y2FuICYmICFhcmNoX2hhc19od19wdGVfeW91bmcoKSkgeworCWlmICghZnVsbF9zY2FuICYmICgh YXJjaF9oYXNfaHdfcHRlX3lvdW5nKCkgfHwgIWdldF9jYXAoTFJVX0dFTl9NTV9XQUxLKSkpIHsK IAkJc3VjY2VzcyA9IGl0ZXJhdGVfbW1fbGlzdF9ub3dhbGsobHJ1dmVjLCBtYXhfc2VxKTsKIAkJ Z290byBkb25lOwogCX0KQEAgLTQ5NDEsNiArNDk1OSwyMTEgQEAgc3RhdGljIHZvaWQgbHJ1X2dl bl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJv bCAqc2MKIAkJY3VycmVudC0+cmVjbGFpbV9zdGF0ZS0+bW1fd2FsayA9IE5VTEw7CiB9CiAKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBj aGFuZ2UKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBib29sIF9fbWF5YmVfdW51 c2VkIHN0YXRlX2lzX3ZhbGlkKHN0cnVjdCBscnV2ZWMgKmxydXZlYykKK3sKKwlzdHJ1Y3QgbHJ1 X2dlbl9zdHJ1Y3QgKmxydWdlbiA9ICZscnV2ZWMtPmxydWdlbjsKKworCWlmIChscnVnZW4tPmVu YWJsZWQpIHsKKwkJZW51bSBscnVfbGlzdCBscnU7CisKKwkJZm9yX2VhY2hfZXZpY3RhYmxlX2xy dShscnUpIHsKKwkJCWlmICghbGlzdF9lbXB0eSgmbHJ1dmVjLT5saXN0c1tscnVdKSkKKwkJCQly ZXR1cm4gZmFsc2U7CisJCX0KKwl9IGVsc2UgeworCQlpbnQgZ2VuLCB0eXBlLCB6b25lOworCisJ CWZvcl9lYWNoX2dlbl90eXBlX3pvbmUoZ2VuLCB0eXBlLCB6b25lKSB7CisJCQlpZiAoIWxpc3Rf ZW1wdHkoJmxydWdlbi0+bGlzdHNbZ2VuXVt0eXBlXVt6b25lXSkpCisJCQkJcmV0dXJuIGZhbHNl OworCisJCQkvKiB1bmxpa2VseSBidXQgbm90IGEgYnVnIHdoZW4gcmVzZXRfYmF0Y2hfc2l6ZSgp IGlzIHBlbmRpbmcgKi8KKwkJCVZNX1dBUk5fT04obHJ1Z2VuLT5ucl9wYWdlc1tnZW5dW3R5cGVd W3pvbmVdKTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBmaWxs X2V2aWN0YWJsZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJZW51bSBscnVfbGlzdCBscnU7 CisJaW50IHJlbWFpbmluZyA9IE1BWF9MUlVfQkFUQ0g7CisKKwlmb3JfZWFjaF9ldmljdGFibGVf bHJ1KGxydSkgeworCQlpbnQgdHlwZSA9IGlzX2ZpbGVfbHJ1KGxydSk7CisJCWJvb2wgYWN0aXZl ID0gaXNfYWN0aXZlX2xydShscnUpOworCQlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0gJmxydXZl Yy0+bGlzdHNbbHJ1XTsKKworCQl3aGlsZSAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKKwkJCWJvb2wg c3VjY2VzczsKKwkJCXN0cnVjdCBmb2xpbyAqZm9saW8gPSBscnVfdG9fZm9saW8oaGVhZCk7CisK KwkJCVZNX0JVR19PTl9GT0xJTyhmb2xpb190ZXN0X3VuZXZpY3RhYmxlKGZvbGlvKSwgZm9saW8p OworCQkJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3Rlc3RfYWN0aXZlKGZvbGlvKSAhPSBhY3RpdmUs IGZvbGlvKTsKKwkJCVZNX0JVR19PTl9GT0xJTyhmb2xpb19pc19maWxlX2xydShmb2xpbykgIT0g dHlwZSwgZm9saW8pOworCQkJVk1fQlVHX09OX0ZPTElPKGZvbGlvX2xydV9nZW4oZm9saW8pIDwg TUFYX05SX0dFTlMsIGZvbGlvKTsKKworCQkJbHJ1dmVjX2RlbF9mb2xpbyhscnV2ZWMsIGZvbGlv KTsKKwkJCXN1Y2Nlc3MgPSBscnVfZ2VuX2FkZF9mb2xpbyhscnV2ZWMsIGZvbGlvLCBmYWxzZSk7 CisJCQlWTV9CVUdfT04oIXN1Y2Nlc3MpOworCisJCQlpZiAoIS0tcmVtYWluaW5nKQorCQkJCXJl dHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBk cmFpbl9ldmljdGFibGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjKQoreworCWludCBnZW4sIHR5cGUs IHpvbmU7CisJaW50IHJlbWFpbmluZyA9IE1BWF9MUlVfQkFUQ0g7CisKKwlmb3JfZWFjaF9nZW5f dHlwZV96b25lKGdlbiwgdHlwZSwgem9uZSkgeworCQlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0g JmxydXZlYy0+bHJ1Z2VuLmxpc3RzW2dlbl1bdHlwZV1bem9uZV07CisKKwkJd2hpbGUgKCFsaXN0 X2VtcHR5KGhlYWQpKSB7CisJCQlib29sIHN1Y2Nlc3M7CisJCQlzdHJ1Y3QgZm9saW8gKmZvbGlv ID0gbHJ1X3RvX2ZvbGlvKGhlYWQpOworCisJCQlWTV9CVUdfT05fRk9MSU8oZm9saW9fdGVzdF91 bmV2aWN0YWJsZShmb2xpbyksIGZvbGlvKTsKKwkJCVZNX0JVR19PTl9GT0xJTyhmb2xpb190ZXN0 X2FjdGl2ZShmb2xpbyksIGZvbGlvKTsKKwkJCVZNX0JVR19PTl9GT0xJTyhmb2xpb19pc19maWxl X2xydShmb2xpbykgIT0gdHlwZSwgZm9saW8pOworCQkJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3pv bmVudW0oZm9saW8pICE9IHpvbmUsIGZvbGlvKTsKKworCQkJc3VjY2VzcyA9IGxydV9nZW5fZGVs X2ZvbGlvKGxydXZlYywgZm9saW8sIGZhbHNlKTsKKwkJCVZNX0JVR19PTighc3VjY2Vzcyk7CisJ CQlscnV2ZWNfYWRkX2ZvbGlvKGxydXZlYywgZm9saW8pOworCisJCQlpZiAoIS0tcmVtYWluaW5n KQorCQkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0 aWMgdm9pZCBscnVfZ2VuX2NoYW5nZV9zdGF0ZShib29sIGVuYWJsZSkKK3sKKwlzdGF0aWMgREVG SU5FX01VVEVYKHN0YXRlX211dGV4KTsKKworCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKKwor CWNncm91cF9sb2NrKCk7CisJY3B1c19yZWFkX2xvY2soKTsKKwlnZXRfb25saW5lX21lbXMoKTsK KwltdXRleF9sb2NrKCZzdGF0ZV9tdXRleCk7CisKKwlpZiAoZW5hYmxlID09IGxydV9nZW5fZW5h YmxlZCgpKQorCQlnb3RvIHVubG9jazsKKworCWlmIChlbmFibGUpCisJCXN0YXRpY19icmFuY2hf ZW5hYmxlX2NwdXNsb2NrZWQoJmxydV9nZW5fY2Fwc1tMUlVfR0VOX0NPUkVdKTsKKwllbHNlCisJ CXN0YXRpY19icmFuY2hfZGlzYWJsZV9jcHVzbG9ja2VkKCZscnVfZ2VuX2NhcHNbTFJVX0dFTl9D T1JFXSk7CisKKwltZW1jZyA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBOVUxMLCBOVUxMKTsKKwlk byB7CisJCWludCBuaWQ7CisKKwkJZm9yX2VhY2hfbm9kZShuaWQpIHsKKwkJCXN0cnVjdCBscnV2 ZWMgKmxydXZlYyA9IGdldF9scnV2ZWMobWVtY2csIG5pZCk7CisKKwkJCWlmICghbHJ1dmVjKQor CQkJCWNvbnRpbnVlOworCisJCQlzcGluX2xvY2tfaXJxKCZscnV2ZWMtPmxydV9sb2NrKTsKKwor CQkJVk1fQlVHX09OKCFzZXFfaXNfdmFsaWQobHJ1dmVjKSk7CisJCQlWTV9CVUdfT04oIXN0YXRl X2lzX3ZhbGlkKGxydXZlYykpOworCisJCQlscnV2ZWMtPmxydWdlbi5lbmFibGVkID0gZW5hYmxl OworCisJCQl3aGlsZSAoIShlbmFibGUgPyBmaWxsX2V2aWN0YWJsZShscnV2ZWMpIDogZHJhaW5f ZXZpY3RhYmxlKGxydXZlYykpKSB7CisJCQkJc3Bpbl91bmxvY2tfaXJxKCZscnV2ZWMtPmxydV9s b2NrKTsKKwkJCQljb25kX3Jlc2NoZWQoKTsKKwkJCQlzcGluX2xvY2tfaXJxKCZscnV2ZWMtPmxy dV9sb2NrKTsKKwkJCX0KKworCQkJc3Bpbl91bmxvY2tfaXJxKCZscnV2ZWMtPmxydV9sb2NrKTsK KwkJfQorCisJCWNvbmRfcmVzY2hlZCgpOworCX0gd2hpbGUgKChtZW1jZyA9IG1lbV9jZ3JvdXBf aXRlcihOVUxMLCBtZW1jZywgTlVMTCkpKTsKK3VubG9jazoKKwltdXRleF91bmxvY2soJnN0YXRl X211dGV4KTsKKwlwdXRfb25saW5lX21lbXMoKTsKKwljcHVzX3JlYWRfdW5sb2NrKCk7CisJY2dy b3VwX3VubG9jaygpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgc3lzZnMgaW50ZXJmYWNlCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CitzdGF0aWMgc3NpemVfdCBzaG93X2VuYWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0 IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJdW5zaWduZWQgaW50IGNhcHMg PSAwOworCisJaWYgKGdldF9jYXAoTFJVX0dFTl9DT1JFKSkKKwkJY2FwcyB8PSBCSVQoTFJVX0dF Tl9DT1JFKTsKKworCWlmIChhcmNoX2hhc19od19wdGVfeW91bmcoKSAmJiBnZXRfY2FwKExSVV9H RU5fTU1fV0FMSykpCisJCWNhcHMgfD0gQklUKExSVV9HRU5fTU1fV0FMSyk7CisKKwlpZiAoSVNf RU5BQkxFRChDT05GSUdfQVJDSF9IQVNfTk9OTEVBRl9QTURfWU9VTkcpICYmIGdldF9jYXAoTFJV X0dFTl9OT05MRUFGX1lPVU5HKSkKKwkJY2FwcyB8PSBCSVQoTFJVX0dFTl9OT05MRUFGX1lPVU5H KTsKKworCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIjB4JTA0eFxuIiwgY2Fwcyk7 Cit9CisKK3N0YXRpYyBzc2l6ZV90IHN0b3JlX2VuYWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwg c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLAorCQkJICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6 ZV90IGxlbikKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgY2FwczsKKworCWlmICh0b2xvd2Vy KCpidWYpID09ICduJykKKwkJY2FwcyA9IDA7CisJZWxzZSBpZiAodG9sb3dlcigqYnVmKSA9PSAn eScpCisJCWNhcHMgPSAtMTsKKwllbHNlIGlmIChrc3RydG91aW50KGJ1ZiwgMCwgJmNhcHMpKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWZvciAoaSA9IDA7IGkgPCBOUl9MUlVfR0VOX0NBUFM7IGkr KykgeworCQlib29sIGVuYWJsZSA9IGNhcHMgJiBCSVQoaSk7CisKKwkJaWYgKGkgPT0gTFJVX0dF Tl9DT1JFKQorCQkJbHJ1X2dlbl9jaGFuZ2Vfc3RhdGUoZW5hYmxlKTsKKwkJZWxzZSBpZiAoZW5h YmxlKQorCQkJc3RhdGljX2JyYW5jaF9lbmFibGUoJmxydV9nZW5fY2Fwc1tpXSk7CisJCWVsc2UK KwkJCXN0YXRpY19icmFuY2hfZGlzYWJsZSgmbHJ1X2dlbl9jYXBzW2ldKTsKKwl9CisKKwlyZXR1 cm4gbGVuOworfQorCitzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGxydV9nZW5fZW5hYmxl ZF9hdHRyID0gX19BVFRSKAorCWVuYWJsZWQsIDA2NDQsIHNob3dfZW5hYmxlLCBzdG9yZV9lbmFi bGUKKyk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpscnVfZ2VuX2F0dHJzW10gPSB7CisJ JmxydV9nZW5fZW5hYmxlZF9hdHRyLmF0dHIsCisJTlVMTAorfTsKKworc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgbHJ1X2dlbl9hdHRyX2dyb3VwID0geworCS5uYW1lID0gImxydV9nZW4i LAorCS5hdHRycyA9IGxydV9nZW5fYXR0cnMsCit9OworCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24KICAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCkBAIC01MDA3LDYgKzUyMzAsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0 X2xydV9nZW4odm9pZCkKIAlCVUlMRF9CVUdfT04oQklUKExSVV9HRU5fV0lEVEgpIDw9IE1BWF9O Ul9HRU5TKTsKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKE1NX1NUQVRfQ09ERVMpICE9IE5SX01NX1NU QVRTICsgMSk7CiAKKwlpZiAoc3lzZnNfY3JlYXRlX2dyb3VwKG1tX2tvYmosICZscnVfZ2VuX2F0 dHJfZ3JvdXApKQorCQlwcl9lcnIoImxydV9nZW46IGZhaWxlZCB0byBjcmVhdGUgc3lzZnMgZ3Jv dXBcbiIpOworCiAJcmV0dXJuIDA7CiB9OwogbGF0ZV9pbml0Y2FsbChpbml0X2xydV9nZW4pOwot LSAKMi4zNS4wLjI2My5nYjgyNDIyNjQyZi1nb29nCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=