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=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable 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 A66D0C433E6 for ; Thu, 21 Jan 2021 16:47:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5902A23A52 for ; Thu, 21 Jan 2021 16:47:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387512AbhAUQrm (ORCPT ); Thu, 21 Jan 2021 11:47:42 -0500 Received: from new1-smtp.messagingengine.com ([66.111.4.221]:56965 "EHLO new1-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388069AbhAUQhv (ORCPT ); Thu, 21 Jan 2021 11:37:51 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.nyi.internal (Postfix) with ESMTP id 52C6258052E; Thu, 21 Jan 2021 11:36:12 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Thu, 21 Jan 2021 11:36:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s=fm1; bh= YJdxl7AyCvWTYx/FjMErajpnwze1gn0rJs1EcbgXfwo=; b=hv9i9oYm8t2EEGgZ Rg8zBM6SfuJwrknmfLal3HvjlkNDzJbtm7PgwWqE2198r32F3Uyl19++yK1FiFnY YomFQuSeP1au66IAWwQEES+zU24v2Jt/Uj9jGs7gZ6GK6GyItrd/s6MtsuhDcPc6 xmZj4k2c+cnBumfPQJQh/uZC1MjD1huwBcUdeibhAEVo5sXIcefHeMxaBgIqTcGg gsdURuGTOwSgzg8TD4YgXjhCX3ME99IkzpuS/P4WxmkENo2c/nd2w63QwzcU2RsR JHNk3My73hYQtAXZvq3BP1TdxvTEqNhASRWX2/934swz/2+2w2wHiok8esIduAmX xubo9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=YJdxl7AyCvWTYx/FjMErajpnwze1gn0rJs1EcbgXf wo=; b=DhLfONsiVOMCw7tvUWhAloT5uPGlr+xPaLXsv2Xx6Go5lZ2nbP3giQxos MJ7HIVXzNjFSW24HcsULZb+zVHBIQoy4Ja3B6lJAAD4gSgNRybAEHV/d/S+cux+Z Fe1fWv9+NdMfkSYpR7qC2fRYDiljP1D2nh229q97sITzO18a/6WUAfI/ByXyBpkt GiL0OhWo/7u0RFcjQzQu9duILNz+kKE/FzmPkjsBpyFPqHYglNqbHdUjpO38vriY QaRouUSoKM65XHLSQ1SrYeKvEdc7WQr2KmSxbqfaP9BUJJiCVnwwHlmgr62Od99S gF/SUf/eZNvaANg6g/4E/e1wUJGdw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudeggdelfecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhggtgfgsehtkeertdertdejnecuhfhrohhmpeforgigihhm vgcutfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrfgrth htvghrnhepjeeugfegkeffgfeuvedtvddufffhjeffjeejvddvudduteehhfefhfefgeei keeknecukfhppeeltddrkeelrdeikedrjeeinecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Received: from localhost (lfbn-tou-1-1502-76.w90-89.abo.wanadoo.fr [90.89.68.76]) by mail.messagingengine.com (Postfix) with ESMTPA id BCF9B1080057; Thu, 21 Jan 2021 11:36:11 -0500 (EST) From: Maxime Ripard To: Maarten Lankhorst , Thomas Zimmermann , Maxime Ripard , Daniel Vetter , David Airlie Cc: dri-devel@lists.freedesktop.org, Maxime Ripard , Daniel Vetter , Jonathan Corbet , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 11/11] drm/todo: Remove the drm_atomic_state todo item Date: Thu, 21 Jan 2021 17:35:36 +0100 Message-Id: <20210121163537.1466118-11-maxime@cerno.tech> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210121163537.1466118-1-maxime@cerno.tech> References: <20210121163537.1466118-1-maxime@cerno.tech> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Only planes' prepare_fb and cleanup_fb, and encoders' atomic_check and atomic_mode_set hooks remain with an object state and not the global drm_atomic_state. prepare_fb and cleanup_fb operate by design on a given state and depending on the calling site can operate on either the old or new state, so it doesn't really make much sense to convert them. The encoders' atomic_check and atomic_mode_set operate on the CRTC and connector state connected to them since encoders don't have a state of their own. Without those state pointers, we would need to get the CRTC through the drm_connector_state crtc pointer. However, in order to get the drm_connector_state pointer, we would need to get the connector itself and while usually we have a single connector connected to the encoder, we can't really get it from the encoder at the moment since it could be behind any number of bridges. While this could be addressed by (for example) listing all the connectors and finding the one that has the encoder as its source, it feels like an unnecessary rework for something that is slowly getting replaced by bridges. Since all the users that matter have been converted, let's remove the TODO item. Signed-off-by: Maxime Ripard --- Changes from v1: - New patch --- Documentation/gpu/todo.rst | 46 -------------------------------------- 1 file changed, 46 deletions(-) diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index 009d8e6c7e3c..609794108f5a 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -440,52 +440,6 @@ Contact: Emil Velikov, respective driver maintainers Level: Intermediate -Plumb drm_atomic_state all over -------------------------------- - -Currently various atomic functions take just a single or a handful of -object states (eg. plane state). While that single object state can -suffice for some simple cases, we often have to dig out additional -object states for dealing with various dependencies between the individual -objects or the hardware they represent. The process of digging out the -additional states is rather non-intuitive and error prone. - -To fix that most functions should rather take the overall -drm_atomic_state as one of their parameters. The other parameters -would generally be the object(s) we mainly want to interact with. - -For example, instead of - -.. code-block:: c - - int (*atomic_check)(struct drm_plane *plane, struct drm_plane_state *state); - -we would have something like - -.. code-block:: c - - int (*atomic_check)(struct drm_plane *plane, struct drm_atomic_state *state); - -The implementation can then trivially gain access to any required object -state(s) via drm_atomic_get_plane_state(), drm_atomic_get_new_plane_state(), -drm_atomic_get_old_plane_state(), and their equivalents for -other object types. - -Additionally many drivers currently access the object->state pointer -directly in their commit functions. That is not going to work if we -eg. want to allow deeper commit pipelines as those pointers could -then point to the states corresponding to a future commit instead of -the current commit we're trying to process. Also non-blocking commits -execute locklessly so there are serious concerns with dereferencing -the object->state pointers without holding the locks that protect them. -Use of drm_atomic_get_new_plane_state(), drm_atomic_get_old_plane_state(), -etc. avoids these problems as well since they relate to a specific -commit via the passed in drm_atomic_state. - -Contact: Ville Syrjälä, Daniel Vetter - -Level: Intermediate - Use struct dma_buf_map throughout codebase ------------------------------------------ -- 2.29.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 X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49F80C433E6 for ; Fri, 22 Jan 2021 08:45:54 +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 0F416235F9 for ; Fri, 22 Jan 2021 08:45:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0F416235F9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cerno.tech 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 086356E199; Fri, 22 Jan 2021 08:45:44 +0000 (UTC) Received: from new1-smtp.messagingengine.com (new1-smtp.messagingengine.com [66.111.4.221]) by gabe.freedesktop.org (Postfix) with ESMTPS id 028B46E916 for ; Thu, 21 Jan 2021 16:36:13 +0000 (UTC) Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.nyi.internal (Postfix) with ESMTP id 52C6258052E; Thu, 21 Jan 2021 11:36:12 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Thu, 21 Jan 2021 11:36:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s=fm1; bh= YJdxl7AyCvWTYx/FjMErajpnwze1gn0rJs1EcbgXfwo=; b=hv9i9oYm8t2EEGgZ Rg8zBM6SfuJwrknmfLal3HvjlkNDzJbtm7PgwWqE2198r32F3Uyl19++yK1FiFnY YomFQuSeP1au66IAWwQEES+zU24v2Jt/Uj9jGs7gZ6GK6GyItrd/s6MtsuhDcPc6 xmZj4k2c+cnBumfPQJQh/uZC1MjD1huwBcUdeibhAEVo5sXIcefHeMxaBgIqTcGg gsdURuGTOwSgzg8TD4YgXjhCX3ME99IkzpuS/P4WxmkENo2c/nd2w63QwzcU2RsR JHNk3My73hYQtAXZvq3BP1TdxvTEqNhASRWX2/934swz/2+2w2wHiok8esIduAmX xubo9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=YJdxl7AyCvWTYx/FjMErajpnwze1gn0rJs1EcbgXf wo=; b=DhLfONsiVOMCw7tvUWhAloT5uPGlr+xPaLXsv2Xx6Go5lZ2nbP3giQxos MJ7HIVXzNjFSW24HcsULZb+zVHBIQoy4Ja3B6lJAAD4gSgNRybAEHV/d/S+cux+Z Fe1fWv9+NdMfkSYpR7qC2fRYDiljP1D2nh229q97sITzO18a/6WUAfI/ByXyBpkt GiL0OhWo/7u0RFcjQzQu9duILNz+kKE/FzmPkjsBpyFPqHYglNqbHdUjpO38vriY QaRouUSoKM65XHLSQ1SrYeKvEdc7WQr2KmSxbqfaP9BUJJiCVnwwHlmgr62Od99S gF/SUf/eZNvaANg6g/4E/e1wUJGdw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudeggdelfecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhggtgfgsehtkeertdertdejnecuhfhrohhmpeforgigihhm vgcutfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrfgrth htvghrnhepjeeugfegkeffgfeuvedtvddufffhjeffjeejvddvudduteehhfefhfefgeei keeknecukfhppeeltddrkeelrdeikedrjeeinecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Received: from localhost (lfbn-tou-1-1502-76.w90-89.abo.wanadoo.fr [90.89.68.76]) by mail.messagingengine.com (Postfix) with ESMTPA id BCF9B1080057; Thu, 21 Jan 2021 11:36:11 -0500 (EST) From: Maxime Ripard To: Maarten Lankhorst , Thomas Zimmermann , Maxime Ripard , Daniel Vetter , David Airlie Subject: [PATCH v2 11/11] drm/todo: Remove the drm_atomic_state todo item Date: Thu, 21 Jan 2021 17:35:36 +0100 Message-Id: <20210121163537.1466118-11-maxime@cerno.tech> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210121163537.1466118-1-maxime@cerno.tech> References: <20210121163537.1466118-1-maxime@cerno.tech> MIME-Version: 1.0 X-Mailman-Approved-At: Fri, 22 Jan 2021 08:45:43 +0000 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: linux-doc@vger.kernel.org, Jonathan Corbet , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T25seSBwbGFuZXMnIHByZXBhcmVfZmIgYW5kIGNsZWFudXBfZmIsIGFuZCBlbmNvZGVycycgYXRv bWljX2NoZWNrIGFuZAphdG9taWNfbW9kZV9zZXQgaG9va3MgcmVtYWluIHdpdGggYW4gb2JqZWN0 IHN0YXRlIGFuZCBub3QgdGhlIGdsb2JhbApkcm1fYXRvbWljX3N0YXRlLgoKcHJlcGFyZV9mYiBh bmQgY2xlYW51cF9mYiBvcGVyYXRlIGJ5IGRlc2lnbiBvbiBhIGdpdmVuIHN0YXRlIGFuZApkZXBl bmRpbmcgb24gdGhlIGNhbGxpbmcgc2l0ZSBjYW4gb3BlcmF0ZSBvbiBlaXRoZXIgdGhlIG9sZCBv ciBuZXcKc3RhdGUsIHNvIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2UgbXVjaCBzZW5zZSB0byBjb252 ZXJ0IHRoZW0uCgpUaGUgZW5jb2RlcnMnIGF0b21pY19jaGVjayBhbmQgYXRvbWljX21vZGVfc2V0 IG9wZXJhdGUgb24gdGhlIENSVEMgYW5kCmNvbm5lY3RvciBzdGF0ZSBjb25uZWN0ZWQgdG8gdGhl bSBzaW5jZSBlbmNvZGVycyBkb24ndCBoYXZlIGEgc3RhdGUgb2YKdGhlaXIgb3duLiBXaXRob3V0 IHRob3NlIHN0YXRlIHBvaW50ZXJzLCB3ZSB3b3VsZCBuZWVkIHRvIGdldCB0aGUgQ1JUQwp0aHJv dWdoIHRoZSBkcm1fY29ubmVjdG9yX3N0YXRlIGNydGMgcG9pbnRlci4KCkhvd2V2ZXIsIGluIG9y ZGVyIHRvIGdldCB0aGUgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSBwb2ludGVyLCB3ZSB3b3VsZCBuZWVk CnRvIGdldCB0aGUgY29ubmVjdG9yIGl0c2VsZiBhbmQgd2hpbGUgdXN1YWxseSB3ZSBoYXZlIGEg c2luZ2xlIGNvbm5lY3Rvcgpjb25uZWN0ZWQgdG8gdGhlIGVuY29kZXIsIHdlIGNhbid0IHJlYWxs eSBnZXQgaXQgZnJvbSB0aGUgZW5jb2RlciBhdAp0aGUgbW9tZW50IHNpbmNlIGl0IGNvdWxkIGJl IGJlaGluZCBhbnkgbnVtYmVyIG9mIGJyaWRnZXMuCgpXaGlsZSB0aGlzIGNvdWxkIGJlIGFkZHJl c3NlZCBieSAoZm9yIGV4YW1wbGUpIGxpc3RpbmcgYWxsIHRoZQpjb25uZWN0b3JzIGFuZCBmaW5k aW5nIHRoZSBvbmUgdGhhdCBoYXMgdGhlIGVuY29kZXIgYXMgaXRzIHNvdXJjZSwgaXQKZmVlbHMg bGlrZSBhbiB1bm5lY2Vzc2FyeSByZXdvcmsgZm9yIHNvbWV0aGluZyB0aGF0IGlzIHNsb3dseSBn ZXR0aW5nCnJlcGxhY2VkIGJ5IGJyaWRnZXMuCgpTaW5jZSBhbGwgdGhlIHVzZXJzIHRoYXQgbWF0 dGVyIGhhdmUgYmVlbiBjb252ZXJ0ZWQsIGxldCdzIHJlbW92ZSB0aGUKVE9ETyBpdGVtLgoKU2ln bmVkLW9mZi1ieTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lQGNlcm5vLnRlY2g+CgotLS0KCkNoYW5n ZXMgZnJvbSB2MToKICAtIE5ldyBwYXRjaAotLS0KIERvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0 IHwgNDYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS90b2Rv LnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0CmluZGV4IDAwOWQ4ZTZjN2UzYy4uNjA5 Nzk0MTA4ZjVhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdAorKysgYi9E b2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdApAQCAtNDQwLDUyICs0NDAsNiBAQCBDb250YWN0OiBF bWlsIFZlbGlrb3YsIHJlc3BlY3RpdmUgZHJpdmVyIG1haW50YWluZXJzCiAKIExldmVsOiBJbnRl cm1lZGlhdGUKIAotUGx1bWIgZHJtX2F0b21pY19zdGF0ZSBhbGwgb3ZlcgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotCi1DdXJyZW50bHkgdmFyaW91cyBhdG9taWMgZnVuY3Rpb25z IHRha2UganVzdCBhIHNpbmdsZSBvciBhIGhhbmRmdWwgb2YKLW9iamVjdCBzdGF0ZXMgKGVnLiBw bGFuZSBzdGF0ZSkuIFdoaWxlIHRoYXQgc2luZ2xlIG9iamVjdCBzdGF0ZSBjYW4KLXN1ZmZpY2Ug Zm9yIHNvbWUgc2ltcGxlIGNhc2VzLCB3ZSBvZnRlbiBoYXZlIHRvIGRpZyBvdXQgYWRkaXRpb25h bAotb2JqZWN0IHN0YXRlcyBmb3IgZGVhbGluZyB3aXRoIHZhcmlvdXMgZGVwZW5kZW5jaWVzIGJl dHdlZW4gdGhlIGluZGl2aWR1YWwKLW9iamVjdHMgb3IgdGhlIGhhcmR3YXJlIHRoZXkgcmVwcmVz ZW50LiBUaGUgcHJvY2VzcyBvZiBkaWdnaW5nIG91dCB0aGUKLWFkZGl0aW9uYWwgc3RhdGVzIGlz IHJhdGhlciBub24taW50dWl0aXZlIGFuZCBlcnJvciBwcm9uZS4KLQotVG8gZml4IHRoYXQgbW9z dCBmdW5jdGlvbnMgc2hvdWxkIHJhdGhlciB0YWtlIHRoZSBvdmVyYWxsCi1kcm1fYXRvbWljX3N0 YXRlIGFzIG9uZSBvZiB0aGVpciBwYXJhbWV0ZXJzLiBUaGUgb3RoZXIgcGFyYW1ldGVycwotd291 bGQgZ2VuZXJhbGx5IGJlIHRoZSBvYmplY3Qocykgd2UgbWFpbmx5IHdhbnQgdG8gaW50ZXJhY3Qg d2l0aC4KLQotRm9yIGV4YW1wbGUsIGluc3RlYWQgb2YKLQotLi4gY29kZS1ibG9jazo6IGMKLQot ICAgaW50ICgqYXRvbWljX2NoZWNrKShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUpOwotCi13ZSB3b3VsZCBoYXZlIHNvbWV0aGluZyBsaWtlCi0K LS4uIGNvZGUtYmxvY2s6OiBjCi0KLSAgIGludCAoKmF0b21pY19jaGVjaykoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Ci0KLVRoZSBpbXBs ZW1lbnRhdGlvbiBjYW4gdGhlbiB0cml2aWFsbHkgZ2FpbiBhY2Nlc3MgdG8gYW55IHJlcXVpcmVk IG9iamVjdAotc3RhdGUocykgdmlhIGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKCksIGRybV9h dG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZSgpLAotZHJtX2F0b21pY19nZXRfb2xkX3BsYW5lX3N0 YXRlKCksIGFuZCB0aGVpciBlcXVpdmFsZW50cyBmb3IKLW90aGVyIG9iamVjdCB0eXBlcy4KLQot QWRkaXRpb25hbGx5IG1hbnkgZHJpdmVycyBjdXJyZW50bHkgYWNjZXNzIHRoZSBvYmplY3QtPnN0 YXRlIHBvaW50ZXIKLWRpcmVjdGx5IGluIHRoZWlyIGNvbW1pdCBmdW5jdGlvbnMuIFRoYXQgaXMg bm90IGdvaW5nIHRvIHdvcmsgaWYgd2UKLWVnLiB3YW50IHRvIGFsbG93IGRlZXBlciBjb21taXQg cGlwZWxpbmVzIGFzIHRob3NlIHBvaW50ZXJzIGNvdWxkCi10aGVuIHBvaW50IHRvIHRoZSBzdGF0 ZXMgY29ycmVzcG9uZGluZyB0byBhIGZ1dHVyZSBjb21taXQgaW5zdGVhZCBvZgotdGhlIGN1cnJl bnQgY29tbWl0IHdlJ3JlIHRyeWluZyB0byBwcm9jZXNzLiBBbHNvIG5vbi1ibG9ja2luZyBjb21t aXRzCi1leGVjdXRlIGxvY2tsZXNzbHkgc28gdGhlcmUgYXJlIHNlcmlvdXMgY29uY2VybnMgd2l0 aCBkZXJlZmVyZW5jaW5nCi10aGUgb2JqZWN0LT5zdGF0ZSBwb2ludGVycyB3aXRob3V0IGhvbGRp bmcgdGhlIGxvY2tzIHRoYXQgcHJvdGVjdCB0aGVtLgotVXNlIG9mIGRybV9hdG9taWNfZ2V0X25l d19wbGFuZV9zdGF0ZSgpLCBkcm1fYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUoKSwKLWV0Yy4g YXZvaWRzIHRoZXNlIHByb2JsZW1zIGFzIHdlbGwgc2luY2UgdGhleSByZWxhdGUgdG8gYSBzcGVj aWZpYwotY29tbWl0IHZpYSB0aGUgcGFzc2VkIGluIGRybV9hdG9taWNfc3RhdGUuCi0KLUNvbnRh Y3Q6IFZpbGxlIFN5cmrDpGzDpCwgRGFuaWVsIFZldHRlcgotCi1MZXZlbDogSW50ZXJtZWRpYXRl Ci0KIFVzZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgdGhyb3VnaG91dCBjb2RlYmFzZQogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gCjIuMjkuMgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==