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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85724C433F5 for ; Fri, 29 Oct 2021 16:45:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5C91D611AE for ; Fri, 29 Oct 2021 16:45:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229712AbhJ2QsN (ORCPT ); Fri, 29 Oct 2021 12:48:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229607AbhJ2QsM (ORCPT ); Fri, 29 Oct 2021 12:48:12 -0400 Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54491C061570; Fri, 29 Oct 2021 09:45:44 -0700 (PDT) Received: by mail-pf1-x42d.google.com with SMTP id l1so3337879pfu.5; Fri, 29 Oct 2021 09:45:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=LZugGOHIA7M2mY9thG3e663xJ8VDC6VN4707A7yp6kk=; b=PmjHIWqDZmT0dobSlGyGp7/HzK7zi2f478pFv3F7xEpXuJEUg4NpoGFDvrXHLdUh1Z dslI8ul0LAYgnSr0HbbRzIFZejthb2HLSic2gRE8Cn3K8s3/euuIyR6Jmy+GThJMTTSE 3npX1FdMhhZG8VPyc/soHOkklZwiBReKPR/o6yFZP7qgLU5aVJHcHKXnqntxECwX+ZKo AqjtKVNUD4RDkYK0p6cFM/CxZGIV7VjTHk1Rla1nRdJUwdlWUre2ki7nQo6FNKZtLdCF G2y92i4cUgFdbasbMv3DdG09o4ZYGR1K2/zOAO8OqAQ8GbOBxWEa7+hQjJDT75MxeeRW rHfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=LZugGOHIA7M2mY9thG3e663xJ8VDC6VN4707A7yp6kk=; b=qparMR4hZvuPuZvhRCHT7mbqrstVus9BjJoKx8oc4T+t1Fo2cB177B/Wqa6qSXP3ii SaHUfQU7GXO/msehoHuwmpUrH7QBBLLWFTUU1gGeiWsOzKdeQwkyuxUo3D8rUk7FNtwp KTT7GF71qbK8PO95QRsF0/usKv9doE0ZFwfW0VG1UjrNpJYNz906kz/vVaGGYNpvI6GB xtmOBLPbW7Idm3mc3FYKfIJDiyC7Nv45lshGgTwtFS+3sOVWollLTj8jsVwF5izlp42Q ssq8voFPbjJ5lgKZWj8tA9vIQKoheDCjYUskhFwBwXrv4dOlna7QTUwHI9UcYpYu9UsI DyVw== X-Gm-Message-State: AOAM533fY2bcHfAX/LOh8PFYl6IkmtfergQ+6oWofWEMMs2K4At3GGkB WvRZBer51OAlHT2c7+UXJ4Q= X-Google-Smtp-Source: ABdhPJw7yL6uMrjTOUNYhN/1UQ4p/zTa44Abr2yg41XBrF2RtZPWkd0XWU4tJAfEJqiOzNEgu6zOug== X-Received: by 2002:a05:6a00:2186:b0:473:5a61:a7f6 with SMTP id h6-20020a056a00218600b004735a61a7f6mr11881462pfi.15.1635525943754; Fri, 29 Oct 2021 09:45:43 -0700 (PDT) Received: from [10.67.48.245] ([192.19.223.252]) by smtp.googlemail.com with ESMTPSA id k18sm5997631pff.66.2021.10.29.09.45.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 29 Oct 2021 09:45:43 -0700 (PDT) Subject: Re: [PATCH 3/3] watchdog: bcm7038_wdt: support BCM4908 SoC To: Rob Herring , =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= Cc: Florian Fainelli , Wim Van Sebroeck , Guenter Roeck , bcm-kernel-feedback-list@broadcom.com, linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-mips@vger.kernel.org, =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= References: <20211028093059.32535-1-zajec5@gmail.com> <20211028093059.32535-3-zajec5@gmail.com> <9d57d026-19f3-e92d-4c02-d7e8e2c2bc25@gmail.com> From: Florian Fainelli Message-ID: <1df7e7cd-aa4c-c692-ff7f-8ee27780a6a9@gmail.com> Date: Fri, 29 Oct 2021 09:45:40 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On 10/29/21 6:03 AM, Rob Herring wrote: > On Fri, Oct 29, 2021 at 01:39:02PM +0200, Rafał Miłecki wrote: >> [Rob: please kindly comment on this] >> >> On 28.10.2021 18:29, Florian Fainelli wrote: >>> On 10/28/21 2:30 AM, Rafał Miłecki wrote: >>>> From: Rafał Miłecki >>>> >>>> Hardware supported by this driver goes back to the old bcm63xx days. It >>>> was then reused in BCM7038 and later also in BCM4908. >>>> >>>> Depending on SoC model registers layout differs a bit. This commit >>>> introduces support for per-chipset registers offsets & adds BCM4908 >>>> layout. >>>> >>>> Later on BCM63xx SoCs support should be added too (probably as platform >>>> devices due to missing DT). Eventually this driver should replace >>>> bcm63xx_wdt.c. >>>> >>>> Signed-off-by: Rafał Miłecki >>>> --- >>> >>> [snip] >>> >>>> + >>>> +static const u16 bcm7038_wdt_regs_bcm4908[] = { >>>> + [BCM63XX_WDT_REG_DEFVAL] = 0x28, >>>> + [BCM63XX_WDT_REG_CTL] = 0x2c, >>>> + [BCM63XX_WDT_REG_SOFTRESET] = 0x34, >>> >>> I don't understand what you are doing here and why you are not >>> offsetting the "reg" property appropriately when you create your >>> bcm4908-wdt Device Tree node such that the base starts at 0, and the >>> existing driver becomes usable as-is. This does not make any sense to me >>> when it is obviously the simplest way to make the driver "accept" the >>> resource being passed. >> >> I believe that DT binding should cover the whole hardware block and >> describe it (here: use proper compatible to allow recognizing block >> variant). >> >> That's because (as far as I understand) DT should be used to describe >> hardware as closely as possible. I think it shouldn't be adjusted to >> make mapping match Linux's driver implementation. >> >> >> So if: >> 1. Hardware block is mapped at 0xff800400 >> 2. It has interesting registers at 0xff800428 and 0xff80042c >> >> I think mapping should use: >> reg = <0xff800400 0x3c>; >> even if we don't use the first N registers. >> >> That way, at some point, you can extend Linux (or whatever) driver to >> use extra registers without reworking the whole binding. That's why I >> think we need to map whole hardware block & handle different registers >> layouts in a driver. > > Yes, that's the correct thing to do. So in the future if we happen to want to manage the hardware timers in that block, they would be part of the watchdog driver? I am fairly sure they won't be, so you will be creating a composite driver/MFD to separate out the functions, more likely. So you might as well create sub-nodes. > > The question is whether you'd need sub nodes for the other functions. > Folks tend to want to have sub nodes for convenience which isn't really > needed and then requires a DT update ('cause they add nodes as adding > drivers). Sorry but not, this is getting completely ridiculous, the > > Based on the registers, you really don't need sub nodes here. I sort of disagree here, the watchdog is a part of a sundry timer block here, but it is logically broken up into different parts and if if I were to imagine how this would map into different drivers, I can easily see that we would have: - a driver to manage the timer interrupt controller - a driver to manage each of the 3 hardware timers, be they clockevent or else - a driver to manage the watchdog The simplest way to get there, and also because these same timer blocks are actually spread in other parts of STB chips just like the watchdog is, but in a different layout where they stand on their own was the main drive for defining the bcm7038_wdt binding the way it was. Rafal, I appreciate that you are trying to leverage the bcm7038_wdt driver and this is better than the previous patch set, but I really do not see why having the watchdog driver not manage the *exact* subset of the register space needed (starting at 0x28) is not being done. -- 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9466AC433EF for ; Fri, 29 Oct 2021 16:47:23 +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 5B46660F92 for ; Fri, 29 Oct 2021 16:47:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5B46660F92 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-Transfer-Encoding:Content-Type: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=6uck7EzGC2USa8NM3PYgvyMRXJ5xOjUY6q+bTnuDk6Q=; b=LoZZSgTmpnp+jAcHkbi4V74eMX GcnHPSTDv2u0j1hv4luVuGBUhRO5wRQmkhp/dsHwwhHgVuI7VxY3XfDoBB2HOEDS+yQTAc7ITy8bM blE8zHHUuxUXR+zGv5q/0zjQBn0HkPhp3o81rIr/WjucJz2Eqqwbo6gCIgeqxe78dNHVTjlktg9d9 6GSUkfNPbVIj50mg3HpIqNGhOmqUr3u2R7kbvd2sSgSF6n7yXaF2XRZVXXjNClFLxj363ko+eZ3bG yPN1nBnMwPcm9wdHE0jEFL1/5HdpYshg/UTxxoIflWjuKGNh5OJB81DyYIMBS45zve8nz7rhfMOFO n36vmsoQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mgV0n-00BTo4-8b; Fri, 29 Oct 2021 16:45:49 +0000 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mgV0j-00BTne-IY for linux-arm-kernel@lists.infradead.org; Fri, 29 Oct 2021 16:45:47 +0000 Received: by mail-pf1-x42c.google.com with SMTP id v193so9759025pfc.4 for ; Fri, 29 Oct 2021 09:45:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=LZugGOHIA7M2mY9thG3e663xJ8VDC6VN4707A7yp6kk=; b=PmjHIWqDZmT0dobSlGyGp7/HzK7zi2f478pFv3F7xEpXuJEUg4NpoGFDvrXHLdUh1Z dslI8ul0LAYgnSr0HbbRzIFZejthb2HLSic2gRE8Cn3K8s3/euuIyR6Jmy+GThJMTTSE 3npX1FdMhhZG8VPyc/soHOkklZwiBReKPR/o6yFZP7qgLU5aVJHcHKXnqntxECwX+ZKo AqjtKVNUD4RDkYK0p6cFM/CxZGIV7VjTHk1Rla1nRdJUwdlWUre2ki7nQo6FNKZtLdCF G2y92i4cUgFdbasbMv3DdG09o4ZYGR1K2/zOAO8OqAQ8GbOBxWEa7+hQjJDT75MxeeRW rHfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=LZugGOHIA7M2mY9thG3e663xJ8VDC6VN4707A7yp6kk=; b=7FEmEPOg0IQt5n7tp338t7JiDM5ys4wEQ18ivDE2kzXehJgrhsCi2JXE08YI9GE0WX 3vHJkslTCMxbPEdApr4AxWxbRuajUVTvSUJBdcN5mJ10l8UP++n9ylpC7nDcjtCaiE6x QBKzHWcFRhQOLlLLzuLwfRGMKslJKXkKxg0Sngm4ld3YiKGOP1M62oRIKoiH3lrZ73KR mIAwuWE0H/jA4KO/Uh4Hpda8dAyY1EVyDhoE4jejLFDxwuHFYYb1c3U5THbznrbeKzI2 6Qn0XMn65uJBwDlMVeRlcEfGR5J9VMvduQYWSxVJ7YDZwz9brHvREDwglZobXfJVU1fW o6pw== X-Gm-Message-State: AOAM533zfWhvUy9Dp+/S3ud/fPPkFuFczak+TvlKbcSb37GaqL6rdmv1 mD4LFKl4mosCYkrbMQnZV3U= X-Google-Smtp-Source: ABdhPJw7yL6uMrjTOUNYhN/1UQ4p/zTa44Abr2yg41XBrF2RtZPWkd0XWU4tJAfEJqiOzNEgu6zOug== X-Received: by 2002:a05:6a00:2186:b0:473:5a61:a7f6 with SMTP id h6-20020a056a00218600b004735a61a7f6mr11881462pfi.15.1635525943754; Fri, 29 Oct 2021 09:45:43 -0700 (PDT) Received: from [10.67.48.245] ([192.19.223.252]) by smtp.googlemail.com with ESMTPSA id k18sm5997631pff.66.2021.10.29.09.45.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 29 Oct 2021 09:45:43 -0700 (PDT) Subject: Re: [PATCH 3/3] watchdog: bcm7038_wdt: support BCM4908 SoC To: Rob Herring , =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= Cc: Florian Fainelli , Wim Van Sebroeck , Guenter Roeck , bcm-kernel-feedback-list@broadcom.com, linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-mips@vger.kernel.org, =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= References: <20211028093059.32535-1-zajec5@gmail.com> <20211028093059.32535-3-zajec5@gmail.com> <9d57d026-19f3-e92d-4c02-d7e8e2c2bc25@gmail.com> From: Florian Fainelli Message-ID: <1df7e7cd-aa4c-c692-ff7f-8ee27780a6a9@gmail.com> Date: Fri, 29 Oct 2021 09:45:40 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.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-20211029_094545_641179_C5D69B96 X-CRM114-Status: GOOD ( 33.14 ) 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 T24gMTAvMjkvMjEgNjowMyBBTSwgUm9iIEhlcnJpbmcgd3JvdGU6Cj4gT24gRnJpLCBPY3QgMjks IDIwMjEgYXQgMDE6Mzk6MDJQTSArMDIwMCwgUmFmYcWCIE1pxYJlY2tpIHdyb3RlOgo+PiBbUm9i OiBwbGVhc2Uga2luZGx5IGNvbW1lbnQgb24gdGhpc10KPj4KPj4gT24gMjguMTAuMjAyMSAxODoy OSwgRmxvcmlhbiBGYWluZWxsaSB3cm90ZToKPj4+IE9uIDEwLzI4LzIxIDI6MzAgQU0sIFJhZmHF giBNacWCZWNraSB3cm90ZToKPj4+PiBGcm9tOiBSYWZhxYIgTWnFgmVja2kgPHJhZmFsQG1pbGVj a2kucGw+Cj4+Pj4KPj4+PiBIYXJkd2FyZSBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIgZ29lcyBi YWNrIHRvIHRoZSBvbGQgYmNtNjN4eCBkYXlzLiBJdAo+Pj4+IHdhcyB0aGVuIHJldXNlZCBpbiBC Q003MDM4IGFuZCBsYXRlciBhbHNvIGluIEJDTTQ5MDguCj4+Pj4KPj4+PiBEZXBlbmRpbmcgb24g U29DIG1vZGVsIHJlZ2lzdGVycyBsYXlvdXQgZGlmZmVycyBhIGJpdC4gVGhpcyBjb21taXQKPj4+ PiBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHBlci1jaGlwc2V0IHJlZ2lzdGVycyBvZmZzZXRzICYg YWRkcyBCQ000OTA4Cj4+Pj4gbGF5b3V0Lgo+Pj4+Cj4+Pj4gTGF0ZXIgb24gQkNNNjN4eCBTb0Nz IHN1cHBvcnQgc2hvdWxkIGJlIGFkZGVkIHRvbyAocHJvYmFibHkgYXMgcGxhdGZvcm0KPj4+PiBk ZXZpY2VzIGR1ZSB0byBtaXNzaW5nIERUKS4gRXZlbnR1YWxseSB0aGlzIGRyaXZlciBzaG91bGQg cmVwbGFjZQo+Pj4+IGJjbTYzeHhfd2R0LmMuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBSYWZh xYIgTWnFgmVja2kgPHJhZmFsQG1pbGVja2kucGw+Cj4+Pj4gLS0tCj4+Pgo+Pj4gW3NuaXBdCj4+ Pgo+Pj4+ICsKPj4+PiArc3RhdGljIGNvbnN0IHUxNiBiY203MDM4X3dkdF9yZWdzX2JjbTQ5MDhb XSA9IHsKPj4+PiArCVtCQ002M1hYX1dEVF9SRUdfREVGVkFMXQk9IDB4MjgsCj4+Pj4gKwlbQkNN NjNYWF9XRFRfUkVHX0NUTF0JCT0gMHgyYywKPj4+PiArCVtCQ002M1hYX1dEVF9SRUdfU09GVFJF U0VUXQk9IDB4MzQsCj4+Pgo+Pj4gSSBkb24ndCB1bmRlcnN0YW5kIHdoYXQgeW91IGFyZSBkb2lu ZyBoZXJlIGFuZCB3aHkgeW91IGFyZSBub3QKPj4+IG9mZnNldHRpbmcgdGhlICJyZWciIHByb3Bl cnR5IGFwcHJvcHJpYXRlbHkgd2hlbiB5b3UgY3JlYXRlIHlvdXIKPj4+IGJjbTQ5MDgtd2R0IERl dmljZSBUcmVlIG5vZGUgc3VjaCB0aGF0IHRoZSBiYXNlIHN0YXJ0cyBhdCAwLCBhbmQgdGhlCj4+ PiBleGlzdGluZyBkcml2ZXIgYmVjb21lcyB1c2FibGUgYXMtaXMuIFRoaXMgZG9lcyBub3QgbWFr ZSBhbnkgc2Vuc2UgdG8gbWUKPj4+IHdoZW4gaXQgaXMgb2J2aW91c2x5IHRoZSBzaW1wbGVzdCB3 YXkgdG8gbWFrZSB0aGUgZHJpdmVyICJhY2NlcHQiIHRoZQo+Pj4gcmVzb3VyY2UgYmVpbmcgcGFz c2VkLgo+Pgo+PiBJIGJlbGlldmUgdGhhdCBEVCBiaW5kaW5nIHNob3VsZCBjb3ZlciB0aGUgd2hv bGUgaGFyZHdhcmUgYmxvY2sgYW5kCj4+IGRlc2NyaWJlIGl0IChoZXJlOiB1c2UgcHJvcGVyIGNv bXBhdGlibGUgdG8gYWxsb3cgcmVjb2duaXppbmcgYmxvY2sKPj4gdmFyaWFudCkuCj4+Cj4+IFRo YXQncyBiZWNhdXNlIChhcyBmYXIgYXMgSSB1bmRlcnN0YW5kKSBEVCBzaG91bGQgYmUgdXNlZCB0 byBkZXNjcmliZQo+PiBoYXJkd2FyZSBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLiBJIHRoaW5rIGl0 IHNob3VsZG4ndCBiZSBhZGp1c3RlZCB0bwo+PiBtYWtlIG1hcHBpbmcgbWF0Y2ggTGludXgncyBk cml2ZXIgaW1wbGVtZW50YXRpb24uCj4+Cj4+Cj4+IFNvIGlmOgo+PiAxLiBIYXJkd2FyZSBibG9j ayBpcyBtYXBwZWQgYXQgMHhmZjgwMDQwMAo+PiAyLiBJdCBoYXMgaW50ZXJlc3RpbmcgcmVnaXN0 ZXJzIGF0IDB4ZmY4MDA0MjggYW5kIDB4ZmY4MDA0MmMKPj4KPj4gSSB0aGluayBtYXBwaW5nIHNo b3VsZCB1c2U6Cj4+IHJlZyA9IDwweGZmODAwNDAwIDB4M2M+Owo+PiBldmVuIGlmIHdlIGRvbid0 IHVzZSB0aGUgZmlyc3QgTiByZWdpc3RlcnMuCj4+Cj4+IFRoYXQgd2F5LCBhdCBzb21lIHBvaW50 LCB5b3UgY2FuIGV4dGVuZCBMaW51eCAob3Igd2hhdGV2ZXIpIGRyaXZlciB0bwo+PiB1c2UgZXh0 cmEgcmVnaXN0ZXJzIHdpdGhvdXQgcmV3b3JraW5nIHRoZSB3aG9sZSBiaW5kaW5nLiBUaGF0J3Mg d2h5IEkKPj4gdGhpbmsgd2UgbmVlZCB0byBtYXAgd2hvbGUgaGFyZHdhcmUgYmxvY2sgJiBoYW5k bGUgZGlmZmVyZW50IHJlZ2lzdGVycwo+PiBsYXlvdXRzIGluIGEgZHJpdmVyLgo+IAo+IFllcywg dGhhdCdzIHRoZSBjb3JyZWN0IHRoaW5nIHRvIGRvLgoKU28gaW4gdGhlIGZ1dHVyZSBpZiB3ZSBo YXBwZW4gdG8gd2FudCB0byBtYW5hZ2UgdGhlIGhhcmR3YXJlIHRpbWVycyBpbgp0aGF0IGJsb2Nr LCB0aGV5IHdvdWxkIGJlIHBhcnQgb2YgdGhlIHdhdGNoZG9nIGRyaXZlcj8gSSBhbSBmYWlybHkg c3VyZQp0aGV5IHdvbid0IGJlLCBzbyB5b3Ugd2lsbCBiZSBjcmVhdGluZyBhIGNvbXBvc2l0ZSBk cml2ZXIvTUZEIHRvCnNlcGFyYXRlIG91dCB0aGUgZnVuY3Rpb25zLCBtb3JlIGxpa2VseS4gU28g eW91IG1pZ2h0IGFzIHdlbGwgY3JlYXRlCnN1Yi1ub2Rlcy4KCj4gCj4gVGhlIHF1ZXN0aW9uIGlz IHdoZXRoZXIgeW91J2QgbmVlZCBzdWIgbm9kZXMgZm9yIHRoZSBvdGhlciBmdW5jdGlvbnMuIAo+ IEZvbGtzIHRlbmQgdG8gd2FudCB0byBoYXZlIHN1YiBub2RlcyBmb3IgY29udmVuaWVuY2Ugd2hp Y2ggaXNuJ3QgcmVhbGx5IAo+IG5lZWRlZCBhbmQgdGhlbiByZXF1aXJlcyBhIERUIHVwZGF0ZSAo J2NhdXNlIHRoZXkgYWRkIG5vZGVzIGFzIGFkZGluZyAKPiBkcml2ZXJzKS4KClNvcnJ5IGJ1dCBu b3QsIHRoaXMgaXMgZ2V0dGluZyBjb21wbGV0ZWx5IHJpZGljdWxvdXMsIHRoZQoKPiAKPiBCYXNl ZCBvbiB0aGUgcmVnaXN0ZXJzLCB5b3UgcmVhbGx5IGRvbid0IG5lZWQgc3ViIG5vZGVzIGhlcmUu CgpJIHNvcnQgb2YgZGlzYWdyZWUgaGVyZSwgdGhlIHdhdGNoZG9nIGlzIGEgcGFydCBvZiBhIHN1 bmRyeSB0aW1lciBibG9jawpoZXJlLCBidXQgaXQgaXMgbG9naWNhbGx5IGJyb2tlbiB1cCBpbnRv IGRpZmZlcmVudCBwYXJ0cyBhbmQgaWYgaWYgSQp3ZXJlIHRvIGltYWdpbmUgaG93IHRoaXMgd291 bGQgbWFwIGludG8gZGlmZmVyZW50IGRyaXZlcnMsIEkgY2FuIGVhc2lseQpzZWUgdGhhdCB3ZSB3 b3VsZCBoYXZlOgoKLSBhIGRyaXZlciB0byBtYW5hZ2UgdGhlIHRpbWVyIGludGVycnVwdCBjb250 cm9sbGVyCi0gYSBkcml2ZXIgdG8gbWFuYWdlIGVhY2ggb2YgdGhlIDMgaGFyZHdhcmUgdGltZXJz LCBiZSB0aGV5IGNsb2NrZXZlbnQKb3IgZWxzZQotIGEgZHJpdmVyIHRvIG1hbmFnZSB0aGUgd2F0 Y2hkb2cKClRoZSBzaW1wbGVzdCB3YXkgdG8gZ2V0IHRoZXJlLCBhbmQgYWxzbyBiZWNhdXNlIHRo ZXNlIHNhbWUgdGltZXIgYmxvY2tzCmFyZSBhY3R1YWxseSBzcHJlYWQgaW4gb3RoZXIgcGFydHMg b2YgU1RCIGNoaXBzIGp1c3QgbGlrZSB0aGUgd2F0Y2hkb2cKaXMsIGJ1dCBpbiBhIGRpZmZlcmVu dCBsYXlvdXQgd2hlcmUgdGhleSBzdGFuZCBvbiB0aGVpciBvd24gd2FzIHRoZSBtYWluCmRyaXZl IGZvciBkZWZpbmluZyB0aGUgYmNtNzAzOF93ZHQgYmluZGluZyB0aGUgd2F5IGl0IHdhcy4KClJh ZmFsLCBJIGFwcHJlY2lhdGUgdGhhdCB5b3UgYXJlIHRyeWluZyB0byBsZXZlcmFnZSB0aGUgYmNt NzAzOF93ZHQKZHJpdmVyIGFuZCB0aGlzIGlzIGJldHRlciB0aGFuIHRoZSBwcmV2aW91cyBwYXRj aCBzZXQsIGJ1dCBJIHJlYWxseSBkbwpub3Qgc2VlIHdoeSBoYXZpbmcgdGhlIHdhdGNoZG9nIGRy aXZlciBub3QgbWFuYWdlIHRoZSAqZXhhY3QqIHN1YnNldCBvZgp0aGUgcmVnaXN0ZXIgc3BhY2Ug bmVlZGVkIChzdGFydGluZyBhdCAweDI4KSBpcyBub3QgYmVpbmcgZG9uZS4KLS0KRmxvcmlhbgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=