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=-11.4 required=3.0 tests=BAYES_00,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 441A2C43461 for ; Fri, 4 Sep 2020 08:17:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B4C63206C9 for ; Fri, 4 Sep 2020 08:17:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="gB9s9Im4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729683AbgIDIRm (ORCPT ); Fri, 4 Sep 2020 04:17:42 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:16310 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726425AbgIDIRl (ORCPT ); Fri, 4 Sep 2020 04:17:41 -0400 X-UUID: 9e4d68cd58fd4f7fa297dae7bd846555-20200904 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=8KlZ7pVH1HpYEsFsI6Kzg4cC/zSEHHe6xE+vEzxM9rk=; b=gB9s9Im4cOn0dtbVCHJvaxDsTVaY1dtldgWL5P+vluN7eOJFfIsRZwpCpdFLyAA/PvqD//Bi2XdKPeQcoq6EsPiHvs6WUUS2T2H91oju2iiYLJDVRfdXEozD4EJ4+/d0PAX7nkxnDa+h0xoHvmUadnOL/84JGE0FSHC4duUNcLI=; X-UUID: 9e4d68cd58fd4f7fa297dae7bd846555-20200904 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1932993243; Fri, 04 Sep 2020 16:17:35 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs05n1.mediatek.inc (172.21.101.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 4 Sep 2020 16:17:31 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 4 Sep 2020 16:17:30 +0800 From: Chunfeng Yun To: Zhanyong Wang CC: , , , , CK Hu , Chunfeng Yun Subject: [RFC PATCH v2 3/4] usb: xhci-mtk: add support runtime pm Date: Fri, 4 Sep 2020 16:15:39 +0800 Message-ID: <1599207340-4673-3-git-send-email-chunfeng.yun@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1599207340-4673-1-git-send-email-chunfeng.yun@mediatek.com> References: <1599207340-4673-1-git-send-email-chunfeng.yun@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 RnJvbTogQ0sgSHUgPGNrLmh1QG1lZGlhdGVrLmNvbT4NCg0KYWRkIHN1cHBvcnQgcnVudGltZSBw bSBmZWF0dXJlDQoNClNpZ25lZC1vZmYtYnk6IFpoYW55b25nIFdhbmcgPHpoYW55b25nLndhbmdA bWVkaWF0ZWsuY29tPg0KU2lnbmVkLW9mZi1ieTogQ2h1bmZlbmcgWXVuIDxjaHVuZmVuZy55dW5A bWVkaWF0ZWsuY29tPg0KLS0tDQp2MjogZml4IGVycm9yIGNhdXNlZCBieSByZXF1ZXN0IGlycSBz dWdnZXN0ZWQgYnkgQ0sNCi0tLQ0KIGRyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuYyB8IDQ0NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KIGRyaXZlcnMvdXNi L2hvc3QveGhjaS1tdGsuaCB8ICAxNCArKw0KIDIgZmlsZXMgY2hhbmdlZCwgNDU1IGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pDQogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBkcml2 ZXJzL3VzYi9ob3N0L3hoY2ktbXRrLmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qv eGhjaS1tdGsuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuYw0KaW5kZXggZDk1MjIxZi4u ZGE0ZWJjOSAxMDA3NTUNCi0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuYw0KKysrIGIv ZHJpdmVycy91c2IvaG9zdC94aGNpLW10ay5jDQpAQCAtMTQsNiArMTQsNyBAQA0KICNpbmNsdWRl IDxsaW51eC9tZmQvc3lzY29uLmg+DQogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KICNpbmNs dWRlIDxsaW51eC9vZi5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4NCiAjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4N CiAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQpAQCAtNzcsNiArNzgsMjI4IEBAIGVudW0gc3N1 c2JfdXdrX3ZlcnMgew0KIAlTU1VTQl9VV0tfVjMsDQogfTsNCiANCitpbnQgeGhjaV9tdGtfcnVu dGltZV9yZWFkeTsNCisNCisjaWYgSVNfRU5BQkxFRChDT05GSUdfUE0pDQorc3RhdGljIGludCB4 aGNpX210a19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTsNCitzdGF0aWMgaW50 IHhoY2lfbXRrX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7DQorc3RhdGljIGlu dCB4aGNpX210a19ydW50aW1lX2lkbGUoc3RydWN0IGRldmljZSAqZGV2KTsNCitzdGF0aWMgc3Np emVfdCB4aGNpX210a19ydW50aW1lX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KKwkJCQkgICAg IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KKwkJCQkgICAgIGNoYXIgKmJ1ZikNCit7 DQorCWludCBpOw0KKwlpbnQgcmV0ID0gMDsNCisJaW50IG51bV9wb3J0czsNCisJc3RydWN0IHho Y2lfaGNkX210ayAqbXRrID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVjdCB1c2JfaGNk ICpoY2Q7DQorCXN0cnVjdCB4aGNpX2hjZCAqeGhjaTsNCisJc3RydWN0IHhoY2lfaHViICp1c2Iy X3JodWI7DQorCXN0cnVjdCB4aGNpX2h1YiAqdXNiM19yaHViOw0KKwlzdHJ1Y3QgeGhjaV9idXNf c3RhdGUgKmJ1c19zdGF0ZTsNCisJc3RydWN0IHhoY2lfcG9ydCAqcG9ydDsNCisJdTMyIHVzYjJf c3VzcGVuZGVkX3BvcnRzID0gLTE7DQorCXUzMiB1c2IzX3N1c3BlbmRlZF9wb3J0cyA9IC0xOw0K Kwl1MTYgc3RhdHVzOw0KKw0KKwlpZiAoIW10ay0+aGNkKQ0KKwkJcmV0dXJuIC1FU0hVVERPV047 DQorDQorCWlmICgheGhjaV9tdGtfcnVudGltZV9yZWFkeSkNCisJCXJldHVybglzcHJpbnRmKGJ1 ZiwNCisJCQkieGhjaV9tdGtfcnVudGltZV9yZWFkeSBpcyBub3QgcmVhZHkgeWV0IVxuIik7DQor DQorCWlmICghbXRrLT5oY2QpDQorCQlyZXR1cm4gLUVTSFVURE9XTjsNCisNCisJaGNkID0gbXRr LT5oY2Q7DQorCXhoY2kgPSBoY2RfdG9feGhjaShoY2QpOw0KKwlpZiAoKHhoY2ktPnhoY19zdGF0 ZSAmIFhIQ0lfU1RBVEVfUkVNT1ZJTkcpIHx8DQorCQkJKHhoY2ktPnhoY19zdGF0ZSAmIFhIQ0lf U1RBVEVfSEFMVEVEKSkgew0KKwkJcmV0dXJuIC1FU0hVVERPV047DQorCX0NCisNCisJdXNiMl9y aHViID0gJnhoY2ktPnVzYjJfcmh1YjsNCisJaWYgKHVzYjJfcmh1Yikgew0KKwkJYnVzX3N0YXRl ICA9ICZ1c2IyX3JodWItPmJ1c19zdGF0ZTsNCisJCW51bV9wb3J0cyAgPSB1c2IyX3JodWItPm51 bV9wb3J0czsNCisJCXVzYjJfc3VzcGVuZGVkX3BvcnRzICA9IGJ1c19zdGF0ZS0+c3VzcGVuZGVk X3BvcnRzOw0KKwkJdXNiMl9zdXNwZW5kZWRfcG9ydHMgXj0gKEJJVChudW1fcG9ydHMpIC0gMSk7 DQorCQl1c2IyX3N1c3BlbmRlZF9wb3J0cyAmPSAoQklUKG51bV9wb3J0cykgLSAxKTsNCisJCWZv ciAoaSA9IDA7IGkgPCBudW1fcG9ydHM7IGkrKykgew0KKwkJCWlmICh1c2IyX3N1c3BlbmRlZF9w b3J0cyAmIEJJVChpKSkgew0KKwkJCQlwb3J0ID0gdXNiMl9yaHViLT5wb3J0c1tpXTsNCisJCQkJ c3RhdHVzID0gcmVhZGwocG9ydC0+YWRkcik7DQorDQorCQkJCXhoY2lfaW5mbyh4aGNpLCAiVVNC MjogcG9ydHNjWyVpXTogMHglMDRYXG4iLA0KKwkJCQkJICBpLCBzdGF0dXMpOw0KKw0KKwkJCQlp ZiAoIShzdGF0dXMgJiBQT1JUX0NPTk5FQ1QpKQ0KKwkJCQkJdXNiMl9zdXNwZW5kZWRfcG9ydHMg Jj0gfkJJVChpKTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJdXNiM19yaHViID0gJnhoY2ktPnVz YjNfcmh1YjsNCisJaWYgKHVzYjNfcmh1Yikgew0KKwkJYnVzX3N0YXRlICA9ICZ1c2IzX3JodWIt PmJ1c19zdGF0ZTsNCisJCW51bV9wb3J0cyAgPSB1c2IzX3JodWItPm51bV9wb3J0czsNCisJCXVz YjNfc3VzcGVuZGVkX3BvcnRzICA9IGJ1c19zdGF0ZS0+c3VzcGVuZGVkX3BvcnRzOw0KKwkJdXNi M19zdXNwZW5kZWRfcG9ydHMgXj0gKEJJVChudW1fcG9ydHMpIC0gMSk7DQorCQl1c2IzX3N1c3Bl bmRlZF9wb3J0cyAmPSAoQklUKG51bV9wb3J0cykgLSAxKTsNCisJCWZvciAoaSA9IDA7IGkgPCBu dW1fcG9ydHM7IGkrKykgew0KKwkJCWlmICh1c2IzX3N1c3BlbmRlZF9wb3J0cyAmIEJJVChpKSkg ew0KKwkJCQlwb3J0ID0gdXNiM19yaHViLT5wb3J0c1tpXTsNCisJCQkJc3RhdHVzID0gcmVhZGwo cG9ydC0+YWRkcik7DQorDQorCQkJCXhoY2lfaW5mbyh4aGNpLCAiVVNCMzogcG9ydHNjWyVpXTog MHglMDRYXG4iLA0KKwkJCQkJICBpLCBzdGF0dXMpOw0KKw0KKwkJCQlpZiAoIShzdGF0dXMgJiBQ T1JUX0NPTk5FQ1QpKQ0KKwkJCQkJdXNiM19zdXNwZW5kZWRfcG9ydHMgJj0gfkJJVChpKTsNCisJ CQl9DQorCQl9DQorCX0NCisNCisJcmV0dXJuIHNwcmludGYoYnVmLCAiVVNCMjA6IDB4JTA4WCwg VVNCMzA6IDB4JTA4WCByZXQ6ICVpXG4iLA0KKwkJCXVzYjJfc3VzcGVuZGVkX3BvcnRzLCB1c2Iz X3N1c3BlbmRlZF9wb3J0cywgcmV0KTsNCit9DQorDQorc3RhdGljIHNzaXplX3QgeGhjaV9tdGtf cnVudGltZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQorCQkJCSAgICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLA0KKwkJCQkgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBj b3VudCkNCit7DQorCWludCBsZW4gPSBjb3VudDsNCisJY2hhciAqY3A7DQorCWludCByYyA9IGNv dW50Ow0KKwlzdGF0aWMgY29uc3QgY2hhciBzdXNwZW5kX3N0cmluZ1tdID0gInN1c3BlbmQiOw0K KwlzdGF0aWMgY29uc3QgY2hhciByZXN1bWVfc3RyaW5nW10gID0gInJlc3VtZSI7DQorCXN0YXRp YyBjb25zdCBjaGFyIGlkbGVfc3RyaW5nW10gICAgPSAiaWRsZSI7DQorDQorCWNwID0gbWVtY2hy KGJ1ZiwgJ1xuJywgY291bnQpOw0KKwlpZiAoY3ApDQorCQlsZW4gPSBjcCAtIGJ1ZjsNCisNCisJ aWYgKCF4aGNpX210a19ydW50aW1lX3JlYWR5KSB7DQorCQlyYyA9IC1FQUdBSU47DQorCQlkZXZf aW5mbyhkZXYsDQorCQkJInhoY2lfbXRrX3J1bnRpbWVfcmVhZHkgaXMgbm90IHJlYWR5IHlldCFc biIpOw0KKwkJZ290byBleGl0Ow0KKwl9DQorDQorCWlmIChsZW4gPT0gc2l6ZW9mKHN1c3BlbmRf c3RyaW5nKSAtIDEgJiYNCisJCQlzdHJuY21wKGJ1Ziwgc3VzcGVuZF9zdHJpbmcsIGxlbikgPT0g MCkNCisJCXhoY2lfbXRrX3J1bnRpbWVfc3VzcGVuZChkZXYpOw0KKwllbHNlIGlmIChsZW4gPT0g c2l6ZW9mKHJlc3VtZV9zdHJpbmcpIC0gMSAmJg0KKwkJCXN0cm5jbXAoYnVmLCByZXN1bWVfc3Ry aW5nLCBsZW4pID09IDApDQorCQl4aGNpX210a19ydW50aW1lX3Jlc3VtZShkZXYpOw0KKwllbHNl IGlmIChsZW4gPT0gc2l6ZW9mKGlkbGVfc3RyaW5nKSAtIDEgJiYNCisJCQlzdHJuY21wKGJ1Ziwg aWRsZV9zdHJpbmcsIGxlbikgPT0gMCkNCisJCXhoY2lfbXRrX3J1bnRpbWVfaWRsZShkZXYpOw0K KwllbHNlDQorCQlyYyA9IC1FSU5WQUw7DQorDQorZXhpdDoNCisJcmV0dXJuIHJjOw0KK30NCitz dGF0aWMgREVWSUNFX0FUVFJfUlcoeGhjaV9tdGtfcnVudGltZSk7DQorDQorc3RhdGljIHNzaXpl X3Qgc2VhbF9ydW50aW1lX3N0YXR1c19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCisJCQkJc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikNCit7DQorCXN0YXRpYyBjaGFy ICpjb25zdCBzZWFsX3N0YXR1c1tdID0gew0KKwkJIlNFQUxfQlVTWSIsDQorCQkiU0VBTF9TVVNQ RU5ESU5HIiwNCisJCSJTRUFMX1NVU1BFTkRFRCIsDQorCQkiU0VBTF9SRVNVTUlORyIsDQorCQki U0VBTF9SRVNVTUVEIg0KKwl9Ow0KKwlzdHJ1Y3QgeGhjaV9oY2RfbXRrICAqbXRrID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQorDQorCXJldHVybiBzcHJpbnRmKGJ1ZiwgInN0YXR1czogJXMoJWkp XG4iLA0KKwkJCXNlYWxfc3RhdHVzW210ay0+c2VhbF9zdGF0dXNdLCBtdGstPnNlYWxfc3RhdHVz KTsNCit9DQorc3RhdGljIERFVklDRV9BVFRSX1JPKHNlYWxfcnVudGltZV9zdGF0dXMpOw0KKw0K K3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpwb3dlcl9hdHRyc1tdID0gew0KKwkmZGV2X2F0dHJf eGhjaV9tdGtfcnVudGltZS5hdHRyLA0KKwkmZGV2X2F0dHJfc2VhbF9ydW50aW1lX3N0YXR1cy5h dHRyLA0KKwlOVUxMLA0KK307DQorDQorc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcG93 ZXJfYXR0cl9ncm91cCA9IHsNCisJLm5hbWUJPSBwb3dlcl9ncm91cF9uYW1lLA0KKwkuYXR0cnMJ PSBwb3dlcl9hdHRycywNCit9Ow0KKw0KK3N0YXRpYyBpbnQgYWRkX3Bvd2VyX2F0dHJpYnV0ZXMo c3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJaW50IHJjID0gMDsNCisNCisJcmMgPSBzeXNmc19t ZXJnZV9ncm91cCgmZGV2LT5rb2JqLCAmcG93ZXJfYXR0cl9ncm91cCk7DQorDQorCXJldHVybiBy YzsNCit9DQorDQorc3RhdGljIHZvaWQgcmVtb3ZlX3Bvd2VyX2F0dHJpYnV0ZXMoc3RydWN0IGRl dmljZSAqZGV2KQ0KK3sNCisJc3lzZnNfdW5tZXJnZV9ncm91cCgmZGV2LT5rb2JqLCAmcG93ZXJf YXR0cl9ncm91cCk7DQorfQ0KKyNlbHNlDQorI2RlZmluZSBhZGRfcG93ZXJfYXR0cmlidXRlcyhk ZXYpCWRvIHt9IHdoaWxlICgwKQ0KKyNkZWZpbmUgcmVtb3ZlX3Bvd2VyX2F0dHJpYnV0ZXMoZGV2 KQlkbyB7fSB3aGlsZSAoMCkNCisjZW5kaWYNCisNCitzdGF0aWMgdm9pZCB4aGNpX210a19zZWFs X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KK3sNCisJc3RydWN0IHhoY2lfaGNkX210 ayAqbXRrID0NCisJCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IHhoY2lfaGNkX210aywgc2Vh bC53b3JrKTsNCisJc3RydWN0IHVzYl9oY2QgKmhjZCA9IG10ay0+aGNkOw0KKwlzdHJ1Y3QgeGhj aV9oY2QgKnhoY2kgPSBoY2RfdG9feGhjaShoY2QpOw0KKw0KKwl4aGNpX2RiZyh4aGNpLCAic3Bt IHVuc2VhbHMgeEhDSSBjb250cm9sbGVyICVpXG4iLCBtdGstPnNlYWxfc3RhdHVzKTsNCisJaWYg KG10ay0+c2VhbF9zdGF0dXMgPT0gU0VBTF9TVVNQRU5ERUQpIHsNCisJCW10ay0+c2VhbF9zdGF0 dXMgPSBTRUFMX1JFU1VNSU5HOw0KKwkJcG1fcnVudGltZV9wdXRfc3luY19hdXRvc3VzcGVuZCht dGstPmRldik7DQorCX0gZWxzZSB7DQorCQl4aGNpX3dhcm4oeGhjaSwNCisJCSAiSWdub3JlIHNl YWwgd2FrZXVwIHNvdXJjZSBkaXNvcmRlcmVkIGluIHhIQ0kgY29udHJvbGxlclxuIik7DQorCX0N Cit9DQorDQorc3RhdGljIGlycXJldHVybl90IHhoY2lfbXRrX3NlYWxfaXJxKGludCBpcnEsIHZv aWQgKmRhdGEpDQorew0KKwlzdHJ1Y3QgeGhjaV9oY2RfbXRrICptdGsgPSBkYXRhOw0KKwlzdHJ1 Y3QgdXNiX2hjZCAqaGNkID0gbXRrLT5oY2Q7DQorCXN0cnVjdCB4aGNpX2hjZCAqeGhjaSA9IGhj ZF90b194aGNpKGhjZCk7DQorDQorCXhoY2lfZGJnKHhoY2ksICJzZWFsIGlycSBJU1IgaW52b2tl ZFxuIik7DQorDQorCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmbXRrLT5zZWFsLCAwKTsNCisNCisJ cmV0dXJuIElSUV9IQU5ETEVEOw0KK30NCisNCitzdGF0aWMgdm9pZCB4aGNpX210a19zZWFsX3dh a2V1cF9lbmFibGUoc3RydWN0IHhoY2lfaGNkX210ayAqbXRrLCBib29sIGVuYWJsZSkNCit7DQor CXN0cnVjdCBpcnFfZGVzYyAqZGVzYzsNCisJc3RydWN0IGRldmljZSAqZGV2ID0gbXRrLT5kZXY7 DQorDQorCWlmIChtdGsgJiYgbXRrLT5zZWFsX2lycSkgew0KKwkJZGVzYyA9IGlycV90b19kZXNj KG10ay0+c2VhbF9pcnEpOw0KKwkJaWYgKGVuYWJsZSkgew0KKwkJCWRlc2MtPmlycV9kYXRhLmNo aXAtPmlycV9hY2soJmRlc2MtPmlycV9kYXRhKTsNCisJCQllbmFibGVfaXJxKG10ay0+c2VhbF9p cnEpOw0KKwkJCWRldl9kYmcoZGV2LCAiJXM6IGVuYWJsZV9pcnEgJWlcbiIsDQorCQkJCSBfX2Z1 bmNfXywgbXRrLT5zZWFsX2lycSk7DQorCQl9IGVsc2Ugew0KKwkJCWRpc2FibGVfaXJxKG10ay0+ c2VhbF9pcnEpOw0KKwkJCWRldl9kYmcoZGV2LCAiJXM6IGRpc2FibGVfaXJxICVpXG4iLA0KKwkJ CQkgX19mdW5jX18sIG10ay0+c2VhbF9pcnEpOw0KKwkJfQ0KKwl9DQorfQ0KKw0KIHN0YXRpYyBp bnQgeGhjaV9tdGtfaG9zdF9lbmFibGUoc3RydWN0IHhoY2lfaGNkX210ayAqbXRrKQ0KIHsNCiAJ c3RydWN0IG11M2NfaXBwY19yZWdzIF9faW9tZW0gKmlwcGMgPSBtdGstPmlwcGNfcmVnczsNCkBA IC0zNDQsNyArNTY3LDYgQEAgc3RhdGljIGludCB1c2Jfd2FrZXVwX29mX3Byb3BlcnR5X3BhcnNl KHN0cnVjdCB4aGNpX2hjZF9tdGsgKm10aywNCiAJCQltdGstPnV3a19yZWdfYmFzZSwgbXRrLT51 d2tfdmVycyk7DQogDQogCXJldHVybiBQVFJfRVJSX09SX1pFUk8obXRrLT51d2spOw0KLQ0KIH0N CiANCiBzdGF0aWMgdm9pZCB1c2Jfd2FrZXVwX3NldChzdHJ1Y3QgeGhjaV9oY2RfbXRrICptdGss IGJvb2wgZW5hYmxlKQ0KQEAgLTQ3OSw5ICs3MDEsMTEgQEAgc3RhdGljIGludCB4aGNpX210a19w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAkJcmV0dXJuIHJldDsNCiAJfQ0K IA0KKwlwbV9ydW50aW1lX3NldF9hY3RpdmUoZGV2KTsNCisJcG1fcnVudGltZV91c2VfYXV0b3N1 c3BlbmQoZGV2KTsNCisJcG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LA0KKwkJ CQlDT05GSUdfVVNCX0FVVE9TVVNQRU5EX0RFTEFZICogMTAwMCk7DQogCXBtX3J1bnRpbWVfZW5h YmxlKGRldik7DQotCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsNCi0JZGV2aWNlX2VuYWJsZV9h c3luY19zdXNwZW5kKGRldik7DQogDQogCXJldCA9IHhoY2lfbXRrX2xkb3NfZW5hYmxlKG10ayk7 DQogCWlmIChyZXQpDQpAQCAtNDk2LDYgKzcyMCwxNCBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCQlyZXQgPSBpcnE7DQogCQlnb3Rv IGRpc2FibGVfY2xrOw0KIAl9DQorCWRldl9kYmcoZGV2LCAiaXJxICVpXG4iLCBpcnEpOw0KKw0K KwltdGstPnNlYWxfaXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCAxKTsNCisJ aWYgKG10ay0+c2VhbF9pcnEgPCAwKSB7DQorCQlyZXQgPSBtdGstPnNlYWxfaXJxOw0KKwkJZ290 byBkaXNhYmxlX2NsazsNCisJfQ0KKwlkZXZfZGJnKGRldiwgInNlYWxfaXJxICVpXG4iLCBtdGst PnNlYWxfaXJxKTsNCiANCiAJaGNkID0gdXNiX2NyZWF0ZV9oY2QoZHJpdmVyLCBkZXYsIGRldl9u YW1lKGRldikpOw0KIAlpZiAoIWhjZCkgew0KQEAgLTU2Miw2ICs3OTQsMzEgQEAgc3RhdGljIGlu dCB4aGNpX210a19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAlpZiAocmV0 KQ0KIAkJZ290byBkZWFsbG9jX3VzYjJfaGNkOw0KIA0KKwlJTklUX0RFTEFZRURfV09SSygmbXRr LT5zZWFsLCB4aGNpX210a19zZWFsX3dvcmspOw0KKwlzbnByaW50ZihtdGstPnNlYWxfZGVzY3Is IHNpemVvZihtdGstPnNlYWxfZGVzY3IpLCAic2VhbCVzOnVzYiVkIiwNCisJCSBoY2QtPmRyaXZl ci0+ZGVzY3JpcHRpb24sIGhjZC0+c2VsZi5idXNudW0pOw0KKwlyZXQgPSBkZXZtX3JlcXVlc3Rf aXJxKGRldiwgbXRrLT5zZWFsX2lycSwgJnhoY2lfbXRrX3NlYWxfaXJxLA0KKwkJCSAgSVJRRl9U UklHR0VSX0ZBTExJTkcsCW10ay0+c2VhbF9kZXNjciwgbXRrKTsNCisJaWYgKHJldCAhPSAwKSB7 DQorCQlkZXZfZXJyKGRldiwgInNlYWwgcmVxdWVzdCBpbnRlcnJ1cHQgJWQgZmFpbGVkXG4iLA0K KwkJCW10ay0+c2VhbF9pcnEpOw0KKwkJZ290byBkZWFsbG9jX3VzYjJfaGNkOw0KKwl9DQorCXho Y2lfbXRrX3NlYWxfd2FrZXVwX2VuYWJsZShtdGssIGZhbHNlKTsNCisNCisJZGV2aWNlX2VuYWJs ZV9hc3luY19zdXNwZW5kKGRldik7DQorCXhoY2lfbXRrX3J1bnRpbWVfcmVhZHkgPSAxOw0KKw0K KwlyZXQgPSBhZGRfcG93ZXJfYXR0cmlidXRlcyhkZXYpOw0KKwlpZiAocmV0KQ0KKwkJZ290byBk ZWFsbG9jX3VzYjJfaGNkOw0KKw0KKwlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGRldik7DQor CXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGRldik7DQorDQorCWRldl9kYmcoZGV2LCAiJXM6 IHhoY2lfbXRrX3J1bnRpbWVfcmVhZHkgJWkiLA0KKwkJIF9fZnVuY19fLCB4aGNpX210a19ydW50 aW1lX3JlYWR5KTsNCisNCiAJcmV0dXJuIDA7DQogDQogZGVhbGxvY191c2IyX2hjZDoNCkBAIC01 ODQsNyArODQxLDcgQEAgc3RhdGljIGludCB4aGNpX210a19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KIAl4aGNpX210a19sZG9zX2Rpc2FibGUobXRrKTsNCiANCiBkaXNhYmxl X3BtOg0KLQlwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7DQorCXBtX3J1bnRpbWVfcHV0X3N5bmNf YXV0b3N1c3BlbmQoZGV2KTsNCiAJcG1fcnVudGltZV9kaXNhYmxlKGRldik7DQogCXJldHVybiBy ZXQ7DQogfQ0KQEAgLTU5OCw3ICs4NTUsOSBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpDQogDQogCXBtX3J1bnRpbWVfcHV0X25vaWRsZSgm ZGV2LT5kZXYpOw0KIAlwbV9ydW50aW1lX2Rpc2FibGUoJmRldi0+ZGV2KTsNCisJcmVtb3ZlX3Bv d2VyX2F0dHJpYnV0ZXMoJmRldi0+ZGV2KTsNCiANCisJeGhjaV9tdGtfcnVudGltZV9yZWFkeSA9 IDA7DQogCXVzYl9yZW1vdmVfaGNkKHNoYXJlZF9oY2QpOw0KIAl4aGNpLT5zaGFyZWRfaGNkID0g TlVMTDsNCiAJZGV2aWNlX2luaXRfd2FrZXVwKCZkZXYtPmRldiwgZmFsc2UpOw0KQEAgLTYzNSw2 ICs4OTQsNyBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhoY2lfbXRrX3N1c3BlbmQoc3Ry dWN0IGRldmljZSAqZGV2KQ0KIAl4aGNpX210a19ob3N0X2Rpc2FibGUobXRrKTsNCiAJeGhjaV9t dGtfY2xrc19kaXNhYmxlKG10ayk7DQogCXVzYl93YWtldXBfc2V0KG10aywgdHJ1ZSk7DQorDQog CXJldHVybiAwOw0KIH0NCiANCkBAIC02NTYsMTAgKzkxNiwxODUgQEAgc3RhdGljIGludCBfX21h eWJlX3VudXNlZCB4aGNpX210a19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KIAlyZXR1cm4g MDsNCiB9DQogDQorc3RhdGljIGludCBfX21heWJlX3VudXNlZCB4aGNpX210a19idXNfc3RhdHVz KHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0cnVjdCB4aGNpX2hjZF9tdGsgKm10ayA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlzdHJ1Y3QgdXNiX2hjZCAqaGNkOw0KKwlzdHJ1Y3QgeGhj aV9oY2QgKnhoY2k7DQorCXN0cnVjdCB4aGNpX2h1YiAqdXNiMl9yaHViOw0KKwlzdHJ1Y3QgeGhj aV9odWIgKnVzYjNfcmh1YjsNCisJc3RydWN0IHhoY2lfYnVzX3N0YXRlICpidXNfc3RhdGU7DQor CXN0cnVjdCB4aGNpX3BvcnQgKnBvcnQ7DQorCXUzMgl1c2IyX3N1c3BlbmRlZF9wb3J0cyA9IC0x Ow0KKwl1MzIJdXNiM19zdXNwZW5kZWRfcG9ydHMgPSAtMTsNCisJdTE2IHN0YXR1czsNCisJaW50 IG51bV9wb3J0czsNCisJaW50IHJldCA9IDA7DQorCWludCBpOw0KKw0KKwlpZiAoIW10ay0+aGNk KQ0KKwkJcmV0dXJuIC1FU0hVVERPV047DQorDQorCWhjZCA9IG10ay0+aGNkOw0KKwl4aGNpID0g aGNkX3RvX3hoY2koaGNkKTsNCisJaWYgKCh4aGNpLT54aGNfc3RhdGUgJiBYSENJX1NUQVRFX1JF TU9WSU5HKSB8fA0KKwkJCSh4aGNpLT54aGNfc3RhdGUgJiBYSENJX1NUQVRFX0hBTFRFRCkpIHsN CisJCXJldHVybiAtRVNIVVRET1dOOw0KKwl9DQorDQorCXVzYjJfcmh1YiA9ICZ4aGNpLT51c2Iy X3JodWI7DQorCWlmICh1c2IyX3JodWIpIHsNCisJCWJ1c19zdGF0ZSAgPSAmdXNiMl9yaHViLT5i dXNfc3RhdGU7DQorCQludW1fcG9ydHMgID0gdXNiMl9yaHViLT5udW1fcG9ydHM7DQorCQl1c2Iy X3N1c3BlbmRlZF9wb3J0cyAgPSBidXNfc3RhdGUtPnN1c3BlbmRlZF9wb3J0czsNCisJCXVzYjJf c3VzcGVuZGVkX3BvcnRzIF49IChCSVQobnVtX3BvcnRzKSAtIDEpOw0KKwkJdXNiMl9zdXNwZW5k ZWRfcG9ydHMgJj0gKEJJVChudW1fcG9ydHMpIC0gMSk7DQorCQlmb3IgKGkgPSAwOyBpIDwgbnVt X3BvcnRzOyBpKyspIHsNCisJCQlpZiAodXNiMl9zdXNwZW5kZWRfcG9ydHMgJiAoMVVMIDw8IGkp KSB7DQorCQkJCXBvcnQgPSB1c2IyX3JodWItPnBvcnRzW2ldOw0KKwkJCQlzdGF0dXMgPSByZWFk bChwb3J0LT5hZGRyKTsNCisNCisJCQkJeGhjaV9kYmcoeGhjaSwNCisJCQkJCSAgIlVTQjIwOiBw b3J0c2NbJWldOiAweCUwNFhcbiIsDQorCQkJCQkgIGksIHN0YXR1cyk7DQorDQorCQkJCWlmICgh KHN0YXR1cyAmIFBPUlRfQ09OTkVDVCkpDQorCQkJCQl1c2IyX3N1c3BlbmRlZF9wb3J0cyAmPSB+ KDFVTCA8PCBpKTsNCisJCQl9DQorCQl9DQorDQorCQlpZiAodXNiMl9zdXNwZW5kZWRfcG9ydHMp IHsNCisJCQlyZXQgPSAtRUJVU1k7DQorCQkJZ290byBlYnVzeTsNCisJCX0NCisJfQ0KKw0KKwl1 c2IzX3JodWIgPSAmeGhjaS0+dXNiM19yaHViOw0KKwlpZiAodXNiM19yaHViKSB7DQorCQlidXNf c3RhdGUgID0gJnVzYjNfcmh1Yi0+YnVzX3N0YXRlOw0KKwkJbnVtX3BvcnRzICA9IHVzYjNfcmh1 Yi0+bnVtX3BvcnRzOw0KKwkJdXNiM19zdXNwZW5kZWRfcG9ydHMgID0gYnVzX3N0YXRlLT5zdXNw ZW5kZWRfcG9ydHM7DQorCQl1c2IzX3N1c3BlbmRlZF9wb3J0cyBePSAoQklUKG51bV9wb3J0cykg LSAxKTsNCisJCXVzYjNfc3VzcGVuZGVkX3BvcnRzICY9IChCSVQobnVtX3BvcnRzKSAtIDEpOw0K KwkJZm9yIChpID0gMDsgaSA8IG51bV9wb3J0czsgaSsrKSB7DQorCQkJaWYgKHVzYjNfc3VzcGVu ZGVkX3BvcnRzICYgQklUKGkpKSB7DQorCQkJCXBvcnQgPSB1c2IzX3JodWItPnBvcnRzW2ldOw0K KwkJCQlzdGF0dXMgPSByZWFkbChwb3J0LT5hZGRyKTsNCisNCisJCQkJeGhjaV9kYmcoeGhjaSwg IlVTQjM6IHBvcnRzY1slaV06IDB4JTA0WFxuIiwNCisJCQkJCSAgaSwgc3RhdHVzKTsNCisNCisJ CQkJaWYgKCEoc3RhdHVzICYgUE9SVF9DT05ORUNUKSkNCisJCQkJCXVzYjNfc3VzcGVuZGVkX3Bv cnRzICY9IH5CSVQoaSk7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJaWYgKHVzYjNfc3VzcGVuZGVkX3Bv cnRzKSB7DQorCQkJcmV0ID0gLUVCVVNZOw0KKwkJCWdvdG8gZWJ1c3k7DQorCQl9DQorCX0NCisN CitlYnVzeToNCisJeGhjaV9kYmcoeGhjaSwgIiVzOiBVU0IyOiAweCUwOFgsIFVTQjM6IDB4JTA4 WCByZXQ6ICVpXG4iLA0KKwkJICBfX2Z1bmNfXywgdXNiMl9zdXNwZW5kZWRfcG9ydHMsDQorCQkg IHVzYjNfc3VzcGVuZGVkX3BvcnRzLCByZXQpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitz dGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhoY2lfbXRrX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQorew0KKwlib29sIHdha2V1cCA9IGRldmljZV9tYXlfd2FrZXVwKGRldik7 DQorCXN0cnVjdCB4aGNpX2hjZF9tdGsgICptdGsgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJ c3RydWN0IHVzYl9oY2QgKmhjZDsNCisJc3RydWN0IHhoY2lfaGNkICp4aGNpOw0KKwlpbnQgcmV0 ID0gMDsNCisNCisJaWYgKCFtdGstPmhjZCkNCisJCXJldHVybiAtRVNIVVRET1dOOw0KKw0KKwlo Y2QgPSBtdGstPmhjZDsNCisJeGhjaSA9IGhjZF90b194aGNpKGhjZCk7DQorCWlmICgoeGhjaS0+ eGhjX3N0YXRlICYgWEhDSV9TVEFURV9SRU1PVklORykgfHwNCisJCQkoeGhjaS0+eGhjX3N0YXRl ICYgWEhDSV9TVEFURV9IQUxURUQpKSB7DQorCQlyZXR1cm4gLUVTSFVURE9XTjsNCisJfQ0KKw0K KwltdGstPnNlYWxfc3RhdHVzID0gU0VBTF9CVVNZOw0KKwlyZXQgPSB4aGNpX210a19idXNfc3Rh dHVzKGRldik7DQorCWlmICh3YWtldXAgJiYgIXJldCkgew0KKwkJbXRrLT5zZWFsX3N0YXR1cyA9 IFNFQUxfU1VTUEVORElORzsNCisJCXhoY2lfbXRrX3N1c3BlbmQoZGV2KTsNCisJCXhoY2lfbXRr X3NlYWxfd2FrZXVwX2VuYWJsZShtdGssIHRydWUpOw0KKwkJbXRrLT5zZWFsX3N0YXR1cyA9IFNF QUxfU1VTUEVOREVEOw0KKwkJeGhjaV9kYmcoeGhjaSwgIiVzOiBzZWFscyB4SENJIGNvbnRyb2xs ZXJcbiIsIF9fZnVuY19fKTsNCisJfQ0KKw0KKwl4aGNpX2RiZyh4aGNpLCAiJXM6IHNlYWxzIHdh a2V1cCA9ICVpLCByZXQgPSAlaSFcbiIsDQorCQkgIF9fZnVuY19fLCB3YWtldXAsIHJldCk7DQor DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeGhjaV9t dGtfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJYm9vbCB3YWtldXAg PSBkZXZpY2VfbWF5X3dha2V1cChkZXYpOw0KKwlzdHJ1Y3QgeGhjaV9oY2RfbXRrICAqbXRrID0g ZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVjdCB1c2JfaGNkICpoY2Q7DQorCXN0cnVjdCB4 aGNpX2hjZCAqeGhjaTsNCisNCisJaWYgKCFtdGstPmhjZCkNCisJCXJldHVybiAtRVNIVVRET1dO Ow0KKw0KKwloY2QgPSBtdGstPmhjZDsNCisJeGhjaSA9IGhjZF90b194aGNpKGhjZCk7DQorCWlm ICgoeGhjaS0+eGhjX3N0YXRlICYgWEhDSV9TVEFURV9SRU1PVklORykgfHwNCisJCQkoeGhjaS0+ eGhjX3N0YXRlICYgWEhDSV9TVEFURV9IQUxURUQpKSB7DQorCQlyZXR1cm4gLUVTSFVURE9XTjsN CisJfQ0KKw0KKwkvKg0KKwkgKiAgbGlzdCBjYXNlcyBieSBvbmUgZXh0cmEgaW50ZXJydXB0IG5h bWVkIHNlYWwgdG8gcHJvY2VzcyEhIQ0KKwkgKiAgV2hvIHRvIHByb2Nlc3MgdGhlc2UgbW9kdWxl IHJlaW5pdGlsaXphdGlvbiBhZnRlciBTUE0gd2FrZXVwDQorCSAqICBjYXNlIDE6IHVzYiByZW1v dGUgd2FrZXVwLCB0aGVyZWZvcmUgeEhDSSBuZWVkIHJlaW5pdGlsaXphdGUgYWxzby4NCisJICog IGNhc2UgMjogb3RoZXItd2FrZXVwLXNvdXJjZSB3YWtldXAsIHRoZXJlZm9yZSwgeEhDSSBuZWVk IHJlaW5pdA0KKwkgKiAgY2FzZSAzOiB1c2IgY2xpZW50IGRyaXZlciBjYW4gaW52b2tlIGl0IGlu IHJ1bnRpbWUgbWVjaGFuaXNtDQorCSAqICBjYXNlIDQ6IHVzZXIgYWN0aXZlDQorCSAqLw0KKwlp ZiAod2FrZXVwKSB7DQorCQl4aGNpX210a19zZWFsX3dha2V1cF9lbmFibGUobXRrLCBmYWxzZSk7 DQorCQl4aGNpX210a19yZXN1bWUoZGV2KTsNCisJCXhoY2lfZGJnKHhoY2ksICIlczogdW5zZWFs cyB4SENJIGNvbnRyb2xsZXJcbiIsIF9fZnVuY19fKTsNCisJfQ0KKwltdGstPnNlYWxfc3RhdHVz ID0gU0VBTF9SRVNVTUVEOw0KKw0KKwl4aGNpX2RiZyh4aGNpLCAiJXM6IHVuc2VhbHMgd2FrZXVw ID0gJWlcbiIsIF9fZnVuY19fLCB3YWtldXApOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBfX21heWJlX3VudXNlZCB4aGNpX210a19ydW50aW1lX2lkbGUoc3RydWN0IGRldmlj ZSAqZGV2KQ0KK3sNCisJaW50IHJldCA9IDA7DQorDQorCWRldl9kYmcoZGV2LCAiJXM6IHhoY2lf bXRrX3J1bnRpbWVfcmVhZHkgJWkiLA0KKwkJIF9fZnVuY19fLCB4aGNpX210a19ydW50aW1lX3Jl YWR5KTsNCisNCisJaWYgKCF4aGNpX210a19ydW50aW1lX3JlYWR5KQ0KKwkJcmV0ID0gLUVBR0FJ TjsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQogc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1f b3BzIHhoY2lfbXRrX3BtX29wcyA9IHsNCiAJU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoeGhjaV9t dGtfc3VzcGVuZCwgeGhjaV9tdGtfcmVzdW1lKQ0KKwlTRVRfUlVOVElNRV9QTV9PUFMoeGhjaV9t dGtfcnVudGltZV9zdXNwZW5kLA0KKwkJCSAgIHhoY2lfbXRrX3J1bnRpbWVfcmVzdW1lLA0KKwkJ CSAgIHhoY2lfbXRrX3J1bnRpbWVfaWRsZSkNCiB9Ow0KLSNkZWZpbmUgREVWX1BNX09QUyBJU19F TkFCTEVEKENPTkZJR19QTSkgPyAmeGhjaV9tdGtfcG1fb3BzIDogTlVMTA0KKw0KKyNkZWZpbmUg REVWX1BNX09QUyAoSVNfRU5BQkxFRChDT05GSUdfUE0pID8gJnhoY2lfbXRrX3BtX29wcyA6IE5V TEwpDQogDQogI2lmZGVmIENPTkZJR19PRg0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIG10a194aGNpX29mX21hdGNoW10gPSB7DQpAQCAtNjgzLDYgKzExMTgsNyBAQCBzdGF0aWMg aW50IF9fbWF5YmVfdW51c2VkIHhoY2lfbXRrX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQog DQogc3RhdGljIGludCBfX2luaXQgeGhjaV9tdGtfaW5pdCh2b2lkKQ0KIHsNCisJeGhjaV9tdGtf cnVudGltZV9yZWFkeSA9IDA7DQogCXhoY2lfaW5pdF9kcml2ZXIoJnhoY2lfbXRrX2hjX2RyaXZl ciwgJnhoY2lfbXRrX292ZXJyaWRlcyk7DQogCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0 ZXIoJm10a194aGNpX2RyaXZlcik7DQogfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qv eGhjaS1tdGsuaCBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tdGsuaA0Kb2xkIG1vZGUgMTAwNjQ0 DQpuZXcgbW9kZSAxMDA3NTUNCmluZGV4IDMyM2IyODEuLjEwM2Q4M2MNCi0tLSBhL2RyaXZlcnMv dXNiL2hvc3QveGhjaS1tdGsuaA0KKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLW10ay5oDQpA QCAtMTMzLDYgKzEzMywxNCBAQCBzdHJ1Y3QgbXUzY19pcHBjX3JlZ3Mgew0KIAlfX2xlMzIgcmVz ZXJ2ZWQzWzMzXTsgLyogMHg4MCB+IDB4ZmYgKi8NCiB9Ow0KIA0KK2VudW0geGhjaV9tdGtfc2Vh bCB7DQorCVNFQUxfQlVTWSA9IDAsDQorCVNFQUxfU1VTUEVORElORywNCisJU0VBTF9TVVNQRU5E RUQsDQorCVNFQUxfUkVTVU1JTkcsDQorCVNFQUxfUkVTVU1FRA0KK307DQorDQogc3RydWN0IHho Y2lfaGNkX210ayB7DQogCXN0cnVjdCBkZXZpY2UgKmRldjsNCiAJc3RydWN0IHVzYl9oY2QgKmhj ZDsNCkBAIC0xNTgsNiArMTY2LDEyIEBAIHN0cnVjdCB4aGNpX2hjZF9tdGsgew0KIAlzdHJ1Y3Qg cmVnbWFwICp1d2s7DQogCXUzMiB1d2tfcmVnX2Jhc2U7DQogCXUzMiB1d2tfdmVyczsNCisNCisJ LyogdXNiIGVpbnQgd2FrZXVwIHNvdXJjZSAqLw0KKwlpbnQgc2VhbF9pcnE7DQorCWVudW0geGhj aV9tdGtfc2VhbCBzZWFsX3N0YXR1czsNCisJc3RydWN0IGRlbGF5ZWRfd29yayAgc2VhbDsNCisJ Y2hhciAgIHNlYWxfZGVzY3JbMzJdOwkvKiAic2VhbCIgKyBkcml2ZXIgKyBidXMgIyAqLw0KIH07 DQogDQogc3RhdGljIGlubGluZSBzdHJ1Y3QgeGhjaV9oY2RfbXRrICpoY2RfdG9fbXRrKHN0cnVj dCB1c2JfaGNkICpoY2QpDQotLSANCjEuOS4xDQo=