From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6229C47257 for ; Mon, 4 May 2020 14:56:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C1BF4206D9 for ; Mon, 4 May 2020 14:56:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="PkEaIIXO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729255AbgEDO4l (ORCPT ); Mon, 4 May 2020 10:56:41 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:28463 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727106AbgEDO4j (ORCPT ); Mon, 4 May 2020 10:56:39 -0400 X-UUID: db29ca2978d6437696736031c5f02dbe-20200504 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=tgkuciEhA0pxDaMKQxuPUnqf6SDgdahspHQPNkaXsLU=; b=PkEaIIXOHJmJiaM1YazXWPV/2W3AqxAPkQ9qLBhL45172BrHmYNogmknsr9BteGmyK9DVaLEmeQx62EZqUXqIFEBWbnu3aa635NtNlqu8kjDLsxCzYlNV/m1i4FFUDBJExrcxCJ4e2b2VWY4QUjG01apVAiIEEFVHQ5eHFfwQCw=; X-UUID: db29ca2978d6437696736031c5f02dbe-20200504 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 407479600; Mon, 04 May 2020 22:56:30 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs05n1.mediatek.inc (172.21.101.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 4 May 2020 22:56:27 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 4 May 2020 22:56:27 +0800 From: Stanley Chu To: , , , , , CC: , , , , , , , , , , , Stanley Chu Subject: [PATCH v6 6/8] scsi: ufs: add LU Dedicated buffer mode support for WriteBooster Date: Mon, 4 May 2020 22:56:20 +0800 Message-ID: <20200504145622.13895-7-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200504145622.13895-1-stanley.chu@mediatek.com> References: <20200504145622.13895-1-stanley.chu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain 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 QWNjb3JkaW5nIHRvIFVGUyBzcGVjaWZpY2F0aW9uLCB0aGVyZSBhcmUgdHdvIFdyaXRlQm9vc3Rl ciBtb2RlIG9mDQpvcGVyYXRpb25zOiAiTFUgZGVkaWNhdGVkIGJ1ZmZlciIgbW9kZSBhbmQgInNo YXJlZCBidWZmZXIiIG1vZGUuDQpJbiB0aGUgIkxVIGRlZGljYXRlZCBidWZmZXIiIG1vZGUsIHRo ZSBXcml0ZUJvb3N0ZXIgQnVmZmVyIGlzDQpkZWRpY2F0ZWQgdG8gYSBsb2dpY2FsIHVuaXQuDQoN CklmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlICJMVSBkZWRpY2F0ZWQgYnVmZmVyIiBtb2RlLCB0 aGlzIG1vZGUgaXMNCmNvbmZpZ3VyZWQgYnkgc2V0dGluZyBiV3JpdGVCb29zdGVyQnVmZmVyVHlw ZSB0byAwMGguIFRoZSBsb2dpY2FsDQp1bml0IFdyaXRlQm9vc3RlciBCdWZmZXIgc2l6ZSBpcyBj b25maWd1cmVkIGJ5IHNldHRpbmcgdGhlDQpkTFVOdW1Xcml0ZUJvb3N0ZXJCdWZmZXJBbGxvY1Vu aXRzIGZpZWxkIG9mIHRoZSByZWxhdGVkIFVuaXQNCkRlc2NyaXB0b3IuIE9ubHkgYSB2YWx1ZSBn cmVhdGVyIHRoYW4gemVybyBlbmFibGVzIHRoZSBXcml0ZUJvb3N0ZXINCmZlYXR1cmUgaW4gdGhl IGxvZ2ljYWwgdW5pdC4NCg0KTW9kaWZ5IHVmc2hjZF93Yl9wcm9iZSgpIGFzIGFib3ZlIGRlc2Ny aXB0aW9uIHRvIHN1cHBvcnQgTFUgRGVkaWNhdGVkDQpidWZmZXIgbW9kZS4NCg0KTm90ZSB0aGF0 IGFjY29yZGluZyB0byBVRlMgMy4xIHNwZWNpZmljYXRpb24sIHRoZSB2YWxpZCB2YWx1ZSBvZg0K YkRldmljZU1heFdyaXRlQm9vc3RlckxVcyBwYXJhbWV0ZXIgaW4gR2VvbWV0cnkgRGVzY3JpcHRv ciBpcyAxLA0Kd2hpY2ggbWVhbnMgYXQgbW9zdCBvbmUgTFVOIGNhbiBoYXZlIFdyaXRlQm9vc3Rl ciBidWZmZXIgaW4gIkxVDQpkZWRpY2F0ZWQgYnVmZmVyIG1vZGUiLiBUaGVyZWZvcmUgdGhpcyBw YXRjaCBzdXBwb3J0cyBvbmx5IG9uZQ0KTFVOIHdpdGggV3JpdGVCb29zdGVyIGVuYWJsZWQuIEFs bCBXcml0ZUJvb3N0ZXIgcmVsYXRlZCBzeXNmcyBub2Rlcw0KYXJlIHNwZWNpZmljYWxseSBtYXBw ZWQgdG8gdGhlIExVTiB3aXRoIFdyaXRlQm9vc3RlciBlbmFibGVkIGluDQpMVSBEZWRpY2F0ZWQg YnVmZmVyIG1vZGUuDQoNClNpZ25lZC1vZmYtYnk6IFN0YW5sZXkgQ2h1IDxzdGFubGV5LmNodUBt ZWRpYXRlay5jb20+DQpSZXZpZXdlZC1ieTogQXZyaSBBbHRtYW4gPGF2cmkuYWx0bWFuQHdkYy5j b20+DQotLS0NCiBkcml2ZXJzL3Njc2kvdWZzL3Vmcy1zeXNmcy5jIHwgMTEgKysrKysrKy0NCiBk cml2ZXJzL3Njc2kvdWZzL3Vmcy5oICAgICAgIHwgMTAgKysrKysrKysNCiBkcml2ZXJzL3Njc2kv dWZzL3Vmc2hjZC5jICAgIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t DQogZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuaCAgICB8ICA3ICsrKysrDQogNCBmaWxlcyBjaGFu Z2VkLCA2NiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc2NzaS91ZnMvdWZzLXN5c2ZzLmMgYi9kcml2ZXJzL3Njc2kvdWZzL3Vmcy1zeXNmcy5j DQppbmRleCBiODZiNmE0MGQ3ZTYuLmEwYjM3NjNlMWRjMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv c2NzaS91ZnMvdWZzLXN5c2ZzLmMNCisrKyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzLXN5c2ZzLmMN CkBAIC02MjIsMTYgKzYyMiwyNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCB1ZnNfc3lzZnNfc3RyaW5nX2Rlc2NyaXB0b3JzX2dyb3VwID0gew0KIAkuYXR0cnMgPSB1ZnNf c3lzZnNfc3RyaW5nX2Rlc2NyaXB0b3JzLA0KIH07DQogDQorc3RhdGljIGlubGluZSBib29sIHVm c2hjZF9pc193Yl9mbGFncyhlbnVtIGZsYWdfaWRuIGlkbikNCit7DQorCXJldHVybiAoKGlkbiA+ PSBRVUVSWV9GTEFHX0lETl9XQl9FTikgJiYNCisJCShpZG4gPD0gUVVFUllfRkxBR19JRE5fV0Jf QlVGRl9GTFVTSF9EVVJJTkdfSElCRVJOOCkpOw0KK30NCisNCiAjZGVmaW5lIFVGU19GTEFHKF9u YW1lLCBfdW5hbWUpCQkJCQkJXA0KIHN0YXRpYyBzc2l6ZV90IF9uYW1lIyNfc2hvdyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsCQkJCVwNCiAJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg KmJ1ZikJCQlcDQogewkJCQkJCQkJCVwNCiAJYm9vbCBmbGFnOwkJCQkJCQlcDQorCXU4IGluZGV4 ID0gMDsJCQkJCQkJXA0KIAlpbnQgcmV0OwkJCQkJCQlcDQogCXN0cnVjdCB1ZnNfaGJhICpoYmEg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsJCQlcDQorCWlmICh1ZnNoY2RfaXNfd2JfZmxhZ3MoUVVF UllfRkxBR19JRE4jI191bmFtZSkpCQkJXA0KKwkJaW5kZXggPSB1ZnNoY2Rfd2JfZ2V0X2ZsYWdf aW5kZXgoaGJhKTsJCQlcDQogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoaGJhLT5kZXYpOwkJCQkJXA0K IAlyZXQgPSB1ZnNoY2RfcXVlcnlfZmxhZyhoYmEsIFVQSVVfUVVFUllfT1BDT0RFX1JFQURfRkxB RywJXA0KLQkJUVVFUllfRkxBR19JRE4jI191bmFtZSwgMCwgJmZsYWcpOwkJCVwNCisJCVFVRVJZ X0ZMQUdfSUROIyNfdW5hbWUsIGluZGV4LCAmZmxhZyk7CQkJXA0KIAlwbV9ydW50aW1lX3B1dF9z eW5jKGhiYS0+ZGV2KTsJCQkJCVwNCiAJaWYgKHJldCkJCQkJCQkJXA0KIAkJcmV0dXJuIC1FSU5W QUw7CQkJCQkJXA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS91ZnMvdWZzLmggYi9kcml2ZXJz L3Njc2kvdWZzL3Vmcy5oDQppbmRleCBkYWFjNTA1M2I4NTAuLmIzMTM1MzQ0YWIzZiAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvc2NzaS91ZnMvdWZzLmgNCisrKyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZz LmgNCkBAIC02NCw2ICs2NCw5IEBADQogI2RlZmluZSBVRlNfTUFYX0xVTlMJCShTQ1NJX1dfTFVO X0JBU0UgKyBVRlNfVVBJVV9NQVhfVU5JVF9OVU1fSUQpDQogI2RlZmluZSBVRlNfVVBJVV9XTFVO X0lECSgxIDw8IDcpDQogDQorLyogV3JpdGVCb29zdGVyIGJ1ZmZlciBpcyBhdmFpbGFibGUgb25s eSBmb3IgdGhlIGxvZ2ljYWwgdW5pdCBmcm9tIDAgdG8gNyAqLw0KKyNkZWZpbmUgVUZTX1VQSVVf TUFYX1dCX0xVTl9JRAk4DQorDQogLyogV2VsbCBrbm93biBsb2dpY2FsIHVuaXQgaWQgaW4gTFVO IGZpZWxkIG9mIFVQSVUgKi8NCiBlbnVtIHsNCiAJVUZTX1VQSVVfUkVQT1JUX0xVTlNfV0xVTgk9 IDB4ODEsDQpAQCAtMzMwLDYgKzMzMywxMiBAQCBlbnVtIGhlYWx0aF9kZXNjX3BhcmFtIHsNCiAJ SEVBTFRIX0RFU0NfUEFSQU1fTElGRV9USU1FX0VTVF9CCT0gMHg0LA0KIH07DQogDQorLyogV3Jp dGVCb29zdGVyIGJ1ZmZlciBtb2RlICovDQorZW51bSB7DQorCVdCX0JVRl9NT0RFX0xVX0RFRElD QVRFRAk9IDB4MCwNCisJV0JfQlVGX01PREVfU0hBUkVECQk9IDB4MSwNCit9Ow0KKw0KIC8qDQog ICogTG9naWNhbCBVbml0IFdyaXRlIFByb3RlY3QNCiAgKiAwMGg6IExVIG5vdCB3cml0ZSBwcm90 ZWN0ZWQNCkBAIC01NTksNiArNTY4LDcgQEAgc3RydWN0IHVmc19kZXZfaW5mbyB7DQogCWJvb2wg aXNfbHVfcG93ZXJfb25fd3A7DQogCS8qIE1heGltdW0gbnVtYmVyIG9mIGdlbmVyYWwgTFUgc3Vw cG9ydGVkIGJ5IHRoZSBVRlMgZGV2aWNlICovDQogCXU4IG1heF9sdV9zdXBwb3J0ZWQ7DQorCXU4 IHdiX2RlZGljYXRlZF9sdTsNCiAJdTE2IHdtYW51ZmFjdHVyZXJpZDsNCiAJLypVRlMgZGV2aWNl IFByb2R1Y3QgTmFtZSAqLw0KIAl1OCAqbW9kZWw7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3Np L3Vmcy91ZnNoY2QuYyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmMNCmluZGV4IGYzNTMwNGE5 NzQxYS4uYzc3YzVmNGRlN2MwIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2Qu Yw0KKysrIGIvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYw0KQEAgLTUyMDUsNiArNTIwNSw3IEBA IHN0YXRpYyBib29sIHVmc2hjZF93Yl9zdXAoc3RydWN0IHVmc19oYmEgKmhiYSkNCiBzdGF0aWMg aW50IHVmc2hjZF93Yl9jdHJsKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wgZW5hYmxlKQ0KIHsN CiAJaW50IHJldDsNCisJdTggaW5kZXg7DQogCWVudW0gcXVlcnlfb3Bjb2RlIG9wY29kZTsNCiAN CiAJaWYgKCF1ZnNoY2Rfd2Jfc3VwKGhiYSkpDQpAQCAtNTIxNyw4ICs1MjE4LDkgQEAgc3RhdGlj IGludCB1ZnNoY2Rfd2JfY3RybChzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIGVuYWJsZSkNCiAJ ZWxzZQ0KIAkJb3Bjb2RlID0gVVBJVV9RVUVSWV9PUENPREVfQ0xFQVJfRkxBRzsNCiANCisJaW5k ZXggPSB1ZnNoY2Rfd2JfZ2V0X2ZsYWdfaW5kZXgoaGJhKTsNCiAJcmV0ID0gdWZzaGNkX3F1ZXJ5 X2ZsYWdfcmV0cnkoaGJhLCBvcGNvZGUsDQotCQkJCSAgICAgIFFVRVJZX0ZMQUdfSUROX1dCX0VO LCAwLCBOVUxMKTsNCisJCQkJICAgICAgUVVFUllfRkxBR19JRE5fV0JfRU4sIGluZGV4LCBOVUxM KTsNCiAJaWYgKHJldCkgew0KIAkJZGV2X2VycihoYmEtPmRldiwgIiVzIHdyaXRlIGJvb3N0ZXIg JXMgZmFpbGVkICVkXG4iLA0KIAkJCV9fZnVuY19fLCBlbmFibGUgPyAiZW5hYmxlIiA6ICJkaXNh YmxlIiwgcmV0KTsNCkBAIC01MjM1LDE1ICs1MjM3LDE3IEBAIHN0YXRpYyBpbnQgdWZzaGNkX3di X2N0cmwoc3RydWN0IHVmc19oYmEgKmhiYSwgYm9vbCBlbmFibGUpDQogc3RhdGljIGludCB1ZnNo Y2Rfd2JfdG9nZ2xlX2ZsdXNoX2R1cmluZ19oOChzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIHNl dCkNCiB7DQogCWludCB2YWw7DQorCXU4IGluZGV4Ow0KIA0KIAlpZiAoc2V0KQ0KIAkJdmFsID0g IFVQSVVfUVVFUllfT1BDT0RFX1NFVF9GTEFHOw0KIAllbHNlDQogCQl2YWwgPSBVUElVX1FVRVJZ X09QQ09ERV9DTEVBUl9GTEFHOw0KIA0KKwlpbmRleCA9IHVmc2hjZF93Yl9nZXRfZmxhZ19pbmRl eChoYmEpOw0KIAlyZXR1cm4gdWZzaGNkX3F1ZXJ5X2ZsYWdfcmV0cnkoaGJhLCB2YWwsDQotCQkJ ICAgICAgIFFVRVJZX0ZMQUdfSUROX1dCX0JVRkZfRkxVU0hfRFVSSU5HX0hJQkVSTjgsIDAsDQot CQkJCSAgICAgICBOVUxMKTsNCisJCQkJUVVFUllfRkxBR19JRE5fV0JfQlVGRl9GTFVTSF9EVVJJ TkdfSElCRVJOOCwNCisJCQkJaW5kZXgsIE5VTEwpOw0KIH0NCiANCiBzdGF0aWMgaW5saW5lIHZv aWQgdWZzaGNkX3diX3RvZ2dsZV9mbHVzaChzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIGVuYWJs ZSkNCkBAIC01MjU4LDEzICs1MjYyLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1ZnNoY2Rfd2Jf dG9nZ2xlX2ZsdXNoKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wgZW5hYmxlKQ0KIHN0YXRpYyBp bnQgdWZzaGNkX3diX2J1Zl9mbHVzaF9lbmFibGUoc3RydWN0IHVmc19oYmEgKmhiYSkNCiB7DQog CWludCByZXQ7DQorCXU4IGluZGV4Ow0KIA0KIAlpZiAoIXVmc2hjZF93Yl9zdXAoaGJhKSB8fCBo YmEtPndiX2J1Zl9mbHVzaF9lbmFibGVkKQ0KIAkJcmV0dXJuIDA7DQogDQorCWluZGV4ID0gdWZz aGNkX3diX2dldF9mbGFnX2luZGV4KGhiYSk7DQogCXJldCA9IHVmc2hjZF9xdWVyeV9mbGFnX3Jl dHJ5KGhiYSwgVVBJVV9RVUVSWV9PUENPREVfU0VUX0ZMQUcsDQogCQkJCSAgICAgIFFVRVJZX0ZM QUdfSUROX1dCX0JVRkZfRkxVU0hfRU4sDQotCQkJCSAgICAgIDAsIE5VTEwpOw0KKwkJCQkgICAg ICBpbmRleCwgTlVMTCk7DQogCWlmIChyZXQpDQogCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXMgV0Ig LSBidWYgZmx1c2ggZW5hYmxlIGZhaWxlZCAlZFxuIiwNCiAJCQlfX2Z1bmNfXywgcmV0KTsNCkBA IC01Mjc4LDEyICs1Mjg0LDE1IEBAIHN0YXRpYyBpbnQgdWZzaGNkX3diX2J1Zl9mbHVzaF9lbmFi bGUoc3RydWN0IHVmc19oYmEgKmhiYSkNCiBzdGF0aWMgaW50IHVmc2hjZF93Yl9idWZfZmx1c2hf ZGlzYWJsZShzdHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KIHsNCiAJaW50IHJldDsNCisJdTggaW5kZXg7 DQogDQogCWlmICghdWZzaGNkX3diX3N1cChoYmEpIHx8ICFoYmEtPndiX2J1Zl9mbHVzaF9lbmFi bGVkKQ0KIAkJcmV0dXJuIDA7DQogDQorCWluZGV4ID0gdWZzaGNkX3diX2dldF9mbGFnX2luZGV4 KGhiYSk7DQogCXJldCA9IHVmc2hjZF9xdWVyeV9mbGFnX3JldHJ5KGhiYSwgVVBJVV9RVUVSWV9P UENPREVfQ0xFQVJfRkxBRywNCi0JCQkJICAgICAgUVVFUllfRkxBR19JRE5fV0JfQlVGRl9GTFVT SF9FTiwgMCwgTlVMTCk7DQorCQkJCSAgICAgIFFVRVJZX0ZMQUdfSUROX1dCX0JVRkZfRkxVU0hf RU4sDQorCQkJCSAgICAgIGluZGV4LCBOVUxMKTsNCiAJaWYgKHJldCkgew0KIAkJZGV2X3dhcm4o aGJhLT5kZXYsICIlczogV0IgLSBidWYgZmx1c2ggZGlzYWJsZSBmYWlsZWQgJWRcbiIsDQogCQkJ IF9fZnVuY19fLCByZXQpOw0KQEAgLTY4MDIsNiArNjgxMSw5IEBAIHN0YXRpYyBpbnQgdWZzaGNk X3Njc2lfYWRkX3dsdXMoc3RydWN0IHVmc19oYmEgKmhiYSkNCiANCiBzdGF0aWMgdm9pZCB1ZnNo Y2Rfd2JfcHJvYmUoc3RydWN0IHVmc19oYmEgKmhiYSwgdTggKmRlc2NfYnVmKQ0KIHsNCisJdTgg bHVuOw0KKwl1MzIgZF9sdV93Yl9idWZfYWxsb2M7DQorDQogCWlmICghdWZzaGNkX2lzX3diX2Fs bG93ZWQoaGJhKSkNCiAJCXJldHVybjsNCiANCkBAIC02ODIxLDE2ICs2ODMzLDMyIEBAIHN0YXRp YyB2b2lkIHVmc2hjZF93Yl9wcm9iZShzdHJ1Y3QgdWZzX2hiYSAqaGJhLCB1OCAqZGVzY19idWYp DQogCWhiYS0+ZGV2X2luZm8uYl93Yl9idWZmZXJfdHlwZSA9DQogCQlkZXNjX2J1ZltERVZJQ0Vf REVTQ19QQVJBTV9XQl9UWVBFXTsNCiANCi0JaGJhLT5kZXZfaW5mby5kX3diX2FsbG9jX3VuaXRz ID0NCi0JCWdldF91bmFsaWduZWRfYmUzMihkZXNjX2J1ZiArDQotCQkJCSAgIERFVklDRV9ERVND X1BBUkFNX1dCX1NIQVJFRF9BTExPQ19VTklUUyk7DQogCWhiYS0+ZGV2X2luZm8uYl9wcmVzcnZf dXNwY19lbiA9DQogCQlkZXNjX2J1ZltERVZJQ0VfREVTQ19QQVJBTV9XQl9QUkVTUlZfVVNSU1BD X0VOXTsNCiANCi0JaWYgKCEoaGJhLT5kZXZfaW5mby5iX3diX2J1ZmZlcl90eXBlICYmDQotCSAg ICAgIGhiYS0+ZGV2X2luZm8uZF93Yl9hbGxvY191bml0cykpDQotCQlnb3RvIHdiX2Rpc2FibGVk Ow0KKwlpZiAoaGJhLT5kZXZfaW5mby5iX3diX2J1ZmZlcl90eXBlID09IFdCX0JVRl9NT0RFX1NI QVJFRCkgew0KKwkJaGJhLT5kZXZfaW5mby5kX3diX2FsbG9jX3VuaXRzID0NCisJCWdldF91bmFs aWduZWRfYmUzMihkZXNjX2J1ZiArDQorCQkJCSAgIERFVklDRV9ERVNDX1BBUkFNX1dCX1NIQVJF RF9BTExPQ19VTklUUyk7DQorCQlpZiAoIWhiYS0+ZGV2X2luZm8uZF93Yl9hbGxvY191bml0cykN CisJCQlnb3RvIHdiX2Rpc2FibGVkOw0KKwl9IGVsc2Ugew0KKwkJZm9yIChsdW4gPSAwOyBsdW4g PCBVRlNfVVBJVV9NQVhfV0JfTFVOX0lEOyBsdW4rKykgew0KKwkJCWRfbHVfd2JfYnVmX2FsbG9j ID0gMDsNCisJCQl1ZnNoY2RfcmVhZF91bml0X2Rlc2NfcGFyYW0oaGJhLA0KKwkJCQkJbHVuLA0K KwkJCQkJVU5JVF9ERVNDX1BBUkFNX1dCX0JVRl9BTExPQ19VTklUUywNCisJCQkJCSh1OCAqKSZk X2x1X3diX2J1Zl9hbGxvYywNCisJCQkJCXNpemVvZihkX2x1X3diX2J1Zl9hbGxvYykpOw0KKwkJ CWlmIChkX2x1X3diX2J1Zl9hbGxvYykgew0KKwkJCQloYmEtPmRldl9pbmZvLndiX2RlZGljYXRl ZF9sdSA9IGx1bjsNCisJCQkJYnJlYWs7DQorCQkJfQ0KKwkJfQ0KIA0KKwkJaWYgKCFkX2x1X3di X2J1Zl9hbGxvYykNCisJCQlnb3RvIHdiX2Rpc2FibGVkOw0KKwl9DQogCXJldHVybjsNCiANCiB3 Yl9kaXNhYmxlZDoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5oIGIvZHJp dmVycy9zY3NpL3Vmcy91ZnNoY2QuaA0KaW5kZXggODk4ODgzMDU4ZTNhLi5mMjMyYTY3ZmQ5YjMg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5oDQorKysgYi9kcml2ZXJzL3Nj c2kvdWZzL3Vmc2hjZC5oDQpAQCAtODYxLDYgKzg2MSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg dWZzaGNkX2tlZXBfYXV0b2Jrb3BzX2VuYWJsZWRfZXhjZXB0X3N1c3BlbmQoDQogCXJldHVybiBo YmEtPmNhcHMgJiBVRlNIQ0RfQ0FQX0tFRVBfQVVUT19CS09QU19FTkFCTEVEX0VYQ0VQVF9TVVNQ RU5EOw0KIH0NCiANCitzdGF0aWMgaW5saW5lIHU4IHVmc2hjZF93Yl9nZXRfZmxhZ19pbmRleChz dHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KK3sNCisJaWYgKGhiYS0+ZGV2X2luZm8uYl93Yl9idWZmZXJf dHlwZSA9PSBXQl9CVUZfTU9ERV9MVV9ERURJQ0FURUQpDQorCQlyZXR1cm4gaGJhLT5kZXZfaW5m by53Yl9kZWRpY2F0ZWRfbHU7DQorCXJldHVybiAwOw0KK30NCisNCiBleHRlcm4gaW50IHVmc2hj ZF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IHVmc19oYmEgKmhiYSk7DQogZXh0ZXJuIGludCB1ZnNo Y2RfcnVudGltZV9yZXN1bWUoc3RydWN0IHVmc19oYmEgKmhiYSk7DQogZXh0ZXJuIGludCB1ZnNo Y2RfcnVudGltZV9pZGxlKHN0cnVjdCB1ZnNfaGJhICpoYmEpOw0KLS0gDQoyLjE4LjANCg==