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=-7.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,URIBL_DBL_ABUSE_MALW,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 5F3A5C352A2 for ; Wed, 5 Feb 2020 12:54:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2C17F218AC for ; Wed, 5 Feb 2020 12:54:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="YMShQlB6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728220AbgBEMy3 (ORCPT ); Wed, 5 Feb 2020 07:54:29 -0500 Received: from pio-pvt-msa1.bahnhof.se ([79.136.2.40]:34926 "EHLO pio-pvt-msa1.bahnhof.se" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728133AbgBEMy1 (ORCPT ); Wed, 5 Feb 2020 07:54:27 -0500 Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 430493F332; Wed, 5 Feb 2020 13:54:25 +0100 (CET) Authentication-Results: pio-pvt-msa1.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b="YMShQlB6"; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from pio-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (pio-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2yg9k8M-ik_n; Wed, 5 Feb 2020 13:54:23 +0100 (CET) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by pio-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id 972FE3F2D9; Wed, 5 Feb 2020 13:54:18 +0100 (CET) Received: from localhost.localdomain.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id 54CC0360434; Wed, 5 Feb 2020 13:54:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1580907258; bh=Tuym8BB/u8YTgld4yyR2l1RXzIWNJRspuP52kmDW8ts=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YMShQlB6Ctqgi/bCnFHSPumWaJemQlFvSzTm6qfGMMKz1z4zCTzp7Mc84wVU/wzUX JXPio3WZB33Rkj04iyKjexKBW7olNppnjAov8Us/bDCQt0t11mrOPRfofbtzyJgVtR kKyF1h5pfni3BOygsK2dJbbkGTONj6JRJM4NAO/4= From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= To: linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: pv-drivers@vmware.com, linux-graphics-maintainer@vmware.com, Thomas Hellstrom , Andrew Morton , Michal Hocko , "Matthew Wilcox (Oracle)" , "Kirill A. Shutemov" , Ralph Campbell , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , =?UTF-8?q?Christian=20K=C3=B6nig?= , Dan Williams Subject: [PATCH v3 4/9] mm: Add vmf_insert_pfn_xxx_prot() for huge page-table entries Date: Wed, 5 Feb 2020 13:53:48 +0100 Message-Id: <20200205125353.2760-5-thomas_os@shipmail.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200205125353.2760-1-thomas_os@shipmail.org> References: <20200205125353.2760-1-thomas_os@shipmail.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thomas Hellstrom For graphics drivers needing to modify the page-protection, add huge page-table entries counterparts to vmf_insert_pfn_prot(). Cc: Andrew Morton Cc: Michal Hocko Cc: "Matthew Wilcox (Oracle)" Cc: "Kirill A. Shutemov" Cc: Ralph Campbell Cc: "Jérôme Glisse" Cc: "Christian König" Cc: Dan Williams Signed-off-by: Thomas Hellstrom --- include/linux/huge_mm.h | 41 +++++++++++++++++++++++++++++++++++++++-- mm/huge_memory.c | 38 ++++++++++++++++++++++++++++++++------ 2 files changed, 71 insertions(+), 8 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 0b84e13e88e2..a95d1bc8ffe8 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -47,8 +47,45 @@ extern bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr, extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, pgprot_t newprot, int prot_numa); -vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write); -vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write); +vm_fault_t vmf_insert_pfn_pmd_prot(struct vm_fault *vmf, pfn_t pfn, + pgprot_t pgprot, bool write); + +/** + * vmf_insert_pfn_pmd - insert a pmd size pfn + * @vmf: Structure describing the fault + * @pfn: pfn to insert + * @pgprot: page protection to use + * @write: whether it's a write fault + * + * Insert a pmd size pfn. See vmf_insert_pfn() for additional info. + * + * Return: vm_fault_t value. + */ +static inline vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, + bool write) +{ + return vmf_insert_pfn_pmd_prot(vmf, pfn, vmf->vma->vm_page_prot, write); +} +vm_fault_t vmf_insert_pfn_pud_prot(struct vm_fault *vmf, pfn_t pfn, + pgprot_t pgprot, bool write); + +/** + * vmf_insert_pfn_pud - insert a pud size pfn + * @vmf: Structure describing the fault + * @pfn: pfn to insert + * @pgprot: page protection to use + * @write: whether it's a write fault + * + * Insert a pud size pfn. See vmf_insert_pfn() for additional info. + * + * Return: vm_fault_t value. + */ +static inline vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, + bool write) +{ + return vmf_insert_pfn_pud_prot(vmf, pfn, vmf->vma->vm_page_prot, write); +} + enum transparent_hugepage_flag { TRANSPARENT_HUGEPAGE_FLAG, TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, diff --git a/mm/huge_memory.c b/mm/huge_memory.c index f8d24fc3f4df..b2ec62cca3ae 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -811,11 +811,24 @@ static void insert_pfn_pmd(struct vm_area_struct *vma, unsigned long addr, pte_free(mm, pgtable); } -vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write) +/** + * vmf_insert_pfn_pmd_prot - insert a pmd size pfn + * @vmf: Structure describing the fault + * @pfn: pfn to insert + * @pgprot: page protection to use + * @write: whether it's a write fault + * + * Insert a pmd size pfn. See vmf_insert_pfn() for additional info and + * also consult the vmf_insert_mixed_prot() documentation when + * @pgprot != @vmf->vma->vm_page_prot. + * + * Return: vm_fault_t value. + */ +vm_fault_t vmf_insert_pfn_pmd_prot(struct vm_fault *vmf, pfn_t pfn, + pgprot_t pgprot, bool write) { unsigned long addr = vmf->address & PMD_MASK; struct vm_area_struct *vma = vmf->vma; - pgprot_t pgprot = vma->vm_page_prot; pgtable_t pgtable = NULL; /* @@ -843,7 +856,7 @@ vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write) insert_pfn_pmd(vma, addr, vmf->pmd, pfn, pgprot, write, pgtable); return VM_FAULT_NOPAGE; } -EXPORT_SYMBOL_GPL(vmf_insert_pfn_pmd); +EXPORT_SYMBOL_GPL(vmf_insert_pfn_pmd_prot); #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD static pud_t maybe_pud_mkwrite(pud_t pud, struct vm_area_struct *vma) @@ -889,11 +902,24 @@ static void insert_pfn_pud(struct vm_area_struct *vma, unsigned long addr, spin_unlock(ptl); } -vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write) +/** + * vmf_insert_pfn_pud_prot - insert a pud size pfn + * @vmf: Structure describing the fault + * @pfn: pfn to insert + * @pgprot: page protection to use + * @write: whether it's a write fault + * + * Insert a pud size pfn. See vmf_insert_pfn() for additional info and + * also consult the vmf_insert_mixed_prot() documentation when + * @pgprot != @vmf->vma->vm_page_prot. + * + * Return: vm_fault_t value. + */ +vm_fault_t vmf_insert_pfn_pud_prot(struct vm_fault *vmf, pfn_t pfn, + pgprot_t pgprot, bool write) { unsigned long addr = vmf->address & PUD_MASK; struct vm_area_struct *vma = vmf->vma; - pgprot_t pgprot = vma->vm_page_prot; /* * If we had pud_special, we could avoid all these restrictions, @@ -914,7 +940,7 @@ vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write) insert_pfn_pud(vma, addr, vmf->pud, pfn, pgprot, write); return VM_FAULT_NOPAGE; } -EXPORT_SYMBOL_GPL(vmf_insert_pfn_pud); +EXPORT_SYMBOL_GPL(vmf_insert_pfn_pud_prot); #endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ static void touch_pmd(struct vm_area_struct *vma, unsigned long addr, -- 2.21.1 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=-7.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,URIBL_DBL_ABUSE_MALW,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 55E1CC35254 for ; Wed, 5 Feb 2020 12:54:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2E33B218AC for ; Wed, 5 Feb 2020 12:54:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=shipmail.org header.i=@shipmail.org header.b="YMShQlB6" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2E33B218AC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C58896F58C; Wed, 5 Feb 2020 12:54:30 +0000 (UTC) Received: from pio-pvt-msa1.bahnhof.se (pio-pvt-msa1.bahnhof.se [79.136.2.40]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F6BF6F58C for ; Wed, 5 Feb 2020 12:54:27 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by pio-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 430493F332; Wed, 5 Feb 2020 13:54:25 +0100 (CET) Authentication-Results: pio-pvt-msa1.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b="YMShQlB6"; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from pio-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (pio-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2yg9k8M-ik_n; Wed, 5 Feb 2020 13:54:23 +0100 (CET) Received: from mail1.shipmail.org (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) (Authenticated sender: mb878879) by pio-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id 972FE3F2D9; Wed, 5 Feb 2020 13:54:18 +0100 (CET) Received: from localhost.localdomain.localdomain (h-205-35.A357.priv.bahnhof.se [155.4.205.35]) by mail1.shipmail.org (Postfix) with ESMTPSA id 54CC0360434; Wed, 5 Feb 2020 13:54:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1580907258; bh=Tuym8BB/u8YTgld4yyR2l1RXzIWNJRspuP52kmDW8ts=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YMShQlB6Ctqgi/bCnFHSPumWaJemQlFvSzTm6qfGMMKz1z4zCTzp7Mc84wVU/wzUX JXPio3WZB33Rkj04iyKjexKBW7olNppnjAov8Us/bDCQt0t11mrOPRfofbtzyJgVtR kKyF1h5pfni3BOygsK2dJbbkGTONj6JRJM4NAO/4= From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= To: linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/9] mm: Add vmf_insert_pfn_xxx_prot() for huge page-table entries Date: Wed, 5 Feb 2020 13:53:48 +0100 Message-Id: <20200205125353.2760-5-thomas_os@shipmail.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200205125353.2760-1-thomas_os@shipmail.org> References: <20200205125353.2760-1-thomas_os@shipmail.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Hellstrom , Michal Hocko , pv-drivers@vmware.com, Dan Williams , Ralph Campbell , "Matthew Wilcox \(Oracle\)" , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , linux-graphics-maintainer@vmware.com, Andrew Morton , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Kirill A. Shutemov" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKRm9yIGdyYXBo aWNzIGRyaXZlcnMgbmVlZGluZyB0byBtb2RpZnkgdGhlIHBhZ2UtcHJvdGVjdGlvbiwgYWRkCmh1 Z2UgcGFnZS10YWJsZSBlbnRyaWVzIGNvdW50ZXJwYXJ0cyB0byB2bWZfaW5zZXJ0X3Bmbl9wcm90 KCkuCgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IE1p Y2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgpDYzogIk1hdHRoZXcgV2lsY294IChPcmFjbGUp IiA8d2lsbHlAaW5mcmFkZWFkLm9yZz4KQ2M6ICJLaXJpbGwgQS4gU2h1dGVtb3YiIDxraXJpbGwu c2h1dGVtb3ZAbGludXguaW50ZWwuY29tPgpDYzogUmFscGggQ2FtcGJlbGwgPHJjYW1wYmVsbEBu dmlkaWEuY29tPgpDYzogIkrDqXLDtG1lIEdsaXNzZSIgPGpnbGlzc2VAcmVkaGF0LmNvbT4KQ2M6 ICJDaHJpc3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpDYzogRGFuIFdp bGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBI ZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4L2h1Z2Vf bW0uaCB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBtbS9o dWdlX21lbW9yeS5jICAgICAgICB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9odWdlX21tLmggYi9pbmNsdWRlL2xpbnV4L2h1 Z2VfbW0uaAppbmRleCAwYjg0ZTEzZTg4ZTIuLmE5NWQxYmM4ZmZlOCAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9odWdlX21tLmgKKysrIGIvaW5jbHVkZS9saW51eC9odWdlX21tLmgKQEAgLTQ3 LDggKzQ3LDQ1IEBAIGV4dGVybiBib29sIG1vdmVfaHVnZV9wbWQoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsCiBleHRlcm4gaW50IGNoYW5nZV9odWdl X3BtZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCwKIAkJCXVuc2lnbmVk IGxvbmcgYWRkciwgcGdwcm90X3QgbmV3cHJvdCwKIAkJCWludCBwcm90X251bWEpOwotdm1fZmF1 bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wbWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBmbl90IHBmbiwg Ym9vbCB3cml0ZSk7Ci12bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3B1ZChzdHJ1Y3Qgdm1fZmF1 bHQgKnZtZiwgcGZuX3QgcGZuLCBib29sIHdyaXRlKTsKK3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9w Zm5fcG1kX3Byb3Qoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBmbl90IHBmbiwKKwkJCQkgICBwZ3By b3RfdCBwZ3Byb3QsIGJvb2wgd3JpdGUpOworCisvKioKKyAqIHZtZl9pbnNlcnRfcGZuX3BtZCAt IGluc2VydCBhIHBtZCBzaXplIHBmbgorICogQHZtZjogU3RydWN0dXJlIGRlc2NyaWJpbmcgdGhl IGZhdWx0CisgKiBAcGZuOiBwZm4gdG8gaW5zZXJ0CisgKiBAcGdwcm90OiBwYWdlIHByb3RlY3Rp b24gdG8gdXNlCisgKiBAd3JpdGU6IHdoZXRoZXIgaXQncyBhIHdyaXRlIGZhdWx0CisgKgorICog SW5zZXJ0IGEgcG1kIHNpemUgcGZuLiBTZWUgdm1mX2luc2VydF9wZm4oKSBmb3IgYWRkaXRpb25h bCBpbmZvLgorICoKKyAqIFJldHVybjogdm1fZmF1bHRfdCB2YWx1ZS4KKyAqLworc3RhdGljIGlu bGluZSB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3BtZChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwg cGZuX3QgcGZuLAorCQkJCQkgICAgYm9vbCB3cml0ZSkKK3sKKwlyZXR1cm4gdm1mX2luc2VydF9w Zm5fcG1kX3Byb3Qodm1mLCBwZm4sIHZtZi0+dm1hLT52bV9wYWdlX3Byb3QsIHdyaXRlKTsKK30K K3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fcHVkX3Byb3Qoc3RydWN0IHZtX2ZhdWx0ICp2bWYs IHBmbl90IHBmbiwKKwkJCQkgICBwZ3Byb3RfdCBwZ3Byb3QsIGJvb2wgd3JpdGUpOworCisvKioK KyAqIHZtZl9pbnNlcnRfcGZuX3B1ZCAtIGluc2VydCBhIHB1ZCBzaXplIHBmbgorICogQHZtZjog U3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGZhdWx0CisgKiBAcGZuOiBwZm4gdG8gaW5zZXJ0Cisg KiBAcGdwcm90OiBwYWdlIHByb3RlY3Rpb24gdG8gdXNlCisgKiBAd3JpdGU6IHdoZXRoZXIgaXQn cyBhIHdyaXRlIGZhdWx0CisgKgorICogSW5zZXJ0IGEgcHVkIHNpemUgcGZuLiBTZWUgdm1mX2lu c2VydF9wZm4oKSBmb3IgYWRkaXRpb25hbCBpbmZvLgorICoKKyAqIFJldHVybjogdm1fZmF1bHRf dCB2YWx1ZS4KKyAqLworc3RhdGljIGlubGluZSB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3B1 ZChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgcGZuX3QgcGZuLAorCQkJCQkgICAgYm9vbCB3cml0ZSkK K3sKKwlyZXR1cm4gdm1mX2luc2VydF9wZm5fcHVkX3Byb3Qodm1mLCBwZm4sIHZtZi0+dm1hLT52 bV9wYWdlX3Byb3QsIHdyaXRlKTsKK30KKwogZW51bSB0cmFuc3BhcmVudF9odWdlcGFnZV9mbGFn IHsKIAlUUkFOU1BBUkVOVF9IVUdFUEFHRV9GTEFHLAogCVRSQU5TUEFSRU5UX0hVR0VQQUdFX1JF UV9NQURWX0ZMQUcsCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1v cnkuYwppbmRleCBmOGQyNGZjM2Y0ZGYuLmIyZWM2MmNjYTNhZSAxMDA2NDQKLS0tIGEvbW0vaHVn ZV9tZW1vcnkuYworKysgYi9tbS9odWdlX21lbW9yeS5jCkBAIC04MTEsMTEgKzgxMSwyNCBAQCBz dGF0aWMgdm9pZCBpbnNlcnRfcGZuX3BtZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5z aWduZWQgbG9uZyBhZGRyLAogCQlwdGVfZnJlZShtbSwgcGd0YWJsZSk7CiB9CiAKLXZtX2ZhdWx0 X3Qgdm1mX2luc2VydF9wZm5fcG1kKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBwZm5fdCBwZm4sIGJv b2wgd3JpdGUpCisvKioKKyAqIHZtZl9pbnNlcnRfcGZuX3BtZF9wcm90IC0gaW5zZXJ0IGEgcG1k IHNpemUgcGZuCisgKiBAdm1mOiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgZmF1bHQKKyAqIEBw Zm46IHBmbiB0byBpbnNlcnQKKyAqIEBwZ3Byb3Q6IHBhZ2UgcHJvdGVjdGlvbiB0byB1c2UKKyAq IEB3cml0ZTogd2hldGhlciBpdCdzIGEgd3JpdGUgZmF1bHQKKyAqCisgKiBJbnNlcnQgYSBwbWQg c2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3BmbigpIGZvciBhZGRpdGlvbmFsIGluZm8gYW5kCisg KiBhbHNvIGNvbnN1bHQgdGhlIHZtZl9pbnNlcnRfbWl4ZWRfcHJvdCgpIGRvY3VtZW50YXRpb24g d2hlbgorICogQHBncHJvdCAhPSBAdm1mLT52bWEtPnZtX3BhZ2VfcHJvdC4KKyAqCisgKiBSZXR1 cm46IHZtX2ZhdWx0X3QgdmFsdWUuCisgKi8KK3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fcG1k X3Byb3Qoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBmbl90IHBmbiwKKwkJCQkgICBwZ3Byb3RfdCBw Z3Byb3QsIGJvb2wgd3JpdGUpCiB7CiAJdW5zaWduZWQgbG9uZyBhZGRyID0gdm1mLT5hZGRyZXNz ICYgUE1EX01BU0s7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZtYTsKLQlw Z3Byb3RfdCBwZ3Byb3QgPSB2bWEtPnZtX3BhZ2VfcHJvdDsKIAlwZ3RhYmxlX3QgcGd0YWJsZSA9 IE5VTEw7CiAKIAkvKgpAQCAtODQzLDcgKzg1Niw3IEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9w Zm5fcG1kKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBwZm5fdCBwZm4sIGJvb2wgd3JpdGUpCiAJaW5z ZXJ0X3Bmbl9wbWQodm1hLCBhZGRyLCB2bWYtPnBtZCwgcGZuLCBwZ3Byb3QsIHdyaXRlLCBwZ3Rh YmxlKTsKIAlyZXR1cm4gVk1fRkFVTFRfTk9QQUdFOwogfQotRVhQT1JUX1NZTUJPTF9HUEwodm1m X2luc2VydF9wZm5fcG1kKTsKK0VYUE9SVF9TWU1CT0xfR1BMKHZtZl9pbnNlcnRfcGZuX3BtZF9w cm90KTsKIAogI2lmZGVmIENPTkZJR19IQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VfUFVE CiBzdGF0aWMgcHVkX3QgbWF5YmVfcHVkX21rd3JpdGUocHVkX3QgcHVkLCBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSkKQEAgLTg4OSwxMSArOTAyLDI0IEBAIHN0YXRpYyB2b2lkIGluc2VydF9w Zm5fcHVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJ c3Bpbl91bmxvY2socHRsKTsKIH0KIAotdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wdWQoc3Ry dWN0IHZtX2ZhdWx0ICp2bWYsIHBmbl90IHBmbiwgYm9vbCB3cml0ZSkKKy8qKgorICogdm1mX2lu c2VydF9wZm5fcHVkX3Byb3QgLSBpbnNlcnQgYSBwdWQgc2l6ZSBwZm4KKyAqIEB2bWY6IFN0cnVj dHVyZSBkZXNjcmliaW5nIHRoZSBmYXVsdAorICogQHBmbjogcGZuIHRvIGluc2VydAorICogQHBn cHJvdDogcGFnZSBwcm90ZWN0aW9uIHRvIHVzZQorICogQHdyaXRlOiB3aGV0aGVyIGl0J3MgYSB3 cml0ZSBmYXVsdAorICoKKyAqIEluc2VydCBhIHB1ZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRf cGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mbyBhbmQKKyAqIGFsc28gY29uc3VsdCB0aGUgdm1mX2lu c2VydF9taXhlZF9wcm90KCkgZG9jdW1lbnRhdGlvbiB3aGVuCisgKiBAcGdwcm90ICE9IEB2bWYt PnZtYS0+dm1fcGFnZV9wcm90LgorICoKKyAqIFJldHVybjogdm1fZmF1bHRfdCB2YWx1ZS4KKyAq Lwordm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wdWRfcHJvdChzdHJ1Y3Qgdm1fZmF1bHQgKnZt ZiwgcGZuX3QgcGZuLAorCQkJCSAgIHBncHJvdF90IHBncHJvdCwgYm9vbCB3cml0ZSkKIHsKIAl1 bnNpZ25lZCBsb25nIGFkZHIgPSB2bWYtPmFkZHJlc3MgJiBQVURfTUFTSzsKIAlzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0+dm1hOwotCXBncHJvdF90IHBncHJvdCA9IHZtYS0+dm1f cGFnZV9wcm90OwogCiAJLyoKIAkgKiBJZiB3ZSBoYWQgcHVkX3NwZWNpYWwsIHdlIGNvdWxkIGF2 b2lkIGFsbCB0aGVzZSByZXN0cmljdGlvbnMsCkBAIC05MTQsNyArOTQwLDcgQEAgdm1fZmF1bHRf dCB2bWZfaW5zZXJ0X3Bmbl9wdWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBmbl90IHBmbiwgYm9v bCB3cml0ZSkKIAlpbnNlcnRfcGZuX3B1ZCh2bWEsIGFkZHIsIHZtZi0+cHVkLCBwZm4sIHBncHJv dCwgd3JpdGUpOwogCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQ TCh2bWZfaW5zZXJ0X3Bmbl9wdWQpOworRVhQT1JUX1NZTUJPTF9HUEwodm1mX2luc2VydF9wZm5f cHVkX3Byb3QpOwogI2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBB R0VfUFVEICovCiAKIHN0YXRpYyB2b2lkIHRvdWNoX3BtZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAotLSAKMi4yMS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK