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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 45031CD8C90 for ; Sun, 7 Jun 2026 21:46:50 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A9BD910E33A; Sun, 7 Jun 2026 21:46:49 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="dlMmlQSJ"; dkim-atps=neutral Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id E932D10E33A for ; Sun, 7 Jun 2026 21:46:48 +0000 (UTC) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id CBBFE43D4A; Sun, 7 Jun 2026 21:46:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7EC8E1F00893; Sun, 7 Jun 2026 21:46:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780868808; bh=xiddp7v7kHv5ulzvu1VcmAmGBmpnEySt4jryea7eyww=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=dlMmlQSJG1BghQKMrqKaiecigOz1qRjudDjvXA8fvqX4In9BRwqTUDM2NzERgTVsa 7jMCmtnuq6UWQiHrT7/FHaHqGI7Fy6YD5aWvwXqFHVOyVGJxuWQY/lpDmcJ3904r82 Y+6zIK4t5/eirEH1fRs9f1/lvaDWuqBw2K2JNTtXShfQSDf4v0+5l0nGCSCHNBCv+u ehs7pHFCQVNHntbHq28PAkMZxyk3ahxK69BodmxePBWkcNQpfSOZciZSBcCx2PEFcK leAse93PWyGu3bLBgOO0XItncxfT8xgapUb7iQZxX3+k9PuCxz1ATOZiOwNYsDDRHg w0YDlD2CAUclQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 1/8] drm/connector: report out-of-band IRQ_HPD events To: "Dmitry Baryshkov" Cc: dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org In-Reply-To: <20260608-hpd-irq-events-v4-1-30b62b335487@oss.qualcomm.com> References: <20260608-hpd-irq-events-v4-1-30b62b335487@oss.qualcomm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sun, 07 Jun 2026 21:46:48 +0000 Message-Id: <20260607214648.7EC8E1F00893@smtp.kernel.org> 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: , Reply-To: sashiko-reviews@lists.linux.dev Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: Pre-existing issues: - [High] State machine race condition causes premature HPD (and IRQ) signal= ing before Alt Mode configuration completes. - [High] DisplayPort is erroneously reported as connected (with IRQ) when C= ONFIGURE command is NAKed. -- commit 3c420485b2e1143aa3ad7bdf4a86786959837b5a Author: Dmitry Baryshkov drm/connector: report out-of-band IRQ_HPD events The DisplayPort standard defines a special kind of events called IRQ, used to notify DP Source about the events on the Sink side. This commit renames drm_connector_oob_hotplug_event() to drm_connector_dp_oob_status() and extends its interface to report IRQ events to the DisplayPort Sink driv= ers. > diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec= /altmodes/displayport.c > index 263a89c5f3243..ff3659b8f5a2c 100644 > --- a/drivers/usb/typec/altmodes/displayport.c > +++ b/drivers/usb/typec/altmodes/displayport.c > @@ -187,9 +187,11 @@ static int dp_altmode_status_update(struct dp_altmod= e *dp) > dp->pending_irq_hpd =3D true; > } > } else { > - drm_connector_oob_hotplug_event(dp->connector_fwnode, > + drm_connector_dp_oob_status(dp->connector_fwnode, > hpd ? connector_status_connected : > - connector_status_disconnected); > + connector_status_disconnected, > + (hpd && irq_hpd) ? DRM_CONNECTOR_DP_IRQ_HPD : > + DRM_CONNECTOR_NO_EXTRA_STATUS); [Severity: High] This is a pre-existing issue, but since we are modifying the hotplug notification here, can a state machine race condition cause premature HPD signaling before Alt Mode configuration completes? If an Attention VDM arrives before the ACK for the DP_CMD_CONFIGURE, dp_altmode_attention() will process it immediately because dp_altmode_work() already set dp->state to DP_STATE_IDLE after sending the async command. In dp_altmode_status_update(), the check for !(con & DP_CONF_CURRENTLY(dp->data.conf)) evaluates to false because dp->data.conf was already updated prior to sending the configure command. Execution then falls into this else block, which calls drm_connector_dp_oob_status() with connector_status_connected prematurely. Does this cause DRM to begin link training before the physical MUX is configured (which only happens in dp_altmode_notify() when the ACK arrives), leading to a failed link and non-functional display? > dp->hpd =3D hpd; > sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd"); [ ... ] > @@ -211,8 +213,11 @@ static int dp_altmode_configured(struct dp_altmode *= dp) > * configuration is complete to signal HPD. > */ > if (dp->pending_hpd) { > - drm_connector_oob_hotplug_event(dp->connector_fwnode, > - connector_status_connected); > + drm_connector_dp_oob_status(dp->connector_fwnode, > + connector_status_connected, > + dp->pending_irq_hpd ? > + DRM_CONNECTOR_DP_IRQ_HPD : > + DRM_CONNECTOR_NO_EXTRA_STATUS); [Severity: High] This isn't a bug introduced by this patch, but does this logic erroneously report a connected state even when the configure command is NAKed? When the peer NAKs the DP_CMD_CONFIGURE command, dp_altmode_vdm() handles the NAK by resetting dp->data.conf =3D 0 and then calling dp_altmode_config= ured(). If a prior STATUS_UPDATE VDM arrived with HPD high, dp->pending_hpd will still be true. Because this block checks dp->pending_hpd without verifying if the configuration actually succeeded (for example, by checking if dp->data.conf !=3D 0), it unconditionally calls drm_connector_dp_oob_status= () with connector_status_connected. Meanwhile, dp_altmode_notify() sets the MUX to TYPEC_STATE_USB because dp->data.conf is 0. Could this cause DRM to attempt DP link training over an unrouted AUX channel, resulting in repeated timeouts and desynchronized state? > sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd"); > dp->pending_hpd =3D false; > if (dp->pending_irq_hpd) { --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260608-hpd-irq-ev= ents-v4-0-30b62b335487@oss.qualcomm.com?part=3D1 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 E27F5CD8C9F for ; Sun, 7 Jun 2026 21:46:54 +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=4nrOADMJOFwOdBLokVuZ7YLnKYhUii3qncRxkvdiU3o=; b=Bvn0SHAqDwoquO 6wfyIgiTMW+MkretHIB60a3gG5XCNfoOEqkQRTA0tkC1uBAkmn/xCiJvjkxTgBGPfbmmfgRVVhzXf MEOuOQwzw10qCAfrVz2KtyVCHoSSMe4E/tRf+nJ87cTWINqxRLaQNSwzMPNEU3vFj9cvzO7+8RNpn 9cxsjfJ7HzVUdrCzswvebSPCBS7T0RK/ge/x5mj/lpnimKS3LhHqfveMxBO9RM3XP6l0So4ZhyMee JgLh8ODS4BsfQda/1W/zzrzsAh3j4GH7bCArMNzXfZbsAmW16IwyZSGdZdnxyUCXtEHvwdgRQK3D3 7N7cDadd3ydhJWVLcgtw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wWLKV-00000002WvK-08UR; Sun, 07 Jun 2026 21:46:51 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wWLKT-00000002Wv1-27qf for linux-amlogic@lists.infradead.org; Sun, 07 Jun 2026 21:46:49 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id CBBFE43D4A; Sun, 7 Jun 2026 21:46:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7EC8E1F00893; Sun, 7 Jun 2026 21:46:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780868808; bh=xiddp7v7kHv5ulzvu1VcmAmGBmpnEySt4jryea7eyww=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=dlMmlQSJG1BghQKMrqKaiecigOz1qRjudDjvXA8fvqX4In9BRwqTUDM2NzERgTVsa 7jMCmtnuq6UWQiHrT7/FHaHqGI7Fy6YD5aWvwXqFHVOyVGJxuWQY/lpDmcJ3904r82 Y+6zIK4t5/eirEH1fRs9f1/lvaDWuqBw2K2JNTtXShfQSDf4v0+5l0nGCSCHNBCv+u ehs7pHFCQVNHntbHq28PAkMZxyk3ahxK69BodmxePBWkcNQpfSOZciZSBcCx2PEFcK leAse93PWyGu3bLBgOO0XItncxfT8xgapUb7iQZxX3+k9PuCxz1ATOZiOwNYsDDRHg w0YDlD2CAUclQ== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 1/8] drm/connector: report out-of-band IRQ_HPD events To: "Dmitry Baryshkov" Cc: dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org In-Reply-To: <20260608-hpd-irq-events-v4-1-30b62b335487@oss.qualcomm.com> References: <20260608-hpd-irq-events-v4-1-30b62b335487@oss.qualcomm.com> Date: Sun, 07 Jun 2026 21:46:48 +0000 Message-Id: <20260607214648.7EC8E1F00893@smtp.kernel.org> X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: 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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpQcmUtZXhpc3RpbmcgaXNzdWVzOgot IFtIaWdoXSBTdGF0ZSBtYWNoaW5lIHJhY2UgY29uZGl0aW9uIGNhdXNlcyBwcmVtYXR1cmUgSFBE IChhbmQgSVJRKSBzaWduYWxpbmcgYmVmb3JlIEFsdCBNb2RlIGNvbmZpZ3VyYXRpb24gY29tcGxl dGVzLgotIFtIaWdoXSBEaXNwbGF5UG9ydCBpcyBlcnJvbmVvdXNseSByZXBvcnRlZCBhcyBjb25u ZWN0ZWQgKHdpdGggSVJRKSB3aGVuIENPTkZJR1VSRSBjb21tYW5kIGlzIE5BS2VkLgotLQoKY29t bWl0IDNjNDIwNDg1YjJlMTE0M2FhM2FkN2JkZjRhODY3ODY5NTk4MzdiNWEKQXV0aG9yOiBEbWl0 cnkgQmFyeXNoa292IDxkbWl0cnkuYmFyeXNoa292QG9zcy5xdWFsY29tbS5jb20+Cgpkcm0vY29u bmVjdG9yOiByZXBvcnQgb3V0LW9mLWJhbmQgSVJRX0hQRCBldmVudHMKClRoZSBEaXNwbGF5UG9y dCBzdGFuZGFyZCBkZWZpbmVzIGEgc3BlY2lhbCBraW5kIG9mIGV2ZW50cyBjYWxsZWQgSVJRLAp1 c2VkIHRvIG5vdGlmeSBEUCBTb3VyY2UgYWJvdXQgdGhlIGV2ZW50cyBvbiB0aGUgU2luayBzaWRl LiBUaGlzIGNvbW1pdApyZW5hbWVzIGRybV9jb25uZWN0b3Jfb29iX2hvdHBsdWdfZXZlbnQoKSB0 byBkcm1fY29ubmVjdG9yX2RwX29vYl9zdGF0dXMoKQphbmQgZXh0ZW5kcyBpdHMgaW50ZXJmYWNl IHRvIHJlcG9ydCBJUlEgZXZlbnRzIHRvIHRoZSBEaXNwbGF5UG9ydCBTaW5rIGRyaXZlcnMuCgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9hbHRtb2Rlcy9kaXNwbGF5cG9ydC5jIGIv ZHJpdmVycy91c2IvdHlwZWMvYWx0bW9kZXMvZGlzcGxheXBvcnQuYwo+IGluZGV4IDI2M2E4OWM1 ZjMyNDMuLmZmMzY1OWI4ZjVhMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvYWx0 bW9kZXMvZGlzcGxheXBvcnQuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL2FsdG1vZGVzL2Rp c3BsYXlwb3J0LmMKPiBAQCAtMTg3LDkgKzE4NywxMSBAQCBzdGF0aWMgaW50IGRwX2FsdG1vZGVf c3RhdHVzX3VwZGF0ZShzdHJ1Y3QgZHBfYWx0bW9kZSAqZHApCj4gIAkJCQlkcC0+cGVuZGluZ19p cnFfaHBkID0gdHJ1ZTsKPiAgCQl9Cj4gIAl9IGVsc2Ugewo+IC0JCWRybV9jb25uZWN0b3Jfb29i X2hvdHBsdWdfZXZlbnQoZHAtPmNvbm5lY3Rvcl9md25vZGUsCj4gKwkJZHJtX2Nvbm5lY3Rvcl9k cF9vb2Jfc3RhdHVzKGRwLT5jb25uZWN0b3JfZndub2RlLAo+ICAJCQkJCQlocGQgPyBjb25uZWN0 b3Jfc3RhdHVzX2Nvbm5lY3RlZCA6Cj4gLQkJCQkJCSAgICAgIGNvbm5lY3Rvcl9zdGF0dXNfZGlz Y29ubmVjdGVkKTsKPiArCQkJCQkJICAgICAgY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQs Cj4gKwkJCQkJCShocGQgJiYgaXJxX2hwZCkgPyBEUk1fQ09OTkVDVE9SX0RQX0lSUV9IUEQgOgo+ ICsJCQkJCQkJCSAgIERSTV9DT05ORUNUT1JfTk9fRVhUUkFfU1RBVFVTKTsKCltTZXZlcml0eTog SGlnaF0KVGhpcyBpcyBhIHByZS1leGlzdGluZyBpc3N1ZSwgYnV0IHNpbmNlIHdlIGFyZSBtb2Rp ZnlpbmcgdGhlIGhvdHBsdWcKbm90aWZpY2F0aW9uIGhlcmUsIGNhbiBhIHN0YXRlIG1hY2hpbmUg cmFjZSBjb25kaXRpb24gY2F1c2UgcHJlbWF0dXJlIEhQRApzaWduYWxpbmcgYmVmb3JlIEFsdCBN b2RlIGNvbmZpZ3VyYXRpb24gY29tcGxldGVzPwoKSWYgYW4gQXR0ZW50aW9uIFZETSBhcnJpdmVz IGJlZm9yZSB0aGUgQUNLIGZvciB0aGUgRFBfQ01EX0NPTkZJR1VSRSwKZHBfYWx0bW9kZV9hdHRl bnRpb24oKSB3aWxsIHByb2Nlc3MgaXQgaW1tZWRpYXRlbHkgYmVjYXVzZSBkcF9hbHRtb2RlX3dv cmsoKQphbHJlYWR5IHNldCBkcC0+c3RhdGUgdG8gRFBfU1RBVEVfSURMRSBhZnRlciBzZW5kaW5n IHRoZSBhc3luYyBjb21tYW5kLgoKSW4gZHBfYWx0bW9kZV9zdGF0dXNfdXBkYXRlKCksIHRoZSBj aGVjayBmb3IKIShjb24gJiBEUF9DT05GX0NVUlJFTlRMWShkcC0+ZGF0YS5jb25mKSkgZXZhbHVh dGVzIHRvIGZhbHNlIGJlY2F1c2UKZHAtPmRhdGEuY29uZiB3YXMgYWxyZWFkeSB1cGRhdGVkIHBy aW9yIHRvIHNlbmRpbmcgdGhlIGNvbmZpZ3VyZSBjb21tYW5kLgoKRXhlY3V0aW9uIHRoZW4gZmFs bHMgaW50byB0aGlzIGVsc2UgYmxvY2ssIHdoaWNoIGNhbGxzCmRybV9jb25uZWN0b3JfZHBfb29i X3N0YXR1cygpIHdpdGggY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgcHJlbWF0dXJlbHkuCgpE b2VzIHRoaXMgY2F1c2UgRFJNIHRvIGJlZ2luIGxpbmsgdHJhaW5pbmcgYmVmb3JlIHRoZSBwaHlz aWNhbCBNVVggaXMKY29uZmlndXJlZCAod2hpY2ggb25seSBoYXBwZW5zIGluIGRwX2FsdG1vZGVf bm90aWZ5KCkgd2hlbiB0aGUgQUNLIGFycml2ZXMpLApsZWFkaW5nIHRvIGEgZmFpbGVkIGxpbmsg YW5kIG5vbi1mdW5jdGlvbmFsIGRpc3BsYXk/Cgo+ICAJCWRwLT5ocGQgPSBocGQ7Cj4gIAkJc3lz ZnNfbm90aWZ5KCZkcC0+YWx0LT5kZXYua29iaiwgImRpc3BsYXlwb3J0IiwgImhwZCIpOwoKWyAu Li4gXQoKPiBAQCAtMjExLDggKzIxMywxMSBAQCBzdGF0aWMgaW50IGRwX2FsdG1vZGVfY29uZmln dXJlZChzdHJ1Y3QgZHBfYWx0bW9kZSAqZHApCj4gIAkgKiBjb25maWd1cmF0aW9uIGlzIGNvbXBs ZXRlIHRvIHNpZ25hbCBIUEQuCj4gIAkgKi8KPiAgCWlmIChkcC0+cGVuZGluZ19ocGQpIHsKPiAt CQlkcm1fY29ubmVjdG9yX29vYl9ob3RwbHVnX2V2ZW50KGRwLT5jb25uZWN0b3JfZndub2RlLAo+ IC0JCQkJCQljb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCk7Cj4gKwkJZHJtX2Nvbm5lY3Rvcl9k cF9vb2Jfc3RhdHVzKGRwLT5jb25uZWN0b3JfZndub2RlLAo+ICsJCQkJCQljb25uZWN0b3Jfc3Rh dHVzX2Nvbm5lY3RlZCwKPiArCQkJCQkJZHAtPnBlbmRpbmdfaXJxX2hwZCA/Cj4gKwkJCQkJCURS TV9DT05ORUNUT1JfRFBfSVJRX0hQRCA6Cj4gKwkJCQkJCURSTV9DT05ORUNUT1JfTk9fRVhUUkFf U1RBVFVTKTsKCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBpbnRyb2R1Y2VkIGJ5 IHRoaXMgcGF0Y2gsIGJ1dCBkb2VzIHRoaXMgbG9naWMgZXJyb25lb3VzbHkKcmVwb3J0IGEgY29u bmVjdGVkIHN0YXRlIGV2ZW4gd2hlbiB0aGUgY29uZmlndXJlIGNvbW1hbmQgaXMgTkFLZWQ/CgpX aGVuIHRoZSBwZWVyIE5BS3MgdGhlIERQX0NNRF9DT05GSUdVUkUgY29tbWFuZCwgZHBfYWx0bW9k ZV92ZG0oKSBoYW5kbGVzCnRoZSBOQUsgYnkgcmVzZXR0aW5nIGRwLT5kYXRhLmNvbmYgPSAwIGFu ZCB0aGVuIGNhbGxpbmcgZHBfYWx0bW9kZV9jb25maWd1cmVkKCkuCgpJZiBhIHByaW9yIFNUQVRV U19VUERBVEUgVkRNIGFycml2ZWQgd2l0aCBIUEQgaGlnaCwgZHAtPnBlbmRpbmdfaHBkCndpbGwg c3RpbGwgYmUgdHJ1ZS4KCkJlY2F1c2UgdGhpcyBibG9jayBjaGVja3MgZHAtPnBlbmRpbmdfaHBk IHdpdGhvdXQgdmVyaWZ5aW5nIGlmIHRoZQpjb25maWd1cmF0aW9uIGFjdHVhbGx5IHN1Y2NlZWRl ZCAoZm9yIGV4YW1wbGUsIGJ5IGNoZWNraW5nIGlmCmRwLT5kYXRhLmNvbmYgIT0gMCksIGl0IHVu Y29uZGl0aW9uYWxseSBjYWxscyBkcm1fY29ubmVjdG9yX2RwX29vYl9zdGF0dXMoKQp3aXRoIGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkLgoKTWVhbndoaWxlLCBkcF9hbHRtb2RlX25vdGlmeSgp IHNldHMgdGhlIE1VWCB0byBUWVBFQ19TVEFURV9VU0IgYmVjYXVzZQpkcC0+ZGF0YS5jb25mIGlz IDAuCgpDb3VsZCB0aGlzIGNhdXNlIERSTSB0byBhdHRlbXB0IERQIGxpbmsgdHJhaW5pbmcgb3Zl ciBhbiB1bnJvdXRlZCBBVVgKY2hhbm5lbCwgcmVzdWx0aW5nIGluIHJlcGVhdGVkIHRpbWVvdXRz IGFuZCBkZXN5bmNocm9uaXplZCBzdGF0ZT8KCj4gIAkJc3lzZnNfbm90aWZ5KCZkcC0+YWx0LT5k ZXYua29iaiwgImRpc3BsYXlwb3J0IiwgImhwZCIpOwo+ICAJCWRwLT5wZW5kaW5nX2hwZCA9IGZh bHNlOwo+ICAJCWlmIChkcC0+cGVuZGluZ19pcnFfaHBkKSB7CgotLSAKU2FzaGlrbyBBSSByZXZp ZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYwNjA4LWhwZC1pcnEtZXZl bnRzLXY0LTAtMzBiNjJiMzM1NDg3QG9zcy5xdWFsY29tbS5jb20/cGFydD0xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxp bmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg==