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.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 6F1E8C4320E for ; Thu, 12 Aug 2021 09:46:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3CB9060F21 for ; Thu, 12 Aug 2021 09:46:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236337AbhHLJrA (ORCPT ); Thu, 12 Aug 2021 05:47:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236200AbhHLJq5 (ORCPT ); Thu, 12 Aug 2021 05:46:57 -0400 Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A1BC1C06179C; Thu, 12 Aug 2021 02:46:31 -0700 (PDT) Received: by mail-pj1-x102a.google.com with SMTP id t7-20020a17090a5d87b029017807007f23so14273803pji.5; Thu, 12 Aug 2021 02:46:31 -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=p0S9yd93hJUofIaZXMuYLRgaJwtt+ZTGW3IkG7IjUxU=; b=uvTtjzE0Tvzea+40xzT+Bfl1jRcID8I6G5PPXSe9YrETNMQh9u+S/mSgBc1qsvBa14 6ePX1rGUx0dyeKu4s912qN1gZQYW26r1NRoUQKlKNXmesBq7kQtCYjuiFyjBslarVmlg 4e2868roiHYqd8XmXkCrvPFnVivZwkhdFk/EwQjHi+D+poVA4Ta97ICT6GZxrEd8gYiO c3Ft1MPUSEpx4YqtLVJ2KagOBofiOBSjrfprDIEwjNSZDRwJWiy9kS38+mKKD2KwvO83 Sn9GizpoVicS5v+EOJslexNllWHa6OburK7uk61QFwkHg2ygyP9mdfX0EGqPVOf060/9 LdxA== 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=p0S9yd93hJUofIaZXMuYLRgaJwtt+ZTGW3IkG7IjUxU=; b=BIWsmVTu2yVOxE/R8sY+a0+VL9cA8j7HS7CSLVJ9aY95YapxYmQSkOTVhBWAlpHHJy hm4iaA+08YnYaKA/fJdC7ZUASPkY+ZvE8UiJBa2/4S6qfLSHjvuMaW3Oma19fshJDBE1 bv/Rfimxe52ryhwxxcLYEYQdLQeTkAecfPNs5ApSfZsGXMgIPZcqEM62k4uYL+Og4r/a uebkuSCXBaMuE8thu8sIcbh2T3SDGU/0/nuZ93C20wX1U1VQgzGGu7TzOKeDiLC6qIy/ YlFXJiHJlhSM8mGjFwwLDLG5H95IPK6B1tPrNFJbKWUFCwPvde8qnI376sXzbM9OrzcX FDAg== X-Gm-Message-State: AOAM533vVRSJP2uYD5FcI9IT0ENvlCtZvG7r4H6HaMSsEQ29d9FAPlyH xoM4jmqSTn0Uaf+Uij1axrw= X-Google-Smtp-Source: ABdhPJwYVE1aRoDJBlM9YFZACF6QXIh1Dv9KdlDpwcV3qdKEKdxWGL2X/2hCGYIzd2BZ0sYlfQPsZQ== X-Received: by 2002:a63:33c9:: with SMTP id z192mr3124473pgz.42.1628761591096; Thu, 12 Aug 2021 02:46:31 -0700 (PDT) Received: from [10.230.31.46] ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id g26sm2856071pgb.45.2021.08.12.02.46.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 Aug 2021 02:46:30 -0700 (PDT) Subject: Re: [PATCH net-next 1/3] dt-bindings: net: fsl, fec: add "fsl, wakeup-irq" property To: Joakim Zhang , "davem@davemloft.net" , "kuba@kernel.org" , "robh+dt@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "festevam@gmail.com" , "andrew@lunn.ch" Cc: "kernel@pengutronix.de" , dl-linux-imx , "netdev@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" References: <20210805074615.29096-1-qiangqing.zhang@nxp.com> <20210805074615.29096-2-qiangqing.zhang@nxp.com> <2e1a14bf-2fa8-ed39-d133-807c4e14859c@gmail.com> <498f3cee-8f37-2ab1-93c4-5472572ecc37@gmail.com> <90af8051-512d-1230-72a7-8bbcee984939@gmail.com> From: Florian Fainelli Message-ID: Date: Thu, 12 Aug 2021 02:46:16 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=gbk; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8/11/2021 1:06 AM, Joakim Zhang wrote: > >> -----Original Message----- >> From: Florian Fainelli >> Sent: 2021年8月11日 1:45 >> To: Joakim Zhang ; davem@davemloft.net; >> kuba@kernel.org; robh+dt@kernel.org; shawnguo@kernel.org; >> s.hauer@pengutronix.de; festevam@gmail.com; andrew@lunn.ch >> Cc: kernel@pengutronix.de; dl-linux-imx ; >> netdev@vger.kernel.org; devicetree@vger.kernel.org; >> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >> Subject: Re: [PATCH net-next 1/3] dt-bindings: net: fsl, fec: add "fsl, >> wakeup-irq" property >> >> >> >> On 8/9/2021 7:21 PM, Joakim Zhang wrote: >>> >>> Hi Florian, >>> >>>> -----Original Message----- >>>> From: Florian Fainelli >>>> Sent: 2021年8月10日 2:40 >>>> To: Joakim Zhang ; davem@davemloft.net; >>>> kuba@kernel.org; robh+dt@kernel.org; shawnguo@kernel.org; >>>> s.hauer@pengutronix.de; festevam@gmail.com; andrew@lunn.ch >>>> Cc: kernel@pengutronix.de; dl-linux-imx ; >>>> netdev@vger.kernel.org; devicetree@vger.kernel.org; >>>> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >>>> Subject: Re: [PATCH net-next 1/3] dt-bindings: net: fsl, fec: add >>>> "fsl, wakeup-irq" property >>>> >>>> >>>> >>>> On 8/8/2021 10:08 PM, Joakim Zhang wrote: >>>>> >>>>> Hi Florian, >>>>> >>>>>> -----Original Message----- >>>>>> From: Florian Fainelli >>>>>> Sent: 2021年8月5日 17:18 >>>>>> To: Joakim Zhang ; davem@davemloft.net; >>>>>> kuba@kernel.org; robh+dt@kernel.org; shawnguo@kernel.org; >>>>>> s.hauer@pengutronix.de; festevam@gmail.com; andrew@lunn.ch >>>>>> Cc: kernel@pengutronix.de; dl-linux-imx ; >>>>>> netdev@vger.kernel.org; devicetree@vger.kernel.org; >>>>>> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >>>>>> Subject: Re: [PATCH net-next 1/3] dt-bindings: net: fsl, fec: add >>>>>> "fsl, wakeup-irq" property >>>>>> >>>>>> >>>>>> >>>>>> On 8/5/2021 12:46 AM, Joakim Zhang wrote: >>>>>>> Add "fsl,wakeup-irq" property for FEC controller to select wakeup >>>>>>> irq source. >>>>>>> >>>>>>> Signed-off-by: Fugang Duan >>>>>>> Signed-off-by: Joakim Zhang >>>>>> >>>>>> Why are not you making use of the standard interrupts-extended >>>>>> property which allows different interrupt lines to be originating >>>>>> from different interrupt controllers, e.g.: >>>>>> >>>>>> interrupts-extended = <&gic GIC_SPI 112 4>, <&wakeup_intc 0>; >>>>> >>>>> Thanks. >>>>> >>>>> AFAIK, interrupts-extended should be used instead of interrupts when >>>>> a device is connected to multiple interrupt controllers as it >>>>> encodes a parent phandle with each interrupt specifier. However, for >>>>> FEC controller, all >>>> interrupt lines are originating from the same interrupt controllers. >>>> >>>> OK, so why this custom property then? >>>> >>>>> >>>>> 1) FEC controller has up to 4 interrupt lines and all of these are >>>>> routed to GIC >>>> interrupt controller. >>>>> 2) FEC has a wakeup interrupt signal and always are mixed with other >>>> interrupt signals, and then output to one interrupt line. >>>>> 3) For legacy SoCs, wakeup interrupt are mixed to int0 line, but for >>>>> i.MX8M >>>> serials, are mixed to int2 line. >>>>> 4) Now driver treat int0 as the wakeup source by default, it is >>>>> broken for >>>> i.MX8M. >>>> >>>> I don't really know what to make of your response, it seems to me >>>> that you are carrying some legacy Device Tree properties that were >>>> invented when interrupts-extended did not exist and we did not know any >> better. >>> >>> As I described in former mail, it is not related to interrupts-extended >> property. >>> >>> Let's take a look, e.g. >>> >>> 1) arch/arm/boot/dts/imx7d.dtsi >>> interrupts = , >>> , >>> , >>> ; >>> interrupt-names = "int0", "int1", "int2", "pps"; >>> >>> For these 4 interrupts are originating from GIC interrupt controller, >>> "int0" for queue 0 and other interrupt signals, containing wakeup; "int1" for >> queue 1; "int2" for queue 2. >>> >>> 2) arch/arm64/boot/dts/freescale/imx8mq.dtsi >>> interrupts = , >>> , >>> , >>> ; >>> interrupt-names = "int0", "int1", "int2", "pps"; >>> >>> For these 4 interrupts are also originating from GIC interrupt >>> controller, "int0" for queue 0; "int1" for queue 1; "int2" for queue 2 and other >> interrupt signals, containing wakeup. >>> >>> If we want to use WoL feature, we need invoke enable_irq_wake() to let >>> this specific interrupt line be a wakeup source. For FEC driver now, >>> it treats "int0" as wakeup interrupt by default. Obviously it's not fine for >> i.MX8M serials, since SoC mix wakeup interrupt signal into "int2", so I add this >> "fsl,wakeup-irq" custom property to indicate which interrupt line contains >> wakeup signal. >>> >>> Not sure if I have explained it clearly enough, from my point of view, I think >> interrupts-extended property can't fix this issue, right? >> >> This is clearer, and indeed interrupts-extended won't fix that, however it seems >> to me that this is a problem that ought to be fixed at the interrupt >> controller/irq_chip level which should know and be told which interrupt lines >> can be made wake-up interrupts or not. From there on, the driver can test with >> enable_irq_wake() whether this has a chance of working or not. > > How can we test with enable_irq_wake()? I agree that interrupt controller can recognize > wakeup interrupt is better. If enable_irq_wake() returns -ENOTSUPP you would know that wake-up for that interrupt controller's line is not capable of wake-up? > >> It seems to me that the 'fsl,wakeup-irq' property ought to be within the >> interrupt controller Device Tree node (where it would be easier to validate that >> the specific interrupt line is correct) as opposed to within the consumer (FEC) >> Device Tree node. > > Not quite understand, could you explain more? What I mean is that if you need to express which interrupt lines within an interrupt controller are capable of wake-up, then there should be a property that tells us that and that property needs to be within the interrupt controller, not within the consumer of that interrupt since the consumer has no idea how the system is wired up. Andrew's suggestion is sort of the same thing, except that it punts the responsibility of specifying the interrupt's capability towards the consumer of that interrupt. -- Florian 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=-7.2 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 39BDFC4338F for ; Thu, 12 Aug 2021 09:48:58 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id C649460FC4 for ; Thu, 12 Aug 2021 09:48:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C649460FC4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=0fQrjpLcTzAbcZtoInschzmL/cv79pqFVcftbC/+FFE=; b=29dA6DGPC19sP5dDlGgB/PQcCL Q51TFR5p/TMwnWrLCmBIiuqx/FQ933CYrSqVL9fKHjbY8qWsJZo/vYA/NIpjSdqFHX7ZGaoZUdusi OoSMJKX2x4co8uJ7FCyoZ5cv7v+CdUwTFzSBOM785Mq3NUCYIzkjkMRJ+2yoF0jpT99PHrDzyavRd tpLeKcUvNaZvbkUDwas8mqbgkoaHN7iZheRjXrKzBjTyKcOaOM5hnbl/qKc3ppFfwjeB/CouojB2l R2RnL4KZ+JAnjG6st1/svvvhSOfcmOBAGz0MovveVYxYBrxHPkGi88ML//ZGRG1DhbaRc1IF2JbN/ bhRAce0Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mE7In-009W6X-Cy; Thu, 12 Aug 2021 09:47:05 +0000 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mE7IG-009VmW-Th for linux-arm-kernel@lists.infradead.org; Thu, 12 Aug 2021 09:46:34 +0000 Received: by mail-pj1-x1032.google.com with SMTP id cp15-20020a17090afb8fb029017891959dcbso14311532pjb.2 for ; Thu, 12 Aug 2021 02:46:31 -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=p0S9yd93hJUofIaZXMuYLRgaJwtt+ZTGW3IkG7IjUxU=; b=uvTtjzE0Tvzea+40xzT+Bfl1jRcID8I6G5PPXSe9YrETNMQh9u+S/mSgBc1qsvBa14 6ePX1rGUx0dyeKu4s912qN1gZQYW26r1NRoUQKlKNXmesBq7kQtCYjuiFyjBslarVmlg 4e2868roiHYqd8XmXkCrvPFnVivZwkhdFk/EwQjHi+D+poVA4Ta97ICT6GZxrEd8gYiO c3Ft1MPUSEpx4YqtLVJ2KagOBofiOBSjrfprDIEwjNSZDRwJWiy9kS38+mKKD2KwvO83 Sn9GizpoVicS5v+EOJslexNllWHa6OburK7uk61QFwkHg2ygyP9mdfX0EGqPVOf060/9 LdxA== 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=p0S9yd93hJUofIaZXMuYLRgaJwtt+ZTGW3IkG7IjUxU=; b=BZUAXk3hY6FHRd163Nz6I3I5iJWhi/ZR4EpJ8H79x7hPUYWmYvpwjWZDQyQ/ql5Roy WWfnJ6FEA8LI3u51m9YKLRydry61Le0C72Z4THvmtjeoEIA19ZRU7BJmMsvj/AqlHj+l mbDA3CaUnHRqCp1w7mhNKGsVvlvQ/7q9nmsfH9z/RKa8RUHyyVWZEa/V+JyGq+KNi8Ry 65VZrA+8o+nSQMmYApaTQkmVThbLyHH7oE5PCOZoe8fZTUsbFGRJJw25N8tu74YgaqmX 4vpJNc2B6CczGu+pROHxHhm/YBYVRPoFz9MbqVh/hCqBbBLJRc2GXXMPxynU3K/UslpE VPQw== X-Gm-Message-State: AOAM5315WHGu7b8+kpdF4MKVBDJSjERSXRYOww9C0bz1l5lXMmRf3pCo BFn1efxib/DrocWT6yN2TCikDT2CY148mw== X-Google-Smtp-Source: ABdhPJwYVE1aRoDJBlM9YFZACF6QXIh1Dv9KdlDpwcV3qdKEKdxWGL2X/2hCGYIzd2BZ0sYlfQPsZQ== X-Received: by 2002:a63:33c9:: with SMTP id z192mr3124473pgz.42.1628761591096; Thu, 12 Aug 2021 02:46:31 -0700 (PDT) Received: from [10.230.31.46] ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id g26sm2856071pgb.45.2021.08.12.02.46.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 Aug 2021 02:46:30 -0700 (PDT) Subject: Re: [PATCH net-next 1/3] dt-bindings: net: fsl, fec: add "fsl, wakeup-irq" property To: Joakim Zhang , "davem@davemloft.net" , "kuba@kernel.org" , "robh+dt@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "festevam@gmail.com" , "andrew@lunn.ch" Cc: "kernel@pengutronix.de" , dl-linux-imx , "netdev@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" References: <20210805074615.29096-1-qiangqing.zhang@nxp.com> <20210805074615.29096-2-qiangqing.zhang@nxp.com> <2e1a14bf-2fa8-ed39-d133-807c4e14859c@gmail.com> <498f3cee-8f37-2ab1-93c4-5472572ecc37@gmail.com> <90af8051-512d-1230-72a7-8bbcee984939@gmail.com> From: Florian Fainelli Message-ID: Date: Thu, 12 Aug 2021 02:46:16 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210812_024633_037876_A7C8039D X-CRM114-Status: GOOD ( 28.27 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="gbk"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiA4LzExLzIwMjEgMTowNiBBTSwgSm9ha2ltIFpoYW5nIHdyb3RlOgo+IAo+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxp QGdtYWlsLmNvbT4KPj4gU2VudDogMjAyMcTqONTCMTHI1SAxOjQ1Cj4+IFRvOiBKb2FraW0gWmhh bmcgPHFpYW5ncWluZy56aGFuZ0BueHAuY29tPjsgZGF2ZW1AZGF2ZW1sb2Z0Lm5ldDsKPj4ga3Vi YUBrZXJuZWwub3JnOyByb2JoK2R0QGtlcm5lbC5vcmc7IHNoYXduZ3VvQGtlcm5lbC5vcmc7Cj4+ IHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU7IGZlc3RldmFtQGdtYWlsLmNvbTsgYW5kcmV3QGx1bm4u Y2gKPj4gQ2M6IGtlcm5lbEBwZW5ndXRyb25peC5kZTsgZGwtbGludXgtaW14IDxsaW51eC1pbXhA bnhwLmNvbT47Cj4+IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJu ZWwub3JnOwo+PiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKPj4gU3ViamVjdDogUmU6IFtQQVRDSCBuZXQtbmV4dCAxLzNd IGR0LWJpbmRpbmdzOiBuZXQ6IGZzbCwgZmVjOiBhZGQgImZzbCwKPj4gd2FrZXVwLWlycSIgcHJv cGVydHkKPj4KPj4KPj4KPj4gT24gOC85LzIwMjEgNzoyMSBQTSwgSm9ha2ltIFpoYW5nIHdyb3Rl Ogo+Pj4KPj4+IEhpIEZsb3JpYW4sCj4+Pgo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t Cj4+Pj4gRnJvbTogRmxvcmlhbiBGYWluZWxsaSA8Zi5mYWluZWxsaUBnbWFpbC5jb20+Cj4+Pj4g U2VudDogMjAyMcTqONTCMTDI1SAyOjQwCj4+Pj4gVG86IEpvYWtpbSBaaGFuZyA8cWlhbmdxaW5n LnpoYW5nQG54cC5jb20+OyBkYXZlbUBkYXZlbWxvZnQubmV0Owo+Pj4+IGt1YmFAa2VybmVsLm9y Zzsgcm9iaCtkdEBrZXJuZWwub3JnOyBzaGF3bmd1b0BrZXJuZWwub3JnOwo+Pj4+IHMuaGF1ZXJA cGVuZ3V0cm9uaXguZGU7IGZlc3RldmFtQGdtYWlsLmNvbTsgYW5kcmV3QGx1bm4uY2gKPj4+PiBD Yzoga2VybmVsQHBlbmd1dHJvbml4LmRlOyBkbC1saW51eC1pbXggPGxpbnV4LWlteEBueHAuY29t PjsKPj4+PiBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9y ZzsKPj4+PiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKPj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIG5ldC1uZXh0IDEvM10g ZHQtYmluZGluZ3M6IG5ldDogZnNsLCBmZWM6IGFkZAo+Pj4+ICJmc2wsIHdha2V1cC1pcnEiIHBy b3BlcnR5Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gT24gOC84LzIwMjEgMTA6MDggUE0sIEpvYWtpbSBa aGFuZyB3cm90ZToKPj4+Pj4KPj4+Pj4gSGkgRmxvcmlhbiwKPj4+Pj4KPj4+Pj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4+PiBGcm9tOiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5l bGxpQGdtYWlsLmNvbT4KPj4+Pj4+IFNlbnQ6IDIwMjHE6jjUwjXI1SAxNzoxOAo+Pj4+Pj4gVG86 IEpvYWtpbSBaaGFuZyA8cWlhbmdxaW5nLnpoYW5nQG54cC5jb20+OyBkYXZlbUBkYXZlbWxvZnQu bmV0Owo+Pj4+Pj4ga3ViYUBrZXJuZWwub3JnOyByb2JoK2R0QGtlcm5lbC5vcmc7IHNoYXduZ3Vv QGtlcm5lbC5vcmc7Cj4+Pj4+PiBzLmhhdWVyQHBlbmd1dHJvbml4LmRlOyBmZXN0ZXZhbUBnbWFp bC5jb207IGFuZHJld0BsdW5uLmNoCj4+Pj4+PiBDYzoga2VybmVsQHBlbmd1dHJvbml4LmRlOyBk bC1saW51eC1pbXggPGxpbnV4LWlteEBueHAuY29tPjsKPj4+Pj4+IG5ldGRldkB2Z2VyLmtlcm5l bC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOwo+Pj4+Pj4gbGludXgta2VybmVsQHZn ZXIua2VybmVsLm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4+Pj4+ PiBTdWJqZWN0OiBSZTogW1BBVENIIG5ldC1uZXh0IDEvM10gZHQtYmluZGluZ3M6IG5ldDogZnNs LCBmZWM6IGFkZAo+Pj4+Pj4gImZzbCwgd2FrZXVwLWlycSIgcHJvcGVydHkKPj4+Pj4+Cj4+Pj4+ Pgo+Pj4+Pj4KPj4+Pj4+IE9uIDgvNS8yMDIxIDEyOjQ2IEFNLCBKb2FraW0gWmhhbmcgd3JvdGU6 Cj4+Pj4+Pj4gQWRkICJmc2wsd2FrZXVwLWlycSIgcHJvcGVydHkgZm9yIEZFQyBjb250cm9sbGVy IHRvIHNlbGVjdCB3YWtldXAKPj4+Pj4+PiBpcnEgc291cmNlLgo+Pj4+Pj4+Cj4+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogRnVnYW5nIER1YW4gPGZ1Z2FuZy5kdWFuQG54cC5jb20+Cj4+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogSm9ha2ltIFpoYW5nIDxxaWFuZ3FpbmcuemhhbmdAbnhwLmNvbT4KPj4+Pj4+ Cj4+Pj4+PiBXaHkgYXJlIG5vdCB5b3UgbWFraW5nIHVzZSBvZiB0aGUgc3RhbmRhcmQgaW50ZXJy dXB0cy1leHRlbmRlZAo+Pj4+Pj4gcHJvcGVydHkgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCBpbnRl cnJ1cHQgbGluZXMgdG8gYmUgb3JpZ2luYXRpbmcKPj4+Pj4+IGZyb20gZGlmZmVyZW50IGludGVy cnVwdCBjb250cm9sbGVycywgZS5nLjoKPj4+Pj4+Cj4+Pj4+PiBpbnRlcnJ1cHRzLWV4dGVuZGVk ID0gPCZnaWMgR0lDX1NQSSAxMTIgND4sIDwmd2FrZXVwX2ludGMgMD47Cj4+Pj4+Cj4+Pj4+IFRo YW5rcy4KPj4+Pj4KPj4+Pj4gQUZBSUssIGludGVycnVwdHMtZXh0ZW5kZWQgc2hvdWxkIGJlIHVz ZWQgaW5zdGVhZCBvZiBpbnRlcnJ1cHRzIHdoZW4KPj4+Pj4gYSBkZXZpY2UgaXMgY29ubmVjdGVk IHRvIG11bHRpcGxlIGludGVycnVwdCBjb250cm9sbGVycyBhcyBpdAo+Pj4+PiBlbmNvZGVzIGEg cGFyZW50IHBoYW5kbGUgd2l0aCBlYWNoIGludGVycnVwdCBzcGVjaWZpZXIuIEhvd2V2ZXIsIGZv cgo+Pj4+PiBGRUMgY29udHJvbGxlciwgYWxsCj4+Pj4gaW50ZXJydXB0IGxpbmVzIGFyZSBvcmln aW5hdGluZyBmcm9tIHRoZSBzYW1lIGludGVycnVwdCBjb250cm9sbGVycy4KPj4+Pgo+Pj4+IE9L LCBzbyB3aHkgdGhpcyBjdXN0b20gcHJvcGVydHkgdGhlbj8KPj4+Pgo+Pj4+Pgo+Pj4+PiAxKSBG RUMgY29udHJvbGxlciBoYXMgdXAgdG8gNCBpbnRlcnJ1cHQgbGluZXMgYW5kIGFsbCBvZiB0aGVz ZSBhcmUKPj4+Pj4gcm91dGVkIHRvIEdJQwo+Pj4+IGludGVycnVwdCBjb250cm9sbGVyLgo+Pj4+ PiAyKSBGRUMgaGFzIGEgd2FrZXVwIGludGVycnVwdCBzaWduYWwgYW5kIGFsd2F5cyBhcmUgbWl4 ZWQgd2l0aCBvdGhlcgo+Pj4+IGludGVycnVwdCBzaWduYWxzLCBhbmQgdGhlbiBvdXRwdXQgdG8g b25lIGludGVycnVwdCBsaW5lLgo+Pj4+PiAzKSBGb3IgbGVnYWN5IFNvQ3MsIHdha2V1cCBpbnRl cnJ1cHQgYXJlIG1peGVkIHRvIGludDAgbGluZSwgYnV0IGZvcgo+Pj4+PiBpLk1YOE0KPj4+PiBz ZXJpYWxzLCBhcmUgbWl4ZWQgdG8gaW50MiBsaW5lLgo+Pj4+PiA0KSBOb3cgZHJpdmVyIHRyZWF0 IGludDAgYXMgdGhlIHdha2V1cCBzb3VyY2UgYnkgZGVmYXVsdCwgaXQgaXMKPj4+Pj4gYnJva2Vu IGZvcgo+Pj4+IGkuTVg4TS4KPj4+Pgo+Pj4+IEkgZG9uJ3QgcmVhbGx5IGtub3cgd2hhdCB0byBt YWtlIG9mIHlvdXIgcmVzcG9uc2UsIGl0IHNlZW1zIHRvIG1lCj4+Pj4gdGhhdCB5b3UgYXJlIGNh cnJ5aW5nIHNvbWUgbGVnYWN5IERldmljZSBUcmVlIHByb3BlcnRpZXMgdGhhdCB3ZXJlCj4+Pj4g aW52ZW50ZWQgd2hlbiBpbnRlcnJ1cHRzLWV4dGVuZGVkIGRpZCBub3QgZXhpc3QgYW5kIHdlIGRp ZCBub3Qga25vdyBhbnkKPj4gYmV0dGVyLgo+Pj4KPj4+IEFzIEkgZGVzY3JpYmVkIGluIGZvcm1l ciBtYWlsLCBpdCBpcyBub3QgcmVsYXRlZCB0byBpbnRlcnJ1cHRzLWV4dGVuZGVkCj4+IHByb3Bl cnR5Lgo+Pj4KPj4+IExldCdzIHRha2UgYSBsb29rLCBlLmcuCj4+Pgo+Pj4gMSkgYXJjaC9hcm0v Ym9vdC9kdHMvaW14N2QuZHRzaQo+Pj4gaW50ZXJydXB0cyA9IDxHSUNfU1BJIDEwMiBJUlFfVFlQ RV9MRVZFTF9ISUdIPiwKPj4+IAkJPEdJQ19TUEkgMTAwIElSUV9UWVBFX0xFVkVMX0hJR0g+LAo+ Pj4gCQk8R0lDX1NQSSAxMDEgSVJRX1RZUEVfTEVWRUxfSElHSD4sCj4+PiAJCTxHSUNfU1BJIDEw MyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKPj4+IGludGVycnVwdC1uYW1lcyA9ICJpbnQwIiwgImlu dDEiLCAiaW50MiIsICJwcHMiOwo+Pj4KPj4+IEZvciB0aGVzZSA0IGludGVycnVwdHMgYXJlIG9y aWdpbmF0aW5nIGZyb20gR0lDIGludGVycnVwdCBjb250cm9sbGVyLAo+Pj4gImludDAiIGZvciBx dWV1ZSAwIGFuZCBvdGhlciBpbnRlcnJ1cHQgc2lnbmFscywgY29udGFpbmluZyB3YWtldXA7ICJp bnQxIiBmb3IKPj4gcXVldWUgMTsgImludDIiIGZvciBxdWV1ZSAyLgo+Pj4KPj4+IDIpIGFyY2gv YXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lteDhtcS5kdHNpCj4+PiBpbnRlcnJ1cHRzID0gPEdJ Q19TUEkgMTE4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAo+Pj4gCTxHSUNfU1BJIDExOSBJUlFfVFlQ RV9MRVZFTF9ISUdIPiwKPj4+IAk8R0lDX1NQSSAxMjAgSVJRX1RZUEVfTEVWRUxfSElHSD4sCj4+ PiAJPEdJQ19TUEkgMTIxIElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+Pj4gaW50ZXJydXB0LW5hbWVz ID0gImludDAiLCAiaW50MSIsICJpbnQyIiwgInBwcyI7Cj4+Pgo+Pj4gRm9yIHRoZXNlIDQgaW50 ZXJydXB0cyBhcmUgYWxzbyBvcmlnaW5hdGluZyBmcm9tIEdJQyBpbnRlcnJ1cHQKPj4+IGNvbnRy b2xsZXIsICJpbnQwIiBmb3IgcXVldWUgMDsgImludDEiIGZvciBxdWV1ZSAxOyAiaW50MiIgZm9y IHF1ZXVlIDIgYW5kIG90aGVyCj4+IGludGVycnVwdCBzaWduYWxzLCBjb250YWluaW5nIHdha2V1 cC4KPj4+Cj4+PiBJZiB3ZSB3YW50IHRvIHVzZSBXb0wgZmVhdHVyZSwgd2UgbmVlZCBpbnZva2Ug ZW5hYmxlX2lycV93YWtlKCkgdG8gbGV0Cj4+PiB0aGlzIHNwZWNpZmljIGludGVycnVwdCBsaW5l IGJlIGEgd2FrZXVwIHNvdXJjZS4gRm9yIEZFQyBkcml2ZXIgbm93LAo+Pj4gaXQgdHJlYXRzICJp bnQwIiBhcyB3YWtldXAgaW50ZXJydXB0IGJ5IGRlZmF1bHQuIE9idmlvdXNseSBpdCdzIG5vdCBm aW5lIGZvcgo+PiBpLk1YOE0gc2VyaWFscywgc2luY2UgU29DIG1peCB3YWtldXAgaW50ZXJydXB0 IHNpZ25hbCBpbnRvICJpbnQyIiwgc28gSSBhZGQgdGhpcwo+PiAiZnNsLHdha2V1cC1pcnEiIGN1 c3RvbSBwcm9wZXJ0eSB0byBpbmRpY2F0ZSB3aGljaCBpbnRlcnJ1cHQgbGluZSBjb250YWlucwo+ PiB3YWtldXAgc2lnbmFsLgo+Pj4KPj4+IE5vdCBzdXJlIGlmIEkgaGF2ZSBleHBsYWluZWQgaXQg Y2xlYXJseSBlbm91Z2gsIGZyb20gbXkgcG9pbnQgb2YgdmlldywgSSB0aGluawo+PiBpbnRlcnJ1 cHRzLWV4dGVuZGVkIHByb3BlcnR5IGNhbid0IGZpeCB0aGlzIGlzc3VlLCByaWdodD8KPj4KPj4g VGhpcyBpcyBjbGVhcmVyLCBhbmQgaW5kZWVkIGludGVycnVwdHMtZXh0ZW5kZWQgd29uJ3QgZml4 IHRoYXQsIGhvd2V2ZXIgaXQgc2VlbXMKPj4gdG8gbWUgdGhhdCB0aGlzIGlzIGEgcHJvYmxlbSB0 aGF0IG91Z2h0IHRvIGJlIGZpeGVkIGF0IHRoZSBpbnRlcnJ1cHQKPj4gY29udHJvbGxlci9pcnFf Y2hpcCBsZXZlbCB3aGljaCBzaG91bGQga25vdyBhbmQgYmUgdG9sZCB3aGljaCBpbnRlcnJ1cHQg bGluZXMKPj4gY2FuIGJlIG1hZGUgd2FrZS11cCBpbnRlcnJ1cHRzIG9yIG5vdC4gRnJvbSB0aGVy ZSBvbiwgdGhlIGRyaXZlciBjYW4gdGVzdCB3aXRoCj4+IGVuYWJsZV9pcnFfd2FrZSgpIHdoZXRo ZXIgdGhpcyBoYXMgYSBjaGFuY2Ugb2Ygd29ya2luZyBvciBub3QuCj4gCj4gSG93IGNhbiB3ZSB0 ZXN0IHdpdGggZW5hYmxlX2lycV93YWtlKCk/IEkgYWdyZWUgdGhhdCBpbnRlcnJ1cHQgY29udHJv bGxlciBjYW4gcmVjb2duaXplCj4gd2FrZXVwIGludGVycnVwdCBpcyBiZXR0ZXIuCgpJZiBlbmFi bGVfaXJxX3dha2UoKSByZXR1cm5zIC1FTk9UU1VQUCB5b3Ugd291bGQga25vdyB0aGF0IHdha2Ut dXAgZm9yIAp0aGF0IGludGVycnVwdCBjb250cm9sbGVyJ3MgbGluZSBpcyBub3QgY2FwYWJsZSBv ZiB3YWtlLXVwPwoKPiAKPj4gSXQgc2VlbXMgdG8gbWUgdGhhdCB0aGUgJ2ZzbCx3YWtldXAtaXJx JyBwcm9wZXJ0eSBvdWdodCB0byBiZSB3aXRoaW4gdGhlCj4+IGludGVycnVwdCBjb250cm9sbGVy IERldmljZSBUcmVlIG5vZGUgKHdoZXJlIGl0IHdvdWxkIGJlIGVhc2llciB0byB2YWxpZGF0ZSB0 aGF0Cj4+IHRoZSBzcGVjaWZpYyBpbnRlcnJ1cHQgbGluZSBpcyBjb3JyZWN0KSBhcyBvcHBvc2Vk IHRvIHdpdGhpbiB0aGUgY29uc3VtZXIgKEZFQykKPj4gRGV2aWNlIFRyZWUgbm9kZS4KPiAKPiBO b3QgcXVpdGUgdW5kZXJzdGFuZCwgY291bGQgeW91IGV4cGxhaW4gbW9yZT8KCldoYXQgSSBtZWFu IGlzIHRoYXQgaWYgeW91IG5lZWQgdG8gZXhwcmVzcyB3aGljaCBpbnRlcnJ1cHQgbGluZXMgd2l0 aGluIAphbiBpbnRlcnJ1cHQgY29udHJvbGxlciBhcmUgY2FwYWJsZSBvZiB3YWtlLXVwLCB0aGVu IHRoZXJlIHNob3VsZCBiZSBhIApwcm9wZXJ0eSB0aGF0IHRlbGxzIHVzIHRoYXQgYW5kIHRoYXQg cHJvcGVydHkgbmVlZHMgdG8gYmUgd2l0aGluIHRoZSAKaW50ZXJydXB0IGNvbnRyb2xsZXIsIG5v dCB3aXRoaW4gdGhlIGNvbnN1bWVyIG9mIHRoYXQgaW50ZXJydXB0IHNpbmNlIAp0aGUgY29uc3Vt ZXIgaGFzIG5vIGlkZWEgaG93IHRoZSBzeXN0ZW0gaXMgd2lyZWQgdXAuIEFuZHJldydzIHN1Z2dl c3Rpb24gCmlzIHNvcnQgb2YgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGF0IGl0IHB1bnRzIHRo ZSByZXNwb25zaWJpbGl0eSBvZiAKc3BlY2lmeWluZyB0aGUgaW50ZXJydXB0J3MgY2FwYWJpbGl0 eSB0b3dhcmRzIHRoZSBjb25zdW1lciBvZiB0aGF0IAppbnRlcnJ1cHQuCi0tIApGbG9yaWFuCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==