From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2AC031355B; Fri, 16 Oct 2026 00:58:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.129.48 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792112314; cv=fail; b=aJApoqyS/jeXF522QC/CXQ3LJZt7rgAf4I6ZDGL64XCUbgfZaoo3nj69hwTFZbtNqcrzyMcamUSpeA0jLvFEfqpMCE+i77E6PlNKni6zjUX56xdULW0/v3i1L5R1xZ6S+Tk07f0dZ7a15qKhCV4KVeQwZa6qSMk2uqXP3yuQw0A= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792112314; c=relaxed/simple; bh=bRi5t6GA5pdRmRl3/qj3r7zJGUGcXT7j4htpsllgzDc=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=XYRz2gEEOFLPmY+QtCkvq5Z/jox1rACQmSO1Co+QoGH7uPvFi7q0+JPZXeHQuyGCWFDDjvWCULeSCIPStDamBklQlfbxUnh3JygmadQtDKw+gQQ+6T0FFFrH2s8tVFkhzj0x9TxB2aeAt/dAUbwtd604dkW2DsCp0jo8dJRydzk= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sitime.com; spf=pass smtp.mailfrom=sitime.com; dkim=pass (2048-bit key) header.d=sitime.com header.i=@sitime.com header.b=jWkR/qiF; dkim=pass (2048-bit key) header.d=Sitime.onmicrosoft.com header.i=@Sitime.onmicrosoft.com header.b=J3RpwW8Y; arc=fail smtp.client-ip=148.163.129.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sitime.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sitime.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sitime.com header.i=@sitime.com header.b="jWkR/qiF"; dkim=pass (2048-bit key) header.d=Sitime.onmicrosoft.com header.i=@Sitime.onmicrosoft.com header.b="J3RpwW8Y" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sitime.com; h=cc:cc:content-transfer-encoding:content-transfer-encoding:content-type:content-type:date:date:from:from:in-reply-to:in-reply-to:message-id:message-id:mime-version:mime-version:references:references:subject:subject:to:to; s=mail; bh=bRi5t6GA5pdRmRl3/qj3r7zJGUGcXT7j4htpsllgzDc=; b=jWkR/qiFtQXT1Rox0SUs4BfxZW22rRg9VqZIQjYRWiNgk6KeynOMnjLuGmp4F3lNQ9xCbL7dxGz7VHftYwfQFfL/c6qgf7FdtQzPHaPZmrvO2Kqd4skKHflanzboi7MdFLaXVSFsRu3V6wCWIguCF39CgoDuXM6r87IJV8i5it/2zfrNgylFl/X79kKMz+1SRi35H01EohDnDntv8+Y+kKL0uPb5Fs2t9L9EyR51luw4ft3B9KNWNaQKHJ2Q6o6UKN+PUNAhRwmKSZwmNtVCAg/0+WI1qwYdtAV8QJpgij+43bZ3rv7m9YhEX5F/b6+3MQvJ1oP8PErIJHuC4m1Cfw== X-Virus-Scanned: Proofpoint Essentials engine Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11021084.outbound.protection.outlook.com [52.101.52.84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id B4C5D100076; Fri, 16 Oct 2026 00:58:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sFGcXa/qvzzoeNPdG1hjR3KVmACug22neToWkfgBhftjuWJqm080QQ2muGXZLzCSEqUMYB0bpLP4C8c3uHhfodRa1byyP+Mo5HRb9EIMbdD99b2+P7r1zBCDQS4gHm2vuDxRiAo7LI1b6RWrgr4pEQXorqzUpDAeaUBAKiVN1ed4leBYfxg7/CMuEzbORHiy0QP+2PBUWIOnr72wSSRiBgdDDZGxXebrtLHEzIq4O7ASJsgBTJLSXO17eDRNdwn4FXit8jDyMmAtxVxuAeuaJZXy9tkK5HlPTN9e0+VVvllFQvtOXnkB7ane9yJhKlRtpuWITbNTJXmFxLBbj8FpMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bRi5t6GA5pdRmRl3/qj3r7zJGUGcXT7j4htpsllgzDc=; b=Lja5nXo/LhS+JthP7yFeuK3yq9R0BAdjIdsGTXorzygO966FsVIQc7Ekuvcex2SfaQXPY6jClgyoSsOkuedEGx1Hj/yQcOnbndua5Ag2ZJ4posRlY5bslnVgmQq377ALWC5pnJj6TTwUlnHZtvpgJaBfZNb7OHZMN7+YZ8eibXbC34urNnXEjfd6dN4dSbznYtO2mBSsarTd6q+6tMyhnxU9JQ6ytnP8Y6QLcfaUTX0yqvuwhGTBsjjz7TCM5Q4v9L3uRfpgryXZBAZ1uO7WqUr+CMHfaWRtowxtuCy0/NroNy4TtWSYwks64mdPgje1tBSOug52Uc1jwU57bV5oAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sitime.com; dmarc=pass action=none header.from=sitime.com; dkim=pass header.d=sitime.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Sitime.onmicrosoft.com; s=selector1-Sitime-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bRi5t6GA5pdRmRl3/qj3r7zJGUGcXT7j4htpsllgzDc=; b=J3RpwW8YWo0zpZzxtPHX2YAVaC2GYwvxb5B+aJs/7J5rZGqH3kqsl8kDPaLfSnsZD1xwnKMVsrRvee1pMYxKKPVuWWVFyRFeG3iikzyD/f94zoKE/ItkcCxnGNj9mR4fTgQxowKh4mYki0nGWryqMjr2QIbfnvHfygEnue6To3LPmfFJP5idK5OawRqdkaAe7qQqP+i+DNeU+mvjjA/sv5hzuPTsuBApEcMbHgKjLw2EAJ4pcLRseZc6k+q2nPLokuo/dbNRS+mO0pXxWt1bQBe1YArcsQKjHiw6f82+c8F77rwxB6DhM9EyEgtnDL4Y3+JcyzwyqbMokiqv2nIx+g== Received: from LVWPR20MB994915.namprd20.prod.outlook.com (2603:10b6:408:3bf::16) by MN0PR20MB4789.namprd20.prod.outlook.com (2603:10b6:208:3c7::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.522.13; Fri, 16 Oct 2026 00:58:26 +0000 Received: from LVWPR20MB994915.namprd20.prod.outlook.com ([fe80::9551:3864:128b:8c01]) by LVWPR20MB994915.namprd20.prod.outlook.com ([fe80::9551:3864:128b:8c01%4]) with mapi id 15.21.0522.013; Fri, 16 Oct 2026 00:58:26 +0000 From: Ali Rouhi To: "jiri@resnulli.us" CC: "vadim.fedorenko@linux.dev" , "arkadiusz.kubalewski@intel.com" , "ivecera@redhat.com" , "kuba@kernel.org" , "pabeni@redhat.com" , "robh@kernel.org" , "krzk+dt@kernel.org" , "conor+dt@kernel.org" , "prabhakar.mahadev-lad.rj@bp.renesas.com" , "cjubran@nvidia.com" , "Oleg.Zadorozhnyi@devoxsoftware.com" , "devicetree@vger.kernel.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH net-next v14 04/12] dpll: sit9531x: read DPLL types and pin properties from system firmware Thread-Topic: [PATCH net-next v14 04/12] dpll: sit9531x: read DPLL types and pin properties from system firmware Thread-Index: AQHdXQlzEpNNNEK/0kiMdfiNT5j6vw== Date: Fri, 16 Oct 2026 00:58:26 +0000 Message-ID: <20261016005823.13690-5-arouhi@sitime.com> References: <20261016005823.13690-1-arouhi@sitime.com> In-Reply-To: <20261016005823.13690-1-arouhi@sitime.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=sitime.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LVWPR20MB994915:EE_|MN0PR20MB4789:EE_ x-ms-office365-filtering-correlation-id: 449a17f9-2873-4165-08f9-08df2b2095dc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|23010399003|38070700021|261009223327099003|5023799004|56012099006|261009223027099003|261009221727099003|261009220027099003|261009221227099003|18002099003|10067099003|6133799003|260925021911599003|22082099003|260925022911599003|3023799007|260925021311599003; x-microsoft-antispam-message-info: o6LNQhDlv8+LVqbgp51fgEcjh1u3P4YkDSHcB8ociNmqqFHoIDe5h4jpADdBxR+3iEKac7klv6zV+nn3xRxxs/LZ9n+7Wzc/AFsQJapPfgqCWYXhWP30H2s/uc69OP8T/9Tqt8KjXJZ0r6EabXsztoY9PjIv+/M1T4T+0O3r6GWwsGC2hbx57OBcEyVf//N88b9UOWsVUWAxQOz/0q0lkiUOoQM0pRCeILsxaOzG7QTCtVuG/+JVVedTPWYIIhStyLJKqIcOvhnNL6fqxQyqPQD0jQU8wnGtIMiWjHdvsGejhIk6/9A7ozTE6SYLqxkhR7UOPUoujV81bLpn0Z0Cq+jUBwsu7rCVUeJgWV1WdJEwN7fRQPF/Zgs2GlvqIrbivo+esN9BJh3zpb+bjIjOFBZvyfQP7ETEiBmhT3XuY73P6taLODvLQ7b9O5tOl2Mh5uRGMwUeC/7DQiE2Co1ZvuQmye4C5EY5h1SFOgkoDNl2I5kN6dGaa1bCrERXAdIEPzkTocKfKBZN0mYTpKGg25pkeUzr4RIBe+JbYLkoJWKS0dUvaUGSjQ6sxVdTisgRpQnX1AFBbERZhzbD5CvOkFfAjUOnz2XoW2TllU5XOTRgwkbBgA4f6PtiX0nFkz7DxRYJ4cwQM0w+vNABN3lwiHc83cETiHQwUUF5QJMzUXAPCk2SzLFYZAWl6SpXOj4QsmQ8r7h9/eHuuIlJtfYpxXktLQc6NdEQpVi9EDq0mLg= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LVWPR20MB994915.namprd20.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(38070700021)(261009223327099003)(5023799004)(56012099006)(261009223027099003)(261009221727099003)(261009220027099003)(261009221227099003)(18002099003)(10067099003)(6133799003)(260925021911599003)(22082099003)(260925022911599003)(3023799007)(260925021311599003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YUdGYU9xY2FGZGdrN0RkMFQxVUNsRklIdWpWNFYrcEp0cWNqM3hRWmFSSHB1?= =?utf-8?B?YXcyVXZsTThTTTIwMEs0OUF2SUROdW9td1VrWEpJdGsxZVlrUjlhVjlKdjJ6?= =?utf-8?B?UGpzTjhFaEw2bU83ZVE2dmVFc3R0ejFDcDlpWlBIVWkydThIc0hRTFczNjFO?= =?utf-8?B?S1RRd25BZXRzd0lEakxWSDEra0FnTDlLeXptRmtYaDlSUTFjcHREN1NTenFt?= =?utf-8?B?MGtZRlpTTHQyZ0xDM00rdEExQktSYjNERFhuYXZqQlhrS04xeHUwYlpUSC83?= =?utf-8?B?YVl1Z3FhdDVyaGY0YXV3YXAyZ3Y0SHIvc3NJT3RzdjluTEF5WWhKY05Fb1Rl?= =?utf-8?B?RFp6QjlteDZSekxXQXpJdjIxeXdVdzFidVdETVkyR3BpRTZndkppeE9ra3Bj?= =?utf-8?B?cEJDaHhwV3lBUXZzTG5DSVhxbmVoZzlQblFMTXhGanpETWdURTU4bFErWmcz?= =?utf-8?B?Zlc1UzQ2S0gvbUdQK1FKcVB6TmtGQUl3bnVTdDZOSGphaDdkS3g5Rm9Mdmln?= =?utf-8?B?MWFPQ3dVblRwN3QzMzlsL2p2ekZwTDd3dHZMQzJwdkVwSFE1MU5RY25XaVM5?= =?utf-8?B?elphS1hwejBwczhka3IwN3Bwc1dpL1R6TE1Zc290NTkyYmk5NFE1QjhWNFNW?= =?utf-8?B?L281cElIWDBVOGdOY0hLZWh5L2JlZ2JjRVVGZ0QwZUNUVFpFMGhzR3NueUFx?= =?utf-8?B?Mk11Vm1Na1FFWERnMVBUUE4vVnByZWk3emNxMW1Ud2tRT0Z3bFhCb1JHeWd2?= =?utf-8?B?bFBTT2YxMkUxMjBBcmFzTGFVeG5kSHFjUnJVdmtRTlJESHJsa3lTNjFKdkFR?= =?utf-8?B?eGNRRVNCK0xWQ3MrZVQxY2VPeWRKZlBoZ21TekdqWDRIamxHelNvdStzdGR5?= =?utf-8?B?dEs5Vm1oQUZSY3lDRitnaG5xcXpqb25DamVNNFkyWUpCVE44ZThZMitBdjkw?= =?utf-8?B?WGxpY2V2RjJrRlVrbEoxQW5QbDF4bStFOFllVTdJaDl1MDFIcDM0ZFpWM2Nm?= =?utf-8?B?MjdsU2ErVzBuMGI5VlVRK1dTVklpaUxDNGZSQTlCU2YyYVhoZWtTWXpHYVVC?= =?utf-8?B?STIvTUhQZHROYzF5aGNVaWw3M3VmU1cwTHZ3bnhaSjdFUHYyYmp1UXdzcU5C?= =?utf-8?B?eUVwTm1iKzM0K3BtTG16K21IK2JzdG1WUkF5OTRyODExZ210Mi81RkowQlgw?= =?utf-8?B?QjJnbTA0VkhVTFFLWHMyM2ZzZlRjS1pHSnNGYTVQd2FSZlJqSjVTRUNZYmpm?= =?utf-8?B?NGtEOVFyVHhlQVBvenoyRGxoQmg3TS84Q2Y1a01NQlE0aFI0WURhVHE5OGJh?= =?utf-8?B?cGxDM3Q5VFkzQ2JENGVXVm9HSnAza3JybUh6RWlnenYxUlRuQ0ozRVdORGFi?= =?utf-8?B?ZUJyN00vNFFlS0JlRXlpVXNKcFpLQnJYeHZRQU9NNTNjbmNNYW4xZ1JUSWF2?= =?utf-8?B?dld2M2FnTU5QM1luaGlLVzZGRFhJb3N6NmdxZEIyVG1DcEE3bEdaTnpFV2xp?= =?utf-8?B?MklFbFNZNU5YeDNvTWlZYnM3SFZzYXlTOVRXVjYvMmdGbXpvSlZrb2tmMU82?= =?utf-8?B?M0t5eWtkTTJBNUNaNlZhemVYMEcyc2NGWjc1eS9VOUZ0WUtMN0Y0WURSSFgv?= =?utf-8?B?U29VMWlOOXgrQXpsMVE2Z1p6NVZpbUJJbCtMb0k4QzE2dC9MNGZaeUdhc042?= =?utf-8?B?dlpoc0lXTS9SQVRMcHBNMFNPa2RyV2FZdDgxMzlxK0tteFBRMzNGRW4zS2N5?= =?utf-8?B?Mm5ZcDY1ZUIxdnpyaU5qNllzKzFjZFg4bUxsbmNnY0RJblAzalc4L2Q5ZXdS?= =?utf-8?B?bXVWYmVVMFZlYkp4a2VXNGJVT0xkODJQekJVdkFxK3U3aTBydHdIY2o1YnE3?= =?utf-8?B?UVc0WXBoVFN3cWdXVnU5bHJUbHpqVXl5ODJxUXIreTlLWXN3RFVMSlJ5SEl5?= =?utf-8?B?N2FzYW05c0RNTkpINjJxb1k3UDRIekRFWXFnOTJqT2dZU3BVQld1MTRMU29P?= =?utf-8?B?cXRFU3lQU2hGRjJCZlg1MzFtdnVHblltdFFpZEhuWG5CSk9uRVRTeGtSdkFR?= =?utf-8?B?ZEJWdEJkSHlreHBVMk56V2ZiRytweG9ZTkVFakQ0QURBZ1hnM1JKUXF2bC9n?= =?utf-8?B?aGlONTVTV0FvRXV3WjdHWmtVR0V1TTNIaTRQK2lsa2ZuVVY5Z0hhbjgrYkRt?= =?utf-8?B?ZE1vOFUrSWVrc3lMYmFNTDByZDZoOU9kRVM2MlBPN2t6djNZRWZwOWlBeGhU?= =?utf-8?B?SWhLcUxBZnNKVFFlSnhXN2o4dldpNXVNT2RQSitkUzRIVlFabXFsM210eElD?= =?utf-8?Q?P8WqZz3JESw13tuAuC?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: FrpSofogeMa3BzYGOWe2OnYNJwFOpi/tvjEh5lRz7W6HFo2kcACTtqM0ofujz7EhZwou4bdJk7AqENY2GjPdrq2UZFdwy+QSE3exm5jJqcdRSUo390/zCEoKSNeQPe9Rt0x0rxKfj0p4WiT/8xYXX0LYHl2ex1Q2Zy7mnibCFk0LWgRqdTWNKcyM2TZy8jlsRmm0q8OhmaS+H06mpAKqHtoy/0f2+hJ+Nk6fUG/p42tPGO0veQjPUm7nh99h7IXuqT0ZlI6MiSOq9ibBxhcJ2Q/m4dH8fBTl5cIjhGmDFLXPGpSbv3nu+/ITb7stfdApXpnJlXbHK7rMQXRePh3gXQ== X-OriginatorOrg: sitime.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LVWPR20MB994915.namprd20.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 449a17f9-2873-4165-08f9-08df2b2095dc X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Oct 2026 00:58:26.2696 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8fb55916-cf10-4b0d-96f4-cf3952657263 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6HYKjjaZ+sUhtUM6wBwzJtLEUkLfF07nMKVxZBmSOXYvjSyoTR+YWTHGBaXnOylsq0TsSYdkGHnqQL6B0l4eag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR20MB4789 X-MDID: 1792112310-j8wAx225z56y X-PPE-STACK: {"stack":"us1"} X-MDID-O: us1;ut7;1792112310;j8wAx225z56y;;ba04557de9d2da8490f5f1e6de07b967 X-PPE-TRUSTED: V=1;DIR=OUT; RnJvbTogT2xlZyBaYWRvcm96aG55aSA8T2xlZy5aYWRvcm96aG55aUBkZXZveHNvZnR3YXJlLmNv bT4KClRoZSBEUExMIGNvcmUgd2FudHMgYSB0eXBlIHBlciBkZXZpY2UgYW5kIGEgcHJvcGVydHkg c2V0IHBlciBwaW46IGEKbGFiZWwsIHRoZSBkaXJlY3Rpb24sIHRoZSBjYXBhYmlsaXRpZXMsIGFu ZCB0aGUgZnJlcXVlbmNpZXMgdGhlIHBpbgpzdXBwb3J0cy4gIE5vbmUgb2YgdGhhdCBjYW4gYmUg cmVhZCBmcm9tIHRoZSBjaGlwIC0tIHdoaWNoIGZyZXF1ZW5jaWVzIGEKYm9hcmQgYWN0dWFsbHkg cHJlc2VudHMgb24gYSBnaXZlbiBpbnB1dCBpcyBhIGJvYXJkIGZhY3QgLS0gc28gdGhleSBjb21l CmZyb20gdGhlIGZpcm13YXJlIG5vZGUsIHdpdGggZGVmYXVsdHMgZm9yIGEgbm9kZSB0aGF0IGRv ZXMgbm90IGRlc2NyaWJlCnRoZW0uCgpJbnB1dCBwaW5zIGFyZSBpbnRlcmxlYXZlZCBQIGFuZCBO IGxhbmVzIG9mIGZvdXIgZGlmZmVyZW50aWFsIHBhaXJzLCBzbyBhCmxvZ2ljYWwgaW5kZXggbWFw cyB0byBhIHBhaXIgYW5kIGEgbGFuZSwgYW5kIGEgcGFpciBjb25maWd1cmVkCnNpbmdsZS1lbmRl ZCBwcmVzZW50cyB0d28gaW5kZXBlbmRlbnQgaW5wdXRzIHdoZXJlIGEgZGlmZmVyZW50aWFsIG9u ZQpwcmVzZW50cyBvbmUuICBUaGUgbGFiZWxzIGZvbGxvdyBmcm9tIHRoYXQsIGFuZCB0aGUgdHdv IGV4dHJhIGlucHV0CnBvc2l0aW9ucyAtLSB0aGUgY3J5c3RhbCBhbmQgdGhlIGludGVyLVBMTCBz eW5jIG5ldCAtLSBhcmUgbmFtZWQKc2VwYXJhdGVseS4KCk9uZSBvZiB0aGUgYWR2ZXJ0aXNlZCBw cm9wZXJ0aWVzIGlzIHdvcnRoIG5hbWluZy4gIEFuIG91dHB1dCB3aG9zZSBub2RlCmxpc3RzIG5v IHN1cHBvcnRlZCBmcmVxdWVuY2llcyBpcyBhZHZlcnRpc2VkIGFzIGEgY29udGludW91cyByYW5n ZSByYXRoZXIKdGhhbiBub3RoaW5nIGF0IGFsbCwgc2luY2UgdGhvc2UgcGlucyBkbyBhY2NlcHQg YSBmcmVxdWVuY3kgc2V0OyBhCnJlcXVlc3QgaW5zaWRlIHRoZSByYW5nZSB0aGF0IHRoZSBpbnRl Z2VyIG91dHB1dCBkaXZpZGVyIGNhbm5vdCBwcm9kdWNlCmlzIHJlZnVzZWQgd2hlbiBpdCBpcyBt YWRlLgoKS2VwdCBpbiBpdHMgb3duIGZpbGUsIGFuZCBpbnRyb2R1Y2VkIGJlZm9yZSBhbnl0aGlu ZyBpcyByZWdpc3RlcmVkLCBzbwp0aGUgcmVnaXN0cmF0aW9uIGNvZGUgdGhhdCBmb2xsb3dzIGhh cyBub3RoaW5nIHRvIHNheSBhYm91dCBmaXJtd2FyZS4KClNpZ25lZC1vZmYtYnk6IE9sZWcgWmFk b3JvemhueWkgPE9sZWcuWmFkb3JvemhueWlAZGV2b3hzb2Z0d2FyZS5jb20+CkFzc2lzdGVkLWJ5 OiBMTE0KU2lnbmVkLW9mZi1ieTogQWxpIFJvdWhpIDxhcm91aGlAc2l0aW1lLmNvbT4KUmV2aWV3 ZWQtYnk6IEl2YW4gVmVjZXJhIDxpdmVjZXJhQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9kcGxs L3NpdDk1MzF4L01ha2VmaWxlIHwgICAyICstCiBkcml2ZXJzL2RwbGwvc2l0OTUzMXgvY29yZS5o ICAgfCAgNjggKysrKysrCiBkcml2ZXJzL2RwbGwvc2l0OTUzMXgvcHJvcC5jICAgfCA0MjcgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2RwbGwvc2l0OTUzMXgvcHJv cC5oICAgfCAgMzcgKysrCiA0IGZpbGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kcGxsL3NpdDk1MzF4L3Byb3Au YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZHBsbC9zaXQ5NTMxeC9wcm9wLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvTWFrZWZpbGUgYi9kcml2ZXJzL2RwbGwvc2l0 OTUzMXgvTWFrZWZpbGUKaW5kZXggYTIyMWZlNTUzODZhLi44MTlhZjYxMTIzZjUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2RwbGwvc2l0 OTUzMXgvTWFrZWZpbGUKQEAgLTEsNCArMSw0IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkKIAogb2JqLSQoQ09ORklHX1NJVDk1MzFYX0RQTEwpICs9IHNpdDk1MzF4 Lm8KLXNpdDk1MzF4LXkgOj0gY29yZS5vCitzaXQ5NTMxeC15IDo9IGNvcmUubyBwcm9wLm8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9jb3JlLmggYi9kcml2ZXJzL2RwbGwvc2l0 OTUzMXgvY29yZS5oCmluZGV4IGEyNjNhZGYwZWYzNS4uNmUzNzYwMWM4YzU5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvY29yZS5oCisrKyBiL2RyaXZlcnMvZHBsbC9zaXQ5NTMx eC9jb3JlLmgKQEAgLTIzLDcgKzIzLDE3IEBACiAKICNkZWZpbmUgU0lUOTUzMVhfTlVNX1BMTFMJ CTQKICNkZWZpbmUgU0lUOTUzMVhfTUFYX0lOUFVUUwkJOAorI2RlZmluZSBTSVQ5NTMxWF9OVU1f SU5QVVRfUEFJUlMJKFNJVDk1MzFYX01BWF9JTlBVVFMgLyAyKQogI2RlZmluZSBTSVQ5NTMxWF9N QVhfT1VUUFVUUwkJMTIKKy8qCisgKiBJTlRTWU5DICh0aGUgaW50ZXItUExMIHN5bmMgbmV0KSBp cyBtb2RlbGVkIGFzIHR3byBwaW5zLiAgVGhlCisgKiBkZXN0aW5hdGlvbiBQTEwgdGhhdCBsb2Nr cyB0byBJTlRTWU5DIHNlZXMgYW4gaW5wdXQgcGluCisgKiAoU0lUOTUzMVhfSU5UU1lOQ19QSU5f SUQsIGluIHRoZSBpbnB1dCBpZCBuYW1lc3BhY2UgYWZ0ZXIgdGhlIHBoeXNpY2FsCisgKiBpbnB1 dHMgYW5kIHRoZSB4dGFsKTsgdGhlIHNvdXJjZSBQTEwgdGhhdCBkcml2ZXMgSU5UU1lOQyBzZWVz IGFuIG91dHB1dAorICogcGluIChTSVQ5NTMxWF9JTlRTWU5DX09VVF9QSU5fSUQsIGFwcGVuZGVk IGFmdGVyIHRoZSBwaHlzaWNhbCBvdXRwdXRzKS4KKyAqLworI2RlZmluZSBTSVQ5NTMxWF9JTlRT WU5DX1BJTl9JRAkJKFNJVDk1MzFYX01BWF9JTlBVVFMgKyAxKQorI2RlZmluZSBTSVQ5NTMxWF9J TlRTWU5DX09VVF9QSU5fSUQJU0lUOTUzMVhfTUFYX09VVFBVVFMKIAogLyoKICAqIHN0cnVjdCBz aXQ5NTMxeF9jaGlwX2luZm8gLSBjaGlwIHZhcmlhbnQgaWRlbnRpZmljYXRpb24KQEAgLTQxLDYg KzUxLDM1IEBAIHN0cnVjdCBzaXQ5NTMxeF9jaGlwX2luZm8gewogCWNvbnN0IHU4CSpjbGtvdXRf bWFwOwogfTsKIAorLyoKKyAqIGVudW0gc2l0OTUzMXhfc2lnbmFsX21vZGUgLSBpbnB1dCBzaWdu YWwgZWxlY3RyaWNhbCBtb2RlCisgKiBAU0lUOTUzMVhfTU9ERV9TRTogc2luZ2xlLWVuZGVkCisg KiBAU0lUOTUzMVhfTU9ERV9ERTogZGlmZmVyZW50aWFsCisgKi8KK2VudW0gc2l0OTUzMXhfc2ln bmFsX21vZGUgeworCVNJVDk1MzFYX01PREVfU0UgPSAwLAorCVNJVDk1MzFYX01PREVfREUsCit9 OworCisvKgorICogc3RydWN0IHNpdDk1MzF4X3JlZiAtIGlucHV0IHJlZmVyZW5jZSBzdGF0ZQor ICogQGZyZXE6CQljb25maWd1cmVkIGZyZXF1ZW5jeSBpbiBIegorICogQHNpZ19tb2RlOgkJc2ln bmFsIG1vZGUgb2YgdGhlIHBhaXIgdGhpcyBsYW5lIGJlbG9uZ3MgdG8KKyAqCQkJKGRldGVjdGVk IGZyb20gQ0xLSU54X0lOUFVUX01PREUgYXQgcHJvYmUpCisgKi8KK3N0cnVjdCBzaXQ5NTMxeF9y ZWYgeworCXU2NAkJZnJlcTsKKwllbnVtIHNpdDk1MzF4X3NpZ25hbF9tb2RlCXNpZ19tb2RlOwor fTsKKworLyoKKyAqIHN0cnVjdCBzaXQ5NTMxeF9vdXQgLSBvdXRwdXQgc3RhdGUKKyAqIEBmcmVx OgkJY29uZmlndXJlZCBmcmVxdWVuY3kgaW4gSHoKKyAqLworc3RydWN0IHNpdDk1MzF4X291dCB7 CisJdTY0CQlmcmVxOworfTsKKwogLyoKICAqIHN0cnVjdCBzaXQ5NTMxeF9kZXYgLSBTaVQ5NTMx eCBkZXZpY2UgaW5zdGFuY2UKICAqIEBkZXY6CQlwYXJlbnQgZGV2aWNlCkBAIC00OCw2ICs4Nyw4 IEBAIHN0cnVjdCBzaXQ5NTMxeF9jaGlwX2luZm8gewogICogQHJlZ21hcDoJCXBhZ2VkIHJlZ2lz dGVyIG1hcAogICogQGluZm86CQlkZXRlY3RlZCBjaGlwIHZhcmlhbnQgaW5mbwogICogQG11bHRp b3BfbG9jazoJc2VyaWFsaXplcyBtdWx0aS1yZWdpc3RlciBzZXF1ZW5jZXMKKyAqIEByZWY6CQlh cnJheSBvZiBpbnB1dCByZWZlcmVuY2Ugc3RhdGVzCisgKiBAb3V0OgkJYXJyYXkgb2Ygb3V0cHV0 IHN0YXRlcwogICogQHh0YWxfZnJlcToJCWNyeXN0YWwgb3NjaWxsYXRvciBmcmVxdWVuY3kgaW4g SHoKICAqIEByZXNldF9ncGlvOgkJb3B0aW9uYWwgcmVzZXQgbGluZSAoRFQgInJlc2V0LWdwaW9z IiksIE5VTEwgaWYgYWJzZW50CiAgKi8KQEAgLTU5LDExICsxMDAsMzggQEAgc3RydWN0IHNpdDk1 MzF4X2RldiB7CiAJLyogU2VyaWFsaXplcyBtdWx0aS1zdGVwIHJlZ2lzdGVyIHNlcXVlbmNlcyAq LwogCXN0cnVjdCBtdXRleAkJCW11bHRpb3BfbG9jazsKIAorCS8qIEhhcmR3YXJlIHN0YXRlICov CisJc3RydWN0IHNpdDk1MzF4X3JlZglyZWZbU0lUOTUzMVhfTUFYX0lOUFVUUyArIDFdOyAvKiAr MSBmb3IgeHRhbCAqLworCXN0cnVjdCBzaXQ5NTMxeF9vdXQJb3V0W1NJVDk1MzFYX01BWF9PVVRQ VVRTXTsKIAl1MzIJCQl4dGFsX2ZyZXE7CiAKIAlzdHJ1Y3QgZ3Bpb19kZXNjCSpyZXNldF9ncGlv OwogfTsKIAorLyoKKyAqIExvZ2ljYWwgaW5wdXQgcGlucyBhcmUgaW50ZXJsZWF2ZWQ6IGV2ZW4g aW5kZXggPSBQIGxhbmUsIG9kZAorICogaW5kZXggPSBOIGxhbmUgb2YgcGFpciBpbmRleC8yIChJ TjBQLCBJTjBOLCBJTjFQLCBJTjFOLCAuLi4pLgorICogSW5kZXggU0lUOTUzMVhfTUFYX0lOUFVU UyBpcyB0aGUgWE8gaW5wdXQuCisgKi8KKworLyoKKyAqIHNpdDk1MzF4X2lucHV0X3BhaXIgLSBn ZXQgaW5wdXQgcGFpciBudW1iZXIgZm9yIGEgbG9naWNhbCBpbnB1dCBpbmRleAorICogQGluZGV4 OiBsb2dpY2FsIGlucHV0IHBpbiBpbmRleAorICovCitzdGF0aWMgaW5saW5lIHU4IHNpdDk1MzF4 X2lucHV0X3BhaXIodTggaW5kZXgpCit7CisJcmV0dXJuIGluZGV4ID4+IDE7Cit9CisKKy8qCisg KiBzaXQ5NTMxeF9pbnB1dF9pc19uIC0gY2hlY2sgaWYgYSBsb2dpY2FsIGlucHV0IGluZGV4IGlz IGFuIE4gbGFuZQorICogQGluZGV4OiBsb2dpY2FsIGlucHV0IHBpbiBpbmRleAorICovCitzdGF0 aWMgaW5saW5lIGJvb2wgc2l0OTUzMXhfaW5wdXRfaXNfbih1OCBpbmRleCkKK3sKKwlyZXR1cm4g aW5kZXggJiAxOworfQorCiAvKgogICogc2l0OTUzMXhfcGxsX3BhZ2UgLSBnZXQgcmVnaXN0ZXIg cGFnZSBmb3IgUExMIGluZGV4CiAgKiBAcGxsX2lkeDogUExMIGluZGV4ICgwID0gUExMQSwgMyA9 IFBMTEQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RwbGwvc2l0OTUzMXgvcHJvcC5jIGIvZHJpdmVy cy9kcGxsL3NpdDk1MzF4L3Byb3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjhkZDFkM2ZlZmJiNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZHBsbC9zaXQ5 NTMxeC9wcm9wLmMKQEAgLTAsMCArMSw0MjcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCisvKgorICogU2lUaW1lIFNpVDk1MzF4IGZpcm13YXJlIG5vZGUgcHJvcGVydHkg cGFyc2luZworICoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBTaVRpbWUgQ29ycC4KKyAqIEF1dGhv cjogQWxpIFJvdWhpIDxhcm91aGlAc2l0aW1lLmNvbT4KKyAqIEF1dGhvcjogT2xlZyBaYWRvcm96 aG55aSA8T2xlZy5aYWRvcm96aG55aUBkZXZveHNvZnR3YXJlLmNvbT4KKyAqCisgKiBSZXRyaWV2 ZXMgcGluIHByb3BlcnRpZXMgZnJvbSBEZXZpY2UgVHJlZSBmaXJtd2FyZSBub2RlcyAob3IKKyAq IGFwcGxpZXMgZGVmYXVsdHMgd2hlbiBubyBmaXJtd2FyZSBub2RlIGV4aXN0cykuCisgKi8KKwor I2luY2x1ZGUgPGxpbnV4L2Rldl9wcmludGsuaD4KKyNpbmNsdWRlIDxsaW51eC9kcGxsLmg+Cisj aW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvZndub2RlLmg+CisjaW5jbHVk ZSA8bGludXgvcHJvcGVydHkuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8 bGludXgvc3RyaW5nLmg+CisKKyNpbmNsdWRlICJjb3JlLmgiCisjaW5jbHVkZSAicHJvcC5oIgor CisvKgorICogc2l0OTUzMXhfaW5wdXRfcGluX2xhYmVsIC0gZmlsbCB0aGUgcGFja2FnZSBsYWJl bCBmb3IgYW4gaW5wdXQgcGluCisgKgorICogU3BsaXQgb3V0IHNvIGlucHV0LW5hbWluZyBjaGFu Z2VzIHN0YXkgbG9jYWwgdG8gdGhpcyBoZWxwZXIuCisgKi8KK3N0YXRpYyB2b2lkIHNpdDk1MzF4 X2lucHV0X3Bpbl9sYWJlbChzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYsCisJCQkJICAgICBz dHJ1Y3Qgc2l0OTUzMXhfcGluX3Byb3BzICpwcm9wcywgdTggaWQpCit7CisJdTggcGFpciA9IHNp dDk1MzF4X2lucHV0X3BhaXIoaWQpOworCisJaWYgKHNpdGRldi0+cmVmW2lkXS5zaWdfbW9kZSA9 PSBTSVQ5NTMxWF9NT0RFX0RFKQorCQlzbnByaW50Zihwcm9wcy0+cGFja2FnZV9sYWJlbCwKKwkJ CSBzaXplb2YocHJvcHMtPnBhY2thZ2VfbGFiZWwpLCAiSU4ldSIsIHBhaXIpOworCWVsc2UKKwkJ c25wcmludGYocHJvcHMtPnBhY2thZ2VfbGFiZWwsCisJCQkgc2l6ZW9mKHByb3BzLT5wYWNrYWdl X2xhYmVsKSwgIklOJXUlYyIsIHBhaXIsCisJCQkgc2l0OTUzMXhfaW5wdXRfaXNfbihpZCkgPyAn TicgOiAnUCcpOworfQorCisvKgorICogc2l0OTUzMXhfcHJvcF9waW5fcGFja2FnZV9sYWJlbF9z ZXQgLSBnZW5lcmF0ZSBwYWNrYWdlIGxhYmVsCisgKiBAZGlyOglwaW4gZGlyZWN0aW9uCisgKiBA aWQ6CQlwaW4gaW5kZXgKKyAqCisgKiBHZW5lcmF0ZXMgYSBwYWNrYWdlIGxhYmVsIHN0cmluZy4g IE91dHB1dCBwaW5zIGFyZSBuYW1lZCAiT1VUMCIsCisgKiAiT1VUMSIsIC4uLiAgSW5wdXQgcGlu cyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIHBoeXNpY2FsIHBhaXIgYW5kIGxhbmU6CisgKiAiSU4wUCIs ICJJTjBOIiwgIklOMVAiLCAuLi4gZm9yIHNpbmdsZS1lbmRlZCBsYW5lcywgb3IgIklOMCIsCisg KiAiSU4xIiwgLi4uIHdoZW4gdGhlIHBhaXIgaXMgY29uZmlndXJlZCBkaWZmZXJlbnRpYWwgKHRo ZSBOIGxhbmUgaXMKKyAqIG5vdCByZWdpc3RlcmVkIGluIHRoYXQgY2FzZSkuCisgKi8KK3N0YXRp YyB2b2lkCitzaXQ5NTMxeF9wcm9wX3Bpbl9wYWNrYWdlX2xhYmVsX3NldChzdHJ1Y3Qgc2l0OTUz MXhfZGV2ICpzaXRkZXYsCisJCQkJICAgIHN0cnVjdCBzaXQ5NTMxeF9waW5fcHJvcHMgKnByb3Bz LAorCQkJCSAgICBlbnVtIGRwbGxfcGluX2RpcmVjdGlvbiBkaXIsIHU4IGlkKQoreworCS8qIFRo ZSBpbnRlcm5hbCBJTlRTWU5DIHBpbiBoYXMgYSBmaXhlZCBsYWJlbCAqLworCWlmIChkaXIgPT0g RFBMTF9QSU5fRElSRUNUSU9OX0lOUFVUICYmCisJICAgIGlkID09IFNJVDk1MzFYX0lOVFNZTkNf UElOX0lEKSB7CisJCXN0cnNjcHkocHJvcHMtPnBhY2thZ2VfbGFiZWwsICJJTlRTWU5DIiwKKwkJ CXNpemVvZihwcm9wcy0+cGFja2FnZV9sYWJlbCkpOworCQlwcm9wcy0+ZHBsbF9wcm9wcy5wYWNr YWdlX2xhYmVsID0gcHJvcHMtPnBhY2thZ2VfbGFiZWw7CisJCXJldHVybjsKKwl9CisKKwkvKiBU aGUgaW50ZXJuYWwgWE8gcmVmZXJlbmNlIGhhcyBhIGZpeGVkIGxhYmVsICovCisJaWYgKGRpciA9 PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQgJiYgaWQgPT0gU0lUOTUzMVhfTUFYX0lOUFVUUykg eworCQlzdHJzY3B5KHByb3BzLT5wYWNrYWdlX2xhYmVsLCAiWE8iLAorCQkJc2l6ZW9mKHByb3Bz LT5wYWNrYWdlX2xhYmVsKSk7CisJCXByb3BzLT5kcGxsX3Byb3BzLnBhY2thZ2VfbGFiZWwgPSBw cm9wcy0+cGFja2FnZV9sYWJlbDsKKwkJcmV0dXJuOworCX0KKworCS8qIFRoZSBpbnRlcm5hbCBJ TlRTWU5DIHNvdXJjZSAob3V0cHV0KSBwaW4gaGFzIGEgZml4ZWQgbGFiZWwgKi8KKwlpZiAoZGly ID09IERQTExfUElOX0RJUkVDVElPTl9PVVRQVVQgJiYKKwkgICAgaWQgPT0gU0lUOTUzMVhfSU5U U1lOQ19PVVRfUElOX0lEKSB7CisJCXN0cnNjcHkocHJvcHMtPnBhY2thZ2VfbGFiZWwsICJTWU5D T1VUIiwKKwkJCXNpemVvZihwcm9wcy0+cGFja2FnZV9sYWJlbCkpOworCQlwcm9wcy0+ZHBsbF9w cm9wcy5wYWNrYWdlX2xhYmVsID0gcHJvcHMtPnBhY2thZ2VfbGFiZWw7CisJCXJldHVybjsKKwl9 CisKKwlpZiAoZGlyID09IERQTExfUElOX0RJUkVDVElPTl9JTlBVVCkKKwkJc2l0OTUzMXhfaW5w dXRfcGluX2xhYmVsKHNpdGRldiwgcHJvcHMsIGlkKTsKKwllbHNlCisJCS8qCisJCSAqIE5hbWUg dGhlIGNoaXAgcGluLCBub3QgdGhlIGRyaXZlcidzIGluZGV4IGZvciBpdC4gIFRoZQorCQkgKiB0 d28gZGlmZmVyIG9uIHRoZSB2YXJpYW50IHdob3NlIG91dHB1dHMgYXJlIGJvbmRlZCBvdXQKKwkJ ICogZnJvbSBhIHN1YnNldCBvZiB0aGUgdHdlbHZlIHNsb3RzLCBhbmQgYSBwYWNrYWdlIGxhYmVs CisJCSAqIHRoYXQgbmFtZWQgdGhlIGluZGV4IHdvdWxkIHBvaW50IGF0IGEgcGluIHRoYXQgaXMg bm90CisJCSAqIHRoZSBvbmUgYmVpbmcgZHJpdmVuLgorCQkgKi8KKwkJc25wcmludGYocHJvcHMt PnBhY2thZ2VfbGFiZWwsIHNpemVvZihwcm9wcy0+cGFja2FnZV9sYWJlbCksCisJCQkgIk9VVCV1 Iiwgc2l0ZGV2LT5pbmZvLT5jbGtvdXRfbWFwW2lkXSk7CisKKwlwcm9wcy0+ZHBsbF9wcm9wcy5w YWNrYWdlX2xhYmVsID0gcHJvcHMtPnBhY2thZ2VfbGFiZWw7Cit9CisKKy8qCisgKiBzaXQ5NTMx eF9wcm9wX3Bpbl9md25vZGVfZ2V0IC0gZmluZCBmaXJtd2FyZSBub2RlIGZvciBhIHBpbgorICog QGRpcjoJcGluIGRpcmVjdGlvbgorICogQGlkOgkJcGluIGluZGV4CisgKgorICogU2VhcmNoZXMg Zm9yIGlucHV0LXBpbnMvb3V0cHV0LXBpbnMgY2hpbGQgbm9kZXMgaW4gRFQsIGxvb2tpbmcgZm9y IGEKKyAqIGNoaWxkIHdob3NlICJyZWciIHByb3BlcnR5IG1hdGNoZXMgdGhlIHBpbi4gIFRoZSBi aW5kaW5nIGRlc2NyaWJlcyByZWcKKyAqIGFzIHRoZSBoYXJkd2FyZSBpbmRleCwgc28gYW4gb3V0 cHV0IGlzIG1hdGNoZWQgYnkgdGhlIGNoaXAgc2xvdCBpdAorICogZHJpdmVzIHJhdGhlciB0aGFu IGJ5IHRoZSBkcml2ZXIncyBpbmRleCBmb3IgaXQ6IG9uIHRoZSB2YXJpYW50IHdoZXJlCisgKiB0 aGUgdHdvIGRpZmZlciwgYSBib2FyZCBkZXNjcmliaW5nIHRoZSBwaW4gaXQgd2lyZWQgd291bGQg b3RoZXJ3aXNlCisgKiBoYXZlIGl0cyBwcm9wZXJ0aWVzIGFwcGxpZWQgdG8gYSBkaWZmZXJlbnQg b25lLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCAtRU5PRU5UIGlmIG5vIGZpcm13YXJl IG5vZGUgZXhpc3RzCisgKi8KK3N0YXRpYyBpbnQKK3NpdDk1MzF4X3Byb3BfcGluX2Z3bm9kZV9n ZXQoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LAorCQkJICAgICBzdHJ1Y3Qgc2l0OTUzMXhf cGluX3Byb3BzICpwcm9wcywKKwkJCSAgICAgZW51bSBkcGxsX3Bpbl9kaXJlY3Rpb24gZGlyLCB1 OCBpZCkKK3sKKwlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqcGluc19ub2RlLCAqcGluX25vZGU7CisJ Y29uc3QgY2hhciAqbm9kZV9uYW1lOworCisJaWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05f SU5QVVQpIHsKKwkJbm9kZV9uYW1lID0gImlucHV0LXBpbnMiOworCX0gZWxzZSB7CisJCW5vZGVf bmFtZSA9ICJvdXRwdXQtcGlucyI7CisJCWlmIChpZCA8IHNpdGRldi0+aW5mby0+bnVtX291dHB1 dHMpCisJCQlpZCA9IHNpdGRldi0+aW5mby0+Y2xrb3V0X21hcFtpZF07CisJfQorCisJcGluc19u b2RlID0gZGV2aWNlX2dldF9uYW1lZF9jaGlsZF9ub2RlKHNpdGRldi0+ZGV2LCBub2RlX25hbWUp OworCWlmICghcGluc19ub2RlKSB7CisJCWRldl9kYmcoc2l0ZGV2LT5kZXYsICInJXMnIHN1Yi1u b2RlIGlzIG1pc3NpbmdcbiIsIG5vZGVfbmFtZSk7CisJCXJldHVybiAtRU5PRU5UOworCX0KKwor CS8qIEVudW1lcmF0ZSBjaGlsZCBwaW4gbm9kZXMgYW5kIGZpbmQgdGhlIHJlcXVlc3RlZCBvbmUg Ki8KKwlmd25vZGVfZm9yX2VhY2hfY2hpbGRfbm9kZShwaW5zX25vZGUsIHBpbl9ub2RlKSB7CisJ CXUzMiByZWc7CisKKwkJaWYgKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMihwaW5fbm9kZSwgInJl ZyIsICZyZWcpKQorCQkJY29udGludWU7CisKKwkJaWYgKGlkID09IHJlZykKKwkJCWJyZWFrOwor CX0KKworCWZ3bm9kZV9oYW5kbGVfcHV0KHBpbnNfbm9kZSk7CisKKwlwcm9wcy0+Zndub2RlID0g cGluX25vZGU7CisKKwlkZXZfZGJnKHNpdGRldi0+ZGV2LCAiRmlybXdhcmUgbm9kZSBmb3IgJXMg JXNmb3VuZFxuIiwKKwkJcHJvcHMtPnBhY2thZ2VfbGFiZWwsIHBpbl9ub2RlID8gIiIgOiAiTk9U ICIpOworCisJcmV0dXJuIHBpbl9ub2RlID8gMCA6IC1FTk9FTlQ7Cit9CisKKy8qCisgKiBzaXQ5 NTMxeF9waW5fcHJvcHNfZ2V0IC0gZ2V0IHBpbiBwcm9wZXJ0aWVzIGZvciBhIGdpdmVuIHBpbgor ICogQGRpcjoJcGluIGRpcmVjdGlvbiAoSU5QVVQgb3IgT1VUUFVUKQorICogQGluZGV4OglwaW4g aW5kZXgKKyAqCisgKiBBbGxvY2F0ZXMgYSBwaW4gcHJvcGVydGllcyBzdHJ1Y3R1cmUsIGdlbmVy YXRlcyBhIHBhY2thZ2UgbGFiZWwsCisgKiBsb29rcyB1cCB0aGUgZmlybXdhcmUgbm9kZSBpZiBh dmFpbGFibGUsIGFuZCByZWFkcyBvcHRpb25hbAorICogcHJvcGVydGllcyAobGFiZWwsIGNvbm5l Y3Rpb24tdHlwZSwgc3VwcG9ydGVkLWZyZXF1ZW5jaWVzLWh6KS4KKyAqCisgKiBDYWxsIHNpdDk1 MzF4X3Bpbl9wcm9wc19wdXQoKSB0byBmcmVlIHRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUuCisgKgor ICogUmV0dXJuOiBwb2ludGVyIHRvIHBpbiBwcm9wZXJ0aWVzIG9uIHN1Y2Nlc3MsIGVycm9yIHBv aW50ZXIgb24gZXJyb3IKKyAqLworc3RydWN0IHNpdDk1MzF4X3Bpbl9wcm9wcyAqCitzaXQ5NTMx eF9waW5fcHJvcHNfZ2V0KHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwKKwkJICAgICAgIGVu dW0gZHBsbF9waW5fZGlyZWN0aW9uIGRpciwgdTggaW5kZXgpCit7CisJc3RydWN0IGRwbGxfcGlu X2ZyZXF1ZW5jeSAqcmFuZ2VzOworCXN0cnVjdCBzaXQ5NTMxeF9waW5fcHJvcHMgKnByb3BzOwor CWludCBpLCBqLCBudW1fZnJlcXMgPSAwLCByYzsKKwl1MzIgKmZyZXFzID0gTlVMTDsKKwljb25z dCBjaGFyICp0eXBlOworCXU2NCBjdXJyX2ZyZXE7CisKKwlwcm9wcyA9IGt6YWxsb2Nfb2JqKCpw cm9wcywgR0ZQX0tFUk5FTCk7CisJaWYgKCFwcm9wcykKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CisKKwlpZiAoZGlyID09IERQTExfUElOX0RJUkVDVElPTl9JTlBVVCAmJgorCSAgICBpbmRl eCA9PSBTSVQ5NTMxWF9JTlRTWU5DX1BJTl9JRCkgeworCQkvKgorCQkgKiBJTlRTWU5DIGRlc3Rp bmF0aW9uIHBpbjogYSBQTEwgbG9ja3MgdG8gdGhlIElOVFNZTkMgbmV0IGFzIGEKKwkJICogcmVm ZXJlbmNlLCBzbyBpdCBjYW4gYmUgY29ubmVjdGVkLgorCQkgKi8KKwkJcHJvcHMtPmRwbGxfcHJv cHMudHlwZSA9IERQTExfUElOX1RZUEVfSU5UX09TQ0lMTEFUT1I7CisJCXByb3BzLT5kcGxsX3By b3BzLmNhcGFiaWxpdGllcyA9CisJCQlEUExMX1BJTl9DQVBBQklMSVRJRVNfU1RBVEVfQ0FOX0NI QU5HRTsKKwkJY3Vycl9mcmVxID0gMDsKKwl9IGVsc2UgaWYgKGRpciA9PSBEUExMX1BJTl9ESVJF Q1RJT05fT1VUUFVUICYmCisJCSAgIGluZGV4ID09IFNJVDk1MzFYX0lOVFNZTkNfT1VUX1BJTl9J RCkgeworCQkvKgorCQkgKiBJTlRTWU5DIHNvdXJjZSBwaW46IGEgUExMIGRyaXZlcyB0aGUgSU5U U1lOQyBuZXQuICBJdCBjYW4gYmUKKwkJICogY29ubmVjdGVkL2Rpc2Nvbm5lY3RlZCBidXQgY2Fy cmllcyBubyBwcmlvcml0eSAoZHJpdmluZyB0aGUKKwkJICogbmV0IGlzIG5vdCBhIHJlZmVyZW5j ZSBzZWxlY3Rpb24pIGFuZCBubyBmcmVxdWVuY3kuCisJCSAqLworCQlwcm9wcy0+ZHBsbF9wcm9w cy50eXBlID0gRFBMTF9QSU5fVFlQRV9JTlRfT1NDSUxMQVRPUjsKKwkJcHJvcHMtPmRwbGxfcHJv cHMuY2FwYWJpbGl0aWVzID0KKwkJCURQTExfUElOX0NBUEFCSUxJVElFU19TVEFURV9DQU5fQ0hB TkdFOworCQljdXJyX2ZyZXEgPSAwOworCX0gZWxzZSBpZiAoZGlyID09IERQTExfUElOX0RJUkVD VElPTl9JTlBVVCAmJgorCQkgICBpbmRleCA9PSBTSVQ5NTMxWF9NQVhfSU5QVVRTKSB7CisJCS8q IFRoZSBYTyByZWZlcmVuY2UgaXMgZml4ZWQ6IG5vIHN0YXRlIG9yIHByaW9yaXR5IGNvbnRyb2wu ICovCisJCXByb3BzLT5kcGxsX3Byb3BzLnR5cGUgPSBEUExMX1BJTl9UWVBFX0lOVF9PU0NJTExB VE9SOworCQlwcm9wcy0+ZHBsbF9wcm9wcy5jYXBhYmlsaXRpZXMgPSAwOworCQljdXJyX2ZyZXEg PSBzaXRkZXYtPnh0YWxfZnJlcTsKKwl9IGVsc2UgaWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJ T05fSU5QVVQpIHsKKwkJcHJvcHMtPmRwbGxfcHJvcHMudHlwZSA9IERQTExfUElOX1RZUEVfRVhU OworCQlwcm9wcy0+ZHBsbF9wcm9wcy5jYXBhYmlsaXRpZXMgPQorCQkJRFBMTF9QSU5fQ0FQQUJJ TElUSUVTX1NUQVRFX0NBTl9DSEFOR0U7CisJCWN1cnJfZnJlcSA9IHNpdGRldi0+cmVmW2luZGV4 XS5mcmVxOworCX0gZWxzZSB7CisJCS8qCisJCSAqIEEgc3ludGhlc2l6ZWQgY2xvY2sgb3V0cHV0 IGlzIGFuIGV4dGVybmFsIGNvbm5lY3Rpb24gd2l0aAorCQkgKiBubyBtb3JlIHNwZWNpZmljIG1l YW5pbmc7IGEgYm9hcmQgdGhhdCBrbm93cyBiZXR0ZXIgc2F5cworCQkgKiBzbyB0aHJvdWdoIHRo ZSBwaW4ncyBjb25uZWN0aW9uLXR5cGUgcHJvcGVydHkgYmVsb3cuCisJCSAqLworCQlwcm9wcy0+ ZHBsbF9wcm9wcy50eXBlID0gRFBMTF9QSU5fVFlQRV9FWFQ7CisJCXByb3BzLT5kcGxsX3Byb3Bz LmNhcGFiaWxpdGllcyA9CisJCQlEUExMX1BJTl9DQVBBQklMSVRJRVNfU1RBVEVfQ0FOX0NIQU5H RTsKKwkJY3Vycl9mcmVxID0gc2l0ZGV2LT5vdXRbaW5kZXhdLmZyZXE7CisJfQorCisJLyogR2Vu ZXJhdGUgcGFja2FnZSBsYWJlbCAqLworCXNpdDk1MzF4X3Byb3BfcGluX3BhY2thZ2VfbGFiZWxf c2V0KHNpdGRldiwgcHJvcHMsIGRpciwgaW5kZXgpOworCisJLyoKKwkgKiBCb3RoIElOVFNZTkMg cGlucyBhcmUgaW50ZXJuYWwgdG8gdGhlIGNoaXAgYW5kIGhhdmUgbm8gYm9hcmQtbGV2ZWwKKwkg KiB3aXJpbmcsIHNvIHRoZXkgdGFrZSBubyBwcm9wZXJ0aWVzIGZyb20gdGhlIGZpcm13YXJlIG5v ZGUuCisJICovCisJaWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQgJiYKKwkgICAg KGluZGV4ID09IFNJVDk1MzFYX0lOVFNZTkNfUElOX0lEIHx8CisJICAgICBpbmRleCA9PSBTSVQ5 NTMxWF9NQVhfSU5QVVRTKSkKKwkJZ290byBza2lwX2Z3bm9kZV9wcm9wczsKKwlpZiAoZGlyID09 IERQTExfUElOX0RJUkVDVElPTl9PVVRQVVQgJiYKKwkgICAgaW5kZXggPT0gU0lUOTUzMVhfSU5U U1lOQ19PVVRfUElOX0lEKQorCQlnb3RvIHNraXBfZndub2RlX3Byb3BzOworCisJcmMgPSBzaXQ5 NTMxeF9wcm9wX3Bpbl9md25vZGVfZ2V0KHNpdGRldiwgcHJvcHMsIGRpciwgaW5kZXgpOworCWlm IChyYykKKwkJZ290byBza2lwX2Z3bm9kZV9wcm9wczsKKworCS8qIExvb2sgZm9yICJsYWJlbCIg cHJvcGVydHkgLT4gYm9hcmQgbGFiZWwgKi8KKwlmd25vZGVfcHJvcGVydHlfcmVhZF9zdHJpbmco cHJvcHMtPmZ3bm9kZSwgImxhYmVsIiwKKwkJCQkgICAgJnByb3BzLT5kcGxsX3Byb3BzLmJvYXJk X2xhYmVsKTsKKworCS8qIExvb2sgZm9yICJjb25uZWN0aW9uLXR5cGUiIHByb3BlcnR5IC0+IHBp biB0eXBlIGVudW0gKi8KKwlpZiAoIWZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZyhwcm9wcy0+ Zndub2RlLCAiY29ubmVjdGlvbi10eXBlIiwKKwkJCQkJICZ0eXBlKSkgeworCQlpZiAoIXN0cmNt cCh0eXBlLCAiZXh0IikpCisJCQlwcm9wcy0+ZHBsbF9wcm9wcy50eXBlID0gRFBMTF9QSU5fVFlQ RV9FWFQ7CisJCWVsc2UgaWYgKCFzdHJjbXAodHlwZSwgImduc3MiKSkKKwkJCXByb3BzLT5kcGxs X3Byb3BzLnR5cGUgPSBEUExMX1BJTl9UWVBFX0dOU1M7CisJCWVsc2UgaWYgKCFzdHJjbXAodHlw ZSwgImludCIpKQorCQkJcHJvcHMtPmRwbGxfcHJvcHMudHlwZSA9IERQTExfUElOX1RZUEVfSU5U X09TQ0lMTEFUT1I7CisJCWVsc2UgaWYgKCFzdHJjbXAodHlwZSwgInN5bmNlIikpCisJCQlwcm9w cy0+ZHBsbF9wcm9wcy50eXBlID0gRFBMTF9QSU5fVFlQRV9TWU5DRV9FVEhfUE9SVDsKKwkJZWxz ZSBpZiAoIXN0cmNtcCh0eXBlLCAibXV4IikpCisJCQlwcm9wcy0+ZHBsbF9wcm9wcy50eXBlID0g RFBMTF9QSU5fVFlQRV9NVVg7CisJCWVsc2UKKwkJCWRldl93YXJuKHNpdGRldi0+ZGV2LAorCQkJ CSAiVW5rbm93biBwaW4gdHlwZSAnJXMnXG4iLCB0eXBlKTsKKwl9CisKKwkvKiBBIC1oeiBwcm9w ZXJ0eSBpcyAzMi1iaXQ7IG5vIHJhdGUgb2YgdGhpcyBwYXJ0IG5lZWRzIG1vcmUuICovCisJbnVt X2ZyZXFzID0gZndub2RlX3Byb3BlcnR5X2NvdW50X3UzMihwcm9wcy0+Zndub2RlLAorCQkJCQkg ICAgICAic3VwcG9ydGVkLWZyZXF1ZW5jaWVzLWh6Iik7CisJaWYgKG51bV9mcmVxcyA8PSAwKSB7 CisJCW51bV9mcmVxcyA9IDA7CisJCWdvdG8gc2tpcF9md25vZGVfcHJvcHM7CisJfQorCisJZnJl cXMgPSBrY2FsbG9jKG51bV9mcmVxcywgc2l6ZW9mKCpmcmVxcyksIEdGUF9LRVJORUwpOworCWlm ICghZnJlcXMpIHsKKwkJcmMgPSAtRU5PTUVNOworCQlnb3RvIGVycl9hbGxvY19mcmVxczsKKwl9 CisKKwlyYyA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShwcm9wcy0+Zndub2RlLAor CQkJCQkgICAgInN1cHBvcnRlZC1mcmVxdWVuY2llcy1oeiIsCisJCQkJCSAgICBmcmVxcywgbnVt X2ZyZXFzKTsKKwlpZiAocmMpIHsKKwkJZGV2X3dhcm4oc2l0ZGV2LT5kZXYsCisJCQkgImZhaWxl ZCB0byBwYXJzZSBzdXBwb3J0ZWQtZnJlcXVlbmNpZXMtaHogZm9yICVzOiAlZFxuIiwKKwkJCSBw cm9wcy0+cGFja2FnZV9sYWJlbCwgcmMpOworCQlnb3RvIGVycl9hbGxvY19yYW5nZXM7CisJfQor CisJLyoKKwkgKiBTZWVkIGFuIGlucHV0J3MgcnVudGltZSByZWYtPmZyZXEgd2l0aCB0aGUgZmly c3QgRFQtbGlzdGVkCisJICogc3VwcG9ydGVkIGZyZXF1ZW5jeTogZm9yIGFuIGlucHV0IHRoZSBi b2FyZCBsaXN0cyB0aGUgcmF0ZSB0aGF0IGlzCisJICogcGh5c2ljYWxseSB3aXJlZCB0byBpdCBm aXJzdC4gIEFuIG91dHB1dCdzIGN1cnJlbnQgcmF0ZSBpcyB3aGF0IGl0cworCSAqIGRpdmlkZXIg cHJvZHVjZXMsIG5vdCBhbiBlbnRyeSBvZiB0aGUgbGlzdCBpdCBtYXkgYmUgc2V0IHRvLgorCSAq LworCWlmIChudW1fZnJlcXMgPiAwICYmIGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQg JiYKKwkgICAgaW5kZXggIT0gU0lUOTUzMVhfTUFYX0lOUFVUUykKKwkJY3Vycl9mcmVxID0gZnJl cXNbMF07CisKK3NraXBfZndub2RlX3Byb3BzOgorCS8qIE5laXRoZXIgSU5UU1lOQyBwaW4gY2Fy cmllcyBhIGZyZXF1ZW5jeSBhdHRyaWJ1dGUgKi8KKwlpZiAoZGlyID09IERQTExfUElOX0RJUkVD VElPTl9JTlBVVCAmJgorCSAgICBpbmRleCA9PSBTSVQ5NTMxWF9JTlRTWU5DX1BJTl9JRCkKKwkJ cmV0dXJuIHByb3BzOworCWlmIChkaXIgPT0gRFBMTF9QSU5fRElSRUNUSU9OX09VVFBVVCAmJgor CSAgICBpbmRleCA9PSBTSVQ5NTMxWF9JTlRTWU5DX09VVF9QSU5fSUQpCisJCXJldHVybiBwcm9w czsKKworCS8qCisJICogQWR2ZXJ0aXNlIG9ubHkgY29uY3JldGUgdmFsdWVzIGZyb20gZmlybXdh cmUgcGx1cyBjdXJyZW50IHJ1bnRpbWUKKwkgKiB2YWx1ZS4gRm9yIG91dHB1dHMgd2l0aG91dCBh IGZpcm13YXJlIGxpc3QsIHB1Ymxpc2ggb25lIHdpZGUgcmFuZ2UgYXMKKwkgKiBhbiBleHBsaWNp dCBmYWxsYmFjayBiZWNhdXNlIHRob3NlIHBpbnMgZG8gc3VwcG9ydCBmcmVxdWVuY3lfc2V0Lgor CSAqLworCXJhbmdlcyA9IGtjYWxsb2MobnVtX2ZyZXFzICsgMiwgc2l6ZW9mKCpyYW5nZXMpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIXJhbmdlcykgeworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gZXJy X2FsbG9jX3JhbmdlczsKKwl9CisKKwkvKgorCSAqIFB1Ymxpc2ggdGhlIHNlZWRlZCByYXRlIG9u bHkgb25jZSB0aGUgcGluIGlzIGNlcnRhaW4gdG8gYmUgYnVpbHQuCisJICogVGhlIGFsbG9jYXRp b24gYWJvdmUgaXMgdGhlIGxhc3QgdGhpbmcgdGhhdCBjYW4gZmFpbCwgYW5kIGEgY2FsbAorCSAq IHRoYXQgcmVwb3J0cyBmYWlsdXJlIG11c3Qgbm90IGxlYXZlIHRoZSBkZXZpY2UncyBjYWNoZWQg cmF0ZQorCSAqIGNoYW5nZWQgYmVoaW5kIGl0LgorCSAqLworCWlmIChjdXJyX2ZyZXEpIHsKKwkJ aWYgKGRpciA9PSBEUExMX1BJTl9ESVJFQ1RJT05fSU5QVVQpCisJCQlzaXRkZXYtPnJlZltpbmRl eF0uZnJlcSA9IGN1cnJfZnJlcTsKKwkJZWxzZQorCQkJc2l0ZGV2LT5vdXRbaW5kZXhdLmZyZXEg PSBjdXJyX2ZyZXE7CisJfQorCisJaiA9IDA7CisKKwkvKiBDdXJyZW50IGZyZXF1ZW5jeSBmaXJz dCwgd2hlbiBrbm93bi4gKi8KKwlpZiAoY3Vycl9mcmVxKSB7CisJCXN0cnVjdCBkcGxsX3Bpbl9m cmVxdWVuY3kgZiA9IERQTExfUElOX0ZSRVFVRU5DWShjdXJyX2ZyZXEpOworCisJCXJhbmdlc1tq KytdID0gZjsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZyZXFzOyBpKyspIHsKKwkJc3Ry dWN0IGRwbGxfcGluX2ZyZXF1ZW5jeSBmcmVxID0gRFBMTF9QSU5fRlJFUVVFTkNZKGZyZXFzW2ld KTsKKworCQlpZiAoZnJlcXNbaV0gPT0gY3Vycl9mcmVxKQorCQkJY29udGludWU7CisJCXJhbmdl c1tqKytdID0gZnJlcTsKKwl9CisKKwlpZiAoZGlyID09IERQTExfUElOX0RJUkVDVElPTl9PVVRQ VVQgJiYgbnVtX2ZyZXFzID09IDApIHsKKwkJcmFuZ2VzW2pdLm1pbiA9IDE7CisJCXJhbmdlc1tq XS5tYXggPSAxMDAwMDAwMDAwVUxMOyAvKiAxIEdIeiAqLworCQlqKys7CisJfQorCisJaWYgKGog PiAwKSB7CisJCXByb3BzLT5kcGxsX3Byb3BzLmZyZXFfc3VwcG9ydGVkID0gcmFuZ2VzOworCQlw cm9wcy0+ZHBsbF9wcm9wcy5mcmVxX3N1cHBvcnRlZF9udW0gPSBqOworCX0gZWxzZSB7CisJCWtm cmVlKHJhbmdlcyk7CisJCXByb3BzLT5kcGxsX3Byb3BzLmZyZXFfc3VwcG9ydGVkID0gTlVMTDsK KwkJcHJvcHMtPmRwbGxfcHJvcHMuZnJlcV9zdXBwb3J0ZWRfbnVtID0gMDsKKwl9CisKKwlrZnJl ZShmcmVxcyk7CisKKwlyZXR1cm4gcHJvcHM7CisKK2Vycl9hbGxvY19yYW5nZXM6CisJa2ZyZWUo ZnJlcXMpOworZXJyX2FsbG9jX2ZyZXFzOgorCWZ3bm9kZV9oYW5kbGVfcHV0KHByb3BzLT5md25v ZGUpOworCWtmcmVlKHByb3BzKTsKKworCXJldHVybiBFUlJfUFRSKHJjKTsKK30KKworLyoKKyAq IHNpdDk1MzF4X3Bpbl9wcm9wc19wdXQgLSByZWxlYXNlIHBpbiBwcm9wZXJ0aWVzCisgKiBAcHJv cHM6CXBpbiBwcm9wZXJ0aWVzIHRvIGZyZWUKKyAqLwordm9pZCBzaXQ5NTMxeF9waW5fcHJvcHNf cHV0KHN0cnVjdCBzaXQ5NTMxeF9waW5fcHJvcHMgKnByb3BzKQoreworCWtmcmVlKHByb3BzLT5k cGxsX3Byb3BzLmZyZXFfc3VwcG9ydGVkKTsKKworCWlmIChwcm9wcy0+Zndub2RlKQorCQlmd25v ZGVfaGFuZGxlX3B1dChwcm9wcy0+Zndub2RlKTsKKworCWtmcmVlKHByb3BzKTsKK30KKworLyoK KyAqIHNpdDk1MzF4X3Byb3BfZHBsbF90eXBlX2dldCAtIGdldCBEUExMIGNoYW5uZWwgdHlwZSBm cm9tIGZpcm13YXJlCisgKiBAaW5kZXg6CURQTEwgY2hhbm5lbCBpbmRleCAoMC0zKQorICoKKyAq IFJlYWRzIHRoZSAiZHBsbC10eXBlcyIgc3RyaW5nIGFycmF5IHByb3BlcnR5IGZyb20gdGhlIGZp cm13YXJlIG5vZGUKKyAqIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIERQTEwgdHlwZSBl bnVtLgorICoKKyAqIFJldHVybjogRFBMTCB0eXBlIGZvciB0aGUgZ2l2ZW4gY2hhbm5lbCAoZGVm YXVsdDogRFBMTF9UWVBFX1BQUykKKyAqLworZW51bSBkcGxsX3R5cGUKK3NpdDk1MzF4X3Byb3Bf ZHBsbF90eXBlX2dldChzdHJ1Y3Qgc2l0OTUzMXhfZGV2ICpzaXRkZXYsIHU4IGluZGV4KQorewor CWNvbnN0IGNoYXIgKnR5cGVzW1NJVDk1MzFYX05VTV9QTExTXTsKKwlpbnQgY291bnQ7CisKKwlj b3VudCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3N0cmluZ19hcnJheShzaXRkZXYtPmRldiwgImRw bGwtdHlwZXMiLAorCQkJCQkJICB0eXBlcywgQVJSQVlfU0laRSh0eXBlcykpOworCisJaWYgKGlu ZGV4ID49IGNvdW50KQorCQlyZXR1cm4gRFBMTF9UWVBFX1BQUzsKKworCWlmICghc3RyY21wKHR5 cGVzW2luZGV4XSwgInBwcyIpKQorCQlyZXR1cm4gRFBMTF9UWVBFX1BQUzsKKwllbHNlIGlmICgh c3RyY21wKHR5cGVzW2luZGV4XSwgImVlYyIpKQorCQlyZXR1cm4gRFBMTF9UWVBFX0VFQzsKKwor CWRldl93YXJuKHNpdGRldi0+ZGV2LCAiVW5rbm93biBEUExMIHR5cGUgJyVzJywgdXNpbmcgZGVm YXVsdFxuIiwKKwkJIHR5cGVzW2luZGV4XSk7CisKKwlyZXR1cm4gRFBMTF9UWVBFX1BQUzsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZHBsbC9zaXQ5NTMxeC9wcm9wLmggYi9kcml2ZXJzL2RwbGwv c2l0OTUzMXgvcHJvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YTY1ZWZkZmQ5ZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9kcGxsL3NpdDk1MzF4L3By b3AuaApAQCAtMCwwICsxLDM3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCAqLworLyoKKyAqIFNpVGltZSBTaVQ5NTMxeCBmaXJtd2FyZSBub2RlIHByb3BlcnR5IHBhcnNp bmcKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgU2lUaW1lIENvcnAuCisgKiBBdXRob3I6IEFs aSBSb3VoaSA8YXJvdWhpQHNpdGltZS5jb20+CisgKiBBdXRob3I6IE9sZWcgWmFkb3JvemhueWkg PE9sZWcuWmFkb3JvemhueWlAZGV2b3hzb2Z0d2FyZS5jb20+CisgKi8KKworI2lmbmRlZiBfU0lU OTUzMVhfUFJPUF9ICisjZGVmaW5lIF9TSVQ5NTMxWF9QUk9QX0gKKworI2luY2x1ZGUgPGxpbnV4 L2RwbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9md25vZGUuaD4KKworc3RydWN0IHNpdDk1MzF4X2Rl djsKKworLyoKKyAqIHN0cnVjdCBzaXQ5NTMxeF9waW5fcHJvcHMgLSBwaW4gcHJvcGVydGllcyBm cm9tIGZpcm13YXJlCisgKiBAZndub2RlOgkJZmlybXdhcmUgbm9kZSBoYW5kbGUgKE5VTEwgaWYg bm8gRFQgbm9kZSkKKyAqIEBkcGxsX3Byb3BzOgkJRFBMTCBjb3JlIHBpbiBwcm9wZXJ0aWVzCisg KiBAcGFja2FnZV9sYWJlbDoJcGluIHBhY2thZ2UgbGFiZWwgKGUuZy4gIklOMCIsICJPVVQzIikK KyAqLworc3RydWN0IHNpdDk1MzF4X3Bpbl9wcm9wcyB7CisJc3RydWN0IGZ3bm9kZV9oYW5kbGUJ CSpmd25vZGU7CisJc3RydWN0IGRwbGxfcGluX3Byb3BlcnRpZXMJZHBsbF9wcm9wczsKKwljaGFy CQkJCXBhY2thZ2VfbGFiZWxbOF07Cit9OworCitlbnVtIGRwbGxfdHlwZSBzaXQ5NTMxeF9wcm9w X2RwbGxfdHlwZV9nZXQoc3RydWN0IHNpdDk1MzF4X2RldiAqc2l0ZGV2LAorCQkJCQkgICB1OCBp bmRleCk7CitzdHJ1Y3Qgc2l0OTUzMXhfcGluX3Byb3BzICpzaXQ5NTMxeF9waW5fcHJvcHNfZ2V0 KHN0cnVjdCBzaXQ5NTMxeF9kZXYgKnNpdGRldiwKKwkJCQkJCSAgZW51bSBkcGxsX3Bpbl9kaXJl Y3Rpb24gZGlyLAorCQkJCQkJICB1OCBpbmRleCk7Cit2b2lkIHNpdDk1MzF4X3Bpbl9wcm9wc19w dXQoc3RydWN0IHNpdDk1MzF4X3Bpbl9wcm9wcyAqcHJvcHMpOworCisjZW5kaWYgLyogX1NJVDk1 MzFYX1BST1BfSCAqLwotLSAKMi4zOS4yIChBcHBsZSBHaXQtMTQzKQoK