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=-12.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MISSING_HEADERS,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 378B9C4363D for ; Wed, 30 Sep 2020 22:23:47 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 71CB920719 for ; Wed, 30 Sep 2020 22:23:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="AIPrEynw"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="uc1lC+BR" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 71CB920719 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:From:Subject:References:Mime-Version:Message-Id: In-Reply-To:Date:Reply-To:To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=3oL1gX81aggSS9ez3uSNSXNxR9nsv9zVuDA12PI0iko=; b=AIPrEynwmNplz1zvp5bfT71LO AT0XQ9PJUUC5TpkcVAJkg10aA/MTgXonH3SEpGyf86skL5QSE8ymZnsOVC3UBawDZNOSu/FGQ1Cd5 Cy4U6t0Spsw/RbDbm7T4pH4vNVsjb1CeiAPsTLkEc4mIjDDghkPglOPQr3isv56Z/4e3OVrlFJA5s CwNBIky5++/5vB8nlQgYiLlg7wfNaq++3Eja53Bkak18Fe9ZVhOzgS5F7i/3az9BGcVq8520L5P30 21EccdS1uhMWMIbxmfrkFlZu8YMRNKoiEawo/DkgWNTSSjR+DBLVU6nVPBgDR1AP23p7jqh3zU6RJ IHo6JT8lw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNkUM-0006Ir-CN; Wed, 30 Sep 2020 22:22:18 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNkUI-0006EZ-OQ for linux-arm-kernel@lists.infradead.org; Wed, 30 Sep 2020 22:22:16 +0000 Received: by mail-yb1-xb49.google.com with SMTP id r9so3166762ybd.20 for ; Wed, 30 Sep 2020 15:22:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:in-reply-to:message-id:mime-version:references:subject :from:cc:content-transfer-encoding; bh=5bHwRAkIFgRUKgngW4gcP068wEdPRj/cA85ER5ge5+w=; b=uc1lC+BRciNCCenfHEg9UpdZN5PsHA6dts/eMegcTHFRbNmxAt+14yp2sd85qBnhWS /iQ6LFsh4BgYcnuYARjFzrcEz/ZOnAaRHA8vceh6iMmgL2CcCA1ShQXN6A0EkeRzto87 XP2ahfz3G1rWtHeMk2Iie02Bh5Bh0tv3f3+acB7crNXPg47WZEE6HxKCeN+Ddv1yICAG sReM4qnVO2nhs3CV0JpJOlQduy3bOPn+tHSdXaPjkP+C6Geq901I1kmdC3Y2kNiZU8q4 1q6YqqR+HGbk++rIzTfi4ZkgncraaFN0QqjeC/1v+W4BQT1+gF6vukHux4c1ngvQ68DW nFBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:in-reply-to:message-id:mime-version :references:subject:from:cc:content-transfer-encoding; bh=5bHwRAkIFgRUKgngW4gcP068wEdPRj/cA85ER5ge5+w=; b=AsRC+KYCVL6e5BaKr0xbeipxAssVS1P+S7zaB/zNLMxX6t4j1qOFhTH96eokP+lpQc XmDdyOkDOBEyHXx5atGHQ1S9sw8IxZwi8eBq69yGetl2qs7WoYggipeKcja4zccrS8HW ngGKB/BS+mSmlmC2sqzGGurK47PIXgjBhZHPH5w82cuaS3jE6secz+2DpCZr6xMB4h+V UNteT1xow50HIged9DSorn7+ZorL43dxXMRAOQkSMg0iz2OliUmHHI+kWyG/R10HNSjC iREPsxavaogLvfhKoKuHyILPdx8bQ2S58BZTZhkfy2fbk1NiNgvaTVMizD5+pvRdRKff kzFw== X-Gm-Message-State: AOAM532YIO1vzOQ1lh+9NcN3cmUU6ccdcN8TVngdEm593MZ0OfHBZkQi SD+1JZ6+ctw3e3cmxyfcWGOxhl0HV7e0ykztrw== X-Google-Smtp-Source: ABdhPJwBYpAmlRALKHYyir3OblZbIEhsgUn0acpHu8aRfQEb5kag4nDCQqATpwKZEagaltStuNxSB3SptnIGiDEZdw== X-Received: from kaleshsingh.c.googlers.com ([fda3:e722:ac3:10:14:4d90:c0a8:2145]) (user=kaleshsingh job=sendgmr) by 2002:a25:5d8:: with SMTP id 207mr6822598ybf.444.1601504527236; Wed, 30 Sep 2020 15:22:07 -0700 (PDT) Date: Wed, 30 Sep 2020 22:21:20 +0000 In-Reply-To: <20200930222130.4175584-1-kaleshsingh@google.com> Message-Id: <20200930222130.4175584-4-kaleshsingh@google.com> Mime-Version: 1.0 References: <20200930222130.4175584-1-kaleshsingh@google.com> X-Mailer: git-send-email 2.28.0.709.gb0816b6eb0-goog Subject: [PATCH 3/5] mm: Speedup mremap on 1GB or larger regions From: Kalesh Singh X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200930_182214_824600_5558674A X-CRM114-Status: GOOD ( 27.11 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: joelaf@google.com, Mark Rutland , Gavin Shan , Brian Geffon , Peter Zijlstra , Catalin Marinas , kaleshsingh@google.com, Ram Pai , linux-mm@kvack.org, Dave Hansen , Will Deacon , lokeshgidra@google.com, linux-kselftest@vger.kernel.org, "H. Peter Anvin" , Christian Brauner , Shuah Khan , Mina Almasry , Jia He , Arnd Bergmann , "Aneesh Kumar K.V" , Masahiro Yamada , x86@kernel.org, Krzysztof Kozlowski , Ingo Molnar , Sami Tolvanen , kernel-team@android.com, Hassan Naveed , Masami Hiramatsu , Ralph Campbell , Kees Cook , minchan@google.com, Zhenyu Ye , John Hubbard , Frederic Weisbecker , Mark Brown , Borislav Petkov , Thomas Gleixner , surenb@google.com, linux-arm-kernel@lists.infradead.org, Chris von Recklinghausen , William Kucharski , Stephen Boyd , SeongJae Park , linux-kernel@vger.kernel.org, "Kirill A. Shutemov" , Andrew Morton , Mike Rapoport , Sandipan Das 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 QW5kcm9pZCBuZWVkcyB0byBtb3ZlIGxhcmdlIG1lbW9yeSByZWdpb25zIGZvciBnYXJiYWdlIGNv bGxlY3Rpb24uCk9wdGltaXplIG1yZW1hcCBmb3IgPj0gMUdCLXNpemVkIHJlZ2lvbnMgYnkgbW92 aW5nIGF0IHRoZSBQVUQvUEdECmxldmVsIGlmIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFk ZHJlc3NlcyBhcmUgUFVELWFsaWduZWQuCkZvciBDT05GSUdfUEdUQUJMRV9MRVZFTFMgPT0gMywg bW92aW5nIGF0IHRoZSBQVUQgbGV2ZWwgaW4gZWZmZWN0IG1vdmVzClBHRCBlbnRyaWVzLCBzaW5j ZSB0aGUgUFVEIGVudHJ5IGlzIOKAnGZvbGRlZCBiYWNr4oCdIG9udG8gdGhlIFBHRCBlbnRyeS4K QWRkIEhBVkVfTU9WRV9QVUQgc28gdGhhdCBhcmNoaXRlY3R1cmVzIHdoZXJlIG1vdmluZyBhdCB0 aGUgUFVEIGxldmVsCmlzbid0IHN1cHBvcnRlZC90ZXN0ZWQgY2FuIHR1cm4gdGhpcyBvZmYgYnkg bm90IHNlbGVjdGluZyB0aGUgY29uZmlnLgoKU2lnbmVkLW9mZi1ieTogS2FsZXNoIFNpbmdoIDxr YWxlc2hzaW5naEBnb29nbGUuY29tPgotLS0KIGFyY2gvS2NvbmZpZyAgICAgICAgICAgICAgICAg ICAgIHwgICA3ICsKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oIHwgICAxICsKIG1t L21yZW1hcC5jICAgICAgICAgICAgICAgICAgICAgIHwgMjExICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDMwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvS2NvbmZpZyBiL2FyY2gvS2NvbmZpZwppbmRleCBh ZjE0YTU2N2I0OTMuLjVlYWJhYTAwYmY5YiAxMDA2NDQKLS0tIGEvYXJjaC9LY29uZmlnCisrKyBi L2FyY2gvS2NvbmZpZwpAQCAtNjAyLDYgKzYwMiwxMyBAQCBjb25maWcgSEFWRV9JUlFfVElNRV9B Q0NPVU5USU5HCiAJICBBcmNocyBuZWVkIHRvIGVuc3VyZSB0aGV5IHVzZSBhIGhpZ2ggZW5vdWdo IHJlc29sdXRpb24gY2xvY2sgdG8KIAkgIHN1cHBvcnQgaXJxIHRpbWUgYWNjb3VudGluZyBhbmQg dGhlbiBjYWxsIGVuYWJsZV9zY2hlZF9jbG9ja19pcnF0aW1lKCkuCiAKK2NvbmZpZyBIQVZFX01P VkVfUFVECisJYm9vbAorCWhlbHAKKwkgIEFyY2hpdGVjdHVyZXMgdGhhdCBzZWxlY3QgdGhpcyBh cmUgYWJsZSB0byBtb3ZlIHBhZ2UgdGFibGVzIGF0IHRoZQorCSAgUFVEIGxldmVsLiBJZiB0aGVy ZSBhcmUgb25seSAzIHBhZ2UgdGFibGUgbGV2ZWxzLCB0aGUgbW92ZSBlZmZlY3RpdmVseQorCSAg aGFwcGVucyBhdCB0aGUgUEdEIGxldmVsLgorCiBjb25maWcgSEFWRV9NT1ZFX1BNRAogCWJvb2wK IAloZWxwCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2Fy Y2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCmluZGV4IGQ1ZDNmYmU3Mzk1My4uODg0ODEy NWUzMDI0IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAorKysg Yi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtNDE1LDYgKzQxNSw3IEBAIHN0 YXRpYyBpbmxpbmUgcG1kX3QgcG1kX21rZGV2bWFwKHBtZF90IHBtZCkKICNkZWZpbmUgcGZuX3B1 ZChwZm4scHJvdCkJX19wdWQoX19waHlzX3RvX3B1ZF92YWwoKHBoeXNfYWRkcl90KShwZm4pIDw8 IFBBR0VfU0hJRlQpIHwgcGdwcm90X3ZhbChwcm90KSkKIAogI2RlZmluZSBzZXRfcG1kX2F0KG1t LCBhZGRyLCBwbWRwLCBwbWQpCXNldF9wdGVfYXQobW0sIGFkZHIsIChwdGVfdCAqKXBtZHAsIHBt ZF9wdGUocG1kKSkKKyNkZWZpbmUgc2V0X3B1ZF9hdChtbSwgYWRkciwgcHVkcCwgcHVkKQlzZXRf cHRlX2F0KG1tLCBhZGRyLCAocHRlX3QgKilwdWRwLCBwdWRfcHRlKHB1ZCkpCiAKICNkZWZpbmUg X19wNGRfdG9fcGh5cyhwNGQpCV9fcHRlX3RvX3BoeXMocDRkX3B0ZShwNGQpKQogI2RlZmluZSBf X3BoeXNfdG9fcDRkX3ZhbChwaHlzKQlfX3BoeXNfdG9fcHRlX3ZhbChwaHlzKQpkaWZmIC0tZ2l0 IGEvbW0vbXJlbWFwLmMgYi9tbS9tcmVtYXAuYwppbmRleCAxMzhhYmJhZTRmNzUuLmE1YTE0NDBi ZDM2NiAxMDA2NDQKLS0tIGEvbW0vbXJlbWFwLmMKKysrIGIvbW0vbXJlbWFwLmMKQEAgLTI0OSwx NCArMjQ5LDE2NyBAQCBzdGF0aWMgYm9vbCBtb3ZlX25vcm1hbF9wbWQoc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsCiAKIAlyZXR1cm4gdHJ1ZTsKIH0K KyNlbHNlCitzdGF0aWMgaW5saW5lIGJvb2wgbW92ZV9ub3JtYWxfcG1kKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLAorCQkgIHVuc2lnbmVkIGxvbmcg bmV3X2FkZHIsIHBtZF90ICpvbGRfcG1kLCBwbWRfdCAqbmV3X3BtZCkKK3sKKwlyZXR1cm4gZmFs c2U7Cit9CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19IQVZFX01PVkVfUFVECitzdGF0aWMgcHVk X3QgKmdldF9vbGRfcHVkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIp Cit7CisJcGdkX3QgKnBnZDsKKwlwNGRfdCAqcDRkOworCXB1ZF90ICpwdWQ7CisKKwlwZ2QgPSBw Z2Rfb2Zmc2V0KG1tLCBhZGRyKTsKKwlpZiAocGdkX25vbmVfb3JfY2xlYXJfYmFkKHBnZCkpCisJ CXJldHVybiBOVUxMOworCisJcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpOworCWlmIChwNGRf bm9uZV9vcl9jbGVhcl9iYWQocDRkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlwdWQgPSBwdWRfb2Zm c2V0KHA0ZCwgYWRkcik7CisJaWYgKHB1ZF9ub25lX29yX2NsZWFyX2JhZChwdWQpKQorCQlyZXR1 cm4gTlVMTDsKKworCXJldHVybiBwdWQ7Cit9CisKK3N0YXRpYyBwdWRfdCAqYWxsb2NfbmV3X3B1 ZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJCQkg ICAgdW5zaWduZWQgbG9uZyBhZGRyKQoreworCXBnZF90ICpwZ2Q7CisJcDRkX3QgKnA0ZDsKKwlw dWRfdCAqcHVkOworCisJcGdkID0gcGdkX29mZnNldChtbSwgYWRkcik7CisJcDRkID0gcDRkX2Fs bG9jKG1tLCBwZ2QsIGFkZHIpOworCWlmICghcDRkKQorCQlyZXR1cm4gTlVMTDsKKwlwdWQgPSBw dWRfYWxsb2MobW0sIHA0ZCwgYWRkcik7CisJaWYgKCFwdWQpCisJCXJldHVybiBOVUxMOworCisJ cmV0dXJuIHB1ZDsKK30KKworc3RhdGljIGJvb2wgbW92ZV9ub3JtYWxfcHVkKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLAorCQkgIHVuc2lnbmVkIGxv bmcgbmV3X2FkZHIsIHB1ZF90ICpvbGRfcHVkLCBwdWRfdCAqbmV3X3B1ZCkKK3sKKwlzcGlubG9j a190ICpvbGRfcHRsLCAqbmV3X3B0bDsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IHZtYS0+dm1f bW07CisJcHVkX3QgcHVkOworCisJLyoKKwkgKiBUaGUgZGVzdGluYXRpb24gcHVkIHNob3VsZG4n dCBiZSBlc3RhYmxpc2hlZCwgZnJlZV9wZ3RhYmxlcygpCisJICogc2hvdWxkIGhhdmUgcmVsZWFz ZWQgaXQuCisJICovCisJaWYgKFdBUk5fT05fT05DRSghcHVkX25vbmUoKm5ld19wdWQpKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBXZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRo ZSBvcmRlcmluZyBvZiBzcmMgYW5kIGRzdAorCSAqIHB0bG9ja3MgYmVjYXVzZSBleGNsdXNpdmUg bW1hcF9sb2NrIHByZXZlbnRzIGRlYWRsb2NrLgorCSAqLworCW9sZF9wdGwgPSBwdWRfbG9jayh2 bWEtPnZtX21tLCBvbGRfcHVkKTsKKwluZXdfcHRsID0gcHVkX2xvY2twdHIobW0sIG5ld19wdWQp OworCWlmIChuZXdfcHRsICE9IG9sZF9wdGwpCisJCXNwaW5fbG9ja19uZXN0ZWQobmV3X3B0bCwg U0lOR0xFX0RFUFRIX05FU1RJTkcpOworCisJLyogQ2xlYXIgdGhlIHB1ZCAqLworCXB1ZCA9ICpv bGRfcHVkOworCXB1ZF9jbGVhcihvbGRfcHVkKTsKKworCVZNX0JVR19PTighcHVkX25vbmUoKm5l d19wdWQpKTsKKworCS8qIFNldCB0aGUgbmV3IHB1ZCAqLworCXNldF9wdWRfYXQobW0sIG5ld19h ZGRyLCBuZXdfcHVkLCBwdWQpOworCWZsdXNoX3RsYl9yYW5nZSh2bWEsIG9sZF9hZGRyLCBvbGRf YWRkciArIFBVRF9TSVpFKTsKKwlpZiAobmV3X3B0bCAhPSBvbGRfcHRsKQorCQlzcGluX3VubG9j ayhuZXdfcHRsKTsKKwlzcGluX3VubG9jayhvbGRfcHRsKTsKKworCXJldHVybiB0cnVlOworfQor I2Vsc2UKK3N0YXRpYyBpbmxpbmUgYm9vbCBtb3ZlX25vcm1hbF9wdWQoc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsCisJCSAgdW5zaWduZWQgbG9uZyBu ZXdfYWRkciwgcHVkX3QgKm9sZF9wdWQsIHB1ZF90ICpuZXdfcHVkKQoreworCXJldHVybiBmYWxz ZTsKK30KKyNlbmRpZgorCitlbnVtIHBndF9lbnRyeSB7CisJTk9STUFMX1BNRCwKKwlIUEFHRV9Q TUQsCisJTk9STUFMX1BVRCwKK307CisKKy8qCisgKiBSZXR1cm5zIGFuIGV4dGVudCBvZiB0aGUg Y29ycmVzcG9uZGluZyBzaXplIGZvciB0aGUgcGd0X2VudHJ5IHNwZWNpZmllZCBpZiB2YWxpZC4K KyAqIEVsc2UgcmV0dXJucyBhIHNtYWxsZXIgZXh0ZW50IGJvdW5kZWQgYnkgdGhlIGVuZCBvZiB0 aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbgorICogcGd0X2VudHJ5LiBSZXR1cm5zIDAgaWYgYW4g aW52YWxpZCBwZ3RfZW50cnkgaXMgc3BlY2lmaWVkLgorICovCitzdGF0aWMgdW5zaWduZWQgbG9u ZyBnZXRfZXh0ZW50KGVudW0gcGd0X2VudHJ5IGVudHJ5LCB1bnNpZ25lZCBsb25nIG9sZF9hZGRy LAorCQkJdW5zaWduZWQgbG9uZyBvbGRfZW5kLCB1bnNpZ25lZCBsb25nIG5ld19hZGRyKQorewor CXVuc2lnbmVkIGxvbmcgbmV4dCwgZXh0ZW50LCBtYXNrLCBzaXplOworCisJaWYgKGVudHJ5ID09 IE5PUk1BTF9QTUQgfHwgZW50cnkgPT0gSFBBR0VfUE1EKSB7CisJCW1hc2sgPSBQTURfTUFTSzsK KwkJc2l6ZSA9IFBNRF9TSVpFOworCX0gZWxzZSBpZiAoZW50cnkgPT0gTk9STUFMX1BVRCkgewor CQltYXNrID0gUFVEX01BU0s7CisJCXNpemUgPSBQVURfU0laRTsKKwl9IGVsc2UKKwkJcmV0dXJu IDA7CisKKwluZXh0ID0gKG9sZF9hZGRyICsgc2l6ZSkgJiBtYXNrOworCS8qIGV2ZW4gaWYgbmV4 dCBvdmVyZmxvd2VkLCBleHRlbnQgYmVsb3cgd2lsbCBiZSBvayAqLworCWV4dGVudCA9IChuZXh0 ID4gb2xkX2VuZCkgPyBvbGRfZW5kIC0gb2xkX2FkZHIgOiBuZXh0IC0gb2xkX2FkZHI7CisJbmV4 dCA9IChuZXdfYWRkciArIHNpemUpICYgbWFzazsKKwlpZiAoZXh0ZW50ID4gbmV4dCAtIG5ld19h ZGRyKQorCQlleHRlbnQgPSBuZXh0IC0gbmV3X2FkZHI7CisJcmV0dXJuIGV4dGVudDsKK30KKwor LyoKKyAqIEF0dGVtcHRzIHRvIHNwZWVkdXAgdGhlIG1vdmUgYnkgbW92aW5nIGVudHJ5IGF0IHRo ZSBsZXZlbCBjb3JyZXNwb25kaW5nIHRvCisgKiBwZ3RfZW50cnkuIFJldHVybnMgdHJ1ZSBpZiB0 aGUgbW92ZSB3YXMgc3VjY2Vzc2Z1bCwgZWxzZSBmYWxzZS4KKyAqLworc3RhdGljIGJvb2wgbW92 ZV9wZ3RfZW50cnkoZW51bSBwZ3RfZW50cnkgZW50cnksIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hLAorCQkJdW5zaWduZWQgbG9uZyBvbGRfYWRkciwgdW5zaWduZWQgbG9uZyBuZXdfYWRkciwg dm9pZCAqb2xkX2VudHJ5LAorCQkJdm9pZCAqbmV3X2VudHJ5LCBib29sIG5lZWRfcm1hcF9sb2Nr cykKK3sKKwlib29sIG1vdmVkID0gZmFsc2U7CisKKwkvKiBTZWUgY29tbWVudCBpbiBtb3ZlX3B0 ZXMoKSAqLworCWlmIChuZWVkX3JtYXBfbG9ja3MpCisJCXRha2Vfcm1hcF9sb2Nrcyh2bWEpOwor CWlmIChlbnRyeSA9PSBOT1JNQUxfUE1EKQorCQltb3ZlZCA9ICBtb3ZlX25vcm1hbF9wbWQodm1h LCBvbGRfYWRkciwgbmV3X2FkZHIsIG9sZF9lbnRyeSwgbmV3X2VudHJ5KTsKKwllbHNlIGlmIChl bnRyeSA9PSBOT1JNQUxfUFVEKQorCQltb3ZlZCA9ICBtb3ZlX25vcm1hbF9wdWQodm1hLCBvbGRf YWRkciwgbmV3X2FkZHIsIG9sZF9lbnRyeSwgbmV3X2VudHJ5KTsKKwllbHNlIGlmIChlbnRyeSA9 PSBIUEFHRV9QTUQpCisJCW1vdmVkID0gIG1vdmVfaHVnZV9wbWQodm1hLCBvbGRfYWRkciwgbmV3 X2FkZHIsIG9sZF9lbnRyeSwgbmV3X2VudHJ5KTsKKwllbHNlCisJCVdBUk5fT05fT05DRSgxKTsK KwlpZiAobmVlZF9ybWFwX2xvY2tzKQorCQlkcm9wX3JtYXBfbG9ja3Modm1hKTsKKworCXJldHVy biBtb3ZlZDsKK30KKwogdW5zaWduZWQgbG9uZyBtb3ZlX3BhZ2VfdGFibGVzKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLAogCQl1bnNpZ25lZCBsb25nIG9sZF9hZGRyLCBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKm5ld192bWEsCiAJCXVuc2lnbmVkIGxvbmcgbmV3X2FkZHIsIHVuc2lnbmVkIGxv bmcgbGVuLAogCQlib29sIG5lZWRfcm1hcF9sb2NrcykKIHsKLQl1bnNpZ25lZCBsb25nIGV4dGVu dCwgbmV4dCwgb2xkX2VuZDsKKwl1bnNpZ25lZCBsb25nIGV4dGVudCwgb2xkX2VuZDsKIAlzdHJ1 Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlOwogCXBtZF90ICpvbGRfcG1kLCAqbmV3X3BtZDsK IApAQCAtMjY5LDE0ICs0MjIsMjcgQEAgdW5zaWduZWQgbG9uZyBtb3ZlX3BhZ2VfdGFibGVzKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCiAJZm9yICg7IG9sZF9hZGRyIDwgb2xkX2VuZDsg b2xkX2FkZHIgKz0gZXh0ZW50LCBuZXdfYWRkciArPSBleHRlbnQpIHsKIAkJY29uZF9yZXNjaGVk KCk7Ci0JCW5leHQgPSAob2xkX2FkZHIgKyBQTURfU0laRSkgJiBQTURfTUFTSzsKLQkJLyogZXZl biBpZiBuZXh0IG92ZXJmbG93ZWQsIGV4dGVudCBiZWxvdyB3aWxsIGJlIG9rICovCi0JCWV4dGVu dCA9IG5leHQgLSBvbGRfYWRkcjsKLQkJaWYgKGV4dGVudCA+IG9sZF9lbmQgLSBvbGRfYWRkcikK LQkJCWV4dGVudCA9IG9sZF9lbmQgLSBvbGRfYWRkcjsKLQkJbmV4dCA9IChuZXdfYWRkciArIFBN RF9TSVpFKSAmIFBNRF9NQVNLOwotCQlpZiAoZXh0ZW50ID4gbmV4dCAtIG5ld19hZGRyKQotCQkJ ZXh0ZW50ID0gbmV4dCAtIG5ld19hZGRyOworI2lmZGVmIENPTkZJR19IQVZFX01PVkVfUFVECisJ CS8qCisJCSAqIElmIGV4dGVudCBpcyBQVUQtc2l6ZWQgdHJ5IHRvIHNwZWVkIHVwIHRoZSBtb3Zl IGJ5IG1vdmluZyBhdCB0aGUKKwkJICogUFVEIGxldmVsIGlmIHBvc3NpYmxlLgorCQkgKi8KKwkJ ZXh0ZW50ID0gZ2V0X2V4dGVudChOT1JNQUxfUFVELCBvbGRfYWRkciwgb2xkX2VuZCwgbmV3X2Fk ZHIpOworCQlpZiAoZXh0ZW50ID09IFBVRF9TSVpFKSB7CisJCQlwdWRfdCAqb2xkX3B1ZCwgKm5l d19wdWQ7CisKKwkJCW9sZF9wdWQgPSBnZXRfb2xkX3B1ZCh2bWEtPnZtX21tLCBvbGRfYWRkcik7 CisJCQlpZiAoIW9sZF9wdWQpCisJCQkJY29udGludWU7CisJCQluZXdfcHVkID0gYWxsb2NfbmV3 X3B1ZCh2bWEtPnZtX21tLCB2bWEsIG5ld19hZGRyKTsKKwkJCWlmICghbmV3X3B1ZCkKKwkJCQli cmVhazsKKwkJCWlmIChtb3ZlX3BndF9lbnRyeShOT1JNQUxfUFVELCB2bWEsIG9sZF9hZGRyLCBu ZXdfYWRkciwKKwkJCQkJICAgb2xkX3B1ZCwgbmV3X3B1ZCwgbmVlZF9ybWFwX2xvY2tzKSkKKwkJ CQljb250aW51ZTsKKwkJfQorI2VuZGlmCisJCWV4dGVudCA9IGdldF9leHRlbnQoTk9STUFMX1BN RCwgb2xkX2FkZHIsIG9sZF9lbmQsIG5ld19hZGRyKTsKIAkJb2xkX3BtZCA9IGdldF9vbGRfcG1k KHZtYS0+dm1fbW0sIG9sZF9hZGRyKTsKIAkJaWYgKCFvbGRfcG1kKQogCQkJY29udGludWU7CkBA IC0yODQsMTggKzQ1MCwxMCBAQCB1bnNpZ25lZCBsb25nIG1vdmVfcGFnZV90YWJsZXMoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCWlmICghbmV3X3BtZCkKIAkJCWJyZWFrOwogCQlpZiAo aXNfc3dhcF9wbWQoKm9sZF9wbWQpIHx8IHBtZF90cmFuc19odWdlKCpvbGRfcG1kKSB8fCBwbWRf ZGV2bWFwKCpvbGRfcG1kKSkgewotCQkJaWYgKGV4dGVudCA9PSBIUEFHRV9QTURfU0laRSkgewot CQkJCWJvb2wgbW92ZWQ7Ci0JCQkJLyogU2VlIGNvbW1lbnQgaW4gbW92ZV9wdGVzKCkgKi8KLQkJ CQlpZiAobmVlZF9ybWFwX2xvY2tzKQotCQkJCQl0YWtlX3JtYXBfbG9ja3Modm1hKTsKLQkJCQlt b3ZlZCA9IG1vdmVfaHVnZV9wbWQodm1hLCBvbGRfYWRkciwgbmV3X2FkZHIsCi0JCQkJCQkgICAg ICBvbGRfcG1kLCBuZXdfcG1kKTsKLQkJCQlpZiAobmVlZF9ybWFwX2xvY2tzKQotCQkJCQlkcm9w X3JtYXBfbG9ja3Modm1hKTsKLQkJCQlpZiAobW92ZWQpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQor CQkJaWYgKGV4dGVudCA9PSBIUEFHRV9QTURfU0laRSAmJgorCQkJICAgIG1vdmVfcGd0X2VudHJ5 KEhQQUdFX1BNRCwgdm1hLCBvbGRfYWRkciwgbmV3X2FkZHIsIG9sZF9wbWQsCisJCQkJCSAgIG5l d19wbWQsIG5lZWRfcm1hcF9sb2NrcykpCisJCQkJY29udGludWU7CiAJCQlzcGxpdF9odWdlX3Bt ZCh2bWEsIG9sZF9wbWQsIG9sZF9hZGRyKTsKIAkJCWlmIChwbWRfdHJhbnNfdW5zdGFibGUob2xk X3BtZCkpCiAJCQkJY29udGludWU7CkBAIC0zMDUsMTUgKzQ2Myw4IEBAIHVuc2lnbmVkIGxvbmcg bW92ZV9wYWdlX3RhYmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJCSAqIElmIHRo ZSBleHRlbnQgaXMgUE1ELXNpemVkLCB0cnkgdG8gc3BlZWQgdGhlIG1vdmUgYnkKIAkJCSAqIG1v dmluZyBhdCB0aGUgUE1EIGxldmVsIGlmIHBvc3NpYmxlLgogCQkJICovCi0JCQlib29sIG1vdmVk OwotCi0JCQlpZiAobmVlZF9ybWFwX2xvY2tzKQotCQkJCXRha2Vfcm1hcF9sb2Nrcyh2bWEpOwot CQkJbW92ZWQgPSBtb3ZlX25vcm1hbF9wbWQodm1hLCBvbGRfYWRkciwgbmV3X2FkZHIsCi0JCQkJ CQlvbGRfcG1kLCBuZXdfcG1kKTsKLQkJCWlmIChuZWVkX3JtYXBfbG9ja3MpCi0JCQkJZHJvcF9y bWFwX2xvY2tzKHZtYSk7Ci0JCQlpZiAobW92ZWQpCisJCQlpZiAobW92ZV9wZ3RfZW50cnkoTk9S TUFMX1BNRCwgdm1hLCBvbGRfYWRkciwgbmV3X2FkZHIsIG9sZF9wbWQsCisJCQkJCSAgIG5ld19w bWQsIG5lZWRfcm1hcF9sb2NrcykpCiAJCQkJY29udGludWU7CiAjZW5kaWYKIAkJfQotLSAKMi4y OC4wLjcwOS5nYjA4MTZiNmViMC1nb29nCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=