From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Hildenbrand Subject: Re: [PATCH RFC] mm/memory_hotplug: Introduce memory block types Date: Tue, 2 Oct 2018 17:25:19 +0200 Message-ID: <98fb8d65-b641-2225-f842-8804c6f79a06__46124.4809478105$1538493872$gmane$org@redhat.com> References: <20180928150357.12942-1-david@redhat.com> <20181001084038.GD18290@dhcp22.suse.cz> <20181002134734.GT18290@dhcp22.suse.cz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g7MYK-0001GP-Ay for xen-devel@lists.xenproject.org; Tue, 02 Oct 2018 15:25:36 +0000 In-Reply-To: <20181002134734.GT18290@dhcp22.suse.cz> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Michal Hocko Cc: Kate Stewart , Rich Felker , linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org, Peter Zijlstra , Benjamin Herrenschmidt , Balbir Singh , Dave Hansen , Heiko Carstens , linux-mm@kvack.org, Pavel Tatashin , Paul Mackerras , "H. Peter Anvin" , Rashmica Gupta , "K. Y. Srinivasan" , Boris Ostrovsky , linux-s390@vger.kernel.org, Michael Neuling , Stephen Hemminger , Yoshinori Sato , Michael Ellerman , linux-acpi@vger.kernel.org, Ingo Molnar , xen-devel@lists.xenpro List-Id: xen-devel@lists.xenproject.org T24gMDIvMTAvMjAxOCAxNTo0NywgTWljaGFsIEhvY2tvIHdyb3RlOgo+IE9uIE1vbiAwMS0xMC0x OCAxMTozNDoyNSwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+IE9uIDAxLzEwLzIwMTggMTA6 NDAsIE1pY2hhbCBIb2NrbyB3cm90ZToKPj4+IE9uIEZyaSAyOC0wOS0xOCAxNzowMzo1NywgRGF2 aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+PiBbLi4uXQo+Pj4KPj4+IEkgaGF2ZW4ndCByZWFkIHRo ZSBwYXRjaCBpdHNlbGYgYnV0IEkganVzdCB3YW50ZWQgdG8gbm90ZSBvbmUgdGhpbmcKPj4+IGFi b3V0IHRoaXMgcGFydAo+Pj4KPj4+PiBGb3IgcGFyYXZpcnR1YWxpemVkIGRldmljZXMgaXQgaXMg cmVsZXZhbnQgdGhhdCBtZW1vcnkgaXMgb25saW5lZCBhcwo+Pj4+IHF1aWNrbHkgYXMgcG9zc2li bGUgYWZ0ZXIgYWRkaW5nIC0gYW5kIHRoYXQgaXQgaXMgYWRkZWQgdG8gdGhlIE5PUk1BTAo+Pj4+ IHpvbmUuIE90aGVyd2lzZSwgaXQgY291bGQgaGFwcGVuIHRoYXQgdG9vIG11Y2ggbWVtb3J5IGlu IGEgcm93IGlzIGFkZGVkCj4+Pj4gKGJ1dCBub3Qgb25saW5lZCksIHJlc3VsdGluZyBpbiBvdXQt b2YtbWVtb3J5IGNvbmRpdGlvbnMgZHVlIHRvIHRoZQo+Pj4+IGFkZGl0aW9uYWwgbWVtb3J5IGZv ciAic3RydWN0IHBhZ2VzIiBhbmQgZnJpZW5kcy4gTU9WQUJMRSB6b25lIGFzIHdlbGwKPj4+PiBh cyBkZWxheXMgbWlnaHQgYmUgdmVyeSBwcm9ibGVtYXRpYyBhbmQgbGVhZCB0byBjcmFzaGVzIChl LmcuIHpvbmUKPj4+PiBpbWJhbGFuY2UpLgo+Pj4KPj4+IEkgaGF2ZSBwcm9wb3NlZCAoYnV0IGhh dmVuJ3QgZmluaXNoZWQgdGhpcyBkdWUgdG8gb3RoZXIgc3R1ZmYpIGEKPj4+IHNvbHV0aW9uIGZv ciB0aGlzLiBOZXdseSBhZGRlZCBtZW1vcnkgY2FuIGhvc3QgbWVtbWFwcyBpdHNlbGYgYW5kIHRo ZW4KPj4+IHlvdSBkbyBub3QgaGF2ZSB0aGUgcHJvYmxlbSBpbiB0aGUgZmlyc3QgcGxhY2UuIEZv ciB2bWVtbWFwIGl0IHdvdWxkCj4+PiBoYXZlIGFuIGFkdmFudGFnZSB0aGF0IHlvdSBkbyBub3Qg cmVhbGx5IGhhdmUgdG8gYmVnIGZvciAyTUIgcGFnZXMgdG8KPj4+IGJhY2sgdGhlIHdob2xlIHNl Y3Rpb24gYnV0IHlvdSB3b3VsZCBnZXQgaXQgZm9yIGZyZWUgYmVjYXVzZSB0aGUgaW5pdGlhbAo+ Pj4gcGFydCBvZiB0aGUgc2VjdGlvbiBpcyBieSBkZWZpbml0aW9uIHByb3Blcmx5IGFsaWduZWQg YW5kIHVudXNlZC4KPj4KPj4gU28gdGhlIHBsYW4gaXMgdG8gImhvc3QgbWV0YWRhdGEgZm9yIG5l dyBtZW1vcnkgb24gdGhlIG1lbW9yeSBpdHNlbGYiLgo+PiBKdXN0IHdhbnQgdG8gbm90ZSB0aGF0 IHRoaXMgaXMgYmFzaWNhbGx5IGltcG9zc2libGUgZm9yIHMzOTB4IHdpdGggdGhlCj4+IGN1cnJl bnQgbWVjaGFuaXNtcy4gKGFkZGVkIG1lbW9yeSBpcyBkZWFkLCB1bnRpbCBvbmxpbmluZyBub3Rp ZmllcyB0aGUKPj4gaHlwZXJ2aXNvciBhbmQgbWVtb3J5IGlzIGFsbG9jYXRlZCkuIEl0IHdpbGwg YWxzbyBiZSBwcm9ibGVtYXRpYyBmb3IKPj4gcGFyYXZpcnR1YWxpemVkIG1lbW9yeSBkZXZpY2Vz IChlLmcuIFhFTidzICJub3QgYmFja2VkIGJ5IHRoZQo+PiBoeXBlcnZpc29yIiBoYWNrcykuCj4g Cj4gT0ssIEkgdW5kZXJzdGFuZCB0aGF0IG5vdCBhbGwgdXNlY2FzZXMgY2FuIHVzZSBzZWxmIG1l bW1hcCBob3N0aW5nCj4gb3RoZXJzIGRvIG5vdCBoYXZlIG11Y2ggY2hvaWNlIGxlZnQgdGhvdWdo LiBZb3UgaGF2ZSB0byBhbGxvY2F0ZSBmcm9tCj4gc29tZXdoZXJlLiBXZWxsIGFuZCBhbHRlcm5h dGl2ZSB3b3VsZCBiZSB0byBoYXZlIG5vIG1lbW1hcCB1bnRpbAo+IG9ubGluaW5nIGJ1dCBJIGFt IG5vdCBzdXJlIGhvdyBtdWNoIHdvcmsgdGhhdCB3b3VsZCBiZS4KPiAKPj4gVGhpcyB3b3VsZCBv bmx5IGJlIHBvc3NpYmxlIGZvciBtZW1vcnkgRElNTXMsIG1lbW9yeSB0aGF0IGlzIGNvbXBsZXRl bHkKPj4gYWNjZXNzaWJsZSBhcyBmYXIgYXMgSSBjYW4gc2VlLiBPciBhdCBsZWFzdCwgc29tZSBz cGVjaWZpZWQgImZpcnN0IHBhcnQiCj4+IGlzIGFjY2Vzc2libGUuCj4+Cj4+IE90aGVyIHByb2Js ZW1zIGFyZSBvdGhlciBtZXRhZGF0YSBsaWtlIGV4dGVuZGVkIHN0cnVjdCBwYWdlcyBhbmQgZnJp ZW5kcy4KPiAKPiBJIHdvdWxkbid0IHJlYWxseSB3b3JyeSBhYm91dCBleHRlbmRlZCBzdHJ1Y3Qg cGFnZXMuIFRob3NlIHNob3VsZCBiZQo+IHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyBtb3N0 bHkuIE90IGF0IGxlYXN0IHRoYXQgd2FzIHRoZSBjYXNlIGxhc3QKPiB0aW1lIEkndmUgY2hlY2tl ZC4KClllcywgSSBndWVzcyB0aGF0IGlzIHRydWUuIEJlaW5nIGFibGUgdG8gYWRkIGFuZCBvbmxp bmUgbWVtb3J5IHdpdGhvdXQKdGhlIG5lZWQgZm9yIGFkZGl0aW9uYWwgKGV4dGVybmFsKSBtZW1v cnkgd291bGQgYmUgdGhlIHVsdGltYXRlIGdvYWwsCmJ1dCBoaWdobHkgY29tcGxpY2F0ZWQuIEJ1 dCBzdGVwcyBpbnRvIHRoYXQgZGlyZWN0aW9uIGlzIGEgZ29vZCBpZGVhLgoKPiAKPj4gKEkgcmVh bGx5IGxpa2UgdGhlIGlkZWEgb2YgYWRkaW5nIG1lbW9yeSB3aXRob3V0IGFsbG9jYXRpbmcgbWVt b3J5IGluCj4+IHRoZSBoeXBlcnZpc29yIGluIHRoZSBmaXJzdCBwbGFjZSwgcGxlYXNlIGtlZXAg bWUgdHVuZWQpLgo+Pgo+PiBBbmQgcGxlYXNlIG5vdGU6IFRoaXMgc29sdmVzIHNvbWUgcHJvYmxl bWF0aWMgcGFydCAoImFkZGluZyB0b28gbXVjaAo+PiBtZW1vcnkgdG8gdGhlIG1vdmFibGUgem9u ZSBvciBub3Qgb25saW5pbmcgaXQiKSwgYnV0IG5vdCB0aGUgaXNzdWUgb2YKPj4gem9uZSBpbWJh bGFuY2UgaW4gdGhlIGZpcnN0IHBsYWNlLiBBbmQgbm90IG9uZSBpc3N1ZSBJIHRyeSB0byB0YWNr bGUKPj4gaGVyZTogZG9uJ3QgYWRkIHBhcmF2aXJ0dWFsaXplZCBtZW1vcnkgdG8gdGhlIG1vdmFi bGUgem9uZS4KPiAKPiBab25lIGltYmFsYW5jZSBpcyBhbiBpbmhlcmVudCBwcm9ibGVtIG9mIHRo ZSBoaWdobWVtIHpvbmUuIEl0IGlzCj4gZXNzZW50aWFsbHkgdGhlIGhpZ2htZW0gem9uZSB3ZSBh bGwgbG92ZWQgc28gbXVjaCBiYWNrIGluIDMyYiBkYXlzLgo+IFllcyB0aGUgbW92YWJsZSB6b25l IGRvZXNuJ3QgaGF2ZSBhbnkgYWRkcmVzc2luZyBsaW1pdGF0aW9ucyBzbyBpdCBpcyBhCj4gYml0 IG1vcmUgcmVsYXhlZCBidXQgY29uc2lkZXJpbmcgdGhlIGhvdHBsdWcgc2NlbmFyaW9zIEkgaGF2 ZSBzZWVuIHNvCj4gZmFyIHBlb3BsZSBqdXN0IHdhbnQgdG8gaGF2ZSBmdWxsIE5VTUEgbm9kZXMg bW92YWJsZSB0byBhbGxvdyByZXBsYWNpbmcKPiBESU1Ncy4gQW5kIHRoZW4gd2UgYXJlIGJhY2sg dG8gc3F1YXJlIG9uZSBhbmQgdGhlIHpvbmUgaW1iYWxhbmNlIGlzc3VlLgo+IFlvdSBoYXZlIHRo b3NlIHJlZ2FyZGxlc3Mgd2hlcmUgbWVtbWFwcyBhcmUgYWxsb2NhdGVkIGZyb20uCgpVbmZvcnR1 bmF0ZWx5IHllcy4gQW5kIHRoaW5ncyBnZXQgbW9yZSBjb21wbGljYXRlZCBhcyB5b3UgYXJlIGFk ZGluZyBhCndob2xlIERJTU1zIGFuZCBnZXQgbm90aWZpY2F0aW9ucyBpbiB0aGUgZ3JhbnVsYXJp dHkgb2YgbWVtb3J5IGJsb2Nrcy4KVXN1YWxseSB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIG9u bGluaW5nIGFueSBtZW1vcnkgYmxvY2sgb2YgdGhhdCBESU1NCmFzIE1PVkFCTEUgYXMgc29vbiBh cyB5b3Ugd291bGQgaGF2ZSB0byBvbmxpbmUgb25lIG1lbW9yeSBibG9jayBvZiB0aGF0CkRJTU0g YXMgTk9STUFMIC0gYmVjYXVzZSB0aGF0IGNhbiBhbHJlYWR5IGJsb2NrIHRoZSB3aG9sZSBESU1N LgoKPiAKPj4+IEkgeWV0IGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHdob2xlIHByb3Bvc2FsIGJ1 dCBJIGFtIG1pc3NpbmcgdGhlIG1vc3QKPj4+IGltcG9ydGFudCBwYXJ0LiBfV2hvXyBpcyBnb2lu ZyB0byB1c2UgdGhlIG5ldyBleHBvcnRlZCBpbmZvcm1hdGlvbiBhbmQKPj4+IGZvciB3aGF0IHB1 cnBvc2UuIFlvdSBzYWlkIHRoYXQgZGlzdHJpYnV0aW9ucyBoYXZlIGhhcmQgdGltZSB0bwo+Pj4g ZGlzdGluZ3Vpc2ggZGlmZmVyZW50IHR5cGVzIG9mIG9ubGluaW5pbmcgcG9saWNpZXMgYnV0IGlz bid0IHRoaXMKPj4+IHNvbWV0aGluZyB0aGF0IGlzIGluaGVyZW50bHkgdXNlY2FzZSBzcGVjaWZp Yz8KPj4+Cj4+Cj4+IExldCdzIHRoaW5rIGFib3V0IGEgZGlzdHJpYnV0aW9uLiBXZSBoYXZlIGEg Y2xhc2ggb2YgdXNlIGNhc2VzIGhlcmUKPj4gKGp1c3Qgd2hhdCB5b3UgZGVzY3JpYmUpLiBXaGF0 IEkgcHJvcG9zZSBzb2x2ZXMgb25lIHBhcnQgb2YgaXQgKCJoYW5kbGUKPj4gd2hhdCB5b3Uga25v dyBob3cgdG8gaGFuZGxlIHJpZ2h0IGluIHRoZSBrZXJuZWwiKS4KPj4KPj4gMS4gVXNlcnMgb2Yg RElNTXMgdXN1YWxseSBleHBlY3QgdGhhdCB0aGV5IGNhbiBiZSB1bnBsdWdnZWQgYWdhaW4uIFRo YXQKPj4gaXMgd2h5IHlvdSB3YW50IHRvIGNvbnRyb2wgaG93IHRvIG9ubGluZSBtZW1vcnkgaW4g dXNlciBzcGFjZSAoPT0gYWRkIGl0Cj4+IHRvIHRoZSBtb3ZhYmxlIHpvbmUpLgo+IAo+IFdoaWNo IGlzIG9ubHkgdHJ1ZSBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gaG90cmVtb3ZlIHRoZW0uIEkgYW0g bm90IGdvaW5nCj4gdG8gdGVsbCBob3cgbXVjaCBJIGJlbGlldmUgaW4gdGhpcyB1c2VjYXNlIGJ1 dCBtb3ZhYmxlIHBvbGljeSBpcyBub3QKPiBnZW5lcmFsbHkgYXBwbGljYWJsZSBoZXJlLgoKQ3Vz dG9tZXJzIGV4cGVjdCB0aGlzIHRvIHdvcmsgYW5kIHRoZSBib3RoIG9mIHVzIGtub3cgdGhhdCB3 ZSBjYW4ndCBtYWtlCmFueSBndWFyYW50ZWVzLiBBdCBsZWFzdCBNT1ZBQkxFIG1ha2VzIGl0IG1v cmUgbGlrZWx5IHRvIHdvcmsuIE5PUk1BTCBpcwpiYXNpY2FsbHkgaW1wb3NzaWJsZS4KCj4gCj4+ IDIuIFVzZXJzIG9mIHN0YW5kYnkgbWVtb3J5IChzMzkwKSBleHBlY3QgdGhhdCBtZW1vcnkgd2ls bCBuZXZlciBiZQo+PiBvbmxpbmVkIGF1dG9tYXRpY2FsbHkuIEl0IHdpbGwgYmUgb25saW5lZCBt YW51YWxseS4KPiAKPiB5ZWFoCj4gCj4+IDMuIFVzZXJzIG9mIHBhcmF2aXJ0dWFsaXplZCBkZXZp Y2VzIChlc3AuIEh5cGVyLVYpIGRvbid0IGNhcmUgYWJvdXQKPj4gbWVtb3J5IHVucGx1ZyBpbiB0 aGUgc2Vuc2Ugb2YgTU9WQUJMRSBhdCBhbGwuIFRoZXkgKG9yIEh5cGVyLVYhKSB3aWxsCj4+IGFk ZCBhIHdob2xlIGJ1bmNoIG9mIG1lbW9yeSBhbmQgZXhwZWN0IHRoYXQgZXZlcnl0aGluZyB3b3Jr cyBmaW5lLiBTbwo+PiB0aGF0IG1lbW9yeSBpcyBvbmxpbmVkIGltbWVkaWF0ZWx5IGFuZCB0aGF0 IG1lbW9yeSBpcyBhZGRlZCB0byB0aGUKPj4gTk9STUFMIHpvbmUuIFVzZXJzIG5ldmVyIHdhbnQg dGhlIE1PVkFCTEUgem9uZS4KPiAKPiBUaGVuIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gd291bGQg YmUgd2h5IHRvIHVzZSBtZW1vcnkgaG90cGx1ZyBmb3IgdGhhdAo+IGF0IGFsbD8gV2h5IGRvbid0 IHlvdSBzaW1wbHkgc3RhcnQgd2l0aCBhIGh1Z2UgcHJlLWFsbG9jYXRlZCBwaHlzaWNhbAo+IGFk ZHJlc3Mgc3BhY2UgYW5kIGJhbGxvb24gbWVtb3J5IGluIGFuIG91dCBwZXIgZGVtYW5kLiBXaHkg ZG8geW91IHdhbnQKPiB0byBpbmplY3QgbmV3IG1lbW9yeSBkdXJpbmcgdGhlIHJ1bnRpbWU/CgpM ZXQncyBhc3N1bWUgeW91IGhhdmUgYSBndWVzdCB3aXRoIDIwR0Igc2l6ZSBhbmQgZXZlbnR1YWxs eSB3YW50IHRvCmFsbG93IHRvIGdyb3cgaXQgdG8gNFRCLiBZb3Ugd291bGQgaGF2ZSB0byBhbGxv Y2F0ZSBtZXRhZGF0YSBmb3IgNFRCCnJpZ2h0IGZyb20gdGhlIGJlZ2lubmluZy4gVGhhdCdzIGRl ZmluaXRlbHkgbm93IHdoYXQgd2Ugd2FudC4gVGhhdCBpcwp3aHkgbWVtb3J5IGhvdHBsdWcgaXMg dXNlZCBieSBlLmcuIFhFTiBvciBIeXBlci1WLiBXaXRoIEh5cGVyLVYsIHRoZQpoeXBlcnZpc29y IGV2ZW4gdGVsbHMgeW91IGF0IHdoaWNoIHBsYWNlcyBhZGRpdGlvbmFsIG1lbW9yeSBoYXMgYmVl bgptYWRlIGF2YWlsYWJsZS4KCj4gCj4+IDEuIGlzIGEgcmVhc29uIHdoeSBkaXN0cmlidXRpb25z IHVzdWFsbHkgZG9uJ3QgY29uZmlndXJlCj4+ICJNRU1PUllfSE9UUExVR19ERUZBVUxUX09OTElO RSIsIGJlY2F1c2UgeW91IHJlYWxseSB3YW50IHRoZSBvcHRpb24gZm9yCj4+IE1PVkFCTEUgem9u ZS4gVGhhdCBob3dldmVyIGltcGxpZXMsIHRoYXQgZS5nLiBmb3IgeDg2LCB5b3UgaGF2ZSB0bwo+ PiBoYW5kbGUgYWxsIG5ldyBtZW1vcnkgaW4gdXNlciBzcGFjZSwgZXNwZWNpYWxseSBhbHNvIEh5 cGVyViBtZW1vcnkuCj4+IFRoZXJlLCB5b3UgdGhlbiBoYXZlIHRvIGNoZWNrIGZvciB0aGluZ3Mg bGlrZSAiaXNIeXBlclYoKSIgdG8gZGVjaWRlCj4+ICJvaCwgeWVzLCB0aGlzIHNob3VsZCBkZWZp bml0ZWx5IG5vdCBnbyB0byB0aGUgTU9WQUJMRSB6b25lIi4KPiAKPiBXaHkgZG8geW91IG5lZWQg YSBnZW5lcmljIGhvdHBsdWcgcnVsZSBpbiB0aGUgZmlyc3QgcGxhY2U/IFdoeSBkb24ndCB5b3UK PiBzaW1wbHkgcHJvdmlkZSBkaWZmZXJlbnQgc2V0IG9mIHJ1bGVzIGZvciBkaWZmZXJlbnQgdXNl Y2FzZXM/IExldCB1c2Vycwo+IGRlY2lkZSB3aGljaCB1c2VjYXNlIHRoZXkgcHJlZmVyIHJhdGhl ciB0aGFuIHRyeSB0byBiZSBjbGV2ZXIgd2hpY2gKPiBhbG1vc3QgYWx3YXlzIGhpdHMgd2VpcmQg Y29ybmVyIGNhc2VzLgo+IAoKTWVtb3J5IGhvdHBsdWcgaGFzIHRvIHdvcmsgYXMgcmVsaWFibGUg YXMgd2UgY2FuIG91dCBvZiB0aGUgYm94LiBMZXR0aW5nCnRoZSB1c2VyIG1ha2Ugc2ltcGxlIGRl Y2lzaW9ucyBsaWtlICJvaCwgSSBhbSBvbiBoeXBlci1WLCBJIHdhbnQgdG8Kb25saW5lIG1lbW9y eSB0byB0aGUgbm9ybWFsIHpvbmUiIGRvZXMgbm90IGZlZWwgcmlnaHQuIEJ1dCB5ZXMsIHdlCnNo b3VsZCBkZWZpbml0ZWx5IGFsbG93IHRvIG1ha2UgbW9kaWZpY2F0aW9ucy4gU28gc29tZSBzYW5l IGRlZmF1bHQgcnVsZQorIHBvc3NpYmxlIG1vZGlmaWNhdGlvbiBpcyB1c3VhbGx5IGEgZ29vZCBp ZGVhLgoKSSB0aGluayBEYXZlIGhhcyBhIHBvaW50IHdpdGggdXNpbmcgTU9WQUJMRSBmb3IgaHVn ZSBwYWdlIHVzZSBjYXNlcy4gQW5kCnRoZXJlIG1pZ2h0IGJlIG90aGVyIGNvcm5lciBjYXNlcyBh cyB5b3UgY29ycmVjdGx5IHN0YXRlLgoKSSB3b25kZXIgaWYgdGhpcyBwYXRjaCBpdHNlbGYgbWlu dXMgbW9kaWZ5aW5nIG9ubGluZS9vZmZsaW5lIG1pZ2h0IG1ha2UKc2Vuc2UuIFdlIGNhbiB0aGVu IGltcGxlbWVudCBzaW1wbGUgcnVsZXMgaW4gdXNlciBzcGFjZQoKaWYgKG5vcm1hbCkgewoJLyog Y3VzdG9tZXJzIGV4cGVjdCBob3RwbHVnZ2VkIERJTU1zIHRvIGJlIHVucGx1Z2dhYmxlICovCglv bmxpbmVfbW92YWJsZSgpOwp9IGVsc2UgaWYgKHBhcmF2aXJ0KSB7CgkvKiBwYXJhdmlydCBtZW1v cnkgc2hvdWxkIGFzIGRlZmF1bHQgYWx3YXlzIGdvIHRvIHRoZSBOT1JNQUwgKi8KCW9ubGluZSgp Owp9IGVsc2UgewoJLyogc3RhbmRieSBtZW1vcnkgd2lsbCBuZXZlciBnZXQgb25saW5lZCBhdXRv bWF0aWNhbGx5ICovCn0KCkNvbXBhcmVkIHRvIGhhdmluZyB0byBndWVzcyB3aGF0IGlzIHRvIGJl IGRvbmUgKGlzS1ZNKCksIGlzSHlwZXJWLAppc1MzOTAgLi4uKSBhbmQgZmFpbGluZyBvbmNlIHRo aXMgaXMgbm8gbG9uZ2VyIHVuaXF1ZSAoZS5nLiB2aXJ0aW8tbWVtCmFuZCBBQ1BJIHN1cHBvcnQg Zm9yIHg4NiBLVk0pLgoKLS0gCgpUaGFua3MsCgpEYXZpZCAvIGRoaWxkZW5iCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs