From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754746AbcH0Aif (ORCPT ); Fri, 26 Aug 2016 20:38:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40884 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754681AbcH0Aid (ORCPT ); Fri, 26 Aug 2016 20:38:33 -0400 Date: Sat, 27 Aug 2016 08:38:29 +0800 From: Baoquan He To: =?utf-8?B?Ilpob3UsIFdlbmppYW4v5ZGo5paH5YmRIg==?= Cc: Jonathan Corbet , linux-kernel@vger.kernel.org, akpm@linux-foundation.org, dyoung@redhat.com, vgoyal@redhat.com, kexec@lists.infradead.org, linux-doc@vger.kernel.org, xlpang@redhat.com, joe@perches.com Subject: Re: [PATCH v9 1/2] Documentation: kdump: remind user of nr_cpus Message-ID: <20160827003829.GE31627@x1.redhat.com> 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> <57BF9142.6060600@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <57BF9142.6060600@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Sat, 27 Aug 2016 00:38:33 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/26/16 at 08:45am, "Zhou, Wenjian/周文剑" wrote: > 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? Yeah, I think it's OK. Let's wait for Jon's feekback. > > -- > 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 mx1.redhat.com ([209.132.183.28]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bdRe9-0001pX-LW for kexec@lists.infradead.org; Sat, 27 Aug 2016 00:38:54 +0000 Date: Sat, 27 Aug 2016 08:38:29 +0800 From: Baoquan He Subject: Re: [PATCH v9 1/2] Documentation: kdump: remind user of nr_cpus Message-ID: <20160827003829.GE31627@x1.redhat.com> 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> <57BF9142.6060600@cn.fujitsu.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <57BF9142.6060600@cn.fujitsu.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: =?utf-8?B?Ilpob3UsIFdlbmppYW4v5ZGo5paH5YmRIg==?= Cc: Jonathan Corbet , xlpang@redhat.com, linux-doc@vger.kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, joe@perches.com, akpm@linux-foundation.org, dyoung@redhat.com, vgoyal@redhat.com T24gMDgvMjYvMTYgYXQgMDg6NDVhbSwgIlpob3UsIFdlbmppYW4v5ZGo5paH5YmRIiB3cm90ZToK PiBIaSBCYW9xdWFuLAo+IAo+IFNvcnJ5LCBJIG1pc3VuZGVyc3Rvb2QgaXQgYmVmb3JlLgo+IFRo YW5rcyBmb3IgeW91ciBkZXRhaWxlZCBleHBsYW5hdGlvbi4KPiAKPiBIaSBKb24gYW5kIEJhb3F1 YW4sIEknbSBjb25mdXNlZCBhYm91dCBob3cgdG8gYWRqdXN0IHRoZSBrZHVtcC50eHQuCj4gRG9l cyB0aGUgcGF0Y2ggc2V0IHY5IHN0aWxsIE9LPwoKWWVhaCwgSSB0aGluayBpdCdzIE9LLiBMZXQn cyB3YWl0IGZvciBKb24ncyBmZWVrYmFjay4KCj4gCj4gLS0gCj4gVGhhbmtzCj4gWmhvdQo+IAo+ IE9uIDA4LzI0LzIwMTYgMDE6MDYgUE0sIEJhb3F1YW4gSGUgd3JvdGU6Cj4gPk9uIDA4LzIyLzE2 IGF0IDA5OjE0YW0sICJaaG91LCBXZW5qaWFuL+WRqOaWh+WJkSIgd3JvdGU6Cj4gPj5PbiAwOC8x OS8yMDE2IDExOjU3IFBNLCBKb25hdGhhbiBDb3JiZXQgd3JvdGU6Cj4gPj4+T24gRnJpLCAxOSBB dWcgMjAxNiAwODozMzoyMSArMDgwMAo+ID4+PiJaaG91LCBXZW5qaWFuL+WRqOaWh+WJkSIgPHpo b3V3ai1mbnN0QGNuLmZ1aml0c3UuY29tPiB3cm90ZToKPiA+Pj4KPiA+Pj4+SSB3YXMgYWxzbyBj b25mdXNlZCBieSBtYXhjcHVzIGFuZCBucl9jcHVzIGJlZm9yZSB3cml0aW5nIHRoaXMgcGF0Y2gu Cj4gPj4+PkkgdGhpbmsgaXQgaXMgYSBnb29kIGNob2ljZSB0byBkZXNjcmliZSBpdCBpbiBrZXJu ZWwtcGFyYW1ldGVycy50eHQuCj4gPj4+Pgo+ID4+Pj5UaGVuLCBvbmx5IHR3byB0aGluZ3MgbmVl ZCB0byBiZSBkb25lIEkgdGhpbmsuCj4gPj4+Pk9uZSBpcyBtb3ZlIHRoZSBhYm92ZSBkZXNjcmlw dGlvbiB0byBtYXhjcHVzPSBpbiBrZXJuZWwtcGFyYW1ldGVycy50eHQuCj4gPj4+PkFuZCB0aGUg b3RoZXIgaXMgcmVwbGFjZSBtYXhjcHVzIHdpdGggbWF4Y3B1cy9ucl9jcHVzIGluIGtkdW1wLnR4 dC4KPiA+Pj4+Cj4gPj4+PkhvdyBkbyB5b3UgdGhpbms/Cj4gPj4+Cj4gPj4+VGhhdCBpcyBub3Qg cXVpdGUgd2hhdCBJIGhhZCBpbiBtaW5kLCBzb3JyeS4gIFdoYXQgSSB3b3VsZCByZWFsbHkgbGlr ZSB0bwo+ID4+PnNlZSBpbiBrZXJuZWwtcGFyYW1ldGVycy50eHQgaXMgYW4gZXhwbGFuYXRpb24g b2YgaG93IHRob3NlIHR3byBwYXJhbWV0ZXJzCj4gPj4+ZGlmZmVyIC0gd2hhdCBkbyB0aGV5IGRv IGRpZmZlcmVudGx5IGFuZCBob3cgc2hvdWxkIGEgdXNlciBjaG9vc2Ugb25lIG92ZXIKPiA+Pj50 aGUgb3RoZXI/ICBXaGF0IHdlIGhhdmUgbm93IG9mZmVycyBubyBndWlkYW5jZSBpbiB0aGF0IG1h dHRlci4KPiA+Pj4KPiA+Pgo+ID4+SSB0aG91Z2h0IGFib3V0IGl0LiBJIHRoaW5rIHVzZXIgbWF5 IG5vdCBuZWVkIHRoaXMuCj4gPj5XaGF0IHVzZXIgcmVhbGx5IHdhbnQgdG8ga25vdyBpcyBob3cg dG8gY2hvb3NlLgo+ID4+QW5kIGl0IGlzIGFsc28gbm90IGEgaGFyZCB3b3JrLiBJZiBucl9jcHVz IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEFSQ0gsIHVzZSBtYXhjcHVzLgo+ID4+T3RoZXJ3aXNl LCBucl9jcHVzLiBUaGUgcmVhc29uIHdoeSBtYXhjcHVzIHN0aWxsIGV4aXN0cyBpcyBucl9jcHVz IGNhbid0IGJlIHN1cHBvcnRlZAo+ID4+Ynkgc29tZSBBUkNIZXMuCj4gPgo+ID5JIHRoaW5rIEpv biBpcyBzdWdnZXN0aW5nIHRoYXQgYSBub3RlIGNhbiBiZSBhZGRlZCBpbnRvCj4gPmtlcm5lbC1w YXJhbWV0ZXIudHh0IHRvIHRlbGwgd2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbnJfY3B1 cyBhbmQKPiA+bWF4X2NwdXMuIEkgY2hlY2tlZCBjb2RlIGFuZCBkaXNjdXNzZWQgd2l0aGluIG91 ciBrZHVtcCB0ZWFtLCBtYXhfY3B1cwo+ID5pcyB1c2VkIHRvIGxpbWl0IGhvdyBtYW55ICdwcmVz ZW50JyBjcHVzIGFyZSBhbGxvd2VkIHRvIGJlIGJyb3VnaHQgdXAKPiA+ZHVyaW5nIHN5c3RlbSBi b290dXAsIHdoaWxlIG5yX2NwdXMgaXMgdXNlZCB0byBzZXQgdGhlIHVwcGVyIGxpbWl0IG9mCj4g Pidwb3NzaWJsZScgY3B1cy4gRS5nIG9uIG15IGxhcHRvcCwgdGhlcmUgYXJlIDQgY3B1cyB3aGls ZSA0IGhvdHBsdWcKPiA+Y3B1cywgYWx0b2dldGhlciA4IHBvc3NpYmxlIGNwdXMuIFBvc3NpYmxl IGNwdXMgc2xvdCBpcyBmb3IgY3B1IGhvdAo+ID5wbHVnLCBtZWFucyBkdXJpbmcgYm9vdHVwIHlv dSB3YW50IHRvIGJyaW5nIHVwIDQgcHJlc2VudCBjcHVzLCBidXQKPiA+bGF0ZXIgeW91IGNvdWxk IHBoeXNpY2FsbHkgaG90IHBsdWcgNCBvdGhlcnMuIEJlY2F1c2Ugb2YgYXR0cmlidXRlIG9mCj4g PnNvbWUgc3RhdGljIHBlcmNwdSB2YXJpYWJsZXMsIHdlIG5lZWQgcHJlLWFsbG9jYXRlIG1lbW9y eSBmb3IgYWxsCj4gPnBvc3NpYmxlIGNwdXMgdGhvdWdoIHNvbWUgb2YgdGhlbSBtYXkgbm90IGJl IHJlYWxseSB1c2VkIGlmIG5vIGV4dHJhCj4gPmNwdSBwaHlzaWNhbGx5IGhvdCBwbHVnZ2VkIGFm dGVyIHN5c3RlbSBib290dXAuCj4gPgo+ID5IZW5jZSBmb3Iga2R1bXAga2VybmVsLCBwZW9wbGUg bmV2ZXIgd2FudCB0byBkbyBhIGNwdSBob3QgcGx1ZyBpbiB0aGVyZS4KPiA+VGhhdCdzIHdoeSB3 ZSB3YW50IHRvIHVzZSBucl9jcHVzIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcG9zc2libGUgY3B1 IHRvCj4gPnNhdmUgbWVtb3J5LiBFLmcgc3RpbGwgb24gbXkgbGFwdG9wLCBpZiBJIHdhbnQgdG8g ZG8gYSBrZHVtcCwgdGhlIG51bWJlcgo+ID5vZiBwb3NzaWJsZSBjcHUgaXMgc3RpbGwgOCwgYnV0 IHlvdSBtYXkgd2FudCB0byB1c2Ugb25seSAxIGNwdSB0byBkdW1wLAo+ID5tYXliZSAyIG9yIDMg Zm9yIHBhcmFsbGVsIGR1bXBpbmcuIEJ1dCB5b3UgYWJzb2x1dGVseSBkb24ndCB3YW50IHRvIHNl dAo+ID5ucl9jcHVzPTggaW4geW91ciBrZHVtcCBrZXJuZWwgY21kbGluZSwgdGhvdWdoIGl0IGRv ZXNuJ3QgY2F1c2UgZmFpbHVyZSwKPiA+bWVtb3J5IGlzIHdhc3RlZCBiZWNhdXNlIG9mIHBlcmNw dSBwcmUtYWxsb2NhdGlvbi4gU28gc3BlY2lmeWluZyBucl9jcHVzPTEKPiA+aXMgbXVjaCBiZXR0 ZXIuIFdoaWxlIHdpdGggc3BlY2lmeWluZyBtYXhfY3B1cz0xLCB0aGUgbnVtYmVyIG9mIHBvc3Np YmxlCj4gPmNwdSBpcyBzdGlsbCA4LiBUaGF0J3MgdGhlIHJlYXNvbi4gT24geDg2XzY0IGFuZCBz MzkwLCB0aGVyZSdzIGFub3RoZXIKPiA+a2VybmVsIHBhcmEgInBvc3NpYmxlX2NwdXM9eHgiIHdo aWNoIGNhbiBiZSB1c2VkIHRvIHNldCBwb3NzaWJsZSBjcHVzIGZvcgo+ID5jcHUgaG90IHBsdWcu IE9ubHkgd2hlbiAicG9zc2libGVfY3B1cz0wIiBpcyBzcGVjaWZpZWQsIHNtcCBpcyBkaXNhYmxl ZC4KPiA+SSBhbSBub3QgdmVyeSBzdXJlIHdoeSB0aGlzIGlzIGludHJvZHVjZWQsIG51bWJlciBv ZiBwb3NzaWJsZSBjcHUgaXMKPiA+ZGVjaWRlZCBieSB0aGUgbWluIHZhbHVlIG9mIG5yX2NwdXM9 IGFuZCBwb3NzaWJsZV9jcHVzPS4KPiA+Cj4gPm5yX2NwdXMgYW5kIG1heGNwdXMgbWlnaHQgbm90 IGJlIHZlcnkgY2xlYXIgdG8gcGVvcGxlIHdoaWNoIGFyZQo+ID5kZXNjcmliZWQgaW4gRG9jdW1l bnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQuCj4gPgo+ID5IaSBKb24sIGRvIHlvdSB0aGlu ayBjaGFuZ2UgYXMgYmVsb3cgaXMgT0sgdG8geW91Pwo+ID4KPiA+Cj4gPiBGcm9tIDhiOTQwMTkz YTI5YWNmMDg1N2Q0OTc1ZDc3ZjRiOWY0OGUyZDZjYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Cj4gPkZyb206IEJhb3F1YW4gSGUgPGJoZUByZWRoYXQuY29tPgo+ID5EYXRlOiBXZWQsIDI0IEF1 ZyAyMDE2IDExOjE0OjM0ICswODAwCj4gPlN1YmplY3Q6IFtQQVRDSF0gZG9jczoga2VybmVsLXBh cmFtZXRlciA6IEltcHJvdmUgdGhlIGRlc2NyaXB0aW9uIG9mIG5yX2NwdXMKPiA+ICBhbmQgbWF4 Y3B1cwo+ID4KPiA+IEZyb20gdGhlIG9sZCBkZXNjcmlwdGlvbiBwZW9wbGUgc3RpbGwgY2FuJ3Qg Z2V0IHdoYXQncyB0aGUgZXhhY3QKPiA+ZGlmZmVyZW5jZSBiZXR3ZWVuIG5yX2NwdXMgYW5kIG1h eGNwdXMuIEVzcGVjaWFsbHkgaW4ga2R1bXAga2VybmVsCj4gPm5yX2NwdXMgaXMgYWx3YXlzIHN1 Z2dlc3RlZCBpZiBpdCdzIGltcGxlbWVudGVkIGluIHRoZSBBUkNILiBUaGUKPiA+cmVhc29uIGlz IG5yX2NwdXMgaXMgdXNlZCB0byBsaW1pdCB0aGUgbWF4IG51bWJlciBvZiBwb3NzaWJsZSBjcHUK PiA+aW4gc3lzdGVtLCB0aGUgc3VtIG9mIGFscmVhZHkgcGx1Z2dlZCBjcHVzIGFuZCBob3QgcGx1 ZyBjcHVzIGNhbid0Cj4gPmV4Y2VlZCBpdHMgdmFsdWUuIEhvd2V2ZXIgbWF4Y3B1cyBpcyB1c2Vk IHRvIGxpbWl0IGhvdyBtYW55IGNwdXMKPiA+YXJlIGFsbG93ZWQgdG8gYmUgYnJvdWdodCB1cCBk dXJpbmcgYm9vdHVwLgo+ID4KPiA+U2lnbmVkLW9mZi1ieTogQmFvcXVhbiBIZSA8YmhlQHJlZGhh dC5jb20+Cj4gPi0tLQo+ID4gIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IHwg MjAgKysrKysrKysrKysrKy0tLS0tLS0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9u cygrKSwgNyBkZWxldGlvbnMoLSkKPiA+Cj4gPmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tl cm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0 Cj4gPmluZGV4IDQ2YzAzMGEuLjI1ZDNiMzYgMTAwNjQ0Cj4gPi0tLSBhL0RvY3VtZW50YXRpb24v a2VybmVsLXBhcmFtZXRlcnMudHh0Cj4gPisrKyBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFt ZXRlcnMudHh0Cj4gPkBAIC0yMTYxLDEwICsyMTYxLDEzIEBAIGJ5dGVzIHJlc3BlY3RpdmVseS4g U3VjaCBsZXR0ZXIgc3VmZml4ZXMgY2FuIGFsc28gYmUgZW50aXJlbHkgb21pdHRlZC4KPiA+ICAJ CQl0aGFuIG9yIGVxdWFsIHRvIHRoaXMgcGh5c2ljYWwgYWRkcmVzcyBpcyBpZ25vcmVkLgo+ID4K PiA+ICAJbWF4Y3B1cz0JW1NNUF0gTWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc29ycyB0aGF0CWFu IFNNUCBrZXJuZWwKPiA+LQkJCXNob3VsZCBtYWtlIHVzZSBvZi4gIG1heGNwdXM9biA6IG4gPj0g MCBsaW1pdHMgdGhlCj4gPi0JCQlrZXJuZWwgdG8gdXNpbmcgJ24nIHByb2Nlc3NvcnMuICBuPTAg aXMgYSBzcGVjaWFsIGNhc2UsCj4gPi0JCQlpdCBpcyBlcXVpdmFsZW50IHRvICJub3NtcCIsIHdo aWNoIGFsc28gZGlzYWJsZXMKPiA+LQkJCXRoZSBJTyBBUElDLgo+ID4rCQkJd2lsbCBicmluZyB1 cCBkdXJpbmcgYm9vdHVwLiAgbWF4Y3B1cz1uIDogbiA+PSAwIGxpbWl0cwo+ID4rCQkJdGhlIGtl cm5lbCB0byBicmluZyB1cCAnbicgcHJvY2Vzc29ycy4gU3VyZWx5IGFmdGVyCj4gPisJCQlib290 dXAgeW91IGNhbiBicmluZyB1cCB0aGUgb3RoZXIgcGx1Z2dlZCBjcHUgYnkgZXhlY3V0aW5nCj4g PisJCQkiZWNobyAxID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9vbmxpbmUiLiBTbyBt YXhjcHVzCj4gPisJCQlvbmx5IHRha2VzIGVmZmVjdCBkdXJpbmcgc3lzdGVtIGJvb3R1cC4KPiA+ KwkJCVdoaWxlIG49MCBpcyBhIHNwZWNpYWwgY2FzZSwgaXQgaXMgZXF1aXZhbGVudCB0byAibm9z bXAiLAo+ID4rCQkJd2hpY2ggYWxzbyBkaXNhYmxlcyB0aGUgSU8gQVBJQy4KPiA+Cj4gPiAgCW1h eF9sb29wPQlbTE9PUF0gVGhlIG51bWJlciBvZiBsb29wIGJsb2NrIGRldmljZXMgdGhhdCBnZXQK PiA+ICAJKGxvb3AubWF4X2xvb3ApCXVuY29uZGl0aW9uYWxseSBwcmUtY3JlYXRlZCBhdCBpbml0 IHRpbWUuIFRoZSBkZWZhdWx0Cj4gPkBAIC0yNzczLDkgKzI3NzYsMTIgQEAgYnl0ZXMgcmVzcGVj dGl2ZWx5LiBTdWNoIGxldHRlciBzdWZmaXhlcyBjYW4gYWxzbyBiZSBlbnRpcmVseSBvbWl0dGVk Lgo+ID4KPiA+ICAJbnJfY3B1cz0JW1NNUF0gTWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc29ycyB0 aGF0CWFuIFNNUCBrZXJuZWwKPiA+ICAJCQljb3VsZCBzdXBwb3J0LiAgbnJfY3B1cz1uIDogbiA+ PSAxIGxpbWl0cyB0aGUga2VybmVsIHRvCj4gPi0JCQlzdXBwb3J0aW5nICduJyBwcm9jZXNzb3Jz LiBMYXRlciBpbiBydW50aW1lIHlvdSBjYW4gbm90Cj4gPi0JCQl1c2UgaG90cGx1ZyBjcHUgZmVh dHVyZSB0byBwdXQgbW9yZSBjcHUgYmFjayB0byBvbmxpbmUuCj4gPi0JCQlqdXN0IGxpa2UgeW91 IGNvbXBpbGUgdGhlIGtlcm5lbCBOUl9DUFVTPW4KPiA+KwkJCXN1cHBvcnQgJ24nIHByb2Nlc3Nv cnMuIEl0IGNvdWxkIGJlIGxhcmdlciB0aGFuIHRoZQo+ID4rCQkJbnVtYmVyIG9mIGFscmVhZHkg cGx1Z2dlZCBDUFUgZHVyaW5nIGJvb3R1cCwgbGF0ZXIgaW4KPiA+KwkJCXJ1bnRpbWUgeW91IGNh biBwaHlzaWNhbGx5IGFkZCBleHRyYSBjcHUgdW50aWwgaXQgcmVhY2hlcwo+ID4rCQkJbi4gU28g ZHVyaW5nIGJvb3QgdXAgc29tZSBib290IHRpbWUgbWVtb3J5IGZvciBwZXItY3B1Cj4gPisJCQl2 YXJpYWJsZXMgbmVlZCBiZSBwcmUtYWxsb2NhdGVkIGZvciBsYXRlciBwaHlzaWNhbCBjcHUKPiA+ KwkJCWhvdCBwbHVnZ2luZy4KPiA+Cj4gPiAgCW5yX3VhcnRzPQlbU0VSSUFMXSBtYXhpbXVtIG51 bWJlciBvZiBVQVJUcyB0byBiZSByZWdpc3RlcmVkLgo+ID4KPiA+Cj4gCj4gCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBtYWlsaW5nIGxpc3QK a2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2tleGVjCg==