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=-10.7 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,NICE_REPLY_A,RCVD_ILLEGAL_IP,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 CBC46C433E1 for ; Sat, 22 Aug 2020 13:24:22 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6001E207DF for ; Sat, 22 Aug 2020 13:24:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="1BgutVbm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6001E207DF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BFAC16E069; Sat, 22 Aug 2020 13:24:21 +0000 (UTC) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-eopbgr770070.outbound.protection.outlook.com [40.107.77.70]) by gabe.freedesktop.org (Postfix) with ESMTPS id 424D46E069 for ; Sat, 22 Aug 2020 13:24:20 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WTUMVBXzrdeOHeH2uN49ridRcyxTT+BKaV4BL0i9IB5IoOoEHX4DRGm9+PQHXjF0MthfX3dglt1yaA4TcOMbBsn3tAPoJXVsKKMreI2g2ZyxHSPjmzMpgYFEG7HDwx7EAV3TVJ9WmnT7qCR/3dyecdpCZlc2JMv40UXEQemXz4dGLqU/es7aNd22Xiqngb6c6xQdL0u4HFIyeY8SjAv4FxM8aQ4ufHbF/jd3ZzcXtQ9dXP17ZCrr5yXzkU5G4XGpHvP1DV4QY6zFogyVzc/HVVv2UoLuYeW9vSkYLqFc4iODADW4WFsuov5uIQCSr3tyPVJkIOr/Z4FJ/WCmt/nhhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iAyDVs+IrATfS37tx7w8+gMW90wvFA+w8/+Uquqq8Fc=; b=m/CLggAOAPPmRJMB551gWSIA/U0BN/m+1ts8CXnSLnfwMz6+nNd6SFEiNggtODDLjQ5jD2ynv2DMYAT7khj0Cal18MhRvLd/sca+jnaMFsnyK2gX1Y1gcihzQ0hWkSZ2HoiENd3keyQyH1cBBlVUE9yPpgneCgSimOsqpIk+FxwmFwvMP0ptM1pSt4VdjTCFUajoawnRfJe2cHFx3nPSYkApPIK2euj2lbZHSVu32rO7tfJ6W5LJZ37LqPCdtdy8jwNSpm6awKmDAr7v6RWpCZspjxEEtmma85wKOT4KuC+wyF/F6Pn/LdSXVsRwJ5GAjUk7/o8I3W5BoF+/ZORN/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iAyDVs+IrATfS37tx7w8+gMW90wvFA+w8/+Uquqq8Fc=; b=1BgutVbmELcqp1uEb8ijIZT+phEAY7qfLxovSs/GA1nL7UZl3FJV4DOVy8MwJkkO83skzQ5olPtSoZ1gDVlxaIdFEQIiHookA4Sh6Z9zj1M3qREw+YmKgFFVlfjoHHGXeu+3cDzCKhqQ7rft7VL91SwBqYabkvuOYedu6+w/HQM= Authentication-Results: lists.freedesktop.org; dkim=none (message not signed) header.d=none; lists.freedesktop.org; dmarc=none action=none header.from=amd.com; Received: from SN1PR12MB2414.namprd12.prod.outlook.com (2603:10b6:802:2e::31) by SN6PR12MB2829.namprd12.prod.outlook.com (2603:10b6:805:e8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.26; Sat, 22 Aug 2020 13:24:13 +0000 Received: from SN1PR12MB2414.namprd12.prod.outlook.com ([fe80::d548:1236:cb4f:1be9]) by SN1PR12MB2414.namprd12.prod.outlook.com ([fe80::d548:1236:cb4f:1be9%7]) with mapi id 15.20.3305.026; Sat, 22 Aug 2020 13:24:13 +0000 Subject: Re: [PATCH v5] drm/amdkfd: implement the dGPU fallback path for apu (v5) To: Huang Rui References: <20200821125037.361341-1-ray.huang@amd.com> <7f293d34-d358-74c8-3e64-118740b814fb@amd.com> <20200822014222.GA338112@hr-amd> From: Felix Kuehling Message-ID: Date: Sat, 22 Aug 2020 09:24:11 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: <20200822014222.GA338112@hr-amd> Content-Language: en-US X-ClientProxiedBy: YTXPR0101CA0024.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00::37) To SN1PR12MB2414.namprd12.prod.outlook.com (2603:10b6:802:2e::31) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from 255.255.255.255 (255.255.255.255) by YTXPR0101CA0024.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.24 via Frontend Transport; Sat, 22 Aug 2020 13:24:12 +0000 X-Originating-IP: [142.116.113.11] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ed26e4fa-8269-4293-d05f-08d8469ea91c X-MS-TrafficTypeDiagnostic: SN6PR12MB2829: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3044; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kHfoIAkfv4OuxceTa1zYb68BsFcULxH4/hnnU0DsQNo4+dkd2fgnKHxTSU40pFPZi43RgVC0Kl4mYNoS1RQW0FxESlJCPuRx4i0uqkzZ7yF6blyY2118vPS+i/JHnEteTjdP94CpdjC/hHdtNWPoeDoiGEbD5zIf8J0jD5W5krLnf38HXW8T+7KaIMKbcP7Lkj7gRNheQLgMtusz14tQC3HIZTjD/wL5Xiy4TrnjiPB+223mxYJzovsypNZavXraBclgM79POTUp/xZChmiH0EiIekbpAsNfgh5WvUvYVoKT8oYu/9t6QqzBi89SgA75fChooZuwIWckg5BWUnEPlRM160aBMPrAlkN67nHcmAN+FrVuXJVP2erbACJ3JKDb X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN1PR12MB2414.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(346002)(39860400002)(396003)(136003)(366004)(956004)(6636002)(2616005)(2906002)(478600001)(6486002)(44832011)(30864003)(8676002)(5660300002)(31686004)(66946007)(8936002)(86362001)(31696002)(186003)(52116002)(16576012)(37006003)(83380400001)(26005)(6862004)(66476007)(66556008)(4326008)(316002)(36756003)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: ismmsx2zCtKyT9AD6fs9JiXEBcikb0xDr502TXIHpbQdmTveIFcZEj8PCRITOfOYDyOmn+viCy2fk5vey7UH6dVNL/QVFg5q7n6bJlwqyJezqg+iq0Wy7LlMz5IJXs0UzVwYENu5St/PfVJfVgkCgYq8SF92Opgnbx9Ar14zZLt5NseAgsS4LcLhN4DlGLfK6pAMQ5wmTfdBuvWxeiwy38johvv66B621E4eZQ76sKR2ZHoIN6wMosJGFeKZDnZbs992FuLpZYzhDYFJ7dXLZ/fqRRfMofLk1sf2LrOKPu3t4YEDB/GXZnwup3MDAtDst3B6pwm8n04iTELQ3MVyUPgFPlSGjOFxze1N0FfRzvg6gAAHtgaLGxEcvIq1TjFmi0AM5WNSph3s/cKbgssEwsO3mNx4S+PJsgk5TpsshlWwwLAVXTe0xkQgQHd0cAK4NwR5dzrr9nggb9+0KJlnbuWpmZ9z7javQTcMFvNv103WIILo+/v6go6PgDGt6x9RBYCZHoJV4mVLirqCl4tc/T7aaodGPB3hk5veWPYzJBB8flzdCHG+XeuzBG4oB8yhAnOpRe0RAVYQ9N5FfycfYoP0ofEqqf2fgKwRayOE/JyEVwOwcCieFLuAk4zZHAdLG/kDCWJBhc1seiDh4tUDdw== X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed26e4fa-8269-4293-d05f-08d8469ea91c X-MS-Exchange-CrossTenant-AuthSource: SN1PR12MB2414.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2020 13:24:13.2278 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TdJSsQCoPQrqZjvNTbeA7MypLkNvsFcVXOnApV8eJe5Mv+B13FcBO58cvg9+irWS2aIB2gpEGcdh31ng1aq4LA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2829 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "amd-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" CkFtIDIwMjAtMDgtMjEgdW0gOTo0MiBwLm0uIHNjaHJpZWIgSHVhbmcgUnVpOgo+IE9uIFNhdCwg QXVnIDIyLCAyMDIwIGF0IDEyOjQ4OjAwQU0gKzA4MDAsIEt1ZWhsaW5nLCBGZWxpeCB3cm90ZToK Pj4gQW0gMjAyMC0wOC0yMSB1bSA4OjUwIGEubS4gc2NocmllYiBIdWFuZyBSdWk6Cj4+PiBXZSBz dGlsbCBoYXZlIGEgZmV3IGlvbW11IGlzc3VlcyB3aGljaCBuZWVkIHRvIGFkZHJlc3MsIHNvIGZv cmNlIHJhdmVuCj4+PiBhcyAiZGdwdSIgcGF0aCBmb3IgdGhlIG1vbWVudC4KPj4+Cj4+PiBUaGlz IGlzIHRvIGFkZCB0aGUgZmFsbGJhY2sgcGF0aCB0byBieXBhc3MgSU9NTVUgaWYgSU9NTVUgdjIg aXMgZGlzYWJsZWQKPj4+IG9yIEFDUEkgQ1JBVCB0YWJsZSBub3QgY29ycmVjdC4KPj4+Cj4+PiB2 MjogVXNlIGlnbm9yZV9jcmF0IHBhcmFtZXRlciB0byBkZWNpZGUgd2hldGhlciBpdCB3aWxsIGdv IHdpdGggSU9NTVV2Mi4KPj4+IHYzOiBBbGlnbiB3aXRoIGV4aXN0ZWQgdGh1bmssIGRvbid0IGNo YW5nZSB0aGUgd2F5IG9mIHJhdmVuLCBvbmx5IHJlbm9pcgo+Pj4gICAgIHdpbGwgdXNlICJkZ3B1 IiBwYXRoIGJ5IGRlZmF1bHQuCj4+PiB2NDogZG9uJ3QgdXBkYXRlIGdsb2JhbCBpZ25vcmVfY3Jh dCBpbiB0aGUgZHJpdmVyLCBhbmQgcmV2aXNlIGZhbGxiYWNrCj4+PiAgICAgZnVuY3Rpb24gaWYg Q1JBVCBpcyBicm9rZW4uCj4+PiB2NTogcmVmaW5lIGFjcGkgY3JhdCBnb29kIGJ1dCBubyBpb21t dSBzdXBwb3J0IGNhc2UsIGFuZCByZW5hbWUgdGhlCj4+PiAgICAgdGl0bGUuCj4+Pgo+Pj4gU2ln bmVkLW9mZi1ieTogSHVhbmcgUnVpIDxyYXkuaHVhbmdAYW1kLmNvbT4KPj4+IC0tLQo+Pj4gIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyAgICAgICB8ICA1ICsrLQo+Pj4g IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmMgICAgICB8ICAyICstCj4+ PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NyYXQuYyAgICAgICAgIHwgMjIgKysr KysrKysrKy0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RiZ2Rldi5jICAg ICAgIHwgIDQgKy0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZS5j ICAgICAgIHwgIDUgKystCj4+PiAgLi4uL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5h Z2VyX3Y5LmMgIHwgIDIgKy0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZmxh dF9tZW1vcnkuYyAgfCAgNCArLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf aW9tbXUuYyAgICAgICAgfCAxMCArKystLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfcHJpdi5oICAgICAgICAgfCAgNSArKy0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfdG9wb2xvZ3kuYyAgICAgfCAzNiArKysrKysrKysrKysrKysrKy0tCj4+PiAgMTAg ZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4+Pgo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4gaW5kZXggYTlhNDMxOWMy NGFlLi4xODlmOWQ3ZTE5MGQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZHJ2LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kcnYuYwo+Pj4gQEAgLTY4NCwxMSArNjg0LDE0IEBAIE1PRFVMRV9QQVJNX0RFU0MoZGVi dWdfbGFyZ2ViYXIsCj4+PiAgICogSWdub3JlIENSQVQgdGFibGUgZHVyaW5nIEtGRCBpbml0aWFs aXphdGlvbi4gQnkgZGVmYXVsdCwgS0ZEIHVzZXMgdGhlIEFDUEkgQ1JBVAo+Pj4gICAqIHRhYmxl IHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBBTUQgQVBVcy4gVGhpcyBvcHRpb24gY2FuIHNlcnZl IGFzIGEgd29ya2Fyb3VuZCBvbgo+Pj4gICAqIHN5c3RlbXMgd2l0aCBhIGJyb2tlbiBDUkFUIHRh YmxlLgo+Pj4gKyAqCj4+PiArICogRGVmYXVsdCBpcyBhdXRvIChhY2NvcmRpbmcgdG8gYXNpYyB0 eXBlLCBpb21tdV92MiwgYW5kIGNyYXQgdGFibGUsIHRvIGRlY2lkZQo+Pj4gKyAqIHdoZWh0ZXIg dXNlIENSQVQpCj4+PiAgICovCj4+PiAgaW50IGlnbm9yZV9jcmF0Owo+Pj4gIG1vZHVsZV9wYXJh bShpZ25vcmVfY3JhdCwgaW50LCAwNDQ0KTsKPj4+ICBNT0RVTEVfUEFSTV9ERVNDKGlnbm9yZV9j cmF0LAo+Pj4gLQkiSWdub3JlIENSQVQgdGFibGUgZHVyaW5nIEtGRCBpbml0aWFsaXphdGlvbiAo MCA9IHVzZSBDUkFUIChkZWZhdWx0KSwgMSA9IGlnbm9yZSBDUkFUKSIpOwo+Pj4gKwkiSWdub3Jl IENSQVQgdGFibGUgZHVyaW5nIEtGRCBpbml0aWFsaXphdGlvbiAoMCA9IGF1dG8gKGRlZmF1bHQp LCAxID0gaWdub3JlIENSQVQpIik7Cj4+PiAgCj4+PiAgLyoqCj4+PiAgICogRE9DOiBoYWx0X2lm X2h3c19oYW5nIChpbnQpCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2NoYXJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2 LmMKPj4+IGluZGV4IDFiNjBlMGVkNmI1Yy4uM2VjNTMyMmJhODhkIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYwo+Pj4gQEAgLTEyNTgsNyArMTI1OCw3 IEBAIGJvb2wga2ZkX2Rldl9pc19sYXJnZV9iYXIoc3RydWN0IGtmZF9kZXYgKmRldikKPj4+ICAJ CXJldHVybiB0cnVlOwo+Pj4gIAl9Cj4+PiAgCj4+PiAtCWlmIChkZXYtPmRldmljZV9pbmZvLT5u ZWVkc19pb21tdV9kZXZpY2UpCj4+PiArCWlmIChkZXYtPnVzZV9pb21tdV92MikKPj4+ICAJCXJl dHVybiBmYWxzZTsKPj4+ICAKPj4+ICAJYW1kZ3B1X2FtZGtmZF9nZXRfbG9jYWxfbWVtX2luZm8o ZGV2LT5rZ2QsICZtZW1faW5mbyk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX2NyYXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jcmF0 LmMKPj4+IGluZGV4IDU5NTU3ZTNlMjA2YS4uYWJhNDBkZjE4OWQ5IDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NyYXQuYwo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NyYXQuYwo+Pj4gQEAgLTc0MCw2ICs3NDAsMjUgQEAgc3Rh dGljIGludCBrZmRfZmlsbF9ncHVfY2FjaGVfaW5mbyhzdHJ1Y3Qga2ZkX2RldiAqa2RldiwKPj4+ ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gKwo+Pj4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ Pj4gKwo+Pj4gK3N0YXRpYyBib29sIGtmZF9pZ25vcmVfY3JhdCh2b2lkKQo+Pj4gK3sKPj4+ICsJ Ym9vbCByZXQ7Cj4+PiArCj4+PiArCWlmIChpZ25vcmVfY3JhdCkKPj4+ICsJCXJldHVybiB0cnVl Owo+Pj4gKwo+Pj4gKyNpZm5kZWYgS0ZEX1NVUFBPUlRfSU9NTVVfVjIKPj4+ICsJcmV0ID0gdHJ1 ZTsKPj4+ICsjZWxzZQo+Pj4gKwlyZXQgPSBmYWxzZTsKPj4+ICsjZW5kaWYKPj4+ICsKPj4+ICsJ cmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiAgLyoKPj4+ICAgKiBrZmRfY3JlYXRlX2NyYXRf aW1hZ2VfYWNwaSAtIEFsbG9jYXRlcyBtZW1vcnkgZm9yIENSQVQgaW1hZ2UgYW5kCj4+PiAgICog Y29waWVzIENSQVQgZnJvbSBBQ1BJIChpZiBhdmFpbGFibGUpLgo+Pj4gQEAgLTc1MSw3ICs3NzAs NiBAQCBzdGF0aWMgaW50IGtmZF9maWxsX2dwdV9jYWNoZV9pbmZvKHN0cnVjdCBrZmRfZGV2ICpr ZGV2LAo+Pj4gICAqCj4+PiAgICoJUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCBlbHNlIHJldHVybiBl cnJvciBjb2RlCj4+PiAgICovCj4+PiAtI2lmZGVmIENPTkZJR19BQ1BJCj4+PiAgaW50IGtmZF9j cmVhdGVfY3JhdF9pbWFnZV9hY3BpKHZvaWQgKipjcmF0X2ltYWdlLCBzaXplX3QgKnNpemUpCj4+ PiAgewo+Pj4gIAlzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKmNyYXRfdGFibGU7Cj4+PiBAQCAt Nzc1LDcgKzc5Myw3IEBAIGludCBrZmRfY3JlYXRlX2NyYXRfaW1hZ2VfYWNwaSh2b2lkICoqY3Jh dF9pbWFnZSwgc2l6ZV90ICpzaXplKQo+Pj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4+PiAgCX0KPj4+ ICAKPj4+IC0JaWYgKGlnbm9yZV9jcmF0KSB7Cj4+PiArCWlmIChrZmRfaWdub3JlX2NyYXQoKSkg ewo+Pj4gIAkJcHJfaW5mbygiQ1JBVCB0YWJsZSBkaXNhYmxlZCBieSBtb2R1bGUgb3B0aW9uXG4i KTsKPj4+ICAJCXJldHVybiAtRU5PREFUQTsKPj4+ICAJfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kYmdkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9kYmdkZXYuYwo+Pj4gaW5kZXggM2U1OTA0Zjg4NzZhLi5lNDE1OWI1ZjgzZDUg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGJnZGV2LmMK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kYmdkZXYuYwo+Pj4gQEAg LTMwOSw3ICszMDksNyBAQCBzdGF0aWMgaW50IGRiZ2Rldl9hZGRyZXNzX3dhdGNoX25vZGlxKHN0 cnVjdCBrZmRfZGJnZGV2ICpkYmdkZXYsCj4+PiAgCWZvciAoaSA9IDA7IGkgPCBhZHdfaW5mby0+ bnVtX3dhdGNoX3BvaW50czsgaSsrKSB7Cj4+PiAgCQlkYmdkZXZfYWRkcmVzc193YXRjaF9zZXRf cmVnaXN0ZXJzKGFkd19pbmZvLCAmYWRkckhpLCAmYWRkckxvLAo+Pj4gIAkJCQkmY250bCwgaSwg cGRkLT5xcGQudm1pZCwKPj4+IC0JCQkJZGJnZGV2LT5kZXYtPmRldmljZV9pbmZvLT5uZWVkc19p b21tdV9kZXZpY2UpOwo+Pj4gKwkJCQlkYmdkZXYtPmRldi0+dXNlX2lvbW11X3YyKTsKPj4+ICAK Pj4+ICAJCXByX2RlYnVnKCJcdFx0JTMwc1xuIiwgIiogKiAqICogKiAqICogKiAqICogKiAqICog KiAqICogKiAqIik7Cj4+PiAgCQlwcl9kZWJ1ZygiXHRcdCUyMHMgJTA4eFxuIiwgInJlZ2lzdGVy IGluZGV4IDoiLCBpKTsKPj4+IEBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIGludCBkYmdkZXZf YWRkcmVzc193YXRjaF9kaXEoc3RydWN0IGtmZF9kYmdkZXYgKmRiZ2RldiwKPj4+ICAJZm9yIChp ID0gMDsgaSA8IGFkd19pbmZvLT5udW1fd2F0Y2hfcG9pbnRzOyBpKyspIHsKPj4+ICAJCWRiZ2Rl dl9hZGRyZXNzX3dhdGNoX3NldF9yZWdpc3RlcnMoYWR3X2luZm8sICZhZGRySGksICZhZGRyTG8s Cj4+PiAgCQkJCSZjbnRsLCBpLCB2bWlkLAo+Pj4gLQkJCQlkYmdkZXYtPmRldi0+ZGV2aWNlX2lu Zm8tPm5lZWRzX2lvbW11X2RldmljZSk7Cj4+PiArCQkJCWRiZ2Rldi0+ZGV2LT51c2VfaW9tbXVf djIpOwo+Pj4gIAo+Pj4gIAkJcHJfZGVidWcoIlx0XHQlMzBzXG4iLCAiKiAqICogKiAqICogKiAq ICogKiAqICogKiAqICogKiAqICoiKTsKPj4+ICAJCXByX2RlYnVnKCJcdFx0JTIwcyAlMDh4XG4i LCAicmVnaXN0ZXIgaW5kZXggOiIsIGkpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9kZXZpY2UuYwo+Pj4gaW5kZXggMmMwMzBjMmI1YjhkLi5mZGY2NGQzNjFiZTMgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlLmMKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2UuYwo+Pj4gQEAgLTExMiw2ICsx MTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtmZF9kZXZpY2VfaW5mbyBjYXJyaXpvX2Rldmlj ZV9pbmZvID0gewo+Pj4gIAkubnVtX3hnbWlfc2RtYV9lbmdpbmVzID0gMCwKPj4+ICAJLm51bV9z ZG1hX3F1ZXVlc19wZXJfZW5naW5lID0gMiwKPj4+ICB9Owo+Pj4gKyNlbmRpZgo+Pj4gIAo+Pj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2ZkX2RldmljZV9pbmZvIHJhdmVuX2RldmljZV9pbmZvID0g ewo+Pj4gIAkuYXNpY19mYW1pbHkgPSBDSElQX1JBVkVOLAo+Pj4gQEAgLTEzMCw3ICsxMzEsNiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGtmZF9kZXZpY2VfaW5mbyByYXZlbl9kZXZpY2VfaW5mbyA9 IHsKPj4+ICAJLm51bV94Z21pX3NkbWFfZW5naW5lcyA9IDAsCj4+PiAgCS5udW1fc2RtYV9xdWV1 ZXNfcGVyX2VuZ2luZSA9IDIsCj4+PiAgfTsKPj4+IC0jZW5kaWYKPj4+ICAKPj4+ICBzdGF0aWMg Y29uc3Qgc3RydWN0IGtmZF9kZXZpY2VfaW5mbyBoYXdhaWlfZGV2aWNlX2luZm8gPSB7Cj4+PiAg CS5hc2ljX2ZhbWlseSA9IENISVBfSEFXQUlJLAo+Pj4gQEAgLTY4OCw2ICs2ODgsOSBAQCBib29s IGtnZDJrZmRfZGV2aWNlX2luaXQoc3RydWN0IGtmZF9kZXYgKmtmZCwKPj4+ICAJCWdvdG8gZ3dz X2Vycm9yOwo+Pj4gIAl9Cj4+PiAgCj4+PiArCS8qIElmIENSQVQgaXMgYnJva2VuLCB3b24ndCBz ZXQgaW9tbXUgZW5hYmxlZCAqLwo+Pj4gKwlrZmRfZG91YmxlX2NvbmZpcm1faW9tbXVfc3VwcG9y dChrZmQpOwo+Pj4gKwo+Pj4gIAlpZiAoa2ZkX2lvbW11X2RldmljZV9pbml0KGtmZCkpIHsKPj4+ ICAJCWRldl9lcnIoa2ZkX2RldmljZSwgIkVycm9yIGluaXRpYWxpemluZyBpb21tdXYyXG4iKTsK Pj4+ICAJCWdvdG8gZGV2aWNlX2lvbW11X2Vycm9yOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl92OS5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyX3Y5LmMKPj4+IGlu ZGV4IDk1YTgyYWM0NTVmMi4uMzA5ZjYzYTBiMzRhIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyX3Y5LmMKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlcl92OS5j Cj4+PiBAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9xcGRfdjkoc3RydWN0IGRl dmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sCj4+PiAgCQkJCVNIX01FTV9BTElHTk1FTlRfTU9ERV9V TkFMSUdORUQgPDwKPj4+ICAJCQkJCVNIX01FTV9DT05GSUdfX0FMSUdOTUVOVF9NT0RFX19TSElG VDsKPj4+ICAJCWlmIChhbWRncHVfbm9yZXRyeSAmJgo+Pj4gLQkJICAgICFkcW0tPmRldi0+ZGV2 aWNlX2luZm8tPm5lZWRzX2lvbW11X2RldmljZSkKPj4+ICsJCSAgICAhZHFtLT5kZXYtPnVzZV9p b21tdV92MikKPj4+ICAJCQlxcGQtPnNoX21lbV9jb25maWcgfD0KPj4+ICAJCQkJMSA8PCBTSF9N RU1fQ09ORklHX19SRVRSWV9ESVNBQkxFX19TSElGVDsKPj4+ICAKPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZmxhdF9tZW1vcnkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9mbGF0X21lbW9yeS5jCj4+PiBpbmRleCA3ODcxNGY5YThiMTEu Ljc5ODMwM2MzYzdhYyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L2tmZF9mbGF0X21lbW9yeS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfZmxhdF9tZW1vcnkuYwo+Pj4gQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0aWMgdm9pZCBrZmRf aW5pdF9hcGVydHVyZXNfdmkoc3RydWN0IGtmZF9wcm9jZXNzX2RldmljZSAqcGRkLCB1aW50OF90 IGlkKQo+Pj4gIAlwZGQtPmxkc19iYXNlID0gTUFLRV9MRFNfQVBQX0JBU0VfVkkoKTsKPj4+ICAJ cGRkLT5sZHNfbGltaXQgPSBNQUtFX0xEU19BUFBfTElNSVQocGRkLT5sZHNfYmFzZSk7Cj4+PiAg Cj4+PiAtCWlmICghcGRkLT5kZXYtPmRldmljZV9pbmZvLT5uZWVkc19pb21tdV9kZXZpY2UpIHsK Pj4+ICsJaWYgKCFwZGQtPmRldi0+dXNlX2lvbW11X3YyKSB7Cj4+PiAgCQkvKiBkR1BVczogU1ZN IGFwZXJ0dXJlIHN0YXJ0aW5nIGF0IDAKPj4+ICAJCSAqIHdpdGggc21hbGwgcmVzZXJ2ZWQgc3Bh Y2UgZm9yIGtlcm5lbC4KPj4+ICAJCSAqIFNldCB0aGVtIHRvIENBTk9OSUNBTCBhZGRyZXNzZXMu Cj4+PiBAQCAtNDIzLDcgKzQyMyw3IEBAIGludCBrZmRfaW5pdF9hcGVydHVyZXMoc3RydWN0IGtm ZF9wcm9jZXNzICpwcm9jZXNzKQo+Pj4gIAkJCQlyZXR1cm4gLUVJTlZBTDsKPj4+ICAJCQl9Cj4+ PiAgCj4+PiAtCQkJaWYgKCFkZXYtPmRldmljZV9pbmZvLT5uZWVkc19pb21tdV9kZXZpY2UpIHsK Pj4+ICsJCQlpZiAoIWRldi0+dXNlX2lvbW11X3YyKSB7Cj4+PiAgCQkJCS8qIGRHUFVzOiB0aGUg cmVzZXJ2ZWQgc3BhY2UgZm9yIGtlcm5lbAo+Pj4gIAkJCQkgKiBiZWZvcmUgU1ZNCj4+PiAgCQkJ CSAqLwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9pb21t dS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2lvbW11LmMKPj4+IGluZGV4IDRk M2I0MTg4YjlhMS4uMGMwMjY5NDk3ZTUxIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX2lvbW11LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9pb21tdS5jCj4+PiBAQCAtNDEsNyArNDEsNyBAQCBpbnQga2ZkX2lvbW11X2NoZWNr X2RldmljZShzdHJ1Y3Qga2ZkX2RldiAqa2ZkKQo+Pj4gIAlzdHJ1Y3QgYW1kX2lvbW11X2Rldmlj ZV9pbmZvIGlvbW11X2luZm87Cj4+PiAgCWludCBlcnI7Cj4+PiAgCj4+PiAtCWlmICgha2ZkLT5k ZXZpY2VfaW5mby0+bmVlZHNfaW9tbXVfZGV2aWNlKQo+Pj4gKwlpZiAoIWtmZC0+dXNlX2lvbW11 X3YyKQo+Pj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4+PiAgCj4+PiAgCWlvbW11X2luZm8uZmxhZ3Mg PSAwOwo+Pj4gQEAgLTYzLDcgKzYzLDcgQEAgaW50IGtmZF9pb21tdV9kZXZpY2VfaW5pdChzdHJ1 Y3Qga2ZkX2RldiAqa2ZkKQo+Pj4gIAl1bnNpZ25lZCBpbnQgcGFzaWRfbGltaXQ7Cj4+PiAgCWlu dCBlcnI7Cj4+PiAgCj4+PiAtCWlmICgha2ZkLT5kZXZpY2VfaW5mby0+bmVlZHNfaW9tbXVfZGV2 aWNlKQo+Pj4gKwlpZiAoIWtmZC0+dXNlX2lvbW11X3YyKQo+Pj4gIAkJcmV0dXJuIDA7Cj4+PiAg Cj4+PiAgCWlvbW11X2luZm8uZmxhZ3MgPSAwOwo+Pj4gQEAgLTEwOSw3ICsxMDksNyBAQCBpbnQg a2ZkX2lvbW11X2JpbmRfcHJvY2Vzc190b19kZXZpY2Uoc3RydWN0IGtmZF9wcm9jZXNzX2Rldmlj ZSAqcGRkKQo+Pj4gIAlzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAgPSBwZGQtPnByb2Nlc3M7Cj4+PiAg CWludCBlcnI7Cj4+PiAgCj4+PiAtCWlmICghZGV2LT5kZXZpY2VfaW5mby0+bmVlZHNfaW9tbXVf ZGV2aWNlIHx8IHBkZC0+Ym91bmQgPT0gUEREX0JPVU5EKQo+Pj4gKwlpZiAoIWRldi0+dXNlX2lv bW11X3YyIHx8IHBkZC0+Ym91bmQgPT0gUEREX0JPVU5EKQo+Pj4gIAkJcmV0dXJuIDA7Cj4+PiAg Cj4+PiAgCWlmICh1bmxpa2VseShwZGQtPmJvdW5kID09IFBERF9CT1VORF9TVVNQRU5ERUQpKSB7 Cj4+PiBAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyB2b2lkIGtmZF91bmJpbmRfcHJvY2Vzc2Vz X2Zyb21fZGV2aWNlKHN0cnVjdCBrZmRfZGV2ICprZmQpCj4+PiAgICovCj4+PiAgdm9pZCBrZmRf aW9tbXVfc3VzcGVuZChzdHJ1Y3Qga2ZkX2RldiAqa2ZkKQo+Pj4gIHsKPj4+IC0JaWYgKCFrZmQt PmRldmljZV9pbmZvLT5uZWVkc19pb21tdV9kZXZpY2UpCj4+PiArCWlmICgha2ZkLT51c2VfaW9t bXVfdjIpCj4+PiAgCQlyZXR1cm47Cj4+PiAgCj4+PiAgCWtmZF91bmJpbmRfcHJvY2Vzc2VzX2Zy b21fZGV2aWNlKGtmZCk7Cj4+PiBAQCAtMzA0LDcgKzMwNCw3IEBAIGludCBrZmRfaW9tbXVfcmVz dW1lKHN0cnVjdCBrZmRfZGV2ICprZmQpCj4+PiAgCXVuc2lnbmVkIGludCBwYXNpZF9saW1pdDsK Pj4+ICAJaW50IGVycjsKPj4+ICAKPj4+IC0JaWYgKCFrZmQtPmRldmljZV9pbmZvLT5uZWVkc19p b21tdV9kZXZpY2UpCj4+PiArCWlmICgha2ZkLT51c2VfaW9tbXVfdjIpCj4+PiAgCQlyZXR1cm4g MDsKPj4+ICAKPj4+ICAJcGFzaWRfbGltaXQgPSBrZmRfZ2V0X3Bhc2lkX2xpbWl0KCk7Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKPj4+IGluZGV4IDYwMjQzNzk4Y2NlMi4u NjQxYjk2NDM4N2VjIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX3ByaXYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYu aAo+Pj4gQEAgLTMwOCwxMiArMzA4LDE0IEBAIHN0cnVjdCBrZmRfZGV2IHsKPj4+ICAKPj4+ICAJ LyogeEdNSSAqLwo+Pj4gIAl1aW50NjRfdCBoaXZlX2lkOwo+Pj4gLSAgICAKPj4+ICAJLyogVVVJ RCAqLwo+Pj4gIAl1aW50NjRfdCB1bmlxdWVfaWQ7Cj4+PiAgCj4+PiAgCWJvb2wgcGNpX2F0b21p Y19yZXF1ZXN0ZWQ7Cj4+PiAgCj4+PiArCS8qIFVzZSBJT01NVSB2MiBmbGFnICovCj4+PiArCWJv b2wgdXNlX2lvbW11X3YyOwo+Pj4gKwo+Pj4gIAkvKiBTUkFNIEVDQyBmbGFnICovCj4+PiAgCWF0 b21pY190IHNyYW1fZWNjX2ZsYWc7Cj4+PiAgCj4+PiBAQCAtMTAwOSw2ICsxMDExLDcgQEAgc3Ry dWN0IGtmZF9kZXYgKmtmZF9kZXZpY2VfYnlfcGNpX2Rldihjb25zdCBzdHJ1Y3QgcGNpX2RldiAq cGRldik7Cj4+PiAgc3RydWN0IGtmZF9kZXYgKmtmZF9kZXZpY2VfYnlfa2dkKGNvbnN0IHN0cnVj dCBrZ2RfZGV2ICprZ2QpOwo+Pj4gIGludCBrZmRfdG9wb2xvZ3lfZW51bV9rZmRfZGV2aWNlcyh1 aW50OF90IGlkeCwgc3RydWN0IGtmZF9kZXYgKiprZGV2KTsKPj4+ICBpbnQga2ZkX251bWFfbm9k ZV90b19hcGljX2lkKGludCBudW1hX25vZGVfaWQpOwo+Pj4gK3ZvaWQga2ZkX2RvdWJsZV9jb25m aXJtX2lvbW11X3N1cHBvcnQoc3RydWN0IGtmZF9kZXYgKmdwdSk7Cj4+PiAgCj4+PiAgLyogSW50 ZXJydXB0cyAqLwo+Pj4gIGludCBrZmRfaW50ZXJydXB0X2luaXQoc3RydWN0IGtmZF9kZXYgKmRl dik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3RvcG9s b2d5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYwo+Pj4gaW5k ZXggY2JiODUzNWFiZjBjLi5kMTQxZjcyNmQwMzcgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX3RvcG9sb2d5LmMKPj4+IEBAIC01NDUsNyArNTQ1LDcgQEAgc3RhdGlj IHNzaXplX3Qgbm9kZV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyLAo+Pj4gIAkJICogSWYgdGhlIEFTSUMgaXMgQVBVIGV4Y2VwdCBLYXZlcmksIHNldCBs b2NhbCBtZW1vcnkgc2l6ZQo+Pj4gIAkJICogdG8gMCB0byBkaXNhYmxlIGxvY2FsIG1lbW9yeSBz dXBwb3J0Cj4+PiAgCQkgKi8KPj4+IC0JCWlmICghZGV2LT5ncHUtPmRldmljZV9pbmZvLT5uZWVk c19pb21tdV9kZXZpY2UKPj4+ICsJCWlmICghZGV2LT5ncHUtPnVzZV9pb21tdV92Mgo+Pj4gIAkJ CXx8IGRldi0+Z3B1LT5kZXZpY2VfaW5mby0+YXNpY19mYW1pbHkgPT0gQ0hJUF9LQVZFUkkpIHsK Pj4+ICAJCQlhbWRncHVfYW1ka2ZkX2dldF9sb2NhbF9tZW1faW5mbyhkZXYtPmdwdS0+a2dkLAo+ Pj4gIAkJCQkmbG9jYWxfbWVtX2luZm8pOwo+Pj4gQEAgLTExOTcsNyArMTE5Nyw3IEBAIHN0YXRp YyBzdHJ1Y3Qga2ZkX3RvcG9sb2d5X2RldmljZSAqa2ZkX2Fzc2lnbl9ncHUoc3RydWN0IGtmZF9k ZXYgKmdwdSkKPj4+ICAJCS8qIERpc2NyZXRlIEdQVXMgbmVlZCB0aGVpciBvd24gdG9wb2xvZ3kg ZGV2aWNlIGxpc3QKPj4+ICAJCSAqIGVudHJpZXMuIERvbid0IGFzc2lnbiB0aGVtIHRvIENQVS9B UFUgbm9kZXMuCj4+PiAgCQkgKi8KPj4+IC0JCWlmICghZ3B1LT5kZXZpY2VfaW5mby0+bmVlZHNf aW9tbXVfZGV2aWNlICYmCj4+PiArCQlpZiAoIWdwdS0+dXNlX2lvbW11X3YyICYmCj4+PiAgCQkg ICAgZGV2LT5ub2RlX3Byb3BzLmNwdV9jb3Jlc19jb3VudCkKPj4+ICAJCQljb250aW51ZTsKPj4+ ICAKPj4+IEBAIC0xNDUyLDcgKzE0NTIsNyBAQCBpbnQga2ZkX3RvcG9sb2d5X2FkZF9kZXZpY2Uo c3RydWN0IGtmZF9kZXYgKmdwdSkKPj4+ICAJKiBPdmVyd3JpdGUgQVRTIGNhcGFiaWxpdHkgYWNj b3JkaW5nIHRvIG5lZWRzX2lvbW11X2RldmljZSB0byBmaXgKPj4+ICAJKiBwb3RlbnRpYWwgbWlz c2luZyBjb3JyZXNwb25kaW5nIGJpdCBpbiBDUkFUIG9mIEJJT1MuCj4+PiAgCSovCj4+PiAtCWlm IChkZXYtPmdwdS0+ZGV2aWNlX2luZm8tPm5lZWRzX2lvbW11X2RldmljZSkKPj4+ICsJaWYgKGRl di0+Z3B1LT51c2VfaW9tbXVfdjIpCj4+PiAgCQlkZXYtPm5vZGVfcHJvcHMuY2FwYWJpbGl0eSB8 PSBIU0FfQ0FQX0FUU19QUkVTRU5UOwo+Pj4gIAllbHNlCj4+PiAgCQlkZXYtPm5vZGVfcHJvcHMu Y2FwYWJpbGl0eSAmPSB+SFNBX0NBUF9BVFNfUFJFU0VOVDsKPj4+IEBAIC0xNTc5LDYgKzE1Nzks MzYgQEAgaW50IGtmZF9udW1hX25vZGVfdG9fYXBpY19pZChpbnQgbnVtYV9ub2RlX2lkKQo+Pj4g IAlyZXR1cm4ga2ZkX2NwdW1hc2tfdG9fYXBpY19pZChjcHVtYXNrX29mX25vZGUobnVtYV9ub2Rl X2lkKSk7Cj4+PiAgfQo+Pj4gIAo+Pj4gK3ZvaWQga2ZkX2RvdWJsZV9jb25maXJtX2lvbW11X3N1 cHBvcnQoc3RydWN0IGtmZF9kZXYgKmdwdSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBrZmRfdG9wb2xv Z3lfZGV2aWNlICpkZXY7Cj4+PiArCj4+PiArCWdwdS0+dXNlX2lvbW11X3YyID0gZmFsc2U7Cj4+ PiArCj4+PiArCWRvd25fcmVhZCgmdG9wb2xvZ3lfbG9jayk7Cj4+PiArCj4+PiArCS8qIE9ubHkg dXNlIElPTU1VdjIgaWYgdGhlcmUgaXMgYW4gQVBVIHRvcG9sb2d5IG5vZGUgd2l0aCBubyBHUFUK Pj4+ICsJICogYXNzaWduZWQgeWV0LiBUaGlzIEdQVSB3aWxsIGJlIGFzc2lnbmVkIHRvIGl0Lgo+ Pj4gKwkgKi8KPj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXYsICZ0b3BvbG9neV9kZXZpY2Vf bGlzdCwgbGlzdCkgewo+Pj4gKwkJaWYgKGRldi0+bm9kZV9wcm9wcy5jcHVfY29yZXNfY291bnQg JiYKPj4+ICsJCSAgICBkZXYtPm5vZGVfcHJvcHMuc2ltZF9jb3VudCAmJgo+Pj4gKwkJICAgICFk ZXYtPmdwdSkgewo+Pj4gKwkJCS8qIElmIGRldmljZV9pbmZvIGluZGljYXRlcyBubyBpb21tdSBz dXBwb3J0LCBmb3JjZQo+Pj4gKwkJCSAqIHNpbWRfY291bnQgYXMgMCB0byB0ZWxsIHVzZXIgbW9k ZSBubyBHUFUgaW4gdGhlIEFQVQo+Pj4gKwkJCSAqIG5vZGUuCj4+PiArCQkJICovCj4+PiArCQkJ aWYgKCFncHUtPmRldmljZV9pbmZvLT5uZWVkc19pb21tdV9kZXZpY2UpCj4+PiArCQkJCWRldi0+ bm9kZV9wcm9wcy5zaW1kX2NvdW50ID0gMDsKPj4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIEFQVSdz IGJ1aWx0LWluIEdQVSBpcyB0aGUgZmlyc3QgdG8gYmUgaW5pdGlhbGl6ZWQuCj4+IElmIHRoZXJl IGlzIGEgZEdQVSBhbmQgdGhhdCBnZXRzIGluaXRpYWxpemVkIGZpcnN0LCB5b3Ugd2lsbCBzZXQK Pj4gZGV2LT5ub2RlX3Byb3BzLnNpbWRfY291bnQgPSAwIGhlcmUsIHdoaWNoIHdpbGwgZm9yY2Ug dGhlIEFQVSB0byBydW4gaW4KPj4gZEdQVSBtb2RlLgo+Pgo+PiBNYXliZSB0aGF0J3MgaW50ZW50 aW9uYWwsIGJ1dCBpdCBzZWVtcyB3ZWlyZCB0aGF0IHRoaXMgZGVwZW5kcyBvbiB0aGUKPj4gb3Jk ZXIgaW4gd2hpY2ggR1BVcyBhcmUgaW5pdGlhbGl6ZWQuIFRoYXQgb3JkZXIgbWF5IG5vdCBiZSBz dGFibGUKPj4gYmV0d2VlbiByZWJvb3RzLCBzbyByZWx5aW5nIG9uIHRoYXQgY2FuIGxlYWQgdG8g dW5leHBlY3RlZCBiZWhhdmlvdXIgYW5kCj4+IGNvbmZ1c2luZyBidWcgcmVwb3J0cy4KPj4KPiBU aGlzIGlzIHRvIGZpeCB0aGUgY2FzZSBpZiBBQ1BJIENSQVQgaXMgZ29vZCBvbiBSZW5vaXIuIElm IEFDUEkgQ1JBVCBnb29kCj4gYnkgZGVmYXVsdCBvbiBSZW5vaXIsIHdlIHdpbGwgaW5pdGlhbGl6 ZSB0aGUgQVBVIG5vZGUgYXQgdGhhdCB0aW1lLiBJZiBpdAo+IGNoZWNrZWQgbmVlZHNfaW9tbXVf ZGV2aWNlIGhlcmUsIHRoZW4gd2UgY2FuIHJlcG9ydCB0aGUgc2ltZF9jb3VudCBhcyAwIHRvCj4g dXNlciBtb2RlIHRvIHRyZWF0IHRoaXMgbm9kZSBhcyBwdXJlIENQVS4gVGhpcyBpcyBpbiBzcGly ZWQgYnkgYmVsb3cKPiBjb21tZW50czoKPgo+Pj4gSSdkIHN1Z2dlc3QgdHJ5aW5nIGEgbW9yZSBn ZW5lcmFsIHNvbHV0aW9uIGluIG5vZGVfc2hvdyBpbgo+Pj4ga2ZkX3RvcG9sb2d5LmMuIElmIHdl IHNlZSBhbiBBUFUgbm9kZSAodGhhdCBoYXMgQ1BVIGFuZCBHUFUgY29yZXMpIHdpdGgKPj4+IG5v IGFzc29jaWF0ZWQgR1BVIChkZXYtPmdwdV9pZCBpcyAwIG9yIGRldi0+Z3B1IGlzIE5VTEwpLCB3 ZSBjYW4gcmVwb3J0Cj4+PiBpdCBhcyBhIHB1cmUgQ1BVIG5vZGUgdG8gdXNlciBtb2RlIGJ5IGp1 c3QgcmVwb3J0aW5nIHRoZSBzaW1kX2NvdW50IGFzIDAuCgpUaGUgYmVzdCBwbGFjZSB0byBkbyB0 aGF0IHdpdGhvdXQgZGVwZW5kaW5nIG9uIHRoZSBvcmRlciBpbiB3aGljaCBHUFVzCmFyZSBpbml0 aWFsaXplZCBpcyBpbiBub2RlX3Nob3c6CgogICAgICAgICAgICBzeXNmc19zaG93XzMyYml0X3By b3AoYnVmZmVyLCBvZmZzLCAic2ltZF9jb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXYtPmdwdSA/IGRldi0+bm9kZV9wcm9wcy5zaW1kX2NvdW50IDogMCk7CgpSZWdh cmRzLArCoCBGZWxpeAoKCj4gVGhhbmtzLAo+IFJheQo+Cj4+IFJlZ2FyZHMsCj4+IMKgIEZlbGl4 Cj4+Cj4+Cj4+PiArCQkJZWxzZQo+Pj4gKwkJCQlncHUtPnVzZV9pb21tdV92MiA9IHRydWU7Cj4+ PiArCQkJYnJlYWs7Cj4+PiArCQl9Cj4+PiArCX0KPj4+ICsKPj4+ICsJdXBfcmVhZCgmdG9wb2xv Z3lfbG9jayk7Cj4+PiArfQo+Pj4gKwo+Pj4gICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykK Pj4+ICAKPj4+ICBpbnQga2ZkX2RlYnVnZnNfaHFkc19ieV9kZXZpY2Uoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK