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=-10.5 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,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 DFBB8C48BE6 for ; Mon, 14 Jun 2021 10:21:28 +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 A3F12611AB for ; Mon, 14 Jun 2021 10:21:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A3F12611AB 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 151E689D2F; Mon, 14 Jun 2021 10:21:28 +0000 (UTC) Received: from mail-qk1-x72c.google.com (mail-qk1-x72c.google.com [IPv6:2607:f8b0:4864:20::72c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B26F89D2F; Mon, 14 Jun 2021 10:21:27 +0000 (UTC) Received: by mail-qk1-x72c.google.com with SMTP id i68so34209092qke.3; Mon, 14 Jun 2021 03:21:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=n3UEddctlTgXqpyiUz6lZj3lDGm7OprQWeo8hT1UN7Q=; b=nTz4TIgF6e98LQUTlfsg31Y1EpDrUBEgfOFoXDZFmKKlgX8jPqiaG1PVIuR5Ta9Li6 3JMTrR+qUqf4FajebmEy91A6K9Lcx7aPyWpfwZ83EC9If1xTdaIcqjHyk/b1HrWeZX2C IBgdxo/SytRQAsQNP07XlCn4KV5Qp3LWP1WPMMIAPSbikwIulrEKJWRV+/5oCPx0xJKd 6c8Y0f8V7zltUN7Zc0+dbbqbcxXmS5yGlSUir6vvMaE9mvilo262O8PxpczJTsY3Qiap ELgWIPr3p8sNZ20FCbw7wvo8jQNdnQlBLBJo3pPmZs4ShAzSZJRQFfGKgGyaFRq9uNiW +Kow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=n3UEddctlTgXqpyiUz6lZj3lDGm7OprQWeo8hT1UN7Q=; b=Cjl89v8EQyYFX/L1DzQ1h9FEueGiMum09F9KjTqcVU99dDkmQwYn6z8FM2r2wuLB7A 9SUxi/T39L+vL4wQ8BlczTKSTj3b7pdtmVfSbTkA0udPyEO9PdtmSdUahQT3VeDhwQ3B E05EHfnh8aG4Mycgkx2tC6b8EtOSjVttEAJSi2FUUJ0hEk7L8pMXPRwWrMi5blDl1I8F RpoPncnpsdpvYELkPLitlHQLzGeltsGOftkTgfsF4el96j/zPMYJtafiFRLRfEZtBGjF OAnevEC2HR8cDUTTK9+GLFCuBPefrN1mPFgH+Pd1JVstb+3IHbboTUISc0ecG6WOfYe7 niHA== X-Gm-Message-State: AOAM530kENhfTl7Fcud1KCB9Ttbt7DTNbFmW/g1oAesnWM8nukcsskPA uJQSVaK8qGh76JuVvcBzptej/iIpICnJbONntpU= X-Google-Smtp-Source: ABdhPJyQokHLjW76GMK7TkbJO+dA3FZzzNKRStVmzI0McgNs3UZpdJiX8RlKGJrE1sh/oZ8hlnFzcU03LRX8nTWHyN8= X-Received: by 2002:a05:620a:228b:: with SMTP id o11mr15228243qkh.426.1623666086243; Mon, 14 Jun 2021 03:21:26 -0700 (PDT) MIME-Version: 1.0 References: <20210614095230.126284-1-thomas.hellstrom@linux.intel.com> <20210614095230.126284-3-thomas.hellstrom@linux.intel.com> In-Reply-To: <20210614095230.126284-3-thomas.hellstrom@linux.intel.com> From: Matthew Auld Date: Mon, 14 Jun 2021 11:20:59 +0100 Message-ID: Subject: Re: [Intel-gfx] [PATCH v3 2/4] drm/i915/ttm: Adjust gem flags and caching settings after a move To: =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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: Intel Graphics Development , Matthew Auld , ML dri-devel Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Mon, 14 Jun 2021 at 10:53, Thomas Hellstr=C3=B6m wrote: > > After a TTM move or object init we need to update the i915 gem flags and > caching settings to reflect the new placement. Currently caching settings > are not changed during the lifetime of an object, although that might > change moving forward if we run into performance issues or issues with > WC system page allocations. > Also introduce gpu_binds_iomem() and cpu_maps_iomem() to clean up the > various ways we previously used to detect this. > Finally, initialize the TTM object reserved to be able to update > flags and caching before anyone else gets hold of the object. > > Signed-off-by: Thomas Hellstr=C3=B6m > --- > v2: > - Style fixes (Reported by Matthew Auld) > v3: > - More style fixes. Clarify why we're updating caching settings after mov= e. > (Suggested by Matthew Auld) > --- > drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 111 +++++++++++++++++++----- > 1 file changed, 89 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i9= 15/gem/i915_gem_ttm.c > index 33ab47f1e05b..5176682a7d19 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c > @@ -70,6 +70,17 @@ static struct ttm_placement i915_sys_placement =3D { > .busy_placement =3D &lmem0_sys_placement_flags[1], > }; > > +static bool gpu_binds_iomem(struct ttm_resource *mem) > +{ > + return mem->mem_type !=3D TTM_PL_SYSTEM; > +} > + > +static bool cpu_maps_iomem(struct ttm_resource *mem) > +{ > + /* Once / if we support GGTT, this is also false for cached ttm_t= ts */ > + return mem->mem_type !=3D TTM_PL_SYSTEM; > +} > + > static void i915_ttm_adjust_lru(struct drm_i915_gem_object *obj); > > static struct ttm_tt *i915_ttm_tt_create(struct ttm_buffer_object *bo, > @@ -175,6 +186,40 @@ static void i915_ttm_free_cached_io_st(struct drm_i9= 15_gem_object *obj) > obj->ttm.cached_io_st =3D NULL; > } > > +static void > +i915_ttm_adjust_domains_after_cpu_move(struct drm_i915_gem_object *obj) > +{ > + struct ttm_buffer_object *bo =3D i915_gem_to_ttm(obj); > + > + if (cpu_maps_iomem(bo->resource) || bo->ttm->caching !=3D ttm_cac= hed) { > + obj->write_domain =3D I915_GEM_DOMAIN_WC; > + obj->read_domains =3D I915_GEM_DOMAIN_WC; > + } else { > + obj->write_domain =3D I915_GEM_DOMAIN_CPU; > + obj->read_domains =3D I915_GEM_DOMAIN_CPU; > + } > +} > + > +static void i915_ttm_adjust_gem_after_move(struct drm_i915_gem_object *o= bj) > +{ > + struct drm_i915_private *i915 =3D to_i915(obj->base.dev); > + struct ttm_buffer_object *bo =3D i915_gem_to_ttm(obj); > + unsigned int cache_level; > + > + obj->mem_flags &=3D ~(I915_BO_FLAG_STRUCT_PAGE | I915_BO_FLAG_IOM= EM); > + > + obj->mem_flags |=3D cpu_maps_iomem(bo->resource) ? I915_BO_FLAG_I= OMEM : > + I915_BO_FLAG_STRUCT_PAGE; > + > + if ((HAS_LLC(i915) || HAS_SNOOP(i915)) && !gpu_binds_iomem(bo->re= source) && > + bo->ttm->caching =3D=3D ttm_cached) > + cache_level =3D I915_CACHE_LLC; > + else > + cache_level =3D I915_CACHE_NONE; > + > + i915_gem_object_set_cache_coherency(obj, cache_level); > +} > + > static void i915_ttm_purge(struct drm_i915_gem_object *obj) > { > struct ttm_buffer_object *bo =3D i915_gem_to_ttm(obj); > @@ -190,8 +235,10 @@ static void i915_ttm_purge(struct drm_i915_gem_objec= t *obj) > > /* TTM's purge interface. Note that we might be reentering. */ > ret =3D ttm_bo_validate(bo, &place, &ctx); > - > if (!ret) { > + obj->write_domain =3D 0; > + obj->read_domains =3D 0; > + i915_ttm_adjust_gem_after_move(obj); > i915_ttm_free_cached_io_st(obj); > obj->mm.madv =3D __I915_MADV_PURGED; > } > @@ -273,12 +320,15 @@ i915_ttm_resource_get_st(struct drm_i915_gem_object= *obj, > struct ttm_resource *res) > { > struct ttm_buffer_object *bo =3D i915_gem_to_ttm(obj); > - struct ttm_resource_manager *man =3D > - ttm_manager_type(bo->bdev, res->mem_type); > > - if (man->use_tt) > + if (!gpu_binds_iomem(res)) > return i915_ttm_tt_get_st(bo->ttm); > > + /* > + * If CPU mapping differs, we need to add the ttm_tt pages to > + * the resulting st. Might make sense for GGTT. > + */ > + GEM_WARN_ON(!cpu_maps_iomem(res)); > return intel_region_ttm_node_to_st(obj->mm.region, res); > } > > @@ -290,8 +340,6 @@ static int i915_ttm_move(struct ttm_buffer_object *bo= , bool evict, > struct drm_i915_gem_object *obj =3D i915_ttm_to_gem(bo); > struct ttm_resource_manager *dst_man =3D > ttm_manager_type(bo->bdev, dst_mem->mem_type); > - struct ttm_resource_manager *src_man =3D > - ttm_manager_type(bo->bdev, bo->resource->mem_type); > struct intel_memory_region *dst_reg, *src_reg; > union { > struct ttm_kmap_iter_tt tt; > @@ -332,34 +380,36 @@ static int i915_ttm_move(struct ttm_buffer_object *= bo, bool evict, > if (IS_ERR(dst_st)) > return PTR_ERR(dst_st); > > - /* If we start mapping GGTT, we can no longer use man::use_tt her= e. */ > - dst_iter =3D dst_man->use_tt ? > + dst_iter =3D !cpu_maps_iomem(dst_mem) ? > ttm_kmap_iter_tt_init(&_dst_iter.tt, bo->ttm) : > ttm_kmap_iter_iomap_init(&_dst_iter.io, &dst_reg->iomap, > dst_st, dst_reg->region.start); > > - src_iter =3D src_man->use_tt ? > + src_iter =3D !cpu_maps_iomem(bo->resource) ? > ttm_kmap_iter_tt_init(&_src_iter.tt, bo->ttm) : > ttm_kmap_iter_iomap_init(&_src_iter.io, &src_reg->iomap, > obj->ttm.cached_io_st, > src_reg->region.start); > > ttm_move_memcpy(bo, dst_mem->num_pages, dst_iter, src_iter); > + /* Below dst_mem becomes bo->resource. */ > ttm_bo_move_sync_cleanup(bo, dst_mem); > + i915_ttm_adjust_domains_after_cpu_move(obj); > i915_ttm_free_cached_io_st(obj); > > - if (!dst_man->use_tt) { > + if (gpu_binds_iomem(dst_mem) || cpu_maps_iomem(dst_mem)) { > obj->ttm.cached_io_st =3D dst_st; > obj->ttm.get_io_page.sg_pos =3D dst_st->sgl; > obj->ttm.get_io_page.sg_idx =3D 0; > } > > + i915_ttm_adjust_gem_after_move(obj); > return 0; > } > > static int i915_ttm_io_mem_reserve(struct ttm_device *bdev, struct ttm_r= esource *mem) > { > - if (mem->mem_type < I915_PL_LMEM0) > + if (!cpu_maps_iomem(mem)) > return 0; > > mem->bus.caching =3D ttm_write_combined; > @@ -421,6 +471,16 @@ static int i915_ttm_get_pages(struct drm_i915_gem_ob= ject *obj) > if (ret) > return ret =3D=3D -ENOSPC ? -ENXIO : ret; > > + i915_ttm_adjust_lru(obj); > + if (bo->ttm && !ttm_tt_is_populated(bo->ttm)) { > + ret =3D ttm_tt_populate(bo->bdev, bo->ttm, &ctx); > + if (ret) > + return ret; > + > + i915_ttm_adjust_domains_after_cpu_move(obj); > + i915_ttm_adjust_gem_after_move(obj); > + } > + > /* Object either has a page vector or is an iomem object */ > st =3D bo->ttm ? i915_ttm_tt_get_st(bo->ttm) : obj->ttm.cached_io= _st; > if (IS_ERR(st)) > @@ -428,8 +488,6 @@ static int i915_ttm_get_pages(struct drm_i915_gem_obj= ect *obj) > > __i915_gem_object_set_pages(obj, st, i915_sg_dma_sizes(st->sgl)); > > - i915_ttm_adjust_lru(obj); > - > return ret; > } > > @@ -563,6 +621,7 @@ static u64 i915_ttm_mmap_offset(struct drm_i915_gem_o= bject *obj) > > const struct drm_i915_gem_object_ops i915_gem_ttm_obj_ops =3D { > .name =3D "i915_gem_object_ttm", > + .flags =3D I915_GEM_OBJECT_IS_SHRINKABLE, We set is_shrinkable for both lmem and smem? Does the current shrinker work with !shmem? I assume the put_pages() will just discard the page contents, which is not what we want? Maybe keep this disabled for now? Or am I missing something? > > .get_pages =3D i915_ttm_get_pages, > .put_pages =3D i915_ttm_put_pages, > @@ -599,6 +658,10 @@ int __i915_gem_ttm_object_init(struct intel_memory_r= egion *mem, > { > static struct lock_class_key lock_class; > struct drm_i915_private *i915 =3D mem->i915; > + struct ttm_operation_ctx ctx =3D { > + .interruptible =3D true, > + .no_wait_gpu =3D false, > + }; > enum ttm_bo_type bo_type; > size_t alignment =3D 0; > int ret; > @@ -618,15 +681,14 @@ int __i915_gem_ttm_object_init(struct intel_memory_= region *mem, > i915_gem_object_init(obj, &i915_gem_ttm_obj_ops, &lock_class, fla= gs); > i915_gem_object_init_memory_region(obj, mem); > i915_gem_object_make_unshrinkable(obj); > - obj->read_domains =3D I915_GEM_DOMAIN_WC | I915_GEM_DOMAIN_GTT; > - obj->mem_flags |=3D I915_BO_FLAG_IOMEM; > - i915_gem_object_set_cache_coherency(obj, I915_CACHE_NONE); > INIT_RADIX_TREE(&obj->ttm.get_io_page.radix, GFP_KERNEL | __GFP_N= OWARN); > mutex_init(&obj->ttm.get_io_page.lock); > > bo_type =3D (obj->flags & I915_BO_ALLOC_USER) ? ttm_bo_type_devic= e : > ttm_bo_type_kernel; > > + obj->base.vma_node.driver_private =3D i915_gem_to_ttm(obj); > + > /* > * If this function fails, it will call the destructor, but > * our caller still owns the object. So no freeing in the > @@ -634,14 +696,19 @@ int __i915_gem_ttm_object_init(struct intel_memory_= region *mem, > * Similarly, in delayed_destroy, we can't call ttm_bo_put() > * until successful initialization. > */ > - obj->base.vma_node.driver_private =3D i915_gem_to_ttm(obj); > - ret =3D ttm_bo_init(&i915->bdev, i915_gem_to_ttm(obj), size, > - bo_type, &i915_sys_placement, alignment, > - true, NULL, NULL, i915_ttm_bo_destroy); > + ret =3D ttm_bo_init_reserved(&i915->bdev, i915_gem_to_ttm(obj), s= ize, > + bo_type, &i915_sys_placement, alignmen= t, > + &ctx, NULL, NULL, i915_ttm_bo_destroy)= ; > + > + if (ret) > + goto out; > > - if (!ret) > - obj->ttm.created =3D true; > + obj->ttm.created =3D true; > + i915_ttm_adjust_domains_after_cpu_move(obj); > + i915_ttm_adjust_gem_after_move(obj); > + i915_gem_object_unlock(obj); > > +out: > /* i915 wants -ENXIO when out of memory region space. */ > return (ret =3D=3D -ENOSPC) ? -ENXIO : ret; > } > -- > 2.31.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx 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=-10.5 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,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 22953C4743C for ; Mon, 14 Jun 2021 10:21:33 +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 E9915611AB for ; Mon, 14 Jun 2021 10:21:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E9915611AB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 55F2E89DA5; Mon, 14 Jun 2021 10:21:28 +0000 (UTC) Received: from mail-qk1-x72c.google.com (mail-qk1-x72c.google.com [IPv6:2607:f8b0:4864:20::72c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B26F89D2F; Mon, 14 Jun 2021 10:21:27 +0000 (UTC) Received: by mail-qk1-x72c.google.com with SMTP id i68so34209092qke.3; Mon, 14 Jun 2021 03:21:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=n3UEddctlTgXqpyiUz6lZj3lDGm7OprQWeo8hT1UN7Q=; b=nTz4TIgF6e98LQUTlfsg31Y1EpDrUBEgfOFoXDZFmKKlgX8jPqiaG1PVIuR5Ta9Li6 3JMTrR+qUqf4FajebmEy91A6K9Lcx7aPyWpfwZ83EC9If1xTdaIcqjHyk/b1HrWeZX2C IBgdxo/SytRQAsQNP07XlCn4KV5Qp3LWP1WPMMIAPSbikwIulrEKJWRV+/5oCPx0xJKd 6c8Y0f8V7zltUN7Zc0+dbbqbcxXmS5yGlSUir6vvMaE9mvilo262O8PxpczJTsY3Qiap ELgWIPr3p8sNZ20FCbw7wvo8jQNdnQlBLBJo3pPmZs4ShAzSZJRQFfGKgGyaFRq9uNiW +Kow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=n3UEddctlTgXqpyiUz6lZj3lDGm7OprQWeo8hT1UN7Q=; b=Cjl89v8EQyYFX/L1DzQ1h9FEueGiMum09F9KjTqcVU99dDkmQwYn6z8FM2r2wuLB7A 9SUxi/T39L+vL4wQ8BlczTKSTj3b7pdtmVfSbTkA0udPyEO9PdtmSdUahQT3VeDhwQ3B E05EHfnh8aG4Mycgkx2tC6b8EtOSjVttEAJSi2FUUJ0hEk7L8pMXPRwWrMi5blDl1I8F RpoPncnpsdpvYELkPLitlHQLzGeltsGOftkTgfsF4el96j/zPMYJtafiFRLRfEZtBGjF OAnevEC2HR8cDUTTK9+GLFCuBPefrN1mPFgH+Pd1JVstb+3IHbboTUISc0ecG6WOfYe7 niHA== X-Gm-Message-State: AOAM530kENhfTl7Fcud1KCB9Ttbt7DTNbFmW/g1oAesnWM8nukcsskPA uJQSVaK8qGh76JuVvcBzptej/iIpICnJbONntpU= X-Google-Smtp-Source: ABdhPJyQokHLjW76GMK7TkbJO+dA3FZzzNKRStVmzI0McgNs3UZpdJiX8RlKGJrE1sh/oZ8hlnFzcU03LRX8nTWHyN8= X-Received: by 2002:a05:620a:228b:: with SMTP id o11mr15228243qkh.426.1623666086243; Mon, 14 Jun 2021 03:21:26 -0700 (PDT) MIME-Version: 1.0 References: <20210614095230.126284-1-thomas.hellstrom@linux.intel.com> <20210614095230.126284-3-thomas.hellstrom@linux.intel.com> In-Reply-To: <20210614095230.126284-3-thomas.hellstrom@linux.intel.com> From: Matthew Auld Date: Mon, 14 Jun 2021 11:20:59 +0100 Message-ID: To: =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= Subject: Re: [Intel-gfx] [PATCH v3 2/4] drm/i915/ttm: Adjust gem flags and caching settings after a move X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Intel Graphics Development , Matthew Auld , ML dri-devel Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gTW9uLCAxNCBKdW4gMjAyMSBhdCAxMDo1MywgVGhvbWFzIEhlbGxzdHLDtm0KPHRob21hcy5o ZWxsc3Ryb21AbGludXguaW50ZWwuY29tPiB3cm90ZToKPgo+IEFmdGVyIGEgVFRNIG1vdmUgb3Ig b2JqZWN0IGluaXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGk5MTUgZ2VtIGZsYWdzIGFuZAo+IGNh Y2hpbmcgc2V0dGluZ3MgdG8gcmVmbGVjdCB0aGUgbmV3IHBsYWNlbWVudC4gQ3VycmVudGx5IGNh Y2hpbmcgc2V0dGluZ3MKPiBhcmUgbm90IGNoYW5nZWQgZHVyaW5nIHRoZSBsaWZldGltZSBvZiBh biBvYmplY3QsIGFsdGhvdWdoIHRoYXQgbWlnaHQKPiBjaGFuZ2UgbW92aW5nIGZvcndhcmQgaWYg d2UgcnVuIGludG8gcGVyZm9ybWFuY2UgaXNzdWVzIG9yIGlzc3VlcyB3aXRoCj4gV0Mgc3lzdGVt IHBhZ2UgYWxsb2NhdGlvbnMuCj4gQWxzbyBpbnRyb2R1Y2UgZ3B1X2JpbmRzX2lvbWVtKCkgYW5k IGNwdV9tYXBzX2lvbWVtKCkgdG8gY2xlYW4gdXAgdGhlCj4gdmFyaW91cyB3YXlzIHdlIHByZXZp b3VzbHkgdXNlZCB0byBkZXRlY3QgdGhpcy4KPiBGaW5hbGx5LCBpbml0aWFsaXplIHRoZSBUVE0g b2JqZWN0IHJlc2VydmVkIHRvIGJlIGFibGUgdG8gdXBkYXRlCj4gZmxhZ3MgYW5kIGNhY2hpbmcg YmVmb3JlIGFueW9uZSBlbHNlIGdldHMgaG9sZCBvZiB0aGUgb2JqZWN0Lgo+Cj4gU2lnbmVkLW9m Zi1ieTogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29t Pgo+IC0tLQo+IHYyOgo+IC0gU3R5bGUgZml4ZXMgKFJlcG9ydGVkIGJ5IE1hdHRoZXcgQXVsZCkK PiB2MzoKPiAtIE1vcmUgc3R5bGUgZml4ZXMuIENsYXJpZnkgd2h5IHdlJ3JlIHVwZGF0aW5nIGNh Y2hpbmcgc2V0dGluZ3MgYWZ0ZXIgbW92ZS4KPiAgIChTdWdnZXN0ZWQgYnkgTWF0dGhldyBBdWxk KQo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMgfCAxMTEg KysrKysrKysrKysrKysrKysrKy0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA4OSBpbnNlcnRpb25z KCspLCAyMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f dHRtLmMKPiBpbmRleCAzM2FiNDdmMWUwNWIuLjUxNzY2ODJhN2QxOSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMKPiBAQCAtNzAsNiArNzAsMTcgQEAgc3RhdGlj IHN0cnVjdCB0dG1fcGxhY2VtZW50IGk5MTVfc3lzX3BsYWNlbWVudCA9IHsKPiAgICAgICAgIC5i dXN5X3BsYWNlbWVudCA9ICZsbWVtMF9zeXNfcGxhY2VtZW50X2ZsYWdzWzFdLAo+ICB9Owo+Cj4g K3N0YXRpYyBib29sIGdwdV9iaW5kc19pb21lbShzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0pCj4g K3sKPiArICAgICAgIHJldHVybiBtZW0tPm1lbV90eXBlICE9IFRUTV9QTF9TWVNURU07Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIGNwdV9tYXBzX2lvbWVtKHN0cnVjdCB0dG1fcmVzb3VyY2UgKm1l bSkKPiArewo+ICsgICAgICAgLyogT25jZSAvIGlmIHdlIHN1cHBvcnQgR0dUVCwgdGhpcyBpcyBh bHNvIGZhbHNlIGZvciBjYWNoZWQgdHRtX3R0cyAqLwo+ICsgICAgICAgcmV0dXJuIG1lbS0+bWVt X3R5cGUgIT0gVFRNX1BMX1NZU1RFTTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaTkxNV90dG1f YWRqdXN0X2xydShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPgo+ICBzdGF0aWMg c3RydWN0IHR0bV90dCAqaTkxNV90dG1fdHRfY3JlYXRlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm8sCj4gQEAgLTE3NSw2ICsxODYsNDAgQEAgc3RhdGljIHZvaWQgaTkxNV90dG1fZnJlZV9j YWNoZWRfaW9fc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgICAgICAgIG9i ai0+dHRtLmNhY2hlZF9pb19zdCA9IE5VTEw7Cj4gIH0KPgo+ICtzdGF0aWMgdm9pZAo+ICtpOTE1 X3R0bV9hZGp1c3RfZG9tYWluc19hZnRlcl9jcHVfbW92ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0g aTkxNV9nZW1fdG9fdHRtKG9iaik7Cj4gKwo+ICsgICAgICAgaWYgKGNwdV9tYXBzX2lvbWVtKGJv LT5yZXNvdXJjZSkgfHwgYm8tPnR0bS0+Y2FjaGluZyAhPSB0dG1fY2FjaGVkKSB7Cj4gKyAgICAg ICAgICAgICAgIG9iai0+d3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1dDOwo+ICsgICAg ICAgICAgICAgICBvYmotPnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9XQzsKPiArICAg ICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIG9iai0+d3JpdGVfZG9tYWluID0gSTkxNV9H RU1fRE9NQUlOX0NQVTsKPiArICAgICAgICAgICAgICAgb2JqLT5yZWFkX2RvbWFpbnMgPSBJOTE1 X0dFTV9ET01BSU5fQ1BVOwo+ICsgICAgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1 X3R0bV9hZGp1c3RfZ2VtX2FmdGVyX21vdmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKPiArewo+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1 KG9iai0+YmFzZS5kZXYpOwo+ICsgICAgICAgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9 IGk5MTVfZ2VtX3RvX3R0bShvYmopOwo+ICsgICAgICAgdW5zaWduZWQgaW50IGNhY2hlX2xldmVs Owo+ICsKPiArICAgICAgIG9iai0+bWVtX2ZsYWdzICY9IH4oSTkxNV9CT19GTEFHX1NUUlVDVF9Q QUdFIHwgSTkxNV9CT19GTEFHX0lPTUVNKTsKPiArCj4gKyAgICAgICBvYmotPm1lbV9mbGFncyB8 PSBjcHVfbWFwc19pb21lbShiby0+cmVzb3VyY2UpID8gSTkxNV9CT19GTEFHX0lPTUVNIDoKPiAr ICAgICAgICAgICAgICAgSTkxNV9CT19GTEFHX1NUUlVDVF9QQUdFOwo+ICsKPiArICAgICAgIGlm ICgoSEFTX0xMQyhpOTE1KSB8fCBIQVNfU05PT1AoaTkxNSkpICYmICFncHVfYmluZHNfaW9tZW0o Ym8tPnJlc291cmNlKSAmJgo+ICsgICAgICAgICAgIGJvLT50dG0tPmNhY2hpbmcgPT0gdHRtX2Nh Y2hlZCkKPiArICAgICAgICAgICAgICAgY2FjaGVfbGV2ZWwgPSBJOTE1X0NBQ0hFX0xMQzsKPiAr ICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgY2FjaGVfbGV2ZWwgPSBJOTE1X0NBQ0hFX05P TkU7Cj4gKwo+ICsgICAgICAgaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2Jq LCBjYWNoZV9sZXZlbCk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGk5MTVfdHRtX3B1cmdlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAgICAgICAgIHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8gPSBpOTE1X2dlbV90b190dG0ob2JqKTsKPiBAQCAtMTkwLDggKzIz NSwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X3R0bV9wdXJnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+Cj4gICAgICAgICAvKiBUVE0ncyBwdXJnZSBpbnRlcmZhY2UuIE5vdGUgdGhh dCB3ZSBtaWdodCBiZSByZWVudGVyaW5nLiAqLwo+ICAgICAgICAgcmV0ID0gdHRtX2JvX3ZhbGlk YXRlKGJvLCAmcGxhY2UsICZjdHgpOwo+IC0KPiAgICAgICAgIGlmICghcmV0KSB7Cj4gKyAgICAg ICAgICAgICAgIG9iai0+d3JpdGVfZG9tYWluID0gMDsKPiArICAgICAgICAgICAgICAgb2JqLT5y ZWFkX2RvbWFpbnMgPSAwOwo+ICsgICAgICAgICAgICAgICBpOTE1X3R0bV9hZGp1c3RfZ2VtX2Fm dGVyX21vdmUob2JqKTsKPiAgICAgICAgICAgICAgICAgaTkxNV90dG1fZnJlZV9jYWNoZWRfaW9f c3Qob2JqKTsKPiAgICAgICAgICAgICAgICAgb2JqLT5tbS5tYWR2ID0gX19JOTE1X01BRFZfUFVS R0VEOwo+ICAgICAgICAgfQo+IEBAIC0yNzMsMTIgKzMyMCwxNSBAQCBpOTE1X3R0bV9yZXNvdXJj ZV9nZXRfc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzKQo+ICB7Cj4gICAgICAgICBzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gaTkxNV9nZW1fdG9fdHRtKG9iaik7Cj4gLSAgICAg ICBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9Cj4gLSAgICAgICAgICAgICAgIHR0 bV9tYW5hZ2VyX3R5cGUoYm8tPmJkZXYsIHJlcy0+bWVtX3R5cGUpOwo+Cj4gLSAgICAgICBpZiAo bWFuLT51c2VfdHQpCj4gKyAgICAgICBpZiAoIWdwdV9iaW5kc19pb21lbShyZXMpKQo+ICAgICAg ICAgICAgICAgICByZXR1cm4gaTkxNV90dG1fdHRfZ2V0X3N0KGJvLT50dG0pOwo+Cj4gKyAgICAg ICAvKgo+ICsgICAgICAgICogSWYgQ1BVIG1hcHBpbmcgZGlmZmVycywgd2UgbmVlZCB0byBhZGQg dGhlIHR0bV90dCBwYWdlcyB0bwo+ICsgICAgICAgICogdGhlIHJlc3VsdGluZyBzdC4gTWlnaHQg bWFrZSBzZW5zZSBmb3IgR0dUVC4KPiArICAgICAgICAqLwo+ICsgICAgICAgR0VNX1dBUk5fT04o IWNwdV9tYXBzX2lvbWVtKHJlcykpOwo+ICAgICAgICAgcmV0dXJuIGludGVsX3JlZ2lvbl90dG1f bm9kZV90b19zdChvYmotPm1tLnJlZ2lvbiwgcmVzKTsKPiAgfQo+Cj4gQEAgLTI5MCw4ICszNDAs NiBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpi bywgYm9vbCBldmljdCwKPiAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSBpOTE1X3R0bV90b19nZW0oYm8pOwo+ICAgICAgICAgc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5h Z2VyICpkc3RfbWFuID0KPiAgICAgICAgICAgICAgICAgdHRtX21hbmFnZXJfdHlwZShiby0+YmRl diwgZHN0X21lbS0+bWVtX3R5cGUpOwo+IC0gICAgICAgc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5h Z2VyICpzcmNfbWFuID0KPiAtICAgICAgICAgICAgICAgdHRtX21hbmFnZXJfdHlwZShiby0+YmRl diwgYm8tPnJlc291cmNlLT5tZW1fdHlwZSk7Cj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbiAqZHN0X3JlZywgKnNyY19yZWc7Cj4gICAgICAgICB1bmlvbiB7Cj4gICAgICAgICAg ICAgICAgIHN0cnVjdCB0dG1fa21hcF9pdGVyX3R0IHR0Owo+IEBAIC0zMzIsMzQgKzM4MCwzNiBA QCBzdGF0aWMgaW50IGk5MTVfdHRtX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywg Ym9vbCBldmljdCwKPiAgICAgICAgIGlmIChJU19FUlIoZHN0X3N0KSkKPiAgICAgICAgICAgICAg ICAgcmV0dXJuIFBUUl9FUlIoZHN0X3N0KTsKPgo+IC0gICAgICAgLyogSWYgd2Ugc3RhcnQgbWFw cGluZyBHR1RULCB3ZSBjYW4gbm8gbG9uZ2VyIHVzZSBtYW46OnVzZV90dCBoZXJlLiAqLwo+IC0g ICAgICAgZHN0X2l0ZXIgPSBkc3RfbWFuLT51c2VfdHQgPwo+ICsgICAgICAgZHN0X2l0ZXIgPSAh Y3B1X21hcHNfaW9tZW0oZHN0X21lbSkgPwo+ICAgICAgICAgICAgICAgICB0dG1fa21hcF9pdGVy X3R0X2luaXQoJl9kc3RfaXRlci50dCwgYm8tPnR0bSkgOgo+ICAgICAgICAgICAgICAgICB0dG1f a21hcF9pdGVyX2lvbWFwX2luaXQoJl9kc3RfaXRlci5pbywgJmRzdF9yZWctPmlvbWFwLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3N0LCBkc3RfcmVnLT5y ZWdpb24uc3RhcnQpOwo+Cj4gLSAgICAgICBzcmNfaXRlciA9IHNyY19tYW4tPnVzZV90dCA/Cj4g KyAgICAgICBzcmNfaXRlciA9ICFjcHVfbWFwc19pb21lbShiby0+cmVzb3VyY2UpID8KPiAgICAg ICAgICAgICAgICAgdHRtX2ttYXBfaXRlcl90dF9pbml0KCZfc3JjX2l0ZXIudHQsIGJvLT50dG0p IDoKPiAgICAgICAgICAgICAgICAgdHRtX2ttYXBfaXRlcl9pb21hcF9pbml0KCZfc3JjX2l0ZXIu aW8sICZzcmNfcmVnLT5pb21hcCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9iai0+dHRtLmNhY2hlZF9pb19zdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNyY19yZWctPnJlZ2lvbi5zdGFydCk7Cj4KPiAgICAgICAgIHR0bV9t b3ZlX21lbWNweShibywgZHN0X21lbS0+bnVtX3BhZ2VzLCBkc3RfaXRlciwgc3JjX2l0ZXIpOwo+ ICsgICAgICAgLyogQmVsb3cgZHN0X21lbSBiZWNvbWVzIGJvLT5yZXNvdXJjZS4gKi8KPiAgICAg ICAgIHR0bV9ib19tb3ZlX3N5bmNfY2xlYW51cChibywgZHN0X21lbSk7Cj4gKyAgICAgICBpOTE1 X3R0bV9hZGp1c3RfZG9tYWluc19hZnRlcl9jcHVfbW92ZShvYmopOwo+ICAgICAgICAgaTkxNV90 dG1fZnJlZV9jYWNoZWRfaW9fc3Qob2JqKTsKPgo+IC0gICAgICAgaWYgKCFkc3RfbWFuLT51c2Vf dHQpIHsKPiArICAgICAgIGlmIChncHVfYmluZHNfaW9tZW0oZHN0X21lbSkgfHwgY3B1X21hcHNf aW9tZW0oZHN0X21lbSkpIHsKPiAgICAgICAgICAgICAgICAgb2JqLT50dG0uY2FjaGVkX2lvX3N0 ID0gZHN0X3N0Owo+ICAgICAgICAgICAgICAgICBvYmotPnR0bS5nZXRfaW9fcGFnZS5zZ19wb3Mg PSBkc3Rfc3QtPnNnbDsKPiAgICAgICAgICAgICAgICAgb2JqLT50dG0uZ2V0X2lvX3BhZ2Uuc2df aWR4ID0gMDsKPiAgICAgICAgIH0KPgo+ICsgICAgICAgaTkxNV90dG1fYWRqdXN0X2dlbV9hZnRl cl9tb3ZlKG9iaik7Cj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgaTkx NV90dG1faW9fbWVtX3Jlc2VydmUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1f cmVzb3VyY2UgKm1lbSkKPiAgewo+IC0gICAgICAgaWYgKG1lbS0+bWVtX3R5cGUgPCBJOTE1X1BM X0xNRU0wKQo+ICsgICAgICAgaWYgKCFjcHVfbWFwc19pb21lbShtZW0pKQo+ICAgICAgICAgICAg ICAgICByZXR1cm4gMDsKPgo+ICAgICAgICAgbWVtLT5idXMuY2FjaGluZyA9IHR0bV93cml0ZV9j b21iaW5lZDsKPiBAQCAtNDIxLDYgKzQ3MSwxNiBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2dldF9w YWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgICAgICAgaWYgKHJldCkK PiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCA9PSAtRU5PU1BDID8gLUVOWElPIDogcmV0Owo+ Cj4gKyAgICAgICBpOTE1X3R0bV9hZGp1c3RfbHJ1KG9iaik7Cj4gKyAgICAgICBpZiAoYm8tPnR0 bSAmJiAhdHRtX3R0X2lzX3BvcHVsYXRlZChiby0+dHRtKSkgewo+ICsgICAgICAgICAgICAgICBy ZXQgPSB0dG1fdHRfcG9wdWxhdGUoYm8tPmJkZXYsIGJvLT50dG0sICZjdHgpOwo+ICsgICAgICAg ICAgICAgICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g Kwo+ICsgICAgICAgICAgICAgICBpOTE1X3R0bV9hZGp1c3RfZG9tYWluc19hZnRlcl9jcHVfbW92 ZShvYmopOwo+ICsgICAgICAgICAgICAgICBpOTE1X3R0bV9hZGp1c3RfZ2VtX2FmdGVyX21vdmUo b2JqKTsKPiArICAgICAgIH0KPiArCj4gICAgICAgICAvKiBPYmplY3QgZWl0aGVyIGhhcyBhIHBh Z2UgdmVjdG9yIG9yIGlzIGFuIGlvbWVtIG9iamVjdCAqLwo+ICAgICAgICAgc3QgPSBiby0+dHRt ID8gaTkxNV90dG1fdHRfZ2V0X3N0KGJvLT50dG0pIDogb2JqLT50dG0uY2FjaGVkX2lvX3N0Owo+ ICAgICAgICAgaWYgKElTX0VSUihzdCkpCj4gQEAgLTQyOCw4ICs0ODgsNiBAQCBzdGF0aWMgaW50 IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+Cj4g ICAgICAgICBfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBzdCwgaTkxNV9zZ19kbWFf c2l6ZXMoc3QtPnNnbCkpOwo+Cj4gLSAgICAgICBpOTE1X3R0bV9hZGp1c3RfbHJ1KG9iaik7Cj4g LQo+ICAgICAgICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gQEAgLTU2Myw2ICs2MjEsNyBAQCBzdGF0 aWMgdTY0IGk5MTVfdHRtX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCj4KPiAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX3R0 bV9vYmpfb3BzID0gewo+ICAgICAgICAgLm5hbWUgPSAiaTkxNV9nZW1fb2JqZWN0X3R0bSIsCj4g KyAgICAgICAuZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJMRSwKCldlIHNldCBp c19zaHJpbmthYmxlIGZvciBib3RoIGxtZW0gYW5kIHNtZW0/IERvZXMgdGhlIGN1cnJlbnQgc2hy aW5rZXIKd29yayB3aXRoICFzaG1lbT8gSSBhc3N1bWUgdGhlIHB1dF9wYWdlcygpIHdpbGwganVz dCBkaXNjYXJkIHRoZSBwYWdlCmNvbnRlbnRzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50PyBN YXliZSBrZWVwIHRoaXMgZGlzYWJsZWQgZm9yIG5vdz8KT3IgYW0gSSBtaXNzaW5nIHNvbWV0aGlu Zz8KCj4KPiAgICAgICAgIC5nZXRfcGFnZXMgPSBpOTE1X3R0bV9nZXRfcGFnZXMsCj4gICAgICAg ICAucHV0X3BhZ2VzID0gaTkxNV90dG1fcHV0X3BhZ2VzLAo+IEBAIC01OTksNiArNjU4LDEwIEBA IGludCBfX2k5MTVfZ2VtX3R0bV9vYmplY3RfaW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtLAo+ICB7Cj4gICAgICAgICBzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tf Y2xhc3M7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1lbS0+aTkx NTsKPiArICAgICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7Cj4gKyAgICAgICAg ICAgICAgIC5pbnRlcnJ1cHRpYmxlID0gdHJ1ZSwKPiArICAgICAgICAgICAgICAgLm5vX3dhaXRf Z3B1ID0gZmFsc2UsCj4gKyAgICAgICB9Owo+ICAgICAgICAgZW51bSB0dG1fYm9fdHlwZSBib190 eXBlOwo+ICAgICAgICAgc2l6ZV90IGFsaWdubWVudCA9IDA7Cj4gICAgICAgICBpbnQgcmV0Owo+ IEBAIC02MTgsMTUgKzY4MSwxNCBAQCBpbnQgX19pOTE1X2dlbV90dG1fb2JqZWN0X2luaXQoc3Ry dWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKPiAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9p bml0KG9iaiwgJmk5MTVfZ2VtX3R0bV9vYmpfb3BzLCAmbG9ja19jbGFzcywgZmxhZ3MpOwo+ICAg ICAgICAgaTkxNV9nZW1fb2JqZWN0X2luaXRfbWVtb3J5X3JlZ2lvbihvYmosIG1lbSk7Cj4gICAg ICAgICBpOTE1X2dlbV9vYmplY3RfbWFrZV91bnNocmlua2FibGUob2JqKTsKPiAtICAgICAgIG9i ai0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1dDIHwgSTkxNV9HRU1fRE9NQUlOX0dU VDsKPiAtICAgICAgIG9iai0+bWVtX2ZsYWdzIHw9IEk5MTVfQk9fRkxBR19JT01FTTsKPiAtICAg ICAgIGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfY29oZXJlbmN5KG9iaiwgSTkxNV9DQUNIRV9O T05FKTsKPiAgICAgICAgIElOSVRfUkFESVhfVFJFRSgmb2JqLT50dG0uZ2V0X2lvX3BhZ2UucmFk aXgsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4pOwo+ICAgICAgICAgbXV0ZXhfaW5pdCgmb2Jq LT50dG0uZ2V0X2lvX3BhZ2UubG9jayk7Cj4KPiAgICAgICAgIGJvX3R5cGUgPSAob2JqLT5mbGFn cyAmIEk5MTVfQk9fQUxMT0NfVVNFUikgPyB0dG1fYm9fdHlwZV9kZXZpY2UgOgo+ICAgICAgICAg ICAgICAgICB0dG1fYm9fdHlwZV9rZXJuZWw7Cj4KPiArICAgICAgIG9iai0+YmFzZS52bWFfbm9k ZS5kcml2ZXJfcHJpdmF0ZSA9IGk5MTVfZ2VtX3RvX3R0bShvYmopOwo+ICsKPiAgICAgICAgIC8q Cj4gICAgICAgICAgKiBJZiB0aGlzIGZ1bmN0aW9uIGZhaWxzLCBpdCB3aWxsIGNhbGwgdGhlIGRl c3RydWN0b3IsIGJ1dAo+ICAgICAgICAgICogb3VyIGNhbGxlciBzdGlsbCBvd25zIHRoZSBvYmpl Y3QuIFNvIG5vIGZyZWVpbmcgaW4gdGhlCj4gQEAgLTYzNCwxNCArNjk2LDE5IEBAIGludCBfX2k5 MTVfZ2VtX3R0bV9vYmplY3RfaW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAo+ ICAgICAgICAgICogU2ltaWxhcmx5LCBpbiBkZWxheWVkX2Rlc3Ryb3ksIHdlIGNhbid0IGNhbGwg dHRtX2JvX3B1dCgpCj4gICAgICAgICAgKiB1bnRpbCBzdWNjZXNzZnVsIGluaXRpYWxpemF0aW9u Lgo+ICAgICAgICAgICovCj4gLSAgICAgICBvYmotPmJhc2Uudm1hX25vZGUuZHJpdmVyX3ByaXZh dGUgPSBpOTE1X2dlbV90b190dG0ob2JqKTsKPiAtICAgICAgIHJldCA9IHR0bV9ib19pbml0KCZp OTE1LT5iZGV2LCBpOTE1X2dlbV90b190dG0ob2JqKSwgc2l6ZSwKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgIGJvX3R5cGUsICZpOTE1X3N5c19wbGFjZW1lbnQsIGFsaWdubWVudCwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgIHRydWUsIE5VTEwsIE5VTEwsIGk5MTVfdHRtX2JvX2Rlc3Ry b3kpOwo+ICsgICAgICAgcmV0ID0gdHRtX2JvX2luaXRfcmVzZXJ2ZWQoJmk5MTUtPmJkZXYsIGk5 MTVfZ2VtX3RvX3R0bShvYmopLCBzaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9fdHlwZSwgJmk5MTVfc3lzX3BsYWNlbWVudCwgYWxpZ25tZW50LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eCwgTlVMTCwgTlVMTCwgaTkxNV90dG1fYm9f ZGVzdHJveSk7Cj4gKwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgZ290byBv dXQ7Cj4KPiAtICAgICAgIGlmICghcmV0KQo+IC0gICAgICAgICAgICAgICBvYmotPnR0bS5jcmVh dGVkID0gdHJ1ZTsKPiArICAgICAgIG9iai0+dHRtLmNyZWF0ZWQgPSB0cnVlOwo+ICsgICAgICAg aTkxNV90dG1fYWRqdXN0X2RvbWFpbnNfYWZ0ZXJfY3B1X21vdmUob2JqKTsKPiArICAgICAgIGk5 MTVfdHRtX2FkanVzdF9nZW1fYWZ0ZXJfbW92ZShvYmopOwo+ICsgICAgICAgaTkxNV9nZW1fb2Jq ZWN0X3VubG9jayhvYmopOwo+Cj4gK291dDoKPiAgICAgICAgIC8qIGk5MTUgd2FudHMgLUVOWElP IHdoZW4gb3V0IG9mIG1lbW9yeSByZWdpb24gc3BhY2UuICovCj4gICAgICAgICByZXR1cm4gKHJl dCA9PSAtRU5PU1BDKSA/IC1FTlhJTyA6IHJldDsKPiAgfQo+IC0tCj4gMi4zMS4xCj4KPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==