Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp436715imm; Tue, 3 Jul 2018 23:08:54 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcs+TwmXiutHXubDM5U7inDrfTulmnBx5RtR9UlN6J5o6mtqeMaHPD9Xzv83kCvy5/rCWrN X-Received: by 2002:a62:5dd7:: with SMTP id n84-v6mr798988pfj.68.1530684534231; Tue, 03 Jul 2018 23:08:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530684534; cv=none; d=google.com; s=arc-20160816; b=ZCZOSsZl+cvvuLh1EqTBXq7/gGCu9ua6xDPYcK2zEbHKPCY1nuHF3x5g88vrk2Nloi KlSugiofiO8vCwRiLm1Z9kbm666IwF9Ais8k3PdmLR6Z1xbOMv/iDPAtiKidOCEb4WnA PIlUvE5s06YOTf27ekly38iMtGC+DL+fPlEcBC9A7cA+vNbmoxX4mT6iVJGufB/H69x1 IUDdTUu5bLNrvSy0dHNvh4X7kcVEOhUfPY7vjWmhCgdMWGiCMGJtKu3yk7/qPBEpOxX/ eKTdezUbAue+HEI8qcpfeVuYCR8307ONS2NZn9jdxy4fgJPJyVmyPbepd7lQqOfpyged eJYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :arc-authentication-results; bh=qtCF2W4QMA3Y42yUnlmrDyHPSgjai2cGVVus84Xw/zM=; b=gUnPv98KPWbwf9MTvUvrT5J+RIQshrlsYp5xXeRIVn8AcowkbWYffZHGnKWA0Oy9CI 2BJLeMYR+Kiz4hygrEsKomG+jKjfuZSoURDP9RXUj06/egFqJbWaCOexWog6q80Vnyoi O+6SG8NF6wp7Js3ZRguLSAIGrKsIPonPFPw8kJEgSk88Cdy7ff3jXg5yQdb+e+vp6qF7 pmUY3nVao4lZeWKwUjw7zMYmaqxqtLSbIOLfZfGJra/BQ83IxO4W+yR8MoJK4xLjkMNr qtbiouQqGcM34Q6bdTabELW3oG8kdiBHhvoF+ZkZMopcEA0SsBjrttx8u6RfPDZBcWib NpeQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v36-v6si324477pga.336.2018.07.03.23.08.40; Tue, 03 Jul 2018 23:08:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933132AbeGDGH4 (ORCPT + 99 others); Wed, 4 Jul 2018 02:07:56 -0400 Received: from mga17.intel.com ([192.55.52.151]:13450 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932871AbeGDGHy (ORCPT ); Wed, 4 Jul 2018 02:07:54 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Jul 2018 23:07:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,306,1526367600"; d="scan'208";a="62129917" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 03 Jul 2018 23:07:54 -0700 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Jul 2018 23:07:54 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Jul 2018 23:07:54 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.81]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.57]) with mapi id 14.03.0319.002; Wed, 4 Jul 2018 14:07:51 +0800 From: "Yang, Bin" To: "tglx@linutronix.de" CC: "mingo@kernel.org" , "hpa@zytor.com" , "linux-kernel@vger.kernel.org" , "peterz@infradead.org" , "x86@kernel.org" Subject: Re: [PATCH] x86/mm: fix cpu stuck issue in __change_page_attr_set_clr Thread-Topic: [PATCH] x86/mm: fix cpu stuck issue in __change_page_attr_set_clr Thread-Index: AQHUDseZVh/k/cdi3Uy1ChlFZXY9E6R9B+GAgAEOxwA= Date: Wed, 4 Jul 2018 06:07:50 +0000 Message-ID: <0131cecd5d0456c2a109f4b8bdbfe558389671dd.camel@intel.com> References: <1530180340-18593-1-git-send-email-bin.yang@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.4.80] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org dGhhbmtzIGZvciByZXZpZXdpbmcgbXkgcGF0Y2guIEkgd2lsbCB1cGRhdGUgYSBuZXcgcGF0Y2gg dmVyc2lvbiBiYXNlZA0Kb24geW91ciBmZWVkYmFjayBzb29uDQoNCk9uIFR1ZSwgMjAxOC0wNy0w MyBhdCAxNTo1NyArMDIwMCwgVGhvbWFzIEdsZWl4bmVyIHdyb3RlOg0KPiBCaW4sDQo+IA0KPiBP biBUaHUsIDI4IEp1biAyMDE4LCBCaW4gWWFuZyB3cm90ZToNCj4gDQo+IHRoYW5rcyBmb3Igc3Vi bWl0dGluZyB0aGlzLg0KPiANCj4gPiAgICAgVGhpcyBpc3N1ZSBjYW4gYmUgZWFzaWx5IHRyaWdn ZXJlZCBieSBmcmVlX2luaXRtZW0oKSBmdW5jdHVpb24NCj4gPiBvbg0KPiA+ICAgICB4ODZfNjQg Y3B1Lg0KPiANCj4gUGxlYXNlIGRvIG5vdCB1c2UgdGhlIG91dHB1dCBvZiBnaXQgc2hvdyBmb3Ig c3VibWl0dGluZyBhIHBhdGNoLiBVc2UNCj4gZ2l0DQo+IGZvcm1hdC1wYXRjaCgxKS4NCg0KSSB1 c2UgImdpdCBzZW5kLWVtYWlsIC0xIiB0byBzdWJtaXQgcGF0Y2ggZm9yIHJldmlldy4gU2hvdWxk IEkgcnVuICJnaXQNCmZvcm1hdC1wYXRjaCIgZmlyc3QgYW5kIHNlbmQgdGhlIHBhdGNoIGFzIGVt YWlsPw0KDQo+IA0KPiA+ICAgICBJZiBjcHUgc3VwcG9ydHMgInBkcGUxZ2IiLCBrZXJuZWwgd2ls bCB0cnkgdG8gdXNlIDFHIGxhcmdlDQo+ID4gcGFnZS4NCj4gPiAgICAgSW4gd29yc3QgY2FzZSwg aXQgbmVlZHMgdG8gY2hlY2sgZXZlcnkgNEsgcGFnZSBpbiAxRyByYW5nZSBpbg0KPiA+ICAgICB0 cnlfcHJlc2VydmVfbGFyZ2VfcGFnZSBmdW5jdGlvbi4gSWYgX19jaGFuZ2VfcGFnZV9hdHRyX3Nl dF9jbHINCj4gPiAgICAgbmVlZHMgdG8gY2hhbmdlIGxvdHMgb2YgNEsgcGFnZXMsIGNwdSB3aWxs IGJlIHN0dWNrIGZvciBsb25nDQo+ID4gdGltZS4NCj4gDQo+IFVuZm9ydHVuYXRlbHkgeW91IG1p c3NlZCB0byBkZXNjcmliZSB3aGF0IHRoZSBhY3R1YWwgaW50ZXJmYWNlDQo+IGZ1bmN0aW9uIGlz DQo+IHdoaWNoIGlzIGNhbGxlZCBmcm9tIGEgZHJpdmVyIG9yIHdoYXRldmVyLCBpbmNsdWRpbmcg dGhlIHBhcmFtZXRlcnMuDQoNClRoaXMgaXNzdWUgaXMgZGlzY292ZXJlZCBkdXJpbmcga2VybmVs IGJvb3QgdGltZSBvcHRpbWl6YXRpb24uDQpTb21ldGltZXMsIGZyZWVfaW5pdG1lbSgpIHJldHVy bnMgYWZ0ZXIgYWJvdXQgNjAwbXMgb24gbXkgeDg2XzY0IGJvYXJkDQp3aXRoIDRHQiBtZW1vcnku DQoNClNpbmNlIGl0IGlzIGEgY29tbW9uIGlzc3VlIG9mIHg4Nl82NCwgaXQgY2FuIGJlIHJlcHJv ZHVjZWQgYnkgcWVtdSB0b28uDQpXZSBjYW4gYWRkIHNvbWUgbG9ncyBpbiB0cnlfcHJlc2VydmVf bGFyZ2VfcGFnZSgpIGZ1bmN0aW9uIHRvIG1lYXN1cmUNCnRoZSBsb29wIGNvdW50IGFuZCBlbGFw c2VkIHRpbWUuIFBsZWFzZSBtYWtlIHN1cmUgdGhlIGhvc3QgQ1BVIGhhcw0KInBkcGUxZ2IiIGZs YWcgYW5kIHJ1biBiZWxvdyBxZW11IGNvbW1hbmQgdG8gcmVwcm9kdWNlIGl0Og0KDQpxZW11LXN5 c3RlbS14ODZfNjQgLWVuYWJsZS1rdm0gLWNwdSBob3N0IC1zZXJpYWwgbW9uOnN0ZGlvIC1tIDRH DQotbm9ncmFwaGljIC1rZXJuZWwgYnpJbWFnZSAtaW5pdHJkIHJhbWRpc2suaW1nIC1hcHBlbmQg ImNvbnNvbGU9dHR5UzAiDQoNClNpbmNlIGRlZmF1bHQgeDg2XzY0IGtlcm5lbCBlbmFibGVzIENP TkZJR19SQU5ET01JWkVfQkFTRSwgaXQgbmVlZHMgdG8NCnRyeSBtYW55IHRpbWVzIHRvIGxldCBp bml0IG1lbW9yeSBiZSByYW5kb21pemVkIGluIGEgMUcgcGFnZSByYW5nZS4NCg0KQmVsb3cgaXMg dGhlIG5ldyBjb21taXQgY29tbWVudCBJIHdpbGwgdXNlIGluIG5ldyBwYXRjaCB2ZXJzaW9uIHNv b24NCg0KPT09PT09PT09PT0NCklmIGNwdSBzdXBwb3J0cyAicGRwZTFnYiIsIGtlcm5lbCB3aWxs IHRyeSBpdHMgYmVzdCB0byB1c2UgMUcgYmlnIHBhZ2UuDQpXaGVuIGNoYW5naW5nIGEgNEsgcGFn ZSBhdHRyIGluc2lkZSAxRyBwYWdlIHJhbmdlLCBfX2NoYW5nZV9wYWdlX2F0dHIoKQ0Kd2lsbCBl aXRoZXIgY29uc3VtZSB0aGlzIDRLIHBhZ2UgaW50byB0aGUgMUcgcGFnZSwgb3IgaXQgc3BsaXRz IDFHIHBhZ2UNCmludG8gMk0gcGFnZXMgYW5kIHRyaWVzIGFnYWluLiBUaGUgcmV0cnkgd2lsbCBl aXRoZXIgY29uc3VtZSB0aGUgNEsNCnBhZ2UgaW50byBhIDJNQiBwYWdlLCBvciBpdCBzcGxpdHMg Mk1CIHBhZ2UgaW50byA0SyBwYWdlcy4NCnRyeV9wcmVzZXJ2ZV9sYXJnZV9wYWdlKCkgaXMgY2Fs bGVkIGJ5IF9fY2hhbmdlX3BhZ2VfYXR0cigpIHRvIGRlY2lkZQ0KaXQgYnkgY2hlY2tpbmcgYWxs IDRLIHBhZ2VzIGluc2lkZSB0aGUgYmlnIHBhZ2Ugb25lIGJ5IG9uZS4NCg0KVGhlIGNwdSBzdHVj ayBpc3N1ZSBpcyBpbnRyb2R1Y2VkIGJ5IDFHIHBhZ2UgZnVsbCByYW5nZSBjaGVjay4gSWYgdGhl DQpyZXN1bHQgaXMgbm90IHRvIHNwbGl0IDFHIHBhZ2UsIHRoZSBjaGVjayBsb29wIGNvdW50IHdp bGwgYmUgMUdCLzRLQg0KPSAyNjIxNDQuIElmIGl0IG5lZWRzIHRvIGNoYW5nZSAiTiIgNEsgcGFn ZXMgYW5kIG5vbiBvZiB0aGVtIG5lZWRzIHRvDQpzcGxpdCAxR0IgcGFnZSwgdGhlIHRvdGFsIGxv b3AgY291bnQgd2lsbCBiZSBOICogMjYyMTQ0LiBNeSBwYXRjaA0KdGFyZ2V0cyB0byByZWR1Y2Ug dGhlIGxvb3AgY291bnQgZnJvbSBOICogMjYyMTQ0IHRvIDEgKiAyNjIxNDQNCg0KVGhlIGZ1bGwg cmFuZ2UgY2hlY2sgKDI2MjE0NCBsb29wcykgbWlnaHQgc3BlbmQgNTAwIH4gMTUwMHVzIGRlcGVu ZHMgb24NCnRoZSBDUFUgc3BlZWQuIER1cmluZyBrZXJuZWwgYm9vdCwgZnJlZV9pbml0X3BhZ2Vz KCkgbWlnaHQgdHJpZ2dlciB0aGlzDQppc3N1ZSB3aGVuIGZyZWVpbmcgInVudXNlZCBrZXJuZWwi IGFuZCAiaW5pdHJkIiBtZW1vcnkuIEluIHdvcnN0IGNhc2UsDQppDQp0IG5lZWRzIHRvIHJ1biBm dWxsIGNoZWNrIGZvciBldmVyeSA0SyBwYWdlcyBvZiB0aGVzZSBpbml0IG1lbW9yaWVzLA0Kd2hp DQpjaCBtaWdodCBpbnRyb2R1Y2UgaHVuZHJlZHMgb2YgbWlsaXNlY29uZHMga2VybmVsIGJvb3Qg bGF0ZW5jeS4NCklmIHRoaXMNCmlzc3VlIGhhcHBlbnMgZHVyaW5nIHJ1bnRpbWUsIGl0IG1pZ2h0 IGNhdXNlIHN5c3RlbSBzdHVjayBmb3INCnRlbnMgb2YNCm1pbGlzZWNvbmRzLiBJdCBpcyB1bmFj Y2VwdGFibGUgZm9yIHRpbWUgY3JpdGljYWwgdGFzay4NCg0KVGhpcyBwYXRjaCB0cnkgdG8gY2Fj aGUgdGhlIGxhc3QgYWRkcmVzcyB3aGljaCBoYWQgYmVlbiBjaGVja2VkIGp1c3QNCm5vdy4gSWYg dGhlIG5leHQgYWRkcmVzcyBpcyBpbiBzYW1lIGJpZyBwYWdlIHdpdGggc2FtZSBhdHRyLCB0aGUg Y2FjaGUNCndpbGwgYmUgdXNlZCB3aXRob3V0IGZ1bGwgcmFuZ2UgY2hlY2suDQoNCkFkZGluZyBs b2dzIGluIGZyZWVfaW5pdF9wYWdlcygpIGFuZCB0cnlfcHJlc2VydmVfbGFyZ2VfcGFnZSgpIHNo b3dzDQp0aGlzIHBhdGNoIGNhbiByZWR1Y2UgZnVsbCByYW5nZSBjaGVjayB0aW1lIHRvIGxlc3Mg dGhhbiA1dXMgd2hlbiBjYWNoZQ0KaXMgaGl0LiBBbmQga2VybmVsIGJvb3QgdGltZSBjYW4gYmUg cmVkdWNlZCBodW5kcmVkcyBvZiBtaWxpc2Vjb25kcy4NCg0KPiANCj4gPiBAQCAtNTUyLDE2ICs1 NTIsMjAgQEAgc3RhdGljIGludA0KPiA+ICB0cnlfcHJlc2VydmVfbGFyZ2VfcGFnZShwdGVfdCAq a3B0ZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLA0KPiA+ICAJCQlzdHJ1Y3QgY3BhX2RhdGEgKmNw YSkNCj4gPiAgew0KPiA+ICsJc3RhdGljIHVuc2lnbmVkIGxvbmcgYWRkcmVzc19jYWNoZTsNCj4g PiArCXN0YXRpYyB1bnNpZ25lZCBsb25nIGRvX3NwbGl0X2NhY2hlID0gMTsNCj4gDQo+IFdoYXQg YXJlIHRoZSBsaWZlIHRpbWUgYW5kIHByb3RlY3Rpb24gcnVsZXMgb2YgdGhlc2Ugc3RhdGljIHZh cmlhYmxlcw0KPiBhbmQNCj4gd2h5IGFyZSB0aGV5IHN0YXRpYyBpbiB0aGUgZmlyc3QgcGxhY2Uu DQoNCnRoZXkgd2lsbCBiZSBwcm90ZWN0ZWQgYnkgcGdkX2xvY2suIFRoZXkgb25seSBjYWNoZSBw cmV2aW91cyAiZG9fc3BsaXQiDQpyZXN1bHQgYW5kIHdpbGwgYmUgcmVmcmVzaGVkIGV2ZXJ5IHRp bWUuDQoNCj4gDQo+ID4gIAl1bnNpZ25lZCBsb25nIG5leHRwYWdlX2FkZHIsIG51bXBhZ2VzLCBw bWFzaywgcHNpemUsIGFkZHIsDQo+ID4gcGZuLCBvbGRfcGZuOw0KPiA+ICAJcHRlX3QgbmV3X3B0 ZSwgb2xkX3B0ZSwgKnRtcDsNCj4gPiAgCXBncHJvdF90IG9sZF9wcm90LCBuZXdfcHJvdCwgcmVx X3Byb3Q7DQo+ID4gIAlpbnQgaSwgZG9fc3BsaXQgPSAxOw0KPiA+ICAJZW51bSBwZ19sZXZlbCBs ZXZlbDsNCj4gPiAgDQo+ID4gLQlpZiAoY3BhLT5mb3JjZV9zcGxpdCkNCj4gPiArCXNwaW5fbG9j aygmcGdkX2xvY2spOw0KPiA+ICsJaWYgKGNwYS0+Zm9yY2Vfc3BsaXQpIHsNCj4gPiArCQlkb19z cGxpdF9jYWNoZSA9IDE7DQo+IA0KPiBSZXR1cm5zIHdpdGggcGdkX2xvY2sgaGVsZCB3aGljaCB3 aWxsIGltbWVkaWF0ZWx5IGxvY2t1cCB0aGUgc3lzdGVtDQo+IG9uIHRoZQ0KPiBuZXh0IHNwaW5f bG9jaygmcGdkX2xvY2spIG9wZXJhdGlvbi4NCkkgYW0gc28gc29ycnkgdG8gbWFrZSBzdWNoIHN0 dXBpZCBtaXN0YWtlLiBmb3JjZV9zcGxpdCB3YXMgbm90IGhpdCBvbg0KbXkgYm9hcmQgOigNCj4g DQo+IEFsc28gd2hhdCdzIHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoZSBhbHJlYWR5IGF2YWlsYWJs ZSBpbmZvcm1hdGlvbiBvZg0KPiBjcGEtPmZvcmNlX3NwbGl0IGluIHlldCBhbm90aGVyIHZhcmlh YmxlPyBUaGlzIGVuZm9yY2VzIHRha2luZyB0aGUNCj4gbG9jayBvbg0KPiBldmVyeSBpbnZvY2F0 aW9uIGZvciBubyByZWFzb24uDQpBcyB5b3Uga25vdywgZG9fc3BsaXQgaXMgaW5pdGlhbGl6ZWQg YXMgMS4gSWYgZG9fc3BsaXRfY2FjaGUgPT0gMSwgdGhlDQpjYWNoZSB2YWx1ZSB3aWxsIG5vdCBi ZSB1c2VkLiBJZiBmb3JjZV9zcGxpdCA9PSAxLCBjYWNoZSB2YWx1ZSBzaG91bGQNCmJlIGV4cGly ZWQuIFNpbmNlIGRvX3NwbGl0X2NhY2hlIGlzIHByb3RlY3RlZCBieSB0aGlzIGxvY2ssIGl0IG5l ZWRzIHRvDQp0YXNrIHRoaXMgbG9jayBoZXJlLg0KPiANCj4gPiAgCQlyZXR1cm4gMTsNCj4gPiAr CX0NCj4gPiAgDQo+ID4gLQlzcGluX2xvY2soJnBnZF9sb2NrKTsNCj4gPiAgCS8qDQo+ID4gIAkg KiBDaGVjayBmb3IgcmFjZXMsIGFub3RoZXIgQ1BVIG1pZ2h0IGhhdmUgc3BsaXQgdGhpcyBwYWdl DQo+ID4gIAkgKiB1cCBhbHJlYWR5Og0KPiA+IEBAIC02MjcsMTMgKzYzMSwyNSBAQCB0cnlfcHJl c2VydmVfbGFyZ2VfcGFnZShwdGVfdCAqa3B0ZSwgdW5zaWduZWQNCj4gPiBsb25nIGFkZHJlc3Ms DQo+ID4gIA0KPiA+ICAJbmV3X3Byb3QgPSBzdGF0aWNfcHJvdGVjdGlvbnMocmVxX3Byb3QsIGFk ZHJlc3MsIHBmbik7DQo+ID4gIA0KPiA+ICsJYWRkciA9IGFkZHJlc3MgJiBwbWFzazsNCj4gPiAr CXBmbiA9IG9sZF9wZm47DQo+ID4gKwkvKg0KPiA+ICsJICogSWYgYW4gYWRkcmVzcyBpbiBzYW1l IHJhbmdlIGhhZCBiZWVuIGNoZWNrZWQganVzdCBub3csDQo+ID4gcmUtdXNlIHRoZQ0KPiA+ICsJ ICogY2FjaGUgdmFsdWUgd2l0aG91dCBmdWxsIHJhbmdlIGNoZWNrLiBJbiB0aGUgd29yc3QNCj4g PiBjYXNlLCBpdCBuZWVkcyB0bw0KPiA+ICsJICogY2hlY2sgZXZlcnkgNEsgcGFnZSBpbiAxRyBy YW5nZSwgd2hpY2ggY2F1c2VzIGNwdSBzdHVjaw0KPiA+IGZvciBsb25nDQo+ID4gKwkgKiB0aW1l Lg0KPiA+ICsJICovDQo+ID4gKwlpZiAoIWRvX3NwbGl0X2NhY2hlICYmDQo+ID4gKwkgICAgYWRk cmVzc19jYWNoZSA+PSBhZGRyICYmIGFkZHJlc3NfY2FjaGUgPCBuZXh0cGFnZV9hZGRyDQo+ID4g JiYNCj4gDQo+IE9uIHRoZSBmaXJzdCBjYWxsLCBhZGRyZXNzX2NhY2hlIGNvbnRhaW5zIDAuIE9u IGFueSBzdWJzZXF1ZW50IGNhbGwNCm9uIHRoZSBmaXJzdCBjYWxsLCBkb19zcGxpdF9jYWNoZSBp cyAxLiBpZiBkb19zcGxpdF9jYWNoZSA9PSAxLA0KYWRkcmVzc19jYWNoZSB3aWxsIG5vdCBiZSB1 c2VkLg0KPiBhZGRyZXNzX2NhY2hlcyBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlv dXMgaW52b2NhdGlvbiBvZg0KPiB0cnlfcHJlc2VydmVfbGFyZ2VfcGFnZSgpLg0KPiANCj4gQnV0 IGFkZHIgPSBhZGRyZXNzICYgcG1hc2shIFNvIHlvdSBhcmUgY29tcGFyaW5nIGFwcGxlcyBhbmQg b3Jhbmdlcy4NCj4gTm90DQo+IHN1cmUgaG93IHRoYXQgaXMgc3VwcG9zZWQgdG8gd29yayBjb3Jy ZWN0bHkuDQoNClllcywgaXQgbmVlZHMgdG8gdXBkYXRlIGNoZWNrIGxvZ2ljIGhlcmUuIEFuZCBp dCBhbHNvIG5lZWRzIHRvIGNhY2hlDQp0aGUgY2FjaGVkIGFkZHJlc3MgcGFnZSBhdHRyIHRvby4g Q3VycmVudCBwYWdlIGF0dHIgbWlnaHQgbm90IGJlIHNhbWUNCmFzIHByZXZpb3VzIG9uZS4gSSB3 aWxsIHNlbmQgYSBuZXcgcGF0Y2ggdmVyc2lvbiB0byBmaXggaXQNCg0KPiANCj4gPiArCSAgICBw Z3Byb3RfdmFsKG5ld19wcm90KSA9PSBwZ3Byb3RfdmFsKG9sZF9wcm90KSkgew0KPiA+ICsJCWRv X3NwbGl0ID0gZG9fc3BsaXRfY2FjaGU7DQo+IA0KPiBUaGlzIGlzIGFuIHZlcnkgb2JzY3VyZSB3 YXkgdG8gd3JpdGU6DQpJIHdpbGwgdXBkYXRlIHRoZSBjYWNoZSBsb2dpYw0KPiANCj4gICAgCSAg ICAgICAgZG9fc3BsaXQgPSAwOw0KPiANCj4gYmVjYXVzZSBkb19zcGxpdF9jYWNoZSBtdXN0IGJl IDAgb3RoZXJ3aXNlIGl0IGNhbm5vdCByZWFjaCB0aGF0IGNvZGUNCj4gcGF0aC4NCj4gDQo+ID4g KwkJZ290byBvdXRfdW5sb2NrOw0KPiA+ICsJfQ0KPiA+ICAJLyoNCj4gPiAgCSAqIFdlIG5lZWQg dG8gY2hlY2sgdGhlIGZ1bGwgcmFuZ2UsIHdoZXRoZXINCj4gPiAgCSAqIHN0YXRpY19wcm90ZWN0 aW9uKCkgcmVxdWlyZXMgYSBkaWZmZXJlbnQgcGdwcm90IGZvciBvbmUNCj4gPiBvZg0KPiA+ICAJ ICogdGhlIHBhZ2VzIGluIHRoZSByYW5nZSB3ZSB0cnkgdG8gcHJlc2VydmU6DQo+ID4gIAkgKi8N Cj4gPiAtCWFkZHIgPSBhZGRyZXNzICYgcG1hc2s7DQo+ID4gLQlwZm4gPSBvbGRfcGZuOw0KPiA+ ICAJZm9yIChpID0gMDsgaSA8IChwc2l6ZSA+PiBQQUdFX1NISUZUKTsgaSsrLCBhZGRyICs9DQo+ ID4gUEFHRV9TSVpFLCBwZm4rKykgew0KPiA+ICAJCXBncHJvdF90IGNoa19wcm90ID0gc3RhdGlj X3Byb3RlY3Rpb25zKHJlcV9wcm90LA0KPiA+IGFkZHIsIHBmbik7DQo+ID4gIA0KPiA+IEBAIC02 NzAsNiArNjg2LDggQEAgdHJ5X3ByZXNlcnZlX2xhcmdlX3BhZ2UocHRlX3QgKmtwdGUsIHVuc2ln bmVkDQo+ID4gbG9uZyBhZGRyZXNzLA0KPiA+ICAJfQ0KPiA+ICANCj4gPiAgb3V0X3VubG9jazoN Cj4gPiArCWFkZHJlc3NfY2FjaGUgPSBhZGRyZXNzOw0KPiA+ICsJZG9fc3BsaXRfY2FjaGUgPSBk b19zcGxpdDsNCj4gPiAgCXNwaW5fdW5sb2NrKCZwZ2RfbG9jayk7DQo+IA0KPiBTbyBoZXJlIHlv dSBzdG9yZSB0aGUgJ2NhY2hlJyB2YWx1ZXMgYW5kIHdoaWxlIHRoaXMgY29kZSBzdWdnZXN0cw0K PiB0aGF0IGl0DQo+IHByb3RlY3RzIHRoZSAnY2FjaGUnIHZpYSBwZ2RfbG9jayAoZHVlIHRvIGxh Y2sgb2YgY29tbWVudHMpLCB0aGUNCj4gcHJvdGVjdGlvbg0KPiBpcyBhY3R1YWxseSBjcGFfbG9j ay4NCj4gDQo+IEJ1dCwgdGhhdCBjYWNoZSBpbmZvcm1hdGlvbiBzdGF5cyBhcm91bmQgd2hlbiBj cGFfbG9jayBpcyBkcm9wcGVkLA0KPiBpLmUuIHdoZW4gdGhlIGN1cnJlbnQgKHBhcnRpYWwpIG9w ZXJhdGlvbiBoYXMgYmVlbiBkb25lIGFuZCB0aGlzDQo+IGluZm9ybWF0aW9uIHN0YXlzIHN0YWxl IGZvciB0aGUgbmV4dCB1c2VyLiBUaGF0IGRvZXMgbm90IG1ha2Ugc2Vuc2UuDQoNCl9fY2hhbmdl X3BhZ2VfYXR0ciBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBjaGFuZ2UgcGFnZSBhdHRyIGFuZA0K dHJ5X3ByZXNlcnZlX2xhcmdlX3BhZ2Ugd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSBmb3IgYmln IHBhZ2UgY2hlY2suDQpJZiBhIGJpZyBwYWdlIGhhZCBiZWVuIHNwbGl0dGVkLCBpdCB3aWxsIG5v dCBiZSBtZXJnZWQgYWdhaW4uIFNvIGl0IGlzDQpzYWZlIHRvIGNhY2hlIHByZXZpb3VzIHJlc3Vs dCBpbiB0cnlfcHJlc2VydmVfbGFyZ2VfcGFnZSgpIGZ1bmN0aW9uLg0KDQo+IA0KPiBJJ20gc3Rp bGwgcHV6emxlZCBob3cgdGhhdCBjYW4gZXZlciBoYXBwZW4gYXQgYWxsIGFuZCB3aGljaCBwcm9i bGVtDQo+IHlvdSBhcmUNCj4gdHJ5aW5nIHRvIHNvbHZlLg0KPiANCj4gVGhlIGZpcnN0IGludm9j YXRpb24gb2YgdHJ5X3RvX3ByZXNlcnZlX2xhcmdlX3BhZ2UoKSB3aWxsIGVpdGhlcg0KPiBwcmVz ZXJ2ZQ0KPiB0aGUgMUdCIHBhZ2UgYW5kIGNvbnN1bWUgdGhlIG51bWJlciBvZiA0SyBwYWdlcyB3 aGljaCBmaXQgaW50byBpdCwgb3INCj4gaXQNCj4gc3BsaXRzIGl0IGludG8gMk0gY2h1bmtzIGFu ZCB0cmllcyBhZ2Fpbi4gVGhlIHJldHJ5IHdpbGwgZWl0aGVyDQo+IHByZXNlcnZlDQo+IHRoZSAy TSBjaHVuayBhbmQgYW5kIGNvbnN1bWUgdGhlIG51bWJlciBvZiA0SyBwYWdlcyB3aGljaCBmaXQg aW50bw0KPiBpdCwgb3INCj4gaXQgc3BsaXRzIGl0IGludG8gNEsgcGFnZXMuIE9uY2Ugc3BsaXQg aW50byA0Sywgc3Vic2VxdWVudA0KPiBpbnZvY2F0aW9ucyB3aWxsDQo+IHJldHVybiBiZWZvcmUg cmVhY2hpbmcgdGhlIG1hZ2ljIGNhY2hlIGNoZWNrcy4NCj4gDQo+IENhbiB5b3UgcGxlYXNlIGRl c2NyaWJlIHRoZSBjYWxsIGNoYWluLCB0aGUgZHJpdmVyIGZhY2luZyBmdW5jdGlvbg0KPiB1c2Vk IGFuZA0KPiB0aGUgcGFyYW1ldGVycyB3aGljaCBhcmUgaGFuZGVkIGluPw0KDQpwbGVhc2UgcmVm ZXIgdG8gdGhlIG5ldyBjb21tZW50IGFib3Zl44CCDQo+IA0KPiBUaGFua3MsDQo+IA0KPiAJdGds eA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA==