Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2379628ybz; Sat, 2 May 2020 23:15:23 -0700 (PDT) X-Google-Smtp-Source: APiQypIxqxQmH2EIxNshQSA2fUisgQJGlG78V/qkFHEbRMYUjOUskMXZl8DC+QpdNQeC3cRivZM0 X-Received: by 2002:a17:906:1696:: with SMTP id s22mr364795ejd.302.1588486523374; Sat, 02 May 2020 23:15:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588486523; cv=none; d=google.com; s=arc-20160816; b=bDgv8MgJ0ouSgru8vf2Terpbd5QRXuoBvX3SvxcC/qrxjqywXyV8CXYP+rsR4jM0az C/2WQzZB2bFT35fBfXwRphNpx58xcXk9I5nQMoDoIBBy+6iXh8HqmPvoA+dBmDd5u5FH R7YZo5bt/1t/TJcyho/qTimgRXYP41yu5HVNyEbgqnqaWu6xPXeLOp/Uybzupg3jfaeY /Y6/t2vGethzc9wKO5HuXyXlpRYUMePjvSLB4FvUJToO4lGjMvf5mZTdQFqOUO8hFg1H Vddmw4/0F5Oaed6gpJOY1/QnwZVZGODXQ5sJS2SYzyi54bsUZI3QFjsfSdceWn94ZCvZ NBbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=WxlCRNEd3K/12hGIoH5QpJli1A1K5IiKT1/saoJU2XE=; b=SgY7UFlIe0p0b76ewqVojsRPbexcuLto5XBQbG8d/0SuNB600NrAzwPvzmmHlOUQoA psNU/X0u0allgrbiC0+MVici1FUNDZAfx4xzsgny9qmAy130RVOkBGkMtAOJPPlaEpFi r9t+gzKsWex7MnMf3KqOH2dNZ07fVaeOSTNKzKPOKRVr5xiL79Hmgmeos2ivA8u9G3l2 JJJhjweD2ibyaEp21D2+FNV5scIlUVl1ROCn6jAv0V0xtqkNBOA3A7AgKsLI8PWKp6o8 inKSwC7g9xVnMi4wMGFLn6epoYhE4nNxBioTwm4LvZf8NOS+PuxgfNRTBu8aGM+xKsE/ t9Dg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=tiYAj+gy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l11si4577462eja.20.2020.05.02.23.14.59; Sat, 02 May 2020 23:15:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=tiYAj+gy; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726929AbgECGNg (ORCPT + 99 others); Sun, 3 May 2020 02:13:36 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:42419 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726884AbgECGNg (ORCPT ); Sun, 3 May 2020 02:13:36 -0400 X-UUID: 5018c5b0461f42448e1f128fc452b77d-20200503 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=WxlCRNEd3K/12hGIoH5QpJli1A1K5IiKT1/saoJU2XE=; b=tiYAj+gyvHuwMN6XeJ4cFi0Iw/NDVukQug5t3UkgYaZnrkjjngYxq83IAivwCOaDLkzo8LcF2U+qNYmR5kPz4A/GJw1v8b/KIIGXAUQXzeTs5ZjBq7d6J6xAEyfszXKLVz+yN1sBMRNA6lRGN4c4SuhhwuatdHPD42Gm+xflrsw=; X-UUID: 5018c5b0461f42448e1f128fc452b77d-20200503 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1763318559; Sun, 03 May 2020 14:13:28 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 3 May 2020 14:13:26 +0800 Received: from [172.21.77.33] (172.21.77.33) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sun, 3 May 2020 14:13:26 +0800 Message-ID: <1588486406.3197.13.camel@mtkswgap22> Subject: Re: [PATCH v3 1/5] scsi: ufs: enable WriteBooster on some pre-3.1 UFS devices From: Stanley Chu To: Can Guo CC: , , , , , , , , , , , , , , , Date: Sun, 3 May 2020 14:13:26 +0800 In-Reply-To: <1d471d07084d7323f0ef021e2c1b9d4e@codeaurora.org> References: <20200501143835.26032-1-stanley.chu@mediatek.com> <20200501143835.26032-2-stanley.chu@mediatek.com> <1d471d07084d7323f0ef021e2c1b9d4e@codeaurora.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-TM-SNTS-SMTP: C3A9AF1BAE99385AD8A90B9EA8391ECD9F3FF53468BCA1C1D23609DCEDBDBD612000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQ2FuLA0KDQpPbiBTYXQsIDIwMjAtMDUtMDIgYXQgMTU6NDcgKzA4MDAsIENhbiBHdW8gd3Jv dGU6DQo+IEhpIFN0YW5sZXksDQo+IE9uIDIwMjAtMDUtMDEgMjI6MzgsIFN0YW5sZXkgQ2h1IHdy b3RlOg0KPiA+IFdyaXRlQm9vc3RlciBmZWF0dXJlIGNhbiBiZSBzdXBwb3J0ZWQgYnkgc29tZSBw cmUtMy4xIFVGUyBkZXZpY2VzDQo+ID4gYnkgdXBncmFkaW5nIGZpcm13YXJlLg0KPiA+IA0KPiA+ IFRvIGVuYWJsZSBXcml0ZUJvb3N0ZXIgZmVhdHVyZSBpbiBzdWNoIGRldmljZXMsIGludHJvZHVj ZSBhIGRldmljZQ0KPiA+IHF1aXJrIHRvIHJlbGF4IHRoZSBlbnRyYW5jZSBjb25kaXRpb24gb2Yg dWZzaGNkX3diX3Byb2JlKCkgdG8gYWxsb3cNCj4gPiBob3N0IGRyaXZlciB0byBjaGVjayB0aG9z ZSBkZXZpY2VzJyBXcml0ZUJvb3N0ZXIgY2FwYWJpbGl0eS4NCj4gPiANCj4gPiBXcml0ZUJvb3N0 ZXIgZmVhdHVyZSBjYW4gYmUgYXZhaWxhYmxlIGlmIGJlbG93IGFsbCBjb25kaXRpb25zIGFyZQ0K PiA+IHNhdGlzZmllZCwNCj4gPiANCj4gPiAxLiBIb3N0IGVuYWJsZXMgV3JpdGVCb29zdGVyIGNh cGFiaWxpdHkNCj4gPiAyLiBVRlMgMy4xIGRldmljZSBvciBVRlMgcHJlLTMuMSBkZXZpY2Ugd2l0 aCBxdWlyaw0KPiA+ICAgIFVGU19ERVZJQ0VfUVVJUktfU1VQUE9SVF9FWFRFTkRFRF9GRUFUVVJF UyBlbmFibGVkDQo+ID4gMy4gRGV2aWNlIGRlc2NyaXB0b3IgaGFzIGRFeHRlbmRlZFVGU0ZlYXR1 cmVzU3VwcG9ydCBmaWVsZA0KPiA+IDQuIFdyaXRlQm9vc3RlciBzdXBwb3J0IGlzIHNwZWNpZmll ZCBpbiBhYm92ZSBmaWVsZA0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFN0YW5sZXkgQ2h1IDxz dGFubGV5LmNodUBtZWRpYXRlay5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvc2NzaS91ZnMv dWZzX3F1aXJrcy5oIHwgIDcgKysrKw0KPiA+ICBkcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jICAg ICB8IDY2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQo+ID4gIDIgZmlsZXMg Y2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS91ZnMvdWZzX3F1aXJrcy5oIA0KPiA+IGIvZHJpdmVycy9z Y3NpL3Vmcy91ZnNfcXVpcmtzLmgNCj4gPiBpbmRleCBkZjdhMWU2ODA1YTMuLmUzMTc1YTYzYzY3 NiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc19xdWlya3MuaA0KPiA+ICsr KyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzX3F1aXJrcy5oDQo+ID4gQEAgLTEwMSw0ICsxMDEsMTEg QEAgc3RydWN0IHVmc19kZXZfZml4IHsNCj4gPiAgICovDQo+ID4gICNkZWZpbmUgVUZTX0RFVklD RV9RVUlSS19IT1NUX1ZTX0RFQlVHU0FWRUNPTkZJR1RJTUUJKDEgPDwgOSkNCj4gPiANCj4gPiAr LyoNCj4gPiArICogU29tZSBwcmUtMy4xIFVGUyBkZXZpY2VzIGNhbiBzdXBwb3J0IGV4dGVuZGVk IGZlYXR1cmVzIGJ5IHVwZ3JhZGluZw0KPiA+ICsgKiB0aGUgZmlybXdhcmUuIEVuYWJsZSB0aGlz IHF1aXJrIHRvIG1ha2UgVUZTIGNvcmUgZHJpdmVyIHByb2JlIGFuZCANCj4gPiBlbmFibGUNCj4g PiArICogc3VwcG9ydGVkIGZlYXR1cmVzIG9uIHN1Y2ggZGV2aWNlcy4NCj4gPiArICovDQo+ID4g KyNkZWZpbmUgVUZTX0RFVklDRV9RVUlSS19TVVBQT1JUX0VYVEVOREVEX0ZFQVRVUkVTICgxIDw8 IDEwKQ0KPiA+ICsNCj4gPiAgI2VuZGlmIC8qIFVGU19RVUlSS1NfSF8gKi8NCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNk LmMNCj4gPiBpbmRleCA5MTVlOTYzMzk4YzQuLmM2NjY4Nzk5ZDk1NiAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jDQo+ID4gKysrIGIvZHJpdmVycy9zY3NpL3Vmcy91 ZnNoY2QuYw0KPiA+IEBAIC0yMjksNiArMjI5LDggQEAgc3RhdGljIHN0cnVjdCB1ZnNfZGV2X2Zp eCB1ZnNfZml4dXBzW10gPSB7DQo+ID4gIAkJVUZTX0RFVklDRV9RVUlSS19IT1NUX1BBX1NBVkVD T05GSUdUSU1FKSwNCj4gPiAgCVVGU19GSVgoVUZTX1ZFTkRPUl9TS0hZTklYLCAiaEI4YUwxIiAv KkgyOFU2MjMwMUFNUiovLA0KPiA+ICAJCVVGU19ERVZJQ0VfUVVJUktfSE9TVF9WU19ERUJVR1NB VkVDT05GSUdUSU1FKSwNCj4gPiArCVVGU19GSVgoVUZTX1ZFTkRPUl9TS0hZTklYLCAiSDlIUTIx QUZBTVpEQVIiLA0KPiA+ICsJCVVGU19ERVZJQ0VfUVVJUktfU1VQUE9SVF9FWFRFTkRFRF9GRUFU VVJFUyksDQo+ID4gDQo+ID4gIAlFTkRfRklYDQo+ID4gIH07DQo+ID4gQEAgLTY4MDAsOSArNjgw MiwxOSBAQCBzdGF0aWMgaW50IHVmc2hjZF9zY3NpX2FkZF93bHVzKHN0cnVjdCB1ZnNfaGJhIA0K PiA+ICpoYmEpDQo+ID4gDQo+ID4gIHN0YXRpYyB2b2lkIHVmc2hjZF93Yl9wcm9iZShzdHJ1Y3Qg dWZzX2hiYSAqaGJhLCB1OCAqZGVzY19idWYpDQo+ID4gIHsNCj4gPiArCWlmICghdWZzaGNkX2lz X3diX2FsbG93ZWQoaGJhKSkNCj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJaWYgKGhiYS0+ ZGVzY19zaXplLmRldl9kZXNjIDw9IERFVklDRV9ERVNDX1BBUkFNX0VYVF9VRlNfRkVBVFVSRV9T VVApDQo+ID4gKwkJZ290byB3Yl9kaXNhYmxlZDsNCj4gPiArDQo+ID4gIAloYmEtPmRldl9pbmZv LmRfZXh0X3Vmc19mZWF0dXJlX3N1cCA9DQo+ID4gIAkJZ2V0X3VuYWxpZ25lZF9iZTMyKGRlc2Nf YnVmICsNCj4gPiAgCQkJCSAgIERFVklDRV9ERVNDX1BBUkFNX0VYVF9VRlNfRkVBVFVSRV9TVVAp Ow0KPiA+ICsNCj4gPiArCWlmICghKGhiYS0+ZGV2X2luZm8uZF9leHRfdWZzX2ZlYXR1cmVfc3Vw ICYgDQo+ID4gVUZTX0RFVl9XUklURV9CT09TVEVSX1NVUCkpDQo+ID4gKwkJZ290byB3Yl9kaXNh YmxlZDsNCj4gPiArDQo+ID4gIAkvKg0KPiA+ICAJICogV0IgbWF5IGJlIHN1cHBvcnRlZCBidXQg bm90IGNvbmZpZ3VyZWQgd2hpbGUgcHJvdmlzaW9uaW5nLg0KPiA+ICAJICogVGhlIHNwZWMgc2F5 cywgaW4gZGVkaWNhdGVkIHdiIGJ1ZmZlciBtb2RlLA0KPiA+IEBAIC02ODE4LDExICs2ODMwLDI5 IEBAIHN0YXRpYyB2b2lkIHVmc2hjZF93Yl9wcm9iZShzdHJ1Y3QgdWZzX2hiYQ0KPiA+ICpoYmEs IHU4ICpkZXNjX2J1ZikNCj4gPiAgCWhiYS0+ZGV2X2luZm8uYl9wcmVzcnZfdXNwY19lbiA9DQo+ ID4gIAkJZGVzY19idWZbREVWSUNFX0RFU0NfUEFSQU1fV0JfUFJFU1JWX1VTUlNQQ19FTl07DQo+ ID4gDQo+ID4gLQlpZiAoISgoaGJhLT5kZXZfaW5mby5kX2V4dF91ZnNfZmVhdHVyZV9zdXAgJg0K PiA+IC0JCSBVRlNfREVWX1dSSVRFX0JPT1NURVJfU1VQKSAmJg0KPiA+IC0JCWhiYS0+ZGV2X2lu Zm8uYl93Yl9idWZmZXJfdHlwZSAmJg0KPiA+ICsJaWYgKCEoaGJhLT5kZXZfaW5mby5iX3diX2J1 ZmZlcl90eXBlICYmDQo+ID4gIAkgICAgICBoYmEtPmRldl9pbmZvLmRfd2JfYWxsb2NfdW5pdHMp KQ0KPiA+IC0JCWhiYS0+Y2FwcyAmPSB+VUZTSENEX0NBUF9XQl9FTjsNCj4gPiArCQlnb3RvIHdi X2Rpc2FibGVkOw0KPiA+ICsNCj4gPiArCXJldHVybjsNCj4gPiArDQo+ID4gK3diX2Rpc2FibGVk Og0KPiA+ICsJaGJhLT5jYXBzICY9IH5VRlNIQ0RfQ0FQX1dCX0VOOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZCB1ZnNfZml4dXBfZGV2aWNlX3NldHVwKHN0cnVjdCB1ZnNfaGJhICpo YmEpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB1ZnNfZGV2X2ZpeCAqZjsNCj4gPiArCXN0cnVjdCB1 ZnNfZGV2X2luZm8gKmRldl9pbmZvID0gJmhiYS0+ZGV2X2luZm87DQo+ID4gKw0KPiA+ICsJZm9y IChmID0gdWZzX2ZpeHVwczsgZi0+cXVpcms7IGYrKykgew0KPiA+ICsJCWlmICgoZi0+d21hbnVm YWN0dXJlcmlkID09IGRldl9pbmZvLT53bWFudWZhY3R1cmVyaWQgfHwNCj4gPiArCQkgICAgIGYt PndtYW51ZmFjdHVyZXJpZCA9PSBVRlNfQU5ZX1ZFTkRPUikgJiYNCj4gPiArCQkgICAgICgoZGV2 X2luZm8tPm1vZGVsICYmDQo+ID4gKwkJICAgICAgIFNUUl9QUkZYX0VRVUFMKGYtPm1vZGVsLCBk ZXZfaW5mby0+bW9kZWwpKSB8fA0KPiA+ICsJCSAgICAgICFzdHJjbXAoZi0+bW9kZWwsIFVGU19B TllfTU9ERUwpKSkNCj4gPiArCQkJaGJhLT5kZXZfcXVpcmtzIHw9IGYtPnF1aXJrOw0KPiA+ICsJ fQ0KPiA+ICB9DQo+ID4gDQo+ID4gIHN0YXRpYyBpbnQgdWZzX2dldF9kZXZpY2VfZGVzYyhzdHJ1 Y3QgdWZzX2hiYSAqaGJhKQ0KPiA+IEBAIC02ODYyLDEwICs2ODkyLDYgQEAgc3RhdGljIGludCB1 ZnNfZ2V0X2RldmljZV9kZXNjKHN0cnVjdCB1ZnNfaGJhIA0KPiA+ICpoYmEpDQo+ID4gDQo+ID4g IAltb2RlbF9pbmRleCA9IGRlc2NfYnVmW0RFVklDRV9ERVNDX1BBUkFNX1BSRENUX05BTUVdOw0K PiA+IA0KPiA+IC0JLyogRW5hYmxlIFdCIG9ubHkgZm9yIFVGUy0zLjEgKi8NCj4gPiAtCWlmIChk ZXZfaW5mby0+d3NwZWN2ZXJzaW9uID49IDB4MzEwKQ0KPiA+IC0JCXVmc2hjZF93Yl9wcm9iZSho YmEsIGRlc2NfYnVmKTsNCj4gPiAtDQo+ID4gIAllcnIgPSB1ZnNoY2RfcmVhZF9zdHJpbmdfZGVz YyhoYmEsIG1vZGVsX2luZGV4LA0KPiA+ICAJCQkJICAgICAgJmRldl9pbmZvLT5tb2RlbCwgU0Rf QVNDSUlfU1REKTsNCj4gPiAgCWlmIChlcnIgPCAwKSB7DQo+ID4gQEAgLTY4NzQsNiArNjkwMCwx MyBAQCBzdGF0aWMgaW50IHVmc19nZXRfZGV2aWNlX2Rlc2Moc3RydWN0IHVmc19oYmEgDQo+ID4g KmhiYSkNCj4gPiAgCQlnb3RvIG91dDsNCj4gPiAgCX0NCj4gPiANCj4gPiArCXVmc19maXh1cF9k ZXZpY2Vfc2V0dXAoaGJhKTsNCj4gPiArDQo+ID4gKwkvKiBFbmFibGUgV0Igb25seSBmb3IgVUZT LTMuMSAqLw0KPiANCj4gQWxzbyB1cGRhdGUgdGhpcyBjb21tZW50IHRvIHJlZmxlY3QgeW91ciBj aGFuZ2U/DQo+IA0KPiA+ICsJaWYgKGRldl9pbmZvLT53c3BlY3ZlcnNpb24gPj0gMHgzMTAgfHwN Cj4gPiArCSAgICAoaGJhLT5kZXZfcXVpcmtzICYgVUZTX0RFVklDRV9RVUlSS19TVVBQT1JUX0VY VEVOREVEX0ZFQVRVUkVTKSkNCj4gPiArCQl1ZnNoY2Rfd2JfcHJvYmUoaGJhLCBkZXNjX2J1Zik7 DQo+ID4gKw0KPiANCj4gQ2FuIHdlIHNvbWVob3cgbW92ZSB0aGlzIGFmdGVyIHVmc2hjZF90dW5l X3VuaXByb19wYXJhbXMoKSBvciBjb21lIHVwIA0KPiB3aXRoDQo+IGEgYmV0dGVyIHdheSB0byBs ZXZlcmFnZSB1ZnNoY2Rfdm9wc19hcHBseV9kZXZfcXVpcmtzKCk/IEkgYW0gYXNraW5nIA0KPiB0 aGlzDQo+IGJlY2F1c2UgaWYgd2Ugb25seSByZWx5IG9uIGFkZGluZyBxdWlya3MgdG8gdWZzX2Zp eHVwcyBpbiB1ZnNoY2QuYywgdGhlDQo+IHRhYmxlIHdpbGwga2VlcCBncm93aW5nIGFuZCBJIGFt IHN1cmUgaXQgd2lsbCAtIGFzIGZsYXNoIHZlbmRvcnMgYXJlIA0KPiB0cnlpbmcNCj4gdG8gbWFr ZSB0aGVpciBVRlMyLjEgcHJvZHVjdHMgdG8gYmUgY2FwYWJsZSBvZiBXQiAoZGlmZmVyZW50IGRl bnNpdGllcyANCj4gYW5kDQo+IGRpZmZlcmVudCBOQU5EIHByb2Nlc3NlcyBmcm9tIGRpZmZlcmVu dCB2ZW5kb3JzLCB0aGUgY29tYm9zIGNhbiBiZSBxdWl0ZSANCj4gYQ0KPiBmZXcpLiBNZWFud2hp bGUsIHNvbWUgbW9kZWxzIGFyZSBzcGVjaWZpY2FsbHkgbWFkZSBmb3Igc29tZSBjdXN0b21lcnMg dG8NCj4gc3VwcG9ydCBXQiwgbWVhbmluZyBoYXZpbmcgdGhlbSBpbiB0aGUgdGFibGUgbWF5IG5v dCBoZWxwIGluIGEgDQo+IGdlbmVyYWxpemVkDQo+IHdheSwgYW5kIGl0IGlzIG5vdCBsaWtlIHNv bWUgaG90IGZpeGVzIHRoYXQgd2UgaGF2ZSB0byB0YWtlLCBpdCBpcyBqdXN0IA0KPiBmb3INCj4g YSBub24tc3RhbmRhcmQgZmVhdHVyZS4gSWYgd2UgY2FuIGxldmVyYWdlIA0KPiB1ZnNoY2Rfdm9w c19hcHBseV9kZXZfcXVpcmtzKCksDQo+IFNvQyB2ZW5kb3JzIGNhbiBmcmVlbHkgYWRkIHRoZSBx dWlyayB3aXRob3V0IHRvdWNoaW5nIHVmc19maXh1cHMgdGFibGUsDQo+IHdoaWNoIG1lYW5zIHlv dSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB1ZnNfZml4dXBzIGV2ZXJ5IHRpbWUganVzdCBmb3IgDQo+ IGFkZGluZw0KPiBhIG5ldyBtb2RlbCAoR0tJIHJ1bGVzKSwgeW91IGNhbiBoYXZlIHlvdXIgb3du IFdCIHdoaXRlIGxpc3QgaW4gdmVuZG9yDQo+IGRyaXZlci4gV2hhdCBkbyB5b3UgdGhpbms/DQo+ IA0KPiBUaGFua3MsDQo+IA0KPiBDYW4gR3VvLg0KDQpWZXJ5IGFwcHJlY2lhdGUgeW91ciB1c2Vm dWwgYW5kIGNvbnN0cnVjdGl2ZSBjb21tZW50cyA6ICkNCg0KUGxlYXNlIHRha2UgYSBsb29rIGF0 IHY0LiBJbiB2NCwgSSBpbnRyb2R1Y2UgYSAiZml4dXBfZGV2X3F1aXJrcyIgdm9wIHRvDQphbGxv dyB2ZW5kb3JzIHRvICJmaXgiIGRldmljZSBxdWlya3Mgd2hpY2ggY2FuIGJlIGEgZ2VuZXJhbCBz b2x1dGlvbiBub3QNCm9ubHkgZm9yIG5ld2x5IGludHJvZHVjZWQgVUZTX0RFVklDRV9RVUlSS19T VVBQT1JUX0VYVEVOREVEX0ZFQVRVUkVTIGJ1dA0KYWxzbyBmb3Igb3RoZXIgcXVpcmtzLg0KDQpU aGFua3MsDQpTdGFubGV5IENodQ0KDQo+IA0KPiA+ICAJLyoNCj4gPiAgCSAqIHVmc2hjZF9yZWFk X3N0cmluZ19kZXNjIHJldHVybnMgc2l6ZSBvZiB0aGUgc3RyaW5nDQo+ID4gIAkgKiByZXNldCB0 aGUgZXJyb3IgdmFsdWUNCj4gPiBAQCAtNjg5MywyMSArNjkyNiw2IEBAIHN0YXRpYyB2b2lkIHVm c19wdXRfZGV2aWNlX2Rlc2Moc3RydWN0IHVmc19oYmEgDQo+ID4gKmhiYSkNCj4gPiAgCWRldl9p bmZvLT5tb2RlbCA9IE5VTEw7DQo+ID4gIH0NCj4gPiANCj4gPiAtc3RhdGljIHZvaWQgdWZzX2Zp eHVwX2RldmljZV9zZXR1cChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KPiA+IC17DQo+ID4gLQlzdHJ1 Y3QgdWZzX2Rldl9maXggKmY7DQo+ID4gLQlzdHJ1Y3QgdWZzX2Rldl9pbmZvICpkZXZfaW5mbyA9 ICZoYmEtPmRldl9pbmZvOw0KPiA+IC0NCj4gPiAtCWZvciAoZiA9IHVmc19maXh1cHM7IGYtPnF1 aXJrOyBmKyspIHsNCj4gPiAtCQlpZiAoKGYtPndtYW51ZmFjdHVyZXJpZCA9PSBkZXZfaW5mby0+ d21hbnVmYWN0dXJlcmlkIHx8DQo+ID4gLQkJICAgICBmLT53bWFudWZhY3R1cmVyaWQgPT0gVUZT X0FOWV9WRU5ET1IpICYmDQo+ID4gLQkJICAgICAoKGRldl9pbmZvLT5tb2RlbCAmJg0KPiA+IC0J CSAgICAgICBTVFJfUFJGWF9FUVVBTChmLT5tb2RlbCwgZGV2X2luZm8tPm1vZGVsKSkgfHwNCj4g PiAtCQkgICAgICAhc3RyY21wKGYtPm1vZGVsLCBVRlNfQU5ZX01PREVMKSkpDQo+ID4gLQkJCWhi YS0+ZGV2X3F1aXJrcyB8PSBmLT5xdWlyazsNCj4gPiAtCX0NCj4gPiAtfQ0KPiA+IC0NCj4gPiAg LyoqDQo+ID4gICAqIHVmc2hjZF90dW5lX3BhX3RhY3RpdmF0ZSAtIFR1bmVzIFBBX1RBY3RpdmF0 ZSBvZiBsb2NhbCBVbmlQcm8NCj4gPiAgICogQGhiYTogcGVyLWFkYXB0ZXIgaW5zdGFuY2UNCj4g PiBAQCAtNzI0NCw4ICs3MjYyLDYgQEAgc3RhdGljIGludCB1ZnNoY2RfZGV2aWNlX3BhcmFtc19p bml0KHN0cnVjdCANCj4gPiB1ZnNfaGJhICpoYmEpDQo+ID4gDQo+ID4gIAl1ZnNoY2RfZ2V0X3Jl Zl9jbGtfZ2F0aW5nX3dhaXQoaGJhKTsNCj4gPiANCj4gPiAtCXVmc19maXh1cF9kZXZpY2Vfc2V0 dXAoaGJhKTsNCj4gPiAtDQo+ID4gIAlpZiAoIXVmc2hjZF9xdWVyeV9mbGFnX3JldHJ5KGhiYSwg VVBJVV9RVUVSWV9PUENPREVfUkVBRF9GTEFHLA0KPiA+ICAJCQlRVUVSWV9GTEFHX0lETl9QV1Jf T05fV1BFLCAmZmxhZykpDQo+ID4gIAkJaGJhLT5kZXZfaW5mby5mX3Bvd2VyX29uX3dwX2VuID0g ZmxhZzsNCg0K