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,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,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 A3FE0C433DF for ; Wed, 15 Jul 2020 12:17:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7A2502065D for ; Wed, 15 Jul 2020 12:17:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="EKHMfQBU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727951AbgGOMRC (ORCPT ); Wed, 15 Jul 2020 08:17:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726648AbgGOMRB (ORCPT ); Wed, 15 Jul 2020 08:17:01 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1982AC061755 for ; Wed, 15 Jul 2020 05:17:01 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id f7so2471611wrw.1 for ; Wed, 15 Jul 2020 05:17:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=P9+1m3wZiqcpo0cnrnururZIQWEQrhFekUGBts30/fQ=; b=EKHMfQBUPRLnnQQy6i3XNrTIKLvKdaglpd3anIxBP5KtA7V0HujMdXnvEX3vUZo7+H t5fnqFjVnqkUKRH/hlyrsXh79yMI5l92TtpicLz4H/eS9mTJqfDmvttnyNDi2IvvIo3m X5VL7L7f9fqXfDap7ketUgOdL0B4HCZLZjQe/bxYv1YNbr0wJzntZpfsbyOeSVqzdf34 dvmF/viWDyhmQRt9ktn/P9OOl50Cm9AWl1vTRjww8R1nZ+1q4NdkQ6Z6AQNGfGnIR+Gc Hpc+pE7t77YFeWLuHTYM+VBefRVRkEvb2oBUFG6+aHJ97Btx2gu1PdW+KJ1pTNWdB5d1 6Y+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=P9+1m3wZiqcpo0cnrnururZIQWEQrhFekUGBts30/fQ=; b=GiP51/hcmt5w/ubhRtnBFieXRgEAjKNaHi8hXLVP9nNQzwLmIlrnd/fiDxsvzCpPf6 NgkYhg6nYNvc4+/poQsf0PEiikBlqkVoylXsX7x+afVLvaKCAFxlXqwa2i0wCRIyAs27 Il5xcKFRxkMKzY1j0ScwspzUR7ndm3DL8d/araz4DNJl5eCqFByQXlqBMOOLV76P+Sa8 aX6gjoUmuJWUR7rnVXWQNtJ1OTyHA59H8J+A2lbkq2SsGYL2zjl70H2BEYsg3+GOAelj iFKR748/kKZmHjrcSMZ6ly6QS7elUz+rcxx0r+p9Hk5uCRhuYOpKUc9BTFPuaoj+jDaa RMSg== X-Gm-Message-State: AOAM533Gca7NMVIacyB1mfV4fhA0o8BF9MuFZ3Drf7rlbtFdwSEWoKMI NM+t4knQjfzkDY0q8/jlk+k9jQ== X-Google-Smtp-Source: ABdhPJw1RlHdFlCQxqYGIvI7SbhsAtRef67AkGJAHgn0iJW7X2IQ3QQMgUd4z/mr68WLHf9teEyKyA== X-Received: by 2002:a5d:4a84:: with SMTP id o4mr11321706wrq.104.1594815419802; Wed, 15 Jul 2020 05:16:59 -0700 (PDT) Received: from dell ([2.31.163.61]) by smtp.gmail.com with ESMTPSA id p29sm3239215wmi.43.2020.07.15.05.16.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 05:16:59 -0700 (PDT) Date: Wed, 15 Jul 2020 13:16:57 +0100 From: Lee Jones To: "Rafael J. Wysocki" Cc: Viresh Kumar , "Rafael J. Wysocki" , Linux ARM , Linux Kernel Mailing List , Linux PM , Paul Diefenbaugh , Dominik Brodowski , Denis Sadykov Subject: Re: [PATCH 09/13] cpufreq: acpi-cpufreq: Remove unused ID structs Message-ID: <20200715121657.GE3165313@dell> References: <20200714145049.2496163-10-lee.jones@linaro.org> <20200714210340.GJ1398296@dell> <20200715032442.gh2cliiddhv35fdj@vireshk-i7> <20200715032718.2zlo2eurhkpoayya@vireshk-i7> <20200715113433.GB3165313@dell> <20200715115029.GC3165313@dell> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org On Wed, 15 Jul 2020, Rafael J. Wysocki wrote: > On Wed, Jul 15, 2020 at 1:50 PM Lee Jones wrote: > > > > On Wed, 15 Jul 2020, Rafael J. Wysocki wrote: > > > > > On Wed, Jul 15, 2020 at 1:34 PM Lee Jones wrote: > > > > > > > > On Wed, 15 Jul 2020, Rafael J. Wysocki wrote: > > > > > > > > > On Wed, Jul 15, 2020 at 5:27 AM Viresh Kumar wrote: > > > > > > > > > > > > On 15-07-20, 08:54, Viresh Kumar wrote: > > > > > > > On 14-07-20, 22:03, Lee Jones wrote: > > > > > > > > On Tue, 14 Jul 2020, Rafael J. Wysocki wrote: > > > > > > > > > > > > > > > > > On Tue, Jul 14, 2020 at 4:51 PM Lee Jones wrote: > > > > > > > > > > > > > > > > > > > > Can't see them being used anywhere and the compiler doesn't complain > > > > > > > > > > that they're missing, so ... > > > > > > > > > > > > > > > > > > Aren't they needed for automatic module loading in certain configurations? > > > > > > > > > > > > > > > > Any idea how that works, or where the code is for that? > > > > > > > > > > > > > > The MODULE_DEVICE_TABLE() thingy creates a map of vendor-id, > > > > > > > product-id that the kernel keeps after boot (and so there is no static > > > > > > > reference of it for the compiler), later when a device is hotplugged > > > > > > > into the kernel it refers to the map to find the related driver for it > > > > > > > and loads it if it isn't already loaded. > > > > > > > > > > > > > > This has some of it, search for MODULE_DEVICE_TABLE() in it. > > > > > > > Documentation/driver-api/usb/hotplug.rst > > > > > > > > > > > > And you just need to add __maybe_unused to them to suppress the > > > > > > warning. > > > > > > > > > > Wouldn't that cause the compiler to optimize them away if it doesn't > > > > > see any users? > > > > > > > > It looks like they're only unused when !MODULE, > > > > > > OK > > > > > > > in which case optimising them away would be the correct thing to do, no? > > > > It would be good if someone with a little more knowledge could provide > > a second opinion though. I would think (hope) that the compiler would > > be smart enough to see when its actually in use. After all, it is the > > compiler that places the information into the device table. > > > If that is not the case, then the MODULE_DEVICE_TABLE() magic is > > broken and will need fixing. > > I'm not sure why that would be the case? Nor me. In fact, take a look at my latest email. I think I just proved out that it's not broken. The warning is valid and MODULE_DEVICE_TABLE() appears to work just as it should. > > Removing boiler-plate is good, but not at the expense of obfuscation. > > I'm not following you here to be honest. Never mind. It's no longer important. > BTW, I'm wondering if removing the "static" modifier from the > definitions of the structures in question makes the warnings you want > to get rid of go away. I'm sure that it would. But that just alludes to the fact that the tables may be in use elsewhere, which in the case of !MODULE is untrue. That's probably more of a hack than using __maybe_unused. -- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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,HEADER_FROM_DIFFERENT_DOMAINS,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 40B6AC433E0 for ; Wed, 15 Jul 2020 12:18:28 +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 05EBA2065D for ; Wed, 15 Jul 2020 12:18:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="jNgh58Ts"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="EKHMfQBU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05EBA2065D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.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:In-Reply-To:MIME-Version:References:Message-ID: Subject: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=ZOEVsvbjU4f9zy/RLS0XpW+vKdcYy18BUefupqsbDwA=; b=jNgh58Tsk9wcLcZPsfc6GdgPW lZbayWnDN7EDs8wshEJNyWJBCSn+B40e4HngbnyQSzlCBZYCDBLM8Am6WEtcRrf22sDrEvUeEyxRm mdiKaGtiYxwVZbsNK04Ml4YjDBcetCdCbSE081IKbqF/m6zZ97KDvqWoQPNNLOgAQhhZO9sc9CDE7 R/YyTnOw6BLaELxCwLorEjU4Q1WS68Ag0FOScCT+zOjCDbr53DA2ir+D8TVdzuf5OOlvVkwDNeNXd XMpDJLGffhMe386f6LzjTdhDUg86swFulVNv1lZz2Oi+6vLAxfVdcwaN9g2nMcQ6Cga3s7gjaauSp A7d3fMOnA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvgLR-0007i9-8d; Wed, 15 Jul 2020 12:17:05 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvgLN-0007hI-7R for linux-arm-kernel@lists.infradead.org; Wed, 15 Jul 2020 12:17:03 +0000 Received: by mail-wr1-x444.google.com with SMTP id z15so2410601wrl.8 for ; Wed, 15 Jul 2020 05:17:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=P9+1m3wZiqcpo0cnrnururZIQWEQrhFekUGBts30/fQ=; b=EKHMfQBUPRLnnQQy6i3XNrTIKLvKdaglpd3anIxBP5KtA7V0HujMdXnvEX3vUZo7+H t5fnqFjVnqkUKRH/hlyrsXh79yMI5l92TtpicLz4H/eS9mTJqfDmvttnyNDi2IvvIo3m X5VL7L7f9fqXfDap7ketUgOdL0B4HCZLZjQe/bxYv1YNbr0wJzntZpfsbyOeSVqzdf34 dvmF/viWDyhmQRt9ktn/P9OOl50Cm9AWl1vTRjww8R1nZ+1q4NdkQ6Z6AQNGfGnIR+Gc Hpc+pE7t77YFeWLuHTYM+VBefRVRkEvb2oBUFG6+aHJ97Btx2gu1PdW+KJ1pTNWdB5d1 6Y+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=P9+1m3wZiqcpo0cnrnururZIQWEQrhFekUGBts30/fQ=; b=rsx1BqkQulEKpHHMRlmNsyr53rCFzbzLdYpC2prhI9+zJNAQ+hvDCJcG8fMxh1Y2Wy JPAUyZ262b62uM0btxoJhymwTrJXTqGkWwqWW4necF//Kq4CEHlqKCT2gKJlzqlqj+0f uzJkE+1EoBUM6+kHbEhHHk2TG0cim0UZ0iu9ZnU7aWxwdLzD4Y4UsHaA/CgLEmtJOl9H tpjhcNHNzJyoVDm674MAWL3pVm3YFifdIHLBYA5ycA/V91aASOs3mScXo1NEmrZKVChN 0woplD7OMAXl9C+zfyOluOKu4xrro4mbf04YrIaeiPVVmKhpGuAwkTbJtZN6Vcu7GUMN l/Yw== X-Gm-Message-State: AOAM530muNSeF8eQnKl5FWdUGWcgLOqq1n7dS1PldwXdfVUQAjsTASIC yWmCJAqxK2s+ZlTxJI1PhvoW1Q== X-Google-Smtp-Source: ABdhPJw1RlHdFlCQxqYGIvI7SbhsAtRef67AkGJAHgn0iJW7X2IQ3QQMgUd4z/mr68WLHf9teEyKyA== X-Received: by 2002:a5d:4a84:: with SMTP id o4mr11321706wrq.104.1594815419802; Wed, 15 Jul 2020 05:16:59 -0700 (PDT) Received: from dell ([2.31.163.61]) by smtp.gmail.com with ESMTPSA id p29sm3239215wmi.43.2020.07.15.05.16.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 05:16:59 -0700 (PDT) Date: Wed, 15 Jul 2020 13:16:57 +0100 From: Lee Jones To: "Rafael J. Wysocki" Subject: Re: [PATCH 09/13] cpufreq: acpi-cpufreq: Remove unused ID structs Message-ID: <20200715121657.GE3165313@dell> References: <20200714145049.2496163-10-lee.jones@linaro.org> <20200714210340.GJ1398296@dell> <20200715032442.gh2cliiddhv35fdj@vireshk-i7> <20200715032718.2zlo2eurhkpoayya@vireshk-i7> <20200715113433.GB3165313@dell> <20200715115029.GC3165313@dell> 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-20200715_081701_281542_A488F06F X-CRM114-Status: GOOD ( 34.28 ) 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: Denis Sadykov , Linux PM , Viresh Kumar , "Rafael J. Wysocki" , Linux Kernel Mailing List , Paul Diefenbaugh , Linux ARM , Dominik Brodowski 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 T24gV2VkLCAxNSBKdWwgMjAyMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cgo+IE9uIFdlZCwg SnVsIDE1LCAyMDIwIGF0IDE6NTAgUE0gTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4g d3JvdGU6Cj4gPgo+ID4gT24gV2VkLCAxNSBKdWwgMjAyMCwgUmFmYWVsIEouIFd5c29ja2kgd3Jv dGU6Cj4gPgo+ID4gPiBPbiBXZWQsIEp1bCAxNSwgMjAyMCBhdCAxOjM0IFBNIExlZSBKb25lcyA8 bGVlLmpvbmVzQGxpbmFyby5vcmc+IHdyb3RlOgo+ID4gPiA+Cj4gPiA+ID4gT24gV2VkLCAxNSBK dWwgMjAyMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cj4gPiA+ID4KPiA+ID4gPiA+IE9uIFdl ZCwgSnVsIDE1LCAyMDIwIGF0IDU6MjcgQU0gVmlyZXNoIEt1bWFyIDx2aXJlc2gua3VtYXJAbGlu YXJvLm9yZz4gd3JvdGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IE9uIDE1LTA3LTIwLCAwODo1 NCwgVmlyZXNoIEt1bWFyIHdyb3RlOgo+ID4gPiA+ID4gPiA+IE9uIDE0LTA3LTIwLCAyMjowMywg TGVlIEpvbmVzIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gT24gVHVlLCAxNCBKdWwgMjAyMCwgUmFm YWVsIEouIFd5c29ja2kgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBP biBUdWUsIEp1bCAxNCwgMjAyMCBhdCA0OjUxIFBNIExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFy by5vcmc+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQ2Fu J3Qgc2VlIHRoZW0gYmVpbmcgdXNlZCBhbnl3aGVyZSBhbmQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qg Y29tcGxhaW4KPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGF0IHRoZXkncmUgbWlzc2luZywgc28gLi4u Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+IEFyZW4ndCB0aGV5IG5lZWRlZCBm b3IgYXV0b21hdGljIG1vZHVsZSBsb2FkaW5nIGluIGNlcnRhaW4gY29uZmlndXJhdGlvbnM/Cj4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gQW55IGlkZWEgaG93IHRoYXQgd29ya3MsIG9y IHdoZXJlIHRoZSBjb2RlIGlzIGZvciB0aGF0Pwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g VGhlIE1PRFVMRV9ERVZJQ0VfVEFCTEUoKSB0aGluZ3kgY3JlYXRlcyBhIG1hcCBvZiB2ZW5kb3It aWQsCj4gPiA+ID4gPiA+ID4gcHJvZHVjdC1pZCB0aGF0IHRoZSBrZXJuZWwga2VlcHMgYWZ0ZXIg Ym9vdCAoYW5kIHNvIHRoZXJlIGlzIG5vIHN0YXRpYwo+ID4gPiA+ID4gPiA+IHJlZmVyZW5jZSBv ZiBpdCBmb3IgdGhlIGNvbXBpbGVyKSwgbGF0ZXIgd2hlbiBhIGRldmljZSBpcyBob3RwbHVnZ2Vk Cj4gPiA+ID4gPiA+ID4gaW50byB0aGUga2VybmVsIGl0IHJlZmVycyB0byB0aGUgbWFwIHRvIGZp bmQgdGhlIHJlbGF0ZWQgZHJpdmVyIGZvciBpdAo+ID4gPiA+ID4gPiA+IGFuZCBsb2FkcyBpdCBp ZiBpdCBpc24ndCBhbHJlYWR5IGxvYWRlZC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRo aXMgaGFzIHNvbWUgb2YgaXQsIHNlYXJjaCBmb3IgTU9EVUxFX0RFVklDRV9UQUJMRSgpIGluIGl0 Lgo+ID4gPiA+ID4gPiA+IERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvaG90cGx1Zy5yc3QK PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQW5kIHlvdSBqdXN0IG5lZWQgdG8gYWRkIF9fbWF5YmVf dW51c2VkIHRvIHRoZW0gdG8gc3VwcHJlc3MgdGhlCj4gPiA+ID4gPiA+IHdhcm5pbmcuCj4gPiA+ ID4gPgo+ID4gPiA+ID4gV291bGRuJ3QgdGhhdCBjYXVzZSB0aGUgY29tcGlsZXIgdG8gb3B0aW1p emUgdGhlbSBhd2F5IGlmIGl0IGRvZXNuJ3QKPiA+ID4gPiA+IHNlZSBhbnkgdXNlcnM/Cj4gPiA+ ID4KPiA+ID4gPiBJdCBsb29rcyBsaWtlIHRoZXkncmUgb25seSB1bnVzZWQgd2hlbiAhTU9EVUxF LAo+ID4gPgo+ID4gPiBPSwo+ID4gPgo+ID4gPiA+IGluIHdoaWNoIGNhc2Ugb3B0aW1pc2luZyB0 aGVtIGF3YXkgd291bGQgYmUgdGhlIGNvcnJlY3QgdGhpbmcgdG8gZG8sIG5vPwo+ID4KPiA+IEl0 IHdvdWxkIGJlIGdvb2QgaWYgc29tZW9uZSB3aXRoIGEgbGl0dGxlIG1vcmUga25vd2xlZGdlIGNv dWxkIHByb3ZpZGUKPiA+IGEgc2Vjb25kIG9waW5pb24gdGhvdWdoLiAgSSB3b3VsZCB0aGluayAo aG9wZSkgdGhhdCB0aGUgY29tcGlsZXIgd291bGQKPiA+IGJlIHNtYXJ0IGVub3VnaCB0byBzZWUg d2hlbiBpdHMgYWN0dWFsbHkgaW4gdXNlLiAgQWZ0ZXIgYWxsLCBpdCBpcyB0aGUKPiA+IGNvbXBp bGVyIHRoYXQgcGxhY2VzIHRoZSBpbmZvcm1hdGlvbiBpbnRvIHRoZSBkZXZpY2UgdGFibGUuCj4g Pgo+IElmIHRoYXQgaXMgbm90IHRoZSBjYXNlLCB0aGVuIHRoZSBNT0RVTEVfREVWSUNFX1RBQkxF KCkgbWFnaWMgaXMKPiA+IGJyb2tlbiBhbmQgd2lsbCBuZWVkIGZpeGluZy4KPiAKPiBJJ20gbm90 IHN1cmUgd2h5IHRoYXQgd291bGQgYmUgdGhlIGNhc2U/CgpOb3IgbWUuICBJbiBmYWN0LCB0YWtl IGEgbG9vayBhdCBteSBsYXRlc3QgZW1haWwuICBJIHRoaW5rIEkganVzdApwcm92ZWQgb3V0IHRo YXQgaXQncyBub3QgYnJva2VuLiAgVGhlIHdhcm5pbmcgaXMgdmFsaWQgYW5kCk1PRFVMRV9ERVZJ Q0VfVEFCTEUoKSBhcHBlYXJzIHRvIHdvcmsganVzdCBhcyBpdCBzaG91bGQuCgo+ID4gUmVtb3Zp bmcgYm9pbGVyLXBsYXRlIGlzIGdvb2QsIGJ1dCBub3QgYXQgdGhlIGV4cGVuc2Ugb2Ygb2JmdXNj YXRpb24uCj4gCj4gSSdtIG5vdCBmb2xsb3dpbmcgeW91IGhlcmUgdG8gYmUgaG9uZXN0LgoKTmV2 ZXIgbWluZC4gIEl0J3Mgbm8gbG9uZ2VyIGltcG9ydGFudC4KCj4gQlRXLCBJJ20gd29uZGVyaW5n IGlmIHJlbW92aW5nIHRoZSAic3RhdGljIiBtb2RpZmllciBmcm9tIHRoZQo+IGRlZmluaXRpb25z IG9mIHRoZSBzdHJ1Y3R1cmVzIGluIHF1ZXN0aW9uIG1ha2VzIHRoZSB3YXJuaW5ncyB5b3Ugd2Fu dAo+IHRvIGdldCByaWQgb2YgZ28gYXdheS4KCkknbSBzdXJlIHRoYXQgaXQgd291bGQuICBCdXQg dGhhdCBqdXN0IGFsbHVkZXMgdG8gdGhlIGZhY3QgdGhhdCB0aGUKdGFibGVzIG1heSBiZSBpbiB1 c2UgZWxzZXdoZXJlLCB3aGljaCBpbiB0aGUgY2FzZSBvZiAhTU9EVUxFIGlzCnVudHJ1ZS4gIFRo YXQncyBwcm9iYWJseSBtb3JlIG9mIGEgaGFjayB0aGFuIHVzaW5nIF9fbWF5YmVfdW51c2VkLgoK LS0gCkxlZSBKb25lcyBb5p2O55C85pavXQpTZW5pb3IgVGVjaG5pY2FsIExlYWQgLSBEZXZlbG9w ZXIgU2VydmljZXMKTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFybSBT b0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK