From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCBE96D1BC for ; Tue, 16 Apr 2024 10:53:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264813; cv=none; b=qPPKmT18Xec3dCs5P9nZdunnYUS1KaF+MrWXkeU43w4KWuBSKd4bBeWOR9v73w7C+gZ0XA416tEEG5AdgPBlhSiYCquvqTjKWfu/k3Pc8+901wiZRnZG1ubhfM98SkI6auPR2aze4w2qUW2juPA9nIahkAjrJmT/IbtNSQg+chU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264813; c=relaxed/simple; bh=jtWDtkzCMWJkFCa5MxE8iceW5QpVbO75j7cOqW9Nvgo=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=u8ZNTBVi5pHzyMjXPPByeXpWtaIDFsmat2cHNIlJf5tJjVFdamJv98BWyWH4E9RZI9liJu1Frrr8tHy9gZjtKUWnLj7IDV9hfkcgNfk8CZMOxNqB9qXYk/wKB7muA2AnuhSZJLibYF70FAP0GFJBJo5pOsJYGXB97VDRjSavdO4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MpsR7GJK; arc=none smtp.client-ip=209.85.208.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MpsR7GJK" Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-2da0f8f7b24so32589871fa.1 for ; Tue, 16 Apr 2024 03:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713264810; x=1713869610; darn=lists.linux.dev; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=Zm8hUl4A4Cjijs+dM9CjArMkvrH+8PJgQST3vTyO9ro=; b=MpsR7GJKo8RM+1V3+QPRDUtys8r7dixa9zPEow5qsRWqKg7l+vBVHSXIAmk6ZXcsWI tj0r/1j+OypKN8Bodq1EufbZIT0baSzOjR42Ogjo7Ofq6KcmI/STXSbBIM7HLTyAAYVW FDpTRarLVlP9oc89/ATbCXAI5j9ZWtMIpb1osWBa5cVesyVvoTNFfN+QwOeM/78/9uq3 p0JkZtPL5x1t7cJ11HGa/bZNyZ3+L5B4Rl+cQpgrBETZBfrOmODZjneVDdctDJCJCB+R pej/E0FUpdBH+/WATqr94UlbygJ7/wqa44j5Jg5gUF0G5r7Yey+iH8AYmMopFEGCXwl2 Hp/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264810; x=1713869610; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Zm8hUl4A4Cjijs+dM9CjArMkvrH+8PJgQST3vTyO9ro=; b=UVzvAwuSjDzzcx5z46NuvAraQvlRhdVEuLgRoHX929SuGKTegifnuedxhFha5x7MPn 504oUONtM2mZiMIJVh0dee9NqB4TUhlYUWzITU8eawuPOVLUoyzDtfYsi6rbvXZqqGK4 AhULtkuauHl+BwF0spsPBkWFaI5O+0K/DAc4ar5LLASWP1EtMwd0QFQNgVRnL0PfOt6E Yl9p8HFmIySw754xXit2qE+aVhSIXZGZjWbrue1ppX10gbwYUzlKjQM0fIvEsy/SMFnC y2ylequYqdF2hy8uw2/RpGdqlWVJgkK+sB7q3dxxCu2ZiZcMdF9pUk400MMfbvuZJktp Kk3g== X-Forwarded-Encrypted: i=1; AJvYcCXsemYqKgqGpLwS1tGU4E+EdyttpQi/AyCEbJw9F1gmU5gkbZqU9mb5dynP2wg4m3tnMCmJ2gOvDvyWzmpzcmp0r+5G X-Gm-Message-State: AOJu0Yzsu6sZ+mPSOYbrQs5obUMKL3TdoYZq9Cbmo/Fj/cVGsIFRtT12 orlvZqvy1a17LKaP1F5q2oQ7OFwTae2r0G4bj0xl5MdwjWiyXeDc X-Google-Smtp-Source: AGHT+IG1iJoGjPDJ4imF8qZcuHLYYvbel182S43/J10hP1dvRLvswmx977CJlc4KOlTyLvqTPU+m9A== X-Received: by 2002:a2e:9590:0:b0:2da:daa9:8060 with SMTP id w16-20020a2e9590000000b002dadaa98060mr497005ljh.14.1713264809644; Tue, 16 Apr 2024 03:53:29 -0700 (PDT) Received: from ?IPv6:2001:8a0:e622:f700:a0:8eb2:ecf5:17e0? ([2001:8a0:e622:f700:a0:8eb2:ecf5:17e0]) by smtp.gmail.com with ESMTPSA id e1-20020a2e9301000000b002d70a040f21sm1532062ljh.91.2024.04.16.03.53.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:53:29 -0700 (PDT) Message-ID: <564fa534b32f4a6e96da6752f531fc7447ec633d.camel@gmail.com> Subject: Re: [PATCH v1] arm64: dts: imx8mm: fix missing pgc_vpu_* power domain parent From: Vitor Soares To: Lucas Stach , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Peng Fan Cc: Vitor Soares , devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Tue, 16 Apr 2024 11:53:26 +0100 In-Reply-To: References: <20240409085802.290439-1-ivitro@gmail.com> <9ce35b9bb5a15891f6bd01bd54b7dc84b3ba4021.camel@pengutronix.de> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4-0ubuntu2 Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 ++ Peng Fan Greetings, On Wed, 2024-04-10 at 12:01 +0100, Vitor Soares wrote: > Hi Lucas, >=20 > On Tue, 2024-04-09 at 17:44 +0100, Vitor Soares wrote: > > On Tue, 2024-04-09 at 16:36 +0200, Lucas Stach wrote: > > > Am Dienstag, dem 09.04.2024 um 14:22 +0100 schrieb Vitor Soares: > > > > Hi Lucas, > > > >=20 > > > > Thanks for your feedback. > > > >=20 > > > > On Tue, 2024-04-09 at 11:13 +0200, Lucas Stach wrote: > > > > > Hi Vitor, > > > > >=20 > > > > > Am Dienstag, dem 09.04.2024 um 09:58 +0100 schrieb Vitor > > > > > Soares: > > > > > > From: Vitor Soares > > > > > >=20 > > > > > > The pgc_vpu_* nodes miss the reference to the power domain > > > > > > parent, > > > > > > leading the system to hang during the resume. > > > > > >=20 > > > > > This change is not correct. The vpumix domain is controlled > > > > > through > > > > > the > > > > > imx8mm-vpu-blk-ctrl and must not be directly triggered by the > > > > > child > > > > > domains in order to guarantee proper power sequencing. > > > > >=20 > > > > > If the sequencing is incorrect for resume, it needs to be > > > > > fixed > > > > > in > > > > > the > > > > > blk-ctrl driver. I'll happily assist if you have any > > > > > questions > > > > > about > > > > > this intricate mix between GPC and blk-ctrl hardware/drivers. > > > > =C2=A0 > > > > I'm new into the topic, so I tried to follow same approach as > > > > in > > > > imx8mp > > > > DT. > > > >=20 > > > That's a good hint, the 8MP VPU GPC node additions missed my > > > radar. > > > The > > > direct dependency there between the GPC domains is equally wrong. > > >=20 > > > > I also checked the imx8mq DT and it only have one domain for > > > > the > > > > VPU in the GPC. It seem blk-ctrl also dependes on pgc_vpu_* to > > > > work > > > > properly. > > > >=20 > > > > The blk-ctrl driver hangs on imx8m_blk_ctrl_power_on() when > > > > access > > > > the > > > > ip registers for the soft reset. I tried to power-up the before > > > > the > > > > soft reset, but it didn't work. > > > >=20 > > > The runtime_pm_get_sync() at the start of that function should > > > ensure > > > that bus GPC domain aka vpumix is powered up. Can you check if > > > that > > > is > > > happening? > >=20 > > I checked bc->bus_power_dev->power.runtime_status and it is > > RPM_ACTIVE. > >=20 > > Am I looking to on the right thing? It is RPM_ACTIVE event before > > runtime_pm_get_sync(). >=20 > During the probe I can see that > bus_power_dev->power.runtime_status =3D RPM_SUSPENDED and then vpumix > is > powered up on GPC driver. >=20 > On resume routine I can't see this flow. bus_power_dev- > > power.runtime_status =3D RPM_ACTIVE and vpumix end up not being > > powered- > up. >=20 > I checked the suspend flow and the GPC tries to poweroff vpumix. >=20 >=20 My understanding is that when resuming the 38310000.video-codec, the vpumix isn't powered up. It happens because runtime_status and runtime_last_status =3D RPM_ACTIVE.=20 I tried to change blk-ctrl suspend routine to force the runtime_status =3D RPM_SUSPENDED, but the system ended up hanging on another device. >From the comment in blk-ctrl suspend, we rely on PM_SLEEP code that iterates over dpm_list for suspend/resume. I did look at the dpm_list, and it changes the order on every boot.=20 With all the tests, I also found that the system randomly hangs on dispblk-lcdif suspend. I have confirmed this device is in a different place in the dpm_list (not sure if it is the root cause).=20 I haven't understood how blk-ctrl ensures the correct order there yet.=20 Taking the following dpm_list excerpt: idx - device ------------------------------ ... =20 191 - imx-pgc-domain.7 =20 192 - imx-pgc-domain.8 =20 193 - imx-pgc-domain.9 =20 194 - 38330000.blk-ctrl =20 195 - 38310000.video-codec =20 196 - 38300000.video-codec =20 ... 205 - genpd:0:38330000.blk-ctrl 206 - genpd:1:38330000.blk-ctrl 207 - genpd:2:38330000.blk-ctrl 208 - genpd:3:38330000.blk-ctrl ------------------------------ Shouldn't genpd devices be before 38330000.blk-ctrl? As their power domain is GPC and the blk-ctrl power domain is genpd. Best regards, Vitor Soares >=20 > >=20 > >=20 > > >=20 > > > Regards, > > > Lucas > > >=20 > > > > Do you have an idea how we can address this within blk-ctrl? > > > >=20 > > > > Best regards, > > > > Vitor > >=20 >=20 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 39F5CC4345F for ; Tue, 16 Apr 2024 10:53:49 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=PRwtM2md0OMHpBzqn4khsIEzztvzcXchl/q5YEurAKg=; b=wzeQeAs2ZGUakP AtNI32saOd4KXG5TR7P864badi+Ob7cwkLOjK+cGc8EGljjp23M0aSpw0jTb/yOKUEc83/VOaoZ3p zc9UAxaza9YxjP+fdssYBSfVg5jKIFgp+n3QxLX1Ez2Gqkw9pxrGUKn1Vq9HB5+AvcQVWOCt6q5wm ayj0MQ9X++iS9KYIAmlxase1oGGlv4OUzuc8dVMOxYjkbOuysvpImaHwOpa3P9aVQ1hr7c3GDmdA6 gs5ZDQLXZakfQRnamih679jGwXycJDhsdBwie+SybQdR6EoJd2dkkIVAoBq47suidx+P82NV6fYDG n2e6w8Hg80ULfQsx3hTw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rwgRT-0000000BtB4-1tC9; Tue, 16 Apr 2024 10:53:35 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rwgRQ-0000000BtAR-2m3z for linux-arm-kernel@lists.infradead.org; Tue, 16 Apr 2024 10:53:34 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2d4979cd8c8so37777181fa.0 for ; Tue, 16 Apr 2024 03:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713264810; x=1713869610; darn=lists.infradead.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=Zm8hUl4A4Cjijs+dM9CjArMkvrH+8PJgQST3vTyO9ro=; b=V8Li58DvwJ0DgtA6EwyG5NBfkhu4g5mdu0/jqNZh0JJIP6TzLtrZMPgN5aVtKdvInf HOYg0sX7qoU4qePjmg8gceSRQYlU5e95Sy1aslImVdl6AG7jvfYbpTnjZ3VwYOjfbstm pJn4wFbVoB5M53NdrRe4kmRHhHe3c0Lxe4z2LUksbw4S4qvm83JIzguSeMMMqSzPwwNC xol1rDw8cWhEtR1BGM3Cn5FEFs15Zk26qQWdnOacM9gqEWTTbLpbMb2ulTyTq4QCPJyM PWHlv7cJzHiZpUeLyhlVfbOz7DO1mlrsvvscgoxpdIdjaCjIUj8hCeJT1P+uWkmTezqn uuTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264810; x=1713869610; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Zm8hUl4A4Cjijs+dM9CjArMkvrH+8PJgQST3vTyO9ro=; b=qQcqZAHj64sbDD67nG3mCWtGM4/BsrIHWz1WAMlJAkJ+aAfM5RFnaIfgOxxV3mLYXq kl3iFc1g5p+vskz3LvCMgksHCVu1KmPpMNy2wz5gUKQdwTaFW9//XZwMd2NTkfxWNV4X l7q4uQ8c+arpkCjUG2Km/ZRy30Fni0tCYaaOmH+uKkkk/qWw6al28gbIJI458cJb/tVV DTyiNWQDvVLGmZXBv1PJQGbrBHSDFOfpxYbrHehGluSHgIvPETLvwR+PbYG1hNObIgJi 243HEMI5sa36UVcB7P91vIsdrAYfkADq4SQMAlexn1Xv9iSO3J/50Azqfrqpy1ubiYoA 5Ytg== X-Forwarded-Encrypted: i=1; AJvYcCVHl0R0kY+U+J+xNNAbLVFTtcSd8i0iLWUtnyn6jFQoYOwOyP1v/yslVMZOhScoDCXpU+UDIWEgRhRpZCQy2+RnSRu3FPUz8uyR2MiNFzD0KdZntLw= X-Gm-Message-State: AOJu0YyJBgnLzRbN38T5wUIu79fkQX3SbklpzUmOjlbZVfDPfXTmhS81 BDdmxqZTQTT3YKDevGY/8sQOGjApnWUAY4+efl6VkIjBtrGf1IzL X-Google-Smtp-Source: AGHT+IG1iJoGjPDJ4imF8qZcuHLYYvbel182S43/J10hP1dvRLvswmx977CJlc4KOlTyLvqTPU+m9A== X-Received: by 2002:a2e:9590:0:b0:2da:daa9:8060 with SMTP id w16-20020a2e9590000000b002dadaa98060mr497005ljh.14.1713264809644; Tue, 16 Apr 2024 03:53:29 -0700 (PDT) Received: from ?IPv6:2001:8a0:e622:f700:a0:8eb2:ecf5:17e0? ([2001:8a0:e622:f700:a0:8eb2:ecf5:17e0]) by smtp.gmail.com with ESMTPSA id e1-20020a2e9301000000b002d70a040f21sm1532062ljh.91.2024.04.16.03.53.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:53:29 -0700 (PDT) Message-ID: <564fa534b32f4a6e96da6752f531fc7447ec633d.camel@gmail.com> Subject: Re: [PATCH v1] arm64: dts: imx8mm: fix missing pgc_vpu_* power domain parent From: Vitor Soares To: Lucas Stach , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Peng Fan Cc: Vitor Soares , devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Tue, 16 Apr 2024 11:53:26 +0100 In-Reply-To: References: <20240409085802.290439-1-ivitro@gmail.com> <9ce35b9bb5a15891f6bd01bd54b7dc84b3ba4021.camel@pengutronix.de> User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240416_035332_870292_7F9581AF X-CRM114-Status: GOOD ( 41.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org KysgUGVuZyBGYW4gPHBlbmcuZmFuQG54cC5jb20+CgpHcmVldGluZ3MsCgoKT24gV2VkLCAyMDI0 LTA0LTEwIGF0IDEyOjAxICswMTAwLCBWaXRvciBTb2FyZXMgd3JvdGU6Cj4gSGkgTHVjYXMsCj4g Cj4gT24gVHVlLCAyMDI0LTA0LTA5IGF0IDE3OjQ0ICswMTAwLCBWaXRvciBTb2FyZXMgd3JvdGU6 Cj4gPiBPbiBUdWUsIDIwMjQtMDQtMDkgYXQgMTY6MzYgKzAyMDAsIEx1Y2FzIFN0YWNoIHdyb3Rl Ogo+ID4gPiBBbSBEaWVuc3RhZywgZGVtIDA5LjA0LjIwMjQgdW0gMTQ6MjIgKzAxMDAgc2Nocmll YiBWaXRvciBTb2FyZXM6Cj4gPiA+ID4gSGkgTHVjYXMsCj4gPiA+ID4gCj4gPiA+ID4gVGhhbmtz IGZvciB5b3VyIGZlZWRiYWNrLgo+ID4gPiA+IAo+ID4gPiA+IE9uIFR1ZSwgMjAyNC0wNC0wOSBh dCAxMToxMyArMDIwMCwgTHVjYXMgU3RhY2ggd3JvdGU6Cj4gPiA+ID4gPiBIaSBWaXRvciwKPiA+ ID4gPiA+IAo+ID4gPiA+ID4gQW0gRGllbnN0YWcsIGRlbSAwOS4wNC4yMDI0IHVtIDA5OjU4ICsw MTAwIHNjaHJpZWIgVml0b3IKPiA+ID4gPiA+IFNvYXJlczoKPiA+ID4gPiA+ID4gRnJvbTogVml0 b3IgU29hcmVzIDx2aXRvci5zb2FyZXNAdG9yYWRleC5jb20+Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBUaGUgcGdjX3ZwdV8qIG5vZGVzIG1pc3MgdGhlIHJlZmVyZW5jZSB0byB0aGUgcG93ZXIg ZG9tYWluCj4gPiA+ID4gPiA+IHBhcmVudCwKPiA+ID4gPiA+ID4gbGVhZGluZyB0aGUgc3lzdGVt IHRvIGhhbmcgZHVyaW5nIHRoZSByZXN1bWUuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhpcyBj aGFuZ2UgaXMgbm90IGNvcnJlY3QuIFRoZSB2cHVtaXggZG9tYWluIGlzIGNvbnRyb2xsZWQKPiA+ ID4gPiA+IHRocm91Z2gKPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gaW14OG1tLXZwdS1ibGstY3Ry bCBhbmQgbXVzdCBub3QgYmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGJ5IHRoZQo+ID4gPiA+ID4gY2hp bGQKPiA+ID4gPiA+IGRvbWFpbnMgaW4gb3JkZXIgdG8gZ3VhcmFudGVlIHByb3BlciBwb3dlciBz ZXF1ZW5jaW5nLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBJZiB0aGUgc2VxdWVuY2luZyBpcyBpbmNv cnJlY3QgZm9yIHJlc3VtZSwgaXQgbmVlZHMgdG8gYmUKPiA+ID4gPiA+IGZpeGVkCj4gPiA+ID4g PiBpbgo+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiBibGstY3RybCBkcml2ZXIuIEknbGwgaGFwcGls eSBhc3Npc3QgaWYgeW91IGhhdmUgYW55Cj4gPiA+ID4gPiBxdWVzdGlvbnMKPiA+ID4gPiA+IGFi b3V0Cj4gPiA+ID4gPiB0aGlzIGludHJpY2F0ZSBtaXggYmV0d2VlbiBHUEMgYW5kIGJsay1jdHJs IGhhcmR3YXJlL2RyaXZlcnMuCj4gPiA+ID4gwqAKPiA+ID4gPiBJJ20gbmV3IGludG8gdGhlIHRv cGljLCBzbyBJIHRyaWVkIHRvIGZvbGxvdyBzYW1lIGFwcHJvYWNoIGFzCj4gPiA+ID4gaW4KPiA+ ID4gPiBpbXg4bXAKPiA+ID4gPiBEVC4KPiA+ID4gPiAKPiA+ID4gVGhhdCdzIGEgZ29vZCBoaW50 LCB0aGUgOE1QIFZQVSBHUEMgbm9kZSBhZGRpdGlvbnMgbWlzc2VkIG15Cj4gPiA+IHJhZGFyLgo+ ID4gPiBUaGUKPiA+ID4gZGlyZWN0IGRlcGVuZGVuY3kgdGhlcmUgYmV0d2VlbiB0aGUgR1BDIGRv bWFpbnMgaXMgZXF1YWxseSB3cm9uZy4KPiA+ID4gCj4gPiA+ID4gSSBhbHNvIGNoZWNrZWQgdGhl IGlteDhtcSBEVCBhbmQgaXQgb25seSBoYXZlIG9uZSBkb21haW4gZm9yCj4gPiA+ID4gdGhlCj4g PiA+ID4gVlBVIGluIHRoZSBHUEMuIEl0IHNlZW0gYmxrLWN0cmwgYWxzbyBkZXBlbmRlcyBvbiBw Z2NfdnB1XyogdG8KPiA+ID4gPiB3b3JrCj4gPiA+ID4gcHJvcGVybHkuCj4gPiA+ID4gCj4gPiA+ ID4gVGhlIGJsay1jdHJsIGRyaXZlciBoYW5ncyBvbiBpbXg4bV9ibGtfY3RybF9wb3dlcl9vbigp IHdoZW4KPiA+ID4gPiBhY2Nlc3MKPiA+ID4gPiB0aGUKPiA+ID4gPiBpcCByZWdpc3RlcnMgZm9y IHRoZSBzb2Z0IHJlc2V0LiBJIHRyaWVkIHRvIHBvd2VyLXVwIHRoZSBiZWZvcmUKPiA+ID4gPiB0 aGUKPiA+ID4gPiBzb2Z0IHJlc2V0LCBidXQgaXQgZGlkbid0IHdvcmsuCj4gPiA+ID4gCj4gPiA+ IFRoZSBydW50aW1lX3BtX2dldF9zeW5jKCkgYXQgdGhlIHN0YXJ0IG9mIHRoYXQgZnVuY3Rpb24g c2hvdWxkCj4gPiA+IGVuc3VyZQo+ID4gPiB0aGF0IGJ1cyBHUEMgZG9tYWluIGFrYSB2cHVtaXgg aXMgcG93ZXJlZCB1cC4gQ2FuIHlvdSBjaGVjayBpZgo+ID4gPiB0aGF0Cj4gPiA+IGlzCj4gPiA+ IGhhcHBlbmluZz8KPiA+IAo+ID4gSSBjaGVja2VkIGJjLT5idXNfcG93ZXJfZGV2LT5wb3dlci5y dW50aW1lX3N0YXR1cyBhbmQgaXQgaXMKPiA+IFJQTV9BQ1RJVkUuCj4gPiAKPiA+IEFtIEkgbG9v a2luZyB0byBvbiB0aGUgcmlnaHQgdGhpbmc/IEl0IGlzIFJQTV9BQ1RJVkUgZXZlbnQgYmVmb3Jl Cj4gPiBydW50aW1lX3BtX2dldF9zeW5jKCkuCj4gCj4gRHVyaW5nIHRoZSBwcm9iZSBJIGNhbiBz ZWUgdGhhdAo+IGJ1c19wb3dlcl9kZXYtPnBvd2VyLnJ1bnRpbWVfc3RhdHVzID0gUlBNX1NVU1BF TkRFRCBhbmQgdGhlbiB2cHVtaXgKPiBpcwo+IHBvd2VyZWQgdXAgb24gR1BDIGRyaXZlci4KPiAK PiBPbiByZXN1bWUgcm91dGluZSBJIGNhbid0IHNlZSB0aGlzIGZsb3cuIGJ1c19wb3dlcl9kZXYt Cj4gPiBwb3dlci5ydW50aW1lX3N0YXR1cyA9IFJQTV9BQ1RJVkUgYW5kIHZwdW1peCBlbmQgdXAg bm90IGJlaW5nCj4gPiBwb3dlcmVkLQo+IHVwLgo+IAo+IEkgY2hlY2tlZCB0aGUgc3VzcGVuZCBm bG93IGFuZCB0aGUgR1BDIHRyaWVzIHRvIHBvd2Vyb2ZmIHZwdW1peC4KPiAKPiAKCk15IHVuZGVy c3RhbmRpbmcgaXMgdGhhdCB3aGVuIHJlc3VtaW5nIHRoZSAzODMxMDAwMC52aWRlby1jb2RlYywg dGhlCnZwdW1peCBpc24ndCBwb3dlcmVkIHVwLiBJdCBoYXBwZW5zIGJlY2F1c2UgcnVudGltZV9z dGF0dXMgYW5kCnJ1bnRpbWVfbGFzdF9zdGF0dXMgPSBSUE1fQUNUSVZFLiAKCkkgdHJpZWQgdG8g Y2hhbmdlIGJsay1jdHJsIHN1c3BlbmQgcm91dGluZSB0byBmb3JjZSB0aGUgcnVudGltZV9zdGF0 dXMKPSBSUE1fU1VTUEVOREVELCBidXQgdGhlIHN5c3RlbSBlbmRlZCB1cCBoYW5naW5nIG9uIGFu b3RoZXIgZGV2aWNlLgoKRnJvbSB0aGUgY29tbWVudCBpbiBibGstY3RybCBzdXNwZW5kLCB3ZSBy ZWx5IG9uIFBNX1NMRUVQIGNvZGUgdGhhdAppdGVyYXRlcyBvdmVyIGRwbV9saXN0IGZvciBzdXNw ZW5kL3Jlc3VtZS4KSSBkaWQgbG9vayBhdCB0aGUgZHBtX2xpc3QsIGFuZCBpdCBjaGFuZ2VzIHRo ZSBvcmRlciBvbiBldmVyeSBib290LiAKCldpdGggYWxsIHRoZSB0ZXN0cywgSSBhbHNvIGZvdW5k IHRoYXQgdGhlIHN5c3RlbSByYW5kb21seSBoYW5ncyBvbgpkaXNwYmxrLWxjZGlmIHN1c3BlbmQu IEkgaGF2ZSBjb25maXJtZWQgdGhpcyBkZXZpY2UgaXMgaW4gYSBkaWZmZXJlbnQKcGxhY2UgaW4g dGhlIGRwbV9saXN0IChub3Qgc3VyZSBpZiBpdCBpcyB0aGUgcm9vdCBjYXVzZSkuIApJIGhhdmVu J3QgdW5kZXJzdG9vZCBob3cgYmxrLWN0cmwgZW5zdXJlcyB0aGUgY29ycmVjdCBvcmRlciB0aGVy ZSB5ZXQuIAoKVGFraW5nIHRoZSBmb2xsb3dpbmcgZHBtX2xpc3QgZXhjZXJwdDoKaWR4IC0gZGV2 aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouLi4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjE5MSAtIGlt eC1wZ2MtZG9tYWluLjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKMTkyIC0gaW14LXBnYy1kb21haW4uOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAoxOTMgLSBpbXgtcGdjLWRvbWFpbi45ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjE5NCAtIDM4MzMwMDAwLmJsay1jdHJs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKMTk1IC0gMzgz MTAwMDAudmlkZW8tY29kZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAoxOTYgLSAzODMwMDAwMC52aWRlby1jb2RlYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCi4uLgoyMDUgLSBnZW5wZDowOjM4MzMwMDAwLmJsay1jdHJsCjIw NiAtIGdlbnBkOjE6MzgzMzAwMDAuYmxrLWN0cmwKMjA3IC0gZ2VucGQ6MjozODMzMDAwMC5ibGst Y3RybAoyMDggLSBnZW5wZDozOjM4MzMwMDAwLmJsay1jdHJsCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKU2hvdWxkbid0IGdlbnBkIGRldmljZXMgYmUgYmVmb3JlIDM4MzMwMDAwLmJs ay1jdHJsPwpBcyB0aGVpciBwb3dlciBkb21haW4gaXMgR1BDIGFuZCB0aGUgYmxrLWN0cmwgcG93 ZXIgZG9tYWluIGlzIGdlbnBkLgoKQmVzdCByZWdhcmRzLApWaXRvciBTb2FyZXMKCj4gCj4gPiAK PiA+IAo+ID4gPiAKPiA+ID4gUmVnYXJkcywKPiA+ID4gTHVjYXMKPiA+ID4gCj4gPiA+ID4gRG8g eW91IGhhdmUgYW4gaWRlYSBob3cgd2UgY2FuIGFkZHJlc3MgdGhpcyB3aXRoaW4gYmxrLWN0cmw/ Cj4gPiA+ID4gCj4gPiA+ID4gQmVzdCByZWdhcmRzLAo+ID4gPiA+IFZpdG9yCj4gPiAKPiAKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==