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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B79C6C43219 for ; Wed, 17 Nov 2021 21:54:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9C5EB61A07 for ; Wed, 17 Nov 2021 21:54:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240988AbhKQV5i (ORCPT ); Wed, 17 Nov 2021 16:57:38 -0500 Received: from ale.deltatee.com ([204.191.154.188]:58734 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240843AbhKQV5Y (ORCPT ); Wed, 17 Nov 2021 16:57:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=deltatee.com; s=20200525; h=Subject:MIME-Version:References:In-Reply-To: Message-Id:Date:Cc:To:From:content-disposition; bh=E9tQWtvaLICmPSoEVBJb4KTrJ+PSjHquPVLYmy++lAQ=; b=mxEXmW4OZEo8i67U5DMx5HrPbS AK51pgfhmTpE6vjIujjmCpY6A999ck0das6Npk9wDVBcYvnl0gbK1ZiUDlXCosy+XmIlbhUrVTAPZ 91/bA6ba3/Cvv04qAIODBzWTtAiiSx+V26PZJhQnAs12eMgjW7W09G8nDZ3Grj/zcNnkBFe16y2/x 3EeSCU5zQmKpyIBKL3ExEDIK8vyuN11OYMSzAtVXOmO6g9WGvL2RbrJQUL8n8Bi1fVrHh4w1bx0ZC jvYm0EPPRg8+gcnpY5++dLLNcWVdibi79wrXO38JGd6xsQRZfLh0GmriWFh1BXBlkfAKoiPIIxUux I8dRAKeA==; Received: from cgy1-donard.priv.deltatee.com ([172.16.1.31]) by ale.deltatee.com with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mnSsi-000Zo5-TA; Wed, 17 Nov 2021 14:54:17 -0700 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.94.2) (envelope-from ) id 1mnSse-0000yr-90; Wed, 17 Nov 2021 14:54:12 -0700 From: Logan Gunthorpe To: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Stephen Bates , Christoph Hellwig , Dan Williams , Jason Gunthorpe , =?UTF-8?q?Christian=20K=C3=B6nig?= , John Hubbard , Don Dutile , Matthew Wilcox , Daniel Vetter , Jakowski Andrzej , Minturn Dave B , Jason Ekstrand , Dave Hansen , Xiong Jianxin , Bjorn Helgaas , Ira Weiny , Robin Murphy , Martin Oliveira , Chaitanya Kulkarni , Logan Gunthorpe Date: Wed, 17 Nov 2021 14:53:49 -0700 Message-Id: <20211117215410.3695-3-logang@deltatee.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211117215410.3695-1-logang@deltatee.com> References: <20211117215410.3695-1-logang@deltatee.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 172.16.1.31 X-SA-Exim-Rcpt-To: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, sbates@raithlin.com, hch@lst.de, jgg@ziepe.ca, christian.koenig@amd.com, jhubbard@nvidia.com, ddutile@redhat.com, willy@infradead.org, daniel.vetter@ffwll.ch, jason@jlekstrand.net, dave.hansen@linux.intel.com, helgaas@kernel.org, dan.j.williams@intel.com, andrzej.jakowski@intel.com, dave.b.minturn@intel.com, jianxin.xiong@intel.com, ira.weiny@intel.com, robin.murphy@arm.com, martin.oliveira@eideticom.com, ckulkarnilinux@gmail.com, logang@deltatee.com X-SA-Exim-Mail-From: gunthorp@deltatee.com Subject: [PATCH v4 02/23] lib/scatterlist: add flag for indicating P2PDMA segments in an SGL X-SA-Exim-Version: 4.2.1 (built Sat, 13 Feb 2021 17:57:42 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Make use of the third free LSB in scatterlist's page_link on 64bit systems. The extra bit will be used by dma_[un]map_sg_p2pdma() to determine when a given SGL segments dma_address points to a PCI bus address. dma_unmap_sg_p2pdma() will need to perform different cleanup when a segment is marked as a bus address. Create a CONFIG_NEED_SG_DMA_BUS_ADDR_FLAG bool which depends on CONFIG_64BIT (so there is space in the page link for the new flag). CONFIG_PCI_P2PDMA will then depend on this so this means PCI P2PDMA will require CONFIG_64BIT. This should be acceptable as the majority of P2PDMA use cases are restricted to newer root complexes and roughly require the extra address space for memory BARs used in the transactions. Signed-off-by: Logan Gunthorpe --- drivers/pci/Kconfig | 5 +++++ include/linux/scatterlist.h | 44 ++++++++++++++++++++++++++++++++++++- kernel/dma/Kconfig | 10 +++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig index 43e615aa12ff..95f29601a4df 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig @@ -164,6 +164,11 @@ config PCI_PASID config PCI_P2PDMA bool "PCI peer-to-peer transfer support" depends on ZONE_DEVICE + # + # The need for the scatterlist DMA bus address flag means PCI P2PDMA + # requires 64bit + # + select NEED_SG_DMA_BUS_ADDR_FLAG select GENERIC_ALLOCATOR help Enableѕ drivers to do PCI peer-to-peer transactions to and from diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 7ff9d6386c12..917c09dcc566 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -64,12 +64,24 @@ struct sg_append_table { #define SG_CHAIN 0x01UL #define SG_END 0x02UL +/* + * bit 2 is the third free bit in the page_link on 64bit systems which + * is used by dma_unmap_sg() to determine if the dma_address is a + * bus address when doing P2PDMA. + */ +#ifdef CONFIG_NEED_SG_DMA_BUS_ADDR_FLAG +#define SG_DMA_BUS_ADDRESS 0x04UL +static_assert(__alignof__(struct page) >= 8); +#else +#define SG_DMA_BUS_ADDRESS 0x00UL +#endif + /* * We overload the LSB of the page pointer to indicate whether it's * a valid sg entry, or whether it points to the start of a new scatterlist. * Those low bits are there for everyone! (thanks mason :-) */ -#define SG_PAGE_LINK_MASK (SG_CHAIN | SG_END) +#define SG_PAGE_LINK_MASK (SG_CHAIN | SG_END | SG_DMA_BUS_ADDRESS) static inline unsigned int __sg_flags(struct scatterlist *sg) { @@ -91,6 +103,11 @@ static inline bool sg_is_last(struct scatterlist *sg) return __sg_flags(sg) & SG_END; } +static inline bool sg_is_dma_bus_address(struct scatterlist *sg) +{ + return __sg_flags(sg) & SG_DMA_BUS_ADDRESS; +} + /** * sg_assign_page - Assign a given page to an SG entry * @sg: SG entry @@ -245,6 +262,31 @@ static inline void sg_unmark_end(struct scatterlist *sg) sg->page_link &= ~SG_END; } +/** + * sg_dma_mark_bus address - Mark the scatterlist entry as a bus address + * @sg: SG entryScatterlist + * + * Description: + * Marks the passed in sg entry to indicate that the dma_address is + * a bus address and doesn't need to be unmapped. + **/ +static inline void sg_dma_mark_bus_address(struct scatterlist *sg) +{ + sg->page_link |= SG_DMA_BUS_ADDRESS; +} + +/** + * sg_unmark_pci_p2pdma - Unmark the scatterlist entry as a bus address + * @sg: SG entryScatterlist + * + * Description: + * Clears the bus address mark. + **/ +static inline void sg_dma_unmark_bus_address(struct scatterlist *sg) +{ + sg->page_link &= ~SG_DMA_BUS_ADDRESS; +} + /** * sg_phys - Return physical address of an sg entry * @sg: SG entry diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig index 1b02179758cb..6e5e1d8e1329 100644 --- a/kernel/dma/Kconfig +++ b/kernel/dma/Kconfig @@ -27,6 +27,16 @@ config ARCH_HAS_DMA_MAP_DIRECT config NEED_SG_DMA_LENGTH bool +# +# PCI P2PDMA needs to store bus addresses in the SGL's dma_address so that the +# dma_unmap_sg() implementations can know not to unmap those segments. +# The flag is stored in the 3rd bit in the page_link field in the SGL +# which means this can only be done on 64bit systems. +# +config NEED_SG_DMA_BUS_ADDR_FLAG + depends on 64BIT + bool + config NEED_DMA_MAP_STATE bool -- 2.30.2 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4818C4167D for ; Wed, 17 Nov 2021 21:54:41 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 AB9A461BFB for ; Wed, 17 Nov 2021 21:54:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org AB9A461BFB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=deltatee.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 87F3A60A9B; Wed, 17 Nov 2021 21:54:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nHwic8iZDRPo; Wed, 17 Nov 2021 21:54:40 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 5615760A97; Wed, 17 Nov 2021 21:54:40 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 6216DC0039; Wed, 17 Nov 2021 21:54:39 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id BFFB6C003E for ; Wed, 17 Nov 2021 21:54:34 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id C3F3980C63 for ; Wed, 17 Nov 2021 21:54:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=deltatee.com Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SkzD-g0soBvR for ; Wed, 17 Nov 2021 21:54:32 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from ale.deltatee.com (ale.deltatee.com [204.191.154.188]) by smtp1.osuosl.org (Postfix) with ESMTPS id 1C13080CB0 for ; Wed, 17 Nov 2021 21:54:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=deltatee.com; s=20200525; h=Subject:MIME-Version:References:In-Reply-To: Message-Id:Date:Cc:To:From:content-disposition; bh=E9tQWtvaLICmPSoEVBJb4KTrJ+PSjHquPVLYmy++lAQ=; b=mxEXmW4OZEo8i67U5DMx5HrPbS AK51pgfhmTpE6vjIujjmCpY6A999ck0das6Npk9wDVBcYvnl0gbK1ZiUDlXCosy+XmIlbhUrVTAPZ 91/bA6ba3/Cvv04qAIODBzWTtAiiSx+V26PZJhQnAs12eMgjW7W09G8nDZ3Grj/zcNnkBFe16y2/x 3EeSCU5zQmKpyIBKL3ExEDIK8vyuN11OYMSzAtVXOmO6g9WGvL2RbrJQUL8n8Bi1fVrHh4w1bx0ZC jvYm0EPPRg8+gcnpY5++dLLNcWVdibi79wrXO38JGd6xsQRZfLh0GmriWFh1BXBlkfAKoiPIIxUux I8dRAKeA==; Received: from cgy1-donard.priv.deltatee.com ([172.16.1.31]) by ale.deltatee.com with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mnSsi-000Zo5-TA; Wed, 17 Nov 2021 14:54:17 -0700 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.94.2) (envelope-from ) id 1mnSse-0000yr-90; Wed, 17 Nov 2021 14:54:12 -0700 From: Logan Gunthorpe To: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org Date: Wed, 17 Nov 2021 14:53:49 -0700 Message-Id: <20211117215410.3695-3-logang@deltatee.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211117215410.3695-1-logang@deltatee.com> References: <20211117215410.3695-1-logang@deltatee.com> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 172.16.1.31 X-SA-Exim-Rcpt-To: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org, sbates@raithlin.com, hch@lst.de, jgg@ziepe.ca, christian.koenig@amd.com, jhubbard@nvidia.com, ddutile@redhat.com, willy@infradead.org, daniel.vetter@ffwll.ch, jason@jlekstrand.net, dave.hansen@linux.intel.com, helgaas@kernel.org, dan.j.williams@intel.com, andrzej.jakowski@intel.com, dave.b.minturn@intel.com, jianxin.xiong@intel.com, ira.weiny@intel.com, robin.murphy@arm.com, martin.oliveira@eideticom.com, ckulkarnilinux@gmail.com, logang@deltatee.com X-SA-Exim-Mail-From: gunthorp@deltatee.com Subject: [PATCH v4 02/23] lib/scatterlist: add flag for indicating P2PDMA segments in an SGL X-SA-Exim-Version: 4.2.1 (built Sat, 13 Feb 2021 17:57:42 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) Cc: Minturn Dave B , Martin Oliveira , Ira Weiny , John Hubbard , Dave Hansen , Robin Murphy , Matthew Wilcox , =?UTF-8?q?Christian=20K=C3=B6nig?= , Jason Gunthorpe , Logan Gunthorpe , Chaitanya Kulkarni , Jason Ekstrand , Daniel Vetter , Bjorn Helgaas , Dan Williams , Stephen Bates , Jakowski Andrzej , Christoph Hellwig , Xiong Jianxin X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" TWFrZSB1c2Ugb2YgdGhlIHRoaXJkIGZyZWUgTFNCIGluIHNjYXR0ZXJsaXN0J3MgcGFnZV9saW5r IG9uIDY0Yml0IHN5c3RlbXMuCgpUaGUgZXh0cmEgYml0IHdpbGwgYmUgdXNlZCBieSBkbWFfW3Vu XW1hcF9zZ19wMnBkbWEoKSB0byBkZXRlcm1pbmUgd2hlbiBhCmdpdmVuIFNHTCBzZWdtZW50cyBk bWFfYWRkcmVzcyBwb2ludHMgdG8gYSBQQ0kgYnVzIGFkZHJlc3MuCmRtYV91bm1hcF9zZ19wMnBk bWEoKSB3aWxsIG5lZWQgdG8gcGVyZm9ybSBkaWZmZXJlbnQgY2xlYW51cCB3aGVuIGEKc2VnbWVu dCBpcyBtYXJrZWQgYXMgYSBidXMgYWRkcmVzcy4KCkNyZWF0ZSBhIENPTkZJR19ORUVEX1NHX0RN QV9CVVNfQUREUl9GTEFHIGJvb2wgd2hpY2ggZGVwZW5kcyBvbgpDT05GSUdfNjRCSVQgKHNvIHRo ZXJlIGlzIHNwYWNlIGluIHRoZSBwYWdlIGxpbmsgZm9yIHRoZSBuZXcgZmxhZykuCkNPTkZJR19Q Q0lfUDJQRE1BIHdpbGwgdGhlbiBkZXBlbmQgb24gdGhpcyBzbyB0aGlzIG1lYW5zIFBDSSBQMlBE TUEgd2lsbApyZXF1aXJlIENPTkZJR182NEJJVC4gVGhpcyBzaG91bGQgYmUgYWNjZXB0YWJsZSBh cyB0aGUgbWFqb3JpdHkgb2YgUDJQRE1BCnVzZSBjYXNlcyBhcmUgcmVzdHJpY3RlZCB0byBuZXdl ciByb290IGNvbXBsZXhlcyBhbmQgcm91Z2hseSByZXF1aXJlIHRoZQpleHRyYSBhZGRyZXNzIHNw YWNlIGZvciBtZW1vcnkgQkFScyB1c2VkIGluIHRoZSB0cmFuc2FjdGlvbnMuCgpTaWduZWQtb2Zm LWJ5OiBMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0BkZWx0YXRlZS5jb20+Ci0tLQogZHJpdmVycy9w Y2kvS2NvbmZpZyAgICAgICAgIHwgIDUgKysrKysKIGluY2x1ZGUvbGludXgvc2NhdHRlcmxpc3Qu aCB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGtlcm5lbC9kbWEv S2NvbmZpZyAgICAgICAgICB8IDEwICsrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvS2NvbmZp ZyBiL2RyaXZlcnMvcGNpL0tjb25maWcKaW5kZXggNDNlNjE1YWExMmZmLi45NWYyOTYwMWE0ZGYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL0tjb25maWcKKysrIGIvZHJpdmVycy9wY2kvS2NvbmZp ZwpAQCAtMTY0LDYgKzE2NCwxMSBAQCBjb25maWcgUENJX1BBU0lECiBjb25maWcgUENJX1AyUERN QQogCWJvb2wgIlBDSSBwZWVyLXRvLXBlZXIgdHJhbnNmZXIgc3VwcG9ydCIKIAlkZXBlbmRzIG9u IFpPTkVfREVWSUNFCisJIworCSMgVGhlIG5lZWQgZm9yIHRoZSBzY2F0dGVybGlzdCBETUEgYnVz IGFkZHJlc3MgZmxhZyBtZWFucyBQQ0kgUDJQRE1BCisJIyByZXF1aXJlcyA2NGJpdAorCSMKKwlz ZWxlY3QgTkVFRF9TR19ETUFfQlVTX0FERFJfRkxBRwogCXNlbGVjdCBHRU5FUklDX0FMTE9DQVRP UgogCWhlbHAKIAkgIEVuYWJsZdGVIGRyaXZlcnMgdG8gZG8gUENJIHBlZXItdG8tcGVlciB0cmFu c2FjdGlvbnMgdG8gYW5kIGZyb20KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NhdHRlcmxp c3QuaCBiL2luY2x1ZGUvbGludXgvc2NhdHRlcmxpc3QuaAppbmRleCA3ZmY5ZDYzODZjMTIuLjkx N2MwOWRjYzU2NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zY2F0dGVybGlzdC5oCisrKyBi L2luY2x1ZGUvbGludXgvc2NhdHRlcmxpc3QuaApAQCAtNjQsMTIgKzY0LDI0IEBAIHN0cnVjdCBz Z19hcHBlbmRfdGFibGUgewogI2RlZmluZSBTR19DSEFJTgkweDAxVUwKICNkZWZpbmUgU0dfRU5E CQkweDAyVUwKIAorLyoKKyAqIGJpdCAyIGlzIHRoZSB0aGlyZCBmcmVlIGJpdCBpbiB0aGUgcGFn ZV9saW5rIG9uIDY0Yml0IHN5c3RlbXMgd2hpY2gKKyAqIGlzIHVzZWQgYnkgZG1hX3VubWFwX3Nn KCkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkbWFfYWRkcmVzcyBpcyBhCisgKiBidXMgYWRkcmVzcyB3 aGVuIGRvaW5nIFAyUERNQS4KKyAqLworI2lmZGVmIENPTkZJR19ORUVEX1NHX0RNQV9CVVNfQURE Ul9GTEFHCisjZGVmaW5lIFNHX0RNQV9CVVNfQUREUkVTUwkweDA0VUwKK3N0YXRpY19hc3NlcnQo X19hbGlnbm9mX18oc3RydWN0IHBhZ2UpID49IDgpOworI2Vsc2UKKyNkZWZpbmUgU0dfRE1BX0JV U19BRERSRVNTCTB4MDBVTAorI2VuZGlmCisKIC8qCiAgKiBXZSBvdmVybG9hZCB0aGUgTFNCIG9m IHRoZSBwYWdlIHBvaW50ZXIgdG8gaW5kaWNhdGUgd2hldGhlciBpdCdzCiAgKiBhIHZhbGlkIHNn IGVudHJ5LCBvciB3aGV0aGVyIGl0IHBvaW50cyB0byB0aGUgc3RhcnQgb2YgYSBuZXcgc2NhdHRl cmxpc3QuCiAgKiBUaG9zZSBsb3cgYml0cyBhcmUgdGhlcmUgZm9yIGV2ZXJ5b25lISAodGhhbmtz IG1hc29uIDotKQogICovCi0jZGVmaW5lIFNHX1BBR0VfTElOS19NQVNLIChTR19DSEFJTiB8IFNH X0VORCkKKyNkZWZpbmUgU0dfUEFHRV9MSU5LX01BU0sgKFNHX0NIQUlOIHwgU0dfRU5EIHwgU0df RE1BX0JVU19BRERSRVNTKQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX3NnX2ZsYWdz KHN0cnVjdCBzY2F0dGVybGlzdCAqc2cpCiB7CkBAIC05MSw2ICsxMDMsMTEgQEAgc3RhdGljIGlu bGluZSBib29sIHNnX2lzX2xhc3Qoc3RydWN0IHNjYXR0ZXJsaXN0ICpzZykKIAlyZXR1cm4gX19z Z19mbGFncyhzZykgJiBTR19FTkQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZ19pc19kbWFf YnVzX2FkZHJlc3Moc3RydWN0IHNjYXR0ZXJsaXN0ICpzZykKK3sKKwlyZXR1cm4gX19zZ19mbGFn cyhzZykgJiBTR19ETUFfQlVTX0FERFJFU1M7Cit9CisKIC8qKgogICogc2dfYXNzaWduX3BhZ2Ug LSBBc3NpZ24gYSBnaXZlbiBwYWdlIHRvIGFuIFNHIGVudHJ5CiAgKiBAc2c6CQkgICAgU0cgZW50 cnkKQEAgLTI0NSw2ICsyNjIsMzEgQEAgc3RhdGljIGlubGluZSB2b2lkIHNnX3VubWFya19lbmQo c3RydWN0IHNjYXR0ZXJsaXN0ICpzZykKIAlzZy0+cGFnZV9saW5rICY9IH5TR19FTkQ7CiB9CiAK Ky8qKgorICogc2dfZG1hX21hcmtfYnVzIGFkZHJlc3MgLSBNYXJrIHRoZSBzY2F0dGVybGlzdCBl bnRyeSBhcyBhIGJ1cyBhZGRyZXNzCisgKiBAc2c6CQkgU0cgZW50cnlTY2F0dGVybGlzdAorICoK KyAqIERlc2NyaXB0aW9uOgorICogICBNYXJrcyB0aGUgcGFzc2VkIGluIHNnIGVudHJ5IHRvIGlu ZGljYXRlIHRoYXQgdGhlIGRtYV9hZGRyZXNzIGlzCisgKiAgIGEgYnVzIGFkZHJlc3MgYW5kIGRv ZXNuJ3QgbmVlZCB0byBiZSB1bm1hcHBlZC4KKyAqKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZ19k bWFfbWFya19idXNfYWRkcmVzcyhzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQoreworCXNnLT5wYWdl X2xpbmsgfD0gU0dfRE1BX0JVU19BRERSRVNTOworfQorCisvKioKKyAqIHNnX3VubWFya19wY2lf cDJwZG1hIC0gVW5tYXJrIHRoZSBzY2F0dGVybGlzdCBlbnRyeSBhcyBhIGJ1cyBhZGRyZXNzCisg KiBAc2c6CQkgU0cgZW50cnlTY2F0dGVybGlzdAorICoKKyAqIERlc2NyaXB0aW9uOgorICogICBD bGVhcnMgdGhlIGJ1cyBhZGRyZXNzIG1hcmsuCisgKiovCitzdGF0aWMgaW5saW5lIHZvaWQgc2df ZG1hX3VubWFya19idXNfYWRkcmVzcyhzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQoreworCXNnLT5w YWdlX2xpbmsgJj0gflNHX0RNQV9CVVNfQUREUkVTUzsKK30KKwogLyoqCiAgKiBzZ19waHlzIC0g UmV0dXJuIHBoeXNpY2FsIGFkZHJlc3Mgb2YgYW4gc2cgZW50cnkKICAqIEBzZzoJICAgICBTRyBl bnRyeQpkaWZmIC0tZ2l0IGEva2VybmVsL2RtYS9LY29uZmlnIGIva2VybmVsL2RtYS9LY29uZmln CmluZGV4IDFiMDIxNzk3NThjYi4uNmU1ZTFkOGUxMzI5IDEwMDY0NAotLS0gYS9rZXJuZWwvZG1h L0tjb25maWcKKysrIGIva2VybmVsL2RtYS9LY29uZmlnCkBAIC0yNyw2ICsyNywxNiBAQCBjb25m aWcgQVJDSF9IQVNfRE1BX01BUF9ESVJFQ1QKIGNvbmZpZyBORUVEX1NHX0RNQV9MRU5HVEgKIAli b29sCiAKKyMKKyMgUENJIFAyUERNQSBuZWVkcyB0byBzdG9yZSBidXMgYWRkcmVzc2VzIGluIHRo ZSBTR0wncyBkbWFfYWRkcmVzcyBzbyB0aGF0IHRoZQorIyBkbWFfdW5tYXBfc2coKSBpbXBsZW1l bnRhdGlvbnMgY2FuIGtub3cgbm90IHRvIHVubWFwIHRob3NlIHNlZ21lbnRzLgorIyBUaGUgZmxh ZyBpcyBzdG9yZWQgaW4gdGhlIDNyZCBiaXQgaW4gdGhlIHBhZ2VfbGluayBmaWVsZCBpbiB0aGUg U0dMCisjIHdoaWNoIG1lYW5zIHRoaXMgY2FuIG9ubHkgYmUgZG9uZSBvbiA2NGJpdCBzeXN0ZW1z LgorIworY29uZmlnIE5FRURfU0dfRE1BX0JVU19BRERSX0ZMQUcKKwlkZXBlbmRzIG9uIDY0QklU CisJYm9vbAorCiBjb25maWcgTkVFRF9ETUFfTUFQX1NUQVRFCiAJYm9vbAogCi0tIAoyLjMwLjIK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlvbW11IG1h aWxpbmcgbGlzdAppb21tdUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3Rz LmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9pb21tdQ==