From mboxrd@z Thu Jan 1 00:00:00 1970 From: jack_wang Subject: Re: Re: [PATCH] pm8001: enhance firmware event log retrieval Date: Thu, 19 Jan 2012 22:09:11 +0800 Message-ID: <201201192209077347412@usish.com> References: <97204CD5-5C4D-4E62-ADD4-CE51AB11C460@xyratex.com> <30B08FEC5E894494BBDA33881AB0E955@usish.com.cn>, <4D0DDF70-3926-4CDC-ACA8-E2C02005CFA5@xyratex.com> Reply-To: jack_wang Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Received: from sr-smtp.usish.com ([210.5.144.203]:33409 "EHLO sr-smtp.usish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751567Ab2ASOJR (ORCPT ); Thu, 19 Jan 2012 09:09:17 -0500 Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org Cc: Mark Salyzyn , linux-scsi , crystal_yu , lindar_liu , James Bottomley DQo+VGhlIHVzZXIgdGhhdCBuZWVkZWQgdGhpcyB3YXMgUE1DIGVuZ2luZWVyaW5nLCB5b3Ugc2Vl IHRoZXkgbmVlZGVkIHRoZSBldmVudCBsb2csIGFsb25nIHdpdGggdGhlaXIgcHJvcHJpZXRhcnkg PHNpZ2g+IGZvcmVuc2ljcywgdG8gZGVidWcgYSBmYWlsdXJlIG9uIHRoZSBTQVMgYnVzIGFuZCBy ZXBvcnQgdGhhdCBiYWNrIHRvIHVzLiBUaGUgdGVzdCB3YXMgdGhlaXIgc2F0aXNmYWN0aW9uIHdo ZW4gdGhleSBwcm92aWRlZCBhIHJlc3BvbnNlIHRvIHRoZSB0cm91YmxlIHJlcXVlc3Qgd2l0aCBh biBhY2N1cmF0ZSBwb3J0cmF5YWwgb2YgdGhlIHJvb3QgY2F1c2UuDQpZZXMsIFBNQyBhbHdheXMg YXNrIGZvciBsb2cgdG8gYW5hbHl6ZSBmYWlsdXJlIGluIHRoZSBjaGlwLiANCj4NCj5NeSB1bml0 IHRlc3QgKG1vcmUgdGhhbiBhIHllYXIgYWdvKSB3YXMgdG8gcnVuIGEgc3lzdGVtIGZvciBhIGRh eSB3aXRoIGEgaGlnaCBldmVudCBsZXZlbCwgZmlkZGxpbmcgY2FibGVzLCB0aGVuIHB1bGwgdGhl IGV2ZW50cywgd2F0Y2hpbmcgZm9yIHRoZSBib3VuZGFyeSBjb25kaXRpb24gKHN0dXR0ZXIgb2Yg dGhlIGxhc3QgZW50cnkpLiBDb250ZW50IHdhcyBvdGhlcndpc2Ugb3BhcXVlIHRvIG1lLg0KDQpU aGFua3MgZm9yIHNoYXJlLCB0aGlzIGlzIHZlcnkgaGVscGZ1bC4NCj4NCj5Ub0RvIGlzIHRvIGFk ZCBhICd3cml0ZScgdG8gdGhlIG5vZGUgdG8gcmVzZXQgdGhlIG91dGdvaW5nIHBvaW50ZXIgYW5k IHRvIGFkZCBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBldmVudHMgYXMgcGFydCBvZiB0aGUgbnVt ZXJpY2FsIGRhdGE7IGJ1dCB0aGVyZSBpcyBubyBpbXBldHVvdXMgZm9yIHRoYXQgcmlnaHQgbm93 Lg0KPg0KWWVzLCBJIHRoaW5rIHRoaXMgaXMgYSBsb3cgcHJpb3JpdHkgdGFzay4NCg0KVGhhbmtz DQoNCkphY2sNCj5TaW5jZXJlbHkgLS0gTWFyayBTYWx5enluDQo+DQo+T24gSmFuIDE5LCAyMDEy LCBhdCAyOjM3IEFNLCBKYWNrIFdhbmcgd3JvdGU6DQo+DQo+Pj4gVGhlIHBtODAwMSBkcml2ZXIg ZXZlbnQgbG9nIGN1cnJlbnRseSBvbmx5IHJlcG9ydHMgdGhlIGN1cnJlbnQgZmlybXdhcmUNCj4+ IGV2ZW50DQo+Pj4gbG9nIGluZGV4IGFuZCB0aGUgZmlyc3QgZW50cnkgKGlmIGxvZyBoYXMgbm90 IHdyYXBwZWQpLiBUaGUgZW5jbG9zZWQgcGF0Y2gNCj4+PiBlbmhhbmNlcyB0aGUgZXZlbnQgbG9n IHJldHJpZXZlZCB0byBzZXF1ZW50aWFsbHkgcmV0dXJuIGFsbCB1bi1yZXRyaWV2ZWQNCj4+PiBl bnRyaWVzIHVudGlsIGhpdHRpbmcgdGhlIGxhc3QsIGZyb20gdGhlbiBvbiByZXBvcnRpbmcgdGhl IGxhc3QgZW50cnkuIFRoZQ0KPj4+IGZvcm1hdCBoYXMgYmVlbiBjaGFuZ2VkIGluIGEgcGFyc2Vh YmxlIGZhc2hpb24gcmVwb3J0aW5nIHNvbWUgb2YgdGhlDQo+PiBpbnRlcnByZXRlZA0KPj4+IGZp ZWxkczsgdGhlIGVudHJ5IHNlcXVlbmNlIG51bWJlciBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUg dGhlIGJvdW5kYXJ5DQo+Pj4gY29uZGl0aW9uIHdoZW4gdGhlIGxhc3QgZW50cnkgaXMgcmV0cmll dmVkLg0KPj4+IA0KPj4+IEZvcm1lcmx5LCB3aGVuIHRoZSBsb2dnaW5nIGxldmVsIGlzIGNoYW5n ZWQgYXQgcnVudGltZSwgaXQgZG9lcyBub3QNCj4+IHRyYW5zbWl0DQo+Pj4gdGhlIHVwZGF0ZWQg bGV2ZWwgdG8gdGhlIGZpcm13YXJlLiBXZSBhbHNvIGFkZGVkIGEgc2V0IG9mIGluc21vZA0KPj4g cGFyYW1ldGVycw0KPj4+IHNvIHRoYXQgdGhlIGxvZ2dpbmcgbGV2ZWwgbWF5IGJlIHNldCBhdCBp bml0aWFsaXphdGlvbiB0aW1lLg0KPj4+IA0KPj4gW0phY2sgV2FuZ10gUGF0Y2ggaXMgd2VsY29t ZS4NCj4+PiBBcyB0aGlzIGRpc3J1cHRzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlIGxvb2sg Zm9yd2FyZCB0byBjb21tdW5pdHkNCj4+IGNvbW1lbnRzLg0KPj4+IEFsc28sIG9uY2UgYW4gZWFy bGllciBsb2cgZW50cnkgaXMgcmV0cmlldmVkLCBpdCBpcyB0aGUgZXhwZWN0YXRpb24gb2YgdGhl DQo+Pj4gbG9nZ2luZy9mb3JlbnNpYyBwcm9ncmFtKD8pIHRvIHJlY29yZCB0aGVtIGFzIHRoZXkg Y2FuIG5vdCBiZSByZXRyaWV2ZWQNCj4+IGFnYWluLg0KPj4+IFBsZWFzZSBrZWVwIGluIG1pbmQg dGhhdCB0aGUgZmlyc3QgZXZlbnQgbG9nIGVudHJ5IGFzIHByZXZpb3VzbHkgcmVwb3J0ZWQNCj4+ IGJ5DQo+Pj4gdGhlIGV4aXN0aW5nIGNvZGUgYmVjb21lcyBzb21ld2hhdCBtb290IGlmIG5ldyBl bnRyaWVzIGZvcm0uDQo+Pj4gDQo+PiBbSmFjayBXYW5nXSBJIHdvbmRlciB3aGF0IHVzZXIgbmVl ZCB0aGlzIGZ1bmN0aW9uPyBIb3cgZG8geW91IHRlc3QgdGhpcw0KPj4gZnVuY3Rpb24/DQo+PiAN Cj4+PiBTaWduZWQtb2ZmLWJ5OiBtYXJrX3NhbHl6eW5AeHlyYXRleC5jb20NCj4+PiBDYzogamFj a193YW5nQHVzaXNoLmNvbQ0KPj4+IENjOiBKQm90dG9tbGV5QHBhcmFsbGVscy5jb20NCj4+PiBD YzogY3J5c3RhbF95dUB1c2lzaC5jb20NCj4+PiBDYzogam9obl9nb25nQHVzaXNoLmNvbQ0KPj4+ IENjOiBsaW5kYXJfbGl1IDxsaW5kYXJfbGl1QHVzaXNoLmNvbT4NCj4+IA0KPj4gW0phY2sgV2Fu Z10gDQo+PiBBY2tlZC1ieTogSmFjayBXYW5nIDxqYWNrX3dhbmdAdXNpc2guY29tPg0KPj4gVGhh bmtzLg0KPj4gDQo+Pj4gDQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04 MDAxX2N0bC5jDQo+Pj4gYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9jdGwuYw0KPj4+IGlu ZGV4IDQ1YmMxOTcuLjNmZTNkOTMgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9zY3NpL3BtODAw MS9wbTgwMDFfY3RsLmMNCj4+PiArKysgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9jdGwu Yw0KPj4+IEBAIC0yMjgsNDYgKzIyOCwxNDAgQEAgc3RhdGljIHNzaXplX3QNCj4+IHBtODAwMV9j dGxfbG9nZ2luZ19sZXZlbF9zdG9yZShzdHJ1Y3QNCj4+PiBkZXZpY2UgKmNkZXYsDQo+Pj4gCQly ZXR1cm4gLUVJTlZBTDsNCj4+PiANCj4+PiAJcG04MDAxX2hhLT5sb2dnaW5nX2xldmVsID0gdmFs Ow0KPj4+ICsJcG04MDAxX3VwZGF0ZV9tYWluX2NvbmZpZ190YWJsZShwbTgwMDFfaGEpOw0KPj4+ IAlyZXR1cm4gc3RybGVuKGJ1Zik7DQo+Pj4gfQ0KPj4+IA0KPj4+IHN0YXRpYyBERVZJQ0VfQVRU Uihsb2dnaW5nX2xldmVsLCBTX0lSVUdPIHwgU19JV1VTUiwNCj4+PiAJcG04MDAxX2N0bF9sb2dn aW5nX2xldmVsX3Nob3csIHBtODAwMV9jdGxfbG9nZ2luZ19sZXZlbF9zdG9yZSk7DQo+Pj4gKw0K Pj4+IC8qKg0KPj4+IC0gKiBwbTgwMDFfY3RsX2FhcF9sb2dfc2hvdyAtIGFhcDEgZXZlbnQgbG9n DQo+Pj4gKyAqIHBtODAwMV9yZWFkbG9nIC0gZ2VuZXJpYyByb3V0aW5lIHRvIHJlYWQgYSBzaW5n bGUgZXZlbnQgbG9nIGVudHJ5DQo+Pj4gKyAqIEBoZWFkZXI6IGEgcG9pbnRlciB0byB0aGUgZXZl bnQgbG9nIGJhc2UgaGVhZGVyDQo+Pj4gKyAqIEBlbnRyeTogYSBwb2ludGVyIHRvIGNvcHkgdGhl IGxhdGVzdCBldmVudCBsb2cgaW50bw0KPj4+ICsgKiBAY29uc3VtZXJfaW5kZXg6IGEgY3VycmVu dCBsb2NhbCBpbmRleCBwb2ludGluZyB0byB0aGUgbGFzdCBvbGRlc3QNCj4+IGVudHJ5DQo+Pj4g KyAqICAgICAgICAgICAgICAgICAgcmV0cmlldmVkLiBBdXRvbWF0aWNhbGx5IGluY3JlbWVudGVk IGFuZCB3cmFwcGVkLg0KPj4+ICsgKiBAcmV0dXJuOiBBIGNvcGllZCBlbnRyeSBjb250ZW50IGFu ZCBhIHN0YXR1cy4gU3RhdHVzIHJldHVybiBvZiB6ZXJvDQo+PiBtZWFucw0KPj4+ICsgKiAgICAg ICAgICBtb3JlIGVudHJpZXMgYXZhaWxhYmxlLCBhbmQgdGhlIGNvbnN1bWVyIGluZGV4IGlzIGlu Y3JlbWVudGVkDQo+PiBhbmQNCj4+PiArICogICAgICAgICAgd3JhcHBlZC4gQSBwb3NpdGl2ZSBz dGF0dXMgcmV0dXJuIG1lYW5zIGxhc3QgZW50cnksIHRoZQ0KPj4gY29uc3VtZXINCj4+PiArICog ICAgICAgICAgaW5kZXggbWF5IGJlIGluY3JlbWVudGVkIGRlcGVuZGluZyBvZiBhcHByb2FjaGVk IG9yIGF0IHRoZQ0KPj4gbGFzdA0KPj4+ICsgKiAgICAgICAgICBlbnRyeS4gU3RhdHVzIGNhbiBh bHNvIHJldHVybiBhIG5lZ2F0aXZlIGVycm9yIGNvZGUuIEl0IGlzDQo+PiB0aGUNCj4+PiArICog ICAgICAgICAgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0byBjb25maXJtIHRoZSB2YWxp ZGl0eSBvZiB0aGUNCj4+IGNvcGllZA0KPj4+ICsgKiAgICAgICAgICBldmVudCBpbmZvcm1hdGlv bi4NCj4+PiArICovDQo+Pj4gK2ludCBwbTgwMDFfcmVhZGxvZygNCj4+PiArCXN0cnVjdCBldmVu dGxvZ19oZWFkZXIgKmhlYWRlciwNCj4+PiArCXN0cnVjdCBldmVudGxvZ19lbnRyeSAqZW50cnks DQo+Pj4gKwl1MzIgKmNvbnN1bWVyX2luZGV4KQ0KPj4+ICt7DQo+Pj4gKwl1bnNpZ25lZCBtYXhp bXVtX2luZGV4Ow0KPj4+ICsJdW5zaWduZWQgcHJvZHVjZXJfaW5kZXg7DQo+Pj4gKw0KPj4+ICsJ LyogVmFsaWRpdHkgb2YgaGVhZGVyICovDQo+Pj4gKwlpZiAoKGhlYWRlci0+b2Zmc2V0ICE9IHNp emVvZigqaGVhZGVyKSkgfHwNCj4+PiArCSAgICAoaGVhZGVyLT5lbnRyeV9zaXplICE9IHNpemVv ZigqZW50cnkpKSB8fA0KPj4+ICsJICAgICgoaGVhZGVyLT5zaWduYXR1cmUgIT0gRVZFTlRMT0df SEVBREVSX1NJR05BVFVSRV9BQVAxKSAmJg0KPj4+ICsJICAgICAoaGVhZGVyLT5zaWduYXR1cmUg IT0gRVZFTlRMT0dfSEVBREVSX1NJR05BVFVSRV9JT1ApKSkNCj4+PiArCQlyZXR1cm4gLUVJTlZB TDsNCj4+PiArCS8qIFZhbGlkaXR5IG9mIGhhcmR3YXJlIGluZGV4aWkgKi8NCj4+PiArCW1heGlt dW1faW5kZXggPSBoZWFkZXItPnNpemUgLyBzaXplb2YoKmVudHJ5KTsNCj4+PiArCWlmICgobWF4 aW11bV9pbmRleCA8PSBoZWFkZXItPnByb2R1Y2VyX2luZGV4KSB8fA0KPj4+ICsJICAgIChtYXhp bXVtX2luZGV4IDw9IGhlYWRlci0+Y29uc3VtZXJfaW5kZXgpKQ0KPj4+ICsJCXJldHVybiAtRUlO VkFMOw0KPj4+ICsJcHJvZHVjZXJfaW5kZXggPSBoZWFkZXItPnByb2R1Y2VyX2luZGV4Ow0KPj4+ ICsJaWYgKHByb2R1Y2VyX2luZGV4ID09IDApDQo+Pj4gKwkJcHJvZHVjZXJfaW5kZXggPSBtYXhp bXVtX2luZGV4IC0gMTsNCj4+PiArCWVsc2UNCj4+PiArCQktLXByb2R1Y2VyX2luZGV4Ow0KPj4+ ICsJLyogVmFsaWRpdHkgb2YgY3VycmVudCBjb25zdW1lciBpbmRleCAqLw0KPj4+ICsJaWYgKCgo cHJvZHVjZXJfaW5kZXggPCBoZWFkZXItPmNvbnN1bWVyX2luZGV4KSA/DQo+Pj4gKwkgICAgICgo cHJvZHVjZXJfaW5kZXggPCAqY29uc3VtZXJfaW5kZXgpICYmDQo+Pj4gKwkgICAgICAoKmNvbnN1 bWVyX2luZGV4IDwgaGVhZGVyLT5jb25zdW1lcl9pbmRleCkpIDoNCj4+PiArCSAgICAgKChwcm9k dWNlcl9pbmRleCA8ICpjb25zdW1lcl9pbmRleCkgfHwNCj4+PiArCSAgICAgICgqY29uc3VtZXJf aW5kZXggPCBoZWFkZXItPmNvbnN1bWVyX2luZGV4KSkpIHx8DQo+Pj4gKwkgICAgKCpjb25zdW1l cl9pbmRleCA+PSBtYXhpbXVtX2luZGV4KSkNCj4+PiArCQkqY29uc3VtZXJfaW5kZXggPSBoZWFk ZXItPmNvbnN1bWVyX2luZGV4Ow0KPj4+ICsJKmVudHJ5ID0gKChzdHJ1Y3QgZXZlbnRsb2dfZW50 cnkgKikoaGVhZGVyICsgMSkpWypjb25zdW1lcl9pbmRleF07DQo+Pj4gKwlpZiAoKmNvbnN1bWVy X2luZGV4ICE9IHByb2R1Y2VyX2luZGV4KSB7DQo+Pj4gKwkJKysoKmNvbnN1bWVyX2luZGV4KTsN Cj4+PiArCQlpZiAoKmNvbnN1bWVyX2luZGV4ID49IG1heGltdW1faW5kZXgpDQo+Pj4gKwkJCSpj b25zdW1lcl9pbmRleCA9IDA7DQo+Pj4gKwkJLyogTW9yZSBlbnRyaWVzPyAqLw0KPj4+ICsJCXJl dHVybiAqY29uc3VtZXJfaW5kZXggPT0gcHJvZHVjZXJfaW5kZXg7DQo+Pj4gKwl9DQo+Pj4gKwly ZXR1cm4gMjsgLyogQWxyZWFkeSBhdCBMYXN0IEVudHJ5ICovDQo+Pj4gK30NCj4+PiArDQo+Pj4g Ky8qKg0KPj4+ICsgKiBwbTgwMDFfdmFsaWRsb2cgLSBnZW5lcmljIHJvdXRpbmUgdG8gdmFsaWRh dGUgYSBzaW5nbGUgZXZlbnQgbG9nIGVudHJ5DQo+Pj4gKyAqIEBlbnRyeTogYSBwb2ludGVyIHRv IHRoZSBldmVudCBsb2cgZW50cnkNCj4+PiArICogQHJldHVybjogemVybyBpZiBub3QgdmFsaWQN Cj4+PiArICovDQo+Pj4gK3N0YXRpYyBpbmxpbmUgaW50IHBtODAwMV92YWxpZGxvZyhzdHJ1Y3Qg ZXZlbnRsb2dfZW50cnkgKmVudHJ5KQ0KPj4+ICt7DQo+Pj4gKwlyZXR1cm4gKChlbnRyeS0+c2l6 ZSA8PSAoc2l6ZW9mKGVudHJ5LT5sb2cpIC8NCj4+IHNpemVvZihlbnRyeS0+bG9nWzBdKSkpICYm DQo+Pj4gKwkJKChlbnRyeS0+dGltZXN0YW1wX3VwcGVyICE9IDApIHx8DQo+Pj4gKwkJIChlbnRy eS0+dGltZXN0YW1wX2xvd2VyICE9IDApKSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qKg0KPj4+ ICsgKiBwbTgwMDFfY3RsX2xvZ19zaG93IC0gZXZlbnQgbG9nDQo+Pj4gICogQGNkZXY6IHBvaW50 ZXIgdG8gZW1iZWRkZWQgY2xhc3MgZGV2aWNlDQo+Pj4gICogQGJ1ZjogdGhlIGJ1ZmZlciByZXR1 cm5lZA0KPj4+ICsgKiBAaW5kOiBUaGUgcmVnaW9uIGluZGV4IChBQVAxIG9yIElPUCkNCj4+PiAg Kg0KPj4+ICAqIEEgc3lzZnMgJ3JlYWQtb25seScgc2hvc3QgYXR0cmlidXRlLg0KPj4+ICAqLw0K Pj4+IC1zdGF0aWMgc3NpemVfdCBwbTgwMDFfY3RsX2FhcF9sb2dfc2hvdyhzdHJ1Y3QgZGV2aWNl ICpjZGV2LA0KPj4+IC0Jc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikN Cj4+PiArc3RhdGljIHNzaXplX3QgcG04MDAxX2N0bF9sb2dfc2hvdyhzdHJ1Y3QgZGV2aWNlICpj ZGV2LCBjaGFyICpidWYsIGludA0KPj4gaW5kKQ0KPj4+IHsNCj4+PiAJc3RydWN0IFNjc2lfSG9z dCAqc2hvc3QgPSBjbGFzc190b19zaG9zdChjZGV2KTsNCj4+PiAJc3RydWN0IHNhc19oYV9zdHJ1 Y3QgKnNoYSA9IFNIT1NUX1RPX1NBU19IQShzaG9zdCk7DQo+Pj4gCXN0cnVjdCBwbTgwMDFfaGJh X2luZm8gKnBtODAwMV9oYSA9IHNoYS0+bGxkZF9oYTsNCj4+PiArCXN0cnVjdCBldmVudGxvZ19l bnRyeSBlbnRyeTsNCj4+PiArCWNoYXIgKnN0ciA9IGJ1ZjsNCj4+PiAJaW50IGk7DQo+Pj4gLSNk ZWZpbmUgQUFQMV9NRU1NQVAociwgYykgXA0KPj4+IC0JKCoodTMyICopKCh1OCopcG04MDAxX2hh LT5tZW1vcnlNYXAucmVnaW9uW0FBUDFdLnZpcnRfcHRyICsgKHIpICogMzINCj4+IFwNCj4+PiAt CSsgKGMpKSkNCj4+PiANCj4+PiAtCWNoYXIgKnN0ciA9IGJ1ZjsNCj4+PiAtCWludCBtYXggPSAy Ow0KPj4+IC0JZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7DQo+Pj4gLQkJc3RyICs9IHNwcmlu dGYoc3RyLCAiMHglMDh4IDB4JTA4eCAweCUwOHggMHglMDh4IDB4JTA4eA0KPj4gMHglMDh4Ig0K Pj4+IC0JCQkgICAgICAgIjB4JTA4eCAweCUwOHhcbiIsDQo+Pj4gLQkJCSAgICAgICBBQVAxX01F TU1BUChpLCAwKSwNCj4+PiAtCQkJICAgICAgIEFBUDFfTUVNTUFQKGksIDQpLA0KPj4+IC0JCQkg ICAgICAgQUFQMV9NRU1NQVAoaSwgOCksDQo+Pj4gLQkJCSAgICAgICBBQVAxX01FTU1BUChpLCAx MiksDQo+Pj4gLQkJCSAgICAgICBBQVAxX01FTU1BUChpLCAxNiksDQo+Pj4gLQkJCSAgICAgICBB QVAxX01FTU1BUChpLCAyMCksDQo+Pj4gLQkJCSAgICAgICBBQVAxX01FTU1BUChpLCAyNCksDQo+ Pj4gLQkJCSAgICAgICBBQVAxX01FTU1BUChpLCAyOCkpOw0KPj4+ICsJbWVtc2V0KCZlbnRyeSwg MCwgc2l6ZW9mKGVudHJ5KSk7DQo+Pj4gKwlkbyB7DQo+Pj4gKwkJaSA9IHBtODAwMV9yZWFkbG9n KA0KPj4+ICsJCQkoc3RydWN0IGV2ZW50bG9nX2hlYWRlciAqKSgNCj4+PiArCQkJCXBtODAwMV9o YS0+bWVtb3J5TWFwLnJlZ2lvbltpbmRdLnZpcnRfcHRyKSwNCj4+PiArCQkJJmVudHJ5LA0KPj4+ ICsJCQkoaW5kID09IEFBUDEpID8NCj4+PiArCQkJCSZwbTgwMDFfaGEtPmFhcDFfY29uc3VtZXIg Og0KPj4+ICsJCQkJJnBtODAwMV9oYS0+aW9wX2NvbnN1bWVyKTsNCj4+PiArCX0gd2hpbGUgKChp ID09IDApICYmICFwbTgwMDFfdmFsaWRsb2coJmVudHJ5KSk7DQo+Pj4gKwlpZiAoKGkgPj0gMCkg JiYgcG04MDAxX3ZhbGlkbG9nKCZlbnRyeSkpIHsNCj4+PiArCQl1MzIgKmxwOw0KPj4+ICsJCXVu c2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAgPQ0KPj4+ICsJCQkoKCh1bnNpZ25lZCBsb25nIGxv bmcpZW50cnkudGltZXN0YW1wX3VwcGVyKSA8PCAzMikNCj4+IHwNCj4+PiArCQkJZW50cnkudGlt ZXN0YW1wX2xvd2VyOw0KPj4+ICsJCXN0ciArPSBzbnByaW50ZihzdHIsIFBBR0VfU0laRSAtIChz dHIgLSBidWYpLA0KPj4+ICsJCQkiJXUgJWxsdS4lMDlsbHUgJXUiLA0KPj4+ICsJCQllbnRyeS5z ZXZlcml0eSwNCj4+PiArCQkJdGltZXN0YW1wIC8gKDEwMDAwMDAwMDAgLyA4KSwNCj4+PiArCQkJ KHRpbWVzdGFtcCAlICgxMDAwMDAwMDAwIC8gOCkpICogOCwNCj4+PiArCQkJZW50cnkuc2VxdWVu Y2UpOw0KPj4+ICsJCWZvciAobHAgPSBlbnRyeS5sb2csIGkgPSBlbnRyeS5zaXplOyBpID4gMDsg LS1pKQ0KPj4+ICsJCQlzdHIgKz0gc25wcmludGYoc3RyLCBQQUdFX1NJWkUgLSAoc3RyIC0gYnVm KSwNCj4+PiArCQkJCSIgMHglMDh4IiwgKihscCsrKSk7DQo+Pj4gKwkJc3RyICs9IHNucHJpbnRm KHN0ciwgUEFHRV9TSVpFIC0gKHN0ciAtIGJ1ZiksICJcbiIpOw0KPj4+IAl9DQo+Pj4gLQ0KPj4+ IAlyZXR1cm4gc3RyIC0gYnVmOw0KPj4+IH0NCj4+PiArDQo+Pj4gKy8qKg0KPj4+ICsgKiBwbTgw MDFfY3RsX2FhcF9sb2dfc2hvdyAtIGFhcDEgZXZlbnQgbG9nDQo+Pj4gKyAqIEBjZGV2OiBwb2lu dGVyIHRvIGVtYmVkZGVkIGNsYXNzIGRldmljZQ0KPj4+ICsgKiBAYnVmOiB0aGUgYnVmZmVyIHJl dHVybmVkDQo+Pj4gKyAqDQo+Pj4gKyAqIEEgc3lzZnMgJ3JlYWQtb25seScgc2hvc3QgYXR0cmli dXRlLg0KPj4+ICsgKi8NCj4+PiArc3RhdGljIHNzaXplX3QgcG04MDAxX2N0bF9hYXBfbG9nX3No b3coc3RydWN0IGRldmljZSAqY2RldiwNCj4+PiArCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpDQo+Pj4gK3sNCj4+PiArCXJldHVybiBwbTgwMDFfY3RsX2xvZ19zaG93 KGNkZXYsIGJ1ZiwgQUFQMSk7DQo+Pj4gK30NCj4+PiBzdGF0aWMgREVWSUNFX0FUVFIoYWFwX2xv ZywgU19JUlVHTywgcG04MDAxX2N0bF9hYXBfbG9nX3Nob3csIE5VTEwpOw0KPj4+IC8qKg0KPj4+ ICAqIHBtODAwMV9jdGxfYWFwX2xvZ19zaG93IC0gSU9QIGV2ZW50IGxvZw0KPj4+IEBAIC0yNzks MjkgKzM3Myw3IEBAIHN0YXRpYyBERVZJQ0VfQVRUUihhYXBfbG9nLCBTX0lSVUdPLA0KPj4+IHBt ODAwMV9jdGxfYWFwX2xvZ19zaG93LCBOVUxMKTsNCj4+PiBzdGF0aWMgc3NpemVfdCBwbTgwMDFf Y3RsX2lvcF9sb2dfc2hvdyhzdHJ1Y3QgZGV2aWNlICpjZGV2LA0KPj4+IAlzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQ0KPj4+IHsNCj4+PiAtCXN0cnVjdCBTY3NpX0hv c3QgKnNob3N0ID0gY2xhc3NfdG9fc2hvc3QoY2Rldik7DQo+Pj4gLQlzdHJ1Y3Qgc2FzX2hhX3N0 cnVjdCAqc2hhID0gU0hPU1RfVE9fU0FTX0hBKHNob3N0KTsNCj4+PiAtCXN0cnVjdCBwbTgwMDFf aGJhX2luZm8gKnBtODAwMV9oYSA9IHNoYS0+bGxkZF9oYTsNCj4+PiAtI2RlZmluZSBJT1BfTUVN TUFQKHIsIGMpIFwNCj4+PiAtCSgqKHUzMiAqKSgodTgqKXBtODAwMV9oYS0+bWVtb3J5TWFwLnJl Z2lvbltJT1BdLnZpcnRfcHRyICsgKHIpICogMzINCj4+IFwNCj4+PiAtCSsgKGMpKSkNCj4+PiAt CWludCBpOw0KPj4+IC0JY2hhciAqc3RyID0gYnVmOw0KPj4+IC0JaW50IG1heCA9IDI7DQo+Pj4g LQlmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHsNCj4+PiAtCQlzdHIgKz0gc3ByaW50ZihzdHIs ICIweCUwOHggMHglMDh4IDB4JTA4eCAweCUwOHggMHglMDh4DQo+PiAweCUwOHgiDQo+Pj4gLQkJ CSAgICAgICAiMHglMDh4IDB4JTA4eFxuIiwNCj4+PiAtCQkJICAgICAgIElPUF9NRU1NQVAoaSwg MCksDQo+Pj4gLQkJCSAgICAgICBJT1BfTUVNTUFQKGksIDQpLA0KPj4+IC0JCQkgICAgICAgSU9Q X01FTU1BUChpLCA4KSwNCj4+PiAtCQkJICAgICAgIElPUF9NRU1NQVAoaSwgMTIpLA0KPj4+IC0J CQkgICAgICAgSU9QX01FTU1BUChpLCAxNiksDQo+Pj4gLQkJCSAgICAgICBJT1BfTUVNTUFQKGks IDIwKSwNCj4+PiAtCQkJICAgICAgIElPUF9NRU1NQVAoaSwgMjQpLA0KPj4+IC0JCQkgICAgICAg SU9QX01FTU1BUChpLCAyOCkpOw0KPj4+IC0JfQ0KPj4+IC0NCj4+PiAtCXJldHVybiBzdHIgLSBi dWY7DQo+Pj4gKwlyZXR1cm4gcG04MDAxX2N0bF9sb2dfc2hvdyhjZGV2LCBidWYsIElPUCk7DQo+ Pj4gfQ0KPj4+IHN0YXRpYyBERVZJQ0VfQVRUUihpb3BfbG9nLCBTX0lSVUdPLCBwbTgwMDFfY3Rs X2lvcF9sb2dfc2hvdywgTlVMTCk7DQo+Pj4gDQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2Nz aS9wbTgwMDEvcG04MDAxX2h3aS5jDQo+Pj4gYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9o d2kuYw0KPj4+IGluZGV4IGI3YjkyZjcuLmIzYmQ3ODEgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVy cy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMNCj4+PiArKysgYi9kcml2ZXJzL3Njc2kvcG04MDAx L3BtODAwMV9od2kuYw0KPj4+IEBAIC0yNTAsOCArMjUwLDggQEAgaW5pdF9kZWZhdWx0X3RhYmxl X3ZhbHVlcyhzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvDQo+Pj4gKnBtODAwMV9oYSkNCj4+PiAgKiB1 cGRhdGVfbWFpbl9jb25maWdfdGFibGUgLSB1cGRhdGUgdGhlIG1haW4gZGVmYXVsdCB0YWJsZSB0 byB0aGUgSEJBLg0KPj4+ICAqIEBwbTgwMDFfaGE6IG91ciBoYmEgY2FyZCBpbmZvcm1hdGlvbg0K Pj4+ICAqLw0KPj4+IC1zdGF0aWMgdm9pZCBfX2RldmluaXQNCj4+PiAtdXBkYXRlX21haW5fY29u ZmlnX3RhYmxlKHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSkNCj4+PiArdm9pZA0K Pj4+ICtwbTgwMDFfdXBkYXRlX21haW5fY29uZmlnX3RhYmxlKHN0cnVjdCBwbTgwMDFfaGJhX2lu Zm8gKnBtODAwMV9oYSkNCj4+PiB7DQo+Pj4gCXZvaWQgX19pb21lbSAqYWRkcmVzcyA9IHBtODAw MV9oYS0+bWFpbl9jZmdfdGJsX2FkZHI7DQo+Pj4gCXBtODAwMV9tdzMyKGFkZHJlc3MsIDB4MjQs DQo+Pj4gQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBwbTgwMDFfY2hp cF9pbml0KHN0cnVjdA0KPj4+IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhKQ0KPj4+IAlyZWFk X2luYm5kX3F1ZXVlX3RhYmxlKHBtODAwMV9oYSk7DQo+Pj4gCXJlYWRfb3V0Ym5kX3F1ZXVlX3Rh YmxlKHBtODAwMV9oYSk7DQo+Pj4gCS8qIHVwZGF0ZSBtYWluIGNvbmZpZyB0YWJsZSAsaW5ib3Vu ZCB0YWJsZSBhbmQgb3V0Ym91bmQgdGFibGUgKi8NCj4+PiAtCXVwZGF0ZV9tYWluX2NvbmZpZ190 YWJsZShwbTgwMDFfaGEpOw0KPj4+ICsJcG04MDAxX3VwZGF0ZV9tYWluX2NvbmZpZ190YWJsZShw bTgwMDFfaGEpOw0KPj4+IAl1cGRhdGVfaW5ibmRfcXVldWVfdGFibGUocG04MDAxX2hhLCAwKTsN Cj4+PiAJdXBkYXRlX291dGJuZF9xdWV1ZV90YWJsZShwbTgwMDFfaGEsIDApOw0KPj4+IAltcGlf c2V0X3BoeXNfZzNfd2l0aF9zc2MocG04MDAxX2hhLCAwKTsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaW5pdC5jDQo+Pj4gYi9kcml2ZXJzL3Njc2kvcG04MDAx L3BtODAwMV9pbml0LmMNCj4+PiBpbmRleCBjMjFhMjE2Li5jNjM4ZGE0IDEwMDY0NA0KPj4+IC0t LSBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2luaXQuYw0KPj4+ICsrKyBiL2RyaXZlcnMv c2NzaS9wbTgwMDEvcG04MDAxX2luaXQuYw0KPj4+IEBAIC00OCw2ICs0OCw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgcG04MDAxX2NoaXBfaW5mbyBwbTgwMDFfY2hpcHNbXSA9IHsNCj4+PiAJW2No aXBfODAwMV0gPSB7ICA4LCAmcG04MDAxXzgwMDFfZGlzcGF0Y2gsfSwNCj4+PiB9Ow0KPj4+IHN0 YXRpYyBpbnQgcG04MDAxX2lkOw0KPj4+ICtzdGF0aWMgaW50IHBtODAwMV9sb2dnaW5nX2xldmVs ID0gUE04MDAxX0ZBSUxfTE9HR0lORzsNCj4+PiArc3RhdGljIGludCBwbTgwMDFfbG9nZ2luZ19z aXplID0gUE04MDAxX0VWRU5UX0xPR19TSVpFOw0KPj4+IA0KPj4+IExJU1RfSEVBRChoYmFfbGlz dCk7DQo+Pj4gDQo+Pj4gQEAgLTIxMiwxNiArMjE0LDE5IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0 IHBtODAwMV9hbGxvYyhzdHJ1Y3QNCj4+IHBtODAwMV9oYmFfaW5mbw0KPj4+ICpwbTgwMDFfaGEp DQo+Pj4gCXBtODAwMV9oYS0+dGFncyA9IGt6YWxsb2MoUE04MDAxX01BWF9DQ0IsIEdGUF9LRVJO RUwpOw0KPj4+IAlpZiAoIXBtODAwMV9oYS0+dGFncykNCj4+PiAJCWdvdG8gZXJyX291dDsNCj4+ PiArCXBtODAwMV9sb2dnaW5nX3NpemUgPSAoKHBtODAwMV9sb2dnaW5nX3NpemUgKyAzMSkgLyAz MikgKiAzMjsNCj4+PiArCWlmIChwbTgwMDFfbG9nZ2luZ19zaXplIDwgNjQpDQo+Pj4gKwkJcG04 MDAxX2xvZ2dpbmdfc2l6ZSA9IDY0Ow0KPj4+IAkvKiBNUEkgTWVtb3J5IHJlZ2lvbiAxIGZvciBB QVAgRXZlbnQgTG9nIGZvciBmdyAqLw0KPj4+IAlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25b QUFQMV0ubnVtX2VsZW1lbnRzID0gMTsNCj4+PiAtCXBtODAwMV9oYS0+bWVtb3J5TWFwLnJlZ2lv bltBQVAxXS5lbGVtZW50X3NpemUgPQ0KPj4+IFBNODAwMV9FVkVOVF9MT0dfU0laRTsNCj4+PiAt CXBtODAwMV9oYS0+bWVtb3J5TWFwLnJlZ2lvbltBQVAxXS50b3RhbF9sZW4gPSBQTTgwMDFfRVZF TlRfTE9HX1NJWkU7DQo+Pj4gKwlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25bQUFQMV0uZWxl bWVudF9zaXplID0NCj4+IHBtODAwMV9sb2dnaW5nX3NpemU7DQo+Pj4gKwlwbTgwMDFfaGEtPm1l bW9yeU1hcC5yZWdpb25bQUFQMV0udG90YWxfbGVuID0gcG04MDAxX2xvZ2dpbmdfc2l6ZTsNCj4+ PiAJcG04MDAxX2hhLT5tZW1vcnlNYXAucmVnaW9uW0FBUDFdLmFsaWdubWVudCA9IDMyOw0KPj4+ IA0KPj4+IAkvKiBNUEkgTWVtb3J5IHJlZ2lvbiAyIGZvciBJT1AgRXZlbnQgTG9nIGZvciBmdyAq Lw0KPj4+IAlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25bSU9QXS5udW1fZWxlbWVudHMgPSAx Ow0KPj4+IC0JcG04MDAxX2hhLT5tZW1vcnlNYXAucmVnaW9uW0lPUF0uZWxlbWVudF9zaXplID0N Cj4+IFBNODAwMV9FVkVOVF9MT0dfU0laRTsNCj4+PiAtCXBtODAwMV9oYS0+bWVtb3J5TWFwLnJl Z2lvbltJT1BdLnRvdGFsX2xlbiA9IFBNODAwMV9FVkVOVF9MT0dfU0laRTsNCj4+PiArCXBtODAw MV9oYS0+bWVtb3J5TWFwLnJlZ2lvbltJT1BdLmVsZW1lbnRfc2l6ZSA9IHBtODAwMV9sb2dnaW5n X3NpemU7DQo+Pj4gKwlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25bSU9QXS50b3RhbF9sZW4g PSBwbTgwMDFfbG9nZ2luZ19zaXplOw0KPj4+IAlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25b SU9QXS5hbGlnbm1lbnQgPSAzMjsNCj4+PiANCj4+PiAJLyogTVBJIE1lbW9yeSByZWdpb24gMyBm b3IgY29uc3VtZXIgSW5kZXggb2YgaW5ib3VuZCBxdWV1ZXMgKi8NCj4+PiBAQCAtMjQyLDcgKzI0 Nyw3IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IHBtODAwMV9hbGxvYyhzdHJ1Y3QNCj4+IHBtODAw MV9oYmFfaW5mbw0KPj4+ICpwbTgwMDFfaGEpDQo+Pj4gCXBtODAwMV9oYS0+bWVtb3J5TWFwLnJl Z2lvbltJQl0udG90YWxfbGVuID0gMjU2ICogNjQ7DQo+Pj4gCXBtODAwMV9oYS0+bWVtb3J5TWFw LnJlZ2lvbltJQl0uYWxpZ25tZW50ID0gNjQ7DQo+Pj4gDQo+Pj4gLQkvKiBNUEkgTWVtb3J5IHJl Z2lvbiA2IGluYm91bmQgcXVldWVzICovDQo+Pj4gKwkvKiBNUEkgTWVtb3J5IHJlZ2lvbiA2IG91 dGJvdW5kIHF1ZXVlcyAqLw0KPj4+IAlwbTgwMDFfaGEtPm1lbW9yeU1hcC5yZWdpb25bT0JdLm51 bV9lbGVtZW50cyA9IDI1NjsNCj4+PiAJcG04MDAxX2hhLT5tZW1vcnlNYXAucmVnaW9uW09CXS5l bGVtZW50X3NpemUgPSA2NDsNCj4+PiAJcG04MDAxX2hhLT5tZW1vcnlNYXAucmVnaW9uW09CXS50 b3RhbF9sZW4gPSAyNTYgKiA2NDsNCj4+PiBAQCAtMzgxLDcgKzM4Niw3IEBAIHBtODAwMV9wY2lf YWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUzMiBjaGlwX2lkLA0KPj4gc3RydWN0DQo+Pj4g U2NzaV9Ib3N0ICpzaG9zdCkNCj4+PiAJcG04MDAxX2hhLT5zYXMgPSBzaGE7DQo+Pj4gCXBtODAw MV9oYS0+c2hvc3QgPSBzaG9zdDsNCj4+PiAJcG04MDAxX2hhLT5pZCA9IHBtODAwMV9pZCsrOw0K Pj4+IC0JcG04MDAxX2hhLT5sb2dnaW5nX2xldmVsID0gMHgwMTsNCj4+PiArCXBtODAwMV9oYS0+ bG9nZ2luZ19sZXZlbCA9IHBtODAwMV9sb2dnaW5nX2xldmVsOw0KPj4+IAlzcHJpbnRmKHBtODAw MV9oYS0+bmFtZSwgIiVzJWQiLCBEUlZfTkFNRSwgcG04MDAxX2hhLT5pZCk7DQo+Pj4gI2lmZGVm IFBNODAwMV9VU0VfVEFTS0xFVA0KPj4+IAl0YXNrbGV0X2luaXQoJnBtODAwMV9oYS0+dGFza2xl dCwgcG04MDAxX3Rhc2tsZXQsDQo+Pj4gQEAgLTYxNCw4ICs2MTksOCBAQCBpbnR4Og0KPj4+ICAq IEBlbnQ6IHBjaSBkZXZpY2UgaWQNCj4+PiAgKg0KPj4+ICAqIFRoaXMgZnVuY3Rpb24gaXMgdGhl IG1haW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHdoZW4gcmVnaXN0ZXIgYSBuZXcNCj4+PiAt ICogcGNpIGRyaXZlciBpdCBpcyBpbnZva2VkLCBhbGwgc3RydWN0IGFuIGhhcmR3YXJlIGluaXRp bGl6YXRpb24gc2hvdWxkDQo+PiBiZQ0KPj4+IGRvbmUNCj4+PiAtICogaGVyZSwgYWxzbywgcmVn aXN0ZXIgaW50ZXJydXB0DQo+Pj4gKyAqIHBjaSBkcml2ZXIgaXQgaXMgaW52b2tlZCwgYWxsIHN0 cnVjdCBhbmQgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24NCj4+IHNob3VsZA0KPj4+IGJlDQo+Pj4g KyAqIGRvbmUgaGVyZSwgYWxzbywgcmVnaXN0ZXIgaW50ZXJydXB0DQo+Pj4gICovDQo+Pj4gc3Rh dGljIGludCBfX2RldmluaXQgcG04MDAxX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwN Cj4+PiAJY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkNCj4+PiBAQCAtODk5LDYgKzkw NCw5IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBwbTgwMDFfZXhpdCh2b2lkKQ0KPj4+IAlkZXN0cm95 X3dvcmtxdWV1ZShwbTgwMDFfd3EpOw0KPj4+IH0NCj4+PiANCj4+PiArbW9kdWxlX3BhcmFtKHBt ODAwMV9sb2dnaW5nX2xldmVsLCBpbnQsIDApOw0KPj4+ICttb2R1bGVfcGFyYW1fbmFtZWQobG9n Z2luZ19zaXplLCBwbTgwMDFfbG9nZ2luZ19zaXplLCBpbnQsDQo+Pj4gU19JUlVHT3xTX0lXVVNS KTsNCj4+PiArTU9EVUxFX1BBUk1fREVTQyhsb2dnaW5nX3NpemUsICJFdmVudCBsb2dnaW5nIGJ1 ZmZlciBzaXplIik7DQo+Pj4gbW9kdWxlX2luaXQocG04MDAxX2luaXQpOw0KPj4+IG1vZHVsZV9l eGl0KHBtODAwMV9leGl0KTsNCj4+PiANCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Bt ODAwMS9wbTgwMDFfc2FzLmgNCj4+PiBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5o DQo+Pj4gaW5kZXggOTM5NTlmZS4uODRkMzE3MCAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL3Nj c2kvcG04MDAxL3BtODAwMV9zYXMuaA0KPj4+ICsrKyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04 MDAxX3Nhcy5oDQo+Pj4gQEAgLTMzNiw2ICszMzYsMjkgQEAgc3RydWN0IG91dGJvdW5kX3F1ZXVl X3RhYmxlIHsNCj4+PiAJX19sZTMyCQkJcHJvZHVjZXJfaW5kZXg7DQo+Pj4gCXUzMgkJCWNvbnN1 bWVyX2lkeDsNCj4+PiB9Ow0KPj4+ICtzdHJ1Y3QgZXZlbnRsb2dfaGVhZGVyIHsNCj4+PiArCV9f bGUzMgkJCXNpZ25hdHVyZTsNCj4+PiArI2RlZmluZSBFVkVOVExPR19IRUFERVJfU0lHTkFUVVJF X0FBUDEgMHgxMjM0QUFBQQ0KPj4+ICsjZGVmaW5lIEVWRU5UTE9HX0hFQURFUl9TSUdOQVRVUkVf SU9QIDB4NTY3OENDQ0MNCj4+PiArCV9fbGUzMgkJCW9mZnNldDsgLyogc2l6ZW9mKGV2ZW50bG9n X2hlYWRlcikgKi8NCj4+PiArCXUzMgkJCXJlc2VydmVkMTsNCj4+PiArCV9fbGUzMgkJCXNpemU7 DQo+Pj4gKwl1MzIJCQlyZXNlcnZlZDI7DQo+Pj4gKwlfX2xlMzIJCQljb25zdW1lcl9pbmRleDsN Cj4+PiArCV9fbGUzMgkJCXByb2R1Y2VyX2luZGV4Ow0KPj4+ICsJX19sZTMyCQkJZW50cnlfc2l6 ZTsNCj4+PiArfTsNCj4+PiArc3RydWN0IGV2ZW50bG9nX2VudHJ5IHsNCj4+PiArCXU4CQkJc2l6 ZTozOw0KPj4+ICsJdTgJCQlyZXNlcnZlZDE6NTsNCj4+PiArCXU4CQkJcmVzZXJ2ZWQyWzJdOw0K Pj4+ICsJdTgJCQlyZXNlcnZlZDo0Ow0KPj4+ICsJdTgJCQlzZXZlcml0eTo0Ow0KPj4+ICsJX19s ZTMyCQkJdGltZXN0YW1wX3VwcGVyOw0KPj4+ICsJX19sZTMyCQkJdGltZXN0YW1wX2xvd2VyOw0K Pj4+ICsJX19sZTMyCQkJc2VxdWVuY2U7DQo+Pj4gKwlfX2xlMzIJCQlsb2dbNF07DQo+Pj4gK307 DQo+Pj4gc3RydWN0IHBtODAwMV9oYmFfbWVtc3BhY2Ugew0KPj4+IAl2b2lkIF9faW9tZW0gIAkJ Km1lbXZpcnRhZGRyOw0KPj4+IAl1NjQJCQltZW1iYXNlOw0KPj4+IEBAIC0zODMsNiArNDA2LDkg QEAgc3RydWN0IHBtODAwMV9oYmFfaW5mbyB7DQo+Pj4gCXUzMgkJCWxvZ2dpbmdfbGV2ZWw7DQo+ Pj4gCXUzMgkJCWZ3X3N0YXR1czsNCj4+PiAJY29uc3Qgc3RydWN0IGZpcm13YXJlIAkqZndfaW1h Z2U7DQo+Pj4gKwkvKiBMb2NhbCBjb25zdW1lciBpbmRleGVzIGluIHN1cHBvcnQgb2Ygc3lzZnMg ZXZlbnQgbG9nIG5vZGUgKi8NCj4+PiArCXUzMgkJCWFhcDFfY29uc3VtZXI7DQo+Pj4gKwl1MzIJ CQlpb3BfY29uc3VtZXI7DQo+Pj4gfTsNCj4+PiANCj4+PiBzdHJ1Y3QgcG04MDAxX3dvcmsgew0K Pj4+IEBAIC00ODgsNiArNTE0LDExIEBAIGludCBwbTgwMDFfbWVtX2FsbG9jKHN0cnVjdCBwY2lf ZGV2ICpwZGV2LCB2b2lkDQo+Pj4gKip2aXJ0X2FkZHIsDQo+Pj4gCWRtYV9hZGRyX3QgKnBwaHlz X2FkZHIsIHUzMiAqcHBoeXNfYWRkcl9oaSwgdTMyICpwcGh5c19hZGRyX2xvLA0KPj4+IAl1MzIg bWVtX3NpemUsIHUzMiBhbGlnbik7DQo+Pj4gDQo+Pj4gK3ZvaWQgcG04MDAxX3VwZGF0ZV9tYWlu X2NvbmZpZ190YWJsZShzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEpOw0KPj4+ICtp bnQgcG04MDAxX3JlYWRsb2coDQo+Pj4gKwlzdHJ1Y3QgZXZlbnRsb2dfaGVhZGVyICpoZWFkZXIs DQo+Pj4gKwlzdHJ1Y3QgZXZlbnRsb2dfZW50cnkgKmVudHJ5LA0KPj4+ICsJdTMyICpjb25zdW1l cl9pbmRleCk7DQo+Pj4gDQo+Pj4gLyogY3RsIHNoYXJlZCBBUEkgKi8NCj4+PiBleHRlcm4gc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKnBtODAwMV9ob3N0X2F0dHJzW107DQo+DQo+LS0NCj5UbyB1 bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGlu dXgtc2NzaSIgaW4NCj50aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2Vy bmVsLm9yZw0KPk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcv bWFqb3Jkb21vLWluZm8uaHRtbA0KPg0KPl9fX19fX19fX18gSW5mb3JtYXRpb24gZnJvbSBFU0VU IE5PRDMyIEFudGl2aXJ1cywgdmVyc2lvbiBvZiB2aXJ1cyBzaWduYXR1cmUgZGF0YWJhc2UgNTY1 OSAoMjAxMDExMjkpIF9fX19fX19fX18NCj4NCj5UaGUgbWVzc2FnZSB3YXMgY2hlY2tlZCBieSBF U0VUIE5PRDMyIEFudGl2aXJ1cy4NCj4NCj5odHRwOi8vd3d3LmVzZXQuY29tDQo+DQo+DQo+