From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753877AbcHZAtj (ORCPT ); Thu, 25 Aug 2016 20:49:39 -0400 Received: from cn.fujitsu.com ([59.151.112.132]:27992 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1751795AbcHZAti (ORCPT ); Thu, 25 Aug 2016 20:49:38 -0400 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="10302752" Message-ID: <57BF9142.6060600@cn.fujitsu.com> Date: Fri, 26 Aug 2016 08:45:54 +0800 From: =?UTF-8?B?Ilpob3UsIFdlbmppYW4v5ZGo5paH5YmRIg==?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Baoquan He , Jonathan Corbet CC: , , , , , , , Subject: Re: [PATCH v9 1/2] Documentation: kdump: remind user of nr_cpus References: <1471489907-27737-1-git-send-email-zhouwj-fnst@cn.fujitsu.com> <1471489907-27737-2-git-send-email-zhouwj-fnst@cn.fujitsu.com> <20160818111854.362bb972@lwn.net> <57B653D1.8060106@cn.fujitsu.com> <20160819095740.1cccc073@lwn.net> <57BA51E0.1070902@cn.fujitsu.com> <20160824050645.GA8279@x1.redhat.com> In-Reply-To: <20160824050645.GA8279@x1.redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-yoursite-MailScanner-ID: C782F41C0B94.AC613 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhouwj-fnst@cn.fujitsu.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Baoquan, Sorry, I misunderstood it before. Thanks for your detailed explanation. Hi Jon and Baoquan, I'm confused about how to adjust the kdump.txt. Does the patch set v9 still OK? -- Thanks Zhou On 08/24/2016 01:06 PM, Baoquan He wrote: > On 08/22/16 at 09:14am, "Zhou, Wenjian/周文剑" wrote: >> On 08/19/2016 11:57 PM, Jonathan Corbet wrote: >>> On Fri, 19 Aug 2016 08:33:21 +0800 >>> "Zhou, Wenjian/周文剑" wrote: >>> >>>> I was also confused by maxcpus and nr_cpus before writing this patch. >>>> I think it is a good choice to describe it in kernel-parameters.txt. >>>> >>>> Then, only two things need to be done I think. >>>> One is move the above description to maxcpus= in kernel-parameters.txt. >>>> And the other is replace maxcpus with maxcpus/nr_cpus in kdump.txt. >>>> >>>> How do you think? >>> >>> That is not quite what I had in mind, sorry. What I would really like to >>> see in kernel-parameters.txt is an explanation of how those two parameters >>> differ - what do they do differently and how should a user choose one over >>> the other? What we have now offers no guidance in that matter. >>> >> >> I thought about it. I think user may not need this. >> What user really want to know is how to choose. >> And it is also not a hard work. If nr_cpus is not supported by the ARCH, use maxcpus. >> Otherwise, nr_cpus. The reason why maxcpus still exists is nr_cpus can't be supported >> by some ARCHes. > > I think Jon is suggesting that a note can be added into > kernel-parameter.txt to tell what's the difference between nr_cpus and > max_cpus. I checked code and discussed within our kdump team, max_cpus > is used to limit how many 'present' cpus are allowed to be brought up > during system bootup, while nr_cpus is used to set the upper limit of > 'possible' cpus. E.g on my laptop, there are 4 cpus while 4 hotplug > cpus, altogether 8 possible cpus. Possible cpus slot is for cpu hot > plug, means during bootup you want to bring up 4 present cpus, but > later you could physically hot plug 4 others. Because of attribute of > some static percpu variables, we need pre-allocate memory for all > possible cpus though some of them may not be really used if no extra > cpu physically hot plugged after system bootup. > > Hence for kdump kernel, people never want to do a cpu hot plug in there. > That's why we want to use nr_cpus to limit the number of possible cpu to > save memory. E.g still on my laptop, if I want to do a kdump, the number > of possible cpu is still 8, but you may want to use only 1 cpu to dump, > maybe 2 or 3 for parallel dumping. But you absolutely don't want to set > nr_cpus=8 in your kdump kernel cmdline, though it doesn't cause failure, > memory is wasted because of percpu pre-allocation. So specifying nr_cpus=1 > is much better. While with specifying max_cpus=1, the number of possible > cpu is still 8. That's the reason. On x86_64 and s390, there's another > kernel para "possible_cpus=xx" which can be used to set possible cpus for > cpu hot plug. Only when "possible_cpus=0" is specified, smp is disabled. > I am not very sure why this is introduced, number of possible cpu is > decided by the min value of nr_cpus= and possible_cpus=. > > nr_cpus and maxcpus might not be very clear to people which are > described in Documentation/kernel-parameters.txt. > > Hi Jon, do you think change as below is OK to you? > > > From 8b940193a29acf0857d4975d77f4b9f48e2d6cb8 Mon Sep 17 00:00:00 2001 > From: Baoquan He > Date: Wed, 24 Aug 2016 11:14:34 +0800 > Subject: [PATCH] docs: kernel-parameter : Improve the description of nr_cpus > and maxcpus > > From the old description people still can't get what's the exact > difference between nr_cpus and maxcpus. Especially in kdump kernel > nr_cpus is always suggested if it's implemented in the ARCH. The > reason is nr_cpus is used to limit the max number of possible cpu > in system, the sum of already plugged cpus and hot plug cpus can't > exceed its value. However maxcpus is used to limit how many cpus > are allowed to be brought up during bootup. > > Signed-off-by: Baoquan He > --- > Documentation/kernel-parameters.txt | 20 +++++++++++++------- > 1 file changed, 13 insertions(+), 7 deletions(-) > > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt > index 46c030a..25d3b36 100644 > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -2161,10 +2161,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > than or equal to this physical address is ignored. > > maxcpus= [SMP] Maximum number of processors that an SMP kernel > - should make use of. maxcpus=n : n >= 0 limits the > - kernel to using 'n' processors. n=0 is a special case, > - it is equivalent to "nosmp", which also disables > - the IO APIC. > + will bring up during bootup. maxcpus=n : n >= 0 limits > + the kernel to bring up 'n' processors. Surely after > + bootup you can bring up the other plugged cpu by executing > + "echo 1 > /sys/devices/system/cpu/cpuX/online". So maxcpus > + only takes effect during system bootup. > + While n=0 is a special case, it is equivalent to "nosmp", > + which also disables the IO APIC. > > max_loop= [LOOP] The number of loop block devices that get > (loop.max_loop) unconditionally pre-created at init time. The default > @@ -2773,9 +2776,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > > nr_cpus= [SMP] Maximum number of processors that an SMP kernel > could support. nr_cpus=n : n >= 1 limits the kernel to > - supporting 'n' processors. Later in runtime you can not > - use hotplug cpu feature to put more cpu back to online. > - just like you compile the kernel NR_CPUS=n > + support 'n' processors. It could be larger than the > + number of already plugged CPU during bootup, later in > + runtime you can physically add extra cpu until it reaches > + n. So during boot up some boot time memory for per-cpu > + variables need be pre-allocated for later physical cpu > + hot plugging. > > nr_uarts= [SERIAL] maximum number of UARTs to be registered. > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [59.151.112.132] (helo=heian.cn.fujitsu.com) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bd5JL-0004pl-PD for kexec@lists.infradead.org; Fri, 26 Aug 2016 00:47:57 +0000 Message-ID: <57BF9142.6060600@cn.fujitsu.com> Date: Fri, 26 Aug 2016 08:45:54 +0800 From: =?UTF-8?B?Ilpob3UsIFdlbmppYW4v5ZGo5paH5YmRIg==?= MIME-Version: 1.0 Subject: Re: [PATCH v9 1/2] Documentation: kdump: remind user of nr_cpus References: <1471489907-27737-1-git-send-email-zhouwj-fnst@cn.fujitsu.com> <1471489907-27737-2-git-send-email-zhouwj-fnst@cn.fujitsu.com> <20160818111854.362bb972@lwn.net> <57B653D1.8060106@cn.fujitsu.com> <20160819095740.1cccc073@lwn.net> <57BA51E0.1070902@cn.fujitsu.com> <20160824050645.GA8279@x1.redhat.com> In-Reply-To: <20160824050645.GA8279@x1.redhat.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Baoquan He , Jonathan Corbet Cc: linux-doc@vger.kernel.org, xlpang@redhat.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, joe@perches.com, akpm@linux-foundation.org, dyoung@redhat.com, vgoyal@redhat.com SGkgQmFvcXVhbiwKClNvcnJ5LCBJIG1pc3VuZGVyc3Rvb2QgaXQgYmVmb3JlLgpUaGFua3MgZm9y IHlvdXIgZGV0YWlsZWQgZXhwbGFuYXRpb24uCgpIaSBKb24gYW5kIEJhb3F1YW4sIEknbSBjb25m dXNlZCBhYm91dCBob3cgdG8gYWRqdXN0IHRoZSBrZHVtcC50eHQuCkRvZXMgdGhlIHBhdGNoIHNl dCB2OSBzdGlsbCBPSz8KCi0tIApUaGFua3MKWmhvdQoKT24gMDgvMjQvMjAxNiAwMTowNiBQTSwg QmFvcXVhbiBIZSB3cm90ZToKPiBPbiAwOC8yMi8xNiBhdCAwOToxNGFtLCAiWmhvdSwgV2Vuamlh bi/lkajmlofliZEiIHdyb3RlOgo+PiBPbiAwOC8xOS8yMDE2IDExOjU3IFBNLCBKb25hdGhhbiBD b3JiZXQgd3JvdGU6Cj4+PiBPbiBGcmksIDE5IEF1ZyAyMDE2IDA4OjMzOjIxICswODAwCj4+PiAi WmhvdSwgV2Vuamlhbi/lkajmlofliZEiIDx6aG91d2otZm5zdEBjbi5mdWppdHN1LmNvbT4gd3Jv dGU6Cj4+Pgo+Pj4+IEkgd2FzIGFsc28gY29uZnVzZWQgYnkgbWF4Y3B1cyBhbmQgbnJfY3B1cyBi ZWZvcmUgd3JpdGluZyB0aGlzIHBhdGNoLgo+Pj4+IEkgdGhpbmsgaXQgaXMgYSBnb29kIGNob2lj ZSB0byBkZXNjcmliZSBpdCBpbiBrZXJuZWwtcGFyYW1ldGVycy50eHQuCj4+Pj4KPj4+PiBUaGVu LCBvbmx5IHR3byB0aGluZ3MgbmVlZCB0byBiZSBkb25lIEkgdGhpbmsuCj4+Pj4gT25lIGlzIG1v dmUgdGhlIGFib3ZlIGRlc2NyaXB0aW9uIHRvIG1heGNwdXM9IGluIGtlcm5lbC1wYXJhbWV0ZXJz LnR4dC4KPj4+PiBBbmQgdGhlIG90aGVyIGlzIHJlcGxhY2UgbWF4Y3B1cyB3aXRoIG1heGNwdXMv bnJfY3B1cyBpbiBrZHVtcC50eHQuCj4+Pj4KPj4+PiBIb3cgZG8geW91IHRoaW5rPwo+Pj4KPj4+ IFRoYXQgaXMgbm90IHF1aXRlIHdoYXQgSSBoYWQgaW4gbWluZCwgc29ycnkuICBXaGF0IEkgd291 bGQgcmVhbGx5IGxpa2UgdG8KPj4+IHNlZSBpbiBrZXJuZWwtcGFyYW1ldGVycy50eHQgaXMgYW4g ZXhwbGFuYXRpb24gb2YgaG93IHRob3NlIHR3byBwYXJhbWV0ZXJzCj4+PiBkaWZmZXIgLSB3aGF0 IGRvIHRoZXkgZG8gZGlmZmVyZW50bHkgYW5kIGhvdyBzaG91bGQgYSB1c2VyIGNob29zZSBvbmUg b3Zlcgo+Pj4gdGhlIG90aGVyPyAgV2hhdCB3ZSBoYXZlIG5vdyBvZmZlcnMgbm8gZ3VpZGFuY2Ug aW4gdGhhdCBtYXR0ZXIuCj4+Pgo+Pgo+PiBJIHRob3VnaHQgYWJvdXQgaXQuIEkgdGhpbmsgdXNl ciBtYXkgbm90IG5lZWQgdGhpcy4KPj4gV2hhdCB1c2VyIHJlYWxseSB3YW50IHRvIGtub3cgaXMg aG93IHRvIGNob29zZS4KPj4gQW5kIGl0IGlzIGFsc28gbm90IGEgaGFyZCB3b3JrLiBJZiBucl9j cHVzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEFSQ0gsIHVzZSBtYXhjcHVzLgo+PiBPdGhlcndp c2UsIG5yX2NwdXMuIFRoZSByZWFzb24gd2h5IG1heGNwdXMgc3RpbGwgZXhpc3RzIGlzIG5yX2Nw dXMgY2FuJ3QgYmUgc3VwcG9ydGVkCj4+IGJ5IHNvbWUgQVJDSGVzLgo+Cj4gSSB0aGluayBKb24g aXMgc3VnZ2VzdGluZyB0aGF0IGEgbm90ZSBjYW4gYmUgYWRkZWQgaW50bwo+IGtlcm5lbC1wYXJh bWV0ZXIudHh0IHRvIHRlbGwgd2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbnJfY3B1cyBh bmQKPiBtYXhfY3B1cy4gSSBjaGVja2VkIGNvZGUgYW5kIGRpc2N1c3NlZCB3aXRoaW4gb3VyIGtk dW1wIHRlYW0sIG1heF9jcHVzCj4gaXMgdXNlZCB0byBsaW1pdCBob3cgbWFueSAncHJlc2VudCcg Y3B1cyBhcmUgYWxsb3dlZCB0byBiZSBicm91Z2h0IHVwCj4gZHVyaW5nIHN5c3RlbSBib290dXAs IHdoaWxlIG5yX2NwdXMgaXMgdXNlZCB0byBzZXQgdGhlIHVwcGVyIGxpbWl0IG9mCj4gJ3Bvc3Np YmxlJyBjcHVzLiBFLmcgb24gbXkgbGFwdG9wLCB0aGVyZSBhcmUgNCBjcHVzIHdoaWxlIDQgaG90 cGx1Zwo+IGNwdXMsIGFsdG9nZXRoZXIgOCBwb3NzaWJsZSBjcHVzLiBQb3NzaWJsZSBjcHVzIHNs b3QgaXMgZm9yIGNwdSBob3QKPiBwbHVnLCBtZWFucyBkdXJpbmcgYm9vdHVwIHlvdSB3YW50IHRv IGJyaW5nIHVwIDQgcHJlc2VudCBjcHVzLCBidXQKPiBsYXRlciB5b3UgY291bGQgcGh5c2ljYWxs eSBob3QgcGx1ZyA0IG90aGVycy4gQmVjYXVzZSBvZiBhdHRyaWJ1dGUgb2YKPiBzb21lIHN0YXRp YyBwZXJjcHUgdmFyaWFibGVzLCB3ZSBuZWVkIHByZS1hbGxvY2F0ZSBtZW1vcnkgZm9yIGFsbAo+ IHBvc3NpYmxlIGNwdXMgdGhvdWdoIHNvbWUgb2YgdGhlbSBtYXkgbm90IGJlIHJlYWxseSB1c2Vk IGlmIG5vIGV4dHJhCj4gY3B1IHBoeXNpY2FsbHkgaG90IHBsdWdnZWQgYWZ0ZXIgc3lzdGVtIGJv b3R1cC4KPgo+IEhlbmNlIGZvciBrZHVtcCBrZXJuZWwsIHBlb3BsZSBuZXZlciB3YW50IHRvIGRv IGEgY3B1IGhvdCBwbHVnIGluIHRoZXJlLgo+IFRoYXQncyB3aHkgd2Ugd2FudCB0byB1c2UgbnJf Y3B1cyB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIGNwdSB0bwo+IHNhdmUgbWVtb3J5 LiBFLmcgc3RpbGwgb24gbXkgbGFwdG9wLCBpZiBJIHdhbnQgdG8gZG8gYSBrZHVtcCwgdGhlIG51 bWJlcgo+IG9mIHBvc3NpYmxlIGNwdSBpcyBzdGlsbCA4LCBidXQgeW91IG1heSB3YW50IHRvIHVz ZSBvbmx5IDEgY3B1IHRvIGR1bXAsCj4gbWF5YmUgMiBvciAzIGZvciBwYXJhbGxlbCBkdW1waW5n LiBCdXQgeW91IGFic29sdXRlbHkgZG9uJ3Qgd2FudCB0byBzZXQKPiBucl9jcHVzPTggaW4geW91 ciBrZHVtcCBrZXJuZWwgY21kbGluZSwgdGhvdWdoIGl0IGRvZXNuJ3QgY2F1c2UgZmFpbHVyZSwK PiBtZW1vcnkgaXMgd2FzdGVkIGJlY2F1c2Ugb2YgcGVyY3B1IHByZS1hbGxvY2F0aW9uLiBTbyBz cGVjaWZ5aW5nIG5yX2NwdXM9MQo+IGlzIG11Y2ggYmV0dGVyLiBXaGlsZSB3aXRoIHNwZWNpZnlp bmcgbWF4X2NwdXM9MSwgdGhlIG51bWJlciBvZiBwb3NzaWJsZQo+IGNwdSBpcyBzdGlsbCA4LiBU aGF0J3MgdGhlIHJlYXNvbi4gT24geDg2XzY0IGFuZCBzMzkwLCB0aGVyZSdzIGFub3RoZXIKPiBr ZXJuZWwgcGFyYSAicG9zc2libGVfY3B1cz14eCIgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0IHBv c3NpYmxlIGNwdXMgZm9yCj4gY3B1IGhvdCBwbHVnLiBPbmx5IHdoZW4gInBvc3NpYmxlX2NwdXM9 MCIgaXMgc3BlY2lmaWVkLCBzbXAgaXMgZGlzYWJsZWQuCj4gSSBhbSBub3QgdmVyeSBzdXJlIHdo eSB0aGlzIGlzIGludHJvZHVjZWQsIG51bWJlciBvZiBwb3NzaWJsZSBjcHUgaXMKPiBkZWNpZGVk IGJ5IHRoZSBtaW4gdmFsdWUgb2YgbnJfY3B1cz0gYW5kIHBvc3NpYmxlX2NwdXM9Lgo+Cj4gbnJf Y3B1cyBhbmQgbWF4Y3B1cyBtaWdodCBub3QgYmUgdmVyeSBjbGVhciB0byBwZW9wbGUgd2hpY2gg YXJlCj4gZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0Lgo+ Cj4gSGkgSm9uLCBkbyB5b3UgdGhpbmsgY2hhbmdlIGFzIGJlbG93IGlzIE9LIHRvIHlvdT8KPgo+ Cj4gIEZyb20gOGI5NDAxOTNhMjlhY2YwODU3ZDQ5NzVkNzdmNGI5ZjQ4ZTJkNmNiOCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKPiBGcm9tOiBCYW9xdWFuIEhlIDxiaGVAcmVkaGF0LmNvbT4KPiBE YXRlOiBXZWQsIDI0IEF1ZyAyMDE2IDExOjE0OjM0ICswODAwCj4gU3ViamVjdDogW1BBVENIXSBk b2NzOiBrZXJuZWwtcGFyYW1ldGVyIDogSW1wcm92ZSB0aGUgZGVzY3JpcHRpb24gb2YgbnJfY3B1 cwo+ICAgYW5kIG1heGNwdXMKPgo+ICBGcm9tIHRoZSBvbGQgZGVzY3JpcHRpb24gcGVvcGxlIHN0 aWxsIGNhbid0IGdldCB3aGF0J3MgdGhlIGV4YWN0Cj4gZGlmZmVyZW5jZSBiZXR3ZWVuIG5yX2Nw dXMgYW5kIG1heGNwdXMuIEVzcGVjaWFsbHkgaW4ga2R1bXAga2VybmVsCj4gbnJfY3B1cyBpcyBh bHdheXMgc3VnZ2VzdGVkIGlmIGl0J3MgaW1wbGVtZW50ZWQgaW4gdGhlIEFSQ0guIFRoZQo+IHJl YXNvbiBpcyBucl9jcHVzIGlzIHVzZWQgdG8gbGltaXQgdGhlIG1heCBudW1iZXIgb2YgcG9zc2li bGUgY3B1Cj4gaW4gc3lzdGVtLCB0aGUgc3VtIG9mIGFscmVhZHkgcGx1Z2dlZCBjcHVzIGFuZCBo b3QgcGx1ZyBjcHVzIGNhbid0Cj4gZXhjZWVkIGl0cyB2YWx1ZS4gSG93ZXZlciBtYXhjcHVzIGlz IHVzZWQgdG8gbGltaXQgaG93IG1hbnkgY3B1cwo+IGFyZSBhbGxvd2VkIHRvIGJlIGJyb3VnaHQg dXAgZHVyaW5nIGJvb3R1cC4KPgo+IFNpZ25lZC1vZmYtYnk6IEJhb3F1YW4gSGUgPGJoZUByZWRo YXQuY29tPgo+IC0tLQo+ICAgRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgfCAy MCArKysrKysrKysrKysrLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMo KyksIDcgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwt cGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAo+IGlu ZGV4IDQ2YzAzMGEuLjI1ZDNiMzYgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwt cGFyYW1ldGVycy50eHQKPiArKysgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4 dAo+IEBAIC0yMTYxLDEwICsyMTYxLDEzIEBAIGJ5dGVzIHJlc3BlY3RpdmVseS4gU3VjaCBsZXR0 ZXIgc3VmZml4ZXMgY2FuIGFsc28gYmUgZW50aXJlbHkgb21pdHRlZC4KPiAgIAkJCXRoYW4gb3Ig ZXF1YWwgdG8gdGhpcyBwaHlzaWNhbCBhZGRyZXNzIGlzIGlnbm9yZWQuCj4KPiAgIAltYXhjcHVz PQlbU01QXSBNYXhpbXVtIG51bWJlciBvZiBwcm9jZXNzb3JzIHRoYXQJYW4gU01QIGtlcm5lbAo+ IC0JCQlzaG91bGQgbWFrZSB1c2Ugb2YuICBtYXhjcHVzPW4gOiBuID49IDAgbGltaXRzIHRoZQo+ IC0JCQlrZXJuZWwgdG8gdXNpbmcgJ24nIHByb2Nlc3NvcnMuICBuPTAgaXMgYSBzcGVjaWFsIGNh c2UsCj4gLQkJCWl0IGlzIGVxdWl2YWxlbnQgdG8gIm5vc21wIiwgd2hpY2ggYWxzbyBkaXNhYmxl cwo+IC0JCQl0aGUgSU8gQVBJQy4KPiArCQkJd2lsbCBicmluZyB1cCBkdXJpbmcgYm9vdHVwLiAg bWF4Y3B1cz1uIDogbiA+PSAwIGxpbWl0cwo+ICsJCQl0aGUga2VybmVsIHRvIGJyaW5nIHVwICdu JyBwcm9jZXNzb3JzLiBTdXJlbHkgYWZ0ZXIKPiArCQkJYm9vdHVwIHlvdSBjYW4gYnJpbmcgdXAg dGhlIG90aGVyIHBsdWdnZWQgY3B1IGJ5IGV4ZWN1dGluZwo+ICsJCQkiZWNobyAxID4gL3N5cy9k ZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9vbmxpbmUiLiBTbyBtYXhjcHVzCj4gKwkJCW9ubHkgdGFr ZXMgZWZmZWN0IGR1cmluZyBzeXN0ZW0gYm9vdHVwLgo+ICsJCQlXaGlsZSBuPTAgaXMgYSBzcGVj aWFsIGNhc2UsIGl0IGlzIGVxdWl2YWxlbnQgdG8gIm5vc21wIiwKPiArCQkJd2hpY2ggYWxzbyBk aXNhYmxlcyB0aGUgSU8gQVBJQy4KPgo+ICAgCW1heF9sb29wPQlbTE9PUF0gVGhlIG51bWJlciBv ZiBsb29wIGJsb2NrIGRldmljZXMgdGhhdCBnZXQKPiAgIAkobG9vcC5tYXhfbG9vcCkJdW5jb25k aXRpb25hbGx5IHByZS1jcmVhdGVkIGF0IGluaXQgdGltZS4gVGhlIGRlZmF1bHQKPiBAQCAtMjc3 Myw5ICsyNzc2LDEyIEBAIGJ5dGVzIHJlc3BlY3RpdmVseS4gU3VjaCBsZXR0ZXIgc3VmZml4ZXMg Y2FuIGFsc28gYmUgZW50aXJlbHkgb21pdHRlZC4KPgo+ICAgCW5yX2NwdXM9CVtTTVBdIE1heGlt dW0gbnVtYmVyIG9mIHByb2Nlc3NvcnMgdGhhdAlhbiBTTVAga2VybmVsCj4gICAJCQljb3VsZCBz dXBwb3J0LiAgbnJfY3B1cz1uIDogbiA+PSAxIGxpbWl0cyB0aGUga2VybmVsIHRvCj4gLQkJCXN1 cHBvcnRpbmcgJ24nIHByb2Nlc3NvcnMuIExhdGVyIGluIHJ1bnRpbWUgeW91IGNhbiBub3QKPiAt CQkJdXNlIGhvdHBsdWcgY3B1IGZlYXR1cmUgdG8gcHV0IG1vcmUgY3B1IGJhY2sgdG8gb25saW5l Lgo+IC0JCQlqdXN0IGxpa2UgeW91IGNvbXBpbGUgdGhlIGtlcm5lbCBOUl9DUFVTPW4KPiArCQkJ c3VwcG9ydCAnbicgcHJvY2Vzc29ycy4gSXQgY291bGQgYmUgbGFyZ2VyIHRoYW4gdGhlCj4gKwkJ CW51bWJlciBvZiBhbHJlYWR5IHBsdWdnZWQgQ1BVIGR1cmluZyBib290dXAsIGxhdGVyIGluCj4g KwkJCXJ1bnRpbWUgeW91IGNhbiBwaHlzaWNhbGx5IGFkZCBleHRyYSBjcHUgdW50aWwgaXQgcmVh Y2hlcwo+ICsJCQluLiBTbyBkdXJpbmcgYm9vdCB1cCBzb21lIGJvb3QgdGltZSBtZW1vcnkgZm9y IHBlci1jcHUKPiArCQkJdmFyaWFibGVzIG5lZWQgYmUgcHJlLWFsbG9jYXRlZCBmb3IgbGF0ZXIg cGh5c2ljYWwgY3B1Cj4gKwkJCWhvdCBwbHVnZ2luZy4KPgo+ICAgCW5yX3VhcnRzPQlbU0VSSUFM XSBtYXhpbXVtIG51bWJlciBvZiBVQVJUcyB0byBiZSByZWdpc3RlcmVkLgo+Cj4KCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Ka2V4ZWMgbWFpbGluZyBs aXN0CmtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9rZXhlYwo=