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=-11.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 9AA7CC433E2 for ; Sat, 12 Sep 2020 12:53:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5FB93208E4 for ; Sat, 12 Sep 2020 12:53:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GXCU5k+x" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725876AbgILMxX (ORCPT ); Sat, 12 Sep 2020 08:53:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725923AbgILMxJ (ORCPT ); Sat, 12 Sep 2020 08:53:09 -0400 Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 978DCC061573 for ; Sat, 12 Sep 2020 05:53:08 -0700 (PDT) Received: by mail-lf1-x144.google.com with SMTP id z17so8605500lfi.12 for ; Sat, 12 Sep 2020 05:53:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=6dpGMF5H6mcAiyzNoMmGfadu4ovPBWLZg+ptyqmEQ3c=; b=GXCU5k+x3LKia0FF3MZBGHOBUUDHjarSFvGoP9BdpM7H7SlqQg3x+6Rk7G7AJeRhvg btpCB1km5qAONevBQ5E2oZPD1keQja9f7Yp9dlmkyVXxuNZ9o9xpFaFdrnyjFsZR+eN7 Wu+RbP2v/SH/Jg3Zr66xXZtrapAmo/aW6fMf/HmpjftHimoTbexjo/B/dUWuvKIdSQVx NjpjrsFfntSgCh75gGnxaKIX3iFHQrdbO1yp93R31Dkj1YGxTam0+2ZL2VC4XiyF1dHX KPxMwZa00LXqfaz+ECi4eOWE6mVJ1rHDQIK//TsNN1hYQuldftsEEfCX3C+5Vb1kfRV/ lSSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=6dpGMF5H6mcAiyzNoMmGfadu4ovPBWLZg+ptyqmEQ3c=; b=rOnsocgcuD/bLN/lzd+e+LkXhKvqe5VBnVBOkmzZmKj6gjr2CKKDP+Y0uhNnwc6NI2 lidrdHoVsHwz3wVwvUI50FCugvWw0V7VHv1DJehTkV72YJ/UGB35DtNYbZt3O7QK1zgp 5E2NoDnHFRnLSkvB0DxDbUhfPxOR2ybkDzk9BMVKMq2zB/90VeZ4+CmrEjZhu3zINufd INdEjMe7hCFDKUMt3gPZIvuSdD/WufB3b6WVn2fhtR5cgQK5AezG2jbvPgc2ah7Jb07W aXzycUyRl1L/1vYYC/i2EP+wQBON9I9oXgdGkfTEu+lfx/3S6WIimH2y3pWT3RnAJPkf M0hA== X-Gm-Message-State: AOAM532eflF+8lW7C8RSaxUsLeggDwfkfCglaxzS5BB/XAgLiWqDIheR eKNLIIy1G2Vq7EosBTG5LQg= X-Google-Smtp-Source: ABdhPJyYqL5hARpaMerGitztfJMZzriV+mhvbSTZbptctxwEBoif6dD+CQGd1Sisa5Ocf/RbHlLlww== X-Received: by 2002:a19:4c44:: with SMTP id z65mr1550169lfa.434.1599915186912; Sat, 12 Sep 2020 05:53:06 -0700 (PDT) Received: from [192.168.2.145] (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.googlemail.com with ESMTPSA id k3sm959598lfg.300.2020.09.12.05.53.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 12 Sep 2020 05:53:06 -0700 (PDT) Subject: Re: [RFC PATCH v2 10/17] WIP: gpu: host1x: Add no-recovery mode To: Mikko Perttunen , Mikko Perttunen , thierry.reding@gmail.com, jonathanh@nvidia.com, airlied@linux.ie, daniel@ffwll.ch Cc: linux-tegra@vger.kernel.org, dri-devel@lists.freedesktop.org, talho@nvidia.com, bhuntsman@nvidia.com References: <20200905103420.3021852-1-mperttunen@nvidia.com> <20200905103420.3021852-11-mperttunen@nvidia.com> <7d7a29e8-3151-12ea-da66-d8a479edda84@gmail.com> From: Dmitry Osipenko Message-ID: <07f933b3-10d9-0318-e2f3-6dfd5b4903ac@gmail.com> Date: Sat, 12 Sep 2020 15:53:05 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org 12.09.2020 01:11, Mikko Perttunen пишет: > On 9/11/20 7:40 PM, Dmitry Osipenko wrote: >> 05.09.2020 13:34, Mikko Perttunen пишет: >>> +    } else { >>> +        struct host1x_job *failed_job = job; >>> + >>> +        host1x_job_dump(dev, job); >>> + >>> +        host1x_syncpt_set_locked(job->syncpt); >>> +        failed_job->cancelled = true; >>> + >>> +        list_for_each_entry_continue(job, &cdma->sync_queue, list) { >>> +            unsigned int i; >>> + >>> +            if (job->syncpt != failed_job->syncpt) >>> +                continue; >>> + >>> +            for (i = 0; i < job->num_slots; i++) { >>> +                unsigned int slot = (job->first_get/8 + i) % >>> +                            HOST1X_PUSHBUFFER_SLOTS; >>> +                u32 *mapped = cdma->push_buffer.mapped; >>> + >>> +                mapped[2*slot+0] = 0x1bad0000; >>> +                mapped[2*slot+1] = 0x1bad0000; >> >> The 0x1bad0000 is a valid memory address on Tegra20. >> >> The 0x60000000 is invalid phys address for all hardware generations. >> It's used by grate-kernel [1] and VDE driver [2]. Note that the 0x6 << >> 28 is also invalid Host1x opcode, while 0x1 should break CDMA parser >> during of PB debug-dumping. >> >> [1] >> https://github.com/grate-driver/linux/blob/master/drivers/gpu/drm/tegra/gem.h#L16 >> >> >> [2] >> https://elixir.bootlin.com/linux/v5.9-rc4/source/drivers/staging/media/tegra-vde/iommu.c#L99 >> >> >> The VDE driver reserves the trapping IOVA addresses, I assume the Host1x >> driver should do the same. >> > > The 0x1bad0000's are not intended to be memory addresses, they are NOOP > opcodes (INCR of 0 words to offset 0xbad). I'll fix this to use proper > functions to construct the opcodes and add some comments. These need to > be NOOP opcodes so the command parser skips over these "cancelled" jobs > when the channel is resumed. > > BTW, 0x60000000 is valid on Tegra194 and later. At a quick glance it looked like a memory address :) I'm now taking a closer look at this patch and it raises some more questions, like for example by looking at the "On job timeout, we stop the channel, NOP all future jobs on the channel using the same syncpoint ..." through the prism of grate-kernel experience, I'm not sure how it could co-exist with the drm-scheduler and why it's needed at all. But I think we need a feature-complete version (at least a rough version), so that we could start the testing, and then it should be easier to review and discuss such things. 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=-9.8 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 D4929C433E2 for ; Mon, 14 Sep 2020 07:03:48 +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 90C62208DB for ; Mon, 14 Sep 2020 07:03:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GXCU5k+x" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 90C62208DB 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 3A45A6E1E5; Mon, 14 Sep 2020 07:03:09 +0000 (UTC) Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88CA06E228 for ; Sat, 12 Sep 2020 12:53:08 +0000 (UTC) Received: by mail-lf1-x144.google.com with SMTP id d15so8610344lfq.11 for ; Sat, 12 Sep 2020 05:53:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=6dpGMF5H6mcAiyzNoMmGfadu4ovPBWLZg+ptyqmEQ3c=; b=GXCU5k+x3LKia0FF3MZBGHOBUUDHjarSFvGoP9BdpM7H7SlqQg3x+6Rk7G7AJeRhvg btpCB1km5qAONevBQ5E2oZPD1keQja9f7Yp9dlmkyVXxuNZ9o9xpFaFdrnyjFsZR+eN7 Wu+RbP2v/SH/Jg3Zr66xXZtrapAmo/aW6fMf/HmpjftHimoTbexjo/B/dUWuvKIdSQVx NjpjrsFfntSgCh75gGnxaKIX3iFHQrdbO1yp93R31Dkj1YGxTam0+2ZL2VC4XiyF1dHX KPxMwZa00LXqfaz+ECi4eOWE6mVJ1rHDQIK//TsNN1hYQuldftsEEfCX3C+5Vb1kfRV/ lSSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=6dpGMF5H6mcAiyzNoMmGfadu4ovPBWLZg+ptyqmEQ3c=; b=GWgsz/lgfhiJPVZkeVNOtF0xFiK/pFB5sVsuX1WaVHYyXU5n2+DhOyKPtC+3pHed/b Ju/r0BxJK+ky26UgO6wVsYqg4PuwExk1IZIRiwh3+1afpdwyZLNm5HjASl/LMdhp7A4j yUI0rdmwNaD39smdNEgkX9TZisu1tjZksjoSo+XzhjSgkE7fqROIefsI+pVQPnwHEXqZ Z1YCeKI9IJV5J36IBFLmIERGt2n2H/iHrK+hF4I7SK33LyWCPWJjU9eeyexmeWFDSzQZ K8iauyfdkUY4cuQ8496RmI6ddkxh7aG/15ZtBz9D6BkoAIRN1QQKg5HseYSv2vsZwSEG 6lTQ== X-Gm-Message-State: AOAM530I0yStXa9CH3lVb+dLX6iZpwg+f2oZe0L77aDvc+fwD2NJmihy 3Skv0BfCQKxfY6iyERdRv5VdBGnneLk= X-Google-Smtp-Source: ABdhPJyYqL5hARpaMerGitztfJMZzriV+mhvbSTZbptctxwEBoif6dD+CQGd1Sisa5Ocf/RbHlLlww== X-Received: by 2002:a19:4c44:: with SMTP id z65mr1550169lfa.434.1599915186912; Sat, 12 Sep 2020 05:53:06 -0700 (PDT) Received: from [192.168.2.145] (109-252-170-211.dynamic.spd-mgts.ru. [109.252.170.211]) by smtp.googlemail.com with ESMTPSA id k3sm959598lfg.300.2020.09.12.05.53.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 12 Sep 2020 05:53:06 -0700 (PDT) Subject: Re: [RFC PATCH v2 10/17] WIP: gpu: host1x: Add no-recovery mode To: Mikko Perttunen , Mikko Perttunen , thierry.reding@gmail.com, jonathanh@nvidia.com, airlied@linux.ie, daniel@ffwll.ch References: <20200905103420.3021852-1-mperttunen@nvidia.com> <20200905103420.3021852-11-mperttunen@nvidia.com> <7d7a29e8-3151-12ea-da66-d8a479edda84@gmail.com> From: Dmitry Osipenko Message-ID: <07f933b3-10d9-0318-e2f3-6dfd5b4903ac@gmail.com> Date: Sat, 12 Sep 2020 15:53:05 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Mailman-Approved-At: Mon, 14 Sep 2020 07:03:05 +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-tegra@vger.kernel.org, talho@nvidia.com, bhuntsman@nvidia.com, 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" MTIuMDkuMjAyMCAwMToxMSwgTWlra28gUGVydHR1bmVuINC/0LjRiNC10YI6Cj4gT24gOS8xMS8y MCA3OjQwIFBNLCBEbWl0cnkgT3NpcGVua28gd3JvdGU6Cj4+IDA1LjA5LjIwMjAgMTM6MzQsIE1p a2tvIFBlcnR0dW5lbiDQv9C40YjQtdGCOgo+Pj4gK8KgwqDCoCB9IGVsc2Ugewo+Pj4gK8KgwqDC oMKgwqDCoMKgIHN0cnVjdCBob3N0MXhfam9iICpmYWlsZWRfam9iID0gam9iOwo+Pj4gKwo+Pj4g K8KgwqDCoMKgwqDCoMKgIGhvc3QxeF9qb2JfZHVtcChkZXYsIGpvYik7Cj4+PiArCj4+PiArwqDC oMKgwqDCoMKgwqAgaG9zdDF4X3N5bmNwdF9zZXRfbG9ja2VkKGpvYi0+c3luY3B0KTsKPj4+ICvC oMKgwqDCoMKgwqDCoCBmYWlsZWRfam9iLT5jYW5jZWxsZWQgPSB0cnVlOwo+Pj4gKwo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUoam9iLCAmY2RtYS0+c3lu Y19xdWV1ZSwgbGlzdCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50 IGk7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoam9iLT5zeW5jcHQgIT0g ZmFpbGVkX2pvYi0+c3luY3B0KQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b250aW51ZTsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDA7IGkg PCBqb2ItPm51bV9zbG90czsgaSsrKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHVuc2lnbmVkIGludCBzbG90ID0gKGpvYi0+Zmlyc3RfZ2V0LzggKyBpKSAlCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEhPU1Qx WF9QVVNIQlVGRkVSX1NMT1RTOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgKm1hcHBlZCA9IGNkbWEtPnB1c2hfYnVmZmVyLm1hcHBlZDsKPj4+ICsKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWFwcGVkWzIqc2xvdCswXSA9IDB4MWJhZDAwMDA7Cj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcHBlZFsyKnNsb3QrMV0gPSAweDFi YWQwMDAwOwo+Pgo+PiBUaGUgMHgxYmFkMDAwMCBpcyBhIHZhbGlkIG1lbW9yeSBhZGRyZXNzIG9u IFRlZ3JhMjAuCj4+Cj4+IFRoZSAweDYwMDAwMDAwIGlzIGludmFsaWQgcGh5cyBhZGRyZXNzIGZv ciBhbGwgaGFyZHdhcmUgZ2VuZXJhdGlvbnMuCj4+IEl0J3MgdXNlZCBieSBncmF0ZS1rZXJuZWwg WzFdIGFuZCBWREUgZHJpdmVyIFsyXS4gTm90ZSB0aGF0IHRoZSAweDYgPDwKPj4gMjggaXMgYWxz byBpbnZhbGlkIEhvc3QxeCBvcGNvZGUsIHdoaWxlIDB4MSBzaG91bGQgYnJlYWsgQ0RNQSBwYXJz ZXIKPj4gZHVyaW5nIG9mIFBCIGRlYnVnLWR1bXBpbmcuCj4+Cj4+IFsxXQo+PiBodHRwczovL2dp dGh1Yi5jb20vZ3JhdGUtZHJpdmVyL2xpbnV4L2Jsb2IvbWFzdGVyL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9nZW0uaCNMMTYKPj4KPj4KPj4gWzJdCj4+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29t L2xpbnV4L3Y1LjktcmM0L3NvdXJjZS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvdGVncmEtdmRlL2lv bW11LmMjTDk5Cj4+Cj4+Cj4+IFRoZSBWREUgZHJpdmVyIHJlc2VydmVzIHRoZSB0cmFwcGluZyBJ T1ZBIGFkZHJlc3NlcywgSSBhc3N1bWUgdGhlIEhvc3QxeAo+PiBkcml2ZXIgc2hvdWxkIGRvIHRo ZSBzYW1lLgo+Pgo+IAo+IFRoZSAweDFiYWQwMDAwJ3MgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBt ZW1vcnkgYWRkcmVzc2VzLCB0aGV5IGFyZSBOT09QCj4gb3Bjb2RlcyAoSU5DUiBvZiAwIHdvcmRz IHRvIG9mZnNldCAweGJhZCkuIEknbGwgZml4IHRoaXMgdG8gdXNlIHByb3Blcgo+IGZ1bmN0aW9u cyB0byBjb25zdHJ1Y3QgdGhlIG9wY29kZXMgYW5kIGFkZCBzb21lIGNvbW1lbnRzLiBUaGVzZSBu ZWVkIHRvCj4gYmUgTk9PUCBvcGNvZGVzIHNvIHRoZSBjb21tYW5kIHBhcnNlciBza2lwcyBvdmVy IHRoZXNlICJjYW5jZWxsZWQiIGpvYnMKPiB3aGVuIHRoZSBjaGFubmVsIGlzIHJlc3VtZWQuCj4g Cj4gQlRXLCAweDYwMDAwMDAwIGlzIHZhbGlkIG9uIFRlZ3JhMTk0IGFuZCBsYXRlci4KCkF0IGEg cXVpY2sgZ2xhbmNlIGl0IGxvb2tlZCBsaWtlIGEgbWVtb3J5IGFkZHJlc3MgOikKCkknbSBub3cg dGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgaXQgcmFpc2VzIHNvbWUgbW9y ZQpxdWVzdGlvbnMsIGxpa2UgZm9yIGV4YW1wbGUgYnkgbG9va2luZyBhdCB0aGUgIk9uIGpvYiB0 aW1lb3V0LCB3ZSBzdG9wCnRoZSBjaGFubmVsLCBOT1AgYWxsIGZ1dHVyZSBqb2JzIG9uIHRoZSBj aGFubmVsIHVzaW5nIHRoZSBzYW1lIHN5bmNwb2ludAouLi4iIHRocm91Z2ggdGhlIHByaXNtIG9m IGdyYXRlLWtlcm5lbCBleHBlcmllbmNlLCBJJ20gbm90IHN1cmUgaG93IGl0CmNvdWxkIGNvLWV4 aXN0IHdpdGggdGhlIGRybS1zY2hlZHVsZXIgYW5kIHdoeSBpdCdzIG5lZWRlZCBhdCBhbGwuIEJ1 dCBJCnRoaW5rIHdlIG5lZWQgYSBmZWF0dXJlLWNvbXBsZXRlIHZlcnNpb24gKGF0IGxlYXN0IGEg cm91Z2ggdmVyc2lvbiksIHNvCnRoYXQgd2UgY291bGQgc3RhcnQgdGhlIHRlc3RpbmcsIGFuZCB0 aGVuIGl0IHNob3VsZCBiZSBlYXNpZXIgdG8gcmV2aWV3CmFuZCBkaXNjdXNzIHN1Y2ggdGhpbmdz LgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK