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 A1A2AC46467 for ; Tue, 10 Jan 2023 14:29:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232072AbjAJO3C (ORCPT ); Tue, 10 Jan 2023 09:29:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238435AbjAJO2m (ORCPT ); Tue, 10 Jan 2023 09:28:42 -0500 Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9CDB4C1F for ; Tue, 10 Jan 2023 06:28:40 -0800 (PST) Received: by mail-pj1-x102c.google.com with SMTP id c8-20020a17090a4d0800b00225c3614161so16644125pjg.5 for ; Tue, 10 Jan 2023 06:28:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20210112.gappssmtp.com; s=20210112; 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=1uAPm4TvuyfFiFiTXnXvZ5Lp4pJKxecoZo4KRpCVo8o=; b=LEpEW9Ssbm936q/NCQYLaqvHxdrA4k3lsfgfx3ICIdcyrp0eTpywjWLm0mTlN9/BZl c8F3IxrAp/VAsqZMemuJXBgqJjaZZLj1XJ5MIh/oKvSuFfei/k0+FAJc1pxsUIcUSaiT U03iFnov0EREVdJBIBKClDDne8YOWmOO1JT+Ch1rW0wXcPC1kBxPsnQ3SCoykO0WhLWW VewGxF0LIMOI5TUrMfsOX99vsZ013TzLtl6eArCx4OVkXvSzkTXupgXvKTXVmyIjZOwG mg3qfI/KBpyJ0tNezHPXNC/Jsdzsh8bVSAJ1LY6EN6GGEAAT/4qkgO8K8ja0prGlPwAZ sUcA== 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=1uAPm4TvuyfFiFiTXnXvZ5Lp4pJKxecoZo4KRpCVo8o=; b=NxESh2unMyPa8gSvZNySzcrMlLukmCWMZ6Ml17q/In7jikbVjwR5LnQvZNKjHivcp3 T4HXJjyLaa+dfWh/2NEtMqHp3TvcQ6AALD/64ZQIdkN2SgKXKasXdNiTGUe+wOJhHwlZ nOOIHsDjPlnT3N4yN3mo1A34d1JltFvssFmnGdOmkF1CDgYRp7aQVgfYjzoBfvRi3Wp3 GKVj5kAFWSCPizz9Efg3RESTejZ2e/SDbiaHh2y7oM6NQGsYFtrCLxThrKeyIZwp6Sim yH43dH3Pe8+vR9WbUR0Kda+sNgsxpE6diCLg2yqvVUdbdo9J+ruYbN2Gbxdgjd+gmZDB tSow== X-Gm-Message-State: AFqh2krlj+W0cFczzFHoeq9S0+VQ4ncAQPeSfrD9jPd24gZumqtJFbZa ZnnH2ksO0sXBADtW2rh0MpZ+CQ== X-Google-Smtp-Source: AMrXdXt2WIz7aq75Fyr4MN5VOK1LagUefbYmsLpAC/QqGptcud67imAJxjVJKdRqcJqjooQZQpoZiA== X-Received: by 2002:a05:6a21:32a1:b0:aa:6efd:1883 with SMTP id yt33-20020a056a2132a100b000aa6efd1883mr110130914pzb.37.1673360919947; Tue, 10 Jan 2023 06:28:39 -0800 (PST) Received: from localhost (thunderhill.nvidia.com. [216.228.112.22]) by smtp.gmail.com with ESMTPSA id w65-20020a623044000000b0056c349f5c70sm8179608pfw.79.2023.01.10.06.28.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jan 2023 06:28:39 -0800 (PST) Date: Tue, 10 Jan 2023 15:28:36 +0100 From: Jiri Pirko To: "Kubalewski, Arkadiusz" Cc: Jakub Kicinski , Maciek Machnikowski , 'Vadim Fedorenko' , 'Jonathan Lemon' , 'Paolo Abeni' , "netdev@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-clk@vger.kernel.org" Subject: Re: [RFC PATCH v4 0/4] Create common DPLL/clock configuration API Message-ID: References: <10bb01d90a45$77189060$6549b120$@gmail.com> <20221207152157.6185b52b@kernel.org> <6e252f6d-283e-7138-164f-092709bc1292@machnikowski.net> <20221209083104.2469ebd6@kernel.org> 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-clk@vger.kernel.org Tue, Jan 10, 2023 at 11:54:20AM CET, arkadiusz.kubalewski@intel.com wrote: >>From: Jiri Pirko >>Sent: Monday, January 9, 2023 5:30 PM >> >>Mon, Jan 09, 2023 at 03:43:01PM CET, arkadiusz.kubalewski@intel.com wrote: >>>>From: Jiri Pirko >>>>Sent: Monday, December 12, 2022 2:59 PM >>>> >>>>Fri, Dec 09, 2022 at 05:31:04PM CET, kuba@kernel.org wrote: >>>>>On Fri, 9 Dec 2022 15:09:08 +0100 Maciek Machnikowski wrote: >>>>>> On 12/9/2022 12:07 PM, Jiri Pirko wrote: >>>>>> > Looking at the documentation of the chips, they all have mupltiple >>>>DPLLs >>>>>> > on a die. Arkadiusz, in your proposed implementation, do you model >>>>each >>>>>> > DPLL separatelly? If yes, then I understand the urgency of need of a >>>>>> > shared pin. So all DPLLs sharing the pin are part of the same chip? >>>>>> > >>>>>> > Question: can we have an entity, that would be 1:1 mapped to the >>>>actual >>>>>> > device/chip here? Let's call is "a synchronizer". It would contain >>>>>> > multiple DPLLs, user-facing-sources(input_connector), >>>>>> > user-facing-outputs(output_connector), i/o pins. >>>>>> > >>>>>> > An example: >>>>>> > SYNCHRONIZER >>>>>> > >>>>>> > >>>>┌───────────────────────────────────────┐ >>>>>> > │ >>>>│ >>>>>> > │ >>>>│ >>>>>> > SyncE in connector │ ┌─────────┐ >>>>│ SyncE out connector >>>>>> > ┌───┐ │in pin 1 │DPLL_1 │ out pin >>>>1│ ┌───┐ >>>>>> > │ ├─────────┼──────────────┤ >>>>├──────────────┼────┤ │ >>>>>> > │ │ │ │ │ >>>>│ │ │ >>>>>> > └───┘ │ │ │ >>>>│ └───┘ >>>>>> > │ │ │ >>>>│ >>>>>> > │ ┌──┤ │ >>>>│ >>>>>> > GNSS in connector │ │ └─────────┘ >>>>│ >>>>>> > ┌───┐ │in pin 2 │ out pin >>>>2│ EXT SMA connector >>>>>> > │ ├─────────┼───────────┘ >>>>│ ┌───┐ >>>>>> > │ │ │ >>>>┌───────────┼────┤ │ >>>>>> > └───┘ │ │ >>>>│ │ │ >>>>>> > │ │ >>>>│ └───┘ >>>>>> > │ │ >>>>│ >>>>>> > EXT SMA connector │ │ >>>>│ >>>>>> > ┌───┐ mux │in pin 3 ┌─────────┐ │ >>>>│ >>>>>> > │ ├────┬────┼───────────┐ │ │ │ >>>>│ >>>>>> > │ │ │ │ │ │DPLL_2 │ │ >>>>│ >>>>>> > └───┘ │ │ │ │ │ │ >>>>│ >>>>>> > │ │ └──┤ ├──┘ >>>>│ >>>>>> > │ │ │ │ >>>>│ >>>>>> > EXT SMA connector │ │ │ │ >>>>│ >>>>>> > ┌───┐ │ │ │ │ >>>>│ >>>>>> > │ ├────┘ │ └─────────┘ >>>>│ >>>>>> > │ │ │ >>>>│ >>>>>> > └───┘ >>>>└───────────────────────────────────────┘ >>>>>> > >>>>>> > Do I get that remotelly correct? >>>>>> >>>>>> It looks goot, hence two corrections are needed: >>>>>> - all inputs can go to all DPLLs, and a single source can drive more >>>>>> than one DPLL >>>>>> - The external mux for SMA connector should not be a part of the >>>>>> Synchronizer subsystem - I believe there's already a separate MUX >>>>>> subsystem in the kernel and all external connections should be >>handled >>>>>> by a devtree or a similar concept. >>>>>> >>>>>> The only "muxing" thing that could potentially be modeled is a >>>>>> synchronizer output to synchronizer input relation. Some synchronizers >>>>>> does that internally and can use the output of one DPLL as a source >>for >>>>>> another. >>>>> >>>>>My experience with DT and muxes is rapidly aging, have you worked with >>>>>those recently? From what I remember the muxes were really.. "embedded" >>>>>and static compared to what we want here. >>>> >>>>Why do you think we need something "non-static"? The mux is part of the >>>>board, isn't it? That sounds quite static to me. >>>> >>>> >>>>> >>>>>Using DT may work nicely for defining the topology, but for config we >>>>>still need a different mechanism. >>>> >>>>"config" of what? Each item in topology would be configure according to >>>>the item type, won't it? >>>> >>>>[...] >>> >>> >>>Hi guys, >>> >>>We have been trying to figure out feasibility of new approach proposed on >>our >>>latest meeting - to have a single object which encapsulates multiple >>DPLLs. >>> >>>Please consider following example: >>> >>>Shared common inputs: >>>i0 - GPS / external >>>i1 - SMA1 / external >>>i2 - SMA2 / external >>>i3 - MUX0 / clk recovered from PHY0.X driven by MAC0 >>>i4 - MUX1 / clk recovered from PHY1.X driven by MAC1 >>> >>>+---------------------------------------------------------+ >>>| Channel A / FW0 +---+ | >>>| i0--| | | >>>| +---+ | | | >>>| PHY0.0--| | i1--| D | | >>>| | | | P | | >>>| PHY0.1--| M | i2--| L | +---+ +--------+ | >>>| | U | | L |---| |---| PHY0.0 |--| >>>| PHY0.2--| X |-+---------i3--| 0 | | | +--------+ | >>>| | 0 | |+------+ | |---| M |---| PHY0.1 |--| >>>| ... --| | || MUX1 |-i4--| | | A | +--------+ | >>>| | | |+------+ +---+ | C |---| PHY0.2 |--| >>>| PHY0.7--| | | i0--| | | 0 | +--------+ | >>>| +---+ | | |---| |---| ... |--| >>>| | i1--| D | | | +--------+ | >>>| | | P |---| |---| PHY0.7 |--| >>>| | i2--| L | +---+ +--------+ | >>>| | | L | | >>>| \---------i3--| 1 | | >>>| +------+ | | | >>>| | MUX1 |-i4--| | | >>>| +------+ +---+ | >>>+---------------------------------------------------------+ >>>| Channel B / FW1 +---+ | >>>| i0--| | | >>>| | | | >>>| i1--| D | | >>>| +---+ | P | | >>>| PHY1.0--| | i2--| L | +---+ +--------+ | >>>| | | +------+ | L |---| |---| PHY1.0 |--| >>>| PHY1.1--| M | | MUX0 |-i3--| 0 | | | +--------+ | >>>| | U | +------+ | |---| M |---| PHY1.1 |--| >>>| PHY1.2--| X |-+---------i4--| | | A | +--------+ | >>>| | 1 | | +---+ | C |---| PHY1.2 |--| >>>| ... --| | | i0--| | | 1 | +--------+ | >>>| | | | | |---| |---| ... |--| >>>| PHY1.7--| | | i1--| D | | | +--------+ | >>>| +---+ | | P |---| |---| PHY1.7 |--| >>>| | i2--| L | +---+ +--------+ | >>>| |+------+ | L | | >>>| || MUX0 |-i3--| 1 | | >>>| |+------+ | | | >>>| \---------i4--| | | >>>| +---+ | >>>+---------------------------------------------------------+ >> >>What is "a channel" here? Are these 2 channels part of the same physival >>chip? Could you add the synchronizer chip/device entities to your drawing? >> > >No. >A "Synchronization Channel" on a switch would allow to separate groups >of physical ports. Each channel/group has own "Synchronizer Chip", which is >used to drive PHY clocks of that group. > >"Synchronizer chip" would be the 2 DPLLs on old draw, something like this: >+--------------------------------------------------------------+ >| Channel A / FW0 +-------------+ +---+ +--------+ | >| i0--|Synchronizer0|---| |---| PHY0.0 |--| >| +---+ | | | | +--------+ | >| PHY0.0--| | i1--| |---| M |---| PHY0.1 |--| >| | | | +-----+ | | A | +--------+ | >| PHY0.1--| M | i2--| |DPLL0| | | C |---| PHY0.2 |--| >| | U | | +-----+ | | 0 | +--------+ | >| PHY0.2--| X |--+---i3--| +-----+ |---| |---| ... |--| >| | 0 | | | |DPLL1| | | | +--------+ | >| ... --| | | /-i4--| +-----+ |---| |---| PHY0.7 |--| >| | | | | +-------------+ +---+ +--------+ | >| PHY0.7--| | | | | >| +---+ | | | >+----------------|-|-------------------------------------------+ >| Channel B / FW1| | +-------------+ +---+ +--------+ | >| | | i0--|Synchronizer1|---| |---| PHY1.0 |--| >| +---+ | | | | | | +--------+ | >| PHY1.0--| | | | i1--| |---| M |---| PHY1.1 |--| >| | | | | | +-----+ | | A | +--------+ | >| PHY1.1--| M | | | i2--| |DPLL0| | | C |---| PHY1.2 |--| >| | U | | | | +-----+ | | 1 | +--------+ | >| PHY1.2--| X | \-|-i3--| +-----+ |---| |---| ... |--| >| | 1 | | | |DPLL1| | | | +--------+ | >| ... --| |----+-i4--| +-----+ |---| |---| PHY1.7 |--| >| | | +-------------+ +---+ +--------+ | >| PHY1.7--| | | >| +---+ | >+--------------------------------------------------------------+ >Also, please keep in mind that is an example, there could be easily 4 >(or more) channels wired similarly. Good. So there are 2 synchronizers out there, each has a list of pins and contain multiple dplls. 1 synchronizer is 1 device. No pin sharing between devices, just between dplls inside one device. That eliminates this odd concept of flying pin. Good. > >> >>> >>>This is a simplified network switch board example. >>>It has 2 synchronization channels, where each channel: >>>- provides clk to 8 PHYs driven by separated MAC chips, >>>- controls 2 DPLLs. >>> >>>Basically only given FW has control over its PHYs, so also a control over >>it's >>>MUX inputs. >>>All external sources are shared between the channels. >>> >>>This is why we believe it is not best idea to enclose multiple DPLLs with >>one >>>object: >>>- sources are shared even if DPLLs are not a single synchronizer chip, >>>- control over specific MUX type input shall be controllable from >>different >>>driver/firmware instances. >>> >>>As we know the proposal of having multiple DPLLs in one object was a try >>to >>>simplify currently implemented shared pins. We fully support idea of >>having >>>interfaces as simple as possible, but at the same time they shall be >>flexible >>>enough to serve many use cases. >>> >>>Right now the use case of single "synchronizer chip" is possible (2 DPLLs Btw, fix your email client not to mangle the text you reply to with line breaks like this one. >>with >>>shared inputs), as well as multiple synchronizer chips with shared inputs. >>> >>>If we would entirely get rid of sharing pins idea and instead allowed only >>to >>>have multiple DPLLs in one object, we would fall back to the problem where >>>change on one input is braking another "synchronizer chip" input. >>>I.e. considering above scheme, user configured both channels to use SMA1 >>1MHz. >>>If SMA1 input is changed to 10MHz, all DPLLs are affected, thus all using >>that >> >>You say "SMA1 input *is changed*". Could you add to your drawing: >>1) Who is the one triggering the change. >>2) Entity that manages the SMA input and applies the configuration. >> > >A user or some tool, this change requires to switch a frequency on a signal >generator connected to that SMA1. Whatever would make the change is an external >entity here. The draw show connections on board, don't see a point on having a >external signal generator or user connected to the board :) > >If something is not clear, we could prepare some different draw, please just >let me know what exactly we want to see. It sound like a sequence diagram? I think I got it. The pins are shared between DPLLS within single synchronizer entity. That clears up my modeling concerns. Also it makes your code much simplier, you don't need special shared pin beast with reference counting etc. You just have a pin with synchronizer entity as owner and expose the linkage inside this synchronizer entity between individual DPLLs and pins. > >Thanks! >Arkadiusz > >> >>>input shall be notified, as long as that input is shared. >>>For the drivers that have single point of control over dpll, they might >>just >>>skip those requests. But if there are multiple firmware instances >>controlling >>>multiple DPLLs, they would process it independently. >>> >>>Current implementation is the most flexible and least complex for the >>level of >>>flexibility it provides. >>> >>>BR, Happy new year! >>>Arkadiusz 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 A768DC46467 for ; Tue, 10 Jan 2023 14:29: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: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=snKdtSJxLPyTFFbOhrBw217C3ry+e51xkdclIeOjC/s=; b=uiHTaGePSz7rVv 6+bDbaGqs9Fzk5499Ke5gzDaTkYXMDV6tIXUeYIkgcsO202lZQ8bsJp3L1AokGkmyJpSnMLvs/e3u w2bFJv2iIAiu2XPpZhgHgPibBqWgv89SH3qyLl/2Sun0s4l7FF4zz18M/s70SPbBDDzbvewjk727t 2mkv8DnQ1SkaBSJ0xmN3NmF9gYOhb2Y/ITI0PJ3EZbP7E3P42HhpJ1NyH9B7bRTPeMEqh6DVr9GIp oVoJ08uKBv0cNCH17i/SmRZPmOUNRI4BwoRi4TTQ7fL/vgcv6T/CLTuTwOIk9RGA76K8RA6jXhJAN YjK6tq/5GzDtI8D04Iug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pFFcO-007J2t-NA; Tue, 10 Jan 2023 14:28:48 +0000 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pFFcJ-007J1Z-St for linux-arm-kernel@lists.infradead.org; Tue, 10 Jan 2023 14:28:47 +0000 Received: by mail-pj1-x1036.google.com with SMTP id o1-20020a17090a678100b00219cf69e5f0so16683640pjj.2 for ; Tue, 10 Jan 2023 06:28:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20210112.gappssmtp.com; s=20210112; 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=1uAPm4TvuyfFiFiTXnXvZ5Lp4pJKxecoZo4KRpCVo8o=; b=LEpEW9Ssbm936q/NCQYLaqvHxdrA4k3lsfgfx3ICIdcyrp0eTpywjWLm0mTlN9/BZl c8F3IxrAp/VAsqZMemuJXBgqJjaZZLj1XJ5MIh/oKvSuFfei/k0+FAJc1pxsUIcUSaiT U03iFnov0EREVdJBIBKClDDne8YOWmOO1JT+Ch1rW0wXcPC1kBxPsnQ3SCoykO0WhLWW VewGxF0LIMOI5TUrMfsOX99vsZ013TzLtl6eArCx4OVkXvSzkTXupgXvKTXVmyIjZOwG mg3qfI/KBpyJ0tNezHPXNC/Jsdzsh8bVSAJ1LY6EN6GGEAAT/4qkgO8K8ja0prGlPwAZ sUcA== 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=1uAPm4TvuyfFiFiTXnXvZ5Lp4pJKxecoZo4KRpCVo8o=; b=BNfKhB/YGOniFLvtuWG80fhEyN0vJgmw0X9lomXZ63eUdfBeLzMF1Vnl0NDFNJzZFn KIHAhGIvSOU9uk6GRT2uAA6MKzX1tsBEEVVqhSwJKW7BCB/qhj0+E/85wzqEwOZNMumz VpgxuTa9yE09j78urd+9uZMAVhwVXePk8gwdit3V0qZk4Fp1zPNsEG1CneGvHHC3yu4v QTX8559ymYZRgVPgP7BlgJzMHr0ix/DFm46IViHjKhQi04sl53r4KfDz1qovdVVtkZ31 Mp9h/v98CeThhowY5Js5h70g263JCc5oCJiU8OZIgkn6GPKrVixMvD18OKXpba9WFhYk pmIg== X-Gm-Message-State: AFqh2krwX7YgI4bUTXwBGZ9ozrqAhGhtae7WDtsh1IEakMClHG1oX7ZV qKQdtk9SHanlydbF5Pju+j7MFw== X-Google-Smtp-Source: AMrXdXt2WIz7aq75Fyr4MN5VOK1LagUefbYmsLpAC/QqGptcud67imAJxjVJKdRqcJqjooQZQpoZiA== X-Received: by 2002:a05:6a21:32a1:b0:aa:6efd:1883 with SMTP id yt33-20020a056a2132a100b000aa6efd1883mr110130914pzb.37.1673360919947; Tue, 10 Jan 2023 06:28:39 -0800 (PST) Received: from localhost (thunderhill.nvidia.com. [216.228.112.22]) by smtp.gmail.com with ESMTPSA id w65-20020a623044000000b0056c349f5c70sm8179608pfw.79.2023.01.10.06.28.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jan 2023 06:28:39 -0800 (PST) Date: Tue, 10 Jan 2023 15:28:36 +0100 From: Jiri Pirko To: "Kubalewski, Arkadiusz" Cc: Jakub Kicinski , Maciek Machnikowski , 'Vadim Fedorenko' , 'Jonathan Lemon' , 'Paolo Abeni' , "netdev@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-clk@vger.kernel.org" Subject: Re: [RFC PATCH v4 0/4] Create common DPLL/clock configuration API Message-ID: References: <10bb01d90a45$77189060$6549b120$@gmail.com> <20221207152157.6185b52b@kernel.org> <6e252f6d-283e-7138-164f-092709bc1292@machnikowski.net> <20221209083104.2469ebd6@kernel.org> 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-20230110_062843_967553_84FB6FB0 X-CRM114-Status: GOOD ( 22.92 ) 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 VHVlLCBKYW4gMTAsIDIwMjMgYXQgMTE6NTQ6MjBBTSBDRVQsIGFya2FkaXVzei5rdWJhbGV3c2tp QGludGVsLmNvbSB3cm90ZToKPj5Gcm9tOiBKaXJpIFBpcmtvIDxqaXJpQHJlc251bGxpLnVzPgo+ PlNlbnQ6IE1vbmRheSwgSmFudWFyeSA5LCAyMDIzIDU6MzAgUE0KPj4KPj5Nb24sIEphbiAwOSwg MjAyMyBhdCAwMzo0MzowMVBNIENFVCwgYXJrYWRpdXN6Lmt1YmFsZXdza2lAaW50ZWwuY29tIHdy b3RlOgo+Pj4+RnJvbTogSmlyaSBQaXJrbyA8amlyaUByZXNudWxsaS51cz4KPj4+PlNlbnQ6IE1v bmRheSwgRGVjZW1iZXIgMTIsIDIwMjIgMjo1OSBQTQo+Pj4+Cj4+Pj5GcmksIERlYyAwOSwgMjAy MiBhdCAwNTozMTowNFBNIENFVCwga3ViYUBrZXJuZWwub3JnIHdyb3RlOgo+Pj4+Pk9uIEZyaSwg OSBEZWMgMjAyMiAxNTowOTowOCArMDEwMCBNYWNpZWsgTWFjaG5pa293c2tpIHdyb3RlOgo+Pj4+ Pj4gT24gMTIvOS8yMDIyIDEyOjA3IFBNLCBKaXJpIFBpcmtvIHdyb3RlOgo+Pj4+Pj4gPiBMb29r aW5nIGF0IHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBjaGlwcywgdGhleSBhbGwgaGF2ZSBtdXBs dGlwbGUKPj4+PkRQTExzCj4+Pj4+PiA+IG9uIGEgZGllLiBBcmthZGl1c3osIGluIHlvdXIgcHJv cG9zZWQgaW1wbGVtZW50YXRpb24sIGRvIHlvdSBtb2RlbAo+Pj4+ZWFjaAo+Pj4+Pj4gPiBEUExM IHNlcGFyYXRlbGx5PyBJZiB5ZXMsIHRoZW4gSSB1bmRlcnN0YW5kIHRoZSB1cmdlbmN5IG9mIG5l ZWQgb2YgYQo+Pj4+Pj4gPiBzaGFyZWQgcGluLiBTbyBhbGwgRFBMTHMgc2hhcmluZyB0aGUgcGlu IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIGNoaXA/Cj4+Pj4+PiA+Cj4+Pj4+PiA+IFF1ZXN0aW9uOiBj YW4gd2UgaGF2ZSBhbiBlbnRpdHksIHRoYXQgd291bGQgYmUgMToxIG1hcHBlZCB0byB0aGUKPj4+ PmFjdHVhbAo+Pj4+Pj4gPiBkZXZpY2UvY2hpcCBoZXJlPyBMZXQncyBjYWxsIGlzICJhIHN5bmNo cm9uaXplciIuIEl0IHdvdWxkIGNvbnRhaW4KPj4+Pj4+ID4gbXVsdGlwbGUgRFBMTHMsIHVzZXIt ZmFjaW5nLXNvdXJjZXMoaW5wdXRfY29ubmVjdG9yKSwKPj4+Pj4+ID4gdXNlci1mYWNpbmctb3V0 cHV0cyhvdXRwdXRfY29ubmVjdG9yKSwgaS9vIHBpbnMuCj4+Pj4+PiA+Cj4+Pj4+PiA+IEFuIGV4 YW1wbGU6Cj4+Pj4+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWU5DSFJPTkla RVIKPj4+Pj4+ID4KPj4+Pj4+ID4KPj4+PuKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkAo+Pj4+Pj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICDilIIKPj4+PuKUggo+Pj4+Pj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICDilIIKPj4+PuKUggo+Pj4+Pj4gPiAgIFN5bmNFIGluIGNvbm5lY3RvciAgICAg ICAgICDilIIgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkAo+ Pj4+4pSCICAgICBTeW5jRSBvdXQgY29ubmVjdG9yCj4+Pj4+PiA+ICAgICAgICAgICAgICAgICDi lIzilIDilIDilIDilJAgICAgICAgICDilIJpbiBwaW4gMSAgICAgIOKUgkRQTExfMSAgIOKUgiAg ICAgb3V0IHBpbgo+Pj4+MeKUgiAgICDilIzilIDilIDilIDilJAKPj4+Pj4+ID4gICAgICAgICAg ICAgICAgIOKUgiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpAo+Pj4+4pSc4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSkICAg4pSCCj4+Pj4+ PiA+ICAgICAgICAgICAgICAgICDilIIgICDilIIgICAgICAgICDilIIgICAgICAgICAgICAgIOKU giAgICAgICAgIOKUggo+Pj4+4pSCICAgIOKUgiAgIOKUggo+Pj4+Pj4gPiAgICAgICAgICAgICAg ICAg4pSU4pSA4pSA4pSA4pSYICAgICAgICAg4pSCICAgICAgICAgICAgICDilIIgICAgICAgICDi lIIKPj4+PuKUgiAgICDilJTilIDilIDilIDilJgKPj4+Pj4+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAg4pSCICAgICAgICAgICAgICDilIIgICAgICAgICDilIIKPj4+PuKUggo+Pj4+ Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAgICAgICAgIOKUjOKUgOKU gOKUpCAgICAgICAgIOKUggo+Pj4+4pSCCj4+Pj4+PiA+ICAgIEdOU1MgaW4gY29ubmVjdG9yICAg ICAgICAgIOKUgiAgICAgICAgICAg4pSCICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lJgKPj4+PuKUggo+Pj4+Pj4gPiAgICAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSQICAgICAg ICAg4pSCaW4gcGluIDIgICDilIIgICAgICAgICAgICAgICAgICBvdXQgcGluCj4+Pj4y4pSCICAg ICBFWFQgU01BIGNvbm5lY3Rvcgo+Pj4+Pj4gPiAgICAgICAgICAgICAgICAg4pSCICAg4pSc4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSYCj4+Pj7ilIIgICAg4pSM4pSA4pSA4pSA4pSQCj4+Pj4+PiA+ICAgICAgICAgICAgICAg ICDilIIgICDilIIgICAgICAgICDilIIKPj4+PuKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUpCAgIOKUggo+Pj4+Pj4gPiAgICAgICAgICAgICAgICAg 4pSU4pSA4pSA4pSA4pSYICAgICAgICAg4pSCICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSC Cj4+Pj7ilIIgICAg4pSCICAg4pSCCj4+Pj4+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUggo+Pj4+4pSCICAgIOKUlOKUgOKU gOKUgOKUmAo+Pj4+Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgICAgICAg ICAgICAgICAgICAgICAgICAgICDilIIKPj4+PuKUggo+Pj4+Pj4gPiAgICBFWFQgU01BIGNvbm5l Y3RvciAgICAgICAgICDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIKPj4+PuKUggo+ Pj4+Pj4gPiAgICAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSQICAgbXV4ICAg4pSCaW4gcGlu IDMgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgIOKUggo+Pj4+4pSCCj4+ Pj4+PiA+ICAgICAgICAgICAgICAgICDilIIgICDilJzilIDilIDilIDilIDilKzilIDilIDilIDi lIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgIOKUgiAgICAgICAgIOKU giAg4pSCCj4+Pj7ilIIKPj4+Pj4+ID4gICAgICAgICAgICAgICAgIOKUgiAgIOKUgiAgICDilIIg ICAg4pSCICAgICAgICAgICDilIIgIOKUgkRQTExfMiAgIOKUgiAg4pSCCj4+Pj7ilIIKPj4+Pj4+ ID4gICAgICAgICAgICAgICAgIOKUlOKUgOKUgOKUgOKUmCAgICDilIIgICAg4pSCICAgICAgICAg ICDilIIgIOKUgiAgICAgICAgIOKUgiAg4pSCCj4+Pj7ilIIKPj4+Pj4+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgIOKUgiAgICDilIIgICAgICAgICAgIOKUlOKUgOKUgOKUpCAgICAgICAgIOKU nOKUgOKUgOKUmAo+Pj4+4pSCCj4+Pj4+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICDilIIg ICAg4pSCICAgICAgICAgICAgICDilIIgICAgICAgICDilIIKPj4+PuKUggo+Pj4+Pj4gPiAgICBF WFQgU01BIGNvbm5lY3RvciAgICAg4pSCICAgIOKUgiAgICAgICAgICAgICAg4pSCICAgICAgICAg 4pSCCj4+Pj7ilIIKPj4+Pj4+ID4gICAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUkCAgICDi lIIgICAg4pSCICAgICAgICAgICAgICDilIIgICAgICAgICDilIIKPj4+PuKUggo+Pj4+Pj4gPiAg ICAgICAgICAgICAgICAg4pSCICAg4pSc4pSA4pSA4pSA4pSA4pSYICAgIOKUgiAgICAgICAgICAg ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYCj4+Pj7ilIIKPj4+Pj4+ID4gICAg ICAgICAgICAgICAgIOKUgiAgIOKUgiAgICAgICAgIOKUggo+Pj4+4pSCCj4+Pj4+PiA+ICAgICAg ICAgICAgICAgICDilJTilIDilIDilIDilJgKPj4+PuKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmAo+Pj4+Pj4gPgo+Pj4+Pj4g PiBEbyBJIGdldCB0aGF0IHJlbW90ZWxseSBjb3JyZWN0Pwo+Pj4+Pj4KPj4+Pj4+IEl0IGxvb2tz IGdvb3QsIGhlbmNlIHR3byBjb3JyZWN0aW9ucyBhcmUgbmVlZGVkOgo+Pj4+Pj4gLSBhbGwgaW5w dXRzIGNhbiBnbyB0byBhbGwgRFBMTHMsIGFuZCBhIHNpbmdsZSBzb3VyY2UgY2FuIGRyaXZlIG1v cmUKPj4+Pj4+ICAgdGhhbiBvbmUgRFBMTAo+Pj4+Pj4gLSBUaGUgZXh0ZXJuYWwgbXV4IGZvciBT TUEgY29ubmVjdG9yIHNob3VsZCBub3QgYmUgYSBwYXJ0IG9mIHRoZQo+Pj4+Pj4gICBTeW5jaHJv bml6ZXIgc3Vic3lzdGVtIC0gSSBiZWxpZXZlIHRoZXJlJ3MgYWxyZWFkeSBhIHNlcGFyYXRlIE1V WAo+Pj4+Pj4gICBzdWJzeXN0ZW0gaW4gdGhlIGtlcm5lbCBhbmQgYWxsIGV4dGVybmFsIGNvbm5l Y3Rpb25zIHNob3VsZCBiZQo+PmhhbmRsZWQKPj4+Pj4+ICAgYnkgYSBkZXZ0cmVlIG9yIGEgc2lt aWxhciBjb25jZXB0Lgo+Pj4+Pj4KPj4+Pj4+IFRoZSBvbmx5ICJtdXhpbmciIHRoaW5nIHRoYXQg Y291bGQgcG90ZW50aWFsbHkgYmUgbW9kZWxlZCBpcyBhCj4+Pj4+PiBzeW5jaHJvbml6ZXIgb3V0 cHV0IHRvIHN5bmNocm9uaXplciBpbnB1dCByZWxhdGlvbi4gU29tZSBzeW5jaHJvbml6ZXJzCj4+ Pj4+PiBkb2VzIHRoYXQgaW50ZXJuYWxseSBhbmQgY2FuIHVzZSB0aGUgb3V0cHV0IG9mIG9uZSBE UExMIGFzIGEgc291cmNlCj4+Zm9yCj4+Pj4+PiBhbm90aGVyLgo+Pj4+Pgo+Pj4+Pk15IGV4cGVy aWVuY2Ugd2l0aCBEVCBhbmQgbXV4ZXMgaXMgcmFwaWRseSBhZ2luZywgaGF2ZSB5b3Ugd29ya2Vk IHdpdGgKPj4+Pj50aG9zZSByZWNlbnRseT8gRnJvbSB3aGF0IEkgcmVtZW1iZXIgdGhlIG11eGVz IHdlcmUgcmVhbGx5Li4gImVtYmVkZGVkIgo+Pj4+PmFuZCBzdGF0aWMgY29tcGFyZWQgdG8gd2hh dCB3ZSB3YW50IGhlcmUuCj4+Pj4KPj4+PldoeSBkbyB5b3UgdGhpbmsgd2UgbmVlZCBzb21ldGhp bmcgIm5vbi1zdGF0aWMiPyBUaGUgbXV4IGlzIHBhcnQgb2YgdGhlCj4+Pj5ib2FyZCwgaXNuJ3Qg aXQ/IFRoYXQgc291bmRzIHF1aXRlIHN0YXRpYyB0byBtZS4KPj4+Pgo+Pj4+Cj4+Pj4+Cj4+Pj4+ VXNpbmcgRFQgbWF5IHdvcmsgbmljZWx5IGZvciBkZWZpbmluZyB0aGUgdG9wb2xvZ3ksIGJ1dCBm b3IgY29uZmlnIHdlCj4+Pj4+c3RpbGwgbmVlZCBhIGRpZmZlcmVudCBtZWNoYW5pc20uCj4+Pj4K Pj4+PiJjb25maWciIG9mIHdoYXQ/IEVhY2ggaXRlbSBpbiB0b3BvbG9neSB3b3VsZCBiZSBjb25m aWd1cmUgYWNjb3JkaW5nIHRvCj4+Pj50aGUgaXRlbSB0eXBlLCB3b24ndCBpdD8KPj4+Pgo+Pj4+ Wy4uLl0KPj4+Cj4+Pgo+Pj5IaSBndXlzLAo+Pj4KPj4+V2UgaGF2ZSBiZWVuIHRyeWluZyB0byBm aWd1cmUgb3V0IGZlYXNpYmlsaXR5IG9mIG5ldyBhcHByb2FjaCBwcm9wb3NlZCBvbgo+Pm91cgo+ Pj5sYXRlc3QgbWVldGluZyAtIHRvIGhhdmUgYSBzaW5nbGUgb2JqZWN0IHdoaWNoIGVuY2Fwc3Vs YXRlcyBtdWx0aXBsZQo+PkRQTExzLgo+Pj4KPj4+UGxlYXNlIGNvbnNpZGVyIGZvbGxvd2luZyBl eGFtcGxlOgo+Pj4KPj4+U2hhcmVkIGNvbW1vbiBpbnB1dHM6Cj4+PmkwIC0gR1BTICAvIGV4dGVy bmFsCj4+PmkxIC0gU01BMSAvIGV4dGVybmFsCj4+PmkyIC0gU01BMiAvIGV4dGVybmFsCj4+Pmkz IC0gTVVYMCAvIGNsayByZWNvdmVyZWQgZnJvbSBQSFkwLlggZHJpdmVuIGJ5IE1BQzAKPj4+aTQg LSBNVVgxIC8gY2xrIHJlY292ZXJlZCBmcm9tIFBIWTEuWCBkcml2ZW4gYnkgTUFDMQo+Pj4KPj4+ Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKPj4+fCBDaGFubmVsIEEgLyBGVzAgICAgICAgICAgICAgKy0tLSsgICAgICAgICAgICAgICAg ICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgICAgICAgICAgICBpMC0tfCAgIHwgICAgICAgICAg ICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICstLS0rICAgICAgICAgICAgICAgfCAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwKPj4+fCBQSFkwLjAtLXwgICB8ICAgICAgICAgICBpMS0tfCBE IHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgIHwgICB8ICAgICAgICAgICAg ICAgfCBQIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCBQSFkwLjEtLXwgTSB8ICAgICAg ICAgICBpMi0tfCBMIHwgICArLS0tKyAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAgICAgIHwgVSB8 ICAgICAgICAgICAgICAgfCBMIHwtLS18ICAgfC0tLXwgUEhZMC4wIHwtLXwKPj4+fCBQSFkwLjIt LXwgWCB8LSstLS0tLS0tLS1pMy0tfCAwIHwgICB8ICAgfCAgICstLS0tLS0tLSsgIHwKPj4+fCAg ICAgICAgIHwgMCB8IHwrLS0tLS0tKyAgICAgfCAgIHwtLS18IE0gfC0tLXwgUEhZMC4xIHwtLXwK Pj4+fCAuLi4gICAtLXwgICB8IHx8IE1VWDEgfC1pNC0tfCAgIHwgICB8IEEgfCAgICstLS0tLS0t LSsgIHwKPj4+fCAgICAgICAgIHwgICB8IHwrLS0tLS0tKyAgICAgKy0tLSsgICB8IEMgfC0tLXwg UEhZMC4yIHwtLXwKPj4+fCBQSFkwLjctLXwgICB8IHwgICAgICAgICBpMC0tfCAgIHwgICB8IDAg fCAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAgICAgICstLS0rIHwgICAgICAgICAgICAgfCAgIHwt LS18ICAgfC0tLXwgLi4uICAgIHwtLXwKPj4+fCAgICAgICAgICAgICAgIHwgICAgICAgICBpMS0t fCBEIHwgICB8ICAgfCAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgfCBQIHwtLS18ICAgfC0tLXwgUEhZMC43IHwtLXwKPj4+fCAgICAgICAgICAgICAgIHwg ICAgICAgICBpMi0tfCBMIHwgICArLS0tKyAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgfCBMIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAg ICAgICAgICAgIFwtLS0tLS0tLS1pMy0tfCAxIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+ fCAgICAgICAgICAgICAgICArLS0tLS0tKyAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAg IHwKPj4+fCAgICAgICAgICAgICAgICB8IE1VWDEgfC1pNC0tfCAgIHwgICAgICAgICAgICAgICAg ICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgICArLS0tLS0tKyAgICAgKy0tLSsgICAgICAgICAg ICAgICAgICAgICAgIHwKPj4+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+fCBDaGFubmVsIEIgLyBGVzEgICAgICAgICAgICAgKy0t LSsgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgICAgICAgICAgICBp MC0tfCAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICAgICAg ICAgICAgICAgICBpMS0tfCBEIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAg ICstLS0rICAgICAgICAgICAgICAgfCBQIHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCBQ SFkxLjAtLXwgICB8ICAgICAgICAgICBpMi0tfCBMIHwgICArLS0tKyAgICstLS0tLS0tLSsgIHwK Pj4+fCAgICAgICAgIHwgICB8ICArLS0tLS0tKyAgICAgfCBMIHwtLS18ICAgfC0tLXwgUEhZMS4w IHwtLXwKPj4+fCBQSFkxLjEtLXwgTSB8ICB8IE1VWDAgfC1pMy0tfCAwIHwgICB8ICAgfCAgICst LS0tLS0tLSsgIHwKPj4+fCAgICAgICAgIHwgVSB8ICArLS0tLS0tKyAgICAgfCAgIHwtLS18IE0g fC0tLXwgUEhZMS4xIHwtLXwKPj4+fCBQSFkxLjItLXwgWCB8LSstLS0tLS0tLS1pNC0tfCAgIHwg ICB8IEEgfCAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAgICAgIHwgMSB8IHwgICAgICAgICAgICAg Ky0tLSsgICB8IEMgfC0tLXwgUEhZMS4yIHwtLXwKPj4+fCAuLi4gICAtLXwgICB8IHwgICAgICAg ICBpMC0tfCAgIHwgICB8IDEgfCAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAgICAgIHwgICB8IHwg ICAgICAgICAgICAgfCAgIHwtLS18ICAgfC0tLXwgLi4uICAgIHwtLXwKPj4+fCBQSFkxLjctLXwg ICB8IHwgICAgICAgICBpMS0tfCBEIHwgICB8ICAgfCAgICstLS0tLS0tLSsgIHwKPj4+fCAgICAg ICAgICstLS0rIHwgICAgICAgICAgICAgfCBQIHwtLS18ICAgfC0tLXwgUEhZMS43IHwtLXwKPj4+ fCAgICAgICAgICAgICAgIHwgICAgICAgICBpMi0tfCBMIHwgICArLS0tKyAgICstLS0tLS0tLSsg IHwKPj4+fCAgICAgICAgICAgICAgIHwrLS0tLS0tKyAgICAgfCBMIHwgICAgICAgICAgICAgICAg ICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgIHx8IE1VWDAgfC1pMy0tfCAxIHwgICAgICAgICAg ICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgIHwrLS0tLS0tKyAgICAgfCAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgIFwtLS0tLS0tLS1pNC0tfCAg IHwgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+fCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKy0tLSsgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+Ky0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4KPj5XaGF0IGlzICJhIGNo YW5uZWwiIGhlcmU/IEFyZSB0aGVzZSAyIGNoYW5uZWxzIHBhcnQgb2YgdGhlIHNhbWUgcGh5c2l2 YWwKPj5jaGlwPyBDb3VsZCB5b3UgYWRkIHRoZSBzeW5jaHJvbml6ZXIgY2hpcC9kZXZpY2UgZW50 aXRpZXMgdG8geW91ciBkcmF3aW5nPwo+Pgo+Cj5Oby4KPkEgIlN5bmNocm9uaXphdGlvbiBDaGFu bmVsIiBvbiBhIHN3aXRjaCB3b3VsZCBhbGxvdyB0byBzZXBhcmF0ZSBncm91cHMKPm9mIHBoeXNp Y2FsIHBvcnRzLiBFYWNoIGNoYW5uZWwvZ3JvdXAgaGFzIG93biAiU3luY2hyb25pemVyIENoaXAi LCB3aGljaCBpcwo+dXNlZCB0byBkcml2ZSBQSFkgY2xvY2tzIG9mIHRoYXQgZ3JvdXAuCj4KPiJT eW5jaHJvbml6ZXIgY2hpcCIgd291bGQgYmUgdGhlIDIgRFBMTHMgb24gb2xkIGRyYXcsIHNvbWV0 aGluZyBsaWtlIHRoaXM6Cj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj58IENoYW5uZWwgQSAvIEZXMCAgICAgICAgKy0tLS0t LS0tLS0tLS0rICAgKy0tLSsgICArLS0tLS0tLS0rICB8Cj58ICAgICAgICAgICAgICAgICAgICBp MC0tfFN5bmNocm9uaXplcjB8LS0tfCAgIHwtLS18IFBIWTAuMCB8LS18Cj58ICAgICAgICAgKy0t LSsgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgfCAgIHwgICArLS0tLS0tLS0rICB8Cj58IFBI WTAuMC0tfCAgIHwgICAgICBpMS0tfCAgICAgICAgICAgICB8LS0tfCBNIHwtLS18IFBIWTAuMSB8 LS18Cj58ICAgICAgICAgfCAgIHwgICAgICAgICAgfCArLS0tLS0rICAgICB8ICAgfCBBIHwgICAr LS0tLS0tLS0rICB8Cj58IFBIWTAuMS0tfCBNIHwgICAgICBpMi0tfCB8RFBMTDB8ICAgICB8ICAg fCBDIHwtLS18IFBIWTAuMiB8LS18Cj58ICAgICAgICAgfCBVIHwgICAgICAgICAgfCArLS0tLS0r ICAgICB8ICAgfCAwIHwgICArLS0tLS0tLS0rICB8Cj58IFBIWTAuMi0tfCBYIHwtLSstLS1pMy0t fCArLS0tLS0rICAgICB8LS0tfCAgIHwtLS18IC4uLiAgICB8LS18Cj58ICAgICAgICAgfCAwIHwg IHwgICAgICAgfCB8RFBMTDF8ICAgICB8ICAgfCAgIHwgICArLS0tLS0tLS0rICB8Cj58IC4uLiAg IC0tfCAgIHwgIHwgLy1pNC0tfCArLS0tLS0rICAgICB8LS0tfCAgIHwtLS18IFBIWTAuNyB8LS18 Cj58ICAgICAgICAgfCAgIHwgIHwgfCAgICAgKy0tLS0tLS0tLS0tLS0rICAgKy0tLSsgICArLS0t LS0tLS0rICB8Cj58IFBIWTAuNy0tfCAgIHwgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8Cj58ICAgICAgICAgKy0tLSsgIHwgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4rLS0tLS0tLS0tLS0tLS0tLXwtfC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj58IENoYW5uZWwgQiAvIEZXMXwg fCAgICAgKy0tLS0tLS0tLS0tLS0rICAgKy0tLSsgICArLS0tLS0tLS0rICB8Cj58ICAgICAgICAg ICAgICAgIHwgfCBpMC0tfFN5bmNocm9uaXplcjF8LS0tfCAgIHwtLS18IFBIWTEuMCB8LS18Cj58 ICAgICAgICAgKy0tLSsgIHwgfCAgICAgfCAgICAgICAgICAgICB8ICAgfCAgIHwgICArLS0tLS0t LS0rICB8Cj58IFBIWTEuMC0tfCAgIHwgIHwgfCBpMS0tfCAgICAgICAgICAgICB8LS0tfCBNIHwt LS18IFBIWTEuMSB8LS18Cj58ICAgICAgICAgfCAgIHwgIHwgfCAgICAgfCArLS0tLS0rICAgICB8 ICAgfCBBIHwgICArLS0tLS0tLS0rICB8Cj58IFBIWTEuMS0tfCBNIHwgIHwgfCBpMi0tfCB8RFBM TDB8ICAgICB8ICAgfCBDIHwtLS18IFBIWTEuMiB8LS18Cj58ICAgICAgICAgfCBVIHwgIHwgfCAg ICAgfCArLS0tLS0rICAgICB8ICAgfCAxIHwgICArLS0tLS0tLS0rICB8Cj58IFBIWTEuMi0tfCBY IHwgIFwtfC1pMy0tfCArLS0tLS0rICAgICB8LS0tfCAgIHwtLS18IC4uLiAgICB8LS18Cj58ICAg ICAgICAgfCAxIHwgICAgfCAgICAgfCB8RFBMTDF8ICAgICB8ICAgfCAgIHwgICArLS0tLS0tLS0r ICB8Cj58IC4uLiAgIC0tfCAgIHwtLS0tKy1pNC0tfCArLS0tLS0rICAgICB8LS0tfCAgIHwtLS18 IFBIWTEuNyB8LS18Cj58ICAgICAgICAgfCAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rICAg Ky0tLSsgICArLS0tLS0tLS0rICB8Cj58IFBIWTEuNy0tfCAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj58ICAgICAgICAgKy0tLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj5BbHNvLCBw bGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgaXMgYW4gZXhhbXBsZSwgdGhlcmUgY291bGQgYmUgZWFz aWx5IDQKPihvciBtb3JlKSBjaGFubmVscyB3aXJlZCBzaW1pbGFybHkuCgoKR29vZC4gU28gdGhl cmUgYXJlIDIgc3luY2hyb25pemVycyBvdXQgdGhlcmUsIGVhY2ggaGFzIGEgbGlzdCBvZiBwaW5z CmFuZCBjb250YWluIG11bHRpcGxlIGRwbGxzLiAxIHN5bmNocm9uaXplciBpcyAxIGRldmljZS4g Tm8gcGluIHNoYXJpbmcKYmV0d2VlbiBkZXZpY2VzLCBqdXN0IGJldHdlZW4gZHBsbHMgaW5zaWRl IG9uZSBkZXZpY2UuIFRoYXQgZWxpbWluYXRlcwp0aGlzIG9kZCBjb25jZXB0IG9mIGZseWluZyBw aW4uIEdvb2QuCgoKPgo+Pgo+Pj4KPj4+VGhpcyBpcyBhIHNpbXBsaWZpZWQgbmV0d29yayBzd2l0 Y2ggYm9hcmQgZXhhbXBsZS4KPj4+SXQgaGFzIDIgc3luY2hyb25pemF0aW9uIGNoYW5uZWxzLCB3 aGVyZSBlYWNoIGNoYW5uZWw6Cj4+Pi0gcHJvdmlkZXMgY2xrIHRvIDggUEhZcyBkcml2ZW4gYnkg c2VwYXJhdGVkIE1BQyBjaGlwcywKPj4+LSBjb250cm9scyAyIERQTExzLgo+Pj4KPj4+QmFzaWNh bGx5IG9ubHkgZ2l2ZW4gRlcgaGFzIGNvbnRyb2wgb3ZlciBpdHMgUEhZcywgc28gYWxzbyBhIGNv bnRyb2wgb3Zlcgo+Pml0J3MKPj4+TVVYIGlucHV0cy4KPj4+QWxsIGV4dGVybmFsIHNvdXJjZXMg YXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBjaGFubmVscy4KPj4+Cj4+PlRoaXMgaXMgd2h5IHdlIGJl bGlldmUgaXQgaXMgbm90IGJlc3QgaWRlYSB0byBlbmNsb3NlIG11bHRpcGxlIERQTExzIHdpdGgK Pj5vbmUKPj4+b2JqZWN0Ogo+Pj4tIHNvdXJjZXMgYXJlIHNoYXJlZCBldmVuIGlmIERQTExzIGFy ZSBub3QgYSBzaW5nbGUgc3luY2hyb25pemVyIGNoaXAsCj4+Pi0gY29udHJvbCBvdmVyIHNwZWNp ZmljIE1VWCB0eXBlIGlucHV0IHNoYWxsIGJlIGNvbnRyb2xsYWJsZSBmcm9tCj4+ZGlmZmVyZW50 Cj4+PmRyaXZlci9maXJtd2FyZSBpbnN0YW5jZXMuCj4+Pgo+Pj5BcyB3ZSBrbm93IHRoZSBwcm9w b3NhbCBvZiBoYXZpbmcgbXVsdGlwbGUgRFBMTHMgaW4gb25lIG9iamVjdCB3YXMgYSB0cnkKPj50 bwo+Pj5zaW1wbGlmeSBjdXJyZW50bHkgaW1wbGVtZW50ZWQgc2hhcmVkIHBpbnMuIFdlIGZ1bGx5 IHN1cHBvcnQgaWRlYSBvZgo+PmhhdmluZwo+Pj5pbnRlcmZhY2VzIGFzIHNpbXBsZSBhcyBwb3Nz aWJsZSwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgdGhleSBzaGFsbCBiZQo+PmZsZXhpYmxlCj4+PmVu b3VnaCB0byBzZXJ2ZSBtYW55IHVzZSBjYXNlcy4KPj4+Cj4+PlJpZ2h0IG5vdyB0aGUgdXNlIGNh c2Ugb2Ygc2luZ2xlICJzeW5jaHJvbml6ZXIgY2hpcCIgaXMgcG9zc2libGUgKDIgRFBMTHMKCkJ0 dywgZml4IHlvdXIgZW1haWwgY2xpZW50IG5vdCB0byBtYW5nbGUgdGhlIHRleHQgeW91IHJlcGx5 IHRvIHdpdGggbGluZQpicmVha3MgbGlrZSB0aGlzIG9uZS4KCgo+PndpdGgKPj4+c2hhcmVkIGlu cHV0cyksIGFzIHdlbGwgYXMgbXVsdGlwbGUgc3luY2hyb25pemVyIGNoaXBzIHdpdGggc2hhcmVk IGlucHV0cy4KPj4+Cj4+PklmIHdlIHdvdWxkIGVudGlyZWx5IGdldCByaWQgb2Ygc2hhcmluZyBw aW5zIGlkZWEgYW5kIGluc3RlYWQgYWxsb3dlZCBvbmx5Cj4+dG8KPj4+aGF2ZSBtdWx0aXBsZSBE UExMcyBpbiBvbmUgb2JqZWN0LCB3ZSB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIHByb2JsZW0gd2hl cmUKPj4+Y2hhbmdlIG9uIG9uZSBpbnB1dCBpcyBicmFraW5nIGFub3RoZXIgInN5bmNocm9uaXpl ciBjaGlwIiBpbnB1dC4KPj4+SS5lLiBjb25zaWRlcmluZyBhYm92ZSBzY2hlbWUsIHVzZXIgY29u ZmlndXJlZCBib3RoIGNoYW5uZWxzIHRvIHVzZSBTTUExCj4+MU1Iei4KPj4+SWYgU01BMSBpbnB1 dCBpcyBjaGFuZ2VkIHRvIDEwTUh6LCBhbGwgRFBMTHMgYXJlIGFmZmVjdGVkLCB0aHVzIGFsbCB1 c2luZwo+PnRoYXQKPj4KPj5Zb3Ugc2F5ICJTTUExIGlucHV0ICppcyBjaGFuZ2VkKiIuIENvdWxk IHlvdSBhZGQgdG8geW91ciBkcmF3aW5nOgo+PjEpIFdobyBpcyB0aGUgb25lIHRyaWdnZXJpbmcg dGhlIGNoYW5nZS4KPj4yKSBFbnRpdHkgdGhhdCBtYW5hZ2VzIHRoZSBTTUEgaW5wdXQgYW5kIGFw cGxpZXMgdGhlIGNvbmZpZ3VyYXRpb24uCj4+Cj4KPkEgdXNlciBvciBzb21lIHRvb2wsIHRoaXMg Y2hhbmdlIHJlcXVpcmVzIHRvIHN3aXRjaCBhIGZyZXF1ZW5jeSBvbiBhIHNpZ25hbAo+Z2VuZXJh dG9yIGNvbm5lY3RlZCB0byB0aGF0IFNNQTEuIFdoYXRldmVyIHdvdWxkIG1ha2UgdGhlIGNoYW5n ZSBpcyBhbiBleHRlcm5hbAo+ZW50aXR5IGhlcmUuIFRoZSBkcmF3IHNob3cgY29ubmVjdGlvbnMg b24gYm9hcmQsIGRvbid0IHNlZSBhIHBvaW50IG9uIGhhdmluZyBhCj5leHRlcm5hbCBzaWduYWwg Z2VuZXJhdG9yIG9yIHVzZXIgY29ubmVjdGVkIHRvIHRoZSBib2FyZCA6KQo+Cj5JZiBzb21ldGhp bmcgaXMgbm90IGNsZWFyLCB3ZSBjb3VsZCBwcmVwYXJlIHNvbWUgZGlmZmVyZW50IGRyYXcsIHBs ZWFzZSBqdXN0Cj5sZXQgbWUga25vdyB3aGF0IGV4YWN0bHkgd2Ugd2FudCB0byBzZWUuIEl0IHNv dW5kIGxpa2UgYSBzZXF1ZW5jZSBkaWFncmFtPwoKCkkgdGhpbmsgSSBnb3QgaXQuIFRoZSBwaW5z IGFyZSBzaGFyZWQgYmV0d2VlbiBEUExMUyB3aXRoaW4gc2luZ2xlCnN5bmNocm9uaXplciBlbnRp dHkuIFRoYXQgY2xlYXJzIHVwIG15IG1vZGVsaW5nIGNvbmNlcm5zLiBBbHNvIGl0IG1ha2VzCnlv dXIgY29kZSBtdWNoIHNpbXBsaWVyLCB5b3UgZG9uJ3QgbmVlZCBzcGVjaWFsIHNoYXJlZCBwaW4g YmVhc3Qgd2l0aApyZWZlcmVuY2UgY291bnRpbmcgZXRjLiBZb3UganVzdCBoYXZlIGEgcGluIHdp dGggc3luY2hyb25pemVyIGVudGl0eSBhcwpvd25lciBhbmQgZXhwb3NlIHRoZSBsaW5rYWdlIGlu c2lkZSB0aGlzIHN5bmNocm9uaXplciBlbnRpdHkgYmV0d2VlbgppbmRpdmlkdWFsIERQTExzIGFu ZCBwaW5zLgoKCj4KPlRoYW5rcyEKPkFya2FkaXVzego+Cj4+Cj4+PmlucHV0IHNoYWxsIGJlIG5v dGlmaWVkLCBhcyBsb25nIGFzIHRoYXQgaW5wdXQgaXMgc2hhcmVkLgo+Pj5Gb3IgdGhlIGRyaXZl cnMgdGhhdCBoYXZlIHNpbmdsZSBwb2ludCBvZiBjb250cm9sIG92ZXIgZHBsbCwgdGhleSBtaWdo dAo+Pmp1c3QKPj4+c2tpcCB0aG9zZSByZXF1ZXN0cy4gQnV0IGlmIHRoZXJlIGFyZSBtdWx0aXBs ZSBmaXJtd2FyZSBpbnN0YW5jZXMKPj5jb250cm9sbGluZwo+Pj5tdWx0aXBsZSBEUExMcywgdGhl eSB3b3VsZCBwcm9jZXNzIGl0IGluZGVwZW5kZW50bHkuCj4+Pgo+Pj5DdXJyZW50IGltcGxlbWVu dGF0aW9uIGlzIHRoZSBtb3N0IGZsZXhpYmxlIGFuZCBsZWFzdCBjb21wbGV4IGZvciB0aGUKPj5s ZXZlbCBvZgo+Pj5mbGV4aWJpbGl0eSBpdCBwcm92aWRlcy4KPj4+Cj4+PkJSLCBIYXBweSBuZXcg eWVhciEKPj4+QXJrYWRpdXN6CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==