From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D91B44908D7 for ; Sat, 25 Jul 2026 05:05:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784955932; cv=none; b=lnzvARslMITK+FX/gsA+M7fjzwrvXyvJN2uHCJ9fhdxT9wFwg5zAlVAFBpntYbDHlBmMX7SClDRkELW5kb4maaE7nTv0LzlHU+MbrQcp1DJeW1f48iIP90LeezEuxS/AZW3mL1BUgtqq0RkUHFJ+deEJ7zThH0sBTRYNPRuNAqI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784955932; c=relaxed/simple; bh=cthF1bJZ90U1uAzr9Mmt5PQuRel3qCWka5oafCdUfA4=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=IkL2xb1K+FkC/RlMiNU80hShIqXEoWEhjB/s7CvAPKnGuUhiI8Os+j6cgofawA2DAt7YMjAi91TIkmHlnpQyPATKy8Bo8QeNLit4Qz9j/Ub1EkvUOaynzmw+MXADG6CymDcnaN8rEWYuXGc9/AFujdmaGnY3pgwV8Be8M4p8TVg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=E+CsFBSP; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="E+CsFBSP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3FEEF1F000E9; Sat, 25 Jul 2026 05:05:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784955930; bh=GXJnhZf3O9BDdmnRyZyAEoVbDcvDgbstiYUjYyIK5V4=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=E+CsFBSPMJUxvNByeRBAHS33GnTsSf2C8eLSoiFRKe2mweYmEpgWemNj2+j3PWou0 ExN97AD+wq2Nv7x/NN2EBfzGMWMVjIb5KTCgxirVqS3A2LVCqW0N2gpW/tWCNsveGF rPB9REUErKa7P0TzrdRJLULNeAn1es8o3b2HVyj2aF+T1eZM1j7mOPFEJaIOH6ys1a SUbEEquphRSAO/kdkI/qHxF1MR53g5zoO3J1B+QrJKLePkWPZh3Q9PTJQVAFcsJvAW tnfNaCjHRP+7eK3kz6uDlGhEgh0b7HZg+N2jdKchJ32VfDdrkREWbN7ZYrX6AMOL42 0g/vQ0I1mdzYQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH RESEND 11/17] drm/spacemit: add Saturn DPU DRM device driver Reply-To: sashiko-reviews@lists.linux.dev To: "Cody Kang" Cc: robh@kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, neil.armstrong@linaro.org, olteanv@gmail.com, vkoul@kernel.org, conor+dt@kernel.org In-Reply-To: <20260725-k3-display-v1-11-6de34d80e86c@gmail.com> References: <20260725-k3-display-v1-0-6de34d80e86c@gmail.com> <20260725-k3-display-v1-11-6de34d80e86c@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sat, 25 Jul 2026 05:05:29 +0000 Message-Id: <20260725050530.3FEEF1F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 3 potential issue(= s) to consider: - [High] Stalling the atomic commit pipeline by calling wait_for_flip_done(= ) before commit_hw_done() - [High] Sleeping functions (usleep_range) called from atomic context in CR= TC enable/disable - [High] Sleeping function called from atomic context in plane update due t= o missing prepare_fb -- --- Patch [11]: [PATCH RESEND 11/17] drm/spacemit: add Saturn DPU DRM devic= e driver --- commit db43bd6ae677a859cea76ccf2390ca3d109d0fe0 Author: Cody Kang drm/spacemit: add Saturn DPU DRM device driver Add the DRM device for the SpacemiT K3 Saturn display processing unit and hook the driver up to the build. The SoC has two DPU instances; each drives one CRTC that scans out a single primary plane in linear RGB at up to 3840x2160@60 and feeds a downstream DP/eDP controller over an OF-graph endpoint. Buffers use drm_gem_shmem_helper. The AFBC/compressed decode path is not exposed and writeback is not implemented. [ ... ] > diff --git a/drivers/gpu/drm/spacemit/spacemit_drm.c b/drivers/gpu/drm/sp= acemit/spacemit_drm.c > new file mode 100644 > index 0000000000000..9fb6a7661b484 > --- /dev/null > +++ b/drivers/gpu/drm/spacemit/spacemit_drm.c > @@ -0,0 +1,132 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (C) 2025-2026 SpacemiT Co., Ltd. > + * > + */ [ ... ] > +static void spacemit_drm_atomic_commit_tail(struct drm_atomic_commit *ol= d_state) > +{ > + struct drm_device *dev =3D old_state->dev; > + > + drm_atomic_helper_commit_modeset_disables(dev, old_state); > + > + drm_atomic_helper_commit_modeset_enables(dev, old_state); > + > + drm_atomic_helper_commit_planes(dev, old_state, > + DRM_PLANE_COMMIT_ACTIVE_ONLY); > + > + drm_atomic_helper_wait_for_flip_done(dev, old_state); > + > + drm_atomic_helper_commit_hw_done(old_state); [Severity: High] Does calling drm_atomic_helper_wait_for_flip_done() before drm_atomic_helper_commit_hw_done() stall the commit pipeline? drm_atomic_helper_commit_hw_done() signals that the driver has finished programming the hardware, which unblocks subsequent non-blocking atomic com= mits. Waiting for the VBLANK page flip to complete before signaling hw_done blocks all subsequent commits, artificially serializing the commit pipeline and defeating the non-blocking design of atomic KMS. Could this lead to UI stutter and performance regressions? > + > + drm_atomic_helper_cleanup_planes(dev, old_state); > +} I also noticed a few additional regressions in files that appear to be part= of this driver series: [Severity: High] Are these usleep_range() calls safe in atomic context? According to DRM subsystem guidelines, CRTC atomic enable/disable callbacks execute in atomic context during non-blocking commits where sleeping is forbidden. Both spacemit_crtc_atomic_enable() and dpu_pm_suspend() (called from spacemit_crtc_atomic_disable()) invoke usleep_range(): drivers/gpu/drm/spacemit/spacemit_crtc.c:spacemit_crtc_atomic_enable() { ... dpu_reset_assert(a_crtc->dev, "mclk", a_crtc->mclk_reset); dpu_reset_assert(a_crtc->dev, "aclk", a_crtc->aclk_reset); dpu_reset_assert(a_crtc->dev, "dsc", a_crtc->dsc_reset); usleep_range(10000, 20000); ... } drivers/gpu/drm/spacemit/spacemit_crtc.c:dpu_pm_suspend() { ... dpu_reset_assert(dev, "aclk", a_crtc->aclk_reset); dpu_reset_assert(dev, "dsc", a_crtc->dsc_reset); usleep_range(10000, 20000); ... } Calling sleeping functions in this context causes kernel warnings and system instability. Should non-sleeping delays like udelay() be used instead? [Severity: High] Does spacemit_plane_atomic_update() sleep in atomic context? The DRM subsystem guidelines explicitly state that Plane atomic update call= backs execute in atomic context where sleeping is forbidden. spacemit_plane_atomic_update() calls spacemit_dmmu_map(): drivers/gpu/drm/spacemit/spacemit_planes.c:spacemit_plane_atomic_update() { ... ret =3D spacemit_dmmu_map(plane->state->fb, &spacemit_pstate->mmu_tbl, tbu_id, a_crtc->cl_rdma, plane); ... } which then calls drm_gem_shmem_get_pages_sgt(): drivers/gpu/drm/spacemit/spacemit_dmmu.c:spacemit_dmmu_map() { ... sgt =3D drm_gem_shmem_get_pages_sgt(to_drm_gem_shmem_obj(fb->obj[0])); if (IS_ERR(sgt)) ... } This helper acquires a sleeping mutex via dma_resv_lock_interruptible(). Th= is causes a sleep in atomic context, risking kernel panics. Should the driver implement a prepare_fb hook (e.g. drm_gem_shmem_plane_helper_prepare_fb) to pin the pages and obtain the SGT outside of the atomic update phase? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260725-k3-display= -v1-0-6de34d80e86c@gmail.com?part=3D11 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D9129C531D0 for ; Sat, 25 Jul 2026 05:05:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=UqmSBk1NlH1CRDB3hDm12BKsDG8FAdftnD3yv6ENjSo=; b=fK7sbgb0uCAqeQ 2CTjjfQMxVARFaTiqMxXCZ73Rdhn8mLswzV7uUlhYAeFRYJtZgvOtypYbgZTDetr8bJ6L7rIUCDfI NOSPClk/y1X96XCk/A/TUcvJWfY/wsbpMoMlksxJAu3q8Vp573BUkhHqEmnCn8pcLv089z6v/HN85 dsDxTOj8mEPBhcU3R8RirgaGVnFxDKJHMgltK18PtBJmwH2nF9SevirCz8vJBnoJ/r7FyZTA6nJBR 0EFpjtSnwkC2jFrK7WuZVQoX+wd3zu3rdepDGgkWCOZBR5HlRNIHO0v0heLNu8y3aq8rVcPwNZUrj wknr2iJOmci/0suSwy1Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnUZo-000000002xE-2L3m; Sat, 25 Jul 2026 05:05:32 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnUZn-000000002wv-15fE for linux-phy@lists.infradead.org; Sat, 25 Jul 2026 05:05:31 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id D830E42B8A; Sat, 25 Jul 2026 05:05:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3FEEF1F000E9; Sat, 25 Jul 2026 05:05:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784955930; bh=GXJnhZf3O9BDdmnRyZyAEoVbDcvDgbstiYUjYyIK5V4=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=E+CsFBSPMJUxvNByeRBAHS33GnTsSf2C8eLSoiFRKe2mweYmEpgWemNj2+j3PWou0 ExN97AD+wq2Nv7x/NN2EBfzGMWMVjIb5KTCgxirVqS3A2LVCqW0N2gpW/tWCNsveGF rPB9REUErKa7P0TzrdRJLULNeAn1es8o3b2HVyj2aF+T1eZM1j7mOPFEJaIOH6ys1a SUbEEquphRSAO/kdkI/qHxF1MR53g5zoO3J1B+QrJKLePkWPZh3Q9PTJQVAFcsJvAW tnfNaCjHRP+7eK3kz6uDlGhEgh0b7HZg+N2jdKchJ32VfDdrkREWbN7ZYrX6AMOL42 0g/vQ0I1mdzYQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH RESEND 11/17] drm/spacemit: add Saturn DPU DRM device driver To: "Cody Kang" Cc: robh@kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, neil.armstrong@linaro.org, olteanv@gmail.com, vkoul@kernel.org, conor+dt@kernel.org In-Reply-To: <20260725-k3-display-v1-11-6de34d80e86c@gmail.com> References: <20260725-k3-display-v1-0-6de34d80e86c@gmail.com> <20260725-k3-display-v1-11-6de34d80e86c@gmail.com> Date: Sat, 25 Jul 2026 05:05:29 +0000 Message-Id: <20260725050530.3FEEF1F000E9@smtp.kernel.org> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIFN0YWxsaW5nIHRoZSBh dG9taWMgY29tbWl0IHBpcGVsaW5lIGJ5IGNhbGxpbmcgd2FpdF9mb3JfZmxpcF9kb25lKCkgYmVm b3JlIGNvbW1pdF9od19kb25lKCkKLSBbSGlnaF0gU2xlZXBpbmcgZnVuY3Rpb25zICh1c2xlZXBf cmFuZ2UpIGNhbGxlZCBmcm9tIGF0b21pYyBjb250ZXh0IGluIENSVEMgZW5hYmxlL2Rpc2FibGUK LSBbSGlnaF0gU2xlZXBpbmcgZnVuY3Rpb24gY2FsbGVkIGZyb20gYXRvbWljIGNvbnRleHQgaW4g cGxhbmUgdXBkYXRlIGR1ZSB0byBtaXNzaW5nIHByZXBhcmVfZmIKLS0KCi0tLSBQYXRjaCBbMTFd OiBbUEFUQ0ggUkVTRU5EIDExLzE3XSBkcm0vc3BhY2VtaXQ6IGFkZCBTYXR1cm4gRFBVIERSTSBk ZXZpY2UgZHJpdmVyIC0tLQpjb21taXQgZGI0M2JkNmFlNjc3YTg1OWNlYTc2Y2NmMjM5MGNhM2Qx MDlkMGZlMApBdXRob3I6IENvZHkgS2FuZyA8Y29keWthbmcuaGtAZ21haWwuY29tPgoKZHJtL3Nw YWNlbWl0OiBhZGQgU2F0dXJuIERQVSBEUk0gZGV2aWNlIGRyaXZlcgoKQWRkIHRoZSBEUk0gZGV2 aWNlIGZvciB0aGUgU3BhY2VtaVQgSzMgU2F0dXJuIGRpc3BsYXkgcHJvY2Vzc2luZyB1bml0CmFu ZCBob29rIHRoZSBkcml2ZXIgdXAgdG8gdGhlIGJ1aWxkLiBUaGUgU29DIGhhcyB0d28gRFBVIGlu c3RhbmNlczsKZWFjaCBkcml2ZXMgb25lIENSVEMgdGhhdCBzY2FucyBvdXQgYSBzaW5nbGUgcHJp bWFyeSBwbGFuZSBpbiBsaW5lYXIKUkdCIGF0IHVwIHRvIDM4NDB4MjE2MEA2MCBhbmQgZmVlZHMg YSBkb3duc3RyZWFtIERQL2VEUCBjb250cm9sbGVyCm92ZXIgYW4gT0YtZ3JhcGggZW5kcG9pbnQu IEJ1ZmZlcnMgdXNlIGRybV9nZW1fc2htZW1faGVscGVyLiBUaGUKQUZCQy9jb21wcmVzc2VkIGRl Y29kZSBwYXRoIGlzIG5vdCBleHBvc2VkIGFuZCB3cml0ZWJhY2sgaXMgbm90CmltcGxlbWVudGVk LgoKWyAuLi4gXQoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NwYWNlbWl0L3NwYWNl bWl0X2RybS5jIGIvZHJpdmVycy9ncHUvZHJtL3NwYWNlbWl0L3NwYWNlbWl0X2RybS5jCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi45ZmI2YTc2NjFiNDg0Cj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zcGFjZW1pdC9zcGFjZW1pdF9k cm0uYwo+IEBAIC0wLDAgKzEsMTMyIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNS0yMDI2IFNwYWNlbWlUIENvLiwg THRkLgo+ICsgKgo+ICsgKi8KClsgLi4uIF0KCj4gK3N0YXRpYyB2b2lkIHNwYWNlbWl0X2RybV9h dG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfY29tbWl0ICpvbGRfc3RhdGUpCj4g K3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvbGRfc3RhdGUtPmRldjsKPiArCj4gKwlk cm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhkZXYsIG9sZF9zdGF0ZSk7 Cj4gKwo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhkZXYsIG9s ZF9zdGF0ZSk7Cj4gKwo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYsIG9s ZF9zdGF0ZSwKPiArCQkJCQlEUk1fUExBTkVfQ09NTUlUX0FDVElWRV9PTkxZKTsKPiArCj4gKwlk cm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mbGlwX2RvbmUoZGV2LCBvbGRfc3RhdGUpOwo+ICsK PiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKG9sZF9zdGF0ZSk7CgpbU2V2ZXJp dHk6IEhpZ2hdCkRvZXMgY2FsbGluZyBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mbGlwX2Rv bmUoKSBiZWZvcmUKZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoKSBzdGFsbCB0aGUg Y29tbWl0IHBpcGVsaW5lPwoKZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoKSBzaWdu YWxzIHRoYXQgdGhlIGRyaXZlciBoYXMgZmluaXNoZWQKcHJvZ3JhbW1pbmcgdGhlIGhhcmR3YXJl LCB3aGljaCB1bmJsb2NrcyBzdWJzZXF1ZW50IG5vbi1ibG9ja2luZyBhdG9taWMgY29tbWl0cy4K CldhaXRpbmcgZm9yIHRoZSBWQkxBTksgcGFnZSBmbGlwIHRvIGNvbXBsZXRlIGJlZm9yZSBzaWdu YWxpbmcgaHdfZG9uZSBibG9ja3MKYWxsIHN1YnNlcXVlbnQgY29tbWl0cywgYXJ0aWZpY2lhbGx5 IHNlcmlhbGl6aW5nIHRoZSBjb21taXQgcGlwZWxpbmUgYW5kCmRlZmVhdGluZyB0aGUgbm9uLWJs b2NraW5nIGRlc2lnbiBvZiBhdG9taWMgS01TLgoKQ291bGQgdGhpcyBsZWFkIHRvIFVJIHN0dXR0 ZXIgYW5kIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zPwoKPiArCj4gKwlkcm1fYXRvbWljX2hlbHBl cl9jbGVhbnVwX3BsYW5lcyhkZXYsIG9sZF9zdGF0ZSk7Cj4gK30KCkkgYWxzbyBub3RpY2VkIGEg ZmV3IGFkZGl0aW9uYWwgcmVncmVzc2lvbnMgaW4gZmlsZXMgdGhhdCBhcHBlYXIgdG8gYmUgcGFy dCBvZgp0aGlzIGRyaXZlciBzZXJpZXM6CgpbU2V2ZXJpdHk6IEhpZ2hdCkFyZSB0aGVzZSB1c2xl ZXBfcmFuZ2UoKSBjYWxscyBzYWZlIGluIGF0b21pYyBjb250ZXh0PwoKQWNjb3JkaW5nIHRvIERS TSBzdWJzeXN0ZW0gZ3VpZGVsaW5lcywgQ1JUQyBhdG9taWMgZW5hYmxlL2Rpc2FibGUgY2FsbGJh Y2tzCmV4ZWN1dGUgaW4gYXRvbWljIGNvbnRleHQgZHVyaW5nIG5vbi1ibG9ja2luZyBjb21taXRz IHdoZXJlIHNsZWVwaW5nIGlzCmZvcmJpZGRlbi4KCkJvdGggc3BhY2VtaXRfY3J0Y19hdG9taWNf ZW5hYmxlKCkgYW5kIGRwdV9wbV9zdXNwZW5kKCkgKGNhbGxlZCBmcm9tCnNwYWNlbWl0X2NydGNf YXRvbWljX2Rpc2FibGUoKSkgaW52b2tlIHVzbGVlcF9yYW5nZSgpOgoKZHJpdmVycy9ncHUvZHJt L3NwYWNlbWl0L3NwYWNlbWl0X2NydGMuYzpzcGFjZW1pdF9jcnRjX2F0b21pY19lbmFibGUoKSB7 CiAgICAuLi4KCQlkcHVfcmVzZXRfYXNzZXJ0KGFfY3J0Yy0+ZGV2LCAibWNsayIsIGFfY3J0Yy0+ bWNsa19yZXNldCk7CgkJZHB1X3Jlc2V0X2Fzc2VydChhX2NydGMtPmRldiwgImFjbGsiLCBhX2Ny dGMtPmFjbGtfcmVzZXQpOwoJCWRwdV9yZXNldF9hc3NlcnQoYV9jcnRjLT5kZXYsICJkc2MiLCBh X2NydGMtPmRzY19yZXNldCk7CgkJdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7CiAgICAuLi4K fQoKZHJpdmVycy9ncHUvZHJtL3NwYWNlbWl0L3NwYWNlbWl0X2NydGMuYzpkcHVfcG1fc3VzcGVu ZCgpIHsKICAgIC4uLgoJZHB1X3Jlc2V0X2Fzc2VydChkZXYsICJhY2xrIiwgYV9jcnRjLT5hY2xr X3Jlc2V0KTsKCWRwdV9yZXNldF9hc3NlcnQoZGV2LCAiZHNjIiwgYV9jcnRjLT5kc2NfcmVzZXQp OwoJdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7CiAgICAuLi4KfQoKQ2FsbGluZyBzbGVlcGlu ZyBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0IGNhdXNlcyBrZXJuZWwgd2FybmluZ3MgYW5kIHN5 c3RlbQppbnN0YWJpbGl0eS4KClNob3VsZCBub24tc2xlZXBpbmcgZGVsYXlzIGxpa2UgdWRlbGF5 KCkgYmUgdXNlZCBpbnN0ZWFkPwoKCltTZXZlcml0eTogSGlnaF0KRG9lcyBzcGFjZW1pdF9wbGFu ZV9hdG9taWNfdXBkYXRlKCkgc2xlZXAgaW4gYXRvbWljIGNvbnRleHQ/CgpUaGUgRFJNIHN1YnN5 c3RlbSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBQbGFuZSBhdG9taWMgdXBkYXRl IGNhbGxiYWNrcwpleGVjdXRlIGluIGF0b21pYyBjb250ZXh0IHdoZXJlIHNsZWVwaW5nIGlzIGZv cmJpZGRlbi4KCnNwYWNlbWl0X3BsYW5lX2F0b21pY191cGRhdGUoKSBjYWxscyBzcGFjZW1pdF9k bW11X21hcCgpOgoKZHJpdmVycy9ncHUvZHJtL3NwYWNlbWl0L3NwYWNlbWl0X3BsYW5lcy5jOnNw YWNlbWl0X3BsYW5lX2F0b21pY191cGRhdGUoKSB7CiAgICAuLi4KCQlyZXQgPSBzcGFjZW1pdF9k bW11X21hcChwbGFuZS0+c3RhdGUtPmZiLAoJCQkJCSZzcGFjZW1pdF9wc3RhdGUtPm1tdV90Ymws IHRidV9pZCwKCQkJCQlhX2NydGMtPmNsX3JkbWEsIHBsYW5lKTsKICAgIC4uLgp9Cgp3aGljaCB0 aGVuIGNhbGxzIGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX3NndCgpOgoKZHJpdmVycy9ncHUvZHJt L3NwYWNlbWl0L3NwYWNlbWl0X2RtbXUuYzpzcGFjZW1pdF9kbW11X21hcCgpIHsKICAgIC4uLgoJ c2d0ID0gZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfc2d0KHRvX2RybV9nZW1fc2htZW1fb2JqKGZi LT5vYmpbMF0pKTsKCWlmIChJU19FUlIoc2d0KSkKICAgIC4uLgp9CgpUaGlzIGhlbHBlciBhY3F1 aXJlcyBhIHNsZWVwaW5nIG11dGV4IHZpYSBkbWFfcmVzdl9sb2NrX2ludGVycnVwdGlibGUoKS4g VGhpcwpjYXVzZXMgYSBzbGVlcCBpbiBhdG9taWMgY29udGV4dCwgcmlza2luZyBrZXJuZWwgcGFu aWNzLgoKU2hvdWxkIHRoZSBkcml2ZXIgaW1wbGVtZW50IGEgcHJlcGFyZV9mYiBob29rIChlLmcu CmRybV9nZW1fc2htZW1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIpIHRvIHBpbiB0aGUgcGFnZXMg YW5kIG9idGFpbiB0aGUgU0dUCm91dHNpZGUgb2YgdGhlIGF0b21pYyB1cGRhdGUgcGhhc2U/Cgot LSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIw MjYwNzI1LWszLWRpc3BsYXktdjEtMC02ZGUzNGQ4MGU4NmNAZ21haWwuY29tP3BhcnQ9MTEKCi0t IApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBoeQo=