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=-14.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 7653BC07E95 for ; Tue, 13 Jul 2021 06:57:05 +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 3C500611C0 for ; Tue, 13 Jul 2021 06:57:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C500611C0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com 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 339E66E037; Tue, 13 Jul 2021 06:57:04 +0000 (UTC) Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3AA86E037; Tue, 13 Jul 2021 06:57:03 +0000 (UTC) Received: by mail-wm1-x32a.google.com with SMTP id l6so4598467wmq.0; Mon, 12 Jul 2021 23:57:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=cy079q31qXB4BvQ61x/GgLNgLlogDlpGpmHYR82mcr4=; b=Sz6h8Cl7CeuRGcd0WobLRbMD5EO3w/iY24tng6BEDd85ht3MSejAc1MhA51Y89YVCU BKZk05PBMdLpNqXiPyGqNPwiTRwvdzwfVzbem7nin4+fWvIoqe0NQh0KTZ2ui5ogJX8e Cpv4//kNTwnkXAJDa3lyoxnHos9ReRk9myHXDDeNdnqHgUtRQzVuoHQPdDBou4BhSbWS +flM17GI8xii+VWVYSsFT0UUgPW1yE/SvwoSZhNExHHsnybUz3ibWZowzCNgqsDt629k vvE1yhJGgN9x4bdBs8SXj+T6y9YCaQ29r+m6nMzpd9ql2+KVNmL1DeSjQA0kzrqH6Sd+ MAsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=cy079q31qXB4BvQ61x/GgLNgLlogDlpGpmHYR82mcr4=; b=gTIfCgDApQRglBHNxX7dMnTqtLj5YxcM3MtlsAl301Inv8g8RgbPjY6OkoyUU+UrhI f6zPPCAJO2RJYGh56s1C/NhTrUB0sfaHTWf6DEPMrzHWEu6c/XUOwhyJLR7+xynQGQPC 0E5Tak7axF8Mk5H8L26v6sYZksfsbAadM0p3c6L3SXpFEGvvDpgcoIr0nti9/RO8to05 fNPOLWMMelGw3OZb77HOCubs812KrYJD2/p+UBElK2hqNEVMoWFtR2yC1xvOwVFJNCcz MqM19yZoOXFW1m0N+C6CI9VpymDz4OfzaOeyHXP9qWnnOmhe+Q6HxTKyU+c6iQPJGOQv lgGQ== X-Gm-Message-State: AOAM530pzq9r8ahciblSt0vyyRL/wrgftYgWrhTIO8/M44ZBqECzSp1k D1jQlxhJf1BVaAIkD7P7Nek= X-Google-Smtp-Source: ABdhPJzv5keanHOvfjKMP+K0kNh5HHLrTzJMbE9Qy8Or0RjnzZQMGpZBEmskMow/yTTLvPNy8DmWyQ== X-Received: by 2002:a1c:c90c:: with SMTP id f12mr18866700wmb.80.1626159422319; Mon, 12 Jul 2021 23:57:02 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:7f5a:cff:4644:b698? ([2a02:908:1252:fb60:7f5a:cff:4644:b698]) by smtp.gmail.com with ESMTPSA id d14sm6083438wrs.49.2021.07.12.23.57.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Jul 2021 23:57:01 -0700 (PDT) Subject: Re: [PATCH v3 1/1] drm/ttm: Fix COW check To: Felix Kuehling , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210712220636.475675-1-Felix.Kuehling@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Tue, 13 Jul 2021 08:57:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210712220636.475675-1-Felix.Kuehling@amd.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US 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: Alex Deucher , christian.koenig@amd.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Am 13.07.21 um 00:06 schrieb Felix Kuehling: > KFD Thunk maps invisible VRAM BOs with PROT_NONE, MAP_PRIVATE. > is_cow_mapping returns true for these mappings. Add a check for > vm_flags & VM_WRITE to avoid mmap failures on private read-only or > PROT_NONE mappings. > > v2: protect against mprotect making a mapping writable after the fact > v3: update driver-specific vm_operations_structs > > Fixes: f91142c62161 ("drm/ttm: nuke VM_MIXEDMAP on BO mappings v3") > Signed-off-by: Felix Kuehling > Signed-off-by: Alex Deucher Reviewed-by: Christian König > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 3 ++- > drivers/gpu/drm/nouveau/nouveau_gem.c | 3 ++- > drivers/gpu/drm/radeon/radeon_gem.c | 3 ++- > drivers/gpu/drm/ttm/ttm_bo_vm.c | 14 +++++++++++++- > drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c | 1 + > include/drm/ttm/ttm_bo_api.h | 4 ++++ > 6 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index b3404c43a911..1aa750a6a5d2 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -79,7 +79,8 @@ static const struct vm_operations_struct amdgpu_gem_vm_ops = { > .fault = amdgpu_gem_fault, > .open = ttm_bo_vm_open, > .close = ttm_bo_vm_close, > - .access = ttm_bo_vm_access > + .access = ttm_bo_vm_access, > + .mprotect = ttm_bo_vm_mprotect > }; > > static void amdgpu_gem_object_free(struct drm_gem_object *gobj) > diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c > index 5b27845075a1..164ea564bb7a 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_gem.c > +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c > @@ -70,7 +70,8 @@ static const struct vm_operations_struct nouveau_ttm_vm_ops = { > .fault = nouveau_ttm_fault, > .open = ttm_bo_vm_open, > .close = ttm_bo_vm_close, > - .access = ttm_bo_vm_access > + .access = ttm_bo_vm_access, > + .mprotect = ttm_bo_vm_mprotect > }; > > void > diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c > index 458f92a70887..c19ad07eb7b5 100644 > --- a/drivers/gpu/drm/radeon/radeon_gem.c > +++ b/drivers/gpu/drm/radeon/radeon_gem.c > @@ -77,7 +77,8 @@ static const struct vm_operations_struct radeon_gem_vm_ops = { > .fault = radeon_gem_fault, > .open = ttm_bo_vm_open, > .close = ttm_bo_vm_close, > - .access = ttm_bo_vm_access > + .access = ttm_bo_vm_access, > + .mprotect = ttm_bo_vm_mprotect > }; > > static void radeon_gem_object_free(struct drm_gem_object *gobj) > diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c > index f56be5bc0861..fb325bad5db6 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c > +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c > @@ -542,17 +542,29 @@ int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr, > } > EXPORT_SYMBOL(ttm_bo_vm_access); > > +int ttm_bo_vm_mprotect(struct vm_area_struct *vma, unsigned long start, > + unsigned long end, unsigned long newflags) > +{ > + /* Enforce no COW since would have really strange behavior with it. */ > + if (is_cow_mapping(newflags) && (newflags & VM_WRITE)) > + return -EINVAL; > + > + return 0; > +} > +EXPORT_SYMBOL(ttm_bo_vm_mprotect); > + > static const struct vm_operations_struct ttm_bo_vm_ops = { > .fault = ttm_bo_vm_fault, > .open = ttm_bo_vm_open, > .close = ttm_bo_vm_close, > .access = ttm_bo_vm_access, > + .mprotect = ttm_bo_vm_mprotect, > }; > > int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo) > { > /* Enforce no COW since would have really strange behavior with it. */ > - if (is_cow_mapping(vma->vm_flags)) > + if (is_cow_mapping(vma->vm_flags) && (vma->vm_flags & VM_WRITE)) > return -EINVAL; > > ttm_bo_get(bo); > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c > index e6b1f98ec99f..e4bf7dc99320 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c > @@ -61,6 +61,7 @@ int vmw_mmap(struct file *filp, struct vm_area_struct *vma) > .fault = vmw_bo_vm_fault, > .open = ttm_bo_vm_open, > .close = ttm_bo_vm_close, > + .mprotect = ttm_bo_vm_mprotect, > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > .huge_fault = vmw_bo_vm_huge_fault, > #endif > diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h > index f681bbdbc698..40eb95875355 100644 > --- a/include/drm/ttm/ttm_bo_api.h > +++ b/include/drm/ttm/ttm_bo_api.h > @@ -605,6 +605,10 @@ void ttm_bo_vm_close(struct vm_area_struct *vma); > > int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr, > void *buf, int len, int write); > + > +int ttm_bo_vm_mprotect(struct vm_area_struct *vma, unsigned long start, > + unsigned long end, unsigned long newflags); > + > bool ttm_bo_delayed_delete(struct ttm_device *bdev, bool remove_all); > > vm_fault_t ttm_bo_vm_dummy_page(struct vm_fault *vmf, pgprot_t prot); 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, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 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 A2BDBC07E95 for ; Tue, 13 Jul 2021 06:57:09 +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 6BD6960FF4 for ; Tue, 13 Jul 2021 06:57:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6BD6960FF4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B79666E03B; Tue, 13 Jul 2021 06:57:04 +0000 (UTC) Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3AA86E037; Tue, 13 Jul 2021 06:57:03 +0000 (UTC) Received: by mail-wm1-x32a.google.com with SMTP id l6so4598467wmq.0; Mon, 12 Jul 2021 23:57:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=cy079q31qXB4BvQ61x/GgLNgLlogDlpGpmHYR82mcr4=; b=Sz6h8Cl7CeuRGcd0WobLRbMD5EO3w/iY24tng6BEDd85ht3MSejAc1MhA51Y89YVCU BKZk05PBMdLpNqXiPyGqNPwiTRwvdzwfVzbem7nin4+fWvIoqe0NQh0KTZ2ui5ogJX8e Cpv4//kNTwnkXAJDa3lyoxnHos9ReRk9myHXDDeNdnqHgUtRQzVuoHQPdDBou4BhSbWS +flM17GI8xii+VWVYSsFT0UUgPW1yE/SvwoSZhNExHHsnybUz3ibWZowzCNgqsDt629k vvE1yhJGgN9x4bdBs8SXj+T6y9YCaQ29r+m6nMzpd9ql2+KVNmL1DeSjQA0kzrqH6Sd+ MAsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=cy079q31qXB4BvQ61x/GgLNgLlogDlpGpmHYR82mcr4=; b=gTIfCgDApQRglBHNxX7dMnTqtLj5YxcM3MtlsAl301Inv8g8RgbPjY6OkoyUU+UrhI f6zPPCAJO2RJYGh56s1C/NhTrUB0sfaHTWf6DEPMrzHWEu6c/XUOwhyJLR7+xynQGQPC 0E5Tak7axF8Mk5H8L26v6sYZksfsbAadM0p3c6L3SXpFEGvvDpgcoIr0nti9/RO8to05 fNPOLWMMelGw3OZb77HOCubs812KrYJD2/p+UBElK2hqNEVMoWFtR2yC1xvOwVFJNCcz MqM19yZoOXFW1m0N+C6CI9VpymDz4OfzaOeyHXP9qWnnOmhe+Q6HxTKyU+c6iQPJGOQv lgGQ== X-Gm-Message-State: AOAM530pzq9r8ahciblSt0vyyRL/wrgftYgWrhTIO8/M44ZBqECzSp1k D1jQlxhJf1BVaAIkD7P7Nek= X-Google-Smtp-Source: ABdhPJzv5keanHOvfjKMP+K0kNh5HHLrTzJMbE9Qy8Or0RjnzZQMGpZBEmskMow/yTTLvPNy8DmWyQ== X-Received: by 2002:a1c:c90c:: with SMTP id f12mr18866700wmb.80.1626159422319; Mon, 12 Jul 2021 23:57:02 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:7f5a:cff:4644:b698? ([2a02:908:1252:fb60:7f5a:cff:4644:b698]) by smtp.gmail.com with ESMTPSA id d14sm6083438wrs.49.2021.07.12.23.57.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Jul 2021 23:57:01 -0700 (PDT) Subject: Re: [PATCH v3 1/1] drm/ttm: Fix COW check To: Felix Kuehling , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210712220636.475675-1-Felix.Kuehling@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Tue, 13 Jul 2021 08:57:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210712220636.475675-1-Felix.Kuehling@amd.com> Content-Language: en-US X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alex Deucher , christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" CgpBbSAxMy4wNy4yMSB1bSAwMDowNiBzY2hyaWViIEZlbGl4IEt1ZWhsaW5nOgo+IEtGRCBUaHVu ayBtYXBzIGludmlzaWJsZSBWUkFNIEJPcyB3aXRoIFBST1RfTk9ORSwgTUFQX1BSSVZBVEUuCj4g aXNfY293X21hcHBpbmcgcmV0dXJucyB0cnVlIGZvciB0aGVzZSBtYXBwaW5ncy4gQWRkIGEgY2hl Y2sgZm9yCj4gdm1fZmxhZ3MgJiBWTV9XUklURSB0byBhdm9pZCBtbWFwIGZhaWx1cmVzIG9uIHBy aXZhdGUgcmVhZC1vbmx5IG9yCj4gUFJPVF9OT05FIG1hcHBpbmdzLgo+Cj4gdjI6IHByb3RlY3Qg YWdhaW5zdCBtcHJvdGVjdCBtYWtpbmcgYSBtYXBwaW5nIHdyaXRhYmxlIGFmdGVyIHRoZSBmYWN0 Cj4gdjM6IHVwZGF0ZSBkcml2ZXItc3BlY2lmaWMgdm1fb3BlcmF0aW9uc19zdHJ1Y3RzCj4KPiBG aXhlczogZjkxMTQyYzYyMTYxICgiZHJtL3R0bTogbnVrZSBWTV9NSVhFRE1BUCBvbiBCTyBtYXBw aW5ncyB2MyIpCj4gU2lnbmVkLW9mZi1ieTogRmVsaXggS3VlaGxpbmcgPEZlbGl4Lkt1ZWhsaW5n QGFtZC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hl ckBhbWQuY29tPgoKUmV2aWV3ZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2Vu aWdAYW1kLmNvbT4KCj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2VtLmMgIHwgIDMgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2dlbS5j ICAgIHwgIDMgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyAgICAg IHwgIDMgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jICAgICAgICAgIHwg MTQgKysrKysrKysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9n bHVlLmMgfCAgMSArCj4gICBpbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oICAgICAgICAgICAg IHwgIDQgKysrKwo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+IGluZGV4 IGIzNDA0YzQzYTkxMS4uMWFhNzUwYTZhNWQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9nZW0uYwo+IEBAIC03OSw3ICs3OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dm1fb3BlcmF0aW9uc19zdHJ1Y3QgYW1kZ3B1X2dlbV92bV9vcHMgPSB7Cj4gICAJLmZhdWx0ID0g YW1kZ3B1X2dlbV9mYXVsdCwKPiAgIAkub3BlbiA9IHR0bV9ib192bV9vcGVuLAo+ICAgCS5jbG9z ZSA9IHR0bV9ib192bV9jbG9zZSwKPiAtCS5hY2Nlc3MgPSB0dG1fYm9fdm1fYWNjZXNzCj4gKwku YWNjZXNzID0gdHRtX2JvX3ZtX2FjY2VzcywKPiArCS5tcHJvdGVjdCA9IHR0bV9ib192bV9tcHJv dGVjdAo+ICAgfTsKPiAgIAo+ICAgc3RhdGljIHZvaWQgYW1kZ3B1X2dlbV9vYmplY3RfZnJlZShz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmopCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1 X2dlbS5jCj4gaW5kZXggNWIyNzg0NTA3NWExLi4xNjRlYTU2NGJiN2EgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMKPiBAQCAtNzAsNyArNzAsOCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IG5vdXZlYXVfdHRtX3ZtX29wcyA9IHsKPiAg IAkuZmF1bHQgPSBub3V2ZWF1X3R0bV9mYXVsdCwKPiAgIAkub3BlbiA9IHR0bV9ib192bV9vcGVu LAo+ICAgCS5jbG9zZSA9IHR0bV9ib192bV9jbG9zZSwKPiAtCS5hY2Nlc3MgPSB0dG1fYm9fdm1f YWNjZXNzCj4gKwkuYWNjZXNzID0gdHRtX2JvX3ZtX2FjY2VzcywKPiArCS5tcHJvdGVjdCA9IHR0 bV9ib192bV9tcHJvdGVjdAo+ICAgfTsKPiAgIAo+ICAgdm9pZAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX2dlbS5jCj4gaW5kZXggNDU4ZjkyYTcwODg3Li5jMTlhZDA3ZWI3YjUgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2VtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwo+IEBAIC03Nyw3ICs3Nyw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgcmFkZW9uX2dlbV92bV9vcHMgPSB7Cj4g ICAJLmZhdWx0ID0gcmFkZW9uX2dlbV9mYXVsdCwKPiAgIAkub3BlbiA9IHR0bV9ib192bV9vcGVu LAo+ICAgCS5jbG9zZSA9IHR0bV9ib192bV9jbG9zZSwKPiAtCS5hY2Nlc3MgPSB0dG1fYm9fdm1f YWNjZXNzCj4gKwkuYWNjZXNzID0gdHRtX2JvX3ZtX2FjY2VzcywKPiArCS5tcHJvdGVjdCA9IHR0 bV9ib192bV9tcHJvdGVjdAo+ICAgfTsKPiAgIAo+ICAgc3RhdGljIHZvaWQgcmFkZW9uX2dlbV9v YmplY3RfZnJlZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmopCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9i b192bS5jCj4gaW5kZXggZjU2YmU1YmMwODYxLi5mYjMyNWJhZDVkYjYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90 dG0vdHRtX2JvX3ZtLmMKPiBAQCAtNTQyLDE3ICs1NDIsMjkgQEAgaW50IHR0bV9ib192bV9hY2Nl c3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKPiAgIH0K PiAgIEVYUE9SVF9TWU1CT0wodHRtX2JvX3ZtX2FjY2Vzcyk7Cj4gICAKPiAraW50IHR0bV9ib192 bV9tcHJvdGVjdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFy dCwKPiArCQkgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsIHVuc2lnbmVkIGxvbmcgbmV3ZmxhZ3Mp Cj4gK3sKPiArCS8qIEVuZm9yY2Ugbm8gQ09XIHNpbmNlIHdvdWxkIGhhdmUgcmVhbGx5IHN0cmFu Z2UgYmVoYXZpb3Igd2l0aCBpdC4gKi8KPiArCWlmIChpc19jb3dfbWFwcGluZyhuZXdmbGFncykg JiYgKG5ld2ZsYWdzICYgVk1fV1JJVEUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wodHRtX2JvX3ZtX21wcm90ZWN0KTsKPiArCj4g ICBzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IHR0bV9ib192bV9vcHMg PSB7Cj4gICAJLmZhdWx0ID0gdHRtX2JvX3ZtX2ZhdWx0LAo+ICAgCS5vcGVuID0gdHRtX2JvX3Zt X29wZW4sCj4gICAJLmNsb3NlID0gdHRtX2JvX3ZtX2Nsb3NlLAo+ICAgCS5hY2Nlc3MgPSB0dG1f Ym9fdm1fYWNjZXNzLAo+ICsJLm1wcm90ZWN0ID0gdHRtX2JvX3ZtX21wcm90ZWN0LAo+ICAgfTsK PiAgIAo+ICAgaW50IHR0bV9ib19tbWFwX29iaihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwg c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKPiAgIHsKPiAgIAkvKiBFbmZvcmNlIG5vIENP VyBzaW5jZSB3b3VsZCBoYXZlIHJlYWxseSBzdHJhbmdlIGJlaGF2aW9yIHdpdGggaXQuICovCj4g LQlpZiAoaXNfY293X21hcHBpbmcodm1hLT52bV9mbGFncykpCj4gKwlpZiAoaXNfY293X21hcHBp bmcodm1hLT52bV9mbGFncykgJiYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkpCj4gICAJCXJl dHVybiAtRUlOVkFMOwo+ICAgCj4gICAJdHRtX2JvX2dldChibyk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMgYi9kcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF90dG1fZ2x1ZS5jCj4gaW5kZXggZTZiMWY5OGVjOTlmLi5lNGJmN2RjOTkz MjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRtX2dsdWUu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMKPiBAQCAt NjEsNiArNjEsNyBAQCBpbnQgdm13X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQo+ICAgCQkuZmF1bHQgPSB2bXdfYm9fdm1fZmF1bHQsCj4gICAJCS5v cGVuID0gdHRtX2JvX3ZtX29wZW4sCj4gICAJCS5jbG9zZSA9IHR0bV9ib192bV9jbG9zZSwKPiAr CQkubXByb3RlY3QgPSB0dG1fYm9fdm1fbXByb3RlY3QsCj4gICAjaWZkZWYgQ09ORklHX1RSQU5T UEFSRU5UX0hVR0VQQUdFCj4gICAJCS5odWdlX2ZhdWx0ID0gdm13X2JvX3ZtX2h1Z2VfZmF1bHQs Cj4gICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaCBi L2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgKPiBpbmRleCBmNjgxYmJkYmM2OTguLjQwZWI5 NTg3NTM1NSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oCj4gKysr IGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaAo+IEBAIC02MDUsNiArNjA1LDEwIEBAIHZv aWQgdHRtX2JvX3ZtX2Nsb3NlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKPiAgIAo+ICAg aW50IHR0bV9ib192bV9hY2Nlc3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVk IGxvbmcgYWRkciwKPiAgIAkJICAgICB2b2lkICpidWYsIGludCBsZW4sIGludCB3cml0ZSk7Cj4g Kwo+ICtpbnQgdHRtX2JvX3ZtX21wcm90ZWN0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1 bnNpZ25lZCBsb25nIHN0YXJ0LAo+ICsJCSAgICAgICB1bnNpZ25lZCBsb25nIGVuZCwgdW5zaWdu ZWQgbG9uZyBuZXdmbGFncyk7Cj4gKwo+ICAgYm9vbCB0dG1fYm9fZGVsYXllZF9kZWxldGUoc3Ry dWN0IHR0bV9kZXZpY2UgKmJkZXYsIGJvb2wgcmVtb3ZlX2FsbCk7Cj4gICAKPiAgIHZtX2ZhdWx0 X3QgdHRtX2JvX3ZtX2R1bW15X3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHBncHJvdF90IHBy b3QpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1k LWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==