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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2B4FC4332F for ; Fri, 25 Nov 2022 14:53:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229894AbiKYOxr (ORCPT ); Fri, 25 Nov 2022 09:53:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229792AbiKYOxq (ORCPT ); Fri, 25 Nov 2022 09:53:46 -0500 Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A531D27B16 for ; Fri, 25 Nov 2022 06:53:45 -0800 (PST) Received: by mail-pl1-x62d.google.com with SMTP id d6so4190939pll.7 for ; Fri, 25 Nov 2022 06:53:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=tEL6Kbr+HdwY+UWUkv0USE/Ww2DAfRqHJN30xRQuHfE=; b=HPoo/A6uH3qT91Mz1+v25Mzk5kNO0o9889sZJX0Uro3IG6jlAkYFS3DjVSmSIvjaWN mUHa4LQx5fE6NmB4Hgo1XTqHT+gla/K47bmNyybaVV7PBYz7mS7ieGF67qMR8VAC8SK8 /e/oJE39ih8FfwTvb5DYDBm9lPMkUqpeCLnEda+82BRkYR84Os9W7/fGrCgT8xt2MbA4 /V8tMAa4L55AA36SrrxT2Dj+UX65pZqod2HCTDHxQZWavBQjzEsOay+SkAvKt6r01zeG ngp02iYwXPDJFd/6E4Jl7Hom2+3gwKtvrC90FUNUV/vH2kGnsbD2qQ1xjyyYaA0IdSAY ASTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tEL6Kbr+HdwY+UWUkv0USE/Ww2DAfRqHJN30xRQuHfE=; b=ZdXWacNdxYkv+T31mZgwlBQww3OZAvvzfDWgZhvYi7QCd4wXcMtG/EyPI4Jt45b5Pg K4XcI4SG9WkswgYLVV94IdJjoBcTd/eSYXP2Dg1qDq5cfEIUPlYrC1skstLN/kbYkWnP jqQOXs06NivE4XXc/JAoaccypA8PcUYSkGAGRtOZ5t3WL6uHHvRDIsg5rMZp8w7ciz8b oHABztepCwsTl/r99ib2ktkHjEdmXBwBSH9oH6Y3ODTFQG8B1tg97KygxkDM7hKLdvHS 3a1qSAh5V1uM99mpdmFusrcsxwe5kT5hS2c5jB3kk1+d4lOrHQN8MQPledrnbRvg69ys somg== X-Gm-Message-State: ANoB5pnwUzcZGO4B84ZR93/Rn2RyqDhmBf1YMFpEWxfkDlIWQnTxXwYp uakBJC+c+9NsorG960ijRMc3KTGnfOMD X-Google-Smtp-Source: AA0mqf7HjBLKze1SBILKxPgmoDtboSFCsmzP286bDV9AxMFHqsThNG+9U+uA0jo2ztDAw52O07U33A== X-Received: by 2002:a17:90a:2f23:b0:218:72e0:307b with SMTP id s32-20020a17090a2f2300b0021872e0307bmr40753662pjd.183.1669388025066; Fri, 25 Nov 2022 06:53:45 -0800 (PST) Received: from thinkpad ([117.202.190.212]) by smtp.gmail.com with ESMTPSA id 15-20020a630f4f000000b0047702d44861sm2659303pgp.18.2022.11.25.06.53.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Nov 2022 06:53:44 -0800 (PST) Date: Fri, 25 Nov 2022 20:23:36 +0530 From: Manivannan Sadhasivam To: Johan Hovold Cc: Johan Hovold , Bjorn Andersson , Andy Gross , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Will Deacon , Robin Murphy , Christoph Hellwig , Ard Biesheuvel , Catalin Marinas , linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] arm64: dts: qcom: sc8280xp: fix PCIe DMA coherency Message-ID: <20221125145336.GB9892@thinkpad> References: <20221124142501.29314-1-johan+linaro@kernel.org> <20221125142625.GA9892@thinkpad> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Fri, Nov 25, 2022 at 03:43:59PM +0100, Johan Hovold wrote: > On Fri, Nov 25, 2022 at 07:56:25PM +0530, Manivannan Sadhasivam wrote: > > On Thu, Nov 24, 2022 at 03:25:01PM +0100, Johan Hovold wrote: > > > The devices on the SC8280XP PCIe buses are cache coherent and must be > > > marked as such to avoid data corruption. > > > > > > A coherent device can, for example, end up snooping stale data from the > > > caches instead of using data written by the CPU through the > > > non-cacheable mapping which is used for consistent DMA buffers for > > > non-coherent devices. > > > > > > > Also, the device may write into the L2 cache (or whatever cache that is > > accessible) if there is an entry and the CPU may invalidate it before reading > > from the DMA buffer. This will end up in a data loss. > > I mentioned the above as an example, but clearly it can affect also the > other direction (e.g. as described below). > > > > Note that this is much more likely to happen since commit c44094eee32f > > > ("arm64: dma: Drop cache invalidation from arch_dma_prep_coherent()") > > > that was added in 6.1 and which removed the cache invalidation when > > > setting up the non-cacheable mapping. > > > > > > Marking the PCIe devices as coherent specifically fixes the intermittent > > > NVMe probe failures observed on the Thinkpad X13s, which was due to > > > corruption of the submission and completion queues. This was typically > > > observed as corruption of the admin submission queue (with well-formed > > > completion): > > > > > > could not locate request for tag 0x0 > > > nvme nvme0: invalid id 0 completed on queue 0 > > > > > > or corruption of the admin or I/O completion queues (malformed > > > completion): > > > > > > could not locate request for tag 0x45f > > > nvme nvme0: invalid id 25695 completed on queue 25965 > > > > > > presumably as these queues are small enough to not be allocated using > > > CMA which in turn make them more likely to be cached (e.g. due to > > > accesses to nearby pages through the cacheable linear map). Increasing > > > the buffer sizes to two pages to force CMA allocation also appears to > > > make the problem go away. > > > > > > > I don't think the problem will go away if the allocation happens from CMA > > region. It may just decrease the chances of cache hit but it could always > > happen due to the existence of linear mapping with cacheable attribute. > > I never claimed it would fix the problem, I explicitly wrote that it > made it less likely to occur (to the point where my reproducer no longer > triggers). > > Increasing the buffer sizes to two pages to force CMA allocation also appears > to make the problem go away. The "go away" part sounded like a claim to me and hence I added the statement. But no worries :) Thanks, Mani > Johan -- மணிவண்ணன் சதாசிவம் 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 72392C4332F for ; Fri, 25 Nov 2022 15:02:02 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=le/MzulnCWnlpGu7seeiVJNkUZ3Ykk4U7hUx9DNmWf4=; b=AhJ34eE0BcQXxk w64TrT1zIocq9pkgprSA1b1vErvTbJA2BkgvP4+73VBe8kvabG4DiENOoUAkBA395+FbqHb4nkJNp HpEHJ3eo1HGi+kfvnxO2DQ0ByGjKLYffJnq3+ylboOVFgRj3Rlz7BJm6ldZCuJDEFM0OnX5sEntju 5TynFhFshATl8ePOEwj+cJq7ZZBMm6UFvUAad/vxwG6c0CjeSq8ysVov0norecFFSno7nF5egtGXS V8wuOwkfmn55RmASHZLyl3miyapoEuCw26SodXf/6EnOz6x/o2TNcVPhamaErElvf+F8sQAlCQsbJ JU0zWdjjHgtL8+9b8CUw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oyaBt-00HHtu-1z; Fri, 25 Nov 2022 15:00:33 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oya5K-00HE7F-QT for linux-arm-kernel@lists.infradead.org; Fri, 25 Nov 2022 14:53:48 +0000 Received: by mail-pl1-x62d.google.com with SMTP id 4so4224354pli.0 for ; Fri, 25 Nov 2022 06:53:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=tEL6Kbr+HdwY+UWUkv0USE/Ww2DAfRqHJN30xRQuHfE=; b=HPoo/A6uH3qT91Mz1+v25Mzk5kNO0o9889sZJX0Uro3IG6jlAkYFS3DjVSmSIvjaWN mUHa4LQx5fE6NmB4Hgo1XTqHT+gla/K47bmNyybaVV7PBYz7mS7ieGF67qMR8VAC8SK8 /e/oJE39ih8FfwTvb5DYDBm9lPMkUqpeCLnEda+82BRkYR84Os9W7/fGrCgT8xt2MbA4 /V8tMAa4L55AA36SrrxT2Dj+UX65pZqod2HCTDHxQZWavBQjzEsOay+SkAvKt6r01zeG ngp02iYwXPDJFd/6E4Jl7Hom2+3gwKtvrC90FUNUV/vH2kGnsbD2qQ1xjyyYaA0IdSAY ASTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tEL6Kbr+HdwY+UWUkv0USE/Ww2DAfRqHJN30xRQuHfE=; b=K6vRBtPo1rS6/Ilj8dxTDg8XiE+Yuwrzb2nlifEUsU3S89mUHPepV6Io9L6y5tP9xK X2Mxsjo6UgBFdmSIl8HXWIDB2daxE+M1GYQumTiNDvVvP6Coc5t3pyH2o6L4w51iD/sy g9o+lN1tu9VpeFdeC6H4UgclpX0G9yxQZfj/CFOv/WR+PAI5ehggwK02T1b1vpP6++Fl SpkK2SHNsv1celjvHZLrmeKcgvG/jGCBKC5JNfZyQd9YWm03A1hlRcr5b3uDWmKCECtb MAw1X/MoWsfgjpjcFWONZMJCgvuhokWYEbPR/6K9aOeQg/8wSak3mh6LNd5WWO4T2CSH Dfzg== X-Gm-Message-State: ANoB5pnEr+z6rgaw/JOKq5LgiNNqcK6VoPLAsmjjlpXm61TrkDwJN/Sf vO27aWMDs/NOe44wEtGyskjK X-Google-Smtp-Source: AA0mqf7HjBLKze1SBILKxPgmoDtboSFCsmzP286bDV9AxMFHqsThNG+9U+uA0jo2ztDAw52O07U33A== X-Received: by 2002:a17:90a:2f23:b0:218:72e0:307b with SMTP id s32-20020a17090a2f2300b0021872e0307bmr40753662pjd.183.1669388025066; Fri, 25 Nov 2022 06:53:45 -0800 (PST) Received: from thinkpad ([117.202.190.212]) by smtp.gmail.com with ESMTPSA id 15-20020a630f4f000000b0047702d44861sm2659303pgp.18.2022.11.25.06.53.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Nov 2022 06:53:44 -0800 (PST) Date: Fri, 25 Nov 2022 20:23:36 +0530 From: Manivannan Sadhasivam To: Johan Hovold Cc: Johan Hovold , Bjorn Andersson , Andy Gross , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Will Deacon , Robin Murphy , Christoph Hellwig , Ard Biesheuvel , Catalin Marinas , linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] arm64: dts: qcom: sc8280xp: fix PCIe DMA coherency Message-ID: <20221125145336.GB9892@thinkpad> References: <20221124142501.29314-1-johan+linaro@kernel.org> <20221125142625.GA9892@thinkpad> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221125_065346_923421_DCEE8912 X-CRM114-Status: GOOD ( 32.38 ) 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 T24gRnJpLCBOb3YgMjUsIDIwMjIgYXQgMDM6NDM6NTlQTSArMDEwMCwgSm9oYW4gSG92b2xkIHdy b3RlOgo+IE9uIEZyaSwgTm92IDI1LCAyMDIyIGF0IDA3OjU2OjI1UE0gKzA1MzAsIE1hbml2YW5u YW4gU2FkaGFzaXZhbSB3cm90ZToKPiA+IE9uIFRodSwgTm92IDI0LCAyMDIyIGF0IDAzOjI1OjAx UE0gKzAxMDAsIEpvaGFuIEhvdm9sZCB3cm90ZToKPiA+ID4gVGhlIGRldmljZXMgb24gdGhlIFND ODI4MFhQIFBDSWUgYnVzZXMgYXJlIGNhY2hlIGNvaGVyZW50IGFuZCBtdXN0IGJlCj4gPiA+IG1h cmtlZCBhcyBzdWNoIHRvIGF2b2lkIGRhdGEgY29ycnVwdGlvbi4KPiA+ID4gCj4gPiA+IEEgY29o ZXJlbnQgZGV2aWNlIGNhbiwgZm9yIGV4YW1wbGUsIGVuZCB1cCBzbm9vcGluZyBzdGFsZSBkYXRh IGZyb20gdGhlCj4gPiA+IGNhY2hlcyBpbnN0ZWFkIG9mIHVzaW5nIGRhdGEgd3JpdHRlbiBieSB0 aGUgQ1BVIHRocm91Z2ggdGhlCj4gPiA+IG5vbi1jYWNoZWFibGUgbWFwcGluZyB3aGljaCBpcyB1 c2VkIGZvciBjb25zaXN0ZW50IERNQSBidWZmZXJzIGZvcgo+ID4gPiBub24tY29oZXJlbnQgZGV2 aWNlcy4KPiA+ID4gCj4gPiAKPiA+IEFsc28sIHRoZSBkZXZpY2UgbWF5IHdyaXRlIGludG8gdGhl IEwyIGNhY2hlIChvciB3aGF0ZXZlciBjYWNoZSB0aGF0IGlzCj4gPiBhY2Nlc3NpYmxlKSBpZiB0 aGVyZSBpcyBhbiBlbnRyeSBhbmQgdGhlIENQVSBtYXkgaW52YWxpZGF0ZSBpdCBiZWZvcmUgcmVh ZGluZwo+ID4gZnJvbSB0aGUgRE1BIGJ1ZmZlci4gVGhpcyB3aWxsIGVuZCB1cCBpbiBhIGRhdGEg bG9zcy4KPiAKPiBJIG1lbnRpb25lZCB0aGUgYWJvdmUgYXMgYW4gZXhhbXBsZSwgYnV0IGNsZWFy bHkgaXQgY2FuIGFmZmVjdCBhbHNvIHRoZQo+IG90aGVyIGRpcmVjdGlvbiAoZS5nLiBhcyBkZXNj cmliZWQgYmVsb3cpLgo+IAo+ID4gPiBOb3RlIHRoYXQgdGhpcyBpcyBtdWNoIG1vcmUgbGlrZWx5 IHRvIGhhcHBlbiBzaW5jZSBjb21taXQgYzQ0MDk0ZWVlMzJmCj4gPiA+ICgiYXJtNjQ6IGRtYTog RHJvcCBjYWNoZSBpbnZhbGlkYXRpb24gZnJvbSBhcmNoX2RtYV9wcmVwX2NvaGVyZW50KCkiKQo+ ID4gPiB0aGF0IHdhcyBhZGRlZCBpbiA2LjEgYW5kIHdoaWNoIHJlbW92ZWQgdGhlIGNhY2hlIGlu dmFsaWRhdGlvbiB3aGVuCj4gPiA+IHNldHRpbmcgdXAgdGhlIG5vbi1jYWNoZWFibGUgbWFwcGlu Zy4KPiA+ID4gCj4gPiA+IE1hcmtpbmcgdGhlIFBDSWUgZGV2aWNlcyBhcyBjb2hlcmVudCBzcGVj aWZpY2FsbHkgZml4ZXMgdGhlIGludGVybWl0dGVudAo+ID4gPiBOVk1lIHByb2JlIGZhaWx1cmVz IG9ic2VydmVkIG9uIHRoZSBUaGlua3BhZCBYMTNzLCB3aGljaCB3YXMgZHVlIHRvCj4gPiA+IGNv cnJ1cHRpb24gb2YgdGhlIHN1Ym1pc3Npb24gYW5kIGNvbXBsZXRpb24gcXVldWVzLiBUaGlzIHdh cyB0eXBpY2FsbHkKPiA+ID4gb2JzZXJ2ZWQgYXMgY29ycnVwdGlvbiBvZiB0aGUgYWRtaW4gc3Vi bWlzc2lvbiBxdWV1ZSAod2l0aCB3ZWxsLWZvcm1lZAo+ID4gPiBjb21wbGV0aW9uKToKPiA+ID4g Cj4gPiA+IAljb3VsZCBub3QgbG9jYXRlIHJlcXVlc3QgZm9yIHRhZyAweDAKPiA+ID4gCW52bWUg bnZtZTA6IGludmFsaWQgaWQgMCBjb21wbGV0ZWQgb24gcXVldWUgMAo+ID4gPiAKPiA+ID4gb3Ig Y29ycnVwdGlvbiBvZiB0aGUgYWRtaW4gb3IgSS9PIGNvbXBsZXRpb24gcXVldWVzIChtYWxmb3Jt ZWQKPiA+ID4gY29tcGxldGlvbik6Cj4gPiA+IAo+ID4gPiAJY291bGQgbm90IGxvY2F0ZSByZXF1 ZXN0IGZvciB0YWcgMHg0NWYKPiA+ID4gCW52bWUgbnZtZTA6IGludmFsaWQgaWQgMjU2OTUgY29t cGxldGVkIG9uIHF1ZXVlIDI1OTY1Cj4gPiA+IAo+ID4gPiBwcmVzdW1hYmx5IGFzIHRoZXNlIHF1 ZXVlcyBhcmUgc21hbGwgZW5vdWdoIHRvIG5vdCBiZSBhbGxvY2F0ZWQgdXNpbmcKPiA+ID4gQ01B IHdoaWNoIGluIHR1cm4gbWFrZSB0aGVtIG1vcmUgbGlrZWx5IHRvIGJlIGNhY2hlZCAoZS5nLiBk dWUgdG8KPiA+ID4gYWNjZXNzZXMgdG8gbmVhcmJ5IHBhZ2VzIHRocm91Z2ggdGhlIGNhY2hlYWJs ZSBsaW5lYXIgbWFwKS4gSW5jcmVhc2luZwo+ID4gPiB0aGUgYnVmZmVyIHNpemVzIHRvIHR3byBw YWdlcyB0byBmb3JjZSBDTUEgYWxsb2NhdGlvbiBhbHNvIGFwcGVhcnMgdG8KPiA+ID4gbWFrZSB0 aGUgcHJvYmxlbSBnbyBhd2F5Lgo+ID4gPiAKPiA+IAo+ID4gSSBkb24ndCB0aGluayB0aGUgcHJv YmxlbSB3aWxsIGdvIGF3YXkgaWYgdGhlIGFsbG9jYXRpb24gaGFwcGVucyBmcm9tIENNQQo+ID4g cmVnaW9uLiBJdCBtYXkganVzdCBkZWNyZWFzZSB0aGUgY2hhbmNlcyBvZiBjYWNoZSBoaXQgYnV0 IGl0IGNvdWxkIGFsd2F5cwo+ID4gaGFwcGVuIGR1ZSB0byB0aGUgZXhpc3RlbmNlIG9mIGxpbmVh ciBtYXBwaW5nIHdpdGggY2FjaGVhYmxlIGF0dHJpYnV0ZS4KPiAKPiBJIG5ldmVyIGNsYWltZWQg aXQgd291bGQgZml4IHRoZSBwcm9ibGVtLCBJIGV4cGxpY2l0bHkgd3JvdGUgdGhhdCBpdAo+IG1h ZGUgaXQgbGVzcyBsaWtlbHkgdG8gb2NjdXIgKHRvIHRoZSBwb2ludCB3aGVyZSBteSByZXByb2R1 Y2VyIG5vIGxvbmdlcgo+IHRyaWdnZXJzKS4KPiAKCj4gSW5jcmVhc2luZyB0aGUgYnVmZmVyIHNp emVzIHRvIHR3byBwYWdlcyB0byBmb3JjZSBDTUEgYWxsb2NhdGlvbiBhbHNvIGFwcGVhcnMKPiB0 byBtYWtlIHRoZSBwcm9ibGVtIGdvIGF3YXkuCgpUaGUgImdvIGF3YXkiIHBhcnQgc291bmRlZCBs aWtlIGEgY2xhaW0gdG8gbWUgYW5kIGhlbmNlIEkgYWRkZWQgdGhlIHN0YXRlbWVudC4KQnV0IG5v IHdvcnJpZXMgOikKClRoYW5rcywKTWFuaQoKPiBKb2hhbgoKLS0gCuCuruCuo+Cuv+CuteCuo+Cv jeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK