From mboxrd@z Thu Jan 1 00:00:00 1970 From: jack_wang Subject: Re: [isci PATCH v2 16/18] libsas: suspend / resume support Date: Sun, 11 Mar 2012 16:06:53 +0800 Message-ID: <201203111606519849233@usish.com> References: <20120311072518.6320.61717.stgit@dwillia2-linux.jf.intel.com>, <20120311072906.6320.54567.stgit@dwillia2-linux.jf.intel.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]:38570 "EHLO sr-smtp.usish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751040Ab2CKIGx (ORCPT ); Sun, 11 Mar 2012 04:06:53 -0400 Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: Dan Williams , linux-scsi Cc: linux-ide , Jacek Danecki UmVhbGx5IG5pY2UsIHBtODAwMSBoYXMgYSBicm9rZW4gc3VzcGVuZC9yZXN1bWUgaW1wbGVtZW50 YXRpb24sIHdpbGwgdHJ5IHRvIHVzZQ0KdGhpcyBpbmZyYXN0cnVjdHVyZSB0byB0ZXN0Lg0KDQpU aGFua3MuDQoNCkJUVzoNCg0KPiBlbnVtIGRpc2NvdmVyX2V2ZW50IHsNCj5AQCAtODcsOCArODgs MTAgQEAgZW51bSBkaXNjb3Zlcl9ldmVudCB7DQo+IAlESVNDRV9SRVZBTElEQVRFX0RPTUFJTiA9 IDEsDQo+IAlESVNDRV9QT1JUX0dPTkUgICAgICAgICA9IDIsDQo+IAlESVNDRV9QUk9CRQkJPSAz LA0KPi0JRElTQ0VfREVTVFJVQ1QJCT0gNCwNCj4tCURJU0NfTlVNX0VWRU5UUwkJPSA1LA0KPisJ RElTQ0VfU1VTUEVORAkJPSA0LA0KPisJRElTQ0VfUkVTVU1FCQk9IDUsDQo+KwlESVNDRV9ERVNU UlVDVAkJPSA2LA0KPisJRElTQ19OVU1fRVZFTlRTCQk9IDcsDQo+IH07DQpESVNDRV9QT1JUX0dP TkUgc2VlbXMgbmV2ZXIgaW4gdXNlLCBzbyB3ZSBvbmx5IGhhdmUgNiBESVNDX05VTV9FVkVOVFMu DQoNCg0KLS0tLS0tLS0tLS0tLS0NCmphY2tfd2FuZw0KPmxpYnNhcyBwb3dlciBtYW5hZ2VtZW50 IHJvdXRpbmVzIHRvIHN1c3BlbmQgYW5kIHJlY292ZXIgdGhlIHNhcyBkb21haW4NCj5iYXNlZCBv biBhIG1vZGVsIHdoZXJlIHRoZSBsbGRkIGlzIGFsbG93ZWQgYW5kIGV4cGVjdGVkIHRvIGJlDQo+ ImZvcmdldGZ1bCIuDQo+DQo+c2FzX3N1c3BlbmRfaGEgLSBkaXNhYmxlIGV2ZW50IHByb2Nlc3Np bmcgYWxsb3dpbmcgdGhlIGxsZGQgdG8gdGFrZSBkb3duDQo+ICAgICAgICAgICAgICAgICBsaW5r cyB3aXRob3V0IGNvbmNlcm4gZm9yIGNhdXNpbmcgaG90cGx1ZyBldmVudHMuDQo+ICAgICAgICAg ICAgICAgICBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGxsZGQgYWN0dWFsbHkgcG9zdHMgbGlu ayBkb3duDQo+ICAgICAgICAgICAgICAgICBtZXNzYWdlcyBsaWJzYXMgbm90aWZpZXMgdGhlIGxs ZGQgdGhhdCBhbGwNCj4gICAgICAgICAgICAgICAgIGRvbWFpbl9kZXZpY2VzIGFyZSBnb25lLg0K Pg0KPnNhc19wcmVwX3Jlc3VtZV9oYSAtIG9uIHRoZSB3YXkgYmFjayB1cCBiZWZvcmUgdGhlIGxs ZGQgc3RhcnRzIGxpbmsNCj4gICAgICAgICAgICAgICAgICAgICB0cmFpbmluZyBjbGVhbiBvdXQg YW55IHNwdXJpb3VzIGV2ZW50cyB0aGF0IHdlcmUNCj4gICAgICAgICAgICAgICAgICAgICBnZW5l cmF0ZWQgb24gdGhlIHdheSBkb3duLCBhbmQgcmUtZW5hYmxlIGV2ZW50DQo+ICAgICAgICAgICAg ICAgICAgICAgcHJvY2Vzc2luZw0KPg0KPnNhc19yZXN1bWVfaGEgLSBhZnRlciB0aGUgbGxkZCBo YXMgc3RhcnRlZCBhbmQgZGVjaWRlZCB0aGF0IGFsbCBwaHlzDQo+CQloYXZlIHBvc3RlZCBsaW5r LXVwIGV2ZW50cyB0aGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGxldA0KPgkJbGlic2FzIHN0YXJ0 IGl0J3Mgb3duIHRpbWVvdXQgb2YgYW55IHBoeXMgdGhhdCBkaWQgbm90DQo+CQlyZXN1bWUuICBB ZnRlciB0aGUgdGltZW91dCBhbiBsbGRkIGNhbiBjYW5jZWwgdGhlDQo+ICAgICAgICAgICAgICAg IHBoeSB0ZWFyZG93biBieSBwb3N0aW5nIGEgbGluay11cCBldmVudC4NCj4NCj5TdG9yYWdlIGZv ciBleF9jaGFuZ2VfY291bnQgKHUxNikgYW5kIHBoeV9jaGFuZ2VfY291bnQgKHU4KSBhcmUgY2hh bmdlZA0KPnRvIGludCBzbyB0aGV5IGNhbiBiZSBzZXQgdG8gLTEgdG8gaW5kaWNhdGUgJ2ludmFs aWRhdGVkJy4NCj4NCj5SZXZpZXdlZC1ieTogSmFjZWsgRGFuZWNraSA8amFjZWsuZGFuZWNraUBp bnRlbC5jb20+DQo+U2lnbmVkLW9mZi1ieTogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0Bp bnRlbC5jb20+DQo+LS0tDQo+IGRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2F0YS5jICAgICAgIHwg ICA4NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gZHJpdmVycy9zY3NpL2xp YnNhcy9zYXNfZGlzY292ZXIuYyAgfCAgIDY4ICsrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ IGRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2R1bXAuYyAgICAgIHwgICAgMSANCj4gZHJpdmVycy9z Y3NpL2xpYnNhcy9zYXNfZXZlbnQuYyAgICAgfCAgICA0ICstDQo+IGRyaXZlcnMvc2NzaS9saWJz YXMvc2FzX2luaXQuYyAgICAgIHwgICA5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPiBkcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbnRlcm5hbC5oICB8ICAgIDIgKw0KPiBk cml2ZXJzL3Njc2kvbGlic2FzL3Nhc19waHkuYyAgICAgICB8ICAgMjEgKysrKysrKysNCj4gZHJp dmVycy9zY3NpL2xpYnNhcy9zYXNfcG9ydC5jICAgICAgfCAgIDUyICsrKysrKysrKysrKysrKysr KysrDQo+IGRyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3Njc2lfaG9zdC5jIHwgICAgMiAtDQo+IGlu Y2x1ZGUvc2NzaS9saWJzYXMuaCAgICAgICAgICAgICAgIHwgICAyMCArKysrKystLQ0KPiBpbmNs dWRlL3Njc2kvc2FzX2F0YS5oICAgICAgICAgICAgICB8ICAgMTAgKysrKw0KPiAxMSBmaWxlcyBj aGFuZ2VkLCAzMzYgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pDQo+DQo+ZGlmZiAtLWdp dCBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2F0YS5jIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9z YXNfYXRhLmMNCj5pbmRleCBkMzBhMDkzLi5iMTYxYmRkIDEwMDY0NA0KPi0tLSBhL2RyaXZlcnMv c2NzaS9saWJzYXMvc2FzX2F0YS5jDQo+KysrIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfYXRh LmMNCj5AQCAtNjc3LDYgKzY3Nyw5MiBAQCB2b2lkIHNhc19wcm9iZV9zYXRhKHN0cnVjdCBhc2Rf c2FzX3BvcnQgKnBvcnQpDQo+IAkJaWYgKGF0YV9kZXZfZGlzYWJsZWQoc2FzX3RvX2F0YV9kZXYo ZGV2KSkpDQo+IAkJCXNhc19mYWlsX3Byb2JlKGRldiwgX19mdW5jX18sIC1FTk9ERVYpOw0KPiAJ fQ0KPisNCj4rfQ0KPisNCj4rc3RhdGljIGJvb2wgc2FzX2F0YV9mbHVzaF9wbV9laChzdHJ1Y3Qg YXNkX3Nhc19wb3J0ICpwb3J0LCBjb25zdCBjaGFyICpmdW5jKQ0KPit7DQo+KwlzdHJ1Y3QgZG9t YWluX2RldmljZSAqZGV2LCAqbjsNCj4rCWJvb2wgcmV0cnkgPSBmYWxzZTsNCj4rDQo+KwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCBuLCAmcG9ydC0+ZGV2X2xpc3QsIGRldl9saXN0X25v ZGUpIHsNCj4rCQlpbnQgcmM7DQo+Kw0KPisJCWlmICghZGV2X2lzX3NhdGEoZGV2KSkNCj4rCQkJ Y29udGludWU7DQo+Kw0KPisJCXNhc19hdGFfd2FpdF9laChkZXYpOw0KPisJCXJjID0gZGV2LT5z YXRhX2Rldi5wbV9yZXN1bHQ7DQo+KwkJaWYgKHJjID09IC1FQUdBSU4pDQo+KwkJCXJldHJ5ID0g dHJ1ZTsNCj4rCQllbHNlIGlmIChyYykgew0KPisJCQkvKiBzaW5jZSB3ZSBkb24ndCBoYXZlIGEN Cj4rCQkJICogLT5wb3J0X3tzdXNwZW5kfHJlc3VtZX0gcm91dGluZSBpbiBvdXINCj4rCQkJICog IGF0YV9wb3J0IG9wcywgYW5kIG5vIGVudGFuZ2xlbWVudHMgd2l0aA0KPisJCQkgKiAgYWNwaSwg c3VzcGVuZCBzaG91bGQganVzdCBiZSBtZWNoYW5pY2FsIHRyaXANCj4rCQkJICogIHRocm91Z2gg ZWgsIGNhdGNoIGNhc2VzIHdoZXJlIHRoZXNlDQo+KwkJCSAqICBhc3N1bXB0aW9ucyBhcmUgaW52 YWxpZGF0ZWQNCj4rCQkJICovDQo+KwkJCVdBUk5fT05DRSgxLCAiZmFpbGVkICVzICVzIGVycm9y OiAlZFxuIiwgZnVuYywNCj4rCQkJCSBkZXZfbmFtZSgmZGV2LT5ycGh5LT5kZXYpLCByYyk7DQo+ KwkJfQ0KPisNCj4rCQkvKiBpZiBsaWJhdGEgZmFpbGVkIHRvIHBvd2VyIG1hbmFnZSB0aGUgZGV2 aWNlLCB0ZWFyIGl0IGRvd24gKi8NCj4rCQlpZiAoYXRhX2Rldl9kaXNhYmxlZChzYXNfdG9fYXRh X2RldihkZXYpKSkNCj4rCQkJc2FzX2ZhaWxfcHJvYmUoZGV2LCBmdW5jLCAtRU5PREVWKTsNCj4r CX0NCj4rDQo+KwlyZXR1cm4gcmV0cnk7DQo+K30NCj4rDQo+K3ZvaWQgc2FzX3N1c3BlbmRfc2F0 YShzdHJ1Y3QgYXNkX3Nhc19wb3J0ICpwb3J0KQ0KPit7DQo+KwlzdHJ1Y3QgZG9tYWluX2Rldmlj ZSAqZGV2Ow0KPisNCj4rIHJldHJ5Og0KPisJbXV0ZXhfbG9jaygmcG9ydC0+aGEtPmRpc2NvX211 dGV4KTsNCj4rCWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmcG9ydC0+ZGV2X2xpc3QsIGRldl9s aXN0X25vZGUpIHsNCj4rCQlzdHJ1Y3Qgc2F0YV9kZXZpY2UgKnNhdGE7DQo+Kw0KPisJCWlmICgh ZGV2X2lzX3NhdGEoZGV2KSkNCj4rCQkJY29udGludWU7DQo+Kw0KPisJCXNhdGEgPSAmZGV2LT5z YXRhX2RldjsNCj4rCQlpZiAoc2F0YS0+YXAtPnBtX21lc2cuZXZlbnQgPT0gUE1fRVZFTlRfU1VT UEVORCkNCj4rCQkJY29udGludWU7DQo+Kw0KPisJCXNhdGEtPnBtX3Jlc3VsdCA9IC1FSU87DQo+ KwkJYXRhX3Nhc19wb3J0X2FzeW5jX3N1c3BlbmQoc2F0YS0+YXAsICZzYXRhLT5wbV9yZXN1bHQp Ow0KPisJfQ0KPisJbXV0ZXhfdW5sb2NrKCZwb3J0LT5oYS0+ZGlzY29fbXV0ZXgpOw0KPisNCj4r CWlmIChzYXNfYXRhX2ZsdXNoX3BtX2VoKHBvcnQsIF9fZnVuY19fKSkNCj4rCQlnb3RvIHJldHJ5 Ow0KPit9DQo+Kw0KPit2b2lkIHNhc19yZXN1bWVfc2F0YShzdHJ1Y3QgYXNkX3Nhc19wb3J0ICpw b3J0KQ0KPit7DQo+KwlzdHJ1Y3QgZG9tYWluX2RldmljZSAqZGV2Ow0KPisNCj4rIHJldHJ5Og0K PisJbXV0ZXhfbG9jaygmcG9ydC0+aGEtPmRpc2NvX211dGV4KTsNCj4rCWxpc3RfZm9yX2VhY2hf ZW50cnkoZGV2LCAmcG9ydC0+ZGV2X2xpc3QsIGRldl9saXN0X25vZGUpIHsNCj4rCQlzdHJ1Y3Qg c2F0YV9kZXZpY2UgKnNhdGE7DQo+Kw0KPisJCWlmICghZGV2X2lzX3NhdGEoZGV2KSkNCj4rCQkJ Y29udGludWU7DQo+Kw0KPisJCXNhdGEgPSAmZGV2LT5zYXRhX2RldjsNCj4rCQlpZiAoc2F0YS0+ YXAtPnBtX21lc2cuZXZlbnQgPT0gUE1fRVZFTlRfT04pDQo+KwkJCWNvbnRpbnVlOw0KPisNCj4r CQlzYXRhLT5wbV9yZXN1bHQgPSAtRUlPOw0KPisJCWF0YV9zYXNfcG9ydF9hc3luY19yZXN1bWUo c2F0YS0+YXAsICZzYXRhLT5wbV9yZXN1bHQpOw0KPisJfQ0KPisJbXV0ZXhfdW5sb2NrKCZwb3J0 LT5oYS0+ZGlzY29fbXV0ZXgpOw0KPisNCj4rCWlmIChzYXNfYXRhX2ZsdXNoX3BtX2VoKHBvcnQs IF9fZnVuY19fKSkNCj4rCQlnb3RvIHJldHJ5Ow0KPiB9DQo+IA0KPiAvKioNCj5kaWZmIC0tZ2l0 IGEvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZGlzY292ZXIuYyBiL2RyaXZlcnMvc2NzaS9saWJz YXMvc2FzX2Rpc2NvdmVyLmMNCj5pbmRleCBhOThmZTZlLi44YjFiNGVmIDEwMDY0NA0KPi0tLSBh L2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2Rpc2NvdmVyLmMNCj4rKysgYi9kcml2ZXJzL3Njc2kv bGlic2FzL3Nhc19kaXNjb3Zlci5jDQo+QEAgLTE3MSwxNiArMTcxLDE4IEBAIGludCBzYXNfbm90 aWZ5X2xsZGRfZGV2X2ZvdW5kKHN0cnVjdCBkb21haW5fZGV2aWNlICpkZXYpDQo+IAlzdHJ1Y3Qg U2NzaV9Ib3N0ICpzaG9zdCA9IHNhc19oYS0+Y29yZS5zaG9zdDsNCj4gCXN0cnVjdCBzYXNfaW50 ZXJuYWwgKmkgPSB0b19zYXNfaW50ZXJuYWwoc2hvc3QtPnRyYW5zcG9ydHQpOw0KPiANCj4tCWlm IChpLT5kZnQtPmxsZGRfZGV2X2ZvdW5kKSB7DQo+LQkJcmVzID0gaS0+ZGZ0LT5sbGRkX2Rldl9m b3VuZChkZXYpOw0KPi0JCWlmIChyZXMpIHsNCj4tCQkJcHJpbnRrKCJzYXM6IGRyaXZlciBvbiBw Y2lkZXYgJXMgY2Fubm90IGhhbmRsZSAiDQo+LQkJCSAgICAgICAiZGV2aWNlICVsbHgsIGVycm9y OiVkXG4iLA0KPi0JCQkgICAgICAgZGV2X25hbWUoc2FzX2hhLT5kZXYpLA0KPi0JCQkgICAgICAg U0FTX0FERFIoZGV2LT5zYXNfYWRkciksIHJlcyk7DQo+LQkJfQ0KPi0JCWtyZWZfZ2V0KCZkZXYt PmtyZWYpOw0KPisJaWYgKCFpLT5kZnQtPmxsZGRfZGV2X2ZvdW5kKQ0KPisJCXJldHVybiAwOw0K PisNCj4rCXJlcyA9IGktPmRmdC0+bGxkZF9kZXZfZm91bmQoZGV2KTsNCj4rCWlmIChyZXMpIHsN Cj4rCQlwcmludGsoInNhczogZHJpdmVyIG9uIHBjaWRldiAlcyBjYW5ub3QgaGFuZGxlICINCj4r CQkgICAgICAgImRldmljZSAlbGx4LCBlcnJvcjolZFxuIiwNCj4rCQkgICAgICAgZGV2X25hbWUo c2FzX2hhLT5kZXYpLA0KPisJCSAgICAgICBTQVNfQUREUihkZXYtPnNhc19hZGRyKSwgcmVzKTsN Cj4gCX0NCj4rCXNldF9iaXQoU0FTX0RFVl9GT1VORCwgJmRldi0+c3RhdGUpOw0KPisJa3JlZl9n ZXQoJmRldi0+a3JlZik7DQo+IAlyZXR1cm4gcmVzOw0KPiB9DQo+IA0KPkBAIC0xOTEsNyArMTkz LDEwIEBAIHZvaWQgc2FzX25vdGlmeV9sbGRkX2Rldl9nb25lKHN0cnVjdCBkb21haW5fZGV2aWNl ICpkZXYpDQo+IAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IHNhc19oYS0+Y29yZS5zaG9zdDsN Cj4gCXN0cnVjdCBzYXNfaW50ZXJuYWwgKmkgPSB0b19zYXNfaW50ZXJuYWwoc2hvc3QtPnRyYW5z cG9ydHQpOw0KPiANCj4tCWlmIChpLT5kZnQtPmxsZGRfZGV2X2dvbmUpIHsNCj4rCWlmICghaS0+ ZGZ0LT5sbGRkX2Rldl9nb25lKQ0KPisJCXJldHVybjsNCj4rDQo+KwlpZiAodGVzdF9hbmRfY2xl YXJfYml0KFNBU19ERVZfRk9VTkQsICZkZXYtPnN0YXRlKSkgew0KPiAJCWktPmRmdC0+bGxkZF9k ZXZfZ29uZShkZXYpOw0KPiAJCXNhc19wdXRfZGV2aWNlKGRldik7DQo+IAl9DQo+QEAgLTIyNSw2 ICsyMzAsNDcgQEAgc3RhdGljIHZvaWQgc2FzX3Byb2JlX2RldmljZXMoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQ0KPiAJfQ0KPiB9DQo+IA0KPitzdGF0aWMgdm9pZCBzYXNfc3VzcGVuZF9kZXZp Y2VzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4rew0KPisJc3RydWN0IGFzZF9zYXNfcGh5 ICpwaHk7DQo+KwlzdHJ1Y3QgZG9tYWluX2RldmljZSAqZGV2Ow0KPisJc3RydWN0IHNhc19kaXNj b3ZlcnlfZXZlbnQgKmV2ID0gdG9fc2FzX2Rpc2NvdmVyeV9ldmVudCh3b3JrKTsNCj4rCXN0cnVj dCBhc2Rfc2FzX3BvcnQgKnBvcnQgPSBldi0+cG9ydDsNCj4rCXN0cnVjdCBTY3NpX0hvc3QgKnNo b3N0ID0gcG9ydC0+aGEtPmNvcmUuc2hvc3Q7DQo+KwlzdHJ1Y3Qgc2FzX2ludGVybmFsICpzaSA9 IHRvX3Nhc19pbnRlcm5hbChzaG9zdC0+dHJhbnNwb3J0dCk7DQo+Kw0KPisJY2xlYXJfYml0KERJ U0NFX1NVU1BFTkQsICZwb3J0LT5kaXNjLnBlbmRpbmcpOw0KPisNCj4rCXNhc19zdXNwZW5kX3Nh dGEocG9ydCk7DQo+Kw0KPisJLyogbGxkZCBpcyBmcmVlIHRvIGZvcmdldCB0aGUgZG9tYWluX2Rl dmljZSBhY3Jvc3MgdGhlDQo+KwkgKiBzdXNwZW5zaW9uLCB3ZSBmb3JjZSB0aGUgaXNzdWUgaGVy ZSB0byBrZWVwIHRoZSByZWZlcmVuY2UNCj4rCSAqIGNvdW50cyBhbGlnbmVkDQo+KwkgKi8NCj4r CWxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCAmcG9ydC0+ZGV2X2xpc3QsIGRldl9saXN0X25vZGUp DQo+KwkJc2FzX25vdGlmeV9sbGRkX2Rldl9nb25lKGRldik7DQo+Kw0KPisJLyogd2UgYXJlIHN1 c3BlbmRpbmcsIHNvIHdlIGtub3cgZXZlbnRzIGFyZSBkaXNhYmxlZCBhbmQNCj4rCSAqIHBoeV9s aXN0IGlzIG5vdCBiZWluZyBtdXRhdGVkDQo+KwkgKi8NCj4rCWxpc3RfZm9yX2VhY2hfZW50cnko cGh5LCAmcG9ydC0+cGh5X2xpc3QsIHBvcnRfcGh5X2VsKSB7DQo+KwkJaWYgKHNpLT5kZnQtPmxs ZGRfcG9ydF9mb3JtZWQpDQo+KwkJCXNpLT5kZnQtPmxsZGRfcG9ydF9kZWZvcm1lZChwaHkpOw0K PisJCXBoeS0+c3VzcGVuZGVkID0gMTsNCj4rCQlwb3J0LT5zdXNwZW5kZWQgPSAxOw0KPisJfQ0K Pit9DQo+Kw0KPitzdGF0aWMgdm9pZCBzYXNfcmVzdW1lX2RldmljZXMoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQ0KPit7DQo+KwlzdHJ1Y3Qgc2FzX2Rpc2NvdmVyeV9ldmVudCAqZXYgPSB0b19z YXNfZGlzY292ZXJ5X2V2ZW50KHdvcmspOw0KPisJc3RydWN0IGFzZF9zYXNfcG9ydCAqcG9ydCA9 IGV2LT5wb3J0Ow0KPisNCj4rCWNsZWFyX2JpdChESVNDRV9SRVNVTUUsICZwb3J0LT5kaXNjLnBl bmRpbmcpOw0KPisNCj4rCXNhc19yZXN1bWVfc2F0YShwb3J0KTsNCj4rfQ0KPisNCj4gLyoqDQo+ ICAqIHNhc19kaXNjb3Zlcl9lbmRfZGV2IC0tIGRpc2NvdmVyIGFuIGVuZCBkZXZpY2UgKFNTUCwg ZXRjKQ0KPiAgKiBAZW5kOiBwb2ludGVyIHRvIGRvbWFpbiBkZXZpY2Ugb2YgaW50ZXJlc3QNCj5A QCAtNTIxLDYgKzU2Nyw4IEBAIHZvaWQgc2FzX2luaXRfZGlzYyhzdHJ1Y3Qgc2FzX2Rpc2NvdmVy eSAqZGlzYywgc3RydWN0IGFzZF9zYXNfcG9ydCAqcG9ydCkNCj4gCQlbRElTQ0VfRElTQ09WRVJf RE9NQUlOXSA9IHNhc19kaXNjb3Zlcl9kb21haW4sDQo+IAkJW0RJU0NFX1JFVkFMSURBVEVfRE9N QUlOXSA9IHNhc19yZXZhbGlkYXRlX2RvbWFpbiwNCj4gCQlbRElTQ0VfUFJPQkVdID0gc2FzX3By b2JlX2RldmljZXMsDQo+KwkJW0RJU0NFX1NVU1BFTkRdID0gc2FzX3N1c3BlbmRfZGV2aWNlcywN Cj4rCQlbRElTQ0VfUkVTVU1FXSA9IHNhc19yZXN1bWVfZGV2aWNlcywNCj4gCQlbRElTQ0VfREVT VFJVQ1RdID0gc2FzX2Rlc3RydWN0X2RldmljZXMsDQo+IAl9Ow0KPiANCj5kaWZmIC0tZ2l0IGEv ZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZHVtcC5jIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNf ZHVtcC5jDQo+aW5kZXggZmM0NjA5My4uY2Q2Zjk5YyAxMDA2NDQNCj4tLS0gYS9kcml2ZXJzL3Nj c2kvbGlic2FzL3Nhc19kdW1wLmMNCj4rKysgYi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19kdW1w LmMNCj5AQCAtNDEsNiArNDEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2FzX3BoeWVfc3RyW10g PSB7DQo+IAlbMV0gPSAiUEhZRV9PT0JfRE9ORSIsDQo+IAlbMl0gPSAiUEhZRV9PT0JfRVJST1Ii LA0KPiAJWzNdID0gIlBIWUVfU1BJTlVQX0hPTEQiLA0KPisJWzRdID0gIlBIWUVfUkVTVU1FX1RJ TUVPVVQiLA0KPiB9Ow0KPiANCj4gdm9pZCBzYXNfZHByaW50X3BvcnRlKGludCBwaHlpZCwgZW51 bSBwb3J0X2V2ZW50IHBlKQ0KPmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19l dmVudC5jIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYw0KPmluZGV4IDc4OWM0ZDgu LmFhZGJkNTMgMTAwNjQ0DQo+LS0tIGEvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXZlbnQuYw0K PisrKyBiL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V2ZW50LmMNCj5AQCAtMTM0LDcgKzEzNCw3 IEBAIHN0YXRpYyB2b2lkIG5vdGlmeV9wb3J0X2V2ZW50KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5 LCBlbnVtIHBvcnRfZXZlbnQgZXZlbnQpDQo+IAkJCSZwaHktPnBvcnRfZXZlbnRzW2V2ZW50XS53 b3JrLCBoYSk7DQo+IH0NCj4gDQo+LXN0YXRpYyB2b2lkIG5vdGlmeV9waHlfZXZlbnQoc3RydWN0 IGFzZF9zYXNfcGh5ICpwaHksIGVudW0gcGh5X2V2ZW50IGV2ZW50KQ0KPit2b2lkIHNhc19ub3Rp ZnlfcGh5X2V2ZW50KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5LCBlbnVtIHBoeV9ldmVudCBldmVu dCkNCj4gew0KPiAJc3RydWN0IHNhc19oYV9zdHJ1Y3QgKmhhID0gcGh5LT5oYTsNCj4gDQo+QEAg LTE1OSw3ICsxNTksNyBAQCBpbnQgc2FzX2luaXRfZXZlbnRzKHN0cnVjdCBzYXNfaGFfc3RydWN0 ICpzYXNfaGEpDQo+IA0KPiAJc2FzX2hhLT5ub3RpZnlfaGFfZXZlbnQgPSBub3RpZnlfaGFfZXZl bnQ7DQo+IAlzYXNfaGEtPm5vdGlmeV9wb3J0X2V2ZW50ID0gbm90aWZ5X3BvcnRfZXZlbnQ7DQo+ LQlzYXNfaGEtPm5vdGlmeV9waHlfZXZlbnQgPSBub3RpZnlfcGh5X2V2ZW50Ow0KPisJc2FzX2hh LT5ub3RpZnlfcGh5X2V2ZW50ID0gc2FzX25vdGlmeV9waHlfZXZlbnQ7DQo+IA0KPiAJcmV0dXJu IDA7DQo+IH0NCj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jIGIv ZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfaW5pdC5jDQo+aW5kZXggMWJiYWIzZC4uMjljMDkxMCAx MDA2NDQNCj4tLS0gYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMNCj4rKysgYi9kcml2 ZXJzL3Njc2kvbGlic2FzL3Nhc19pbml0LmMNCj5AQCAtMTU5LDcgKzE1OSw3IEBAIFVuZG9fcGh5 czoNCj4gCXJldHVybiBlcnJvcjsNCj4gfQ0KPiANCj4taW50IHNhc191bnJlZ2lzdGVyX2hhKHN0 cnVjdCBzYXNfaGFfc3RydWN0ICpzYXNfaGEpDQo+K3N0YXRpYyB2b2lkIHNhc19kaXNhYmxlX2V2 ZW50cyhzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqc2FzX2hhKQ0KPiB7DQo+IAkvKiBTZXQgdGhlIHN0 YXRlIHRvIHVucmVnaXN0ZXJlZCB0byBhdm9pZCBmdXJ0aGVyIHVuY2hhaW5lZA0KPiAJICogZXZl bnRzIHRvIGJlIHF1ZXVlZCwgYW5kIGZsdXNoIGFueSBpbi1wcm9ncmVzcyBkcmFpbmVycw0KPkBA IC0xNzAsNyArMTcwLDExIEBAIGludCBzYXNfdW5yZWdpc3Rlcl9oYShzdHJ1Y3Qgc2FzX2hhX3N0 cnVjdCAqc2FzX2hhKQ0KPiAJc3Bpbl91bmxvY2tfaXJxKCZzYXNfaGEtPmxvY2spOw0KPiAJX19z YXNfZHJhaW5fd29yayhzYXNfaGEpOw0KPiAJbXV0ZXhfdW5sb2NrKCZzYXNfaGEtPmRyYWluX211 dGV4KTsNCj4rfQ0KPiANCj4raW50IHNhc191bnJlZ2lzdGVyX2hhKHN0cnVjdCBzYXNfaGFfc3Ry dWN0ICpzYXNfaGEpDQo+K3sNCj4rCXNhc19kaXNhYmxlX2V2ZW50cyhzYXNfaGEpOw0KPiAJc2Fz X3VucmVnaXN0ZXJfcG9ydHMoc2FzX2hhKTsNCj4gDQo+IAkvKiBmbHVzaCB1bnJlZ2lzdHJhdGlv biB3b3JrICovDQo+QEAgLTM2Miw2ICszNjYsOTAgQEAgaW50IHNhc19zZXRfcGh5X3NwZWVkKHN0 cnVjdCBzYXNfcGh5ICpwaHksDQo+IAlyZXR1cm4gcmV0Ow0KPiB9DQo+IA0KPit2b2lkIHNhc19w cmVwX3Jlc3VtZV9oYShzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqaGEpDQo+K3sNCj4rCWludCBpOw0K PisNCj4rCXNldF9iaXQoU0FTX0hBX1JFR0lTVEVSRUQsICZoYS0+c3RhdGUpOw0KPisNCj4rCS8q IGNsZWFyIG91dCBhbnkgc3RhbGUgbGluayBldmVudHMvZGF0YSBmcm9tIHRoZSBzdXNwZW5zaW9u IHBhdGggKi8NCj4rCWZvciAoaSA9IDA7IGkgPCBoYS0+bnVtX3BoeXM7IGkrKykgew0KPisJCXN0 cnVjdCBhc2Rfc2FzX3BoeSAqcGh5ID0gaGEtPnNhc19waHlbaV07DQo+Kw0KPisJCW1lbXNldChw aHktPmF0dGFjaGVkX3Nhc19hZGRyLCAwLCBTQVNfQUREUl9TSVpFKTsNCj4rCQlwaHktPnBvcnRf ZXZlbnRzX3BlbmRpbmcgPSAwOw0KPisJCXBoeS0+cGh5X2V2ZW50c19wZW5kaW5nID0gMDsNCj4r CQlwaHktPmZyYW1lX3JjdmRfc2l6ZSA9IDA7DQo+Kwl9DQo+K30NCj4rRVhQT1JUX1NZTUJPTChz YXNfcHJlcF9yZXN1bWVfaGEpOw0KPisNCj4rc3RhdGljIGludCBwaHlzX3N1c3BlbmRlZChzdHJ1 Y3Qgc2FzX2hhX3N0cnVjdCAqaGEpDQo+K3sNCj4rCWludCBpLCByYyA9IDA7DQo+Kw0KPisJZm9y IChpID0gMDsgaSA8IGhhLT5udW1fcGh5czsgaSsrKSB7DQo+KwkJc3RydWN0IGFzZF9zYXNfcGh5 ICpwaHkgPSBoYS0+c2FzX3BoeVtpXTsNCj4rDQo+KwkJaWYgKHBoeS0+c3VzcGVuZGVkKQ0KPisJ CQlyYysrOw0KPisJfQ0KPisNCj4rCXJldHVybiByYzsNCj4rfQ0KPisNCj4rdm9pZCBzYXNfcmVz dW1lX2hhKHN0cnVjdCBzYXNfaGFfc3RydWN0ICpoYSkNCj4rew0KPisJY29uc3QgdW5zaWduZWQg bG9uZyB0bW8gPSBtc2Vjc190b19qaWZmaWVzKDI1MDAwKTsNCj4rCWludCBpOw0KPisNCj4rCS8q IGRlZm9ybSBwb3J0cyBvbiBwaHlzIHRoYXQgZGlkIG5vdCByZXN1bWUNCj4rCSAqIGF0IHRoaXMg cG9pbnQgd2UgbWF5IGJlIHJhY2luZyB0aGUgcGh5IGNvbWluZyBiYWNrIChhcyBwb3N0ZWQNCj4r CSAqIGJ5IHRoZSBsbGRkKS4gIFNvIHdlIHBvc3QgdGhlIGV2ZW50IGFuZCBvbmNlIHdlIGFyZSBp biB0aGUNCj4rCSAqIGxpYnNhcyBjb250ZXh0IGNoZWNrIHRoYXQgdGhlIHBoeSByZW1haW5zIHN1 c3BlbmRlZCBiZWZvcmUNCj4rCSAqIHRlYXJpbmcgaXQgZG93bi4NCj4rCSAqLw0KPisJaSA9IHBo eXNfc3VzcGVuZGVkKGhhKTsNCj4rCWlmIChpKQ0KPisJCWRldl9pbmZvKGhhLT5kZXYsICJ3YWl0 aW5nIHVwIHRvIDI1IHNlY29uZHMgZm9yICVkIHBoeSVzIHRvIHJlc3VtZVxuIiwNCj4rCQkJIGks IGkgPiAxID8gInMiIDogIiIpOw0KPisJd2FpdF9ldmVudF90aW1lb3V0KGhhLT5laF93YWl0X3Es IHBoeXNfc3VzcGVuZGVkKGhhKSA9PSAwLCB0bW8pOw0KPisJZm9yIChpID0gMDsgaSA8IGhhLT5u dW1fcGh5czsgaSsrKSB7DQo+KwkJc3RydWN0IGFzZF9zYXNfcGh5ICpwaHkgPSBoYS0+c2FzX3Bo eVtpXTsNCj4rDQo+KwkJaWYgKHBoeS0+c3VzcGVuZGVkKSB7DQo+KwkJCWRldl93YXJuKCZwaHkt PnBoeS0+ZGV2LCAicmVzdW1lIHRpbWVvdXRcbiIpOw0KPisJCQlzYXNfbm90aWZ5X3BoeV9ldmVu dChwaHksIFBIWUVfUkVTVU1FX1RJTUVPVVQpOw0KPisJCX0NCj4rCX0NCj4rDQo+KwkvKiBhbGwg cGh5cyBhcmUgYmFjayB1cCBvciB0aW1lZCBvdXQsIHR1cm4gb24gaS9vIHNvIHdlIGNhbg0KPisJ ICogZmx1c2ggb3V0IGRpc2tzIHRoYXQgZGlkIG5vdCByZXR1cm4NCj4rCSAqLw0KPisJc2NzaV91 bmJsb2NrX3JlcXVlc3RzKGhhLT5jb3JlLnNob3N0KTsNCj4rCXNhc19kcmFpbl93b3JrKGhhKTsN Cj4rfQ0KPitFWFBPUlRfU1lNQk9MKHNhc19yZXN1bWVfaGEpOw0KPisNCj4rdm9pZCBzYXNfc3Vz cGVuZF9oYShzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqaGEpDQo+K3sNCj4rCWludCBpOw0KPisNCj4r CXNhc19kaXNhYmxlX2V2ZW50cyhoYSk7DQo+KwlzY3NpX2Jsb2NrX3JlcXVlc3RzKGhhLT5jb3Jl LnNob3N0KTsNCj4rCWZvciAoaSA9IDA7IGkgPCBoYS0+bnVtX3BoeXM7IGkrKykgew0KPisJCXN0 cnVjdCBhc2Rfc2FzX3BvcnQgKnBvcnQgPSBoYS0+c2FzX3BvcnRbaV07DQo+Kw0KPisJCXNhc19k aXNjb3Zlcl9ldmVudChwb3J0LCBESVNDRV9TVVNQRU5EKTsNCj4rCX0NCj4rDQo+KwkvKiBmbHVz aCBzdXNwZW5kIGV2ZW50cyB3aGlsZSB1bnJlZ2lzdGVyZWQgKi8NCj4rCW11dGV4X2xvY2soJmhh LT5kcmFpbl9tdXRleCk7DQo+KwlfX3Nhc19kcmFpbl93b3JrKGhhKTsNCj4rCW11dGV4X3VubG9j aygmaGEtPmRyYWluX211dGV4KTsNCj4rfQ0KPitFWFBPUlRfU1lNQk9MKHNhc19zdXNwZW5kX2hh KTsNCj4rDQo+IHN0YXRpYyB2b2lkIHNhc19waHlfcmVsZWFzZShzdHJ1Y3Qgc2FzX3BoeSAqcGh5 KQ0KPiB7DQo+IAlrZnJlZShwaHktPmhvc3RkYXRhKTsNCj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9z Y3NpL2xpYnNhcy9zYXNfaW50ZXJuYWwuaCBiL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2ludGVy bmFsLmgNCj5pbmRleCA1MDdlNGNmLi5hOTEwMjhlIDEwMDY0NA0KPi0tLSBhL2RyaXZlcnMvc2Nz aS9saWJzYXMvc2FzX2ludGVybmFsLmgNCj4rKysgYi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19p bnRlcm5hbC5oDQo+QEAgLTg4LDcgKzg4LDkgQEAgdm9pZCBzYXNfbm90aWZ5X2xsZGRfZGV2X2dv bmUoc3RydWN0IGRvbWFpbl9kZXZpY2UgKik7DQo+IGludCBzYXNfc21wX3BoeV9jb250cm9sKHN0 cnVjdCBkb21haW5fZGV2aWNlICpkZXYsIGludCBwaHlfaWQsDQo+IAkJCWVudW0gcGh5X2Z1bmMg cGh5X2Z1bmMsIHN0cnVjdCBzYXNfcGh5X2xpbmtyYXRlcyAqKTsNCj4gaW50IHNhc19zbXBfZ2V0 X3BoeV9ldmVudHMoc3RydWN0IHNhc19waHkgKnBoeSk7DQo+K2ludCBzYXNfcXVldWVfcmVzZXQo c3RydWN0IGRvbWFpbl9kZXZpY2UgKmRldiwgaW50IHJlc2V0X3R5cGUsIGludCBsdW4sIGludCB3 YWl0KTsNCj4gDQo+K3ZvaWQgc2FzX25vdGlmeV9waHlfZXZlbnQoc3RydWN0IGFzZF9zYXNfcGh5 ICpwaHksIGVudW0gcGh5X2V2ZW50IGV2ZW50KTsNCj4gdm9pZCBzYXNfZGV2aWNlX3NldF9waHko c3RydWN0IGRvbWFpbl9kZXZpY2UgKmRldiwgc3RydWN0IHNhc19wb3J0ICpwb3J0KTsNCj4gc3Ry dWN0IGRvbWFpbl9kZXZpY2UgKnNhc19maW5kX2Rldl9ieV9ycGh5KHN0cnVjdCBzYXNfcnBoeSAq cnBoeSk7DQo+IHN0cnVjdCBkb21haW5fZGV2aWNlICpzYXNfZXhfdG9fYXRhKHN0cnVjdCBkb21h aW5fZGV2aWNlICpleF9kZXYsIGludCBwaHlfaWQpOw0KPmRpZmYgLS1naXQgYS9kcml2ZXJzL3Nj c2kvbGlic2FzL3Nhc19waHkuYyBiL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3BoeS5jDQo+aW5k ZXggNTIxNDIyZS4uY2RlZTQ0NiAxMDA2NDQNCj4tLS0gYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nh c19waHkuYw0KPisrKyBiL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3BoeS5jDQo+QEAgLTk0LDYg Kzk0LDI1IEBAIHN0YXRpYyB2b2lkIHNhc19waHllX3NwaW51cF9ob2xkKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykNCj4gCWktPmRmdC0+bGxkZF9jb250cm9sX3BoeShwaHksIFBIWV9GVU5DX1JF TEVBU0VfU1BJTlVQX0hPTEQsIE5VTEwpOw0KPiB9DQo+IA0KPitzdGF0aWMgdm9pZCBzYXNfcGh5 ZV9yZXN1bWVfdGltZW91dChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+K3sNCj4rCXN0cnVj dCBhc2Rfc2FzX2V2ZW50ICpldiA9IHRvX2FzZF9zYXNfZXZlbnQod29yayk7DQo+KwlzdHJ1Y3Qg YXNkX3Nhc19waHkgKnBoeSA9IGV2LT5waHk7DQo+Kw0KPisJY2xlYXJfYml0KFBIWUVfUkVTVU1F X1RJTUVPVVQsICZwaHktPnBoeV9ldmVudHNfcGVuZGluZyk7DQo+Kw0KPisJLyogcGhldywgbGxk ZCBnb3QgdGhlIHBoeSBiYWNrIGluIHRoZSBuaWNrIG9mIHRpbWUgKi8NCj4rCWlmICghcGh5LT5z dXNwZW5kZWQpIHsNCj4rCQlkZXZfaW5mbygmcGh5LT5waHktPmRldiwgInJlc3VtZSB0aW1lb3V0 IGNhbmNlbGxlZFxuIik7DQo+KwkJcmV0dXJuOw0KPisJfQ0KPisNCj4rCXBoeS0+ZXJyb3IgPSAw Ow0KPisJcGh5LT5zdXNwZW5kZWQgPSAwOw0KPisJc2FzX2RlZm9ybV9wb3J0KHBoeSwgMSk7DQo+ K30NCj4rDQo+Kw0KPiAvKiAtLS0tLS0tLS0tIFBoeSBjbGFzcyByZWdpc3RyYXRpb24gLS0tLS0t LS0tLSAqLw0KPiANCj4gaW50IHNhc19yZWdpc3Rlcl9waHlzKHN0cnVjdCBzYXNfaGFfc3RydWN0 ICpzYXNfaGEpDQo+QEAgLTEwNSw2ICsxMjQsOCBAQCBpbnQgc2FzX3JlZ2lzdGVyX3BoeXMoc3Ry dWN0IHNhc19oYV9zdHJ1Y3QgKnNhc19oYSkNCj4gCQlbUEhZRV9PT0JfRE9ORV0gPSBzYXNfcGh5 ZV9vb2JfZG9uZSwNCj4gCQlbUEhZRV9PT0JfRVJST1JdID0gc2FzX3BoeWVfb29iX2Vycm9yLA0K PiAJCVtQSFlFX1NQSU5VUF9IT0xEXSA9IHNhc19waHllX3NwaW51cF9ob2xkLA0KPisJCVtQSFlF X1JFU1VNRV9USU1FT1VUXSA9IHNhc19waHllX3Jlc3VtZV90aW1lb3V0LA0KPisNCj4gCX07DQo+ IA0KPiAJc3RhdGljIGNvbnN0IHdvcmtfZnVuY190IHNhc19wb3J0X2V2ZW50X2Zuc1tQT1JUX05V TV9FVkVOVFNdID0gew0KPmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19wb3J0 LmMgYi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19wb3J0LmMNCj5pbmRleCAxY2Y3ZDc1Li4xYWMw YzhiIDEwMDY0NA0KPi0tLSBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3BvcnQuYw0KPisrKyBi L2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3BvcnQuYw0KPkBAIC0zOSw2ICszOSw0OSBAQCBzdGF0 aWMgYm9vbCBwaHlfaXNfd2lkZXBvcnRfbWVtYmVyKHN0cnVjdCBhc2Rfc2FzX3BvcnQgKnBvcnQs IHN0cnVjdCBhc2Rfc2FzX3BoeQ0KPiAJcmV0dXJuIHRydWU7DQo+IH0NCj4gDQo+K3N0YXRpYyB2 b2lkIHNhc19yZXN1bWVfcG9ydChzdHJ1Y3QgYXNkX3Nhc19waHkgKnBoeSkNCj4rew0KPisJc3Ry dWN0IGRvbWFpbl9kZXZpY2UgKmRldjsNCj4rCXN0cnVjdCBhc2Rfc2FzX3BvcnQgKnBvcnQgPSBw aHktPnBvcnQ7DQo+KwlzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqc2FzX2hhID0gcGh5LT5oYTsNCj4r CXN0cnVjdCBzYXNfaW50ZXJuYWwgKnNpID0gdG9fc2FzX2ludGVybmFsKHNhc19oYS0+Y29yZS5z aG9zdC0+dHJhbnNwb3J0dCk7DQo+Kw0KPisJaWYgKHNpLT5kZnQtPmxsZGRfcG9ydF9mb3JtZWQp DQo+KwkJc2ktPmRmdC0+bGxkZF9wb3J0X2Zvcm1lZChwaHkpOw0KPisNCj4rCWlmIChwb3J0LT5z dXNwZW5kZWQpDQo+KwkJcG9ydC0+c3VzcGVuZGVkID0gMDsNCj4rCWVsc2Ugew0KPisJCS8qIHdl IG9ubHkgbmVlZCB0byBoYW5kbGUgImxpbmsgcmV0dXJuZWQiIGFjdGlvbnMgb25jZSAqLw0KPisJ CXJldHVybjsNCj4rCX0NCj4rDQo+KwkvKiBpZiB0aGUgcG9ydCBjYW1lIGJhY2s6DQo+KwkgKiAx LyBwcmVzdW1lIGV2ZXJ5IGRldmljZSBjYW1lIGJhY2sNCj4rCSAqIDIvIGZvcmNlIHRoZSBuZXh0 IHJldmFsaWRhdGlvbiB0byBjaGVjayBhbGwgZXhwYW5kZXIgcGh5cw0KPisJICovDQo+KwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGRldiwgJnBvcnQtPmRldl9saXN0LCBkZXZfbGlzdF9ub2RlKSB7DQo+ KwkJaW50IGksIHJjOw0KPisNCj4rCQlyYyA9IHNhc19ub3RpZnlfbGxkZF9kZXZfZm91bmQoZGV2 KTsNCj4rCQlpZiAocmMpIHsNCj4rCQkJc2FzX3VucmVnaXN0ZXJfZGV2KHBvcnQsIGRldik7DQo+ KwkJCWNvbnRpbnVlOw0KPisJCX0NCj4rDQo+KwkJaWYgKGRldi0+ZGV2X3R5cGUgPT0gRURHRV9E RVYgfHwgZGV2LT5kZXZfdHlwZSA9PSBGQU5PVVRfREVWKSB7DQo+KwkJCWRldi0+ZXhfZGV2LmV4 X2NoYW5nZV9jb3VudCA9IC0xOw0KPisJCQlmb3IgKGkgPSAwOyBpIDwgZGV2LT5leF9kZXYubnVt X3BoeXM7IGkrKykgew0KPisJCQkJc3RydWN0IGV4X3BoeSAqcGh5ID0gJmRldi0+ZXhfZGV2LmV4 X3BoeVtpXTsNCj4rDQo+KwkJCQlwaHktPnBoeV9jaGFuZ2VfY291bnQgPSAtMTsNCj4rCQkJfQ0K PisJCX0NCj4rCX0NCj4rDQo+KwlzYXNfZGlzY292ZXJfZXZlbnQocG9ydCwgRElTQ0VfUkVTVU1F KTsNCj4rfQ0KPisNCj4gLyoqDQo+ICAqIHNhc19mb3JtX3BvcnQgLS0gYWRkIHRoaXMgcGh5IHRv IGEgcG9ydA0KPiAgKiBAcGh5OiB0aGUgcGh5IG9mIGludGVyZXN0DQo+QEAgLTU4LDcgKzEwMSwx NCBAQCBzdGF0aWMgdm9pZCBzYXNfZm9ybV9wb3J0KHN0cnVjdCBhc2Rfc2FzX3BoeSAqcGh5KQ0K PiAJaWYgKHBvcnQpIHsNCj4gCQlpZiAoIXBoeV9pc193aWRlcG9ydF9tZW1iZXIocG9ydCwgcGh5 KSkNCj4gCQkJc2FzX2RlZm9ybV9wb3J0KHBoeSwgMCk7DQo+LQkJZWxzZSB7DQo+KwkJZWxzZSBp ZiAocGh5LT5zdXNwZW5kZWQpIHsNCj4rCQkJcGh5LT5zdXNwZW5kZWQgPSAwOw0KPisJCQlzYXNf cmVzdW1lX3BvcnQocGh5KTsNCj4rDQo+KwkJCS8qIHBoeSBjYW1lIGJhY2ssIHRyeSB0byBjYW5j ZWwgdGhlIHRpbWVvdXQgKi8NCj4rCQkJd2FrZV91cCgmc2FzX2hhLT5laF93YWl0X3EpOw0KPisJ CQlyZXR1cm47DQo+KwkJfSBlbHNlIHsNCj4gCQkJU0FTX0RQUklOVEsoIiVzOiBwaHklZCBiZWxv bmdzIHRvIHBvcnQlZCBhbHJlYWR5KCVkKSFcbiIsDQo+IAkJCQkgICAgX19mdW5jX18sIHBoeS0+ aWQsIHBoeS0+cG9ydC0+aWQsDQo+IAkJCQkgICAgcGh5LT5wb3J0LT5udW1fcGh5cyk7DQo+ZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3Njc2lfaG9zdC5jIGIvZHJpdmVycy9z Y3NpL2xpYnNhcy9zYXNfc2NzaV9ob3N0LmMNCj5pbmRleCA1MGExOGE2Li4wN2ZiYTgyIDEwMDY0 NA0KPi0tLSBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX3Njc2lfaG9zdC5jDQo+KysrIGIvZHJp dmVycy9zY3NpL2xpYnNhcy9zYXNfc2NzaV9ob3N0LmMNCj5AQCAtNDkwLDcgKzQ5MCw3IEBAIHN0 YXRpYyB2b2lkIHNhc193YWl0X2VoKHN0cnVjdCBkb21haW5fZGV2aWNlICpkZXYpDQo+IH0NCj4g RVhQT1JUX1NZTUJPTChzYXNfd2FpdF9laCk7DQo+IA0KPi1zdGF0aWMgaW50IHNhc19xdWV1ZV9y ZXNldChzdHJ1Y3QgZG9tYWluX2RldmljZSAqZGV2LCBpbnQgcmVzZXRfdHlwZSwgaW50IGx1biwg aW50IHdhaXQpDQo+K2ludCBzYXNfcXVldWVfcmVzZXQoc3RydWN0IGRvbWFpbl9kZXZpY2UgKmRl diwgaW50IHJlc2V0X3R5cGUsIGludCBsdW4sIGludCB3YWl0KQ0KPiB7DQo+IAlzdHJ1Y3Qgc2Fz X2hhX3N0cnVjdCAqaGEgPSBkZXYtPnBvcnQtPmhhOw0KPiAJaW50IHNjaGVkdWxlZCA9IDAsIHRy aWVzID0gMTAwOw0KPmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvbGlic2FzLmggYi9pbmNsdWRl L3Njc2kvbGlic2FzLmgNCj5pbmRleCBhZDUyMjlhLi43NGUxN2ZhIDEwMDY0NA0KPi0tLSBhL2lu Y2x1ZGUvc2NzaS9saWJzYXMuaA0KPisrKyBiL2luY2x1ZGUvc2NzaS9saWJzYXMuaA0KPkBAIC03 OSw3ICs3OSw4IEBAIGVudW0gcGh5X2V2ZW50IHsNCj4gCVBIWUVfT09CX0RPTkUgICAgICAgICA9 IDEsDQo+IAlQSFlFX09PQl9FUlJPUiAgICAgICAgPSAyLA0KPiAJUEhZRV9TUElOVVBfSE9MRCAg ICAgID0gMywgLyogaG90IHBsdWcgU0FUQSwgbm8gQ09NV0FLRSBzZW50ICovDQo+LQlQSFlfTlVN X0VWRU5UUyAgICAgICAgPSA0LA0KPisJUEhZRV9SRVNVTUVfVElNRU9VVCAgID0gNCwNCj4rCVBI WV9OVU1fRVZFTlRTICAgICAgICA9IDUsDQo+IH07DQo+IA0KPiBlbnVtIGRpc2NvdmVyX2V2ZW50 IHsNCj5AQCAtODcsOCArODgsMTAgQEAgZW51bSBkaXNjb3Zlcl9ldmVudCB7DQo+IAlESVNDRV9S RVZBTElEQVRFX0RPTUFJTiA9IDEsDQo+IAlESVNDRV9QT1JUX0dPTkUgICAgICAgICA9IDIsDQo+ IAlESVNDRV9QUk9CRQkJPSAzLA0KPi0JRElTQ0VfREVTVFJVQ1QJCT0gNCwNCj4tCURJU0NfTlVN X0VWRU5UUwkJPSA1LA0KPisJRElTQ0VfU1VTUEVORAkJPSA0LA0KPisJRElTQ0VfUkVTVU1FCQk9 IDUsDQo+KwlESVNDRV9ERVNUUlVDVAkJPSA2LA0KPisJRElTQ19OVU1fRVZFTlRTCQk9IDcsDQo+ IH07DQo+IA0KPiAvKiAtLS0tLS0tLS0tIEV4cGFuZGVyIERldmljZXMgLS0tLS0tLS0tLSAqLw0K PkBAIC0xMjgsNyArMTMxLDcgQEAgc3RydWN0IGV4X3BoeSB7DQo+IAl1OCAgIGF0dGFjaGVkX3Nh c19hZGRyW1NBU19BRERSX1NJWkVdOw0KPiAJdTggICBhdHRhY2hlZF9waHlfaWQ7DQo+IA0KPi0J dTggICBwaHlfY2hhbmdlX2NvdW50Ow0KPisJaW50IHBoeV9jaGFuZ2VfY291bnQ7DQo+IAllbnVt IHJvdXRpbmdfYXR0cmlidXRlIHJvdXRpbmdfYXR0cjsNCj4gCXU4ICAgdmlydHVhbDoxOw0KPiAN Cj5AQCAtMTQxLDcgKzE0NCw3IEBAIHN0cnVjdCBleF9waHkgew0KPiBzdHJ1Y3QgZXhwYW5kZXJf ZGV2aWNlIHsNCj4gCXN0cnVjdCBsaXN0X2hlYWQgY2hpbGRyZW47DQo+IA0KPi0JdTE2ICAgIGV4 X2NoYW5nZV9jb3VudDsNCj4rCWludCAgICBleF9jaGFuZ2VfY291bnQ7DQo+IAl1MTYgICAgbWF4 X3JvdXRlX2luZGV4ZXM7DQo+IAl1OCAgICAgbnVtX3BoeXM7DQo+IA0KPkBAIC0xNjcsNiArMTcw LDcgQEAgc3RydWN0IHNhdGFfZGV2aWNlIHsNCj4gICAgICAgICBlbnVtICAgYXRhX2NvbW1hbmRf c2V0IGNvbW1hbmRfc2V0Ow0KPiAgICAgICAgIHN0cnVjdCBzbXBfcmVzcCAgICAgICAgcnBzX3Jl c3A7IC8qIHJlcG9ydF9waHlfc2F0YV9yZXNwICovDQo+ICAgICAgICAgdTggICAgIHBvcnRfbm87 ICAgICAgICAvKiBwb3J0IG51bWJlciwgaWYgdGhpcyBpcyBhIFBNIChQb3J0KSAqLw0KPisJaW50 ICAgIHBtX3Jlc3VsdDsNCj4gDQo+IAlzdHJ1Y3QgYXRhX3BvcnQgKmFwOw0KPiAJc3RydWN0IGF0 YV9ob3N0IGF0YV9ob3N0Ow0KPkBAIC0xODAsNiArMTg0LDcgQEAgc3RydWN0IHNzcF9kZXZpY2Ug ew0KPiANCj4gZW51bSB7DQo+IAlTQVNfREVWX0dPTkUsDQo+KwlTQVNfREVWX0ZPVU5ELCAvKiBk ZXZpY2Ugbm90aWZpZWQgdG8gbGxkZCAqLw0KPiAJU0FTX0RFVl9ERVNUUk9ZLA0KPiAJU0FTX0RF Vl9FSF9QRU5ESU5HLA0KPiAJU0FTX0RFVl9MVV9SRVNFVCwNCj5AQCAtMjcxLDYgKzI3Niw3IEBA IHN0cnVjdCBhc2Rfc2FzX3BvcnQgew0KPiAJZW51bSAgIHNhc19saW5rcmF0ZSBsaW5rcmF0ZTsN Cj4gDQo+IAlzdHJ1Y3Qgc2FzX3dvcmsgd29yazsNCj4rCWludCBzdXNwZW5kZWQ7DQo+IA0KPiAv KiBwdWJsaWM6ICovDQo+IAlpbnQgaWQ7DQo+QEAgLTMxOSw2ICszMjUsNyBAQCBzdHJ1Y3QgYXNk X3Nhc19waHkgew0KPiAJdW5zaWduZWQgbG9uZyBwaHlfZXZlbnRzX3BlbmRpbmc7DQo+IA0KPiAJ aW50IGVycm9yOw0KPisJaW50IHN1c3BlbmRlZDsNCj4gDQo+IAlzdHJ1Y3Qgc2FzX3BoeSAqcGh5 Ow0KPiANCj5AQCAtNjgxLDYgKzY4OCw5IEBAIHN0cnVjdCBzYXNfZG9tYWluX2Z1bmN0aW9uX3Rl bXBsYXRlIHsNCj4gDQo+IGV4dGVybiBpbnQgc2FzX3JlZ2lzdGVyX2hhKHN0cnVjdCBzYXNfaGFf c3RydWN0ICopOw0KPiBleHRlcm4gaW50IHNhc191bnJlZ2lzdGVyX2hhKHN0cnVjdCBzYXNfaGFf c3RydWN0ICopOw0KPitleHRlcm4gdm9pZCBzYXNfcHJlcF9yZXN1bWVfaGEoc3RydWN0IHNhc19o YV9zdHJ1Y3QgKnNhc19oYSk7DQo+K2V4dGVybiB2b2lkIHNhc19yZXN1bWVfaGEoc3RydWN0IHNh c19oYV9zdHJ1Y3QgKnNhc19oYSk7DQo+K2V4dGVybiB2b2lkIHNhc19zdXNwZW5kX2hhKHN0cnVj dCBzYXNfaGFfc3RydWN0ICpzYXNfaGEpOw0KPiANCj4gaW50IHNhc19zZXRfcGh5X3NwZWVkKHN0 cnVjdCBzYXNfcGh5ICpwaHksDQo+IAkJICAgICAgc3RydWN0IHNhc19waHlfbGlua3JhdGVzICpy YXRlcyk7DQo+ZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9zYXNfYXRhLmggYi9pbmNsdWRlL3Nj c2kvc2FzX2F0YS5oDQo+aW5kZXggM2UxM2MyOC4uNWJiNWIxYSAxMDA2NDQNCj4tLS0gYS9pbmNs dWRlL3Njc2kvc2FzX2F0YS5oDQo+KysrIGIvaW5jbHVkZS9zY3NpL3Nhc19hdGEuaA0KPkBAIC00 NCw2ICs0NCw4IEBAIHZvaWQgc2FzX2F0YV9laChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCwgc3Ry dWN0IGxpc3RfaGVhZCAqd29ya19xLA0KPiB2b2lkIHNhc19hdGFfc2NoZWR1bGVfcmVzZXQoc3Ry dWN0IGRvbWFpbl9kZXZpY2UgKmRldik7DQo+IHZvaWQgc2FzX2F0YV93YWl0X2VoKHN0cnVjdCBk b21haW5fZGV2aWNlICpkZXYpOw0KPiB2b2lkIHNhc19wcm9iZV9zYXRhKHN0cnVjdCBhc2Rfc2Fz X3BvcnQgKnBvcnQpOw0KPit2b2lkIHNhc19zdXNwZW5kX3NhdGEoc3RydWN0IGFzZF9zYXNfcG9y dCAqcG9ydCk7DQo+K3ZvaWQgc2FzX3Jlc3VtZV9zYXRhKHN0cnVjdCBhc2Rfc2FzX3BvcnQgKnBv cnQpOw0KPiB2b2lkIHNhc19hdGFfZW5kX2VoKHN0cnVjdCBhdGFfcG9ydCAqYXApOw0KPiAjZWxz ZQ0KPiANCj5AQCAtNzgsNiArODAsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHNhc19wcm9iZV9z YXRhKHN0cnVjdCBhc2Rfc2FzX3BvcnQgKnBvcnQpDQo+IHsNCj4gfQ0KPiANCj4rc3RhdGljIGlu bGluZSB2b2lkIHNhc19zdXNwZW5kX3NhdGEoc3RydWN0IGFzZF9zYXNfcG9ydCAqcG9ydCkNCj4r ew0KPit9DQo+Kw0KPitzdGF0aWMgaW5saW5lIHZvaWQgc2FzX3Jlc3VtZV9zYXRhKHN0cnVjdCBh c2Rfc2FzX3BvcnQgKnBvcnQpDQo+K3sNCj4rfQ0KPisNCj4gc3RhdGljIGlubGluZSBpbnQgc2Fz X2dldF9hdGFfaW5mbyhzdHJ1Y3QgZG9tYWluX2RldmljZSAqZGV2LCBzdHJ1Y3QgZXhfcGh5ICpw aHkpDQo+IHsNCj4gCXJldHVybiAwOw0KPg0KPi0tDQo+VG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlz IGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXNjc2kiIGluDQo+dGhlIGJv ZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcNCj5Nb3JlIG1ham9y ZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwN Cj4NCj5fX19fX19fX19fIEluZm9ybWF0aW9uIGZyb20gRVNFVCBOT0QzMiBBbnRpdmlydXMsIHZl cnNpb24gb2YgdmlydXMgc2lnbmF0dXJlIGRhdGFiYXNlIDU2NTkgKDIwMTAxMTI5KSBfX19fX19f X19fDQo+DQo+VGhlIG1lc3NhZ2Ugd2FzIGNoZWNrZWQgYnkgRVNFVCBOT0QzMiBBbnRpdmlydXMu DQo+DQo+aHR0cDovL3d3dy5lc2V0LmNvbQ0KPg0KPg0KPg==