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=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,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 5F6DFC433DF for ; Wed, 24 Jun 2020 16:56:10 +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 1413A20738 for ; Wed, 24 Jun 2020 16:56:09 +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="d2aW4vwS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1413A20738 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 BA6726E0B9; Wed, 24 Jun 2020 16:56:09 +0000 (UTC) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-eopbgr750082.outbound.protection.outlook.com [40.107.75.82]) by gabe.freedesktop.org (Postfix) with ESMTPS id 19F356E0B9 for ; Wed, 24 Jun 2020 16:56:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GaJiW6KXuDK/ojy3yDAIVo5V7tL3kYodZpt/XVnsEwMxBd8u64fWjSlosVsdArFA8/gSyE0ysi/GMlRBraFu7CYu2VAzJW4H17kL2hIsTA6n07xDqp93XxBzsBeXU1NX+p+/zPD49U0aJEx4KaB/hn+igAiHJVr/eKOxUdu35tHeyiiHq8TROh4dqykNMXoCWTkkYfLnQtKDnEf2Nx5eRHy2Xl/oHV0VfsxARQLW1l09aAk84qPTFFhell+wSSRMxcNs00pwGJL7Cbi2rHrP/HlDirK/lHUOV+cevMB1Mw7t9e/7xSKEUdANVmDMt4KsEiXWCI0iYEKMpDeaURT6Ug== 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=uqZVNLIMV2WtV1L9vwPEiQm7H5jdV/04u7p4YhC/QFI=; b=OxwFq7gUUHuYbCteisd67CS+/Pn40HiXuiqif2j5Y05M64/ctx4ceBz3EMfXv9LDApuMcrqgPeTmGJi3Fkl3UFUGr//QtrsiJRHS//QMz5y2T0TtxIWQ76b/yk5qZSMyRWno7F8xklXpdOVGrwOeVZFtT3wPL6hz2WUQX7M4zYDMlob6h0cfifj7LdWSTvtpNCGyfPmD4l+TyeiV7Kx1rkYc+1F6jYM45k2kA2kc6AalByYJQb5cwADBLhVUde7lHhfYiAn83uHIQlB1g8rd/969UFvKa4GzEPY2Nl1TDCjFET8mRhpVsRq1UE8GxILyZV1IuMyFgZdmAycrED12lg== 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=uqZVNLIMV2WtV1L9vwPEiQm7H5jdV/04u7p4YhC/QFI=; b=d2aW4vwSNMoitru0yteMTbsxcEqP9/Td7mwCKLP0Wu9Hv6SVo5YMxJecDfG8clsqkJRp0lo+1g7fN4o7MIVuKgk9BpfaWAyC9LvhiErHclWwNf9z0azvsY2b0iyOb3wj0Xtrui7ABdJf5uSC9yoe5sQvNc2DdOXOsP51JZa86yI= 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 SA0PR12MB4432.namprd12.prod.outlook.com (2603:10b6:806:98::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Wed, 24 Jun 2020 16:56:07 +0000 Received: from SN1PR12MB2414.namprd12.prod.outlook.com ([fe80::18d:97b:661f:9314]) by SN1PR12MB2414.namprd12.prod.outlook.com ([fe80::18d:97b:661f:9314%7]) with mapi id 15.20.3109.021; Wed, 24 Jun 2020 16:56:07 +0000 Subject: Re: [PATCH v2] drm/amdkfd: Fix circular locking dependency warning To: Mukul Joshi , amd-gfx@lists.freedesktop.org References: <20200624160631.19668-1-mukul.joshi@amd.com> From: Felix Kuehling Message-ID: Date: Wed, 24 Jun 2020 12:56:05 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 In-Reply-To: <20200624160631.19668-1-mukul.joshi@amd.com> Content-Language: en-US X-ClientProxiedBy: YTOPR0101CA0033.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::46) To SN1PR12MB2414.namprd12.prod.outlook.com (2603:10b6:802:2e::31) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.2.100] (142.116.63.128) by YTOPR0101CA0033.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.20 via Frontend Transport; Wed, 24 Jun 2020 16:56:06 +0000 X-Originating-IP: [142.116.63.128] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2f254a1f-4f9d-4c7e-5ffb-08d8185f7d01 X-MS-TrafficTypeDiagnostic: SA0PR12MB4432: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:119; X-Forefront-PRVS: 0444EB1997 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SXU5E78DZbrCJ3KggSLSqRUCrzl4M3OZZBxjOR0p64hEfo4NDi0hFtf5/AMXXfORTTVFqZNvBhirTUWUGDWm342JQNiTY84TxdVrNtI9TBnkeuvKxoYnJdQ+ZBJprmmKalp/6sLkC6wIuC2PxQ0AErMz4ha5sX0GMgP4Ny45ST81p7nOC0nZgr+K3bgh0O0NhaH1O44WqPzvy3yVGYKhmg25aWQg34Bt0oYLPHaO98vidiCnWqxcwel+Hx5EWK84ntXfAJsUf2aAkWdRLie/lD1xQNQaF16U6eDXW4KUM4jsaOZzGOJe3iuKSdwVFL3luHu/AqRqxLjCtp1hUJXwVTMQBuovclcELecNht0d9NUUgy//Wdo4NSk5pmuczcUC 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; SFTY:; SFS:(4636009)(396003)(136003)(39860400002)(366004)(376002)(346002)(956004)(2616005)(31696002)(30864003)(186003)(86362001)(44832011)(16526019)(26005)(66946007)(83380400001)(5660300002)(66476007)(31686004)(66556008)(2906002)(16576012)(478600001)(52116002)(316002)(36756003)(6486002)(8676002)(8936002)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: bLh4xS6fc+ZUtJuS26UxCY1xOEq64Bc9aBBdh/rQW6Hzjb8FjU14EN+r9g46q1/ODx/89invuRBN+jk3zaRMfLQIDIdZQDozQQqIVqxN4eElHsKcidv0lLmwWcjcoeyPK3gKfv68w7SrL5AhicpIePPnuIm9OiDgvJ6hs3gUFEz8tNFgNtVQ6rlJriiFXKCkA2M8iHq298nRdrAeUO3qj/EIb+6c03z0AH9vke15yBF7zxEijNaTTgesFCgk5mHXFWT2cskjtnYFOd98mtOwRGlEc4B5yG/bToxRymhcdbcUXWUbohV6NNe/dL2f2OMOI+9kHBp55w6J9XjGHhKeZ7Ie48o/WV85FswjStf/KtBS4aSxEQsI9vR+KuKADP4al6yDumDJ4YHs++89uIniH8MG6N67lYhOb/NYzM66WsPikt8n+WYDTesVhoNLHldUnVhQIB8Z76kVTQ3wi0H72HB8eOfd6qIa/z9s0MSdvZv7gjk0zVntcE3J5axKfWTn X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f254a1f-4f9d-4c7e-5ffb-08d8185f7d01 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2020 16:56:07.2995 (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: +2wKLPDeVy7L5RNKBEW+ptEOdWE+x/z7vS1SrXlasuovQQ5/DiG3VbN6lxdoygnItqts0UXHm6Mlz6m0hmQVuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4432 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" CkFtIDIwMjAtMDYtMjQgdW0gMTI6MDYgcC5tLiBzY2hyaWViIE11a3VsIEpvc2hpOgo+IExvY2tk ZXAgaXMgc3Bld2luZyBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVuY3kgd2FybmluZyB3aGVuCj4g cmVhZGluZyBTRE1BIHVzYWdlIHN0YXRzLgo+Cj4gICAxNTAuODg3NzMzXSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiBbICAxNTAuODkzOTAz XSBXQVJOSU5HOiBwb3NzaWJsZSBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVuY3kgZGV0ZWN0ZWQK PiBbICAxNTAuOTA1OTE3XSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiBbICAxNTAuOTEyMTI5XSBrZmR0ZXN0LzQwODEgaXMgdHJ5aW5nIHRv IGFjcXVpcmUgbG9jazoKPiBbICAxNTAuOTE3MDAyXSBmZmZmOGY3ZjM3NjJlMTE4ICgmbW0tPm1t YXBfc2VtIzIpeysrKyt9LCBhdDoKPiAJCV9fbWlnaHRfZmF1bHQrMHgzZS8weDkwCj4gWyAgMTUw LjkyNDQ5MF0KPiAgICAgICAgICAgICAgICBidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRpbmcgbG9j azoKPiBbICAxNTAuOTMwMzIwXSBmZmZmOGY3ZjQ5ZDIyOWU4ICgmZHFtLT5sb2NrX2hpZGRlbil7 Ky4rLn0sIGF0Ogo+IAkJZGVzdHJveV9xdWV1ZV9jcHNjaCsweDI5LzB4MjEwIFthbWRncHVdCj4g WyAgMTUwLjkzOTQzMl0KPiAgICAgICAgICAgICAgICB3aGljaCBsb2NrIGFscmVhZHkgZGVwZW5k cyBvbiB0aGUgbmV3IGxvY2suCj4gWyAgMTUwLjk0NzYwM10KPiAgICAgICAgICAgICAgICB0aGUg ZXhpc3RpbmcgZGVwZW5kZW5jeSBjaGFpbiAoaW4gcmV2ZXJzZSBvcmRlcikgaXM6Cj4gWyAgMTUw Ljk1NTA3NF0KPiAgICAgICAgICAgICAgICAtPiAjMyAoJmRxbS0+bG9ja19oaWRkZW4peysuKy59 Ogo+IFsgIDE1MC45NjA4MjJdICAgICAgICBfX211dGV4X2xvY2srMHhhMS8weDlmMAo+IFsgIDE1 MC45NjQ5OTZdICAgICAgICBldmljdF9wcm9jZXNzX3F1ZXVlc19jcHNjaCsweDIyLzB4MTIwIFth bWRncHVdCj4gWyAgMTUwLjk3MTE1NV0gICAgICAgIGtmZF9wcm9jZXNzX2V2aWN0X3F1ZXVlcysw eDNiLzB4YzAgW2FtZGdwdV0KPiBbICAxNTAuOTc3MDU0XSAgICAgICAga2dkMmtmZF9xdWllc2Nl X21tKzB4MjUvMHg2MCBbYW1kZ3B1XQo+IFsgIDE1MC45ODI0NDJdICAgICAgICBhbWRncHVfYW1k a2ZkX2V2aWN0X3VzZXJwdHIrMHgzNS8weDcwIFthbWRncHVdCj4gWyAgMTUwLjk4ODYxNV0gICAg ICAgIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2hzYSsweDQxLzB4NjAgW2FtZGdwdV0KPiBbICAxNTAu OTk0NDQ4XSAgICAgICAgX19tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCsweGE0 LzB4MjQwCj4gWyAgMTUxLjAwMDcxNF0gICAgICAgIGNvcHlfcGFnZV9yYW5nZSsweGQ3MC8weGQ4 MAo+IFsgIDE1MS4wMDUxNTldICAgICAgICBkdXBfbW0rMHgzY2EvMHg1NTAKPiBbICAxNTEuMDA4 ODE2XSAgICAgICAgY29weV9wcm9jZXNzKzB4MWJkYy8weDFjNzAKPiBbICAxNTEuMDEzMTgzXSAg ICAgICAgX2RvX2ZvcmsrMHg3Ni8weDZjMAo+IFsgIDE1MS4wMTY5MjldICAgICAgICBfX3g2NF9z eXNfY2xvbmUrMHg4Yy8weGIwCj4gWyAgMTUxLjAyMTIwMV0gICAgICAgIGRvX3N5c2NhbGxfNjQr MHg0YS8weDFkMAo+IFsgIDE1MS4wMjU0MDRdICAgICAgICBlbnRyeV9TWVNDQUxMXzY0X2FmdGVy X2h3ZnJhbWUrMHg0OS8weGJlCj4gWyAgMTUxLjAzMDk3N10KPiAgICAgICAgICAgICAgICAtPiAj MiAoJmFkZXYtPm5vdGlmaWVyX2xvY2speysuKy59Ogo+IFsgIDE1MS4wMzY5OTNdICAgICAgICBf X211dGV4X2xvY2srMHhhMS8weDlmMAo+IFsgIDE1MS4wNDExNjhdICAgICAgICBhbWRncHVfbW5f aW52YWxpZGF0ZV9oc2ErMHgzMC8weDYwIFthbWRncHVdCj4gWyAgMTUxLjA0NzAxOV0gICAgICAg IF9fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQrMHhhNC8weDI0MAo+IFsgIDE1 MS4wNTMyNzddICAgICAgICBjb3B5X3BhZ2VfcmFuZ2UrMHhkNzAvMHhkODAKPiBbICAxNTEuMDU3 NzIyXSAgICAgICAgZHVwX21tKzB4M2NhLzB4NTUwCj4gWyAgMTUxLjA2MTM4OF0gICAgICAgIGNv cHlfcHJvY2VzcysweDFiZGMvMHgxYzcwCj4gWyAgMTUxLjA2NTc0OF0gICAgICAgIF9kb19mb3Jr KzB4NzYvMHg2YzAKPiBbICAxNTEuMDY5NDk5XSAgICAgICAgX194NjRfc3lzX2Nsb25lKzB4OGMv MHhiMAo+IFsgIDE1MS4wNzM3NjVdICAgICAgICBkb19zeXNjYWxsXzY0KzB4NGEvMHgxZDAKPiBb ICAxNTEuMDc3OTUyXSAgICAgICAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NDkv MHhiZQo+IFsgIDE1MS4wODM1MjNdCj4gICAgICAgICAgICAgICAgLT4gIzEgKG1tdV9ub3RpZmll cl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KXsrLisufToKPiBbICAxNTEuMDkwODMzXSAgICAgICAg Y2hhbmdlX3Byb3RlY3Rpb24rMHg4MDIvMHhhYjAKPiBbICAxNTEuMDk1NDQ4XSAgICAgICAgbXBy b3RlY3RfZml4dXArMHgxODcvMHgyZDAKPiBbICAxNTEuMDk5ODAxXSAgICAgICAgc2V0dXBfYXJn X3BhZ2VzKzB4MTI0LzB4MjUwCj4gWyAgMTUxLjEwNDI1MV0gICAgICAgIGxvYWRfZWxmX2JpbmFy eSsweDNhNC8weDE0NjQKPiBbICAxNTEuMTA4NzgxXSAgICAgICAgc2VhcmNoX2JpbmFyeV9oYW5k bGVyKzB4NmMvMHgyMTAKPiBbICAxNTEuMTEzNjU2XSAgICAgICAgX19kb19leGVjdmVfZmlsZS5p c3JhLjQwKzB4N2Y3LzB4YTUwCj4gWyAgMTUxLjExODg3NV0gICAgICAgIGRvX2V4ZWN2ZSsweDIx LzB4MzAKPiBbICAxNTEuMTIyNjMyXSAgICAgICAgY2FsbF91c2VybW9kZWhlbHBlcl9leGVjX2Fz eW5jKzB4MTdlLzB4MTkwCj4gWyAgMTUxLjEyODM5M10gICAgICAgIHJldF9mcm9tX2ZvcmsrMHgy NC8weDMwCj4gWyAgMTUxLjEzMjQ4OV0KPiAgICAgICAgICAgICAgICAtPiAjMCAoJm1tLT5tbWFw X3NlbSMyKXsrKysrfToKPiBbICAxNTEuMTM4MDY0XSAgICAgICAgX19sb2NrX2FjcXVpcmUrMHgx MWExLzB4MTQ5MAo+IFsgIDE1MS4xNDI1OTddICAgICAgICBsb2NrX2FjcXVpcmUrMHg5MC8weDE4 MAo+IFsgIDE1MS4xNDY2OTRdICAgICAgICBfX21pZ2h0X2ZhdWx0KzB4NjgvMHg5MAo+IFsgIDE1 MS4xNTA4NzldICAgICAgICByZWFkX3NkbWFfcXVldWVfY291bnRlcisweDVmLzB4YjAgW2FtZGdw dV0KPiBbICAxNTEuMTU2NjkzXSAgICAgICAgdXBkYXRlX3NkbWFfcXVldWVfcGFzdF9hY3Rpdml0 eV9zdGF0cysweDNiLzB4OTAgW2FtZGdwdV0KPiBbICAxNTEuMTYzNzI1XSAgICAgICAgZGVzdHJv eV9xdWV1ZV9jcHNjaCsweDFhZS8weDIxMCBbYW1kZ3B1XQo+IFsgIDE1MS4xNjkzNzNdICAgICAg ICBwcW1fZGVzdHJveV9xdWV1ZSsweGYwLzB4MjUwIFthbWRncHVdCj4gWyAgMTUxLjE3NDc2Ml0g ICAgICAgIGtmZF9pb2N0bF9kZXN0cm95X3F1ZXVlKzB4MzIvMHg3MCBbYW1kZ3B1XQo+IFsgIDE1 MS4xODA1NzddICAgICAgICBrZmRfaW9jdGwrMHgyMjMvMHg0MDAgW2FtZGdwdV0KPiBbICAxNTEu MTg1Mjg0XSAgICAgICAga3N5c19pb2N0bCsweDhmLzB4YjAKPiBbICAxNTEuMTg5MTE4XSAgICAg ICAgX194NjRfc3lzX2lvY3RsKzB4MTYvMHgyMAo+IFsgIDE1MS4xOTMzODldICAgICAgICBkb19z eXNjYWxsXzY0KzB4NGEvMHgxZDAKPiBbICAxNTEuMTk3NTY5XSAgICAgICAgZW50cnlfU1lTQ0FM TF82NF9hZnRlcl9od2ZyYW1lKzB4NDkvMHhiZQo+IFsgIDE1MS4yMDMxNDFdCj4gICAgICAgICAg ICAgICAgb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoKPgo+IFsgIDE1 MS4yMTExNDBdIENoYWluIGV4aXN0cyBvZjoKPiAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9z ZW0jMiAtLT4gJmFkZXYtPm5vdGlmaWVyX2xvY2sgLS0+ICZkcW0tPmxvY2tfaGlkZGVuCj4KPiAg IDE1MS4yMjI1MzVdICBQb3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKPgo+IFsgIDE1 MS4yMjg0NDddICAgICAgICBDUFUwICAgICAgICAgICAgICAgICAgICBDUFUxCj4gWyAgMTUxLjIz Mjk3MV0gICAgICAgIC0tLS0gICAgICAgICAgICAgICAgICAgIC0tLS0KPiBbICAxNTEuMjM3NTAy XSAgIGxvY2soJmRxbS0+bG9ja19oaWRkZW4pOwo+IFsgIDE1MS4yNDEyNTRdICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsKPiBbICAxNTEu MjQ3Nzc0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jaygmZHFtLT5sb2NrX2hp ZGRlbik7Cj4gWyAgMTUxLjI1NDAzOF0gICBsb2NrKCZtbS0+bW1hcF9zZW0jMik7Cj4gWyAgMTUx LjI1NzYxMF0KPgo+IFRoaXMgY29tbWl0IGZpeGVzIHRoZSB3YXJuaW5nIGJ5IGVuc3VyaW5nIGdl dF91c2VyKCkgaXMgbm90IGNhbGxlZAo+IHdoaWxlIHJlYWRpbmcgU0RNQSBzdGF0cyB3aXRoIGRx bV9sb2NrIGhlbGQgYXMgZ2V0X3VzZXIoKSBjb3VsZCBjYXVzZSBhCj4gcGFnZSBmYXVsdCB3aGlj aCBsZWFkcyB0byB0aGUgY2lyY3VsYXIgbG9ja2luZyBzY2VuYXJpby4KPgo+IFNpZ25lZC1vZmYt Ynk6IE11a3VsIEpvc2hpIDxtdWt1bC5qb3NoaUBhbWQuY29tPgoKQSBmZXcgY29kaW5nLXN0eWxl IG5pdC1waWNrcyBpbmxpbmUuIFBsZWFzZSBhbHNvIHJ1biB0aGUgcGF0Y2ggdGhyb3VnaApjaGVj a3BhdGNoLnBsLiBXaXRoIHRob3NlIGZpeGVkLCB0aGUgcGF0Y2ggaXMKClJldmlld2VkLWJ5OiBG ZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdAYW1kLmNvbT4KCgo+IC0tLQo+ICAuLi4vZHJt L2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgfCAgNzUgKysrKystLS0tCj4g IC4uLi9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuaCB8ICAgMyArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jICAgICAgfCAxNDUgKysr KysrKysrKysrKysrLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMoKyksIDYx IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQv a2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMKPiBpbmRleCAyMWViMDk5OGM0YWUuLjU3ZTU3OTg3 NjAzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNl X3F1ZXVlX21hbmFnZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9k ZXZpY2VfcXVldWVfbWFuYWdlci5jCj4gQEAgLTE1MywyNCArMTUzLDIzIEBAIHN0YXRpYyB2b2lk IGRlY3JlbWVudF9xdWV1ZV9jb3VudChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwK PiAgCQlkcW0tPmFjdGl2ZV9jcF9xdWV1ZV9jb3VudC0tOwo+ICB9Cj4gIAo+IC1pbnQgcmVhZF9z ZG1hX3F1ZXVlX2NvdW50ZXIoc3RydWN0IHF1ZXVlICpxLCB1aW50NjRfdCAqdmFsKQo+ICtpbnQg cmVhZF9zZG1hX3F1ZXVlX2NvdW50ZXIodWludDY0X3QgcV9ycHRyLCB1aW50NjRfdCAqdmFsKQo+ ICB7Cj4gIAlpbnQgcmV0Owo+ICAJdWludDY0X3QgdG1wID0gMDsKPiAgCj4gLQlpZiAoIXEgfHwg IXZhbCkKPiArCWlmICghdmFsKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJLyoKPiAgCSAqIFNE TUEgYWN0aXZpdHkgY291bnRlciBpcyBzdG9yZWQgYXQgcXVldWUncyBSUFRSICsgMHg4IGxvY2F0 aW9uLgo+ICAJICovCj4gLQlpZiAoIWFjY2Vzc19vaygoY29uc3Qgdm9pZCBfX3VzZXIgKikoKHVp bnQ2NF90KXEtPnByb3BlcnRpZXMucmVhZF9wdHIgKwo+ICsJaWYgKCFhY2Nlc3Nfb2soKGNvbnN0 IHZvaWQgX191c2VyICopKHFfcnB0ciArCj4gIAkJCQkJc2l6ZW9mKHVpbnQ2NF90KSksIHNpemVv Zih1aW50NjRfdCkpKSB7Cj4gIAkJcHJfZXJyKCJDYW4ndCBhY2Nlc3Mgc2RtYSBxdWV1ZSBhY3Rp dml0eSBjb3VudGVyXG4iKTsKPiAgCQlyZXR1cm4gLUVGQVVMVDsKPiAgCX0KPiAgCj4gLQlyZXQg PSBnZXRfdXNlcih0bXAsICh1aW50NjRfdCAqKSgodWludDY0X3QpKHEtPnByb3BlcnRpZXMucmVh ZF9wdHIpICsKPiAtCQkJCQkJICAgIHNpemVvZih1aW50NjRfdCkpKTsKPiArCXJldCA9IGdldF91 c2VyKHRtcCwgKHVpbnQ2NF90ICopKHFfcnB0ciArIHNpemVvZih1aW50NjRfdCkpKTsKPiAgCWlm ICghcmV0KSB7Cj4gIAkJKnZhbCA9IHRtcDsKPiAgCX0KPiBAQCAtMTc4LDI3ICsxNzcsNiBAQCBp bnQgcmVhZF9zZG1hX3F1ZXVlX2NvdW50ZXIoc3RydWN0IHF1ZXVlICpxLCB1aW50NjRfdCAqdmFs KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCB1cGRhdGVfc2RtYV9xdWV1 ZV9wYXN0X2FjdGl2aXR5X3N0YXRzKHN0cnVjdCBrZmRfcHJvY2Vzc19kZXZpY2UgKnBkZCwKPiAt CQkJCQkJIHN0cnVjdCBxdWV1ZSAqcSkKPiAtewo+IC0JaW50IHJldDsKPiAtCXVpbnQ2NF90IHZh bCA9IDA7Cj4gLQo+IC0JaWYgKCFwZGQpCj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gLQo+IC0JcmV0 ID0gcmVhZF9zZG1hX3F1ZXVlX2NvdW50ZXIocSwgJnZhbCk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJ cHJfZXJyKCJGYWlsZWQgdG8gcmVhZCBTRE1BIHF1ZXVlIGNvdW50ZXIgZm9yIHF1ZXVlOiAlZFxu IiwKPiAtCQkJCXEtPnByb3BlcnRpZXMucXVldWVfaWQpOwo+IC0JCXJldHVybiByZXQ7Cj4gLQl9 Cj4gLQo+IC0JcGRkLT5zZG1hX3Bhc3RfYWN0aXZpdHlfY291bnRlciArPSB2YWw7Cj4gLQo+IC0J cmV0dXJuIHJldDsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBhbGxvY2F0ZV9kb29yYmVsbChzdHJ1 Y3QgcWNtX3Byb2Nlc3NfZGV2aWNlICpxcGQsIHN0cnVjdCBxdWV1ZSAqcSkKPiAgewo+ICAJc3Ry dWN0IGtmZF9kZXYgKmRldiA9IHFwZC0+ZHFtLT5kZXY7Cj4gQEAgLTUzMywxMSArNTExLDYgQEAg c3RhdGljIGludCBkZXN0cm95X3F1ZXVlX25vY3BzY2hfbG9ja2VkKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtLAo+ICAJaWYgKHJldHZhbCA9PSAtRVRJTUUpCj4gIAkJcXBkLT5yZXNl dF93YXZlZnJvbnRzID0gdHJ1ZTsKPiAgCj4gLQkvKiBHZXQgdGhlIFNETUEgcXVldWUgc3RhdHMg Ki8KPiAtICAgICAgICBpZiAoKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9T RE1BKSB8fAo+IC0gICAgICAgICAgICAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9U WVBFX1NETUFfWEdNSSkpIHsKPiAtICAgICAgICAgICAgICAgIHVwZGF0ZV9zZG1hX3F1ZXVlX3Bh c3RfYWN0aXZpdHlfc3RhdHMocXBkX3RvX3BkZChxcGQpLCBxKTsKPiAtICAgICAgICB9Cj4gIAo+ ICAJbXFkX21nci0+ZnJlZV9tcWQobXFkX21nciwgcS0+bXFkLCBxLT5tcWRfbWVtX29iaik7Cj4g IAo+IEBAIC01NzMsOSArNTQ2LDI0IEBAIHN0YXRpYyBpbnQgZGVzdHJveV9xdWV1ZV9ub2Nwc2No KHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAo+ICAJCQkJc3RydWN0IHF1ZXVlICpx KQo+ICB7Cj4gIAlpbnQgcmV0dmFsOwo+ICsJdWludDY0X3Qgc2RtYV92YWwgPSAwOwo+ICsJc3Ry dWN0IGtmZF9wcm9jZXNzX2RldmljZSAqcGRkID0gcXBkX3RvX3BkZChxcGQpOwo+ICsKPiArCS8q IEdldCB0aGUgU0RNQSBxdWV1ZSBzdGF0cyAqLwo+ICsJaWYgKChxLT5wcm9wZXJ0aWVzLnR5cGUg PT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgfHwKPiArCSAgICAocS0+cHJvcGVydGllcy50eXBlID09 IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkpIHsKPiArCQlyZXR2YWwgPSByZWFkX3NkbWFfcXVl dWVfY291bnRlcigodWludDY0X3QpcS0+cHJvcGVydGllcy5yZWFkX3B0ciwKPiArCQkJCQkJCSZz ZG1hX3ZhbCk7Cj4gKwkJaWYgKHJldHZhbCkgewoKTm8gYnJhY2VzIG5lZWRlZCBoZXJlLgoKCj4g KwkJCXByX2VycigiRmFpbGVkIHRvIHJlYWQgU0RNQSBxdWV1ZSBjb3VudGVyIGZvciBxdWV1ZTog JWRcbiIsCj4gKwkJCQlxLT5wcm9wZXJ0aWVzLnF1ZXVlX2lkKTsKPiArCQl9Cj4gKwl9Cj4gIAo+ ICAJZHFtX2xvY2soZHFtKTsKPiAgCXJldHZhbCA9IGRlc3Ryb3lfcXVldWVfbm9jcHNjaF9sb2Nr ZWQoZHFtLCBxcGQsIHEpOwo+ICsJaWYgKCFyZXR2YWwpCj4gKwkJcGRkLT5zZG1hX3Bhc3RfYWN0 aXZpdHlfY291bnRlciArPSBzZG1hX3ZhbDsKPiAgCWRxbV91bmxvY2soZHFtKTsKPiAgCj4gIAly ZXR1cm4gcmV0dmFsOwo+IEBAIC0xNDgwLDYgKzE0NjgsMTkgQEAgc3RhdGljIGludCBkZXN0cm95 X3F1ZXVlX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLAo+ICB7Cj4gIAlp bnQgcmV0dmFsOwo+ICAJc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWdyOwo+ICsJdWludDY0X3Qg c2RtYV92YWwgPSAwOwo+ICsJc3RydWN0IGtmZF9wcm9jZXNzX2RldmljZSAqcGRkID0gcXBkX3Rv X3BkZChxcGQpOwo+ICsKPiArCS8qIEdldCB0aGUgU0RNQSBxdWV1ZSBzdGF0cyAqLwo+ICsJaWYg KChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgfHwKPiArCSAgICAo cS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkpIHsKPiArCQly ZXR2YWwgPSByZWFkX3NkbWFfcXVldWVfY291bnRlcigodWludDY0X3QpcS0+cHJvcGVydGllcy5y ZWFkX3B0ciwKPiArCQkJCQkJCSZzZG1hX3ZhbCk7Cj4gKwkJaWYgKHJldHZhbCkgewoKTm8gYnJh Y2VzIG5lZWRlZCBoZXJlLgoKCj4gKwkJCXByX2VycigiRmFpbGVkIHRvIHJlYWQgU0RNQSBxdWV1 ZSBjb3VudGVyIGZvciBxdWV1ZTogJWRcbiIsCj4gKwkJCQlxLT5wcm9wZXJ0aWVzLnF1ZXVlX2lk KTsKPiArCQl9Cj4gKwl9Cj4gIAo+ICAJcmV0dmFsID0gMDsKPiAgCj4gQEAgLTE1MDEsMTAgKzE1 MDIsMTEgQEAgc3RhdGljIGludCBkZXN0cm95X3F1ZXVlX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtLAo+ICAKPiAgCWRlYWxsb2NhdGVfZG9vcmJlbGwocXBkLCBxKTsKPiAg Cj4gLQlpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpCj4gLQkJ ZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7Cj4gLQllbHNlIGlmIChxLT5wcm9wZXJ0aWVz LnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKQo+ICsJaWYgKChxLT5wcm9wZXJ0aWVz LnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgfHwKPiArCSAgICAocS0+cHJvcGVydGllcy50 eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkpIHsKPiAgCQlkZWFsbG9jYXRlX3NkbWFf cXVldWUoZHFtLCBxKTsKPiArCQlwZGQtPnNkbWFfcGFzdF9hY3Rpdml0eV9jb3VudGVyICs9IHNk bWFfdmFsOwo+ICsJfQo+ICAKPiAgCWxpc3RfZGVsKCZxLT5saXN0KTsKPiAgCXFwZC0+cXVldWVf Y291bnQtLTsKPiBAQCAtMTUyMCwxMSArMTUyMiw2IEBAIHN0YXRpYyBpbnQgZGVzdHJveV9xdWV1 ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwKPiAgCQl9Cj4gIAl9Cj4g IAo+IC0JLyogR2V0IHRoZSBTRE1BIHF1ZXVlIHN0YXRzICovCj4gLQlpZiAoKHEtPnByb3BlcnRp ZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKSB8fAo+IC0JICAgIChxLT5wcm9wZXJ0aWVz LnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSkgewo+IC0JCXVwZGF0ZV9zZG1hX3F1 ZXVlX3Bhc3RfYWN0aXZpdHlfc3RhdHMocXBkX3RvX3BkZChxcGQpLCBxKTsKPiAtCX0KPiAgCS8q Cj4gIAkgKiBVbmNvbmRpdGlvbmFsbHkgZGVjcmVtZW50IHRoaXMgY291bnRlciwgcmVnYXJkbGVz cyBvZiB0aGUgcXVldWUncwo+ICAJICogdHlwZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oCj4gaW5kZXggODk0YmNmODc3 ZjllLi40OWQ4ZTMyNGM2MzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuaAo+IEBAIC0yNTEsNiArMjUxLDUgQEAg c3RhdGljIGlubGluZSB2b2lkIGRxbV91bmxvY2soc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2Vy ICpkcW0pCj4gIAltdXRleF91bmxvY2soJmRxbS0+bG9ja19oaWRkZW4pOwo+ICB9Cj4gIAo+IC1p bnQgcmVhZF9zZG1hX3F1ZXVlX2NvdW50ZXIoc3RydWN0IHF1ZXVlICpxLCB1aW50NjRfdCAqdmFs KTsKPiAtCj4gK2ludCByZWFkX3NkbWFfcXVldWVfY291bnRlcih1aW50NjRfdCBxX3JwdHIsIHVp bnQ2NF90ICp2YWwpOwo+ICAjZW5kaWYgLyogS0ZEX0RFVklDRV9RVUVVRV9NQU5BR0VSX0hfICov Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9jZXNzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jCj4gaW5kZXggODYxNmEy MDRlNGMzLi42ZGQxYzg2MTAwN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX3Byb2Nlc3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9wcm9jZXNzLmMKPiBAQCAtODYsNiArODYsMTMgQEAgc3RydWN0IGtmZF9zZG1hX2FjdGl2aXR5 X2hhbmRsZXJfd29ya2FyZWEgewo+ICAJdWludDY0X3Qgc2RtYV9hY3Rpdml0eV9jb3VudGVyOwo+ ICB9Owo+ICAKPiArc3RydWN0IHRlbXBfc2RtYV9xdWV1ZV9saXN0IHsKPiArCXVpbnQ2NF90IHJw dHI7Cj4gKwl1aW50NjRfdCBzZG1hX3ZhbDsKPiArCXVuc2lnbmVkIGludCBxdWV1ZV9pZDsKPiAr CXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiArfTsKPiArCj4gIHN0YXRpYyB2b2lkIGtmZF9zZG1h X2FjdGl2aXR5X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIHsKPiAgCXN0cnVj dCBrZmRfc2RtYV9hY3Rpdml0eV9oYW5kbGVyX3dvcmthcmVhICp3b3JrYXJlYTsKPiBAQCAtOTYs NiArMTAzLDggQEAgc3RhdGljIHZvaWQga2ZkX3NkbWFfYWN0aXZpdHlfd29ya2VyKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKPiAgCXN0cnVjdCBxY21fcHJvY2Vzc19kZXZpY2UgKnFwZDsKPiAg CXN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtOwo+ICAJaW50IHJldCA9IDA7Cj4gKwlz dHJ1Y3QgdGVtcF9zZG1hX3F1ZXVlX2xpc3Qgc2RtYV9xX2xpc3Q7Cj4gKwlzdHJ1Y3QgdGVtcF9z ZG1hX3F1ZXVlX2xpc3QgKnNkbWFfcSwgKm5leHQ7Cj4gIAo+ICAJd29ya2FyZWEgPSBjb250YWlu ZXJfb2Yod29yaywgc3RydWN0IGtmZF9zZG1hX2FjdGl2aXR5X2hhbmRsZXJfd29ya2FyZWEsCj4g IAkJCQlzZG1hX2FjdGl2aXR5X3dvcmspOwo+IEBAIC0xMDksNDEgKzExOCwxMzcgQEAgc3RhdGlj IHZvaWQga2ZkX3NkbWFfYWN0aXZpdHlfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK PiAgCXFwZCA9ICZwZGQtPnFwZDsKPiAgCWlmICghZHFtIHx8ICFxcGQpCj4gIAkJcmV0dXJuOwo+ ICsJLyoKPiArCSAqIFRvdGFsIFNETUEgYWN0aXZpdHkgaXMgY3VycmVudCBTRE1BIGFjdGl2aXR5 ICsgcGFzdCBTRE1BIGFjdGl2aXR5Cj4gKwkgKiBQYXN0IFNETUEgY291bnQgaXMgc3RvcmVkIGlu IHBkZC4KPiArCSAqIFRvIGdldCB0aGUgY3VycmVudCBhY3Rpdml0eSBjb3VudGVycyBmb3IgYWxs IGFjdGl2ZSBTRE1BIHF1ZXVlcywKPiArCSAqIHdlIGxvb3Agb3ZlciBhbGwgU0RNQSBxdWV1ZXMg YW5kIGdldCB0aGVpciBjb3VudHMgZnJvbSB1c2VyLXNwYWNlLgo+ICsJICoKPiArCSAqIFdlIGNh bm5vdCBjYWxsIGdldF91c2VyKCkgd2l0aCBkcW1fbG9jayBoZWxkIGFzIGl0IGNhbiBjYXVzZQo+ ICsJICogYSBjaXJjdWxhciBsb2NrIGRlcGVuZGVuY3kgc2l0dWF0aW9uLiBUbyByZWFkIHRoZSBT RE1BIHN0YXRzLAo+ICsJICogd2UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgo+ICsJICoKPiAr CSAqIDEuIENyZWF0ZSBhIHRlbXBvcmFyeSBsaXN0IG9mIFNETUEgcXVldWUgbm9kZXMgZnJvbSB0 aGUgcXBkLT5xdWV1ZXNfbGlzdCwKPiArCSAqICAgIHdpdGggZHFtX2xvY2svZHFtX3VubG9jaygp Lgo+ICsJICogMi4gQ2FsbCBnZXRfdXNlcigpIGZvciBlYWNoIG5vZGUgaW4gdGVtcG9yYXJ5IGxp c3Qgd2l0aG91dCBkcW1fbG9jay4KPiArCSAqICAgIFNhdmUgdGhlIFNETUEgY291bnQgZm9yIGVh Y2ggbm9kZSBhbmQgYWxzbyBhZGQgdGhlIGNvdW50IHRvIHRoZSB0b3RhbAo+ICsJICogICAgU0RN QSBjb3VudCBjb3VudGVyLgo+ICsJICogICAgSXRzIHBvc3NpYmxlLCBkdXJpbmcgdGhpcyBzdGVw LCBhIGZldyBTRE1BIHF1ZXVlIG5vZGVzIGdvdCBkZWxldGVkCj4gKwkgKiAgICBmcm9tIHRoZSBx cGQtPnF1ZXVlc19saXN0Lgo+ICsJICogMy4gRG8gYSBzZWNvbmQgcGFzcyBvdmVyIHFwZC0+cXVl dWVzX2xpc3QgdG8gY2hlY2sgaWYgYW55IG5vZGVzIGdvdCBkZWxldGVkLgo+ICsJICogICAgSWYg YW55IG5vZGUgZ290IGRlbGV0ZWQsIGl0cyBTRE1BIGNvdW50IHdvdWxkIGJlIGNhcHR1cmVkIGlu IHRoZSBzZG1hCj4gKwkgKiAgICBwYXN0IGFjdGl2aXR5IGNvdW50ZXIuIFNvIHN1YnRyYWN0IHRo ZSBTRE1BIGNvdW50ZXIgc3RvcmVkIGluIHN0ZXAgMgo+ICsJICogICAgZm9yIHRoaXMgbm9kZSBm cm9tIHRoZSB0b3RhbCBTRE1BIGNvdW50Lgo+ICsJICovCj4gKwlJTklUX0xJU1RfSEVBRCgmc2Rt YV9xX2xpc3QubGlzdCk7Cj4gIAo+IC0JbW0gPSBnZXRfdGFza19tbShwZGQtPnByb2Nlc3MtPmxl YWRfdGhyZWFkKTsKPiAtCWlmICghbW0pIHsKPiAtCQlyZXR1cm47Cj4gKwkvKgo+ICsJICogQ3Jl YXRlIHRoZSB0ZW1wIGxpc3Qgb2YgYWxsIFNETUEgcXVldWVzCj4gKwkgKi8KPiArCWRxbV9sb2Nr KGRxbSk7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShxLCAmcXBkLT5xdWV1ZXNfbGlzdCwg bGlzdCkgewo+ICsJCWlmICgocS0+cHJvcGVydGllcy50eXBlICE9IEtGRF9RVUVVRV9UWVBFX1NE TUEpICYmCj4gKwkJICAgIChxLT5wcm9wZXJ0aWVzLnR5cGUgIT0gS0ZEX1FVRVVFX1RZUEVfU0RN QV9YR01JKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXNkbWFfcSA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCB0ZW1wX3NkbWFfcXVldWVfbGlzdCksIEdGUF9LRVJORUwpOwo+ICsJCWlmICghc2Rt YV9xKSB7Cj4gKwkJCWRxbV91bmxvY2soZHFtKTsKPiArCQkJZ290byBjbGVhbnVwOwo+ICsJCX0K PiArCj4gKwkJSU5JVF9MSVNUX0hFQUQoJnNkbWFfcS0+bGlzdCk7Cj4gKwkJc2RtYV9xLT5ycHRy ID0gKHVpbnQ2NF90KXEtPnByb3BlcnRpZXMucmVhZF9wdHI7Cj4gKwkJc2RtYV9xLT5xdWV1ZV9p ZCA9IHEtPnByb3BlcnRpZXMucXVldWVfaWQ7Cj4gKwkJbGlzdF9hZGRfdGFpbCgmc2RtYV9xLT5s aXN0LCAmc2RtYV9xX2xpc3QubGlzdCk7Cj4gIAl9Cj4gIAo+IC0JdXNlX21tKG1tKTsKPiArCS8q Cj4gKwkgKiBJZiB0aGUgdGVtcCBsaXN0IGlzIGVtcHR5LCB0aGVuIG5vIFNETUEgcXVldWVzIG5v ZGVzIHdlcmUgZm91bmQgaW4KPiArCSAqIHFwZC0+cXVldWVzX2xpc3QuIFJldHVybiB0aGUgcGFz dCBhY3Rpdml0eSBjb3VudCBhcyB0aGUgdG90YWwgc2RtYQo+ICsJICogY291bnQKPiArCSAqLwo+ ICsJaWYgKGxpc3RfZW1wdHkoJnNkbWFfcV9saXN0Lmxpc3QpKSB7Cj4gKwkJd29ya2FyZWEtPnNk bWFfYWN0aXZpdHlfY291bnRlciA9IHBkZC0+c2RtYV9wYXN0X2FjdGl2aXR5X2NvdW50ZXI7Cj4g KwkJZHFtX3VubG9jayhkcW0pOwo+ICsJCXJldHVybjsKPiArCX0KPiAgCj4gLQlkcW1fbG9jayhk cW0pOwo+ICsJZHFtX3VubG9jayhkcW0pOwo+ICAKPiAgCS8qCj4gLQkgKiBUb3RhbCBTRE1BIGFj dGl2aXR5IGlzIGN1cnJlbnQgU0RNQSBhY3Rpdml0eSArIHBhc3QgU0RNQSBhY3Rpdml0eQo+ICsJ ICogR2V0IHRoZSB1c2FnZSBjb3VudCBmb3IgZWFjaCBTRE1BIHF1ZXVlIGluIHRlbXBfbGlzdC4K PiAgCSAqLwo+IC0Jd29ya2FyZWEtPnNkbWFfYWN0aXZpdHlfY291bnRlciA9IHBkZC0+c2RtYV9w YXN0X2FjdGl2aXR5X2NvdW50ZXI7Cj4gKwltbSA9IGdldF90YXNrX21tKHBkZC0+cHJvY2Vzcy0+ bGVhZF90aHJlYWQpOwo+ICsJaWYgKCFtbSkKPiArCQlnb3RvIGNsZWFudXA7Cj4gKwo+ICsJdXNl X21tKG1tKTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHNkbWFfcSwgJnNkbWFfcV9saXN0 Lmxpc3QsIGxpc3QpIHsKPiArCQl2YWwgPSAwOwo+ICsJCXJldCA9IHJlYWRfc2RtYV9xdWV1ZV9j b3VudGVyKHNkbWFfcS0+cnB0ciwgJnZhbCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcHJfZGVidWco IkZhaWxlZCB0byByZWFkIFNETUEgcXVldWUgYWN0aXZlICIKPiArCQkJCSAiY291bnRlciBmb3Ig cXVldWUgaWQ6ICVkIiwKCkhhdmluZyBhIGxpbmUgbG9uZ2VyIHRoYW4gODAgY2hhcmFjdGVycyBp cyBiZXR0ZXIgdGhhbiBicmVha2luZyBhIHN0cmluZwpsaWtlIHRoYXQuIEJyZWFraW5nIHN0cmlu Z3MgbWFrZXMgaXQgaGFyZGVyIHRvIGdyZXAgZm9yIHRoZW0uIEEgbG9uZwpsaW5lIGlzIGEgd2Fy bmluZyBpbiBjaGVja3BhdGNoLnBsLiBBIGJyb2tlbiBzdHJpbmcgbWF5IGFjdHVhbGx5IGJlCmNv bnNpZGVyZWQgYW4gZXJyb3IuCgoKPiArCQkJCSBzZG1hX3EtPnF1ZXVlX2lkKTsKPiArCQkJZWxz ZSB7CgpJbmNvbnNpc3RlbnQgaW5kZW50YXRpb24uIFRoZSAiZWxzZSIgc2hvdWxkIGJlIGF0IHRo ZSBzYW1lIGxldmVsIGFzIHRoZQoiaWYiLiBBbHNvLCBpZiB5b3UgbmVlZCBicmFjZXMgaW4gb25l IGlmLWVsc2UgYnJhbmNoLCBpdCdzIGJldHRlciB0byB1c2UKYnJhY2VzIG9uIGFsbCBvZiB0aGVt IGZvciBjb25zaXN0ZW5jeSBhbmQgcmVhZGFiaWxpdHkuCgoKPiArCQkJCXNkbWFfcS0+c2RtYV92 YWwgPSB2YWw7Cj4gKwkJCQl3b3JrYXJlYS0+c2RtYV9hY3Rpdml0eV9jb3VudGVyICs9IHZhbDsK PiArCQkJfQo+ICsJfQo+ICsKPiArCXVudXNlX21tKG1tKTsKPiArCW1tcHV0KG1tKTsKPiAgCj4g IAkvKgo+IC0JICogR2V0IHRoZSBjdXJyZW50IGFjdGl2aXR5IGNvdW50ZXJzIGZvciBhbGwgYWN0 aXZlIFNETUEgcXVldWVzCj4gKwkgKiBEbyBhIHNlY29uZCBpdGVyYXRpb24gb3ZlciBxcGRfcXVl dWVzX2xpc3QgdG8gY2hlY2sgaWYgYW55IFNETUEKPiArCSAqIG5vZGVzIGdvdCBkZWxldGVkIHdo aWxlIGZldGNoaW5nIFNETUEgY291bnRlci4KPiAgCSAqLwo+ICsJZHFtX2xvY2soZHFtKTsKPiAr Cj4gKwl3b3JrYXJlYS0+c2RtYV9hY3Rpdml0eV9jb3VudGVyICs9IHBkZC0+c2RtYV9wYXN0X2Fj dGl2aXR5X2NvdW50ZXI7Cj4gKwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShxLCAmcXBkLT5xdWV1 ZXNfbGlzdCwgbGlzdCkgewo+IC0JCWlmICgocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVV RV9UWVBFX1NETUEpIHx8Cj4gLQkJICAgIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVF X1RZUEVfU0RNQV9YR01JKSkgewo+IC0JCQl2YWwgPSAwOwo+IC0JCQlyZXQgPSByZWFkX3NkbWFf cXVldWVfY291bnRlcihxLCAmdmFsKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJCXByX2RlYnVnKCJG YWlsZWQgdG8gcmVhZCBTRE1BIHF1ZXVlIGFjdGl2ZSAiCj4gLQkJCQkJICJjb3VudGVyIGZvciBx dWV1ZSBpZDogJWQiLAo+IC0JCQkJCSBxLT5wcm9wZXJ0aWVzLnF1ZXVlX2lkKTsKPiAtCQkJZWxz ZQo+IC0JCQkJd29ya2FyZWEtPnNkbWFfYWN0aXZpdHlfY291bnRlciArPSB2YWw7Cj4gKwkJaWYg KGxpc3RfZW1wdHkoJnNkbWFfcV9saXN0Lmxpc3QpKSB7CgpObyBicmFjZXMgbmVlZGVkIGhlcmUu CgpSZWdhcmRzLArCoCBGZWxpeAoKCj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKChx LT5wcm9wZXJ0aWVzLnR5cGUgIT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSkgJiYKPiArCQkgICAgKHEt PnByb3BlcnRpZXMudHlwZSAhPSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpKQo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNkbWFfcSwgbmV4dCwgJnNk bWFfcV9saXN0Lmxpc3QsIGxpc3QpIHsKPiArCQkJaWYgKCgodWludDY0X3QpcS0+cHJvcGVydGll cy5yZWFkX3B0ciA9PSBzZG1hX3EtPnJwdHIpICYmCj4gKwkJCSAgICAgKHNkbWFfcS0+cXVldWVf aWQgPT0gcS0+cHJvcGVydGllcy5xdWV1ZV9pZCkpIHsKPiArCQkJCWxpc3RfZGVsKCZzZG1hX3Et Pmxpc3QpOwo+ICsJCQkJa2ZyZWUoc2RtYV9xKTsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gIAkJ fQo+ICAJfQo+ICAKPiAgCWRxbV91bmxvY2soZHFtKTsKPiAtCXVudXNlX21tKG1tKTsKPiAtCW1t cHV0KG1tKTsKPiArCj4gKwkvKgo+ICsJICogSWYgdGVtcCBsaXN0IGlzIG5vdCBlbXB0eSwgaXQg aW1wbGllcyBzb21lIHF1ZXVlcyBnb3QgZGVsZXRlZAo+ICsJICogZnJvbSBxcGQtPnF1ZXVlc19s aXN0IGR1cmluZyBTRE1BIHVzYWdlIHJlYWQuIFN1YnRyYWN0IHRoZSBTRE1BCj4gKwkgKiBjb3Vu dCBmb3IgZWFjaCBub2RlIGZyb20gdGhlIHRvdGFsIFNETUEgY291bnQuCj4gKwkgKi8KPiArCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZG1hX3EsIG5leHQsICZzZG1hX3FfbGlzdC5saXN0LCBs aXN0KSB7Cj4gKwkJd29ya2FyZWEtPnNkbWFfYWN0aXZpdHlfY291bnRlciAtPSBzZG1hX3EtPnNk bWFfdmFsOwo+ICsJCWxpc3RfZGVsKCZzZG1hX3EtPmxpc3QpOwo+ICsJCWtmcmVlKHNkbWFfcSk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuOwo+ICsKPiArY2xlYW51cDoKPiArCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShzZG1hX3EsIG5leHQsICZzZG1hX3FfbGlzdC5saXN0LCBsaXN0KSB7Cj4gKwkJ bGlzdF9kZWwoJnNkbWFfcS0+bGlzdCk7Cj4gKwkJa2ZyZWUoc2RtYV9xKTsKPiArCX0KPiAgfQo+ ICAKPiAgc3RhdGljIHNzaXplX3Qga2ZkX3Byb2Nmc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2Jq LCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngK