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=-4.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 36369C433EA for ; Thu, 23 Jul 2020 16:32:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 13C39206F4 for ; Thu, 23 Jul 2020 16:32:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595521937; bh=UsE0AfyyH9ASPhZTnv7rHkKV2A1QkqMr7Pj3l5isRpU=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=Oi1QUgFjbbEEdLEj71VO7khuJkgBkf/Tzi6tXiNdt+RxNvRbHkom347tLocXagGAs 8SxDdGSK9KGUf0IS+n3rfntiHoAq5rkDVGE+/38O3VfkRHjsamLy1O3/Vgu0KxT3q3 1yWOCyOl1RubeRzaPz7p/kjviGrwG3NdbA1UIwW8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729819AbgGWQcQ (ORCPT ); Thu, 23 Jul 2020 12:32:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:49818 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726621AbgGWQcP (ORCPT ); Thu, 23 Jul 2020 12:32:15 -0400 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A0ACC206F4; Thu, 23 Jul 2020 16:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595521934; bh=UsE0AfyyH9ASPhZTnv7rHkKV2A1QkqMr7Pj3l5isRpU=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=bO22246CLB+6Y85wT9sR8OfksIMvslPN0d6PY6Z1fDrwncHCz7S7WQGLe4vDVJHRF xHNUH0d8FJaQhBWKzmQf+3JWJdo0M0jl3QCXzSyAnkfHV0Cj6YH7haYvdpblpiWsoO wlLNFtk5bP/EiZlb5mKEGbxK9+kzU1HMLchHxM8M= Received: by mail-ed1-f42.google.com with SMTP id d18so4973452edv.6; Thu, 23 Jul 2020 09:32:14 -0700 (PDT) X-Gm-Message-State: AOAM532QQlAIqN8HVPlzreYM+OHg4eTrw7YHxmbr/+BaGkW2d5mlrmhm 8Pe0iG1k7zUJ+L0L6PmIA/UCSM0Ofc+iTpekFQ== X-Google-Smtp-Source: ABdhPJyRm/l9dPj0W+dfDKiakdRmDJRlB3h26Hb6zg+r04P5orwxjTD/vSWsiavEJACFhMP/gwvhQEf/i1OLYSZOpWs= X-Received: by 2002:a50:e617:: with SMTP id y23mr4915055edm.47.1595521933191; Thu, 23 Jul 2020 09:32:13 -0700 (PDT) MIME-Version: 1.0 References: <1595303971-8793-1-git-send-email-neal.liu@mediatek.com> <1595303971-8793-3-git-send-email-neal.liu@mediatek.com> <1595389756.20193.12.camel@mtkswgap22> <1595484707.26237.12.camel@mtkswgap22> In-Reply-To: <1595484707.26237.12.camel@mtkswgap22> From: Chun-Kuang Hu Date: Fri, 24 Jul 2020 00:32:02 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 2/2] soc: mediatek: add mtk-devapc driver To: Neal Liu Cc: Chun-Kuang Hu , Rob Herring , Matthias Brugger , "devicetree@vger.kernel.org" , wsd_upstream , lkml , "moderated list:ARM/Mediatek SoC support" , Linux ARM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Neal: Neal Liu =E6=96=BC 2020=E5=B9=B47=E6=9C=8823=E6=97= =A5 =E9=80=B1=E5=9B=9B =E4=B8=8B=E5=8D=882:11=E5=AF=AB=E9=81=93=EF=BC=9A > > Hi Chun-Kuang, > > On Wed, 2020-07-22 at 22:25 +0800, Chun-Kuang Hu wrote: > > Hi, Neal: > > > > Neal Liu =E6=96=BC 2020=E5=B9=B47=E6=9C=8822=E6= =97=A5 =E9=80=B1=E4=B8=89 =E4=B8=8A=E5=8D=8811:49=E5=AF=AB=E9=81=93=EF=BC= =9A > > > > > > Hi Chun-Kuang, > > > > > > On Wed, 2020-07-22 at 07:21 +0800, Chun-Kuang Hu wrote: > > > > Hi, Neal: > > > > > > > > Neal Liu =E6=96=BC 2020=E5=B9=B47=E6=9C=882= 1=E6=97=A5 =E9=80=B1=E4=BA=8C =E4=B8=8B=E5=8D=8812:00=E5=AF=AB=E9=81=93=EF= =BC=9A > > > > > > > > > > > > > > + > > > > > +/* > > > > > + * mtk_devapc_dump_vio_dbg - get the violation index and dump th= e full violation > > > > > + * debug information. > > > > > + */ > > > > > +static bool mtk_devapc_dump_vio_dbg(struct mtk_devapc_context *c= tx, u32 vio_idx) > > > > > +{ > > > > > + u32 shift_bit; > > > > > + > > > > > + if (check_vio_mask(ctx, vio_idx)) > > > > > + return false; > > > > > + > > > > > + if (!check_vio_status(ctx, vio_idx)) > > > > > + return false; > > > > > + > > > > > + shift_bit =3D get_shift_group(ctx, vio_idx); > > > > > + > > > > > + if (sync_vio_dbg(ctx, shift_bit)) > > > > > + return false; > > > > > + > > > > > + devapc_extract_vio_dbg(ctx); > > > > > > > > I think get_shift_group(), sync_vio_dbg(), and > > > > devapc_extract_vio_dbg() should be moved out of vio_idx for-loop (t= he > > > > loop in devapc_violation_irq()) because these three function is not > > > > related to vio_idx. > > > > Another question: when multiple vio_idx violation occur, vio_addr i= s > > > > related to which one vio_idx? The latest happened one? > > > > > > > > > > Actually, it's related to vio_idx. But we don't use it directly on th= ese > > > function. I think below snip code might be better way to understand i= t. > > > > > > for (...) > > > { > > > check_vio_mask() > > > check_vio_status() > > > > > > // if get vio_idx, mask it temporarily > > > mask_module_irq(true) > > > clear_vio_status() > > > > > > // dump violation info > > > get_shift_group() > > > sync_vio_dbg() > > > devapc_extract_vio_dbg() > > > > > > // unmask > > > mask_module_irq(false) > > > } > > > > This snip code does not explain any thing. I could rewrite this code as= : > > > > for (...) > > { > > check_vio_mask() > > check_vio_status() > > > > // if get vio_idx, mask it temporarily > > mask_module_irq(true) > > clear_vio_status() > > // unmask > > mask_module_irq(false) > > } > > > > // dump violation info > > get_shift_group() > > sync_vio_dbg() > > devapc_extract_vio_dbg() > > > > And my version is identical with your version, isn't it? > > Sorry, I did not explain it clearly. Let's me try again. > The reason why I put "dump violation info" between mask & unmask context > is because it has to stop interrupt first before dump violation info, > and then unmask it to prepare next violation. > These sequence guarantee that if multiple violation is triggered, we > still have information to debug. > If the code sequence in your version and multiple violation is > triggered, there might be no any information but keeps entering ISR. > Finally, system might be abnormal and watchdog timeout. > In this case, we still don't have any information to debug. I still don't understand why no information to debug. For example when vio_idx 5, 10, 15 has violation, You would mask vio_idx 5 to get information, but vio_idx 10, 15 does not mask yet. In your words, when vio_idx 10, 15 not mask, you would not get any debug information when you process vio_idx 5. In my version, I would clear all status, why keeps entering ISR? > > > > > > > > > About your question, vio_addr would be the first one. > > > > So other vio_addr would be dropped? Or hardware would keep all > > vio_addr and you have some way to get all vio_addr? > > > > In this case, hardware will drop other violation info and keep the first > one until it been handled. Does 'handled' mean status is cleared? Regards, Chun-Kuang. > > > > > > > > > + > > > > > + return true; > > > > > +} > > > > > + > > > > > +/* > > > > > + * devapc_violation_irq - the devapc Interrupt Service Routine (= ISR) will dump > > > > > + * violation information including which = master violates > > > > > + * access slave. > > > > > + */ > > > > > +static irqreturn_t devapc_violation_irq(int irq_number, > > > > > + struct mtk_devapc_context= *ctx) > > > > > +{ > > > > > + u32 vio_idx; > > > > > + > > > > > + for (vio_idx =3D 0; vio_idx < ctx->vio_idx_num; vio_idx++= ) { > > > > > + if (!mtk_devapc_dump_vio_dbg(ctx, vio_idx)) > > > > > + continue; > > > > > + > > > > > + /* Ensure that violation info are written before > > > > > + * further operations > > > > > + */ > > > > > + smp_mb(); > > > > > + > > > > > + /* > > > > > + * Mask slave's irq before clearing vio status. > > > > > + * Must do it to avoid nested interrupt and preve= nt > > > > > + * unexpected behavior. > > > > > + */ > > > > > + mask_module_irq(ctx, vio_idx, true); > > > > > + > > > > > + clear_vio_status(ctx, vio_idx); > > > > > + > > > > > + mask_module_irq(ctx, vio_idx, false); > > > > > + } > > > > > + > > > > > + return IRQ_HANDLED; > > > > > +} > > > > > + > > > > > +/* 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=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no 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 543FDC433EC for ; Thu, 23 Jul 2020 16:32:30 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 20BA420771 for ; Thu, 23 Jul 2020 16:32:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="wAgNJMLB"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="ll9vJgyb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 20BA420771 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nKH+QoQ8P5jpe/74rI9O6xvRX0607VmfTQK9XKTy+6g=; b=wAgNJMLBaxULbHM6XINdCslsg /Xr+6Zm4MAVBQKGz2stFZxM73lu3SyLD/EqDbbSlMMlbaWuYcRxqx1QOK4rSDA5FIvtM82n/3zpdu 35jIw/lFp4LmzKVATTbrqZIWypjnA7aVZJiLchSOV+l/S/DirGTzg4d4ar/DU4nsakklxk6TZiScc EDerSKsIxt+O5CUIteuIC740+t0zqrXjBY9+tIZxdaFxlumszkjYIArotHe+bDqykHCajcrAPpjbM SkS8/y4ujxdiIfRMpIRZq+E9h73yYXooV7T4k8DN+PkpWgYn0bQ/4qSYfiiisAhf7Iqa9qarqAEGb kkQpkjZUQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jye8p-0005Cl-5E; Thu, 23 Jul 2020 16:32:19 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jye8m-0005Bm-0c; Thu, 23 Jul 2020 16:32:16 +0000 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A821020792; Thu, 23 Jul 2020 16:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595521935; bh=UsE0AfyyH9ASPhZTnv7rHkKV2A1QkqMr7Pj3l5isRpU=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=ll9vJgybdQWVnp62gg5r7LQzMnJAxBOt6LuJ/suS3kDsSMsGENcyAiyhdP8j0p5up 01UrD+vevM8ahtii4UyYDHdlK3afSnIi4yMptohc9AE8aXFZweEa47k9MwcRrcbuKo QstIhlqLUhjsoAu6NQSpCBOrXN/9b1k4gTp5polw= Received: by mail-ed1-f47.google.com with SMTP id b13so2592034edz.7; Thu, 23 Jul 2020 09:32:14 -0700 (PDT) X-Gm-Message-State: AOAM5312xNJcjX8GdzGsaikMOi5Qi8m7Cr6M/F4mtuuGs6ufqovVgFrq /opm30qSEj3gDgWN6oZ/q9uVGAAUdBry4T7JYA== X-Google-Smtp-Source: ABdhPJyRm/l9dPj0W+dfDKiakdRmDJRlB3h26Hb6zg+r04P5orwxjTD/vSWsiavEJACFhMP/gwvhQEf/i1OLYSZOpWs= X-Received: by 2002:a50:e617:: with SMTP id y23mr4915055edm.47.1595521933191; Thu, 23 Jul 2020 09:32:13 -0700 (PDT) MIME-Version: 1.0 References: <1595303971-8793-1-git-send-email-neal.liu@mediatek.com> <1595303971-8793-3-git-send-email-neal.liu@mediatek.com> <1595389756.20193.12.camel@mtkswgap22> <1595484707.26237.12.camel@mtkswgap22> In-Reply-To: <1595484707.26237.12.camel@mtkswgap22> From: Chun-Kuang Hu Date: Fri, 24 Jul 2020 00:32:02 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 2/2] soc: mediatek: add mtk-devapc driver To: Neal Liu X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200723_123216_196244_077899BC X-CRM114-Status: GOOD ( 28.50 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chun-Kuang Hu , wsd_upstream , "devicetree@vger.kernel.org" , lkml , Rob Herring , "moderated list:ARM/Mediatek SoC support" , Matthias Brugger , Linux ARM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGksIE5lYWw6CgpOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfm nIgyM+aXpSDpgLHlm5sg5LiL5Y2IMjoxMeWvq+mBk++8mgo+Cj4gSGkgQ2h1bi1LdWFuZywKPgo+ IE9uIFdlZCwgMjAyMC0wNy0yMiBhdCAyMjoyNSArMDgwMCwgQ2h1bi1LdWFuZyBIdSB3cm90ZToK PiA+IEhpLCBOZWFsOgo+ID4KPiA+IE5lYWwgTGl1IDxuZWFsLmxpdUBtZWRpYXRlay5jb20+IOaW vCAyMDIw5bm0N+aciDIy5pelIOmAseS4iSDkuIrljYgxMTo0OeWvq+mBk++8mgo+ID4gPgo+ID4g PiBIaSBDaHVuLUt1YW5nLAo+ID4gPgo+ID4gPiBPbiBXZWQsIDIwMjAtMDctMjIgYXQgMDc6MjEg KzA4MDAsIENodW4tS3VhbmcgSHUgd3JvdGU6Cj4gPiA+ID4gSGksIE5lYWw6Cj4gPiA+ID4KPiA+ ID4gPiBOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfmnIgyMeaX pSDpgLHkuowg5LiL5Y2IMTI6MDDlr6vpgZPvvJoKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gKyAqIG10a19kZXZhcGNfZHVtcF92aW9fZGJnIC0g Z2V0IHRoZSB2aW9sYXRpb24gaW5kZXggYW5kIGR1bXAgdGhlIGZ1bGwgdmlvbGF0aW9uCj4gPiA+ ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBpbmZvcm1hdGlvbi4KPiA+ ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICtzdGF0aWMgYm9vbCBtdGtfZGV2YXBjX2R1bXBfdmlvX2Ri ZyhzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0ICpjdHgsIHUzMiB2aW9faWR4KQo+ID4gPiA+ID4g K3sKPiA+ID4gPiA+ICsgICAgICAgdTMyIHNoaWZ0X2JpdDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsgICAgICAgaWYgKGNoZWNrX3Zpb19tYXNrKGN0eCwgdmlvX2lkeCkpCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgICBp ZiAoIWNoZWNrX3Zpb19zdGF0dXMoY3R4LCB2aW9faWR4KSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHNoaWZ0X2Jp dCA9IGdldF9zaGlmdF9ncm91cChjdHgsIHZpb19pZHgpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KyAgICAgICBpZiAoc3luY192aW9fZGJnKGN0eCwgc2hpZnRfYml0KSkKPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIGRl dmFwY19leHRyYWN0X3Zpb19kYmcoY3R4KTsKPiA+ID4gPgo+ID4gPiA+IEkgdGhpbmsgZ2V0X3No aWZ0X2dyb3VwKCksIHN5bmNfdmlvX2RiZygpLCBhbmQKPiA+ID4gPiBkZXZhcGNfZXh0cmFjdF92 aW9fZGJnKCkgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aW9faWR4IGZvci1sb29wICh0aGUKPiA+ ID4gPiBsb29wIGluIGRldmFwY192aW9sYXRpb25faXJxKCkpIGJlY2F1c2UgdGhlc2UgdGhyZWUg ZnVuY3Rpb24gaXMgbm90Cj4gPiA+ID4gcmVsYXRlZCB0byB2aW9faWR4Lgo+ID4gPiA+IEFub3Ro ZXIgcXVlc3Rpb246IHdoZW4gbXVsdGlwbGUgdmlvX2lkeCB2aW9sYXRpb24gb2NjdXIsIHZpb19h ZGRyIGlzCj4gPiA+ID4gcmVsYXRlZCB0byB3aGljaCBvbmUgdmlvX2lkeD8gVGhlIGxhdGVzdCBo YXBwZW5lZCBvbmU/Cj4gPiA+ID4KPiA+ID4KPiA+ID4gQWN0dWFsbHksIGl0J3MgcmVsYXRlZCB0 byB2aW9faWR4LiBCdXQgd2UgZG9uJ3QgdXNlIGl0IGRpcmVjdGx5IG9uIHRoZXNlCj4gPiA+IGZ1 bmN0aW9uLiBJIHRoaW5rIGJlbG93IHNuaXAgY29kZSBtaWdodCBiZSBiZXR0ZXIgd2F5IHRvIHVu ZGVyc3RhbmQgaXQuCj4gPiA+Cj4gPiA+IGZvciAoLi4uKQo+ID4gPiB7Cj4gPiA+ICAgICAgICAg Y2hlY2tfdmlvX21hc2soKQo+ID4gPiAgICAgICAgIGNoZWNrX3Zpb19zdGF0dXMoKQo+ID4gPgo+ ID4gPiAgICAgICAgIC8vIGlmIGdldCB2aW9faWR4LCBtYXNrIGl0IHRlbXBvcmFyaWx5Cj4gPiA+ ICAgICAgICAgbWFza19tb2R1bGVfaXJxKHRydWUpCj4gPiA+ICAgICAgICAgY2xlYXJfdmlvX3N0 YXR1cygpCj4gPiA+Cj4gPiA+ICAgICAgICAgLy8gZHVtcCB2aW9sYXRpb24gaW5mbwo+ID4gPiAg ICAgICAgIGdldF9zaGlmdF9ncm91cCgpCj4gPiA+ICAgICAgICAgc3luY192aW9fZGJnKCkKPiA+ ID4gICAgICAgICBkZXZhcGNfZXh0cmFjdF92aW9fZGJnKCkKPiA+ID4KPiA+ID4gICAgICAgICAv LyB1bm1hc2sKPiA+ID4gICAgICAgICBtYXNrX21vZHVsZV9pcnEoZmFsc2UpCj4gPiA+IH0KPiA+ Cj4gPiBUaGlzIHNuaXAgY29kZSBkb2VzIG5vdCBleHBsYWluIGFueSB0aGluZy4gSSBjb3VsZCBy ZXdyaXRlIHRoaXMgY29kZSBhczoKPiA+Cj4gPiBmb3IgKC4uLikKPiA+IHsKPiA+ICAgICBjaGVj a192aW9fbWFzaygpCj4gPiAgICAgY2hlY2tfdmlvX3N0YXR1cygpCj4gPgo+ID4gICAgIC8vIGlm IGdldCB2aW9faWR4LCBtYXNrIGl0IHRlbXBvcmFyaWx5Cj4gPiAgICAgbWFza19tb2R1bGVfaXJx KHRydWUpCj4gPiAgICAgY2xlYXJfdmlvX3N0YXR1cygpCj4gPiAgICAgLy8gdW5tYXNrCj4gPiAg ICAgbWFza19tb2R1bGVfaXJxKGZhbHNlKQo+ID4gfQo+ID4KPiA+IC8vIGR1bXAgdmlvbGF0aW9u IGluZm8KPiA+IGdldF9zaGlmdF9ncm91cCgpCj4gPiBzeW5jX3Zpb19kYmcoKQo+ID4gZGV2YXBj X2V4dHJhY3RfdmlvX2RiZygpCj4gPgo+ID4gQW5kIG15IHZlcnNpb24gaXMgaWRlbnRpY2FsIHdp dGggeW91ciB2ZXJzaW9uLCBpc24ndCBpdD8KPgo+IFNvcnJ5LCBJIGRpZCBub3QgZXhwbGFpbiBp dCBjbGVhcmx5LiBMZXQncyBtZSB0cnkgYWdhaW4uCj4gVGhlIHJlYXNvbiB3aHkgSSBwdXQgImR1 bXAgdmlvbGF0aW9uIGluZm8iIGJldHdlZW4gbWFzayAmIHVubWFzayBjb250ZXh0Cj4gaXMgYmVj YXVzZSBpdCBoYXMgdG8gc3RvcCBpbnRlcnJ1cHQgZmlyc3QgYmVmb3JlIGR1bXAgdmlvbGF0aW9u IGluZm8sCj4gYW5kIHRoZW4gdW5tYXNrIGl0IHRvIHByZXBhcmUgbmV4dCB2aW9sYXRpb24uCj4g VGhlc2Ugc2VxdWVuY2UgZ3VhcmFudGVlIHRoYXQgaWYgbXVsdGlwbGUgdmlvbGF0aW9uIGlzIHRy aWdnZXJlZCwgd2UKPiBzdGlsbCBoYXZlIGluZm9ybWF0aW9uIHRvIGRlYnVnLgo+IElmIHRoZSBj b2RlIHNlcXVlbmNlIGluIHlvdXIgdmVyc2lvbiBhbmQgbXVsdGlwbGUgdmlvbGF0aW9uIGlzCj4g dHJpZ2dlcmVkLCB0aGVyZSBtaWdodCBiZSBubyBhbnkgaW5mb3JtYXRpb24gYnV0IGtlZXBzIGVu dGVyaW5nIElTUi4KPiBGaW5hbGx5LCBzeXN0ZW0gbWlnaHQgYmUgYWJub3JtYWwgYW5kIHdhdGNo ZG9nIHRpbWVvdXQuCj4gSW4gdGhpcyBjYXNlLCB3ZSBzdGlsbCBkb24ndCBoYXZlIGFueSBpbmZv cm1hdGlvbiB0byBkZWJ1Zy4KCkkgc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgbm8gaW5mb3Jt YXRpb24gdG8gZGVidWcuIEZvciBleGFtcGxlIHdoZW4KdmlvX2lkeCA1LCAxMCwgMTUgaGFzIHZp b2xhdGlvbiwKWW91IHdvdWxkIG1hc2sgdmlvX2lkeCA1IHRvIGdldCBpbmZvcm1hdGlvbiwgYnV0 IHZpb19pZHggMTAsIDE1IGRvZXMKbm90IG1hc2sgeWV0LgpJbiB5b3VyIHdvcmRzLCB3aGVuIHZp b19pZHggMTAsIDE1IG5vdCBtYXNrLCB5b3Ugd291bGQgbm90IGdldCBhbnkKZGVidWcgaW5mb3Jt YXRpb24gd2hlbiB5b3UgcHJvY2VzcyB2aW9faWR4IDUuCgpJbiBteSB2ZXJzaW9uLCBJIHdvdWxk IGNsZWFyIGFsbCBzdGF0dXMsIHdoeSBrZWVwcyBlbnRlcmluZyBJU1I/Cgo+Cj4gPgo+ID4gPgo+ ID4gPiBBYm91dCB5b3VyIHF1ZXN0aW9uLCB2aW9fYWRkciB3b3VsZCBiZSB0aGUgZmlyc3Qgb25l Lgo+ID4KPiA+IFNvIG90aGVyIHZpb19hZGRyIHdvdWxkIGJlIGRyb3BwZWQ/IE9yIGhhcmR3YXJl IHdvdWxkIGtlZXAgYWxsCj4gPiB2aW9fYWRkciBhbmQgeW91IGhhdmUgc29tZSB3YXkgdG8gZ2V0 IGFsbCB2aW9fYWRkcj8KPiA+Cj4KPiBJbiB0aGlzIGNhc2UsIGhhcmR3YXJlIHdpbGwgZHJvcCBv dGhlciB2aW9sYXRpb24gaW5mbyBhbmQga2VlcCB0aGUgZmlyc3QKPiBvbmUgdW50aWwgaXQgYmVl biBoYW5kbGVkLgoKRG9lcyAnaGFuZGxlZCcgbWVhbiBzdGF0dXMgaXMgY2xlYXJlZD8KClJlZ2Fy ZHMsCkNodW4tS3VhbmcuCgo+Cj4gPiA+Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHJl dHVybiB0cnVlOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKgo+ID4gPiA+ ID4gKyAqIGRldmFwY192aW9sYXRpb25faXJxIC0gdGhlIGRldmFwYyBJbnRlcnJ1cHQgU2Vydmlj ZSBSb3V0aW5lIChJU1IpIHdpbGwgZHVtcAo+ID4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAg ICAgICAgdmlvbGF0aW9uIGluZm9ybWF0aW9uIGluY2x1ZGluZyB3aGljaCBtYXN0ZXIgdmlvbGF0 ZXMKPiA+ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBzbGF2ZS4KPiA+ ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZGV2YXBjX3Zpb2xhdGlv bl9pcnEoaW50IGlycV9udW1iZXIsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqY3R4KQo+ID4gPiA+ID4g K3sKPiA+ID4gPiA+ICsgICAgICAgdTMyIHZpb19pZHg7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr ICAgICAgIGZvciAodmlvX2lkeCA9IDA7IHZpb19pZHggPCBjdHgtPnZpb19pZHhfbnVtOyB2aW9f aWR4KyspIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAoIW10a19kZXZhcGNfZHVtcF92 aW9fZGJnKGN0eCwgdmlvX2lkeCkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAvKiBFbnN1cmUg dGhhdCB2aW9sYXRpb24gaW5mbyBhcmUgd3JpdHRlbiBiZWZvcmUKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgKiBmdXJ0aGVyIG9wZXJhdGlvbnMKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg Ki8KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBzbXBfbWIoKTsKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAvKgo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAqIE1hc2sg c2xhdmUncyBpcnEgYmVmb3JlIGNsZWFyaW5nIHZpbyBzdGF0dXMuCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICogTXVzdCBkbyBpdCB0byBhdm9pZCBuZXN0ZWQgaW50ZXJydXB0IGFuZCBwcmV2 ZW50Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICogdW5leHBlY3RlZCBiZWhhdmlvci4KPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgKi8KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBtYXNr X21vZHVsZV9pcnEoY3R4LCB2aW9faWR4LCB0cnVlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICBjbGVhcl92aW9fc3RhdHVzKGN0eCwgdmlvX2lkeCk7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgbWFza19tb2R1bGVfaXJxKGN0eCwgdmlvX2lkeCwg ZmFsc2UpOwo+ID4gPiA+ID4gKyAgICAgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAg IHJldHVybiBJUlFfSEFORExFRDsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr LyoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LW1lZGlhdGVrIG1haWxpbmcgbGlzdApMaW51eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbWVkaWF0 ZWsK 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=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 1CD5BC433F1 for ; Thu, 23 Jul 2020 16:33:56 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 DB3C5206F4 for ; Thu, 23 Jul 2020 16:33:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Hy8gAp05"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="ll9vJgyb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB3C5206F4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Hi/67BxGsey478pt0mn5OIjM5QuUqu31ZqpTEzutMbE=; b=Hy8gAp05xahRzgCULJN9bANwJ SfqqtWoB9uSM+IhtuRUOhbuOPi5T32XNkE44y31e5tZkdP0uvt6ki1bpkpZWd3Eh8WeqciQhLf9mi YtAc6xET0VcRibYLE8qQJjuXgYf+WQRS5XNpo1aXU+3RoTELTPZVb4x+SIPevKiq5lyKIpQSVPYA5 9uYYHJ7VEfkFHRvRmN91N2bLiDgE+xD9gltRTv6V68GZjBo0k5P1feQu6SWtRTvLjZ867uOcOqMik hQUxkRoR5xBXNatdn3LrnZLGe8oq8XHWhOPaHhW8suZTzGggKc4J/7dVrjfm3u4w0p2QpYYjd7Sxz 0tzBFkH3g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jye8n-0005CS-VC; Thu, 23 Jul 2020 16:32:17 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jye8m-0005Bm-0c; Thu, 23 Jul 2020 16:32:16 +0000 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A821020792; Thu, 23 Jul 2020 16:32:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595521935; bh=UsE0AfyyH9ASPhZTnv7rHkKV2A1QkqMr7Pj3l5isRpU=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=ll9vJgybdQWVnp62gg5r7LQzMnJAxBOt6LuJ/suS3kDsSMsGENcyAiyhdP8j0p5up 01UrD+vevM8ahtii4UyYDHdlK3afSnIi4yMptohc9AE8aXFZweEa47k9MwcRrcbuKo QstIhlqLUhjsoAu6NQSpCBOrXN/9b1k4gTp5polw= Received: by mail-ed1-f47.google.com with SMTP id b13so2592034edz.7; Thu, 23 Jul 2020 09:32:14 -0700 (PDT) X-Gm-Message-State: AOAM5312xNJcjX8GdzGsaikMOi5Qi8m7Cr6M/F4mtuuGs6ufqovVgFrq /opm30qSEj3gDgWN6oZ/q9uVGAAUdBry4T7JYA== X-Google-Smtp-Source: ABdhPJyRm/l9dPj0W+dfDKiakdRmDJRlB3h26Hb6zg+r04P5orwxjTD/vSWsiavEJACFhMP/gwvhQEf/i1OLYSZOpWs= X-Received: by 2002:a50:e617:: with SMTP id y23mr4915055edm.47.1595521933191; Thu, 23 Jul 2020 09:32:13 -0700 (PDT) MIME-Version: 1.0 References: <1595303971-8793-1-git-send-email-neal.liu@mediatek.com> <1595303971-8793-3-git-send-email-neal.liu@mediatek.com> <1595389756.20193.12.camel@mtkswgap22> <1595484707.26237.12.camel@mtkswgap22> In-Reply-To: <1595484707.26237.12.camel@mtkswgap22> From: Chun-Kuang Hu Date: Fri, 24 Jul 2020 00:32:02 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 2/2] soc: mediatek: add mtk-devapc driver To: Neal Liu X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200723_123216_196244_077899BC X-CRM114-Status: GOOD ( 28.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chun-Kuang Hu , wsd_upstream , "devicetree@vger.kernel.org" , lkml , Rob Herring , "moderated list:ARM/Mediatek SoC support" , Matthias Brugger , Linux ARM 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 SGksIE5lYWw6CgpOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfm nIgyM+aXpSDpgLHlm5sg5LiL5Y2IMjoxMeWvq+mBk++8mgo+Cj4gSGkgQ2h1bi1LdWFuZywKPgo+ IE9uIFdlZCwgMjAyMC0wNy0yMiBhdCAyMjoyNSArMDgwMCwgQ2h1bi1LdWFuZyBIdSB3cm90ZToK PiA+IEhpLCBOZWFsOgo+ID4KPiA+IE5lYWwgTGl1IDxuZWFsLmxpdUBtZWRpYXRlay5jb20+IOaW vCAyMDIw5bm0N+aciDIy5pelIOmAseS4iSDkuIrljYgxMTo0OeWvq+mBk++8mgo+ID4gPgo+ID4g PiBIaSBDaHVuLUt1YW5nLAo+ID4gPgo+ID4gPiBPbiBXZWQsIDIwMjAtMDctMjIgYXQgMDc6MjEg KzA4MDAsIENodW4tS3VhbmcgSHUgd3JvdGU6Cj4gPiA+ID4gSGksIE5lYWw6Cj4gPiA+ID4KPiA+ ID4gPiBOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfmnIgyMeaX pSDpgLHkuowg5LiL5Y2IMTI6MDDlr6vpgZPvvJoKPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gKyAqIG10a19kZXZhcGNfZHVtcF92aW9fZGJnIC0g Z2V0IHRoZSB2aW9sYXRpb24gaW5kZXggYW5kIGR1bXAgdGhlIGZ1bGwgdmlvbGF0aW9uCj4gPiA+ ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBpbmZvcm1hdGlvbi4KPiA+ ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICtzdGF0aWMgYm9vbCBtdGtfZGV2YXBjX2R1bXBfdmlvX2Ri ZyhzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0ICpjdHgsIHUzMiB2aW9faWR4KQo+ID4gPiA+ID4g K3sKPiA+ID4gPiA+ICsgICAgICAgdTMyIHNoaWZ0X2JpdDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsgICAgICAgaWYgKGNoZWNrX3Zpb19tYXNrKGN0eCwgdmlvX2lkeCkpCj4gPiA+ID4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgICBp ZiAoIWNoZWNrX3Zpb19zdGF0dXMoY3R4LCB2aW9faWR4KSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHNoaWZ0X2Jp dCA9IGdldF9zaGlmdF9ncm91cChjdHgsIHZpb19pZHgpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KyAgICAgICBpZiAoc3luY192aW9fZGJnKGN0eCwgc2hpZnRfYml0KSkKPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIGRl dmFwY19leHRyYWN0X3Zpb19kYmcoY3R4KTsKPiA+ID4gPgo+ID4gPiA+IEkgdGhpbmsgZ2V0X3No aWZ0X2dyb3VwKCksIHN5bmNfdmlvX2RiZygpLCBhbmQKPiA+ID4gPiBkZXZhcGNfZXh0cmFjdF92 aW9fZGJnKCkgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aW9faWR4IGZvci1sb29wICh0aGUKPiA+ ID4gPiBsb29wIGluIGRldmFwY192aW9sYXRpb25faXJxKCkpIGJlY2F1c2UgdGhlc2UgdGhyZWUg ZnVuY3Rpb24gaXMgbm90Cj4gPiA+ID4gcmVsYXRlZCB0byB2aW9faWR4Lgo+ID4gPiA+IEFub3Ro ZXIgcXVlc3Rpb246IHdoZW4gbXVsdGlwbGUgdmlvX2lkeCB2aW9sYXRpb24gb2NjdXIsIHZpb19h ZGRyIGlzCj4gPiA+ID4gcmVsYXRlZCB0byB3aGljaCBvbmUgdmlvX2lkeD8gVGhlIGxhdGVzdCBo YXBwZW5lZCBvbmU/Cj4gPiA+ID4KPiA+ID4KPiA+ID4gQWN0dWFsbHksIGl0J3MgcmVsYXRlZCB0 byB2aW9faWR4LiBCdXQgd2UgZG9uJ3QgdXNlIGl0IGRpcmVjdGx5IG9uIHRoZXNlCj4gPiA+IGZ1 bmN0aW9uLiBJIHRoaW5rIGJlbG93IHNuaXAgY29kZSBtaWdodCBiZSBiZXR0ZXIgd2F5IHRvIHVu ZGVyc3RhbmQgaXQuCj4gPiA+Cj4gPiA+IGZvciAoLi4uKQo+ID4gPiB7Cj4gPiA+ICAgICAgICAg Y2hlY2tfdmlvX21hc2soKQo+ID4gPiAgICAgICAgIGNoZWNrX3Zpb19zdGF0dXMoKQo+ID4gPgo+ ID4gPiAgICAgICAgIC8vIGlmIGdldCB2aW9faWR4LCBtYXNrIGl0IHRlbXBvcmFyaWx5Cj4gPiA+ ICAgICAgICAgbWFza19tb2R1bGVfaXJxKHRydWUpCj4gPiA+ICAgICAgICAgY2xlYXJfdmlvX3N0 YXR1cygpCj4gPiA+Cj4gPiA+ICAgICAgICAgLy8gZHVtcCB2aW9sYXRpb24gaW5mbwo+ID4gPiAg ICAgICAgIGdldF9zaGlmdF9ncm91cCgpCj4gPiA+ICAgICAgICAgc3luY192aW9fZGJnKCkKPiA+ ID4gICAgICAgICBkZXZhcGNfZXh0cmFjdF92aW9fZGJnKCkKPiA+ID4KPiA+ID4gICAgICAgICAv LyB1bm1hc2sKPiA+ID4gICAgICAgICBtYXNrX21vZHVsZV9pcnEoZmFsc2UpCj4gPiA+IH0KPiA+ Cj4gPiBUaGlzIHNuaXAgY29kZSBkb2VzIG5vdCBleHBsYWluIGFueSB0aGluZy4gSSBjb3VsZCBy ZXdyaXRlIHRoaXMgY29kZSBhczoKPiA+Cj4gPiBmb3IgKC4uLikKPiA+IHsKPiA+ICAgICBjaGVj a192aW9fbWFzaygpCj4gPiAgICAgY2hlY2tfdmlvX3N0YXR1cygpCj4gPgo+ID4gICAgIC8vIGlm IGdldCB2aW9faWR4LCBtYXNrIGl0IHRlbXBvcmFyaWx5Cj4gPiAgICAgbWFza19tb2R1bGVfaXJx KHRydWUpCj4gPiAgICAgY2xlYXJfdmlvX3N0YXR1cygpCj4gPiAgICAgLy8gdW5tYXNrCj4gPiAg ICAgbWFza19tb2R1bGVfaXJxKGZhbHNlKQo+ID4gfQo+ID4KPiA+IC8vIGR1bXAgdmlvbGF0aW9u IGluZm8KPiA+IGdldF9zaGlmdF9ncm91cCgpCj4gPiBzeW5jX3Zpb19kYmcoKQo+ID4gZGV2YXBj X2V4dHJhY3RfdmlvX2RiZygpCj4gPgo+ID4gQW5kIG15IHZlcnNpb24gaXMgaWRlbnRpY2FsIHdp dGggeW91ciB2ZXJzaW9uLCBpc24ndCBpdD8KPgo+IFNvcnJ5LCBJIGRpZCBub3QgZXhwbGFpbiBp dCBjbGVhcmx5LiBMZXQncyBtZSB0cnkgYWdhaW4uCj4gVGhlIHJlYXNvbiB3aHkgSSBwdXQgImR1 bXAgdmlvbGF0aW9uIGluZm8iIGJldHdlZW4gbWFzayAmIHVubWFzayBjb250ZXh0Cj4gaXMgYmVj YXVzZSBpdCBoYXMgdG8gc3RvcCBpbnRlcnJ1cHQgZmlyc3QgYmVmb3JlIGR1bXAgdmlvbGF0aW9u IGluZm8sCj4gYW5kIHRoZW4gdW5tYXNrIGl0IHRvIHByZXBhcmUgbmV4dCB2aW9sYXRpb24uCj4g VGhlc2Ugc2VxdWVuY2UgZ3VhcmFudGVlIHRoYXQgaWYgbXVsdGlwbGUgdmlvbGF0aW9uIGlzIHRy aWdnZXJlZCwgd2UKPiBzdGlsbCBoYXZlIGluZm9ybWF0aW9uIHRvIGRlYnVnLgo+IElmIHRoZSBj b2RlIHNlcXVlbmNlIGluIHlvdXIgdmVyc2lvbiBhbmQgbXVsdGlwbGUgdmlvbGF0aW9uIGlzCj4g dHJpZ2dlcmVkLCB0aGVyZSBtaWdodCBiZSBubyBhbnkgaW5mb3JtYXRpb24gYnV0IGtlZXBzIGVu dGVyaW5nIElTUi4KPiBGaW5hbGx5LCBzeXN0ZW0gbWlnaHQgYmUgYWJub3JtYWwgYW5kIHdhdGNo ZG9nIHRpbWVvdXQuCj4gSW4gdGhpcyBjYXNlLCB3ZSBzdGlsbCBkb24ndCBoYXZlIGFueSBpbmZv cm1hdGlvbiB0byBkZWJ1Zy4KCkkgc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgbm8gaW5mb3Jt YXRpb24gdG8gZGVidWcuIEZvciBleGFtcGxlIHdoZW4KdmlvX2lkeCA1LCAxMCwgMTUgaGFzIHZp b2xhdGlvbiwKWW91IHdvdWxkIG1hc2sgdmlvX2lkeCA1IHRvIGdldCBpbmZvcm1hdGlvbiwgYnV0 IHZpb19pZHggMTAsIDE1IGRvZXMKbm90IG1hc2sgeWV0LgpJbiB5b3VyIHdvcmRzLCB3aGVuIHZp b19pZHggMTAsIDE1IG5vdCBtYXNrLCB5b3Ugd291bGQgbm90IGdldCBhbnkKZGVidWcgaW5mb3Jt YXRpb24gd2hlbiB5b3UgcHJvY2VzcyB2aW9faWR4IDUuCgpJbiBteSB2ZXJzaW9uLCBJIHdvdWxk IGNsZWFyIGFsbCBzdGF0dXMsIHdoeSBrZWVwcyBlbnRlcmluZyBJU1I/Cgo+Cj4gPgo+ID4gPgo+ ID4gPiBBYm91dCB5b3VyIHF1ZXN0aW9uLCB2aW9fYWRkciB3b3VsZCBiZSB0aGUgZmlyc3Qgb25l Lgo+ID4KPiA+IFNvIG90aGVyIHZpb19hZGRyIHdvdWxkIGJlIGRyb3BwZWQ/IE9yIGhhcmR3YXJl IHdvdWxkIGtlZXAgYWxsCj4gPiB2aW9fYWRkciBhbmQgeW91IGhhdmUgc29tZSB3YXkgdG8gZ2V0 IGFsbCB2aW9fYWRkcj8KPiA+Cj4KPiBJbiB0aGlzIGNhc2UsIGhhcmR3YXJlIHdpbGwgZHJvcCBv dGhlciB2aW9sYXRpb24gaW5mbyBhbmQga2VlcCB0aGUgZmlyc3QKPiBvbmUgdW50aWwgaXQgYmVl biBoYW5kbGVkLgoKRG9lcyAnaGFuZGxlZCcgbWVhbiBzdGF0dXMgaXMgY2xlYXJlZD8KClJlZ2Fy ZHMsCkNodW4tS3VhbmcuCgo+Cj4gPiA+Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgIHJl dHVybiB0cnVlOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKgo+ID4gPiA+ ID4gKyAqIGRldmFwY192aW9sYXRpb25faXJxIC0gdGhlIGRldmFwYyBJbnRlcnJ1cHQgU2Vydmlj ZSBSb3V0aW5lIChJU1IpIHdpbGwgZHVtcAo+ID4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAg ICAgICAgdmlvbGF0aW9uIGluZm9ybWF0aW9uIGluY2x1ZGluZyB3aGljaCBtYXN0ZXIgdmlvbGF0 ZXMKPiA+ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBzbGF2ZS4KPiA+ ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZGV2YXBjX3Zpb2xhdGlv bl9pcnEoaW50IGlycV9udW1iZXIsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqY3R4KQo+ID4gPiA+ID4g K3sKPiA+ID4gPiA+ICsgICAgICAgdTMyIHZpb19pZHg7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr ICAgICAgIGZvciAodmlvX2lkeCA9IDA7IHZpb19pZHggPCBjdHgtPnZpb19pZHhfbnVtOyB2aW9f aWR4KyspIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAoIW10a19kZXZhcGNfZHVtcF92 aW9fZGJnKGN0eCwgdmlvX2lkeCkpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAvKiBFbnN1cmUg dGhhdCB2aW9sYXRpb24gaW5mbyBhcmUgd3JpdHRlbiBiZWZvcmUKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgKiBmdXJ0aGVyIG9wZXJhdGlvbnMKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg Ki8KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBzbXBfbWIoKTsKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAvKgo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAqIE1hc2sg c2xhdmUncyBpcnEgYmVmb3JlIGNsZWFyaW5nIHZpbyBzdGF0dXMuCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICogTXVzdCBkbyBpdCB0byBhdm9pZCBuZXN0ZWQgaW50ZXJydXB0IGFuZCBwcmV2 ZW50Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICogdW5leHBlY3RlZCBiZWhhdmlvci4KPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgKi8KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBtYXNr X21vZHVsZV9pcnEoY3R4LCB2aW9faWR4LCB0cnVlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICBjbGVhcl92aW9fc3RhdHVzKGN0eCwgdmlvX2lkeCk7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgbWFza19tb2R1bGVfaXJxKGN0eCwgdmlvX2lkeCwg ZmFsc2UpOwo+ID4gPiA+ID4gKyAgICAgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAg IHJldHVybiBJUlFfSEFORExFRDsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr LyoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK