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, USER_AGENT_GIT autolearn=unavailable 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 02B7AC433E0 for ; Sat, 30 May 2020 15:13:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C5E7C2074D for ; Sat, 30 May 2020 15:13:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Za6SzSBV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729095AbgE3PNz (ORCPT ); Sat, 30 May 2020 11:13:55 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:32535 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728989AbgE3PNy (ORCPT ); Sat, 30 May 2020 11:13:54 -0400 X-UUID: 3e742bac3b94497687f8547066c3a365-20200530 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=zs+0w6nLPCOoHeMZRQqu4tfYpdiCBTOiMbmuhn2fSSA=; b=Za6SzSBVD07QQQKOooZ9IGD/6meVbqGw+Jkiyb3Fd5LsMazvqtiYCHGZ9safLXcV42dZR8ADnMigVDj0RgnKCiuDYgbsVHxJige64Rei9ds1NGmRTXyqsGVgBEMHZu2HlBinVuPsDkhlAFqC6B3VRYW9VEsTSB/1D6xu2uhzQnA=; X-UUID: 3e742bac3b94497687f8547066c3a365-20200530 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 19106460; Sat, 30 May 2020 23:13:47 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 30 May 2020 23:13:36 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 30 May 2020 23:13:36 +0800 From: Stanley Chu To: , , , , CC: , , , , , , , , , , , , , , Stanley Chu Subject: [PATCH v1 1/2] scsi: ufs: Support WriteBooster on Samsung UFS devices Date: Sat, 30 May 2020 23:13:36 +0800 Message-ID: <20200530151337.6182-2-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200530151337.6182-1-stanley.chu@mediatek.com> References: <20200530151337.6182-1-stanley.chu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org U2Ftc3VuZyBVRlMgZGV2aWNlcyBhcmUgd2lkZWx5IHVzZWQgaW4gdGhlIG1hcmtldCwgaG93ZXZl ciB0aGVzZQ0KZGV2aWNlcyBuZWVkIHNvbWUgc3BlY2lhbCBoYW5kbGluZyB0byBzdXBwb3J0IFdy aXRlQm9vc3Rlci4NCg0KVGhlIG1ham9yIHBhcnQgaXMgdGhhdCBTYW1zdW5nIFVGUyBkZXZpY2Vz IG5lZWQgdG8gdXNlIHNwZWNpZmljDQoic2VsZWN0b3IiIHZhbHVlIGZvciBXcml0ZUJvb3N0ZXIg cmVsYXRlZCBxdWVyeSBvcGVyYXRpb25zLiBUaGVyZWZvcmUsDQppbnRyb2R1Y2UgYSBkZXZpY2Ug cXVpcmsgdG8gaGFuZGxlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGFuZCB0aGVuDQpXcml0ZUJv b3N0ZXIgY2FuIGJlIGVuYWJsZWQgb24gdGhlc2UgZGV2aWNlcy4NCg0KU2lnbmVkLW9mZi1ieTog U3RhbmxleSBDaHUgPHN0YW5sZXkuY2h1QG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMvc2Nz aS91ZnMvdWZzLXN5c2ZzLmMgIHwgMTIgLS0tLS0tLS0tLQ0KIGRyaXZlcnMvc2NzaS91ZnMvdWZz LmggICAgICAgIHwgIDEgKw0KIGRyaXZlcnMvc2NzaS91ZnMvdWZzX3F1aXJrcy5oIHwgIDcgKysr KysrDQogZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYyAgICAgfCA0MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQ0KIGRyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmggICAgIHwgMjAg KysrKysrKysrKysrKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMTMg ZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvdWZzL3Vmcy1zeXNmcy5j IGIvZHJpdmVycy9zY3NpL3Vmcy91ZnMtc3lzZnMuYw0KaW5kZXggMmQ3MWQyMzJhNjlkLi5mYTVm ZGZjZDI2MTEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vmcy1zeXNmcy5jDQorKysg Yi9kcml2ZXJzL3Njc2kvdWZzL3Vmcy1zeXNmcy5jDQpAQCAtNjIyLDEyICs2MjIsNiBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB1ZnNfc3lzZnNfc3RyaW5nX2Rlc2NyaXB0 b3JzX2dyb3VwID0gew0KIAkuYXR0cnMgPSB1ZnNfc3lzZnNfc3RyaW5nX2Rlc2NyaXB0b3JzLA0K IH07DQogDQotc3RhdGljIGlubGluZSBib29sIHVmc2hjZF9pc193Yl9mbGFncyhlbnVtIGZsYWdf aWRuIGlkbikNCi17DQotCXJldHVybiAoKGlkbiA+PSBRVUVSWV9GTEFHX0lETl9XQl9FTikgJiYN Ci0JCShpZG4gPD0gUVVFUllfRkxBR19JRE5fV0JfQlVGRl9GTFVTSF9EVVJJTkdfSElCRVJOOCkp Ow0KLX0NCi0NCiAjZGVmaW5lIFVGU19GTEFHKF9uYW1lLCBfdW5hbWUpCQkJCQkJXA0KIHN0YXRp YyBzc2l6ZV90IF9uYW1lIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCQkJCVwNCiAJc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikJCQlcDQpAQCAtNjgwLDEyICs2NzQs NiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB1ZnNfc3lzZnNfZmxhZ3Nf Z3JvdXAgPSB7DQogCS5hdHRycyA9IHVmc19zeXNmc19kZXZpY2VfZmxhZ3MsDQogfTsNCiANCi1z dGF0aWMgaW5saW5lIGJvb2wgdWZzaGNkX2lzX3diX2F0dHJzKGVudW0gYXR0cl9pZG4gaWRuKQ0K LXsNCi0JcmV0dXJuICgoaWRuID49IFFVRVJZX0FUVFJfSUROX1dCX0ZMVVNIX1NUQVRVUykgJiYN Ci0JCShpZG4gPD0gUVVFUllfQVRUUl9JRE5fQ1VSUl9XQl9CVUZGX1NJWkUpKTsNCi19DQotDQog I2RlZmluZSBVRlNfQVRUUklCVVRFKF9uYW1lLCBfdW5hbWUpCQkJCQlcDQogc3RhdGljIHNzaXpl X3QgX25hbWUjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwJCQkJXA0KIAlzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQkJCVwNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Nj c2kvdWZzL3Vmcy5oIGIvZHJpdmVycy9zY3NpL3Vmcy91ZnMuaA0KaW5kZXggYzcwODQ1ZDQxNDQ5 Li44OGVjODdlMjgxMWMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vmcy5oDQorKysg Yi9kcml2ZXJzL3Njc2kvdWZzL3Vmcy5oDQpAQCAtNjEsNiArNjEsNyBAQA0KICAqIFRoaXMgbWVh bnMgbWF4LiBMVU4gbnVtYmVyIHJlcG9ydGVkIGZyb20gVUZTIGRldmljZSBjb3VsZCBiZSAweEMx N0YuDQogICovDQogI2RlZmluZSBVRlNfVVBJVV9NQVhfVU5JVF9OVU1fSUQJMHg3Rg0KKyNkZWZp bmUgVUZTX1VQSVVfUlBNQl9RVUVSWV9JTkRFWAkweEM0DQogI2RlZmluZSBVRlNfTUFYX0xVTlMJ CShTQ1NJX1dfTFVOX0JBU0UgKyBVRlNfVVBJVV9NQVhfVU5JVF9OVU1fSUQpDQogI2RlZmluZSBV RlNfVVBJVV9XTFVOX0lECSgxIDw8IDcpDQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Vm cy91ZnNfcXVpcmtzLmggYi9kcml2ZXJzL3Njc2kvdWZzL3Vmc19xdWlya3MuaA0KaW5kZXggZTMx NzVhNjNjNjc2Li5mOWVkODY4Y2YzMzAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vm c19xdWlya3MuaA0KKysrIGIvZHJpdmVycy9zY3NpL3Vmcy91ZnNfcXVpcmtzLmgNCkBAIC0xMDgs NCArMTA4LDExIEBAIHN0cnVjdCB1ZnNfZGV2X2ZpeCB7DQogICovDQogI2RlZmluZSBVRlNfREVW SUNFX1FVSVJLX1NVUFBPUlRfRVhURU5ERURfRkVBVFVSRVMgKDEgPDwgMTApDQogDQorLyoNCisg KiBTb21lIFVGUyBkZXZpY2VzIG5lZWQgdG8gdXNlIHNwZWNpYWwgc2VsZWN0b3IgdG8gb3BlcmF0 ZSBXcml0ZUJvb3N0ZXINCisgKiByZWxhdGVkIGZsYWdzIGFuZCBhdHRyaWJ1dGVzLiBFbmFibGUg dGhpcyBxdWlyayB0byBtYWtlIHRoZXNlIGRldmljZXMNCisgKiB3b3JrIG5vcm1hbGx5Lg0KKyAq Lw0KKyNkZWZpbmUgVUZTX0RFVklDRV9RVUlSS19XQl9TUEVDSUFMX1NFTEVDVE9SICgxIDw8IDEx KQ0KKw0KICNlbmRpZiAvKiBVRlNfUVVJUktTX0hfICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z Y3NpL3Vmcy91ZnNoY2QuYyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmMNCmluZGV4IGYxMWJl NjllNTBlOS4uNWUzOGM0NzE4NzdjIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNo Y2QuYw0KKysrIGIvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYw0KQEAgLTI4MDEsMTEgKzI4MDEs MTcgQEAgaW50IHVmc2hjZF9xdWVyeV9mbGFnKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGVudW0gcXVl cnlfb3Bjb2RlIG9wY29kZSwNCiB7DQogCXN0cnVjdCB1ZnNfcXVlcnlfcmVxICpyZXF1ZXN0ID0g TlVMTDsNCiAJc3RydWN0IHVmc19xdWVyeV9yZXMgKnJlc3BvbnNlID0gTlVMTDsNCi0JaW50IGVy ciwgc2VsZWN0b3IgPSAwOw0KKwlpbnQgZXJyOw0KIAlpbnQgdGltZW91dCA9IFFVRVJZX1JFUV9U SU1FT1VUOw0KKwl1OCBzZWxlY3RvciA9IDA7DQogDQogCUJVR19PTighaGJhKTsNCiANCisJaWYg KGhiYS0+ZGV2X3F1aXJrcyAmIFVGU19ERVZJQ0VfUVVJUktfV0JfU1BFQ0lBTF9TRUxFQ1RPUikg ew0KKwkJaWYgKHVmc2hjZF9pc193Yl9mbGFncyhpZG4pKQ0KKwkJCXNlbGVjdG9yID0gMTsNCisJ fQ0KKw0KIAl1ZnNoY2RfaG9sZChoYmEsIGZhbHNlKTsNCiAJbXV0ZXhfbG9jaygmaGJhLT5kZXZf Y21kLmxvY2spOw0KIAl1ZnNoY2RfaW5pdF9xdWVyeShoYmEsICZyZXF1ZXN0LCAmcmVzcG9uc2Us IG9wY29kZSwgaWRuLCBpbmRleCwNCkBAIC0yODgyLDYgKzI4ODgsMTEgQEAgaW50IHVmc2hjZF9x dWVyeV9hdHRyKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGVudW0gcXVlcnlfb3Bjb2RlIG9wY29kZSwN CiAJCWdvdG8gb3V0Ow0KIAl9DQogDQorCWlmIChoYmEtPmRldl9xdWlya3MgJiBVRlNfREVWSUNF X1FVSVJLX1dCX1NQRUNJQUxfU0VMRUNUT1IpIHsNCisJCWlmICh1ZnNoY2RfaXNfd2JfYXR0cnMo aWRuKSkNCisJCQlzZWxlY3RvciA9IDE7DQorCX0NCisNCiAJbXV0ZXhfbG9jaygmaGJhLT5kZXZf Y21kLmxvY2spOw0KIAl1ZnNoY2RfaW5pdF9xdWVyeShoYmEsICZyZXF1ZXN0LCAmcmVzcG9uc2Us IG9wY29kZSwgaWRuLCBpbmRleCwNCiAJCQlzZWxlY3Rvcik7DQpAQCAtMzA0Miw2ICszMDUzLDEx IEBAIGludCB1ZnNoY2RfcXVlcnlfZGVzY3JpcHRvcl9yZXRyeShzdHJ1Y3QgdWZzX2hiYSAqaGJh LA0KIAlpbnQgZXJyOw0KIAlpbnQgcmV0cmllczsNCiANCisJaWYgKGhiYS0+ZGV2X3F1aXJrcyAm IFVGU19ERVZJQ0VfUVVJUktfV0JfU1BFQ0lBTF9TRUxFQ1RPUikgew0KKwkJaWYgKHVmc2hjZF9p c193Yl9kZXNjKGlkbiwgaW5kZXgpKQ0KKwkJCXNlbGVjdG9yID0gMTsNCisJfQ0KKw0KIAlmb3Ig KHJldHJpZXMgPSBRVUVSWV9SRVFfUkVUUklFUzsgcmV0cmllcyA+IDA7IHJldHJpZXMtLSkgew0K IAkJZXJyID0gX191ZnNoY2RfcXVlcnlfZGVzY3JpcHRvcihoYmEsIG9wY29kZSwgaWRuLCBpbmRl eCwNCiAJCQkJCQlzZWxlY3RvciwgZGVzY19idWYsIGJ1Zl9sZW4pOw0KQEAgLTY5MDcsOCArNjky MywxMCBAQCBzdGF0aWMgaW50IHVmc19nZXRfZGV2aWNlX2Rlc2Moc3RydWN0IHVmc19oYmEgKmhi YSkNCiAJc2l6ZV90IGJ1ZmZfbGVuOw0KIAl1OCBtb2RlbF9pbmRleDsNCiAJdTggKmRlc2NfYnVm Ow0KKwl1OCByZXRyeV9jbnQgPSAwOw0KIAlzdHJ1Y3QgdWZzX2Rldl9pbmZvICpkZXZfaW5mbyA9 ICZoYmEtPmRldl9pbmZvOw0KIA0KK3JldHJ5Og0KIAlidWZmX2xlbiA9IG1heF90KHNpemVfdCwg aGJhLT5kZXNjX3NpemUuZGV2X2Rlc2MsDQogCQkJIFFVRVJZX0RFU0NfTUFYX1NJWkUgKyAxKTsN CiAJZGVzY19idWYgPSBrbWFsbG9jKGJ1ZmZfbGVuLCBHRlBfS0VSTkVMKTsNCkBAIC02OTQ4LDYg KzY5NjYsMjkgQEAgc3RhdGljIGludCB1ZnNfZ2V0X2RldmljZV9kZXNjKHN0cnVjdCB1ZnNfaGJh ICpoYmEpDQogDQogCXVmc19maXh1cF9kZXZpY2Vfc2V0dXAoaGJhKTsNCiANCisJaWYgKCFyZXRy eV9jbnQgJiYgKGhiYS0+ZGV2X3F1aXJrcyAmDQorCQlVRlNfREVWSUNFX1FVSVJLX1dCX1NQRUNJ QUxfU0VMRUNUT1IpKSB7DQorCQkvKg0KKwkJICogVXBkYXRlIFdyaXRlQm9vc3RlciByZWxhdGVk IGRlc2NyaXB0b3IgbGVuZ3RoIHdpdGggc3BlY2lmaWMNCisJCSAqIHNlbGV0b3IgdXNlZC4NCisJ CSAqLw0KKwkJdWZzaGNkX3JlYWRfZGVzY19sZW5ndGgoaGJhLCBRVUVSWV9ERVNDX0lETl9ERVZJ Q0UsIDAsDQorCQkJCQkmaGJhLT5kZXNjX3NpemUuZGV2X2Rlc2MpOw0KKwkJdWZzaGNkX3JlYWRf ZGVzY19sZW5ndGgoaGJhLCBRVUVSWV9ERVNDX0lETl9DT05GSUdVUkFUSU9OLCAwLA0KKwkJCQkJ JmhiYS0+ZGVzY19zaXplLmNvbmZfZGVzYyk7DQorCQl1ZnNoY2RfcmVhZF9kZXNjX2xlbmd0aCho YmEsIFFVRVJZX0RFU0NfSUROX1VOSVQsIDAsDQorCQkJCQkmaGJhLT5kZXNjX3NpemUudW5pdF9k ZXNjKTsNCisJCXVmc2hjZF9yZWFkX2Rlc2NfbGVuZ3RoKGhiYSwgUVVFUllfREVTQ19JRE5fR0VP TUVUUlksIDAsDQorCQkJCQkmaGJhLT5kZXNjX3NpemUuZ2VvbV9kZXNjKTsNCisJCS8qDQorCQkg KiBSZWFkIGRldmljZSBkZXNjcmlwdG9yIGFnYWluIHdpdGggc3BlY2lmaWMgc2VsZWN0b3IgdXNl ZCB0bw0KKwkJICogZ2V0IFdyaXRlQm9vc3RlciByZWxhdGVkIGZpbGVkcy4NCisJCSAqLw0KKwkJ a2ZyZWUoZGVzY19idWYpOw0KKwkJcmV0cnlfY250Kys7DQorCQlnb3RvIHJldHJ5Ow0KKwl9DQor DQogCS8qDQogCSAqIFByb2JlIFdCIG9ubHkgZm9yIFVGUy0zLjEgZGV2aWNlcyBvciBVRlMgZGV2 aWNlcyB3aXRoIHF1aXJrDQogCSAqIFVGU19ERVZJQ0VfUVVJUktfU1VQUE9SVF9FWFRFTkRFRF9G RUFUVVJFUyBlbmFibGVkDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuaCBi L2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmgNCmluZGV4IGJmOTdkNjE2ZTU5Ny4uZDg1MGM0N2U4 YWUwIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuaA0KKysrIGIvZHJpdmVy cy9zY3NpL3Vmcy91ZnNoY2QuaA0KQEAgLTg3Niw2ICs4NzYsMjYgQEAgc3RhdGljIGlubGluZSB1 OCB1ZnNoY2Rfd2JfZ2V0X3F1ZXJ5X2luZGV4KHN0cnVjdCB1ZnNfaGJhICpoYmEpDQogCXJldHVy biAwOw0KIH0NCiANCitzdGF0aWMgaW5saW5lIGJvb2wgdWZzaGNkX2lzX3diX2F0dHJzKGVudW0g YXR0cl9pZG4gaWRuKQ0KK3sNCisJcmV0dXJuICgoaWRuID49IFFVRVJZX0FUVFJfSUROX1dCX0ZM VVNIX1NUQVRVUykgJiYNCisJCShpZG4gPD0gUVVFUllfQVRUUl9JRE5fQ1VSUl9XQl9CVUZGX1NJ WkUpKTsNCit9DQorDQorc3RhdGljIGlubGluZSBib29sIHVmc2hjZF9pc193Yl9kZXNjKGVudW0g ZGVzY19pZG4gaWRuLCB1OCBpbmRleCkNCit7DQorCXJldHVybiAoaWRuIDw9IFFVRVJZX0RFU0Nf SUROX0NPTkZJR1VSQVRJT04pIHx8DQorCQkoKGlkbiA9PSBRVUVSWV9ERVNDX0lETl9VTklUKSAm Jg0KKwkJKGluZGV4ICE9IFVGU19VUElVX1JQTUJfUVVFUllfSU5ERVgpKSB8fA0KKwkJKGlkbiA9 PSBRVUVSWV9ERVNDX0lETl9HRU9NRVRSWSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgYm9vbCB1 ZnNoY2RfaXNfd2JfZmxhZ3MoZW51bSBmbGFnX2lkbiBpZG4pDQorew0KKwlyZXR1cm4gKChpZG4g Pj0gUVVFUllfRkxBR19JRE5fV0JfRU4pICYmDQorCQkoaWRuIDw9IFFVRVJZX0ZMQUdfSUROX1dC X0JVRkZfRkxVU0hfRFVSSU5HX0hJQkVSTjgpKTsNCit9DQorDQogZXh0ZXJuIGludCB1ZnNoY2Rf cnVudGltZV9zdXNwZW5kKHN0cnVjdCB1ZnNfaGJhICpoYmEpOw0KIGV4dGVybiBpbnQgdWZzaGNk X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB1ZnNfaGJhICpoYmEpOw0KIGV4dGVybiBpbnQgdWZzaGNk X3J1bnRpbWVfaWRsZShzdHJ1Y3QgdWZzX2hiYSAqaGJhKTsNCi0tIA0KMi4xOC4wDQo=