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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5183DCA0ED3 for ; Mon, 2 Sep 2024 08:15:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mxxtecbzt4wDUbnOFSCzhkgB83VSH4iaew1K/R6gtWs=; b=yYQ7A5jW1XcHyaUe8IREy/y2FF bO5GOeyaydw88cHGqSM1lls/ZVaPUv9ZvxBNECnfunQ3mB0cCQgXgjNY8qolY2ATsCJCEO0VqHluR 40XYqFE9+DUUbKyo2isD1HoPlL9ABvGAW/3uJj7caqZnovfVgpkVDkrywQGh6OujAxoMuqHeLa2BW wWogew9pTcRosykLxx09IUjGQfpa3akSFIjW+ZKGniXQ1pS9focEB/iv8xHMPkcVo5Dtajkb1wGyi bIKOgqo9WSgcc/MrUV8i6R0gANxsnCXngsordnlVmORbXYF0cWFfv0I4PLiZUj/nijmV6/vWpnf1n CV4F5XzQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sl2DJ-0000000DSfT-27Ki; Mon, 02 Sep 2024 08:15:05 +0000 Received: from mail-psaapc01on20722.outbound.protection.outlook.com ([2a01:111:f400:feae::722] helo=APC01-PSA-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sl2DF-0000000DSeA-2jmu for linux-amlogic@lists.infradead.org; Mon, 02 Sep 2024 08:15:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Feku5uq67irnC3vLlhzvpHwZIAg/LR7dzMwTUxdZ2mj22jHi+oxhf6jb/3QZfQDK3AOEXDA1AB9YXuPbQkUU647vYYzfOaMwXBa1sjdCXi4P0MgA5OzZf6hBQhnTQbtW/YaMPQNcbJTs19tDDnmyDua3kr0DeWXTHvUzy4ghhpkYGL/RX56Qej1Jx6Kgm08+RP3LesBMTcsN5iKGWUWt6OcAUIcrzMF8dIfuFVliFyw18AD9wwKQ93Z0l/XklcPfc+P8XEOMHyN4CyehQ+xNDtIFMAYalb0j8wgEpdPV9LMDjF6IcGa0hvcbDlz5m9x3QQbnweFXkNkr5kLX+xKhzA== 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=mjW6JQdi6+xRhG48HbmZ6gtHaikpNhUmwOvu7SOHhes=; b=BTA5y/Q4xgu0d1rUDCjxi4LE4RU9e5+7166DKQ5FRW1o/j73O0i6UV3RYErf74T/HNx5yjqPxdYJZBuTo69kdboyjU8tbEP09esShwHmwC95idJcEKWHHh+d6GrOypaRYuBF6MFayt5mmvynLWC1OYgpwDjntPru9trOF0nhoQpRXBxQZlR81I/51sNDvU5cPz8kmpKUrPXYfGe7kD0KWi0KADLRlu9vVW23y07j1EbVw0ruykG00WpbAp2vCHHIaxcPw3dgukODVZIr43eiAlz7vB73hr+meO1il05FsRpzFK/0xNfYBzF4LDyx4KeK+xWXCJWsjXwD5CF+11gudA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amlogic.com; dmarc=pass action=none header.from=amlogic.com; dkim=pass header.d=amlogic.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amlogic.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mjW6JQdi6+xRhG48HbmZ6gtHaikpNhUmwOvu7SOHhes=; b=cUPQ1r8aAo5CUEsA0ho28xh2h85j8K8574V1Kurzm0J69AzxTbYE4/iE3ijV3kFlmz6fgVHLKiWxMDh6coRhgrHLmE05ZshwmEtxKAe1ODenS1JD5K759jQuv0NS5kwef5z5UdqJ+oPwzuj2yMQLx1EnO0hkA/fR8xIO4SIlJFdX/i8qIO8VC1LJOUyObk0EjmMw9dGePcXq5AL2Pz4HmWcoJWxmgqjBwbbo2gp39vk8SXiJiQsIgAq9+b4enQfVbVqgfphj0XVmHhdgk0H74cidM0/WIMLaNxJd56kGRCxO4z4NzdQy1TTdEmY5uG1NZ8XaJ5wLFbTqyfO85Y7WkA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amlogic.com; Received: from TYZPR03MB6896.apcprd03.prod.outlook.com (2603:1096:400:289::14) by SEYPR03MB6602.apcprd03.prod.outlook.com (2603:1096:101:86::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.24; Mon, 2 Sep 2024 08:14:50 +0000 Received: from TYZPR03MB6896.apcprd03.prod.outlook.com ([fe80::ac4e:718:3b03:3123]) by TYZPR03MB6896.apcprd03.prod.outlook.com ([fe80::ac4e:718:3b03:3123%4]) with mapi id 15.20.7918.020; Mon, 2 Sep 2024 08:14:49 +0000 Message-ID: <20ffd260-3c24-460f-bdbc-965573e110e3@amlogic.com> Date: Mon, 2 Sep 2024 16:14:45 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] rtc: support for the Amlogic on-chip RTC Content-Language: en-US To: Alexandre Belloni Cc: Yiting Deng , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-amlogic@lists.infradead.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org References: <20240823-rtc-v1-0-6f70381da283@amlogic.com> <20240823-rtc-v1-2-6f70381da283@amlogic.com> <2024082609451907fd19e2@mail.local> From: Xianwei Zhao In-Reply-To: <2024082609451907fd19e2@mail.local> X-ClientProxiedBy: SI2PR02CA0026.apcprd02.prod.outlook.com (2603:1096:4:195::19) To TYZPR03MB6896.apcprd03.prod.outlook.com (2603:1096:400:289::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR03MB6896:EE_|SEYPR03MB6602:EE_ X-MS-Office365-Filtering-Correlation-Id: 6334f24a-e811-4c58-893d-08dccb275061 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UzVFKzZ1bXIxTXl0WmQwcG85aGU2U2ZaWE45ekUvOXcyYnNkY3lQZUhaTWhQ?= =?utf-8?B?c0R1Q283YTdyVndIZlplbEZuU285TGxEQk9EMzFORHVOV0NVUW9LSjRuUEJv?= =?utf-8?B?Vm5NdzdmWk1lNVVjT3daN1JsM1l1WjhtYnpxUjBYVU5XZzJlSlVScEtFMFRP?= =?utf-8?B?dzRmckVRelpPU1hSaU9zSHRSMms4OWgwMGtXWUtKTFVZTlV4QUI3ZXhFZmxx?= =?utf-8?B?QktNQy93V09JYk5hWDNrVkdXV2Q1WEYwSitTa25jQ0pKQy9yOVdWYWFmNUFr?= =?utf-8?B?TUtubk1sWklWTlhucWN0QmN6em9VeGZnUldreFpZdUZLTHF0MCsvdis3OWFC?= =?utf-8?B?MmRha0JxWHE2ODg3bE1XemF3ZnpoL09TVEhoL1MxVlFXa2FKcU8vQXF3WXdm?= =?utf-8?B?SnVaaXoxSXBuaUxUU0kwdkp0VzRtM2NiQVNWSUNBajluRGhEMDJHcUp3Qk5L?= =?utf-8?B?U0NjQmMxU0czVUJHN2doR25LaXJycHpvazRjeURhM2pONWFHeWwrMlFJOHRl?= =?utf-8?B?Y3FISW9DWko3NHkzdmlTOVRXSWxDODB6UnpEZFMwK1dqVGQyNUJ4NVdPUkI5?= =?utf-8?B?eHNFS29haUZQU3ZjTjNvb1dLbE9NVVM2Y1ZwbVhKQmk4dzVjOTlHWDZZYm5E?= =?utf-8?B?dVVDL3FsOXVmWkdLeWcxUnptUkV3VXBpT1Fsam5YbzBiQUplSzQwNHg2TFBN?= =?utf-8?B?cXVVeThKTzFqVXJjeENGb20rSjQ0ckFjRjNPcUR4M3lTQ3g3c2JaQmRMdlJR?= =?utf-8?B?aEpNZUN3bnk1WmJ3b0F6cXJ2SUE5RmRvcUhQTlFSRGlvZnZJMGdGZ1d2YmxY?= =?utf-8?B?WU1namVWeER6MklKKzR0VzJJSmgwY2E4NXRuMVN3bmpFanhERnVuekhNbWM1?= =?utf-8?B?a2RwNmk0STBpTEIvRkVpejVEV2JXOTlSTFlFOGRUZTl0WFlDa2NJOHhlT0Zt?= =?utf-8?B?Mk01NlBINlZGdG5XdFpZdzlyVkxodE4yN0p4dnpHL2FwdGlaZmxxLzN6MHVR?= =?utf-8?B?ZUZvRk9LaXNUTEIrT2I1OHBQNm5CeFdhR2VCTDl1OGU4emI1N1NaeXRIVjBH?= =?utf-8?B?UU9kbGRSS2h3SjJISlh5ZUlOeTFBNjI0RVlacEVJY25oWElqM0MzMXA1WE9G?= =?utf-8?B?UjJKQ0xZY2hUdUErZk1WOWdFM0xHUDdjbkRGSW5GMFJvZ2d0UG5heHpYalI3?= =?utf-8?B?aHRNOG8wNXhvZU40eGsxWUJuVFgvaWdsa0lyWFRkVFJEaWxsUnl1Q2luMDU1?= =?utf-8?B?TGhReWRlWFRQL2JMNDBDKzl0a1l6d1QraUJXNjdDK1c5a3pzYWgzRGpEaXlM?= =?utf-8?B?WmpyRi9kL1BMeU5QSmJlY3lDS1h4Q3FXZDBKNXFsVkMwNElGb1QxQmZObExV?= =?utf-8?B?WklEbVhOZGd4a1hlb2kwM0lvRjU0ZUt3dlluT3IrQWhzUUpZb1IydE5zTzkv?= =?utf-8?B?QnVqWi90b2lzRUZ2TVJjMGZ3YStQcmdZM1hKUEYzN3JLTzF1Z3ZMNHpzQWdq?= =?utf-8?B?STVCd0dYSS8zaEhXRXJldDhic1RGcEtwYzF2eWZlZmFMTElJcjJXNjRERjRJ?= =?utf-8?B?cmlBamc5TkJwaVgrS0FOR3MyTnpsakpHajFzWU5Ib0xvMk93VENZMDE4a05k?= =?utf-8?B?ZG1KRUFwM2RhYlAyb2VMWlFDSjk5KzRReEF4bUJwSkdic292Q2Z6dWVPNGtw?= =?utf-8?B?dDBiWmpKV1dRcGoxZVRWYktETXczZjYvSUk2UVdOUWRJdDBPclpBNHRkNytV?= =?utf-8?Q?IlmbgFjspptzeJ/QBA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR03MB6896.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c2ovOEtLcHlIQ0cxY2F2bmlOVWFvY2NaSE1uMi9wYmR1TkJQZjcxdXZ1UzYv?= =?utf-8?B?UGxDdU03THBsQlc2REpVUnBVY2luZk1mMG55c2g3N0szZ2hiZ2NMdUtpVTF3?= =?utf-8?B?QWkyQUhyeWNJWnFZNi9BNWZzb2VGOE1zdGk5N1o3U2xWYXRPUGMzQ056WmlD?= =?utf-8?B?MWFUOUNRSG12RWxvVWU0Vmt3OUh5bExGREZqOFM0QzI1bWVxelBVNTlsU3Vx?= =?utf-8?B?M0oweXR5eFJGYXZ3WEZHMXpRb0FOeUZaWkpUOGFRUExtcWdOQ3JVQUpxcnpv?= =?utf-8?B?WW9oaTgySkN0eWIwaEpkT3RDdk0zUlVWM2pZd2ZtSi8xdk9qRkRtS3UrSkNJ?= =?utf-8?B?a3Zwck1rUFpDbmhpYWpXMWMvMmtLYnRackVDM205dUV4L0lJNm45YlU5Zm5F?= =?utf-8?B?VkZRbjF5ZnVpMm1iMXNWWUdIWXlEZWd4WXZOZ2hQMXVIcGJrUGpYbmFUVWgr?= =?utf-8?B?VWNiTXhiM293azNETWJJV3pwSlF2b2lNR2dwVzdpYkJ2b1FqVEM2bjBiZ1pp?= =?utf-8?B?cy9nQU5SblBNS01hWDVDTXljbUxnbmRldGhidDdGaVFwRC8zYUlOSVlYaFFo?= =?utf-8?B?Y0djQVUrUGVQR3Q4V0tVOE1qSzNMc1pjSFk0dis5SEduNEpNZmsyQkdSa3Z6?= =?utf-8?B?MytuZEljZ21mVndNSDIvNzJHNko5UmliYW1raGxJa2cyZDlKZE5RY2diUVJy?= =?utf-8?B?bExteFFHK3hzcnloT2RzQmd2UWU4dDJUdURrWXFUWFFaTW5kZ2hxcFJ1TXA1?= =?utf-8?B?VW5LNG5QUi9wMVFaN1BvUlgrYkZFdVNqZmt1K1ZCQzlYVkx2eVR4Y1NqN2p0?= =?utf-8?B?aDRYR0l2N0QzczYxUXhsMWRuU21ndXp4ME8vUlhLc1JMb2VZL0JabGpzQmxS?= =?utf-8?B?b21XVFVTU1IwMDJMaCswdjRjWUxQRUFabUE4dVQzbUw4WmNrTmY4V0NyN0tt?= =?utf-8?B?anJSdUNwTmJLMTBIRHBxSmFNTlR3UW8zRXJ6S21hcmtMRVFJS0lWZVh6U1Ju?= =?utf-8?B?bTVwcGJEay80MExzRWVRVHdRZXhqTzE3UVkzN1phNEZiSERTaXh2ckk5RW95?= =?utf-8?B?QkduVk1QdmN0aG5QRHM5SEJ5Rlk0VFJTLzdhRDNjYlM3SFVjY3o5U01DTmdk?= =?utf-8?B?MGkzU0xOQWlmZXNhMjg3WWNBT0FCeE9Fa01Nd2JSZmFrRmR4SVQ4YyswNUZ3?= =?utf-8?B?UklVc0JxUnQvd2Y5ZVh1TjNsZWNCRVlZODZKaEVIQnphSjh3ODJRQm56QTR1?= =?utf-8?B?RS9YN0JXNzJBeVlnZ0ZQZ3l2NitldXlhd0c4WEkzaXRKVm9Hem9ISGtMZ3F4?= =?utf-8?B?dTRKeSt2NXJHL2IrSFhHa0VlRXV2cmI1NUdsYU1KTkpwZ2ViMEdWNlN5L0VP?= =?utf-8?B?ZkNLdGc5WmFQSG44SGJDTXVIQytCOTFqdjN4dkdnMVRhNnFqanl4L1R3NlZk?= =?utf-8?B?aXNXNWVoUE5IbkE3KzFCVkE5ZUNsN0xUYWlEOXc1bjRxMGduMzJLTWlvdUt6?= =?utf-8?B?YitwQ2o4WEVPMlZTWE1oSTVtdWE0cUNvRy9jMVA0NXFXWWJrZGVFeHJEcXpw?= =?utf-8?B?clJVMzBUTitMUk0wT0VuT1NZek02QUs4dnhEWndNUjJxeEN1eHVmNnpLZjU3?= =?utf-8?B?blF2ZmZVKzR3WGtLd2NkejVMYzE3NTA3UnFDbk0rdHZzT2ZLTlVXSEVZR09E?= =?utf-8?B?T0JFL29qN3N4QU9HNlRmWmpLeWNaTkFFY1dObWlHd2lWWG9oNVdHOXMyNlpm?= =?utf-8?B?cW16L2ExdlgxOFQrcmlJczh4bXo3bWNnM2hpWVM5K3ludlpjdjBkcCtMRitn?= =?utf-8?B?RzlSRVlKdFpxSjFUQW9wbS95TTlaUHFobjJuVFF2VFlVQko3Qmo2M3ZGOHRw?= =?utf-8?B?VDBDWlVON0ExQmZXN0cyTGNDSVZoUDU5cHVyU3loVnA0eXlaaVRlVXpCaGhO?= =?utf-8?B?K3RHZHlhU0ZBSU9UejZzamNDeTNiRGJFY1VMY0J3UmNVWEwzeW1JVURUWTJR?= =?utf-8?B?TUVDZGY2ajlnU2YwSXZJRWx1SmcvVEVKSFM5OXBMOTdVQU9RNm1lZEt2NExm?= =?utf-8?B?TEhKbitsUHRFNHZ5TlFBYkZNQldlaTdhd3o1ZEozTmV5QzVadWJnVU5DVm1Q?= =?utf-8?B?bzlWbzYzUkxGS0RNLzFNM1BldExJWG5oSU5zV01NWEcrM1dlVlZlbE5CakhI?= =?utf-8?B?OWc9PQ==?= X-OriginatorOrg: amlogic.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6334f24a-e811-4c58-893d-08dccb275061 X-MS-Exchange-CrossTenant-AuthSource: TYZPR03MB6896.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2024 08:14:49.3756 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0df2add9-25ca-4b3a-acb4-c99ddf0b1114 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pvZtUoH0xF+NyOYieODxjo2AURaedJP/GaxALuzPHBPJH4npzY+ZTFxGWKnW/BIbYx04o+6RmmBLw1mK+iZtJPwLwrg2f8SjbPyW5eo/ESQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR03MB6602 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240902_011501_901136_CEFEB732 X-CRM114-Status: GOOD ( 23.52 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgQWxleGFuZHJlLAogICAgIFRoYW5rcyBmb3IgeW91ciByZXBseS4KCk9uIDIwMjQvOC8yNiAx Nzo0NSwgQWxleGFuZHJlIEJlbGxvbmkgd3JvdGU6Cj4gWyBFWFRFUk5BTCBFTUFJTCBdCj4gCj4g T24gMjMvMDgvMjAyNCAxNzoxOTo0NSswODAwLCBYaWFud2VpIFpoYW8gdmlhIEI0IFJlbGF5IHdy b3RlOgo+PiBGcm9tOiBZaXRpbmcgRGVuZyA8eWl0aW5nLmRlbmdAYW1sb2dpYy5jb20+Cj4+Cj4+ IFN1cHBvcnQgZm9yIHRoZSBvbi1jaGlwIFJUQyBmb3VuZCBpbiBzb21lIG9mIEFtbG9naWMncyBT b0NzIHN1Y2ggYXMgdGhlCj4+IEExMTNMMiBhbmQgQTExM1gyLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBZaXRpbmcgRGVuZyA8eWl0aW5nLmRlbmdAYW1sb2dpYy5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6 IFhpYW53ZWkgWmhhbyA8eGlhbndlaS56aGFvQGFtbG9naWMuY29tPgo+PiAtLS0KPj4gICBkcml2 ZXJzL3J0Yy9LY29uZmlnICAgICAgIHwgIDEyICsKPj4gICBkcml2ZXJzL3J0Yy9NYWtlZmlsZSAg ICAgIHwgICAxICsKPj4gICBkcml2ZXJzL3J0Yy9ydGMtYW1sb2dpYy5jIHwgNTg5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAKPiBBcyBwb2ludGVkIG91 dCwgdGhpcyBpcyB0aGUgdGhpcmQgYW1sb2dpYyBkcml2ZXIgc28gdGhlIG5hbWUgb2YgdGhlIGZp bGUKPiBtdXN0IGJlIG1vcmUgc3BlY2lmaWMuCj4gCgpUaGlzIFJUQyBoYXJkd2FyZSBpbmNsdWRl cyBhIHRpbWluZyBmdW5jdGlvbiBhbmQgYW4gYWxhcm0gZnVuY3Rpb24uCkJ1dCB0aGUgZXhpc3Rp bmcgaGFzIG9ubHkgdGltaW5nIGZ1bmN0aW9uLCBhbGFybSBmdW5jdGlvbiBpcyB1c2luZyB0aGUg CnN5c3RlbSBjbG9jayB0byBpbXBsZW1lbnQgYSB2aXJ0dWFsIGFsYXJtLiBBbmQgdGhlIHJlbGV2 YW50IHJlZ2lzdGVyIAphY2Nlc3MgbWV0aG9kIGlzIGFsc28gZGlmZmVyZW50LgoKVGhlICJtZXNv biIgc3RyaW5nIGlzIG1lYW5pbmdsZXNzLCBpdCBqdXN0IGtlZXBzIGdvaW5nLCBhbmQgbm93IHRo ZSBuZXcgCmhhcmR3YXJlIHVzZXMgdGhlIG5vcm1hbCBuYW1pbmcuCgo+PiArc3RhdGljIHZvaWQg YW1sX3NldF90aW1lKHN0cnVjdCBhbWxfcnRjX2RhdGEgKnJ0YywgdTMyIHRpbWVfc2VjKQo+IAo+ IElzIGluZGlyZWN0aW9uIG5lY2Vzc2FyeSwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgb25j ZQo+IAoKSSB3aWxsIGRlbGV0ZSB0aGlzIGZ1bmN0aW9uLgoKPj4gK3sKPj4gKyAgICAgaWYgKHJ0 Yy0+Y29uZmlnLT5ncmF5X3N0b3JlZCkKPj4gKyAgICAgICAgICAgICB0aW1lX3NlYyA9IGJpbmFy eV90b19ncmF5KHRpbWVfc2VjKTsKPj4gKyAgICAgcmVnbWFwX3dyaXRlKHJ0Yy0+bWFwLCBSVENf Q09VTlRFUl9SRUcsIHRpbWVfc2VjKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHUzMiBhbWxfcmVh ZF90aW1lKHN0cnVjdCBhbWxfcnRjX2RhdGEgKnJ0YykKPiBEaXR0bwo+IApJIHdpbGwgZGVsZXRl IHRoaXMgZnVuY3Rpb24uCgo+PiArewo+PiArICAgICB1MzIgdGltZV9zZWM7Cj4+ICsKPj4gKyAg ICAgcmVnbWFwX3JlYWQocnRjLT5tYXAsIFJUQ19SRUFMX1RJTUUsICZ0aW1lX3NlYyk7Cj4+ICsg ICAgIGlmIChydGMtPmNvbmZpZy0+Z3JheV9zdG9yZWQpCj4+ICsgICAgICAgICAgICAgdGltZV9z ZWMgPSBncmF5X3RvX2JpbmFyeSh0aW1lX3NlYyk7Cj4+ICsgICAgIHJldHVybiB0aW1lX3NlYzsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHUzMiBhbWxfcmVhZF9hbGFybShzdHJ1Y3QgYW1sX3J0Y19k YXRhICpydGMpCj4gRGl0dG8KPiAKCkkgd2lsbCBkZWxldGUgdGhpcyBmdW5jdGlvbi4KPj4gK3sK Pj4gKyAgICAgdTMyIGFsYXJtX3NlYzsKPj4gKwo+PiArICAgICByZWdtYXBfcmVhZChydGMtPm1h cCwgUlRDX0FMQVJNMF9SRUcsICZhbGFybV9zZWMpOwo+PiArICAgICBpZiAocnRjLT5jb25maWct PmdyYXlfc3RvcmVkKQo+PiArICAgICAgICAgICAgIGFsYXJtX3NlYyA9IGdyYXlfdG9fYmluYXJ5 KGFsYXJtX3NlYyk7Cj4+ICsgICAgIHJldHVybiBhbGFybV9zZWM7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyB2b2lkIGFtbF9zZXRfYWxhcm0oc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjLCB1MzIgYWxh cm1fc2VjKQo+IERpdHRvCj4gCgpJIHdpbGwgZGVsZXRlIHRoaXMgZnVuY3Rpb24uCj4+ICt7Cj4+ ICsgICAgIGlmIChydGMtPmNvbmZpZy0+Z3JheV9zdG9yZWQpCj4+ICsgICAgICAgICAgICAgYWxh cm1fc2VjID0gYmluYXJ5X3RvX2dyYXkoYWxhcm1fc2VjKTsKPj4gKyAgICAgcmVnbWFwX3dyaXRl KHJ0Yy0+bWFwLCBSVENfQUxBUk0wX1JFRywgYWxhcm1fc2VjKTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCBhbWxfcnRjX3NldF9hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNf d2thbHJtICphbGFybSkKPj4gK3sKPj4gKyAgICAgc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0g ZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ICsgICAgIHRpbWU2NF90IGFsYXJtX3NlYzsKPj4gKwo+ PiArICAgICBpZiAoYWxhcm0tPmVuYWJsZWQpIHsKPiAKPiBXaHkgYXJlbid0IHlvdSBzZXR0aW5n IHRoZSBhbGFybSB3aGVuIGl0IGlzIG5vdCBlbmFibGVkPwo+IAoKV2lsbCBkZWxldGUgdGhpcyBq dWRnbWVudC4KCgo+PiArICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhydGMtPm1hcCwg UlRDX0NUUkwsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUQ19BTFJNMF9F TiwgUlRDX0FMUk0wX0VOKTsKPj4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMocnRj LT5tYXAsIFJUQ19JTlRfTUFTSywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UlRDX0FMUk0wX0lSUV9NU0ssIDApOwo+PiArCj4+ICsgICAgICAgICAgICAgYWxhcm1fc2VjID0g cnRjX3RtX3RvX3RpbWU2NCgmYWxhcm0tPnRpbWUpOwo+PiArICAgICAgICAgICAgIGlmIChhbGFy bV9zZWMgPiBVMzJfTUFYKSB7Cj4gCj4gVGhpcyBpcyBuZXZlciBnb2luZyB0byBoYXBwZW4sIHRo ZSB0ZXN0IGFuZCBlcnJvciBtZXNzYWdlIGFyZSBub3QKPiBuZWNlc3NhcnkuCj4gCgpJbmRlZWQs IHdpbGwgZGVsZXRlIHRoaXMgcGFydCBvZiB0aGUgcHJvY2Vzc2luZy4KCj4+ICsgICAgICAgICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgImFsYXJtIHZhbHVlIGludmFsaWQhXG4iKTsKPj4gKyAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgICAgICAgIH0KPj4g KyAgICAgICAgICAgICBhbWxfc2V0X2FsYXJtKHJ0YywgYWxhcm1fc2VjKTsKPj4gKyAgICAgfQo+ PiArICAgICBkZXZfZGJnKGRldiwgIiVzOiBhbGFybS0+ZW5hYmxlZD0lZCBhbGFybV9zZXQ9JWxs ZHNcbiIsIF9fZnVuY19fLAo+PiArICAgICAgICAgICAgIGFsYXJtLT5lbmFibGVkLCBhbGFybV9z ZWMpOwo+PiArCj4+ICsgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGFt bF9ydGNfcmVhZF9hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNfd2thbHJtICph bGFybSkKPj4gK3sKPj4gKyAgICAgc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0gZGV2X2dldF9k cnZkYXRhKGRldik7Cj4+ICsgICAgIHUzMiBhbGFybV9zZWM7Cj4+ICsgICAgIHUzMiByZWdfdmFs Owo+PiArICAgICBpbnQgYWxhcm1fZW5hYmxlLCBhbGFybV9tYXNrOwo+PiArCj4+ICsgICAgIGFs YXJtX3NlYyA9IGFtbF9yZWFkX2FsYXJtKHJ0Yyk7Cj4+ICsgICAgIHJ0Y190aW1lNjRfdG9fdG0o YWxhcm1fc2VjLCAmYWxhcm0tPnRpbWUpOwo+PiArCj4+ICsgICAgIHJlZ21hcF9yZWFkKHJ0Yy0+ bWFwLCBSVENfQ1RSTCwgJnJlZ192YWwpOwo+PiArICAgICBhbGFybV9lbmFibGUgPSBGSUVMRF9H RVQoUlRDX0FMUk0wX0VOLCByZWdfdmFsKTsKPj4gKwo+PiArICAgICByZWdtYXBfcmVhZChydGMt Pm1hcCwgUlRDX0lOVF9NQVNLLCAmcmVnX3ZhbCk7Cj4+ICsgICAgIGFsYXJtX21hc2sgPSBGSUVM RF9HRVQoUlRDX0FMUk0wX0lSUV9NU0ssIHJlZ192YWwpOwo+PiArCj4+ICsgICAgIGFsYXJtLT5l bmFibGVkID0gKGFsYXJtX2VuYWJsZSAmJiAhYWxhcm1fbWFzaykgPyAxIDogMDsKPj4gKyAgICAg ZGV2X2RiZyhkZXYsICIlczogYWxhcm0tPmVuYWJsZWQ9JWQgYWxhcm09JXVzXG4iLCBfX2Z1bmNf XywKPj4gKyAgICAgICAgICAgICBhbGFybS0+ZW5hYmxlZCwgYWxhcm1fc2VjKTsKPj4gKwo+PiAr ICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlycXJldHVybl90IGFtbF9ydGNf aGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKQo+PiArewo+PiArICAgICBzdHJ1Y3QgYW1sX3J0 Y19kYXRhICpydGMgPSAoc3RydWN0IGFtbF9ydGNfZGF0YSAqKWRhdGE7Cj4+ICsKPj4gKyAgICAg cmVnbWFwX3dyaXRlKHJ0Yy0+bWFwLCBSVENfQUxBUk0wX1JFRywgMCk7Cj4+ICsgICAgIHJlZ21h cF91cGRhdGVfYml0cyhydGMtPm1hcCwgUlRDX0lOVF9DTFIsCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICBSVENfQUxSTTBfSVJRX1NUQVRVUywgUlRDX0FMUk0wX0lSUV9TVEFUVVMpOwo+IAo+ IEFyZSB5b3Ugc3VyZSByZWdtYXBfdXBkYXRlX2JpdHMgaXMgbmVjZXNzYXJ5IGhlcmU/Cj4gCgpU aGVyZSBpcyBvbmx5ICB3cml0ZSBSVENfQUxSTTBfSVJRX1NUQVRVUywgdG8gY2xlYXIgaXQuIHdp bGwgZml4IGl0LgoKPj4gKwo+PiArICAgICBydGNfdXBkYXRlX2lycShydGMtPnJ0Y19kZXYsIDEs IFJUQ19BRiB8IFJUQ19JUlFGKTsKPj4gKwo+PiArICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7Cj4+ ICt9Cj4+ICsKPiAKPiAKPj4gK3N0YXRpYyBpbnQgYW1sX3J0Y19hZGp1c3Rfc2VjKHN0cnVjdCBk ZXZpY2UgKmRldiwgdTMyIG1hdGNoX2NvdW50ZXIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgb3BzLCBpbnQgZW5hYmxlKQo+PiArewo+PiArICAgICBzdHJ1Y3QgYW1sX3J0Y19k YXRhICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LT5wYXJlbnQpOwo+PiArICAgICB1MzIgcmVn X3ZhbDsKPj4gKwo+PiArICAgICBpZiAoIUZJRUxEX0ZJVChSVENfTUFUQ0hfQ09VTlRFUiwgbWF0 Y2hfY291bnRlcikpIHsKPj4gKyAgICAgICAgICAgICBwcl9lcnIoIiVzOiBpbnZhbGlkIG1hdGNo X2NvdW50ZXJcbiIsIF9fZnVuY19fKTsKPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK Pj4gKyAgICAgfQo+PiArCj4+ICsgICAgIHJlZ192YWwgPSBGSUVMRF9QUkVQKFJUQ19TRUNfQURK VVNUX0NUUkwsIG9wcykKPj4gKyAgICAgICAgICAgICAgIHwgRklFTERfUFJFUChSVENfTUFUQ0hf Q09VTlRFUiwgbWF0Y2hfY291bnRlcikKPj4gKyAgICAgICAgICAgICAgIHwgRklFTERfUFJFUChS VENfQURKX1ZBTElELCBlbmFibGUpOwo+PiArICAgICAvKiBTZXQgc2VjX2FkanVzdF9jdHJsLCBt YXRjaF9jb3VudGVyIGFuZCBWYWxpZCBhZGp1c3QgKi8KPj4gKyAgICAgcmVnbWFwX3dyaXRlKHJ0 Yy0+bWFwLCBSVENfU0VDX0FESlVTVF9SRUcsIHJlZ192YWwpOwo+PiArCj4+ICsgICAgIHJldHVy biAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGFtbF9ydGNfc2V0X2NhbGlicmF0aW9uKHN0 cnVjdCBkZXZpY2UgKmRldiwgdTMyIGNhbGlicmF0aW9uKQo+PiArewo+PiArICAgICBpbnQgY2Fs X29wcywgZW5hYmxlLCBtYXRjaF9jb3VudGVyOwo+PiArICAgICBpbnQgcmV0Owo+PiArCj4+ICsg ICAgIG1hdGNoX2NvdW50ZXIgPSBGSUVMRF9HRVQoUlRDX01BVENIX0NPVU5URVIsIGNhbGlicmF0 aW9uKTsKPj4gKyAgICAgY2FsX29wcyA9IEZJRUxEX0dFVChSVENfU0VDX0FESlVTVF9DVFJMLCBj YWxpYnJhdGlvbik7Cj4+ICsgICAgIGVuYWJsZSA9IEZJRUxEX0dFVChSVENfQURKX1ZBTElELCBj YWxpYnJhdGlvbik7Cj4+ICsKPj4gKyAgICAgcmV0ID0gYW1sX3J0Y19hZGp1c3Rfc2VjKGRldiwg bWF0Y2hfY291bnRlciwgY2FsX29wcywgZW5hYmxlKTsKPj4gKyAgICAgZGV2X2RiZyhkZXYsICIl czogU3VjY2VzcyB0byBzdG9yZSBSVEMgY2FsaWJyYXRpb24gYXR0cmlidXRlXG4iLAo+PiArICAg ICAgICAgICAgIF9fZnVuY19fKTsKPj4gKwo+PiArICAgICByZXR1cm4gcmV0Owo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IGFtbF9ydGNfZ2V0X2NhbGlicmF0aW9uKHN0cnVjdCBkZXZpY2UgKmRl diwgdTMyICpjYWxpYnJhdGlvbikKPj4gK3sKPj4gKyAgICAgc3RydWN0IGFtbF9ydGNfZGF0YSAq cnRjID0gZGV2X2dldF9kcnZkYXRhKGRldi0+cGFyZW50KTsKPj4gKyAgICAgdTMyIHJlZ192YWw7 Cj4+ICsKPj4gKyAgICAgcmVnbWFwX3JlYWQocnRjLT5tYXAsIFJUQ19TRUNfQURKVVNUX1JFRywg JnJlZ192YWwpOwo+PiArICAgICAqY2FsaWJyYXRpb24gPSBGSUVMRF9HRVQoUlRDX1NFQ19BREpV U1RfQ1RSTCB8IFJUQ19NQVRDSF9DT1VOVEVSLCByZWdfdmFsKTsKPj4gKyAgICAgLyogQklUIGlz IG9ubHkgVUwgZGVmaW5lZO+8jGFuZCBHRU5NQVNLIGhhcyBubyB0eXBlLCBpdHMnIGRvbm90IHVz ZWQgdG9nZXRoZXIgKi8KPj4gKyAgICAgKmNhbGlicmF0aW9uIHw9IEZJRUxEX1BSRVAoUlRDX0FE Sl9WQUxJRCwgRklFTERfR0VUKFJUQ19BREpfVkFMSUQsIHJlZ192YWwpKTsKPj4gKwo+PiArICAg ICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBUaGUgY2FsaWJyYXRpb24gdmFs dWUgdHJhbnNmZXJyZWQgZnJvbSBidWYgdGFrZXMgYml0WzE4OjBdIHRvIHJlcHJlc2VudAo+PiAr ICogbWF0Y2hfY291bnRlciwgd2hpbGUgdGFrZXMgYml0WzIwOjE5XSB0byByZXByZXNlbnQgc2Vj X2FkanVzdF9jdHJsLCBiaXRbMjNdCj4+ICsgKiB0byByZXByZXNlbnQgYWRqX3ZhbGlkLiBlbmFi bGUvZGlzYWJsZSBzZWNfYWRqdXN0X2N0cmwgYW5kIG1hdGNoX2NvdW50ZXIuCj4+ICsgKiBAYnVm OiBTZXBhcmF0ZSBidWYgdG8gbWF0Y2hfY291bnRlciwgc2VjX2FkanVzdF9jdHJsIGFuZCBhZGpf dmFsaWQKPj4gKyAqICAgIG1hdGNoX2NvdW50ZXI6IGJpdFsxODowXSwgdmFsdWUgaXMgMCB+IDB4 N2ZmZgo+PiArICogICAgc2VjX2FkanVzdF9jdHJsOiBiaXRbMjA6MTldLCB2YWx1ZSBpcyAwIH4g Mi4gMyB0byBpbnNlcnQgYSBzZWNvbmQgb25jZSBldmVyeQo+PiArICogICAgbWF0Y2hfY291bnRl cisxIHNlY29uZHMsIDIgdG8gc3dhbGxvdyBhIHNlY29uZCBvbmNlIGV2ZXJ5IG1hdGNoX2NvdW50 ZXIrMSBzZWNvbmRzCj4+ICsgKiAgICAwIG9yIDEgdG8gbm8gYWRqdXN0bWVudAo+PiArICogICAg YWRqX3ZhbGlkOiBiaXRbMjNdLCB2YWx1ZSBpcyAwIG9yIDEsIDAgdG8gZGlzYWJsZSBzZWNfYWRq dXN0X2N0cmwgYW5kCj4+ICsgKiAgICBtYXRjaF9jb3VudGVyLCBhbmQgMSB0byBlbmFibGUgdGhl bS4KPj4gKyAqLwo+PiArc3RhdGljIHNzaXplX3QgcnRjX2NhbGlicmF0aW9uX3N0b3JlKHN0cnVj dCBkZXZpY2UgKmRldiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKPj4gK3sKPj4gKyAgICAgaW50 IHJldHZhbDsKPj4gKyAgICAgaW50IGNhbGlicmF0aW9uID0gMDsKPj4gKwo+PiArICAgICBpZiAo c3NjYW5mKGJ1ZiwgIiAlaSAiLCAmY2FsaWJyYXRpb24pICE9IDEpIHsKPj4gKyAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBzdG9yZSBSVEMgY2FsaWJyYXRpb24gYXR0cmlidXRl XG4iKTsKPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKyAgICAgfQo+PiArICAg ICByZXR2YWwgPSBhbWxfcnRjX3NldF9jYWxpYnJhdGlvbihkZXYsIGNhbGlicmF0aW9uKTsKPj4g Kwo+PiArICAgICByZXR1cm4gcmV0dmFsID8gcmV0dmFsIDogY291bnQ7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBzc2l6ZV90IHJ0Y19jYWxpYnJhdGlvbl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCj4+ICt7Cj4+ICsgICAgIGludCAgcmV0dmFsID0gMDsKPj4g KyAgICAgdTMyICBjYWxpYnJhdGlvbiA9IDA7Cj4+ICsKPj4gKyAgICAgcmV0dmFsID0gYW1sX3J0 Y19nZXRfY2FsaWJyYXRpb24oZGV2LCAmY2FsaWJyYXRpb24pOwo+PiArICAgICBpZiAocmV0dmFs IDwgMCkgewo+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlYWQgUlRD IGNhbGlicmF0aW9uIGF0dHJpYnV0ZVxuIik7Cj4+ICsgICAgICAgICAgICAgc3ByaW50ZihidWYs ICIwXG4iKTsKPj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0dmFsOwo+PiArICAgICB9Cj4+ICsK Pj4gKyAgICAgcmV0dXJuIHNwcmludGYoYnVmLCAiMHgleFxuIiwgY2FsaWJyYXRpb24pOwo+PiAr fQo+PiArc3RhdGljIERFVklDRV9BVFRSX1JXKHJ0Y19jYWxpYnJhdGlvbik7Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgcnRjX3NldF9kaXYyNTZfYWRqdXN0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyICp2 YWx1ZSkKPj4gK3sKPj4gKyAgICAgc3RydWN0IGFtbF9ydGNfZGF0YSAqcnRjID0gZGV2X2dldF9k cnZkYXRhKGRldi0+cGFyZW50KTsKPj4gKyAgICAgdTMyIGRpdjI1Nl9hZGo7Cj4+ICsKPj4gKyAg ICAgZGl2MjU2X2FkaiA9IEZJRUxEX1BSRVAoUlRDX0RJVjI1Nl9BREpfRFNSIHwgUlRDX0RJVjI1 Nl9BREpfVkFMLCAqdmFsdWUpOwo+PiArICAgICAvKgo+PiArICAgICAgKiBBT19SVENfU0VDX0FE SlVTVF9SRUcgYml0IDI0IGluc2VydC9yZW1vdmUoMS8wKSBhIGRpdjI1NiBjeWNsZSwKPj4gKyAg ICAgICogYml0IDI1IHZhbGlkL2ludmFsaWQoMS8wKSBkaXYyNTZfYWRqX3ZhbAo+PiArICAgICAg Ki8KPj4gKyAgICAgcmVnbWFwX3dyaXRlX2JpdHMocnRjLT5tYXAsIFJUQ19TRUNfQURKVVNUX1JF RywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgUlRDX0RJVjI1Nl9BREpfRFNSIHwgUlRDX0RJ VjI1Nl9BREpfVkFMLCBkaXYyNTZfYWRqKTsKPj4gKyAgICAgLyogcnRjIG5lZWQgYWJvdXQgMzBt cyB0byBhZGp1c3QgaXRzIHRpbWUgYWZ0ZXIgd3JpdHRlbiAqLwo+PiArICAgICBtZGVsYXkoMzAp Owo+PiArCj4+ICsgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJ0Y19n ZXRfZGl2MjU2X2FkanVzdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiAqdmFsdWUpCj4+ICt7Cj4+ ICsgICAgIHN0cnVjdCBhbWxfcnRjX2RhdGEgKnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYtPnBh cmVudCk7Cj4+ICsgICAgIHUzMiByZWdfdmFsOwo+PiArCj4+ICsgICAgIHJlZ21hcF9yZWFkKHJ0 Yy0+bWFwLCBSVENfU0VDX0FESlVTVF9SRUcsICZyZWdfdmFsKTsKPj4gKyAgICAgKnZhbHVlID0g RklFTERfR0VUKFJUQ19ESVYyNTZfQURKX0RTUiB8IFJUQ19ESVYyNTZfQURKX1ZBTCwgcmVnX3Zh bCk7Cj4+ICsKPj4gKyAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogZGl2 MjU2IGFkanVzdCBmdW5jdGlvbiBpcyBjb250cm9sbGVkIHVzaW5nIGJpdFsyNF0gYW5kIGJpdFsy NV0uCj4+ICsgKiB0cmFuc2ZlcnJlZCBidWYgdGFrZXMgYml0WzBdIHRvIHJlcHJlc2VudCBkaXYy NTYgYWRqIHZhbCwgYml0WzFdCj4+ICsgKiB0byByZXByZXNlbnQgZGl2MjU2IGFkaiBlbmFibGUv ZGlzYWJsZS4gZGl2MjU2IGN5Y2xlIG1lYW5zIHRoYXQgYWRqdXN0Cj4+ICsgKiAxLzMyNzY4LzI1 NiBvbmNlIGJ5IHdyaXR0ZW4gb25jZSwgaXQncyB2YWwgaXMgZXF1YWwgdG8gMS8xMjhzCj4+ICsg KiBAYnVmOiAzOiBlbmFibGUgZGl2MjU2IGFkanVzdCBhbmQgaW5zZXJ0IGEgZGl2MjU2IGN5Y2xl Cj4+ICsgKiAgICAyOiBlbmFibGUgZGl2MjU2IGFkanVzdCBhbmQgcmVtb3ZlIGEgZGl2MjU2IGN5 Y2xlCj4+ICsgKiAgICAxIG9yIDA6IGRpc2FibGUgZGl2MjU2IGFkanVzdAo+PiArICovCj4+ICtz dGF0aWMgc3NpemVfdCBydGNfZGl2MjU2X2FkanVzdF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+PiArewo+PiArICAgICBpbnQgcmV0dmFsOwo+ PiArICAgICB1MzIgdmFsdWUgPSAwOwo+PiArCj4+ICsgICAgIGlmIChzc2NhbmYoYnVmLCAiICVp ICIsICZ2YWx1ZSkgIT0gMSkgewo+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIHN0b3JlIFJUQyBkaXYyNTYgYWRqdXN0IGF0dHJpYnV0ZVxuIik7Cj4+ICsgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgIH0KPj4gKyAgICAgcmV0dmFsID0gcnRjX3NldF9k aXYyNTZfYWRqdXN0KGRldiwgJnZhbHVlKTsKPj4gKwo+PiArICAgICByZXR1cm4gcmV0dmFsID8g cmV0dmFsIDogY291bnQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzc2l6ZV90IHJ0Y19kaXYyNTZf YWRqdXN0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ PiArewo+PiArICAgICBpbnQgcmV0dmFsID0gMDsKPj4gKyAgICAgdTMyIHZhbHVlID0gMDsKPj4g Kwo+PiArICAgICByZXR2YWwgPSBydGNfZ2V0X2RpdjI1Nl9hZGp1c3QoZGV2LCAmdmFsdWUpOwo+ PiArICAgICBpZiAocmV0dmFsIDwgMCkgewo+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIHJlYWQgUlRDIGRpdjI1NiBhZGp1c3QgYXR0cmlidXRlXG4iKTsKPj4gKyAgICAg ICAgICAgICBzcHJpbnRmKGJ1ZiwgIjBcbiIpOwo+PiArICAgICAgICAgICAgIHJldHVybiByZXR2 YWw7Cj4+ICsgICAgIH0KPj4gKwo+PiArICAgICByZXR1cm4gc3ByaW50ZihidWYsICIweCV4XG4i LCB2YWx1ZSk7Cj4+ICt9Cj4+ICtzdGF0aWMgREVWSUNFX0FUVFJfUlcocnRjX2RpdjI1Nl9hZGp1 c3QpOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYW1sX3J0Y19hdHRyc1tdID0g ewo+PiArICAgICAmZGV2X2F0dHJfcnRjX2NhbGlicmF0aW9uLmF0dHIsCj4+ICsgICAgICZkZXZf YXR0cl9ydGNfZGl2MjU2X2FkanVzdC5hdHRyLAo+PiArICAgICBOVUxMLAo+PiArfTsKPj4gKwo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgYW1sX3J0Y19zeXNmc19maWxl cyA9IHsKPj4gKyAgICAgLmF0dHJzICA9IGFtbF9ydGNfYXR0cnMsCj4+ICt9Owo+PiArCj4gCj4g WW91IG11c3QgdXNlIHRoZSBzdGFuZGFyZCBSVEMgQVBJIHRvIGhhbmRsZSBjYWxpYnJhdGlvbiwg c2VlCj4gLnJlYWRfb2Zmc2V0IGFuZCAuc2V0X29mZnNldAo+IAoKV2lsbCBkby4KCj4+ICtzdGF0 aWMgdm9pZCBhbWxfcnRjX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYW1sX3J0Y19k YXRhICpydGMpCj4+ICt7Cj4+ICsgICAgIHUzMiByZWdfdmFsOwo+PiArICAgICB1MzIgcnRjX2Vu YWJsZTsKPj4gKwo+PiArICAgICByZWdtYXBfcmVhZChydGMtPm1hcCwgUlRDX0NUUkwsICZyZWdf dmFsKTsKPj4gKyAgICAgcnRjX2VuYWJsZSA9IEZJRUxEX0dFVChSVENfRU5BQkxFLCByZWdfdmFs KTsKPj4gKyAgICAgaWYgKCFydGNfZW5hYmxlKSB7Cj4+ICsgICAgICAgICAgICAgaWYgKGNsa19n ZXRfcmF0ZShydGMtPnNjbGspID09IE9TQ18yNE0pIHsKPj4gKyAgICAgICAgICAgICAgICAgICAg IC8qIHNlbGVjdCAyNE0gb3NjaWxsYXRvciAqLwo+PiArICAgICAgICAgICAgICAgICAgICAgcmVn bWFwX3VwZGF0ZV9iaXRzKHJ0Yy0+bWFwLCBSVENfQ1RSTCwgUlRDX09TQ19TRUwsIFJUQ19PU0Nf U0VMKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgLyoKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAqIFNldCBSVEMgb3NjaWxsYXRvciB0byBmcmVxX291dCB0byBmcmVxX2luLygoTjAq TTArTjEqTTEpLyhNMCtNMSkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgKiBFbmFibGUgY2xv Y2tfaW4gZ2F0ZSBvZiBvc2NpbGxhdG9yIDI0TUh6Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg KiBTZXQgTjAgdG8gNzMzLCBOMSB0byA3MzIKPj4gKyAgICAgICAgICAgICAgICAgICAgICAqLwo+ PiArICAgICAgICAgICAgICAgICAgICAgcmVnX3ZhbCA9IEZJRUxEX1BSRVAoUlRDX09TQ0lOX0lO X0VOLCAxKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRklFTERfUFJFUChS VENfT1NDSU5fT1VUX0NGRywgMSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IEZJRUxEX1BSRVAoUlRDX09TQ0lOX09VVF9OME0wLCBSVENfT1NDSU5fT1VUXzMyS19OMCkKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJRUxEX1BSRVAoUlRDX09TQ0lOX09V VF9OMU0xLCBSVENfT1NDSU5fT1VUXzMyS19OMSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICBy ZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX09TQ0lOX0NUUkwwLCBSVENfT1NDSU5fSU5f RU4KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlRDX09TQ0lO X09VVF9DRkcgfCBSVENfT1NDSU5fT1VUX04wTTAKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgUlRDX09TQ0lOX09VVF9OMU0xLCByZWdfdmFsKTsKPj4gKwo+PiAr ICAgICAgICAgICAgICAgICAgICAgLyogU2V0IE0wIHRvIDIsIE0xIHRvIDMsIHNvIGZyZXFfb3V0 ID0gMzI3NjggSHoqLwo+PiArICAgICAgICAgICAgICAgICAgICAgcmVnX3ZhbCA9IEZJRUxEX1BS RVAoUlRDX09TQ0lOX09VVF9OME0wLCBSVENfT1NDSU5fT1VUXzMyS19NMCkKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IEZJRUxEX1BSRVAoUlRDX09TQ0lOX09VVF9OMU0xLCBS VENfT1NDSU5fT1VUXzMyS19NMSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICByZWdtYXBfd3Jp dGVfYml0cyhydGMtPm1hcCwgUlRDX09TQ0lOX0NUUkwxLCBSVENfT1NDSU5fT1VUX04wTTAKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlRDX09TQ0lOX09VVF9O MU0xLCByZWdfdmFsKTsKPj4gKyAgICAgICAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAg ICAgICAgICAgLyogc2VsZWN0IDMySyBvc2NpbGxhdG9yICovCj4+ICsgICAgICAgICAgICAgICAg ICAgICByZWdtYXBfd3JpdGVfYml0cyhydGMtPm1hcCwgUlRDX0NUUkwsIFJUQ19PU0NfU0VMLCAw KTsKPj4gKyAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgLyogRW5hYmxlIFJUQyAqLwo+ PiArICAgICAgICAgICAgIHJlZ21hcF93cml0ZV9iaXRzKHJ0Yy0+bWFwLCBSVENfQ1RSTCwgUlRD X0VOQUJMRSwgUlRDX0VOQUJMRSk7Cj4gCj4gICAgICAgICAgICAgICAgICBUaGlzIG11c3Qgbm90 IGJlIGRvbmUgYXQgcHJvYmUgdGltZSwgZWxzZSB5b3UgbG9vc2UgdGhlCj4gICAgICAgICAgICAg ICAgICBpbXBvcnRhbnQgaW5mb3JtYXRpb24gdGFodCB0aGUgdGltZSBoYXMgbmV2ZXIgYmVlbiBz ZXQuIEluc3RlYWQsCj4gICAgICAgICAgICAgICAgICBpdCBzaG91bGQgb25seSBiZSBlbmFibGVk IG9uIHRoZSBmaXJzdCAuc2V0X3RpbWUgaW52b2NhdGlvbiBkbwo+ICAgICAgICAgICAgICAgICAg eW91IGNvdWxkIG5vdyBpbiAucmVhZF90aW1lIHRoYXQgdGhlIHRpbWUgaXMgY3VycmVudGx5IGlu dmFsaWQuCj4gClRoZXJlIGFyZSBzb21lIGRvdWJ0cyBhYm91dCB0aGlzIHBsYWNlLgoKWW91IG1l YW4gdGhhdCBhZnRlciB0aGUgc3lzdGVtIGlzIHVwLCB1bmxlc3MgdGhlIHRpbWUgaXMgc2V0LCBp dCB3aWxsIApmYWlsIHRvIHJlYWQgdGhlIHRpbWUgYXQgYW55IHRpbWUsIGFuZCB0aGUgYWxhcm0g Y2xvY2sgd2lsbCBhbHNvIGZhaWwuCkluIHRoaXMgY2FzZSwgdGhlIHN5c3RlbSBtdXN0IHNldCBh IHRpbWUuCgpXaGVuIHJlYWQgdGltZSBpbnZsYWxpZCwgc3lzdGVtIGlzIHdpbGwgc2V0IHRpbWUu ClRoaXMgcGFydCBvZiB0aGUgbG9naWMgSSBzZWUgdGhlIGtlcm5lbCBwYXJ0IGhhcyBub3QgYmVl biBpbXBsZW1lbnRlZCwgCnNvIG9ubHkgdGhlIHVzZXIgYXBwbGljYXRpb24gaGFzIGJlZW4gaW1w bGVtZW50ZWQuIFdoZXRoZXIgdGhpcyBpcyAKcmVhc29uYWJsZSwgaWYgbm90IHNldCB0aW1lLCB5 b3Ugd2lsbCBuZXZlciB1c2UgUlRDIG1vZHVsZS4KCj4+ICsgICAgICAgICAgICAgdXNsZWVwX3Jh bmdlKDEwMCwgMjAwKTsKPj4gKyAgICAgfQo+PiArICAgICByZWdtYXBfd3JpdGVfYml0cyhydGMt Pm1hcCwgUlRDX0lOVF9NQVNLLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBSVENfQUxSTTBf SVJRX01TSywgUlRDX0FMUk0wX0lSUV9NU0spOwo+PiArICAgICByZWdtYXBfd3JpdGVfYml0cyhy dGMtPm1hcCwgUlRDX0NUUkwsIFJUQ19BTFJNMF9FTiwgMCk7Cj4+ICt9Cj4+ICsKPiAKPiAtLQo+ IEFsZXhhbmRyZSBCZWxsb25pLCBjby1vd25lciBhbmQgQ09PLCBCb290bGluCj4gRW1iZWRkZWQg TGludXggYW5kIEtlcm5lbCBlbmdpbmVlcmluZwo+IGh0dHBzOi8vYm9vdGxpbi5jb20KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMg bWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK