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 C2D01C433F5 for ; Wed, 18 May 2022 03:01: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=UaK2dHhTv4Omu02TrUoU3Ce0jSkIYAL9VuZhHDSbhEk=; b=S7Aeckm4v+tNacg5XVcSNHBKoc r9Toy7alnxhy6HFLb5XPrxKn45ahJ2IKPiGyAnF5pGcaGvHapQXO0L2hGZ4nPi67Rf+/9S0XyOdGb tB6UDRUEJW59Izq8JJZlBWohNy1GgDXyUKT/Q1JWmtxYXpCKWajKTCdvsFpQaOh8I2yhaTwDeL5OK 5GZgWszK50b5SmWgLOGEXEh63tSMzxLUMvlFQehL1h9yUeIa2SmpfIqOoU/xY8zjjwwWYSsUiStwr FFHm5Yf8LApF/48mQ6V9HijQDDjeUf3hPzmf4Wnkp9YgyGjObZpwDtQ3QxCc+BrcOycRG8uQ8zqkt 3Gcj4LuA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr9vx-00Gm5I-JK; Wed, 18 May 2022 03:01:09 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr8mL-00Gd5A-LO for linux-arm-kernel@lists.infradead.org; Wed, 18 May 2022 01:47:14 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id m136-20020a25268e000000b0064b233e03d1so668169ybm.14 for ; Tue, 17 May 2022 18:47:08 -0700 (PDT) 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=NTA14FnCNnSPTudLkNszGIL3HdbMAT4nMBCkNLY5YRU=; b=dj/NUzQ7pldQ5p6qQOOz1M0rA++R2i0rkuA/pdh7gKHKfecCVVJbxlcKWafSRzT+io P2/TwGHl8GyP+Mg5hb/SV8E48PYJa7SyPhOeCh2WtveDGvIqR63kJBDvMBRon9bfxFwc cb+4Ti+w2hCv3EbKxHhCjMCuicPeQiavbDKafGr2N+HvVGBiBGlMin4TBHAZPvg5HWiV fsxaCDJXxWjs84OmU9+hKlIJ1ZEGHcKvSILfuBZ+lCwaenIW0SoaNOUqcU3H99tZA0Pp OpihneRVY05VI5/nix7QlSlUnp7oGxB689r8rUG7RiYvAjaJUxEm2rPSva5gOkSmMRqe EN5A== 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=NTA14FnCNnSPTudLkNszGIL3HdbMAT4nMBCkNLY5YRU=; b=naMk+loFdDzPebUJAm0QSNlBvhfNDXbG6442aAOcihDPbyIaSAfygyLDuetnpQIwBu TDtRxhEUIeTmNqxLBmrMpcPcobbqH9beZg1vAXZdpyYIC5K1h3zDbmfY4YjmnHGil4nf Frfq7xj7BmrEcBWxuYNxzLrUoeos0Gdl/hl96WGKBKqm80+Z0SadaJWdLZx5S0uOi1u+ yawx2m6f4gb2ddeNI8cFDbxisdUFZFgIZKz3QpgOjgDk3vd3uYGAEawwXd3j7TeqM9aD 09+92M1sgwsahutA695eSsi6OxPnkxLr2qgzMXmK0+wWUIMbnu9QKw7bGtUFGAxz5sfs oEWg== X-Gm-Message-State: AOAM532ah0Rg+qjSOA/sVleyckvkhuZ4P+/hbR+AjrOWlUh0LzrPpo3H VeaWuQsM+YKgwdX6YUeJvgYCi2NCQZY= X-Google-Smtp-Source: ABdhPJwTsKX58YMZjZU473qHcm2WfVL2bwxTclJIx+w2+3BMEn4WcPcuNwyIzbAE4LxodKTFVAQMvubt74g= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:f7bc:90c9:d86e:4ea8]) (user=yuzhao job=sendgmr) by 2002:a81:ac11:0:b0:2fe:ee45:c6bb with SMTP id k17-20020a81ac11000000b002feee45c6bbmr15371827ywh.427.1652838428578; Tue, 17 May 2022 18:47:08 -0700 (PDT) Date: Tue, 17 May 2022 19:46:29 -0600 In-Reply-To: <20220518014632.922072-1-yuzhao@google.com> Message-Id: <20220518014632.922072-11-yuzhao@google.com> Mime-Version: 1.0 References: <20220518014632.922072-1-yuzhao@google.com> X-Mailer: git-send-email 2.36.0.550.gb090851708-goog Subject: [PATCH v11 10/14] mm: multi-gen LRU: kill switch From: Yu Zhao To: Andrew Morton , linux-mm@kvack.org Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Peter Zijlstra , Tejun Heo , Vlastimil Babka , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, page-reclaim@google.com, 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 , Vaibhav Jain X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220517_184709_774746_7B887ADA X-CRM114-Status: GOOD ( 27.41 ) 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 QWRkIC9zeXMva2VybmVsL21tL2xydV9nZW4vZW5hYmxlZCBhcyBhIGtpbGwgc3dpdGNoLiBDb21w b25lbnRzIHRoYXQKY2FuIGJlIGRpc2FibGVkIGluY2x1ZGU6CiAgMHgwMDAxOiB0aGUgbXVsdGkt Z2VuIExSVSBjb3JlCiAgMHgwMDAyOiB3YWxraW5nIHBhZ2UgdGFibGUsIHdoZW4gYXJjaF9oYXNf aHdfcHRlX3lvdW5nKCkgcmV0dXJucwogICAgICAgICAgdHJ1ZQogIDB4MDAwNDogY2xlYXJpbmcg dGhlIGFjY2Vzc2VkIGJpdCBpbiBub24tbGVhZiBQTUQgZW50cmllcywgd2hlbgogICAgICAgICAg Q09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HPXkKICBbeVluTl06IGFwcGx5IHRvIGFs bCB0aGUgY29tcG9uZW50cyBhYm92ZQpFLmcuLAogIGVjaG8geSA+L3N5cy9rZXJuZWwvbW0vbHJ1 X2dlbi9lbmFibGVkCiAgY2F0IC9zeXMva2VybmVsL21tL2xydV9nZW4vZW5hYmxlZAogIDB4MDAw NwogIGVjaG8gNSA+L3N5cy9rZXJuZWwvbW0vbHJ1X2dlbi9lbmFibGVkCiAgY2F0IC9zeXMva2Vy bmVsL21tL2xydV9nZW4vZW5hYmxlZAogIDB4MDAwNQoKTkI6IHRoZSBwYWdlIHRhYmxlIHdhbGtz IGhhcHBlbiBvbiB0aGUgc2NhbGUgb2Ygc2Vjb25kcyB1bmRlciBoZWF2eQptZW1vcnkgcHJlc3N1 cmUsIGluIHdoaWNoIGNhc2UgdGhlIG1tYXBfbG9jayBjb250ZW50aW9uIGlzIGEgbGVzc2VyCmNv bmNlcm4sIGNvbXBhcmVkIHdpdGggdGhlIExSVSBsb2NrIGNvbnRlbnRpb24gYW5kIHRoZSBJL08g Y29uZ2VzdGlvbi4KU28gZmFyIHRoZSBvbmx5IHdlbGwta25vd24gY2FzZSBvZiB0aGUgbW1hcF9s b2NrIGNvbnRlbnRpb24gaGFwcGVucyBvbgpBbmRyb2lkLCBkdWUgdG8gU2N1ZG8gWzFdIHdoaWNo IGFsbG9jYXRlcyBzZXZlcmFsIHRob3VzYW5kIFZNQXMgZm9yCm1lcmVseSBhIGZldyBodW5kcmVk IE1Ccy4gVGhlIFNQRiBhbmQgdGhlIE1hcGxlIFRyZWUgYWxzbyBoYXZlCnByb3ZpZGVkIHRoZWly IG93biBhc3Nlc3NtZW50cyBbMl1bM10uIEhvd2V2ZXIsIGlmIHdhbGtpbmcgcGFnZSB0YWJsZXMK ZG9lcyB3b3JzZW4gdGhlIG1tYXBfbG9jayBjb250ZW50aW9uLCB0aGUga2lsbCBzd2l0Y2ggY2Fu IGJlIHVzZWQgdG8KZGlzYWJsZSBpdC4gSW4gdGhpcyBjYXNlIHRoZSBtdWx0aS1nZW4gTFJVIHdp bGwgc3VmZmVyIGEgbWlub3IKcGVyZm9ybWFuY2UgZGVncmFkYXRpb24sIGFzIHNob3duIHByZXZp b3VzbHkuCgpDbGVhcmluZyB0aGUgYWNjZXNzZWQgYml0IGluIG5vbi1sZWFmIFBNRCBlbnRyaWVz IGNhbiBhbHNvIGJlCmRpc2FibGVkLCBzaW5jZSB0aGlzIGJlaGF2aW9yIHdhcyBub3QgdGVzdGVk IG9uIHg4NiB2YXJpZXRpZXMgb3RoZXIKdGhhbiBJbnRlbCBhbmQgQU1ELgoKWzFdIGh0dHBzOi8v c291cmNlLmFuZHJvaWQuY29tL2RldmljZXMvdGVjaC9kZWJ1Zy9zY3VkbwpbMl0gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvci8yMDIyMDEyODEzMTAwNi42NzcxMi0xLW1pY2hlbEBsZXNwaW5hc3Nl Lm9yZy8KWzNdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyMjA0MjYxNTA2MTYuMzkzNzU3 MS0xLUxpYW0uSG93bGV0dEBvcmFjbGUuY29tLwoKU2lnbmVkLW9mZi1ieTogWXUgWmhhbyA8eXV6 aGFvQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBCcmlhbiBHZWZmb24gPGJnZWZmb25AZ29vZ2xlLmNv bT4KQWNrZWQtYnk6IEphbiBBbGV4YW5kZXIgU3RlZmZlbnMgKGhlZnRpZykgPGhlZnRpZ0BhcmNo bGludXgub3JnPgpBY2tlZC1ieTogT2xla3NhbmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFs ZW5rby5uYW1lPgpBY2tlZC1ieTogU3RldmVuIEJhcnJldHQgPHN0ZXZlbkBsaXF1b3JpeC5uZXQ+ CkFja2VkLWJ5OiBTdWxlaW1hbiBTb3VobGFsIDxzdWxlaW1hbkBnb29nbGUuY29tPgpUZXN0ZWQt Ynk6IERhbmllbCBCeXJuZSA8ZGpieXJuZUBtdHUuZWR1PgpUZXN0ZWQtYnk6IERvbmFsZCBDYXJy IDxkQGNoYW9zLXJlaW5zLmNvbT4KVGVzdGVkLWJ5OiBIb2xnZXIgSG9mZnN0w6R0dGUgPGhvbGdl ckBhcHBsaWVkLWFzeW5jaHJvbnkuY29tPgpUZXN0ZWQtYnk6IEtvbnN0YW50aW4gS2hhcmxhbW92 IDxIaS1BbmdlbEB5YW5kZXgucnU+ClRlc3RlZC1ieTogU2h1YW5nIFpoYWkgPHN6aGFpMkBjcy5y b2NoZXN0ZXIuZWR1PgpUZXN0ZWQtYnk6IFNvZmlhIFRyaW5oIDxzb2ZpYS50cmluaEBlZGkud29y a3M+ClRlc3RlZC1ieTogVmFpYmhhdiBKYWluIDx2YWliaGF2QGxpbnV4LmlibS5jb20+Ci0tLQog aW5jbHVkZS9saW51eC9jZ3JvdXAuaCAgICAgICAgICB8ICAxNSArLQogaW5jbHVkZS9saW51eC9t bV9pbmxpbmUuaCAgICAgICB8ICAxMiArLQogaW5jbHVkZS9saW51eC9tbXpvbmUuaCAgICAgICAg ICB8ICAgOSArKwoga2VybmVsL2Nncm91cC9jZ3JvdXAtaW50ZXJuYWwuaCB8ICAgMSAtCiBtbS9L Y29uZmlnICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIG1tL3Ztc2Nhbi5jICAgICAgICAg ICAgICAgICAgICAgfCAyMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDYgZmls ZXMgY2hhbmdlZCwgMjcyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9saW51eC9jZ3JvdXAuaCBiL2luY2x1ZGUvbGludXgvY2dyb3VwLmgKaW5kZXgg MGQxYWRhODk2OGQ3Li4xYmMwY2FiZjk5M2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY2dy b3VwLmgKKysrIGIvaW5jbHVkZS9saW51eC9jZ3JvdXAuaApAQCAtNDMyLDYgKzQzMiwxOCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX3B1dChzdHJ1Y3QgY2dyb3VwICpjZ3JwKQogCWNzc19w dXQoJmNncnAtPnNlbGYpOwogfQogCitleHRlcm4gc3RydWN0IG11dGV4IGNncm91cF9tdXRleDsK Kworc3RhdGljIGlubGluZSB2b2lkIGNncm91cF9sb2NrKHZvaWQpCit7CisJbXV0ZXhfbG9jaygm Y2dyb3VwX211dGV4KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNncm91cF91bmxvY2sodm9p ZCkKK3sKKwltdXRleF91bmxvY2soJmNncm91cF9tdXRleCk7Cit9CisKIC8qKgogICogdGFza19j c3Nfc2V0X2NoZWNrIC0gb2J0YWluIGEgdGFzaydzIGNzc19zZXQgd2l0aCBleHRyYSBhY2Nlc3Mg Y29uZGl0aW9ucwogICogQHRhc2s6IHRoZSB0YXNrIHRvIG9idGFpbiBjc3Nfc2V0IGZvcgpAQCAt NDQ2LDcgKzQ1OCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjZ3JvdXBfcHV0KHN0cnVjdCBjZ3Jv dXAgKmNncnApCiAgKiBhcyBsb2NrcyB1c2VkIGR1cmluZyB0aGUgY2dyb3VwX3N1YnN5czo6YXR0 YWNoKCkgbWV0aG9kcy4KICAqLwogI2lmZGVmIENPTkZJR19QUk9WRV9SQ1UKLWV4dGVybiBzdHJ1 Y3QgbXV0ZXggY2dyb3VwX211dGV4OwogZXh0ZXJuIHNwaW5sb2NrX3QgY3NzX3NldF9sb2NrOwog I2RlZmluZSB0YXNrX2Nzc19zZXRfY2hlY2sodGFzaywgX19jKQkJCQkJXAogCXJjdV9kZXJlZmVy ZW5jZV9jaGVjaygodGFzayktPmNncm91cHMsCQkJCVwKQEAgLTcwOCw2ICs3MTksOCBAQCBzdHJ1 Y3QgY2dyb3VwOwogc3RhdGljIGlubGluZSB1NjQgY2dyb3VwX2lkKGNvbnN0IHN0cnVjdCBjZ3Jv dXAgKmNncnApIHsgcmV0dXJuIDE7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBjc3NfZ2V0KHN0cnVj dCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQgY3NzX3B1 dChzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzKSB7fQorc3RhdGljIGlubGluZSB2b2lk IGNncm91cF9sb2NrKHZvaWQpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX3VubG9jayh2 b2lkKSB7fQogc3RhdGljIGlubGluZSBpbnQgY2dyb3VwX2F0dGFjaF90YXNrX2FsbChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmZyb20sCiAJCQkJCSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpIHsgcmV0dXJu IDA7IH0KIHN0YXRpYyBpbmxpbmUgaW50IGNncm91cHN0YXRzX2J1aWxkKHN0cnVjdCBjZ3JvdXBz dGF0cyAqc3RhdHMsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oIGIvaW5j bHVkZS9saW51eC9tbV9pbmxpbmUuaAppbmRleCA4NWZlNzg4MzI0MzYuLmQzZDdiN2JiMjk3ZCAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaAorKysgYi9pbmNsdWRlL2xpbnV4 L21tX2lubGluZS5oCkBAIC0xMDYsNyArMTA2LDE1IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUg ZW51bSBscnVfbGlzdCBmb2xpb19scnVfbGlzdChzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCiBzdGF0 aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9lbmFibGVkKHZvaWQpCiB7Ci0JcmV0dXJuIHRydWU7Cisj aWZkZWYgQ09ORklHX0xSVV9HRU5fRU5BQkxFRAorCURFQ0xBUkVfU1RBVElDX0tFWV9UUlVFKGxy dV9nZW5fY2Fwc1tOUl9MUlVfR0VOX0NBUFNdKTsKKworCXJldHVybiBzdGF0aWNfYnJhbmNoX2xp a2VseSgmbHJ1X2dlbl9jYXBzW0xSVV9HRU5fQ09SRV0pOworI2Vsc2UKKwlERUNMQVJFX1NUQVRJ Q19LRVlfRkFMU0UobHJ1X2dlbl9jYXBzW05SX0xSVV9HRU5fQ0FQU10pOworCisJcmV0dXJuIHN0 YXRpY19icmFuY2hfdW5saWtlbHkoJmxydV9nZW5fY2Fwc1tMUlVfR0VOX0NPUkVdKTsKKyNlbmRp ZgogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9pbl9mYXVsdCh2b2lkKQpAQCAtMjE5 LDcgKzIyNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBscnVfZ2VuX2FkZF9mb2xpbyhzdHJ1Y3Qg bHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sCiAKIAlWTV9XQVJOX09OX09OQ0Vf Rk9MSU8oZ2VuICE9IC0xLCBmb2xpbyk7CiAKLQlpZiAoZm9saW9fdGVzdF91bmV2aWN0YWJsZShm b2xpbykpCisJaWYgKGZvbGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pIHx8ICFscnVnZW4tPmVu YWJsZWQpCiAJCXJldHVybiBmYWxzZTsKIAkvKgogCSAqIFRoZXJlIGFyZSB0aHJlZSBjb21tb24g Y2FzZXMgZm9yIHRoaXMgcGFnZToKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW16b25lLmgg Yi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCmluZGV4IDZhYTcxNWEyZmVhMS4uMzcyYTdmNWE2ODI5 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oCisrKyBiL2luY2x1ZGUvbGludXgv bW16b25lLmgKQEAgLTM4Niw2ICszODYsMTMgQEAgZW51bSB7CiAJTFJVX0dFTl9GSUxFLAogfTsK IAorZW51bSB7CisJTFJVX0dFTl9DT1JFLAorCUxSVV9HRU5fTU1fV0FMSywKKwlMUlVfR0VOX05P TkxFQUZfWU9VTkcsCisJTlJfTFJVX0dFTl9DQVBTCit9OworCiAjZGVmaW5lIE1JTl9MUlVfQkFU Q0gJCUJJVFNfUEVSX0xPTkcKICNkZWZpbmUgTUFYX0xSVV9CQVRDSAkJKE1JTl9MUlVfQkFUQ0gg KiAxMjgpCiAKQEAgLTQyNyw2ICs0MzQsOCBAQCBzdHJ1Y3QgbHJ1X2dlbl9zdHJ1Y3QgewogCS8q IGNhbiBiZSBtb2RpZmllZCB3aXRob3V0IGhvbGRpbmcgdGhlIExSVSBsb2NrICovCiAJYXRvbWlj X2xvbmdfdCBldmljdGVkW05SX0hJU1RfR0VOU11bQU5PTl9BTkRfRklMRV1bTUFYX05SX1RJRVJT XTsKIAlhdG9taWNfbG9uZ190IHJlZmF1bHRlZFtOUl9ISVNUX0dFTlNdW0FOT05fQU5EX0ZJTEVd W01BWF9OUl9USUVSU107CisJLyogd2hldGhlciB0aGUgbXVsdGktZ2VuIExSVSBpcyBlbmFibGVk ICovCisJYm9vbCBlbmFibGVkOwogfTsKIAogZW51bSB7CmRpZmYgLS1naXQgYS9rZXJuZWwvY2dy b3VwL2Nncm91cC1pbnRlcm5hbC5oIGIva2VybmVsL2Nncm91cC9jZ3JvdXAtaW50ZXJuYWwuaApp bmRleCA2ZTM2ZTg1NGI1MTIuLjkyOWVkM2JmMWE3YyAxMDA2NDQKLS0tIGEva2VybmVsL2Nncm91 cC9jZ3JvdXAtaW50ZXJuYWwuaAorKysgYi9rZXJuZWwvY2dyb3VwL2Nncm91cC1pbnRlcm5hbC5o CkBAIC0xNjUsNyArMTY1LDYgQEAgc3RydWN0IGNncm91cF9tZ2N0eCB7CiAjZGVmaW5lIERFRklO RV9DR1JPVVBfTUdDVFgobmFtZSkJCQkJCQlcCiAJc3RydWN0IGNncm91cF9tZ2N0eCBuYW1lID0g Q0dST1VQX01HQ1RYX0lOSVQobmFtZSkKIAotZXh0ZXJuIHN0cnVjdCBtdXRleCBjZ3JvdXBfbXV0 ZXg7CiBleHRlcm4gc3BpbmxvY2tfdCBjc3Nfc2V0X2xvY2s7CiBleHRlcm4gc3RydWN0IGNncm91 cF9zdWJzeXMgKmNncm91cF9zdWJzeXNbXTsKIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGNncm91 cF9yb290czsKZGlmZiAtLWdpdCBhL21tL0tjb25maWcgYi9tbS9LY29uZmlnCmluZGV4IDBhZWFj YmQzMzYxYy4uNDI2ZWE1ZjU3ZDg4IDEwMDY0NAotLS0gYS9tbS9LY29uZmlnCisrKyBiL21tL0tj b25maWcKQEAgLTkxOCw2ICs5MTgsMTIgQEAgY29uZmlnIExSVV9HRU4KIAloZWxwCiAJICBBIGhp Z2ggcGVyZm9ybWFuY2UgTFJVIGltcGxlbWVudGF0aW9uIHRvIG92ZXJjb21taXQgbWVtb3J5Lgog Citjb25maWcgTFJVX0dFTl9FTkFCTEVECisJYm9vbCAiRW5hYmxlIGJ5IGRlZmF1bHQiCisJZGVw ZW5kcyBvbiBMUlVfR0VOCisJaGVscAorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgbXVsdGkt Z2VuIExSVSBieSBkZWZhdWx0LgorCiBjb25maWcgTFJVX0dFTl9TVEFUUwogCWJvb2wgIkZ1bGwg c3RhdHMgZm9yIGRlYnVnZ2luZyIKIAlkZXBlbmRzIG9uIExSVV9HRU4KZGlmZiAtLWdpdCBhL21t L3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggYTdlNzY4Njc1NzA3Li4wOWUyYzNlNmYyYmUg MTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC01Miw2ICs1Miw3 IEBACiAjaW5jbHVkZSA8bGludXgvcHNpLmg+CiAjaW5jbHVkZSA8bGludXgvcGFnZXdhbGsuaD4K ICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CiAK ICNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KICNpbmNsdWRlIDxhc20vZGl2NjQuaD4KQEAgLTI5 ODksNiArMjk5MCwxMiBAQCBzdGF0aWMgYm9vbCBjYW5fYWdlX2Fub25fcGFnZXMoc3RydWN0IHBn bGlzdF9kYXRhICpwZ2RhdCwKIAogI2lmZGVmIENPTkZJR19MUlVfR0VOCiAKKyNpZmRlZiBDT05G SUdfTFJVX0dFTl9FTkFCTEVECitERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9UUlVFKGxydV9nZW5f Y2FwcywgTlJfTFJVX0dFTl9DQVBTKTsKKyNlbHNlCitERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9G QUxTRShscnVfZ2VuX2NhcHMsIE5SX0xSVV9HRU5fQ0FQUyk7CisjZW5kaWYKKwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogICogICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZCBoZWxw ZXJzCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMzAwOSw2ICszMDE2LDE1IEBAIHN0YXRp YyBib29sIGNhbl9hZ2VfYW5vbl9wYWdlcyhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LAogCQlm b3IgKCh0eXBlKSA9IDA7ICh0eXBlKSA8IEFOT05fQU5EX0ZJTEU7ICh0eXBlKSsrKQlcCiAJCQlm b3IgKCh6b25lKSA9IDA7ICh6b25lKSA8IE1BWF9OUl9aT05FUzsgKHpvbmUpKyspCiAKK3N0YXRp YyBib29sIGdldF9jYXAoaW50IGNhcCkKK3sKKyNpZmRlZiBDT05GSUdfTFJVX0dFTl9FTkFCTEVE CisJcmV0dXJuIHN0YXRpY19icmFuY2hfbGlrZWx5KCZscnVfZ2VuX2NhcHNbY2FwXSk7CisjZWxz ZQorCXJldHVybiBzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZscnVfZ2VuX2NhcHNbY2FwXSk7Cisj ZW5kaWYKK30KKwogc3RhdGljIHN0cnVjdCBscnV2ZWMgKmdldF9scnV2ZWMoc3RydWN0IG1lbV9j Z3JvdXAgKm1lbWNnLCBpbnQgbmlkKQogewogCXN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBO T0RFX0RBVEEobmlkKTsKQEAgLTM4MTYsNyArMzgzMiw4IEBAIHN0YXRpYyB2b2lkIHdhbGtfcG1k X3JhbmdlX2xvY2tlZChwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIG5leHQsIHN0cnVjdCB2bV9h cmVhCiAJCQlnb3RvIG5leHQ7CiAKIAkJaWYgKCFwbWRfdHJhbnNfaHVnZShwbWRbaV0pKSB7Ci0J CQlpZiAoSVNfRU5BQkxFRChDT05GSUdfQVJDSF9IQVNfTk9OTEVBRl9QTURfWU9VTkcpKQorCQkJ aWYgKElTX0VOQUJMRUQoQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HKSAmJgorCQkJ ICAgIGdldF9jYXAoTFJVX0dFTl9OT05MRUFGX1lPVU5HKSkKIAkJCQlwbWRwX3Rlc3RfYW5kX2Ns ZWFyX3lvdW5nKHZtYSwgYWRkciwgcG1kICsgaSk7CiAJCQlnb3RvIG5leHQ7CiAJCX0KQEAgLTM5 MjYsMTAgKzM5NDMsMTIgQEAgc3RhdGljIHZvaWQgd2Fsa19wbWRfcmFuZ2UocHVkX3QgKnB1ZCwg dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCXdhbGstPm1tX3N0YXRz W01NX1BNRF9UT1RBTF0rKzsKIAogI2lmZGVmIENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9Z T1VORwotCQlpZiAoIXBtZF95b3VuZyh2YWwpKQotCQkJY29udGludWU7CisJCWlmIChnZXRfY2Fw KExSVV9HRU5fTk9OTEVBRl9ZT1VORykpIHsKKwkJCWlmICghcG1kX3lvdW5nKHZhbCkpCisJCQkJ Y29udGludWU7CiAKLQkJd2Fsa19wbWRfcmFuZ2VfbG9ja2VkKHB1ZCwgYWRkciwgdm1hLCBhcmdz LCAmcG9zKTsKKwkJCXdhbGtfcG1kX3JhbmdlX2xvY2tlZChwdWQsIGFkZHIsIHZtYSwgYXJncywg JnBvcyk7CisJCX0KICNlbmRpZgogCQlpZiAoIXdhbGstPmZvcmNlX3NjYW4gJiYgIXRlc3RfYmxv b21fZmlsdGVyKHdhbGstPmxydXZlYywgd2Fsay0+bWF4X3NlcSwgcG1kICsgaSkpCiAJCQljb250 aW51ZTsKQEAgLTQxNjIsNyArNDE4MSw3IEBAIHN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3Nl cShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgbWF4X3NlcSwKIAkgKiBoYW5k ZnVsIG9mIFBURXMuIFNwcmVhZGluZyB0aGUgd29yayBvdXQgb3ZlciBhIHBlcmlvZCBvZiB0aW1l IHVzdWFsbHkKIAkgKiBpcyBsZXNzIGVmZmljaWVudCwgYnV0IGl0IGF2b2lkcyBidXJzdHkgcGFn ZSBmYXVsdHMuCiAJICovCi0JaWYgKCFhcmNoX2hhc19od19wdGVfeW91bmcoKSkgeworCWlmICgh KGFyY2hfaGFzX2h3X3B0ZV95b3VuZygpICYmIGdldF9jYXAoTFJVX0dFTl9NTV9XQUxLKSkpIHsK IAkJc3VjY2VzcyA9IGl0ZXJhdGVfbW1fbGlzdF9ub3dhbGsobHJ1dmVjLCBtYXhfc2VxKTsKIAkJ Z290byBkb25lOwogCX0KQEAgLTQ4OTUsNiArNDkxNCwyMTEgQEAgc3RhdGljIHZvaWQgbHJ1X2dl bl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJv bCAqc2MKIAlibGtfZmluaXNoX3BsdWcoJnBsdWcpOwogfQogCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2hhbmdlCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitzdGF0aWMgYm9vbCBfX21heWJlX3VudXNlZCBzdGF0ZV9pc192YWxp ZChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJc3RydWN0IGxydV9nZW5fc3RydWN0ICpscnVn ZW4gPSAmbHJ1dmVjLT5scnVnZW47CisKKwlpZiAobHJ1Z2VuLT5lbmFibGVkKSB7CisJCWVudW0g bHJ1X2xpc3QgbHJ1OworCisJCWZvcl9lYWNoX2V2aWN0YWJsZV9scnUobHJ1KSB7CisJCQlpZiAo IWxpc3RfZW1wdHkoJmxydXZlYy0+bGlzdHNbbHJ1XSkpCisJCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfSBlbHNlIHsKKwkJaW50IGdlbiwgdHlwZSwgem9uZTsKKworCQlmb3JfZWFjaF9nZW5fdHlw ZV96b25lKGdlbiwgdHlwZSwgem9uZSkgeworCQkJaWYgKCFsaXN0X2VtcHR5KCZscnVnZW4tPmxp c3RzW2dlbl1bdHlwZV1bem9uZV0pKQorCQkJCXJldHVybiBmYWxzZTsKKworCQkJLyogdW5saWtl bHkgYnV0IG5vdCBhIGJ1ZyB3aGVuIHJlc2V0X2JhdGNoX3NpemUoKSBpcyBwZW5kaW5nICovCisJ CQlWTV9XQVJOX09OX09OQ0UobHJ1Z2VuLT5ucl9wYWdlc1tnZW5dW3R5cGVdW3pvbmVdKTsKKwkJ fQorCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBmaWxsX2V2aWN0YWJsZShz dHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJZW51bSBscnVfbGlzdCBscnU7CisJaW50IHJlbWFp bmluZyA9IE1BWF9MUlVfQkFUQ0g7CisKKwlmb3JfZWFjaF9ldmljdGFibGVfbHJ1KGxydSkgewor CQlpbnQgdHlwZSA9IGlzX2ZpbGVfbHJ1KGxydSk7CisJCWJvb2wgYWN0aXZlID0gaXNfYWN0aXZl X2xydShscnUpOworCQlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0gJmxydXZlYy0+bGlzdHNbbHJ1 XTsKKworCQl3aGlsZSAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKKwkJCWJvb2wgc3VjY2VzczsKKwkJ CXN0cnVjdCBmb2xpbyAqZm9saW8gPSBscnVfdG9fZm9saW8oaGVhZCk7CisKKwkJCVZNX1dBUk5f T05fT05DRV9GT0xJTyhmb2xpb190ZXN0X3VuZXZpY3RhYmxlKGZvbGlvKSwgZm9saW8pOworCQkJ Vk1fV0FSTl9PTl9PTkNFX0ZPTElPKGZvbGlvX3Rlc3RfYWN0aXZlKGZvbGlvKSAhPSBhY3RpdmUs IGZvbGlvKTsKKwkJCVZNX1dBUk5fT05fT05DRV9GT0xJTyhmb2xpb19pc19maWxlX2xydShmb2xp bykgIT0gdHlwZSwgZm9saW8pOworCQkJVk1fV0FSTl9PTl9PTkNFX0ZPTElPKGZvbGlvX2xydV9n ZW4oZm9saW8pICE9IC0xLCBmb2xpbyk7CisKKwkJCWxydXZlY19kZWxfZm9saW8obHJ1dmVjLCBm b2xpbyk7CisJCQlzdWNjZXNzID0gbHJ1X2dlbl9hZGRfZm9saW8obHJ1dmVjLCBmb2xpbywgZmFs c2UpOworCQkJVk1fV0FSTl9PTl9PTkNFKCFzdWNjZXNzKTsKKworCQkJaWYgKCEtLXJlbWFpbmlu ZykKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3Rh dGljIGJvb2wgZHJhaW5fZXZpY3RhYmxlKHN0cnVjdCBscnV2ZWMgKmxydXZlYykKK3sKKwlpbnQg Z2VuLCB0eXBlLCB6b25lOworCWludCByZW1haW5pbmcgPSBNQVhfTFJVX0JBVENIOworCisJZm9y X2VhY2hfZ2VuX3R5cGVfem9uZShnZW4sIHR5cGUsIHpvbmUpIHsKKwkJc3RydWN0IGxpc3RfaGVh ZCAqaGVhZCA9ICZscnV2ZWMtPmxydWdlbi5saXN0c1tnZW5dW3R5cGVdW3pvbmVdOworCisJCXdo aWxlICghbGlzdF9lbXB0eShoZWFkKSkgeworCQkJYm9vbCBzdWNjZXNzOworCQkJc3RydWN0IGZv bGlvICpmb2xpbyA9IGxydV90b19mb2xpbyhoZWFkKTsKKworCQkJVk1fV0FSTl9PTl9PTkNFX0ZP TElPKGZvbGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pLCBmb2xpbyk7CisJCQlWTV9XQVJOX09O X09OQ0VfRk9MSU8oZm9saW9fdGVzdF9hY3RpdmUoZm9saW8pLCBmb2xpbyk7CisJCQlWTV9XQVJO X09OX09OQ0VfRk9MSU8oZm9saW9faXNfZmlsZV9scnUoZm9saW8pICE9IHR5cGUsIGZvbGlvKTsK KwkJCVZNX1dBUk5fT05fT05DRV9GT0xJTyhmb2xpb196b25lbnVtKGZvbGlvKSAhPSB6b25lLCBm b2xpbyk7CisKKwkJCXN1Y2Nlc3MgPSBscnVfZ2VuX2RlbF9mb2xpbyhscnV2ZWMsIGZvbGlvLCBm YWxzZSk7CisJCQlWTV9XQVJOX09OX09OQ0UoIXN1Y2Nlc3MpOworCQkJbHJ1dmVjX2FkZF9mb2xp byhscnV2ZWMsIGZvbGlvKTsKKworCQkJaWYgKCEtLXJlbWFpbmluZykKKwkJCQlyZXR1cm4gZmFs c2U7CisJCX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgbHJ1X2dlbl9j aGFuZ2Vfc3RhdGUoYm9vbCBlbmFibGUpCit7CisJc3RhdGljIERFRklORV9NVVRFWChzdGF0ZV9t dXRleCk7CisKKwlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7CisKKwljZ3JvdXBfbG9jaygpOwor CWNwdXNfcmVhZF9sb2NrKCk7CisJZ2V0X29ubGluZV9tZW1zKCk7CisJbXV0ZXhfbG9jaygmc3Rh dGVfbXV0ZXgpOworCisJaWYgKGVuYWJsZSA9PSBscnVfZ2VuX2VuYWJsZWQoKSkKKwkJZ290byB1 bmxvY2s7CisKKwlpZiAoZW5hYmxlKQorCQlzdGF0aWNfYnJhbmNoX2VuYWJsZV9jcHVzbG9ja2Vk KCZscnVfZ2VuX2NhcHNbTFJVX0dFTl9DT1JFXSk7CisJZWxzZQorCQlzdGF0aWNfYnJhbmNoX2Rp c2FibGVfY3B1c2xvY2tlZCgmbHJ1X2dlbl9jYXBzW0xSVV9HRU5fQ09SRV0pOworCisJbWVtY2cg PSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgTlVMTCwgTlVMTCk7CisJZG8geworCQlpbnQgbmlkOwor CisJCWZvcl9lYWNoX25vZGUobmlkKSB7CisJCQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSBnZXRf bHJ1dmVjKG1lbWNnLCBuaWQpOworCisJCQlpZiAoIWxydXZlYykKKwkJCQljb250aW51ZTsKKwor CQkJc3Bpbl9sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9jayk7CisKKwkJCVZNX1dBUk5fT05fT05D RSghc2VxX2lzX3ZhbGlkKGxydXZlYykpOworCQkJVk1fV0FSTl9PTl9PTkNFKCFzdGF0ZV9pc192 YWxpZChscnV2ZWMpKTsKKworCQkJbHJ1dmVjLT5scnVnZW4uZW5hYmxlZCA9IGVuYWJsZTsKKwor CQkJd2hpbGUgKCEoZW5hYmxlID8gZmlsbF9ldmljdGFibGUobHJ1dmVjKSA6IGRyYWluX2V2aWN0 YWJsZShscnV2ZWMpKSkgeworCQkJCXNwaW5fdW5sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9jayk7 CisJCQkJY29uZF9yZXNjaGVkKCk7CisJCQkJc3Bpbl9sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9j ayk7CisJCQl9CisKKwkJCXNwaW5fdW5sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9jayk7CisJCX0K KworCQljb25kX3Jlc2NoZWQoKTsKKwl9IHdoaWxlICgobWVtY2cgPSBtZW1fY2dyb3VwX2l0ZXIo TlVMTCwgbWVtY2csIE5VTEwpKSk7Cit1bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZzdGF0ZV9tdXRl eCk7CisJcHV0X29ubGluZV9tZW1zKCk7CisJY3B1c19yZWFkX3VubG9jaygpOworCWNncm91cF91 bmxvY2soKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAg ICAgICAgICAgIHN5c2ZzIGludGVyZmFjZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3Rh dGljIHNzaXplX3Qgc2hvd19lbmFibGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2Jq X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXVuc2lnbmVkIGludCBjYXBzID0gMDsK KworCWlmIChnZXRfY2FwKExSVV9HRU5fQ09SRSkpCisJCWNhcHMgfD0gQklUKExSVV9HRU5fQ09S RSk7CisKKwlpZiAoYXJjaF9oYXNfaHdfcHRlX3lvdW5nKCkgJiYgZ2V0X2NhcChMUlVfR0VOX01N X1dBTEspKQorCQljYXBzIHw9IEJJVChMUlVfR0VOX01NX1dBTEspOworCisJaWYgKElTX0VOQUJM RUQoQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HKSAmJiBnZXRfY2FwKExSVV9HRU5f Tk9OTEVBRl9ZT1VORykpCisJCWNhcHMgfD0gQklUKExSVV9HRU5fTk9OTEVBRl9ZT1VORyk7CisK KwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIweCUwNHhcbiIsIGNhcHMpOworfQor CitzdGF0aWMgc3NpemVfdCBzdG9yZV9lbmFibGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVj dCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBs ZW4pCit7CisJaW50IGk7CisJdW5zaWduZWQgaW50IGNhcHM7CisKKwlpZiAodG9sb3dlcigqYnVm KSA9PSAnbicpCisJCWNhcHMgPSAwOworCWVsc2UgaWYgKHRvbG93ZXIoKmJ1ZikgPT0gJ3knKQor CQljYXBzID0gLTE7CisJZWxzZSBpZiAoa3N0cnRvdWludChidWYsIDAsICZjYXBzKSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlJfTFJVX0dFTl9DQVBTOyBpKyspIHsK KwkJYm9vbCBlbmFibGUgPSBjYXBzICYgQklUKGkpOworCisJCWlmIChpID09IExSVV9HRU5fQ09S RSkKKwkJCWxydV9nZW5fY2hhbmdlX3N0YXRlKGVuYWJsZSk7CisJCWVsc2UgaWYgKGVuYWJsZSkK KwkJCXN0YXRpY19icmFuY2hfZW5hYmxlKCZscnVfZ2VuX2NhcHNbaV0pOworCQllbHNlCisJCQlz dGF0aWNfYnJhbmNoX2Rpc2FibGUoJmxydV9nZW5fY2Fwc1tpXSk7CisJfQorCisJcmV0dXJuIGxl bjsKK30KKworc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBscnVfZ2VuX2VuYWJsZWRfYXR0 ciA9IF9fQVRUUigKKwllbmFibGVkLCAwNjQ0LCBzaG93X2VuYWJsZSwgc3RvcmVfZW5hYmxlCisp OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbHJ1X2dlbl9hdHRyc1tdID0geworCSZscnVf Z2VuX2VuYWJsZWRfYXR0ci5hdHRyLAorCU5VTEwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGxydV9nZW5fYXR0cl9ncm91cCA9IHsKKwkubmFtZSA9ICJscnVfZ2VuIiwKKwku YXR0cnMgPSBscnVfZ2VuX2F0dHJzLAorfTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICog ICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwpAQCAtNDkwNSw2ICs1MTI5LDcgQEAgdm9pZCBscnVfZ2VuX2luaXRfbHJ1dmVjKHN0 cnVjdCBscnV2ZWMgKmxydXZlYykKIAlzdHJ1Y3QgbHJ1X2dlbl9zdHJ1Y3QgKmxydWdlbiA9ICZs cnV2ZWMtPmxydWdlbjsKIAogCWxydWdlbi0+bWF4X3NlcSA9IE1JTl9OUl9HRU5TICsgMTsKKwls cnVnZW4tPmVuYWJsZWQgPSBscnVfZ2VuX2VuYWJsZWQoKTsKIAogCWZvcl9lYWNoX2dlbl90eXBl X3pvbmUoZ2VuLCB0eXBlLCB6b25lKQogCQlJTklUX0xJU1RfSEVBRCgmbHJ1Z2VuLT5saXN0c1tn ZW5dW3R5cGVdW3pvbmVdKTsKQEAgLTQ5NDUsNiArNTE3MCw5IEBAIHN0YXRpYyBpbnQgX19pbml0 IGluaXRfbHJ1X2dlbih2b2lkKQogCUJVSUxEX0JVR19PTihCSVQoTFJVX0dFTl9XSURUSCkgPD0g TUFYX05SX0dFTlMpOwogCUJVSUxEX0JVR19PTihzaXplb2YoTU1fU1RBVF9DT0RFUykgIT0gTlJf TU1fU1RBVFMgKyAxKTsKIAorCWlmIChzeXNmc19jcmVhdGVfZ3JvdXAobW1fa29iaiwgJmxydV9n ZW5fYXR0cl9ncm91cCkpCisJCXByX2VycigibHJ1X2dlbjogZmFpbGVkIHRvIGNyZWF0ZSBzeXNm cyBncm91cFxuIik7CisKIAlyZXR1cm4gMDsKIH07CiBsYXRlX2luaXRjYWxsKGluaXRfbHJ1X2dl bik7Ci0tIAoyLjM2LjAuNTUwLmdiMDkwODUxNzA4LWdvb2cKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==