Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp4616662pxb; Tue, 5 Oct 2021 06:56:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzr4Keo8oTcKtZ3lyNOirEiESRyzu9g/ezr+cLXMh4FneBe7egpVGi5WPbDEEbZ0CauShft X-Received: by 2002:a17:90a:414c:: with SMTP id m12mr3970525pjg.187.1633442166528; Tue, 05 Oct 2021 06:56:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1633442166; cv=pass; d=google.com; s=arc-20160816; b=lVL+QoH/rwlSyXc1LZ1BF0ymnGT8BVkhvEkfXhy6evdGVrXKJXuIVi1zlaj7CLdNpO FmADfiXBX8M1JXLmKr4GlYn49MvT/e8g1mLYweGbtLrfiKX/b1iKf1fO7lxS6ccZ0cyo kV2KAe3uD4e/QDIzOOZIhLWxcxb330ert2PrjlJ/br5uoHKmlk0VmaHcQAdS9/XlxhMp io10DL6L7nysnH04njBL3irGJ4PsAXNzpgi9UKGaMTi63NZ+aG23+iaVSJ70yCgNboFb f70+kfGDCyCrhglITZB2wdQr+0xkFRLK0+IljiteUqVHMPc3ShzC+ivMotG0utqwdCmK +nFQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0a0v70MzVS4Zz38VH04+lzguZ1THG5mFprSvEZziEHg=; b=VGkqy4DC8mAVmsalu+YQYCwfLU7zAHHnhn/q/9k30NeCUygH4CvHk+DZ4s9070dccp z3U6Obvlu6CWpCFz66hFMzhwRxxWroLhVKoeJ1vTY98rRTpGlMU8C6vA1wB9GRt5c6jf pLbLL57CvBnlDJs9WMOOxj8sX7Knb3b2Q4rA4q0Ebd4F786SBMRiligSkpN+wwb2zrw0 3NMyptc2cx8ozEttXqYEMjKEddneYM1hafdYItXjNudHffa/XL/RzgqGacsN/G6sB9fB NhCU3q8LO8ZXwqc2YzXFmD4dx20wXEF5sYEHa/knQMhkJyQ7OzKhxGqsoY30Lrryixw8 J0dw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b="VX/e65pw"; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o22si22943237pgv.520.2021.10.05.06.55.56; Tue, 05 Oct 2021 06:56:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b="VX/e65pw"; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235632AbhJEN5W (ORCPT + 75 others); Tue, 5 Oct 2021 09:57:22 -0400 Received: from mail-co1nam11on2066.outbound.protection.outlook.com ([40.107.220.66]:34049 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235640AbhJEN4i (ORCPT ); Tue, 5 Oct 2021 09:56:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H59c0EA71Eu68vxiftrA+dlgTJdFOctTTVGPzktfqU+VVOoCXBAd00IJlQLpti3kAyY3WvC9SFaT5NI16gvvwRrat1e6sn52DVnf6L7Zo8fglAM+u687VhGejUvxgI0UXjhQEIbfCy4uBHD0hullVro9HwAma3EedINVrJk9+ezT5rmZcKXMi13aftw/WLU8SKAOKjzrT+OzmxztaxKuVXAh94KunXehPbQDLAATT22U2+HF2Dr/5GJAHo+7m4aj32Cv0umL/mTbPZUXWYD9aWy4Lq57ULKig9iYEhiDz1akLN8QM3MImBux3y0Ng9c6YM4HHPXW1IV11yICw3otjQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0a0v70MzVS4Zz38VH04+lzguZ1THG5mFprSvEZziEHg=; b=IK07nZa2wdxBealaeRU+AV6ia569c2O+Lj/xpJUTabhXHck9pfihspKV/yohaVagWvb+OSSVgNlPoi5Lp/uTKsy0SA9Howa9XvkH7MQZo994zLDBfLZLzRFC4kQDLUdDCn/fNBCLTW4MT4LZiGzmiWzvmvb6cPYRAMQr9wRCEM6Pu7YDuMnCtqZuO1s8Vt+wC4xoC5+pp0xj0yCwNa5WQZPWyk67fOnEPlXSmLAGaIgt63SPB7JdzWG5+36LOtu+ovtu8InyyC5KjuC+6/o6ix/2Vz8enNG1viB9bKsltXOkpArGTXtqdbLVla56ELiSIb6NgtDXSLEOlZbadqvzjA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0a0v70MzVS4Zz38VH04+lzguZ1THG5mFprSvEZziEHg=; b=VX/e65pwoetTqqpivFwAbEIY7+/fkKFevbCtDvC8AF+RHwb+U969IrwiySoPRMX5WFf2jCBO9LJ5PzpHyRu3iv/MIAnYE/DUSvv4MxLJ2hQ8V+iFm8dW5BAbG3+/Bm9w8GzqyuRdjI0vEMizXLfhr0kWttubV+lNa0eHtzovl1k= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) by PH0PR11MB5627.namprd11.prod.outlook.com (2603:10b6:510:e4::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Tue, 5 Oct 2021 13:54:46 +0000 Received: from PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4]) by PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4%9]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 13:54:46 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Kalle Valo Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "David S . Miller" , devicetree@vger.kernel.org, Rob Herring , linux-mmc@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Ulf Hansson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH v8 09/24] wfx: add hwio.c/hwio.h Date: Tue, 5 Oct 2021 15:53:45 +0200 Message-Id: <20211005135400.788058-10-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> References: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) To PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) MIME-Version: 1.0 Received: from pc-42.silabs.com (37.71.187.125) by PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Tue, 5 Oct 2021 13:54:43 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f64abaf0-2ccb-414e-dab8-08d98807b0d0 X-MS-TrafficTypeDiagnostic: PH0PR11MB5627: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:346; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DRjd5HUZ43IBMPNo+zoaBckHjC+lwEAPwGleEpMNbLsbViqFlTd9aw03qQnNEvdUeqcL/VpuZpGBGefsAmpBbeZw74+oGzMGcAW9JBUyTHGE0Hejt9zkljmXSdNNIa39hIQfjGZiv2MifEsefjIS+DehaAc9sGfWNUYODNFQBfOx/Giib5Fh3zNkNgarOkWzpgdnBjkomFiHo4uqxE4HEcotpiofGky/QOFEWIHLpGngBVxI1etv1xeld2As69J0O0YMIYRnoQGCLvCLFDLLkUmDrXZy09tyvdImY9Yx38qfJjuP7xCi+EOOxSCmXiQYFwXkBrZJ1pLnK+NuBxbjrd2YQSfEfiLcp8T/bEFBW7VwbSCVQJVyP9XHoXEWoN5UKKLloclHnDRm0goYEuJ71d/N9z0M7mqPcvu/zx+zpA6KV1SC8t5AExPNCkIvlbOzhrRKhzXIf1a3+XitgtDrcZ08BGAjiEyFvuelUO6I2VD4fjpQ+AKIosF1voXSNID3VoBQW59GHYp8Dn6Njtye1McQMKBisRme8R9apoTB52HMcoRbw01xvScowpBRpLnqAu66dWrIOwElWlbzUUQ/WfTiykYfqt7yTG0Bqwi6iYumKS02+X37F0+WI7zX4hN1/eZSe9hHQAD/wXR0FyResLBSiTISQmGnUXVFAq/PEEGDnY+kqKM49P/adfKW+6qC6effDlSofQVc32t+99LojQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5657.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(52116002)(508600001)(8676002)(66946007)(66476007)(66556008)(7696005)(107886003)(316002)(4326008)(26005)(30864003)(2906002)(7416002)(1076003)(956004)(54906003)(5660300002)(2616005)(186003)(38350700002)(6486002)(83380400001)(66574015)(86362001)(6916009)(8936002)(38100700002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZnhCbnVkTFJYVUhEUHhYV1BYYWRrRDFSaHJ0WjlBS2JJcmE3YWNGYUFUc1F4?= =?utf-8?B?bE04ejhNUkQ5Z01Sa05JNjJuTFhOUE12NThFVUh5SU95WTBZaFp6T1ZKQnJa?= =?utf-8?B?bkI5aWdxc1A4SjNYM1VvYXpoMEZaL2pVMWhiTFBKOWZ3SWRQSHAvdHJTZTZh?= =?utf-8?B?cTU1WThBZm5wMHF1Rm92YkRPcGhHNWVRZ0pGcjhFUUl6MzN5ZFgwVm02N1Bk?= =?utf-8?B?ajRBT2dlQ25sTkhyaWdyMWFadUhJTmtZalVjb1k0M3hIVGJaM1V2dlJtVTA1?= =?utf-8?B?M24zb0NGc0pvcXZId2czSXpaRWRMcG01RnBzRGVDT3BNa2g0bFRKMmh4N2lm?= =?utf-8?B?NVFVU1lsY0dlaGFEK0VtUXoyOHV2YmdWL2xpSjRDWGhWM094M0NWOXpZUWRm?= =?utf-8?B?UEFYOU50REZCMjh0YTlTa1hTazNITkhUUWxtdlg0L2tKeWpnRDlTTEtDemFr?= =?utf-8?B?VzBpL1VVWGpGWTVMOWFUTDV6alZTM0JFYUh5Z3lEUFlhYStyZi9FMnE5MGpI?= =?utf-8?B?VG1VZkMyZE9PcHNCaW9ZMXcrZjg4V1NteU04bEhYWE8yaHNkcnBPbnBFM004?= =?utf-8?B?QWxPVHJ4OUVXWUhqWDF6eURCSStwbEgrNmlEdFZTS05QYVRPRXhnakh3anFH?= =?utf-8?B?Q0h6andLVTI4cUx6OEVVU3E4WDdPSXVMaVBjdXpHV0N0a0xDbHNrcDNGYkRR?= =?utf-8?B?ODE1d2M1WnEybHE1MkpCdTZZVWdzd25MVU5aOHFEMXJrMnBCME92RE5La3FN?= =?utf-8?B?cVYxMW56NmY5bEk2cThWUVU5K0tUVkFibi9ZcCt6QkhYejBLU2JURmxaT05s?= =?utf-8?B?M2RrLzBHVHRiMjlMTkMwenlaR0UrUUlUWXV1cVFURzdaaUFVVG5zQ1N3eHVD?= =?utf-8?B?cE5GY0R6TEtwbWliQW4vMnZ4bVNNRGhyamFwU3g2SGtqa0xlZlEzVDBEOEVQ?= =?utf-8?B?NmlLOTE5djRNWmxYeTNCVlBxNzQ5MUpBRGFkT1hGRThFekJPY2FBZ010VVhX?= =?utf-8?B?TjZpL1RzREUyNWEyQ3NxYVdueDNqNVJ0aURNK1pQSmZjYVpyb2grMzVqNFVI?= =?utf-8?B?RStQV2U3YkJkSHpNWFlyam5nZWxJYW1UbFBtK2pTTENDS25CeFY3UWN0RUJw?= =?utf-8?B?T2J4RXl6Y0dvcG83dUgyMXFpRHpid0JiU3dIWGhkNHBPdVMwa0ZYaXRnSm9T?= =?utf-8?B?VlBFbE5NbkFKMitxR1JRUTdHWndSbVAzL2N4M2VjVXZOVVJreHpyVGl2dWt3?= =?utf-8?B?UFNhUkxiQS9xU3lYKzlqYnVCODBRUzlHVVpQOTBNU1dpOXA0OXZWY1AvdjJv?= =?utf-8?B?R09HZTNYVDc1d2NUZnRHbWVGV21kbjNUd1k1dnhPaUtPcWZBaTI4UTY3WUVa?= =?utf-8?B?Q0Evd2Yva01UZ1RSUWZkeVMwazA3VmlFTlhIYnVmb1VLcG94Mjh1WTNjcFpQ?= =?utf-8?B?cmx6blRNaGQvTG8yeDZtZzZDZEtqY0ZwdGxLQWNMZmNaYzdGK0xRTDNvMSt3?= =?utf-8?B?L016ejk4MDBOaElMODYvVlFaay9hZ3NNcVlGRFl4c2hIL2VkN3dNbUEyY3E5?= =?utf-8?B?d05rMC8wT1VBRzI3bmxZVnVvdGNOUWxGbHRQWWMvOVRmQkJ4VUsxV1FoK3U0?= =?utf-8?B?bHk3My8xYnpLYXJmWE1xUlAwVks1RkdjSy81U21rOTlGOXAxZEg2VXFzR1N6?= =?utf-8?B?Rm1yODdpWW8yNmlPLzFITllGUGdUVGgwOURYQ0xhL2JEeFBSZVhIYU5YaFFE?= =?utf-8?Q?J04AkVKqZGXQPrs9Wn7wJev0PppVw0yLPlxz3N4?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: f64abaf0-2ccb-414e-dab8-08d98807b0d0 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5657.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2021 13:54:46.5428 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: umqKfoVxSjg3z/SRwfAX8l9R09JbdNqxbS0UmgVxwR2iImesll19VsZlAHibpxacYzDpn7ASqEEtRASGQOEkvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5627 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaHdpby5jIHwgMzUyICsrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaHdp by5oIHwgIDc5ICsrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaHdpby5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9od2lvLmgK CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2h3aW8uYyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaHdpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYzUzYjM2ZDM2Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9od2lvLmMKQEAgLTAsMCArMSwzNTIgQEAKKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBMb3ctbGV2ZWwg SS9PIGZ1bmN0aW9ucy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBM YWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAq LworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cisj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2FsaWduLmg+CisKKyNpbmNs dWRlICJod2lvLmgiCisjaW5jbHVkZSAid2Z4LmgiCisjaW5jbHVkZSAiYnVzLmgiCisjaW5jbHVk ZSAidHJhY2VzLmgiCisKKyNkZWZpbmUgV0ZYX0hJRl9CVUZGRVJfU0laRSAweDIwMDAKKworc3Rh dGljIGludCB3ZnhfcmVhZDMyKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgcmVnLCB1MzIgKnZh bCkKK3sKKwlpbnQgcmV0OworCV9fbGUzMiAqdG1wID0ga21hbGxvYyhzaXplb2YodTMyKSwgR0ZQ X0tFUk5FTCk7CisKKwkqdmFsID0gfjA7IC8qIE5ldmVyIHJldHVybiB1bmRlZmluZWQgdmFsdWUg Ki8KKwlpZiAoIXRtcCkKKwkJcmV0dXJuIC1FTk9NRU07CisJcmV0ID0gd2Rldi0+aHdidXNfb3Bz LT5jb3B5X2Zyb21faW8od2Rldi0+aHdidXNfcHJpdiwgcmVnLCB0bXAsCisJCQkJCSAgICBzaXpl b2YodTMyKSk7CisJaWYgKHJldCA+PSAwKQorCQkqdmFsID0gbGUzMl90b19jcHUoKnRtcCk7CisJ a2ZyZWUodG1wKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKHdkZXYtPmRldiwgIiVzOiBidXMgY29t bXVuaWNhdGlvbiBlcnJvcjogJWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0KTsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IHdmeF93cml0ZTMyKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQg cmVnLCB1MzIgdmFsKQoreworCWludCByZXQ7CisJX19sZTMyICp0bXAgPSBrbWFsbG9jKHNpemVv Zih1MzIpLCBHRlBfS0VSTkVMKTsKKworCWlmICghdG1wKQorCQlyZXR1cm4gLUVOT01FTTsKKwkq dG1wID0gY3B1X3RvX2xlMzIodmFsKTsKKwlyZXQgPSB3ZGV2LT5od2J1c19vcHMtPmNvcHlfdG9f aW8od2Rldi0+aHdidXNfcHJpdiwgcmVnLCB0bXAsCisJCQkJCSAgc2l6ZW9mKHUzMikpOworCWtm cmVlKHRtcCk7CisJaWYgKHJldCkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICIlczogYnVzIGNvbW11 bmljYXRpb24gZXJyb3I6ICVkXG4iLAorCQkJX19mdW5jX18sIHJldCk7CisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCB3ZnhfcmVhZDMyX2xvY2tlZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwg aW50IHJlZywgdTMyICp2YWwpCit7CisJaW50IHJldDsKKworCXdkZXYtPmh3YnVzX29wcy0+bG9j ayh3ZGV2LT5od2J1c19wcml2KTsKKwlyZXQgPSB3ZnhfcmVhZDMyKHdkZXYsIHJlZywgdmFsKTsK KwlfdHJhY2VfaW9fcmVhZDMyKHJlZywgKnZhbCk7CisJd2Rldi0+aHdidXNfb3BzLT51bmxvY2so d2Rldi0+aHdidXNfcHJpdik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB3Znhfd3Jp dGUzMl9sb2NrZWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCByZWcsIHUzMiB2YWwpCit7CisJ aW50IHJldDsKKworCXdkZXYtPmh3YnVzX29wcy0+bG9jayh3ZGV2LT5od2J1c19wcml2KTsKKwly ZXQgPSB3Znhfd3JpdGUzMih3ZGV2LCByZWcsIHZhbCk7CisJX3RyYWNlX2lvX3dyaXRlMzIocmVn LCB2YWwpOworCXdkZXYtPmh3YnVzX29wcy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X3dyaXRlMzJfYml0c19sb2NrZWQoc3RydWN0 IHdmeF9kZXYgKndkZXYsCisJCQkJICAgaW50IHJlZywgdTMyIG1hc2ssIHUzMiB2YWwpCit7CisJ aW50IHJldDsKKwl1MzIgdmFsX3IsIHZhbF93OworCisJV0FSTl9PTih+bWFzayAmIHZhbCk7CisJ dmFsICY9IG1hc2s7CisJd2Rldi0+aHdidXNfb3BzLT5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOwor CXJldCA9IHdmeF9yZWFkMzIod2RldiwgcmVnLCAmdmFsX3IpOworCV90cmFjZV9pb19yZWFkMzIo cmVnLCB2YWxfcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyOworCXZhbF93ID0gKHZhbF9y ICYgfm1hc2spIHwgdmFsOworCWlmICh2YWxfdyAhPSB2YWxfcikgeworCQlyZXQgPSB3Znhfd3Jp dGUzMih3ZGV2LCByZWcsIHZhbF93KTsKKwkJX3RyYWNlX2lvX3dyaXRlMzIocmVnLCB2YWxfdyk7 CisJfQorZXJyOgorCXdkZXYtPmh3YnVzX29wcy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X2luZGlyZWN0X3JlYWQoc3RydWN0IHdm eF9kZXYgKndkZXYsIGludCByZWcsIHUzMiBhZGRyLAorCQkJICAgICB2b2lkICpidWYsIHNpemVf dCBsZW4pCit7CisJaW50IHJldDsKKwlpbnQgaTsKKwl1MzIgY2ZnOworCXUzMiBwcmVmZXRjaDsK KworCVdBUk5fT04obGVuID49IFdGWF9ISUZfQlVGRkVSX1NJWkUpOworCVdBUk5fT04ocmVnICE9 IFdGWF9SRUdfQUhCX0RQT1JUICYmIHJlZyAhPSBXRlhfUkVHX1NSQU1fRFBPUlQpOworCisJaWYg KHJlZyA9PSBXRlhfUkVHX0FIQl9EUE9SVCkKKwkJcHJlZmV0Y2ggPSBDRkdfUFJFRkVUQ0hfQUhC OworCWVsc2UgaWYgKHJlZyA9PSBXRlhfUkVHX1NSQU1fRFBPUlQpCisJCXByZWZldGNoID0gQ0ZH X1BSRUZFVENIX1NSQU07CisJZWxzZQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldCA9IHdmeF93 cml0ZTMyKHdkZXYsIFdGWF9SRUdfQkFTRV9BRERSLCBhZGRyKTsKKwlpZiAocmV0IDwgMCkKKwkJ Z290byBlcnI7CisKKwlyZXQgPSB3ZnhfcmVhZDMyKHdkZXYsIFdGWF9SRUdfQ09ORklHLCAmY2Zn KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnI7CisKKwlyZXQgPSB3Znhfd3JpdGUzMih3ZGV2 LCBXRlhfUkVHX0NPTkZJRywgY2ZnIHwgcHJlZmV0Y2gpOworCWlmIChyZXQgPCAwKQorCQlnb3Rv IGVycjsKKworCWZvciAoaSA9IDA7IGkgPCAyMDsgaSsrKSB7CisJCXJldCA9IHdmeF9yZWFkMzIo d2RldiwgV0ZYX1JFR19DT05GSUcsICZjZmcpOworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gZXJy OworCQlpZiAoIShjZmcgJiBwcmVmZXRjaCkpCisJCQlicmVhazsKKwkJdXNsZWVwX3JhbmdlKDIw MCwgMjUwKTsKKwl9CisJaWYgKGkgPT0gMjApIHsKKwkJcmV0ID0gLUVUSU1FRE9VVDsKKwkJZ290 byBlcnI7CisJfQorCisJcmV0ID0gd2Rldi0+aHdidXNfb3BzLT5jb3B5X2Zyb21faW8od2Rldi0+ aHdidXNfcHJpdiwgcmVnLCBidWYsIGxlbik7CisKK2VycjoKKwlpZiAocmV0IDwgMCkKKwkJbWVt c2V0KGJ1ZiwgMHhGRiwgbGVuKTsgLyogTmV2ZXIgcmV0dXJuIHVuZGVmaW5lZCB2YWx1ZSAqLwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X2luZGlyZWN0X3dyaXRlKHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2LCBpbnQgcmVnLCB1MzIgYWRkciwKKwkJCSAgICAgIGNvbnN0IHZvaWQgKmJ1 Ziwgc2l6ZV90IGxlbikKK3sKKwlpbnQgcmV0OworCisJV0FSTl9PTihsZW4gPj0gV0ZYX0hJRl9C VUZGRVJfU0laRSk7CisJV0FSTl9PTihyZWcgIT0gV0ZYX1JFR19BSEJfRFBPUlQgJiYgcmVnICE9 IFdGWF9SRUdfU1JBTV9EUE9SVCk7CisJcmV0ID0gd2Z4X3dyaXRlMzIod2RldiwgV0ZYX1JFR19C QVNFX0FERFIsIGFkZHIpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJu IHdkZXYtPmh3YnVzX29wcy0+Y29weV90b19pbyh3ZGV2LT5od2J1c19wcml2LCByZWcsIGJ1Ziwg bGVuKTsKK30KKworc3RhdGljIGludCB3ZnhfaW5kaXJlY3RfcmVhZF9sb2NrZWQoc3RydWN0IHdm eF9kZXYgKndkZXYsIGludCByZWcsIHUzMiBhZGRyLAorCQkJCSAgICB2b2lkICpidWYsIHNpemVf dCBsZW4pCit7CisJaW50IHJldDsKKworCXdkZXYtPmh3YnVzX29wcy0+bG9jayh3ZGV2LT5od2J1 c19wcml2KTsKKwlyZXQgPSB3ZnhfaW5kaXJlY3RfcmVhZCh3ZGV2LCByZWcsIGFkZHIsIGJ1Ziwg bGVuKTsKKwlfdHJhY2VfaW9faW5kX3JlYWQocmVnLCBhZGRyLCBidWYsIGxlbik7CisJd2Rldi0+ aHdidXNfb3BzLT51bmxvY2sod2Rldi0+aHdidXNfcHJpdik7CisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCB3ZnhfaW5kaXJlY3Rfd3JpdGVfbG9ja2VkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCBpbnQgcmVnLCB1MzIgYWRkciwKKwkJCQkgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxl bikKK3sKKwlpbnQgcmV0OworCisJd2Rldi0+aHdidXNfb3BzLT5sb2NrKHdkZXYtPmh3YnVzX3By aXYpOworCXJldCA9IHdmeF9pbmRpcmVjdF93cml0ZSh3ZGV2LCByZWcsIGFkZHIsIGJ1ZiwgbGVu KTsKKwlfdHJhY2VfaW9faW5kX3dyaXRlKHJlZywgYWRkciwgYnVmLCBsZW4pOworCXdkZXYtPmh3 YnVzX29wcy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgd2Z4X2luZGlyZWN0X3JlYWQzMl9sb2NrZWQoc3RydWN0IHdmeF9kZXYgKndkZXYs IGludCByZWcsCisJCQkJICAgICAgdTMyIGFkZHIsIHUzMiAqdmFsKQoreworCWludCByZXQ7CisJ X19sZTMyICp0bXAgPSBrbWFsbG9jKHNpemVvZih1MzIpLCBHRlBfS0VSTkVMKTsKKworCWlmICgh dG1wKQorCQlyZXR1cm4gLUVOT01FTTsKKwl3ZGV2LT5od2J1c19vcHMtPmxvY2sod2Rldi0+aHdi dXNfcHJpdik7CisJcmV0ID0gd2Z4X2luZGlyZWN0X3JlYWQod2RldiwgcmVnLCBhZGRyLCB0bXAs IHNpemVvZih1MzIpKTsKKwkqdmFsID0gbGUzMl90b19jcHUoKnRtcCk7CisJX3RyYWNlX2lvX2lu ZF9yZWFkMzIocmVnLCBhZGRyLCAqdmFsKTsKKwl3ZGV2LT5od2J1c19vcHMtPnVubG9jayh3ZGV2 LT5od2J1c19wcml2KTsKKwlrZnJlZSh0bXApOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQgd2Z4X2luZGlyZWN0X3dyaXRlMzJfbG9ja2VkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQg cmVnLAorCQkJCSAgICAgICB1MzIgYWRkciwgdTMyIHZhbCkKK3sKKwlpbnQgcmV0OworCV9fbGUz MiAqdG1wID0ga21hbGxvYyhzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXRtcCkK KwkJcmV0dXJuIC1FTk9NRU07CisJKnRtcCA9IGNwdV90b19sZTMyKHZhbCk7CisJd2Rldi0+aHdi dXNfb3BzLT5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOworCXJldCA9IHdmeF9pbmRpcmVjdF93cml0 ZSh3ZGV2LCByZWcsIGFkZHIsIHRtcCwgc2l6ZW9mKHUzMikpOworCV90cmFjZV9pb19pbmRfd3Jp dGUzMihyZWcsIGFkZHIsIHZhbCk7CisJd2Rldi0+aHdidXNfb3BzLT51bmxvY2sod2Rldi0+aHdi dXNfcHJpdik7CisJa2ZyZWUodG1wKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgd2Z4X2RhdGFf cmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQoreworCWlu dCByZXQ7CisKKwlXQVJOKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYnVmLCA0KSwgInVuYWxpZ25l ZCBidWZmZXIiKTsKKwl3ZGV2LT5od2J1c19vcHMtPmxvY2sod2Rldi0+aHdidXNfcHJpdik7CisJ cmV0ID0gd2Rldi0+aHdidXNfb3BzLT5jb3B5X2Zyb21faW8od2Rldi0+aHdidXNfcHJpdiwKKwkJ CQkJICAgIFdGWF9SRUdfSU5fT1VUX1FVRVVFLCBidWYsIGxlbik7CisJX3RyYWNlX2lvX3JlYWQo V0ZYX1JFR19JTl9PVVRfUVVFVUUsIGJ1ZiwgbGVuKTsKKwl3ZGV2LT5od2J1c19vcHMtPnVubG9j ayh3ZGV2LT5od2J1c19wcml2KTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKHdkZXYtPmRldiwgIiVz OiBidXMgY29tbXVuaWNhdGlvbiBlcnJvcjogJWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0KTsKKwly ZXR1cm4gcmV0OworfQorCitpbnQgd2Z4X2RhdGFfd3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYs IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlpbnQgcmV0OworCisJV0FSTighSVNf QUxJR05FRCgodWludHB0cl90KWJ1ZiwgNCksICJ1bmFsaWduZWQgYnVmZmVyIik7CisJd2Rldi0+ aHdidXNfb3BzLT5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOworCXJldCA9IHdkZXYtPmh3YnVzX29w cy0+Y29weV90b19pbyh3ZGV2LT5od2J1c19wcml2LAorCQkJCQkgIFdGWF9SRUdfSU5fT1VUX1FV RVVFLCBidWYsIGxlbik7CisJX3RyYWNlX2lvX3dyaXRlKFdGWF9SRUdfSU5fT1VUX1FVRVVFLCBi dWYsIGxlbik7CisJd2Rldi0+aHdidXNfb3BzLT51bmxvY2sod2Rldi0+aHdidXNfcHJpdik7CisJ aWYgKHJldCkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICIlczogYnVzIGNvbW11bmljYXRpb24gZXJy b3I6ICVkXG4iLAorCQkJX19mdW5jX18sIHJldCk7CisJcmV0dXJuIHJldDsKK30KKworaW50IHdm eF9zcmFtX2J1Zl9yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdm9pZCAqYnVm LCBzaXplX3QgbGVuKQoreworCXJldHVybiB3ZnhfaW5kaXJlY3RfcmVhZF9sb2NrZWQod2Rldiwg V0ZYX1JFR19TUkFNX0RQT1JULAorCQkJCQlhZGRyLCBidWYsIGxlbik7Cit9CisKK2ludCB3Znhf YWhiX2J1Zl9yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdm9pZCAqYnVmLCBz aXplX3QgbGVuKQoreworCXJldHVybiB3ZnhfaW5kaXJlY3RfcmVhZF9sb2NrZWQod2RldiwgV0ZY X1JFR19BSEJfRFBPUlQsCisJCQkJCWFkZHIsIGJ1ZiwgbGVuKTsKK30KKworaW50IHdmeF9zcmFt X2J1Zl93cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsCisJCSAgICAgICBjb25z dCB2b2lkICpidWYsIHNpemVfdCBsZW4pCit7CisJcmV0dXJuIHdmeF9pbmRpcmVjdF93cml0ZV9s b2NrZWQod2RldiwgV0ZYX1JFR19TUkFNX0RQT1JULAorCQkJCQkgYWRkciwgYnVmLCBsZW4pOwor fQorCitpbnQgd2Z4X2FoYl9idWZfd3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRy LAorCQkgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pCit7CisJcmV0dXJuIHdmeF9p bmRpcmVjdF93cml0ZV9sb2NrZWQod2RldiwgV0ZYX1JFR19BSEJfRFBPUlQsCisJCQkJCSBhZGRy LCBidWYsIGxlbik7Cit9CisKK2ludCB3Znhfc3JhbV9yZWdfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwgdTMyIGFkZHIsIHUzMiAqdmFsKQoreworCXJldHVybiB3ZnhfaW5kaXJlY3RfcmVhZDMy X2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NSQU1fRFBPUlQsCisJCQkJCSAgYWRkciwgdmFsKTsKK30K KworaW50IHdmeF9haGJfcmVnX3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCB1 MzIgKnZhbCkKK3sKKwlyZXR1cm4gd2Z4X2luZGlyZWN0X3JlYWQzMl9sb2NrZWQod2RldiwgV0ZY X1JFR19BSEJfRFBPUlQsCisJCQkJCSAgYWRkciwgdmFsKTsKK30KKworaW50IHdmeF9zcmFtX3Jl Z193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsIHUzMiB2YWwpCit7CisJcmV0 dXJuIHdmeF9pbmRpcmVjdF93cml0ZTMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NSQU1fRFBPUlQs IGFkZHIsIHZhbCk7Cit9CisKK2ludCB3ZnhfYWhiX3JlZ193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwgdTMyIGFkZHIsIHUzMiB2YWwpCit7CisJcmV0dXJuIHdmeF9pbmRpcmVjdF93cml0ZTMy X2xvY2tlZCh3ZGV2LCBXRlhfUkVHX0FIQl9EUE9SVCwgYWRkciwgdmFsKTsKK30KKworaW50IHdm eF9jb25maWdfcmVnX3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiAqdmFsKQoreworCXJl dHVybiB3ZnhfcmVhZDMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX0NPTkZJRywgdmFsKTsKK30KKwor aW50IHdmeF9jb25maWdfcmVnX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgdmFsKQor eworCXJldHVybiB3Znhfd3JpdGUzMl9sb2NrZWQod2RldiwgV0ZYX1JFR19DT05GSUcsIHZhbCk7 Cit9CisKK2ludCB3ZnhfY29uZmlnX3JlZ193cml0ZV9iaXRzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCB1MzIgbWFzaywgdTMyIHZhbCkKK3sKKwlyZXR1cm4gd2Z4X3dyaXRlMzJfYml0c19sb2NrZWQo d2RldiwgV0ZYX1JFR19DT05GSUcsIG1hc2ssIHZhbCk7Cit9CisKK2ludCB3ZnhfY29udHJvbF9y ZWdfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyICp2YWwpCit7CisJcmV0dXJuIHdmeF9y ZWFkMzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfQ09OVFJPTCwgdmFsKTsKK30KKworaW50IHdmeF9j b250cm9sX3JlZ193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIHZhbCkKK3sKKwlyZXR1 cm4gd2Z4X3dyaXRlMzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfQ09OVFJPTCwgdmFsKTsKK30KKwor aW50IHdmeF9jb250cm9sX3JlZ193cml0ZV9iaXRzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIg bWFzaywgdTMyIHZhbCkKK3sKKwlyZXR1cm4gd2Z4X3dyaXRlMzJfYml0c19sb2NrZWQod2Rldiwg V0ZYX1JFR19DT05UUk9MLCBtYXNrLCB2YWwpOworfQorCitpbnQgd2Z4X2lncHJfcmVnX3JlYWQo c3RydWN0IHdmeF9kZXYgKndkZXYsIGludCBpbmRleCwgdTMyICp2YWwpCit7CisJaW50IHJldDsK KworCSp2YWwgPSB+MDsgLyogTmV2ZXIgcmV0dXJuIHVuZGVmaW5lZCB2YWx1ZSAqLworCXJldCA9 IHdmeF93cml0ZTMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NFVF9HRU5fUl9XLCBJR1BSX1JXIHwg aW5kZXggPDwgMjQpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisJcmV0ID0gd2Z4X3JlYWQz Ml9sb2NrZWQod2RldiwgV0ZYX1JFR19TRVRfR0VOX1JfVywgdmFsKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCSp2YWwgJj0gSUdQUl9WQUxVRTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQg d2Z4X2lncHJfcmVnX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgaW5kZXgsIHUzMiB2 YWwpCit7CisJcmV0dXJuIHdmeF93cml0ZTMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NFVF9HRU5f Ul9XLCBpbmRleCA8PCAyNCB8IHZhbCk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJl bGVzcy9zaWxhYnMvd2Z4L2h3aW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngv aHdpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGM4ZmU3Njg3 MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9o d2lvLmgKQEAgLTAsMCArMSw3OSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seSAqLworLyoKKyAqIExvdy1sZXZlbCBJL08gZnVuY3Rpb25zLgorICoKKyAqIENvcHly aWdodCAoYykgMjAxNy0yMDIwLCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJp Z2h0IChjKSAyMDEwLCBTVC1Fcmljc3NvbgorICovCisjaWZuZGVmIFdGWF9IV0lPX0gKKyNkZWZp bmUgV0ZYX0hXSU9fSAorCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworc3RydWN0IHdmeF9k ZXY7CisKKy8qIENhdXRpb246IGluIHRoZSBmdW5jdGlvbnMgYmVsb3csICdidWYnIHdpbGwgdXNl ZCB3aXRoIGEgRE1BLiBTbywgaXQgbXVzdCBiZQorICoga21hbGxvYydkIChkbyBub3QgdXNlIHN0 YWNrIGFsbG9jYXRlZCBidWZmZXJzKS4gSW4gZG91YnQsIGVuYWJsZQorICogQ09ORklHX0RFQlVH X1NHIHRvIGRldGVjdCBiYWRseSBsb2NhdGVkIGJ1ZmZlci4KKyAqLworaW50IHdmeF9kYXRhX3Jl YWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4pOworaW50 IHdmeF9kYXRhX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB2b2lkICpidWYsIHNp emVfdCBidWZfbGVuKTsKKworaW50IHdmeF9zcmFtX2J1Zl9yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LCB1MzIgYWRkciwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKTsKK2ludCB3Znhfc3JhbV9idWZf d3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCBjb25zdCB2b2lkICpidWYsIHNp emVfdCBsZW4pOworCitpbnQgd2Z4X2FoYl9idWZfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwg dTMyIGFkZHIsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7CitpbnQgd2Z4X2FoYl9idWZfd3JpdGUo c3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBs ZW4pOworCitpbnQgd2Z4X3NyYW1fcmVnX3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBh ZGRyLCB1MzIgKnZhbCk7CitpbnQgd2Z4X3NyYW1fcmVnX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCk7CisKK2ludCB3ZnhfYWhiX3JlZ19yZWFkKHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdTMyICp2YWwpOworaW50IHdmeF9haGJfcmVnX3dyaXRl KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCk7CisKKyNkZWZpbmUgQ0ZH X0VSUl9TUElfRlJBTUUgICAgICAgICAgMHgwMDAwMDAwMSAvKiBvbmx5IHdpdGggU1BJICovCisj ZGVmaW5lIENGR19FUlJfU0RJT19CVUZfTUlTTUFUQ0ggIDB4MDAwMDAwMDEgLyogb25seSB3aXRo IFNESU8gKi8KKyNkZWZpbmUgQ0ZHX0VSUl9CVUZfVU5ERVJSVU4gICAgICAgMHgwMDAwMDAwMgor I2RlZmluZSBDRkdfRVJSX0RBVEFfSU5fVE9PX0xBUkdFICAweDAwMDAwMDA0CisjZGVmaW5lIENG R19FUlJfSE9TVF9OT19PVVRfUVVFVUUgIDB4MDAwMDAwMDgKKyNkZWZpbmUgQ0ZHX0VSUl9CVUZf T1ZFUlJVTiAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBDRkdfRVJSX0RBVEFfT1VUX1RPT19M QVJHRSAweDAwMDAwMDIwCisjZGVmaW5lIENGR19FUlJfSE9TVF9OT19JTl9RVUVVRSAgIDB4MDAw MDAwNDAKKyNkZWZpbmUgQ0ZHX0VSUl9IT1NUX0NSQ19NSVNTICAgICAgMHgwMDAwMDA4MCAvKiBv bmx5IHdpdGggU0RJTyAqLworI2RlZmluZSBDRkdfU1BJX0lHTk9SRV9DUyAgICAgICAgICAweDAw MDAwMDgwIC8qIG9ubHkgd2l0aCBTUEkgKi8KKyNkZWZpbmUgQ0ZHX0JZVEVfT1JERVJfTUFTSyAg ICAgICAgMHgwMDAwMDMwMCAvKiBvbmx5IHdyaXRhYmxlIHdpdGggU1BJICovCisjZGVmaW5lICAg ICBDRkdfQllURV9PUkRFUl9CQURDICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgICAgIENGR19CWVRF X09SREVSX0RDQkEgICAgMHgwMDAwMDEwMAorI2RlZmluZSAgICAgQ0ZHX0JZVEVfT1JERVJfQUJD RCAgICAweDAwMDAwMjAwIC8qIFNESU8gYWx3YXlzIHVzZSB0aGlzIHZhbHVlICovCisjZGVmaW5l IENGR19ESVJFQ1RfQUNDRVNTX01PREUgICAgIDB4MDAwMDA0MDAKKyNkZWZpbmUgQ0ZHX1BSRUZF VENIX0FIQiAgICAgICAgICAgMHgwMDAwMDgwMAorI2RlZmluZSBDRkdfRElTQUJMRV9DUFVfQ0xL ICAgICAgICAweDAwMDAxMDAwCisjZGVmaW5lIENGR19QUkVGRVRDSF9TUkFNICAgICAgICAgIDB4 MDAwMDIwMDAKKyNkZWZpbmUgQ0ZHX0NQVV9SRVNFVCAgICAgICAgICAgICAgMHgwMDAwNDAwMAor I2RlZmluZSBDRkdfU0RJT19ESVNBQkxFX0lSUSAgICAgICAweDAwMDA4MDAwIC8qIG9ubHkgd2l0 aCBTRElPICovCisjZGVmaW5lIENGR19JUlFfRU5BQkxFX0RBVEEgICAgICAgIDB4MDAwMTAwMDAK KyNkZWZpbmUgQ0ZHX0lSUV9FTkFCTEVfV1JEWSAgICAgICAgMHgwMDAyMDAwMAorI2RlZmluZSBD RkdfQ0xLX1JJU0VfRURHRSAgICAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIENGR19TRElPX0RJ U0FCTEVfQ1JDX0NISyAgIDB4MDAwODAwMDAgLyogb25seSB3aXRoIFNESU8gKi8KKyNkZWZpbmUg Q0ZHX1JFU0VSVkVEICAgICAgICAgICAgICAgMHgwMEYwMDAwMAorI2RlZmluZSBDRkdfREVWSUNF X0lEX01BSk9SICAgICAgICAweDA3MDAwMDAwCisjZGVmaW5lIENGR19ERVZJQ0VfSURfUkVTRVJW RUQgICAgIDB4NzgwMDAwMDAKKyNkZWZpbmUgQ0ZHX0RFVklDRV9JRF9UWVBFICAgICAgICAgMHg4 MDAwMDAwMAoraW50IHdmeF9jb25maWdfcmVnX3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUz MiAqdmFsKTsKK2ludCB3ZnhfY29uZmlnX3JlZ193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwg dTMyIHZhbCk7CitpbnQgd2Z4X2NvbmZpZ19yZWdfd3JpdGVfYml0cyhzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwgdTMyIG1hc2ssIHUzMiB2YWwpOworCisjZGVmaW5lIENUUkxfTkVYVF9MRU5fTUFTSyAg IDB4MDAwMDBGRkYKKyNkZWZpbmUgQ1RSTF9XTEFOX1dBS0VVUCAgICAgMHgwMDAwMTAwMAorI2Rl ZmluZSBDVFJMX1dMQU5fUkVBRFkgICAgICAweDAwMDAyMDAwCitpbnQgd2Z4X2NvbnRyb2xfcmVn X3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiAqdmFsKTsKK2ludCB3ZnhfY29udHJvbF9y ZWdfd3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiB2YWwpOworaW50IHdmeF9jb250cm9s X3JlZ193cml0ZV9iaXRzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgbWFzaywgdTMyIHZhbCk7 CisKKyNkZWZpbmUgSUdQUl9SVyAgICAgICAgICAweDgwMDAwMDAwCisjZGVmaW5lIElHUFJfSU5E RVggICAgICAgMHg3RjAwMDAwMAorI2RlZmluZSBJR1BSX1ZBTFVFICAgICAgIDB4MDBGRkZGRkYK K2ludCB3ZnhfaWdwcl9yZWdfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IGluZGV4LCB1 MzIgKnZhbCk7CitpbnQgd2Z4X2lncHJfcmVnX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBp bnQgaW5kZXgsIHUzMiB2YWwpOworCisjZW5kaWYKLS0gCjIuMzMuMAoK