From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74485C433B4 for ; Wed, 19 May 2021 07:52:42 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B382060FDC for ; Wed, 19 May 2021 07:52:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B382060FDC Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=o1wPp/sha3PfSVgL5HYWmOHNqwai8jSWnc24aq68ep8=; b=lslnz41JOD43ofsdp0jGFyugo 2PpNGJHKJnYDiM/9vGfx9Xf8Q5dCt4pL4+VQ/EIVsxeC9HC1l0KHIgvbsCB5L3JKOyZRLLNWVZ0+Z TWRyaRFZpeJCcG9xON7PKvZRDDwL6N+NoZCMqxQSnlEEp5krr2XTJQKSToy0+8zdnu9iEq6mqvp9q SqRtfdErLmLsfbwxlAIA4wmKIgBObiiGHV+zE2YPgkijEW6ud9Pov9YV25m59IQVY0eV96ivbRSQJ riYjobIdF6kylX54ftqtlHEq+roA4US3NAUlnG7rn7ht9uiCpz4EMJB6X/jOwDRa5VlLrfRjj5/ws BIGz3vokA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1ljGyl-003EN0-2V; Wed, 19 May 2021 07:50:56 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljGyO-003EGs-60 for linux-arm-kernel@desiato.infradead.org; Wed, 19 May 2021 07:50:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=MIME-Version: Content-Transfer-Encoding:Content-Type:References:In-Reply-To:Message-Id:Date :Subject:Cc:To:From:Sender:Reply-To:Content-ID:Content-Description; bh=nrb8L1WtoH37V8+qwYspJMUj716OqVakAWu2FslUZ1s=; b=bQutrcRcn5Rb0UkBkkq3as2u16 zzV1bB14D/dmGaCHr+cBf/qNkiKejbVzRLI+RkY1d+RTg2LkRjtkP8uDg+iIyBBY8vvN0GTCix3OA noqWoRgxnmu7QtRay8yzizHEUGt1RBU9pLDdm4toUMEjD0CAeaa4IcOvbLdC1TliTj3WbeHv6pEep T6q0GIk1ctichXdJEWKVmlf0t0OeeXdYSleAxQ/NhRGf1aUfUrOptdRrtrXvHTl22kcqONu2wFhCd 9VbTxwANOtBM44gM+PDIvqVCM+oYOPRwIW8lZr9BifSZElB83EgNp9xGv8kDsNgzA7AvqHNZRTrHu DsIOCFQA==; Received: from mail-dm6nam10on2124.outbound.protection.outlook.com ([40.107.93.124] helo=NAM10-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljGyJ-00FEbU-TE for linux-arm-kernel@lists.infradead.org; Wed, 19 May 2021 07:50:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kGB+96JmxLztFaGSAiXwB13TH56xxWyHQiSbT4rbFxDkQ9A/dg+5yuCCHZZjGu63V7C/KbIDsQDo7fNvN/GMyyEf6ha86KB1Sf9q2xLIwA1MnaLvn0FnnqE2b1BOemfMxro18b0LD969xCs7WKuR8UA7kNat6HjYI/Dj1ArJeWZhDtO4hkEAAdh4G0V0bujWvTaD17ksSzGa6FkQNDng4Z+ULC8oXcfYO/I8NJR/TgCv1XU8kgOtm8UJ2/giBIs6t7u6aAgtWbA+YiTNxCGNOGxSmBmn7q5yKKRjV6L92ILUH1tl+LwR9TZi5M9RwzVT3G7h7EBrVekNmA3d0KZCjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nrb8L1WtoH37V8+qwYspJMUj716OqVakAWu2FslUZ1s=; b=GplRxl7ZXCxY+Df6eo2ZstL1nApMzdx8jpqFrcjvo1DQZli0VfRKae4J97ub8KlvfqGKN066EcT4t4ptqZpV0SP92fn+7oGgUNITSGEaaOrTNUHKLGV4cZI8GTcGvFz7LIX0zj2K8BBVDSYs3HRSu91dzhe4+HHsivOQJYGi4FyKKeS9Ei66nxABC2UuvMv+/427kGN5NoQmz7k+YvKpxGskRKvT3N9D6bxIyScK5ZZJBuzrVNZLV2odEyGsWNxrolTN+B2QAFvMfVyzlY/KptbiSteiAiDr29fYqs9VJGX3Be7tJk3ZV9wBm9c2yG8LxZfu5BLSh4J8/suGM46A8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nrb8L1WtoH37V8+qwYspJMUj716OqVakAWu2FslUZ1s=; b=OM/gImmBrgCj2y4B6LJh2++vudF4TYiV9UGvIE2AW9fvTsJcM5AJu0dUtO5n+u/+wsGluqvBjnzhPYrLhouv7rNk+2oKJVB2Pb7saMk2Av3u5C74YfpDRJam+jMjU+wz2CKCv9JtW/MKi+jMh4u1EpOIv2X3qjDhawDJhzHPBKE= Authentication-Results: acm.org; dkim=none (message not signed) header.d=none;acm.org; dmarc=none action=none header.from=os.amperecomputing.com; Received: from MW2PR0102MB3482.prod.exchangelabs.com (2603:10b6:302:c::32) by MW2PR0102MB3451.prod.exchangelabs.com (2603:10b6:302:10::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.28; Wed, 19 May 2021 07:50:24 +0000 Received: from MW2PR0102MB3482.prod.exchangelabs.com ([fe80::d840:7aa7:58d4:b503]) by MW2PR0102MB3482.prod.exchangelabs.com ([fe80::d840:7aa7:58d4:b503%5]) with mapi id 15.20.4129.032; Wed, 19 May 2021 07:50:24 +0000 From: Quan Nguyen To: Corey Minyard , Rob Herring , Joel Stanley , Andrew Jeffery , Brendan Higgins , Benjamin Herrenschmidt , Wolfram Sang , Philipp Zabel , openipmi-developer@lists.sourceforge.net, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org Cc: Open Source Submission , Phong Vo , "Thang Q . Nguyen" , openbmc@lists.ozlabs.org Subject: [PATCH v3 2/7] ipmi: ssif_bmc: Add SSIF BMC driver Date: Wed, 19 May 2021 14:49:29 +0700 Message-Id: <20210519074934.20712-3-quan@os.amperecomputing.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210519074934.20712-1-quan@os.amperecomputing.com> References: <20210519074934.20712-1-quan@os.amperecomputing.com> X-Originating-IP: [118.69.219.201] X-ClientProxiedBy: HK2PR04CA0081.apcprd04.prod.outlook.com (2603:1096:202:15::25) To MW2PR0102MB3482.prod.exchangelabs.com (2603:10b6:302:c::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from hcm-sw-17.amperecomputing.com (118.69.219.201) by HK2PR04CA0081.apcprd04.prod.outlook.com (2603:1096:202:15::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Wed, 19 May 2021 07:50:20 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 454dce6f-02f6-48e3-4ed4-08d91a9ac276 X-MS-TrafficTypeDiagnostic: MW2PR0102MB3451: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: C0M6BIoNbx8p8GkmRJAcJtaAmN5NoXA13aqHB3VDUEMTlkVuK7enGxW+QDGaSYNkEkxGlm7aa5PEpNwC1aM88C35EJigpSyqC3ycr5jZmANgH3GayDc3oR0dTUuTeH+Lxit4Gk9CGvLQxoMoEAL0GjFpfxuBjmap9HV55Q8JYBwg/WlC4zObtmtn3E8sEaPzXF3ybzULahIwk8jpvg6zDaZ3QF468TEilWuSAudzNh93tVJS6uedIs0lwpoShe9+lV9E6WeCjqKU/PmYWDNMz60pideiqoZCBW7dtNt5kIk35cqH70Dq9hdX/XApAdLnN2zwMAHq1lQ97+cPwQ+eiNsZ8CmsZFwCSjgx9v9Pt6GqfsBvqbJEOY5qv0NVZ73etldaz0d0louhR5STlzzXhe85si6WRg5EiSwM9IXH6pLBZ6OCH8uGmGBt0BwWTIPjTmRttP4BFQITxrH04T9J1Gm+0mK2QzJ06DSTkqkcvSEwQCptoT0mTrbQMJhZairGT8e2Hmj7FzoTND6jMIovvc0H4sk1eaFDfUD4QCw40cy7HCy79VBxSI4vAAdzFHMgtiCtfigYuEN2qhsA+etnW2LlBCxXnVRwaafWuuwWJ+E7ekjhZc68Ag7K66r0RlgrUQrRs11i2sVzIs10Js50sbAVwREfbu9qkTjaZgF8vXcFX8l4ReY726NYlcZc3dPiEXAH6qywgRYn0yynfCGrLI/YgVE6HfJlveFoh5WOxWpgBGG/tvx1FnlW9tWKQ3pNi6CFwliXVVV89NMyr+wtSzIcelypWjlg0Nr+ShEVb0pM5mRTPimrb1Jj00FUyvHO X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR0102MB3482.prod.exchangelabs.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(39850400004)(376002)(366004)(396003)(346002)(83380400001)(7416002)(8676002)(2906002)(921005)(6512007)(478600001)(38100700002)(8936002)(186003)(16526019)(38350700002)(52116002)(5660300002)(30864003)(956004)(2616005)(4326008)(110136005)(54906003)(316002)(66556008)(66476007)(66946007)(6486002)(6506007)(1076003)(26005)(86362001)(2004002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UldsVFV6RGNnbUoxZTE0bWkzOG1DRldOV2xsNzdQNzVKUTZreFJEWjRPMENr?= =?utf-8?B?ZTU1SVFtbFlkNE8vQk5abU9OSkNSbVpObFR0c1hxMWxZMVVrWVNudDNLeTZw?= =?utf-8?B?RWcyUDN1bzBtMjI5UWo4blFYVGduUk5yaEZRY2IwQ1lwY21DZlFSZFA2Q0Fh?= =?utf-8?B?OFEwYm1LdDY1Tk5MSFdwdVpIN2gzOEdORkYvMXl5aFV4NHljT0lBL0h6Vm00?= =?utf-8?B?cGVvVFRsb09nOUxBZHVRNUNJRkNjcC9WZDkzUnZiYk5Kc3hVU2NiSWNGclpw?= =?utf-8?B?NlJBR0p6RmdpQkp2QThCNys3cTJBcVNDL3hEM3U1bGYvbW9JSnB6SkxNSEhO?= =?utf-8?B?OHRzYTYyV2tUai85dnhpSkYvQUtIallxd0pVYnYrTGkya05oc015dEZJcXpZ?= =?utf-8?B?UUpHd092NElQQTFGUUwrc3Rpc0kvaE1jV2YybWd6TU9TWW9LVzM5Wm5ySEtx?= =?utf-8?B?Kzl1a1RHcDV2VjRta2IxNnNEU0Q1WkNWUXVkdWRpS0dxb3Y2R3h4NGlGdmpV?= =?utf-8?B?eEdMYnpsQzQ0TFpRcnM4eDdleEFSc2dZbi8vNEFkVnVTak5XaGFKd1prbjN4?= =?utf-8?B?UVV3LzhKRDQzamtVaTR4Q0JzWDlTYzJGcnhaTE5JZXVaWGVZV25YVHlwc1hQ?= =?utf-8?B?RHRBcU1CTDd4ZmNsVGkrb2tzTFd5RXJMcUNOTVNHQzJiNnBJMXJ1VVdORnhq?= =?utf-8?B?MS9VYTYxTEdFN0hpMWRQelY2NlBjT3dQdExnZlRWYkV0bHM4MHpmMUczUXdI?= =?utf-8?B?ZzJQVkgycG1zV2VJaEsvK0hML0VWT3lIcVFRdFVwWldEbWpxWkFUSk5sdzJQ?= =?utf-8?B?ek41cVB0elh4TWsra1kwVnl1b0FsOU44RTZNL2tjQXkvTEI1WFZyWWJuaFdV?= =?utf-8?B?Q1Z6TFVHRUZKZ2FsSWtSVyt0TVg3Qy8xREZIc0Fkc0pBWjVYK2FMbU5WNS9r?= =?utf-8?B?b0h6U29hODQ2R0praHN3NlJwS2Vpc0VwcWV5YktiQnpWbFB2ZEpzdHJHWk5F?= =?utf-8?B?VTdOTlhwekE2WlQ2MVZvQXRuUXg5UHdnMXA2U090UktyTXVNNEhqc3ZHT0cy?= =?utf-8?B?K2RNNzJFTmY1akVjaXJRemFCTDVzdHIwWlU3T093UW5NeklkeFBmQXFVbk13?= =?utf-8?B?Y1hMNnJaSEFFQ2ErekJiT2M3QVFiOTEvVllvVVZ1aFZRV29qZFZXK0JxcEVZ?= =?utf-8?B?Yzl3NHR1SDVtbDl4aUNBc1BwVGg1QWVxd3BmalJ2TUJEdWFXTWJKbXRZcnFr?= =?utf-8?B?Wlg5NUNsbTVaUGVOZEJLYnhkcERYb09LMVJEN2pISmxhT01hRVBzZWkxb2FI?= =?utf-8?B?VHpWVXRieDFVOEVHczQxQTh3TCtvaFdLaXhMWS9ob3Y0eGZRMzNUR1gzU1JR?= =?utf-8?B?bzd4UDVVU3JWWkhpMTdRNkdNK1BLTkZsMGRTTHhPSERnZ3FsMXZyS2d0UCsv?= =?utf-8?B?NzY2NzdPWUJUdVRrZDJyQmRrSjZ0MUZuVDI2Y3ZlRmRTY3M0SnkzcG5sMHZD?= =?utf-8?B?V09TY0hLQndRRGd2MndtUGkxZzZMdXowVW1NUDhCZzY3b2E5RjJnL3hHWm5o?= =?utf-8?B?SUZMajZPbVo4OVdtSlJKcm5TU2FqTGZJekNPSGNBT3BtVlRGaFBKMEd2S29h?= =?utf-8?B?V2o1ZTFQWVdEV2xkems0cXZKZlJIbTFPdk4xZ1lQK2tkT1ZWUzdla1pFWWhp?= =?utf-8?B?YnRzM1lhcDNlbGpna2pQMlk1NGdEN2szS1daSUJvNEhjMUFBdS9jaVZoZXVp?= =?utf-8?Q?Af19ywI/xfg1x7hCXET9LzhOxsiBzoJhsHAKbBG?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 454dce6f-02f6-48e3-4ed4-08d91a9ac276 X-MS-Exchange-CrossTenant-AuthSource: MW2PR0102MB3482.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2021 07:50:24.3892 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pc/5iGx2aBw8ec9oCf81ZXQhNqvnkoNNNjCsJ9Ihd52vqrqdn82xqXe2NR4vokfJF/d0tsu0FXj6dis5JJvPnqlaAf6QLugE344HRmBAOM8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR0102MB3451 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210519_005027_990119_1FD0E06F X-CRM114-Status: GOOD ( 22.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIFNNQnVzIHN5c3RlbSBpbnRlcmZhY2UgKFNTSUYpIElQTUkgQk1DIGRyaXZlciBjYW4gYmUg dXNlZCB0byBwZXJmb3JtCmluLWJhbmQgSVBNSSBjb21tdW5pY2F0aW9uIHdpdGggdGhlaXIgaG9z dCBpbiBtYW5hZ2VtZW50IChCTUMpIHNpZGUuCgpTaWduZWQtb2ZmLWJ5OiBRdWFuIE5ndXllbiA8 cXVhbkBvcy5hbXBlcmVjb21wdXRpbmcuY29tPgotLS0KdjM6CiAgKyBSZW1vdmVkIHJlZHVuZGFu dCBsaWNlbnNlIGluZm8gW0pvZWxdCiAgKyBTd2l0Y2hlZCB0byB1c2UgdHJhZGl0aW9uYWwgaWYt ZWxzZSBbSm9lbF0KICArIFJlbW92ZWQgdW51c2VkIHNzaWZfYm1jX2lvY3RsKCkgW0pvZWxdCiAg KyBNYWRlIGhhbmRsZV9yZXF1ZXN0KCkvY29tcGxldGVfcmVzcG9uc2UoKSB0byByZXR1cm4gdm9p ZCBbSm9lbF0KICArIFJlZmFjdG9yZWQgc2VuZF9zc2lmX2JtY19yZXNwb25zZSgpL3JlY2VpdmVf c3NpZl9ibWNfcmVxdWVzdCgpIFtDb3JleV0KICArIFJlbW92ZWQgbXV0ZXggW0NvcmV5XQogICsg VXNlIHNwaW5fbG9jay91bmxvY2tfaXJxc2F2ZS9yZXN0b3JlIGluIGNhbGxiYWNrIFtDb3JleV0K ICArIFJlbW92ZWQgdGhlIHVubmVjZXNzYXJ5IG1lbXNldCBbQ29yZXldCiAgKyBTd2l0Y2ggdG8g dXNlIGRldl9lcnIoKSBbQ29yZXldCgp2MjoKICArIEZpeGVkIGNvbXBpbGluZyBlcnJvciB3aXRo IENPTVBJTEVfVEVTVCBmb3IgYXJjCgogZHJpdmVycy9jaGFyL2lwbWkvS2NvbmZpZyAgICB8ICAx MSArCiBkcml2ZXJzL2NoYXIvaXBtaS9NYWtlZmlsZSAgIHwgICAxICsKIGRyaXZlcnMvY2hhci9p cG1pL3NzaWZfYm1jLmMgfCA2MDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGRyaXZlcnMvY2hhci9pcG1pL3NzaWZfYm1jLmggfCAgOTMgKysrKysrCiA0IGZpbGVzIGNoYW5n ZWQsIDcxMCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jaGFyL2lw bWkvc3NpZl9ibWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2hhci9pcG1pL3NzaWZf Ym1jLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9LY29uZmlnIGIvZHJpdmVycy9j aGFyL2lwbWkvS2NvbmZpZwppbmRleCAwNzg0N2Q5YTQ1OWEuLmFkNWM1MTYxYmNkNiAxMDA2NDQK LS0tIGEvZHJpdmVycy9jaGFyL2lwbWkvS2NvbmZpZworKysgYi9kcml2ZXJzL2NoYXIvaXBtaS9L Y29uZmlnCkBAIC0xMzMsNiArMTMzLDE3IEBAIGNvbmZpZyBBU1BFRURfQlRfSVBNSV9CTUMKIAkg IGZvdW5kIG9uIEFzcGVlZCBTT0NzIChBU1QyNDAwIGFuZCBBU1QyNTAwKS4gVGhlIGRyaXZlcgog CSAgaW1wbGVtZW50cyB0aGUgQk1DIHNpZGUgb2YgdGhlIEJUIGludGVyZmFjZS4KIAorY29uZmln IFNTSUZfSVBNSV9CTUMKKwl0cmlzdGF0ZSAiU1NJRiBJUE1JIEJNQyBkcml2ZXIiCisJc2VsZWN0 IEkyQworCXNlbGVjdCBJMkNfU0xBVkUKKwloZWxwCisJICBUaGlzIGVuYWJsZXMgdGhlIElQTUkg U01CdXMgc3lzdGVtIGludGVyZmFjZSAoU1NJRikgYXQgdGhlCisJICBtYW5hZ2VtZW50IChCTUMp IHNpZGUuCisKKwkgIFRoZSBkcml2ZXIgaW1wbGVtZW50cyB0aGUgQk1DIHNpZGUgb2YgdGhlIFNN QnVzIHN5c3RlbQorCSAgaW50ZXJmYWNlIChTU0lGKS4KKwogY29uZmlnIElQTUJfREVWSUNFX0lO VEVSRkFDRQogCXRyaXN0YXRlICdJUE1CIEludGVyZmFjZSBoYW5kbGVyJwogCWRlcGVuZHMgb24g STJDCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9NYWtlZmlsZSBiL2RyaXZlcnMvY2hh ci9pcG1pL01ha2VmaWxlCmluZGV4IDA4MjJhZGMyZWM0MS4uZDA0YTIxNGQ3NGM0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2NoYXIvaXBtaS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2NoYXIvaXBtaS9N YWtlZmlsZQpAQCAtMjcsMyArMjcsNCBAQCBvYmotJChDT05GSUdfQVNQRUVEX0JUX0lQTUlfQk1D KSArPSBidC1ibWMubwogb2JqLSQoQ09ORklHX0FTUEVFRF9LQ1NfSVBNSV9CTUMpICs9IGtjc19i bWNfYXNwZWVkLm8KIG9iai0kKENPTkZJR19OUENNN1hYX0tDU19JUE1JX0JNQykgKz0ga2NzX2Jt Y19ucGNtN3h4Lm8KIG9iai0kKENPTkZJR19JUE1CX0RFVklDRV9JTlRFUkZBQ0UpICs9IGlwbWJf ZGV2X2ludC5vCitvYmotJChDT05GSUdfU1NJRl9JUE1JX0JNQykgKz0gc3NpZl9ibWMubwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9jaGFyL2lwbWkvc3NpZl9ibWMuYyBiL2RyaXZlcnMvY2hhci9pcG1p L3NzaWZfYm1jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMGVh NzA1OWIxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2NoYXIvaXBtaS9zc2lmX2JtYy5j CkBAIC0wLDAgKzEsNjA1IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsK Ky8qCisgKiBUaGUgZHJpdmVyIGZvciBCTUMgc2lkZSBvZiBTU0lGIGludGVyZmFjZQorICoKKyAq IENvcHlyaWdodCAoYykgMjAyMSwgQW1wZXJlIENvbXB1dGluZyBMTEMKKyAqCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRl IDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGlu dXgvc3BpbmxvY2suaD4KKworI2luY2x1ZGUgInNzaWZfYm1jLmgiCisKKy8qIEhhbmRsZSBTU0lG IG1lc3NhZ2UgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdXNlciAqLworc3RhdGljIHNzaXplX3Qgc3Np Zl9ibWNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNv dW50LCBsb2ZmX3QgKnBwb3MpCit7CisJc3RydWN0IHNzaWZfYm1jX2N0eCAqc3NpZl9ibWMgPSB0 b19zc2lmX2JtYyhmaWxlKTsKKwlzdHJ1Y3Qgc3NpZl9tc2cgbXNnOworCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisJc3NpemVfdCByZXQ7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc3NpZl9ibWMtPmxv Y2ssIGZsYWdzKTsKKwl3aGlsZSAoIXNzaWZfYm1jLT5yZXF1ZXN0X2F2YWlsYWJsZSkgeworCQlp ZiAoZmlsZS0+Zl9mbGFncyAmIE9fTk9OQkxPQ0spIHsKKwkJCXJldCA9IC1FQUdBSU47CisJCQln b3RvIG91dF91bmxvY2s7CisJCX0KKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3NpZl9ibWMt PmxvY2ssIGZsYWdzKTsKKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKHNzaWZfYm1j LT53YWl0X3F1ZXVlLAorCQkJCQkgICAgICAgc3NpZl9ibWMtPnJlcXVlc3RfYXZhaWxhYmxlKTsK KwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZzc2lmX2Jt Yy0+bG9jaywgZmxhZ3MpOworCX0KKworCWNvdW50ID0gbWluX3Qoc3NpemVfdCwgc3NpZl9tc2df bGVuKCZzc2lmX2JtYy0+cmVxdWVzdCksCisJCSAgICAgIG1pbl90KHNzaXplX3QsIHNpemVvZihz dHJ1Y3Qgc3NpZl9tc2cpLCBjb3VudCkpOworCW1lbWNweSgmbXNnLCAmc3NpZl9ibWMtPnJlcXVl c3QsIGNvdW50KTsKKwlzc2lmX2JtYy0+cmVxdWVzdF9hdmFpbGFibGUgPSBmYWxzZTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZzc2lmX2JtYy0+bG9jaywgZmxhZ3MpOworCisJcmV0ID0gY29w eV90b191c2VyKGJ1ZiwgJm1zZywgY291bnQpOworCWdvdG8gb3V0OworCitvdXRfdW5sb2NrOgor CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNzaWZfYm1jLT5sb2NrLCBmbGFncyk7CitvdXQ6CisJ cmV0dXJuIChyZXQgPCAwKSA/IHJldCA6IGNvdW50OworfQorCisvKiBIYW5kbGUgU1NJRiBtZXNz YWdlIHRoYXQgaXMgd3JpdHRlbiBieSB1c2VyICovCitzdGF0aWMgc3NpemVfdCBzc2lmX2JtY193 cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNv dW50LAorCQkJICAgICAgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCBzc2lmX2JtY19jdHggKnNz aWZfYm1jID0gdG9fc3NpZl9ibWMoZmlsZSk7CisJc3RydWN0IHNzaWZfbXNnIG1zZzsKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCXNzaXplX3QgcmV0OworCisJaWYgKGNvdW50ID4gc2l6ZW9mKHN0 cnVjdCBzc2lmX21zZykpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gY29weV9mcm9tX3Vz ZXIoJm1zZywgYnVmLCBjb3VudCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmICgh bXNnLmxlbiB8fCBjb3VudCA8IHNzaWZfbXNnX2xlbigmbXNnKSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc3NpZl9ibWMtPmxvY2ssIGZsYWdzKTsKKwl3aGlsZSAo c3NpZl9ibWMtPnJlc3BvbnNlX2luX3Byb2dyZXNzKSB7CisJCWlmIChmaWxlLT5mX2ZsYWdzICYg T19OT05CTE9DSykgeworCQkJcmV0ID0gLUVBR0FJTjsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJ fQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzc2lmX2JtYy0+bG9jaywgZmxhZ3MpOworCQly ZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoc3NpZl9ibWMtPndhaXRfcXVldWUsCisJCQkJ CSAgICAgICAhc3NpZl9ibWMtPnJlc3BvbnNlX2luX3Byb2dyZXNzKTsKKwkJaWYgKHJldCkKKwkJ CWdvdG8gb3V0OworCQlzcGluX2xvY2tfaXJxc2F2ZSgmc3NpZl9ibWMtPmxvY2ssIGZsYWdzKTsK Kwl9CisKKwltZW1jcHkoJnNzaWZfYm1jLT5yZXNwb25zZSwgJm1zZywgY291bnQpOworCXNzaWZf Ym1jLT5pc19zaW5nbGVwYXJ0X3JlYWQgPSAoc3NpZl9tc2dfbGVuKCZtc2cpIDw9IE1BWF9QQVlM T0FEX1BFUl9UUkFOU0FDVElPTiArIDEpOworCXNzaWZfYm1jLT5yZXNwb25zZV9pbl9wcm9ncmVz cyA9IHRydWU7CisJaWYgKHNzaWZfYm1jLT5zZXRfc3NpZl9ibWNfc3RhdHVzKQorCQlzc2lmX2Jt Yy0+c2V0X3NzaWZfYm1jX3N0YXR1cyhzc2lmX2JtYywgU1NJRl9CTUNfUkVBRFkpOworCitvdXRf dW5sb2NrOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNzaWZfYm1jLT5sb2NrLCBmbGFncyk7 CisKK291dDoKKwlyZXR1cm4gKHJldCA8IDApID8gcmV0IDogY291bnQ7Cit9CisKK3N0YXRpYyBp bnQgc3NpZl9ibWNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkK K3sKKwlzdHJ1Y3Qgc3NpZl9ibWNfY3R4ICpzc2lmX2JtYyA9IHRvX3NzaWZfYm1jKGZpbGUpOwor CWludCByZXQgPSAwOworCisJc3Bpbl9sb2NrX2lycSgmc3NpZl9ibWMtPmxvY2spOworCWlmICgh c3NpZl9ibWMtPnJ1bm5pbmcpCisJCXNzaWZfYm1jLT5ydW5uaW5nID0gMTsKKwllbHNlCisJCXJl dCA9IC1FQlVTWTsKKwlzcGluX3VubG9ja19pcnEoJnNzaWZfYm1jLT5sb2NrKTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3NpZl9ibWNfcG9sbChzdHJ1Y3QgZmls ZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKK3sKKwlzdHJ1Y3Qgc3NpZl9ibWNfY3R4ICpzc2lm X2JtYyA9IHRvX3NzaWZfYm1jKGZpbGUpOworCXVuc2lnbmVkIGludCBtYXNrID0gMDsKKworCXBv bGxfd2FpdChmaWxlLCAmc3NpZl9ibWMtPndhaXRfcXVldWUsIHdhaXQpOworCisJc3Bpbl9sb2Nr X2lycSgmc3NpZl9ibWMtPmxvY2spOworCS8qCisJICogVGhlIHJlcXVlc3QgbWVzc2FnZSBpcyBu b3cgYXZhaWxhYmxlIHNvIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiBjYW4KKwkgKiBnZXQgdGhlIHJl cXVlc3QKKwkgKi8KKwlpZiAoc3NpZl9ibWMtPnJlcXVlc3RfYXZhaWxhYmxlKQorCQltYXNrIHw9 IFBPTExJTjsKKworCXNwaW5fdW5sb2NrX2lycSgmc3NpZl9ibWMtPmxvY2spOworCisJcmV0dXJu IG1hc2s7Cit9CisKK3N0YXRpYyBpbnQgc3NpZl9ibWNfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3Qgc3NpZl9ibWNfY3R4ICpzc2lmX2Jt YyA9IHRvX3NzaWZfYm1jKGZpbGUpOworCisJc3Bpbl9sb2NrX2lycSgmc3NpZl9ibWMtPmxvY2sp OworCXNzaWZfYm1jLT5ydW5uaW5nID0gMDsKKwlzcGluX3VubG9ja19pcnEoJnNzaWZfYm1jLT5s b2NrKTsKKworCXJldHVybiAwOworfQorCisvKgorICogU3lzdGVtIGNhbGxzIHRvIGRldmljZSBp bnRlcmZhY2UgZm9yIHVzZXIgYXBwcworICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBzc2lmX2JtY19mb3BzID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkub3Bl bgkJPSBzc2lmX2JtY19vcGVuLAorCS5yZWFkCQk9IHNzaWZfYm1jX3JlYWQsCisJLndyaXRlCQk9 IHNzaWZfYm1jX3dyaXRlLAorCS5yZWxlYXNlCT0gc3NpZl9ibWNfcmVsZWFzZSwKKwkucG9sbAkJ PSBzc2lmX2JtY19wb2xsLAorfTsKKworLyogQ2FsbGVkIHdpdGggc3NpZl9ibWMtPmxvY2sgaGVs ZC4gKi8KK3N0YXRpYyB2b2lkIGhhbmRsZV9yZXF1ZXN0KHN0cnVjdCBzc2lmX2JtY19jdHggKnNz aWZfYm1jKQoreworCWlmIChzc2lmX2JtYy0+c2V0X3NzaWZfYm1jX3N0YXR1cykKKwkJc3NpZl9i bWMtPnNldF9zc2lmX2JtY19zdGF0dXMoc3NpZl9ibWMsIFNTSUZfQk1DX0JVU1kpOworCisJLyog UmVxdWVzdCBtZXNzYWdlIGlzIGF2YWlsYWJsZSB0byBwcm9jZXNzICovCisJc3NpZl9ibWMtPnJl cXVlc3RfYXZhaWxhYmxlID0gdHJ1ZTsKKwkvKgorCSAqIFRoaXMgaXMgdGhlIG5ldyBSRUFEIHJl cXVlc3QuCisJICovCisJd2FrZV91cF9hbGwoJnNzaWZfYm1jLT53YWl0X3F1ZXVlKTsKK30KKwor LyogQ2FsbGVkIHdpdGggc3NpZl9ibWMtPmxvY2sgaGVsZC4gKi8KK3N0YXRpYyB2b2lkIGNvbXBs ZXRlX3Jlc3BvbnNlKHN0cnVjdCBzc2lmX2JtY19jdHggKnNzaWZfYm1jKQoreworCS8qIEludmFs aWRhdGUgcmVzcG9uc2UgaW4gYnVmZmVyIHRvIGRlbm90ZSBpdCBoYXZpbmcgYmVlbiBzZW50LiAq LworCXNzaWZfYm1jLT5yZXNwb25zZS5sZW4gPSAwOworCXNzaWZfYm1jLT5yZXNwb25zZV9pbl9w cm9ncmVzcyA9IGZhbHNlOworCXNzaWZfYm1jLT5uYnl0ZXNfcHJvY2Vzc2VkID0gMDsKKwlzc2lm X2JtYy0+cmVtYWluX2xlbiA9IDA7CisJd2FrZV91cF9hbGwoJnNzaWZfYm1jLT53YWl0X3F1ZXVl KTsKK30KKworc3RhdGljIHZvaWQgc2V0X211bHRpcGFydF9yZXNwb25zZV9idWZmZXIoc3RydWN0 IHNzaWZfYm1jX2N0eCAqc3NpZl9ibWMsIHU4ICp2YWwpCit7CisJdTggcmVzcG9uc2VfbGVuID0g MDsKKwlpbnQgaWR4ID0gMDsKKwl1OCBkYXRhX2xlbjsKKworCWRhdGFfbGVuID0gc3NpZl9ibWMt PnJlc3BvbnNlLmxlbjsKKwlzd2l0Y2ggKHNzaWZfYm1jLT5zbWJ1c19jbWQpIHsKKwljYXNlIFNT SUZfSVBNSV9NVUxUSVBBUlRfUkVBRF9TVEFSVDoKKwkJLyoKKwkJICogUmVhZCBTdGFydCBsZW5n dGggaXMgMzIgYnl0ZXMuCisJCSAqIFJlYWQgU3RhcnQgdHJhbnNmZXIgZmlyc3QgMzAgYnl0ZXMg b2YgSVBNSSByZXNwb25zZQorCQkgKiBhbmQgMiBzcGVjaWFsIGNvZGUgMHgwMCwgMHgwMS4KKwkJ ICovCisJCSp2YWwgPSBNQVhfUEFZTE9BRF9QRVJfVFJBTlNBQ1RJT047CisJCXNzaWZfYm1jLT5y ZW1haW5fbGVuID0gZGF0YV9sZW4gLSBNQVhfSVBNSV9EQVRBX1BFUl9TVEFSVF9UUkFOU0FDVElP TjsKKwkJc3NpZl9ibWMtPmJsb2NrX251bSA9IDA7CisKKwkJc3NpZl9ibWMtPnJlc3BvbnNlX2J1 ZltpZHgrK10gPSAweDAwOyAvKiBTdGFydCBGbGFnICovCisJCXNzaWZfYm1jLT5yZXNwb25zZV9i dWZbaWR4KytdID0gMHgwMTsgLyogU3RhcnQgRmxhZyAqLworCQlzc2lmX2JtYy0+cmVzcG9uc2Vf YnVmW2lkeCsrXSA9IHNzaWZfYm1jLT5yZXNwb25zZS5uZXRmbl9sdW47CisJCXNzaWZfYm1jLT5y ZXNwb25zZV9idWZbaWR4KytdID0gc3NpZl9ibWMtPnJlc3BvbnNlLmNtZDsKKwkJc3NpZl9ibWMt PnJlc3BvbnNlX2J1ZltpZHgrK10gPSBzc2lmX2JtYy0+cmVzcG9uc2UucGF5bG9hZFswXTsKKwor CQlyZXNwb25zZV9sZW4gPSBNQVhfUEFZTE9BRF9QRVJfVFJBTlNBQ1RJT04gLSBpZHg7CisKKwkJ bWVtY3B5KCZzc2lmX2JtYy0+cmVzcG9uc2VfYnVmW2lkeF0sICZzc2lmX2JtYy0+cmVzcG9uc2Uu cGF5bG9hZFsxXSwKKwkJICAgICAgIHJlc3BvbnNlX2xlbik7CisJCWJyZWFrOworCisJY2FzZSBT U0lGX0lQTUlfTVVMVElQQVJUX1JFQURfTUlERExFOgorCQkvKgorCQkgKiBJUE1JIFJFQUQgTWlk ZGxlIG9yIFJFQUQgRW5kIG1lc3NhZ2VzIGNhbiBjYXJyeSB1cCB0byAzMSBieXRlcworCQkgKiBJ UE1JIGRhdGEgcGx1cyBibG9jayBudW1iZXIgYnl0ZS4KKwkJICovCisJCWlmIChzc2lmX2JtYy0+ cmVtYWluX2xlbiA8IE1BWF9JUE1JX0RBVEFfUEVSX01JRERMRV9UUkFOU0FDVElPTikgeworCQkJ LyoKKwkJCSAqIFRoaXMgaXMgUkVBRCBFbmQgbWVzc2FnZQorCQkJICogIFJldHVybiBsZW5ndGgg aXMgdGhlIHJlbWFpbmluZyByZXNwb25zZSBkYXRhIGxlbmd0aAorCQkJICogIHBsdXMgYmxvY2sg bnVtYmVyCisJCQkgKiAgQmxvY2sgbnVtYmVyIDB4RkYgaXMgdG8gaW5kaWNhdGUgdGhpcyBpcyBs YXN0IG1lc3NhZ2UKKwkJCSAqCisJCQkgKi8KKwkJCSp2YWwgPSBzc2lmX2JtYy0+cmVtYWluX2xl biArIDE7CisJCQlzc2lmX2JtYy0+YmxvY2tfbnVtID0gMHhGRjsKKwkJCXNzaWZfYm1jLT5yZXNw b25zZV9idWZbaWR4KytdID0gc3NpZl9ibWMtPmJsb2NrX251bTsKKwkJCXJlc3BvbnNlX2xlbiA9 IHNzaWZfYm1jLT5yZW1haW5fbGVuOworCQkJLyogQ2xlYW4gdGhlIGJ1ZmZlciAqLworCQkJbWVt c2V0KCZzc2lmX2JtYy0+cmVzcG9uc2VfYnVmW2lkeF0sIDAsIE1BWF9QQVlMT0FEX1BFUl9UUkFO U0FDVElPTiAtIGlkeCk7CisJCX0gZWxzZSB7CisJCQkvKgorCQkJICogVGhpcyBpcyBSRUFEIE1p ZGRsZSBtZXNzYWdlCisJCQkgKiAgUmVzcG9uc2UgbGVuZ3RoIGlzIHRoZSBtYXhpbXVtIFNNQlVT IHRyYW5zZmVyIGxlbmd0aAorCQkJICogIEJsb2NrIG51bWJlciBieXRlIGlzIGluY3JlbWVudGVk CisJCQkgKiBSZXR1cm4gbGVuZ3RoIGlzIG1heGltdW0gU01CVVMgdHJhbnNmZXIgbGVuZ3RoCisJ CQkgKi8KKwkJCSp2YWwgPSBNQVhfUEFZTE9BRF9QRVJfVFJBTlNBQ1RJT047CisJCQlzc2lmX2Jt Yy0+cmVtYWluX2xlbiAtPSBNQVhfSVBNSV9EQVRBX1BFUl9NSURETEVfVFJBTlNBQ1RJT047CisJ CQlyZXNwb25zZV9sZW4gPSBNQVhfSVBNSV9EQVRBX1BFUl9NSURETEVfVFJBTlNBQ1RJT047CisJ CQlzc2lmX2JtYy0+cmVzcG9uc2VfYnVmW2lkeCsrXSA9IHNzaWZfYm1jLT5ibG9ja19udW07CisJ CQlzc2lmX2JtYy0+YmxvY2tfbnVtKys7CisJCX0KKworCQltZW1jcHkoJnNzaWZfYm1jLT5yZXNw b25zZV9idWZbaWR4XSwKKwkJICAgICAgIHNzaWZfYm1jLT5yZXNwb25zZS5wYXlsb2FkICsgMSAr IHNzaWZfYm1jLT5uYnl0ZXNfcHJvY2Vzc2VkLAorCQkgICAgICAgcmVzcG9uc2VfbGVuKTsKKwkJ YnJlYWs7CisKKwlkZWZhdWx0OgorCQkvKiBEbyBub3QgZXhwZWN0IHRvIGdvIHRvIHRoaXMgY2Fz ZSAqLworCQlkZXZfZXJyKCZzc2lmX2JtYy0+Y2xpZW50LT5kZXYsCisJCQkiRXJyb3I6IFVuZXhw ZWN0ZWQgU01CdXMgY29tbWFuZCByZWNlaXZlZCAweCV4XG4iLCBzc2lmX2JtYy0+c21idXNfY21k KTsKKwkJYnJlYWs7CisJfQorCisJc3NpZl9ibWMtPm5ieXRlc19wcm9jZXNzZWQgKz0gcmVzcG9u c2VfbGVuOworfQorCisvKiBQcm9jZXNzIHRoZSBJUE1JIHJlc3BvbnNlIHRoYXQgd2lsbCBiZSBy ZWFkIGJ5IG1hc3RlciAqLworc3RhdGljIHZvaWQgaGFuZGxlX3JlYWRfcHJvY2Vzc2VkKHN0cnVj dCBzc2lmX2JtY19jdHggKnNzaWZfYm1jLCB1OCAqdmFsKQoreworCXU4ICpidWY7CisJdTggcGVj X2xlbiwgYWRkciwgbGVuOworCXU4IHBlYyA9IDA7CisKKwlwZWNfbGVuID0gc3NpZl9ibWMtPnBl Y19zdXBwb3J0ID8gMSA6IDA7CisJLyogUEVDIC0gU3RhcnQgUmVhZCBBZGRyZXNzICovCisJYWRk ciA9IEdFVF84QklUX0FERFIoc3NpZl9ibWMtPmNsaWVudC0+YWRkcik7CisJcGVjID0gaTJjX3Nt YnVzX3BlYyhwZWMsICZhZGRyLCAxKTsKKwkvKiBQRUMgLSBTU0lGIENvbW1hbmQgKi8KKwlwZWMg PSBpMmNfc21idXNfcGVjKHBlYywgJnNzaWZfYm1jLT5zbWJ1c19jbWQsIDEpOworCS8qIFBFQyAt IFJlc3RhcnQgV3JpdGUgQWRkcmVzcyAqLworCWFkZHIgPSBhZGRyIHwgMHgwMTsKKwlwZWMgPSBp MmNfc21idXNfcGVjKHBlYywgJmFkZHIsIDEpOworCisJaWYgKHNzaWZfYm1jLT5pc19zaW5nbGVw YXJ0X3JlYWQpIHsKKwkJLyogU2luZ2xlLXBhcnQgUmVhZCBwcm9jZXNzaW5nICovCisJCWJ1ZiA9 ICh1OCAqKSZzc2lmX2JtYy0+cmVzcG9uc2U7CisKKwkJaWYgKHNzaWZfYm1jLT5yZXNwb25zZS5s ZW4gJiYgc3NpZl9ibWMtPm1zZ19pZHggPCBzc2lmX2JtYy0+cmVzcG9uc2UubGVuKSB7CisJCQlz c2lmX2JtYy0+bXNnX2lkeCsrOworCQkJKnZhbCA9IGJ1Zltzc2lmX2JtYy0+bXNnX2lkeF07CisJ CX0gZWxzZSBpZiAoc3NpZl9ibWMtPnJlc3BvbnNlLmxlbiAmJiBzc2lmX2JtYy0+bXNnX2lkeCA9 PSBzc2lmX2JtYy0+cmVzcG9uc2UubGVuKSB7CisJCQlzc2lmX2JtYy0+bXNnX2lkeCsrOworCQkJ KnZhbCA9IGkyY19zbWJ1c19wZWMocGVjLCBidWYsIHNzaWZfbXNnX2xlbigmc3NpZl9ibWMtPnJl c3BvbnNlKSk7CisJCX0gZWxzZSB7CisJCQkqdmFsID0gMDsKKwkJfQorCQkvKiBJbnZhbGlkYXRl IHJlc3BvbnNlIGJ1ZmZlciB0byBkZW5vdGUgaXQgaXMgc2VudCAqLworCQlpZiAoc3NpZl9ibWMt Pm1zZ19pZHggKyAxID49IChzc2lmX21zZ19sZW4oJnNzaWZfYm1jLT5yZXNwb25zZSkgKyBwZWNf bGVuKSkKKwkJCWNvbXBsZXRlX3Jlc3BvbnNlKHNzaWZfYm1jKTsKKwl9IGVsc2UgeworCQkvKiBN dWx0aS1wYXJ0IFJlYWQgcHJvY2Vzc2luZyAqLworCQlzd2l0Y2ggKHNzaWZfYm1jLT5zbWJ1c19j bWQpIHsKKwkJY2FzZSBTU0lGX0lQTUlfTVVMVElQQVJUX1JFQURfU1RBUlQ6CisJCWNhc2UgU1NJ Rl9JUE1JX01VTFRJUEFSVF9SRUFEX01JRERMRToKKwkJCWJ1ZiA9ICh1OCAqKSZzc2lmX2JtYy0+ cmVzcG9uc2VfYnVmOworCQkJKnZhbCA9IGJ1Zltzc2lmX2JtYy0+bXNnX2lkeF07CisJCQlzc2lm X2JtYy0+bXNnX2lkeCsrOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQkvKiBEbyBub3QgZXhw ZWN0IHRvIGdvIHRvIHRoaXMgY2FzZSAqLworCQkJZGV2X2Vycigmc3NpZl9ibWMtPmNsaWVudC0+ ZGV2LAorCQkJCSJFcnJvcjogVW5leHBlY3RlZCBTTUJ1cyBjb21tYW5kIHJlY2VpdmVkIDB4JXhc biIsCisJCQkJc3NpZl9ibWMtPnNtYnVzX2NtZCk7CisJCQlicmVhazsKKwkJfQorCQlsZW4gPSAo c3NpZl9ibWMtPmJsb2NrX251bSA9PSAweEZGKSA/CisJCSAgICAgICBzc2lmX2JtYy0+cmVtYWlu X2xlbiArIDEgOiBNQVhfUEFZTE9BRF9QRVJfVFJBTlNBQ1RJT047CisJCWlmIChzc2lmX2JtYy0+ bXNnX2lkeCA9PSAobGVuICsgMSkpIHsKKwkJCXBlYyA9IGkyY19zbWJ1c19wZWMocGVjLCAmbGVu LCAxKTsKKwkJCSp2YWwgPSBpMmNfc21idXNfcGVjKHBlYywgc3NpZl9ibWMtPnJlc3BvbnNlX2J1 ZiwgbGVuKTsKKwkJfQorCQkvKiBJbnZhbGlkYXRlIHJlc3BvbnNlIGJ1ZmZlciB0byBkZW5vdGUg bGFzdCByZXNwb25zZSBpcyBzZW50ICovCisJCWlmIChzc2lmX2JtYy0+YmxvY2tfbnVtID09IDB4 RkYgJiYKKwkJICAgIHNzaWZfYm1jLT5tc2dfaWR4ID4gKHNzaWZfYm1jLT5yZW1haW5fbGVuICsg cGVjX2xlbikpIHsKKwkJCWNvbXBsZXRlX3Jlc3BvbnNlKHNzaWZfYm1jKTsKKwkJfQorCX0KK30K Kworc3RhdGljIHZvaWQgaGFuZGxlX3dyaXRlX3JlY2VpdmVkKHN0cnVjdCBzc2lmX2JtY19jdHgg KnNzaWZfYm1jLCB1OCAqdmFsKQoreworCXU4ICpidWY7CisJdTggc21idXNfY21kOworCisJYnVm ID0gKHU4ICopJnNzaWZfYm1jLT5yZXF1ZXN0OworCWlmIChzc2lmX2JtYy0+bXNnX2lkeCA+PSBz aXplb2Yoc3RydWN0IHNzaWZfbXNnKSkKKwkJcmV0dXJuOworCisJc21idXNfY21kID0gc3NpZl9i bWMtPnNtYnVzX2NtZDsKKwlzd2l0Y2ggKHNtYnVzX2NtZCkgeworCWNhc2UgU1NJRl9JUE1JX1NJ TkdMRVBBUlRfV1JJVEU6CisJCS8qIFNpbmdsZS1wYXJ0IHdyaXRlICovCisJCWJ1Zltzc2lmX2Jt Yy0+bXNnX2lkeCAtIDFdID0gKnZhbDsKKwkJc3NpZl9ibWMtPm1zZ19pZHgrKzsKKworCQlicmVh azsKKwljYXNlIFNTSUZfSVBNSV9NVUxUSVBBUlRfV1JJVEVfU1RBUlQ6CisJCS8qIFJlc2V0IGxl bmd0aCB0byB6ZXJvICovCisJCWlmIChzc2lmX2JtYy0+bXNnX2lkeCA9PSAxKQorCQkJc3NpZl9i bWMtPnJlcXVlc3QubGVuID0gMDsKKworCQlmYWxsdGhyb3VnaDsKKwljYXNlIFNTSUZfSVBNSV9N VUxUSVBBUlRfV1JJVEVfTUlERExFOgorCWNhc2UgU1NJRl9JUE1JX01VTFRJUEFSVF9XUklURV9F TkQ6CisJCS8qIE11bHRpLXBhcnQgd3JpdGUsIDJuZCBieXRlIHJlY2VpdmVkIGlzIGxlbmd0aCAq LworCQlpZiAoc3NpZl9ibWMtPm1zZ19pZHggPT0gMSkgeworCQkJc3NpZl9ibWMtPnJlcXVlc3Qu bGVuICs9ICp2YWw7CisJCQlzc2lmX2JtYy0+cmVjdl9sZW4gPSAqdmFsOworCQl9IGVsc2Ugewor CQkJYnVmW3NzaWZfYm1jLT5tc2dfaWR4IC0gMSArCisJCQkgICAgc3NpZl9ibWMtPnJlcXVlc3Qu bGVuIC0gc3NpZl9ibWMtPnJlY3ZfbGVuXQk9ICp2YWw7CisJCX0KKworCQlzc2lmX2JtYy0+bXNn X2lkeCsrOworCisJCWJyZWFrOworCWRlZmF1bHQ6CisJCS8qIERvIG5vdCBleHBlY3QgdG8gZ28g dG8gdGhpcyBjYXNlICovCisJCWRldl9lcnIoJnNzaWZfYm1jLT5jbGllbnQtPmRldiwKKwkJCSJF cnJvcjogVW5leHBlY3RlZCBTTUJ1cyBjb21tYW5kIHJlY2VpdmVkIDB4JXhcbiIsIHNzaWZfYm1j LT5zbWJ1c19jbWQpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyBib29sIHZhbGlkYXRlX3Bl YyhzdHJ1Y3Qgc3NpZl9ibWNfY3R4ICpzc2lmX2JtYykKK3sKKwl1OCBycGVjID0gMCwgY3BlYyA9 IDA7CisJYm9vbCByZXQgPSB0cnVlOworCXU4IGFkZHIsIGluZGV4OworCXU4ICpidWY7CisKKwli dWYgPSAodTggKikmc3NpZl9ibWMtPnJlcXVlc3Q7CisJc3dpdGNoIChzc2lmX2JtYy0+c21idXNf Y21kKSB7CisJY2FzZSBTU0lGX0lQTUlfU0lOR0xFUEFSVF9XUklURToKKwkJaWYgKChzc2lmX2Jt Yy0+bXNnX2lkeCAtIDEpID09IHNzaWZfbXNnX2xlbigmc3NpZl9ibWMtPnJlcXVlc3QpKSB7CisJ CQkvKiBQRUMgaXMgbm90IGluY2x1ZGVkICovCisJCQlzc2lmX2JtYy0+cGVjX3N1cHBvcnQgPSBm YWxzZTsKKwkJCXJldHVybiB0cnVlOworCQl9CisKKwkJaWYgKChzc2lmX2JtYy0+bXNnX2lkeCAt IDEpICE9IChzc2lmX21zZ19sZW4oJnNzaWZfYm1jLT5yZXF1ZXN0KSArIDEpKQorCQkJZ290byBl cnJvcjsKKworCQkvKiBQRUMgaXMgaW5jbHVkZWQgKi8KKwkJc3NpZl9ibWMtPnBlY19zdXBwb3J0 ID0gdHJ1ZTsKKwkJcnBlYyA9IGJ1Zltzc2lmX2JtYy0+bXNnX2lkeCAtIDJdOworCQlhZGRyID0g R0VUXzhCSVRfQUREUihzc2lmX2JtYy0+Y2xpZW50LT5hZGRyKTsKKwkJY3BlYyA9IGkyY19zbWJ1 c19wZWMoY3BlYywgJmFkZHIsIDEpOworCQljcGVjID0gaTJjX3NtYnVzX3BlYyhjcGVjLCAmc3Np Zl9ibWMtPnNtYnVzX2NtZCwgMSk7CisJCWNwZWMgPSBpMmNfc21idXNfcGVjKGNwZWMsIGJ1Ziwg c3NpZl9tc2dfbGVuKCZzc2lmX2JtYy0+cmVxdWVzdCkpOworCQlpZiAocnBlYyAhPSBjcGVjKSB7 CisJCQlkZXZfZXJyKCZzc2lmX2JtYy0+Y2xpZW50LT5kZXYsICJCYWQgUEVDIDB4JTAyeCB2cy4g MHglMDJ4XG4iLCBycGVjLCBjcGVjKTsKKwkJCXJldCA9IGZhbHNlOworCQl9CisKKwkJYnJlYWs7 CisJY2FzZSBTU0lGX0lQTUlfTVVMVElQQVJUX1dSSVRFX1NUQVJUOgorCWNhc2UgU1NJRl9JUE1J X01VTFRJUEFSVF9XUklURV9NSURETEU6CisJY2FzZSBTU0lGX0lQTUlfTVVMVElQQVJUX1dSSVRF X0VORDoKKwkJaW5kZXggPSBzc2lmX2JtYy0+cmVxdWVzdC5sZW4gLSBzc2lmX2JtYy0+cmVjdl9s ZW47CisJCWlmICgoc3NpZl9ibWMtPm1zZ19pZHggLSAxICsgaW5kZXgpID09IHNzaWZfbXNnX2xl bigmc3NpZl9ibWMtPnJlcXVlc3QpKSB7CisJCQkvKiBQRUMgaXMgbm90IGluY2x1ZGVkICovCisJ CQlzc2lmX2JtYy0+cGVjX3N1cHBvcnQgPSBmYWxzZTsKKwkJCXJldHVybiB0cnVlOworCQl9CisK KwkJaWYgKChzc2lmX2JtYy0+bXNnX2lkeCAtIDEgKyBpbmRleCkgIT0gKHNzaWZfbXNnX2xlbigm c3NpZl9ibWMtPnJlcXVlc3QpICsgMSkpCisJCQlnb3RvIGVycm9yOworCisJCS8qIFBFQyBpcyBp bmNsdWRlZCAqLworCQlzc2lmX2JtYy0+cGVjX3N1cHBvcnQgPSB0cnVlOworCQlycGVjID0gYnVm W3NzaWZfYm1jLT5tc2dfaWR4IC0gMiArIGluZGV4XTsKKwkJYWRkciA9IEdFVF84QklUX0FERFIo c3NpZl9ibWMtPmNsaWVudC0+YWRkcik7CisJCWNwZWMgPSBpMmNfc21idXNfcGVjKGNwZWMsICZh ZGRyLCAxKTsKKwkJY3BlYyA9IGkyY19zbWJ1c19wZWMoY3BlYywgJnNzaWZfYm1jLT5zbWJ1c19j bWQsIDEpOworCQljcGVjID0gaTJjX3NtYnVzX3BlYyhjcGVjLCAmc3NpZl9ibWMtPnJlY3ZfbGVu LCAxKTsKKwkJLyogQXMgU01CdXMgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBhbGxvdyB0aGUgbGVu Z3RoCisJCSAqIChieXRlIGNvdW50KSBpbiB0aGUgV3JpdGUtQmxvY2sgcHJvdG9jb2wgdG8gYmUg emVyby4KKwkJICogVGhlcmVmb3JlLCBpdCBpcyBpbGxlZ2FsIHRvIGhhdmUgdGhlIGxhc3QgTWlk ZGxlCisJCSAqIHRyYW5zYWN0aW9uIGluIHRoZSBzZXF1ZW5jZSBjYXJyeSAzMi1ieXRlcyBhbmQg aGF2ZQorCQkgKiBhIGxlbmd0aCBvZiDigJgw4oCZIGluIHRoZSBFbmQgdHJhbnNhY3Rpb24uCisJ CSAqIEJ1dCBzb21lIHVzZXJzIG1heSB0cnkgdG8gdXNlIHRoaXMgd2F5IGFuZCB3ZSBzaG91bGQK KwkJICogcHJldmVudCBzc2lmX2JtYyBkcml2ZXIgYnJva2VuIGluIHRoaXMgY2FzZS4KKwkJICov CisJCWlmIChzc2lmX2JtYy0+cmVjdl9sZW4gIT0gMCkKKwkJCWNwZWMgPSBpMmNfc21idXNfcGVj KGNwZWMsIGJ1ZiArIDEgKyBpbmRleCwgc3NpZl9ibWMtPnJlY3ZfbGVuKTsKKworCQlpZiAocnBl YyAhPSBjcGVjKSB7CisJCQlkZXZfZXJyKCZzc2lmX2JtYy0+Y2xpZW50LT5kZXYsICJCYWQgUEVD IDB4JTAyeCB2cy4gMHglMDJ4XG4iLCBycGVjLCBjcGVjKTsKKwkJCXJldCA9IGZhbHNlOworCQl9 CisKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK2Vy cm9yOgorCS8qIERvIG5vdCBleHBlY3QgdG8gZ28gdG8gdGhpcyBjYXNlICovCisJZGV2X2Vycigm c3NpZl9ibWMtPmNsaWVudC0+ZGV2LAorCQkiRXJyb3I6IFVuZXhwZWN0ZWQgbGVuZ3RoIHJlY2Vp dmVkICVkXG4iLCBzc2lmX21zZ19sZW4oJnNzaWZfYm1jLT5yZXF1ZXN0KSk7CisKKwlyZXR1cm4g ZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBsZXRlX3dyaXRlX3JlY2VpdmVkKHN0cnVjdCBz c2lmX2JtY19jdHggKnNzaWZfYm1jKQoreworCXU4IGNtZCA9IHNzaWZfYm1jLT5zbWJ1c19jbWQ7 CisKKwkvKiBBIEJNQyB0aGF0IHJlY2VpdmVzIGFuIGludmFsaWQgUEVDIHNoYWxsIGRyb3AgdGhl IGRhdGEgZm9yIHRoZSB3cml0ZQorCSAqIHRyYW5zYWN0aW9uIGFuZCBhbnkgZnVydGhlciB0cmFu c2FjdGlvbnMgKHJlYWQgb3Igd3JpdGUpIHVudGlsCisJICogdGhlIG5leHQgdmFsaWQgcmVhZCBv ciB3cml0ZSBTdGFydCB0cmFuc2FjdGlvbiBpcyByZWNlaXZlZAorCSAqLworCWlmICghdmFsaWRh dGVfcGVjKHNzaWZfYm1jKSkgeworCQlkZXZfZXJyKCZzc2lmX2JtYy0+Y2xpZW50LT5kZXYsICJS ZWNlaXZlZCBpbnZhbGlkIFBFQ1xuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY21kID09IFNT SUZfSVBNSV9TSU5HTEVQQVJUX1dSSVRFIHx8IGNtZCA9PSBTU0lGX0lQTUlfTVVMVElQQVJUX1dS SVRFX0VORCkKKwkJaGFuZGxlX3JlcXVlc3Qoc3NpZl9ibWMpOworfQorCitzdGF0aWMgdm9pZCBp bml0aWFsaXplX3RyYW5zZmVyKHN0cnVjdCBzc2lmX2JtY19jdHggKnNzaWZfYm1jLCB1OCAqdmFs KQoreworCS8qIFNNQlVTIGNvbW1hbmQgY2FuIHZhcnkgKHNpbmdsZSBvciBtdWx0aS1wYXJ0KSAq LworCXNzaWZfYm1jLT5zbWJ1c19jbWQgPSAqdmFsOworCXNzaWZfYm1jLT5tc2dfaWR4Kys7CisK KwlpZiAoc3NpZl9ibWMtPnNtYnVzX2NtZCA9PSBTU0lGX0lQTUlfU0lOR0xFUEFSVF9XUklURSB8 fAorCSAgICBzc2lmX2JtYy0+c21idXNfY21kID09IFNTSUZfSVBNSV9NVUxUSVBBUlRfV1JJVEVf U1RBUlQpIHsKKwkJLyoKKwkJICogVGhlIHJlc3BvbnNlIGNhbiBiZSBkZWxheWVkIGluIEJNQyBj YXVzaW5nIGhvc3QgU1NJRiBkcml2ZXIKKwkJICogdG8gdGltZW91dCBhbmQgc2VuZCBhIG5ldyBy ZXF1ZXN0IG9uY2UgQk1DIHNsYXZlIGlzIHJlYWR5LgorCQkgKiBJbiB0aGF0IGNhc2UgY2hlY2sg Zm9yIHBlbmRpbmcgcmVzcG9uc2UgYW5kIGNsZWFyIGl0CisJCSAqLworCQlpZiAoc3NpZl9ibWMt PnJlc3BvbnNlX2luX3Byb2dyZXNzKSB7CisJCQlkZXZfZXJyKCZzc2lmX2JtYy0+Y2xpZW50LT5k ZXYsCisJCQkJIldhcm46IFNTSUYgbmV3IHJlcXVlc3Qgd2l0aCBwZW5kaW5nIHJlc3BvbnNlIik7 CisJCQljb21wbGV0ZV9yZXNwb25zZShzc2lmX2JtYyk7CisJCX0KKwl9IGVsc2UgaWYgKHVubGlr ZWx5KHNzaWZfYm1jLT5zbWJ1c19jbWQgIT0gU1NJRl9JUE1JX1NJTkdMRVBBUlRfUkVBRCAmJgor CQkJICAgIHNzaWZfYm1jLT5zbWJ1c19jbWQgIT0gU1NJRl9JUE1JX01VTFRJUEFSVF9XUklURV9N SURETEUgJiYKKwkJCSAgICBzc2lmX2JtYy0+c21idXNfY21kICE9IFNTSUZfSVBNSV9NVUxUSVBB UlRfV1JJVEVfRU5EICYmCisJCQkgICAgc3NpZl9ibWMtPnNtYnVzX2NtZCAhPSBTU0lGX0lQTUlf TVVMVElQQVJUX1JFQURfU1RBUlQgJiYKKwkJCSAgICBzc2lmX2JtYy0+c21idXNfY21kICE9IFNT SUZfSVBNSV9NVUxUSVBBUlRfUkVBRF9NSURETEUpKSB7CisJCS8qIFVua25vd24gY29tbWFuZCwg Y2xlYXIgaXQgKi8KKwkJZGV2X2Vycigmc3NpZl9ibWMtPmNsaWVudC0+ZGV2LCAiV2FybjogVW5r bm93biBTTUJ1cyBjb21tYW5kIik7CisJCWNvbXBsZXRlX3Jlc3BvbnNlKHNzaWZfYm1jKTsKKwl9 Cit9CisKKy8qCisgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgSTJDIHNsYXZlIGV2ZW50 cworICovCitzdGF0aWMgaW50IHNzaWZfYm1jX2NiKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs IGVudW0gaTJjX3NsYXZlX2V2ZW50IGV2ZW50LCB1OCAqdmFsKQoreworCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisJc3RydWN0IHNzaWZfYm1jX2N0eCAqc3NpZl9ibWMgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzc2lmX2JtYy0+bG9jaywgZmxhZ3Mp OworCisJLyogSTJDIEV2ZW50IEhhbmRsZXI6CisJICogICBJMkNfU0xBVkVfUkVBRF9SRVFVRVNU RUQJMHgwCisJICogICBJMkNfU0xBVkVfV1JJVEVfUkVRVUVTVEVECTB4MQorCSAqICAgSTJDX1NM QVZFX1JFQURfUFJPQ0VTU0VECTB4MgorCSAqICAgSTJDX1NMQVZFX1dSSVRFX1JFQ0VJVkVECTB4 MworCSAqICAgSTJDX1NMQVZFX1NUT1AJCTB4NAorCSAqLworCXN3aXRjaCAoZXZlbnQpIHsKKwlj YXNlIEkyQ19TTEFWRV9SRUFEX1JFUVVFU1RFRDoKKwkJc3NpZl9ibWMtPm1zZ19pZHggPSAwOwor CQlpZiAoc3NpZl9ibWMtPmlzX3NpbmdsZXBhcnRfcmVhZCkKKwkJCSp2YWwgPSBzc2lmX2JtYy0+ cmVzcG9uc2UubGVuOworCQllbHNlCisJCQlzZXRfbXVsdGlwYXJ0X3Jlc3BvbnNlX2J1ZmZlcihz c2lmX2JtYywgdmFsKTsKKwkJYnJlYWs7CisKKwljYXNlIEkyQ19TTEFWRV9XUklURV9SRVFVRVNU RUQ6CisJCXNzaWZfYm1jLT5tc2dfaWR4ID0gMDsKKwkJYnJlYWs7CisKKwljYXNlIEkyQ19TTEFW RV9SRUFEX1BST0NFU1NFRDoKKwkJaGFuZGxlX3JlYWRfcHJvY2Vzc2VkKHNzaWZfYm1jLCB2YWwp OworCQlicmVhazsKKworCWNhc2UgSTJDX1NMQVZFX1dSSVRFX1JFQ0VJVkVEOgorCQlpZiAoc3Np Zl9ibWMtPm1zZ19pZHgpCisJCQloYW5kbGVfd3JpdGVfcmVjZWl2ZWQoc3NpZl9ibWMsIHZhbCk7 CisJCWVsc2UKKwkJCWluaXRpYWxpemVfdHJhbnNmZXIoc3NpZl9ibWMsIHZhbCk7CisKKwkJYnJl YWs7CisKKwljYXNlIEkyQ19TTEFWRV9TVE9QOgorCQlpZiAoc3NpZl9ibWMtPmxhc3RfZXZlbnQg PT0gSTJDX1NMQVZFX1dSSVRFX1JFQ0VJVkVEKQorCQkJY29tcGxldGVfd3JpdGVfcmVjZWl2ZWQo c3NpZl9ibWMpOworCQkvKiBSZXNldCBtZXNzYWdlIGluZGV4ICovCisJCXNzaWZfYm1jLT5tc2df aWR4ID0gMDsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisJc3NpZl9ibWMt Pmxhc3RfZXZlbnQgPSBldmVudDsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzc2lmX2JtYy0+ bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBzc2lmX2JtY19jdHggKnNz aWZfYm1jX2FsbG9jKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGludCBzaXplb2ZfcHJpdikK K3sKKwlzdHJ1Y3Qgc3NpZl9ibWNfY3R4ICpzc2lmX2JtYzsKKwlpbnQgcmV0OworCisJc3NpZl9i bWMgPSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LCBzaXplb2YoKnNzaWZfYm1jKSArIHNpemVv Zl9wcml2LCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNzaWZfYm1jKQorCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKKworCXNwaW5fbG9ja19pbml0KCZzc2lmX2JtYy0+bG9jayk7CisKKwlpbml0X3dh aXRxdWV1ZV9oZWFkKCZzc2lmX2JtYy0+d2FpdF9xdWV1ZSk7CisJc3NpZl9ibWMtPnJlcXVlc3Rf YXZhaWxhYmxlID0gZmFsc2U7CisJc3NpZl9ibWMtPnJlc3BvbnNlX2luX3Byb2dyZXNzID0gZmFs c2U7CisKKwkvKiBSZWdpc3RlciBtaXNjIGRldmljZSBpbnRlcmZhY2UgKi8KKwlzc2lmX2JtYy0+ bWlzY2Rldi5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUjsKKwlzc2lmX2JtYy0+bWlzY2Rldi5u YW1lID0gREVWSUNFX05BTUU7CisJc3NpZl9ibWMtPm1pc2NkZXYuZm9wcyA9ICZzc2lmX2JtY19m b3BzOworCXNzaWZfYm1jLT5taXNjZGV2LnBhcmVudCA9ICZjbGllbnQtPmRldjsKKwlyZXQgPSBt aXNjX3JlZ2lzdGVyKCZzc2lmX2JtYy0+bWlzY2Rldik7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7 CisKKwlzc2lmX2JtYy0+Y2xpZW50ID0gY2xpZW50OworCXNzaWZfYm1jLT5jbGllbnQtPmZsYWdz IHw9IEkyQ19DTElFTlRfU0xBVkU7CisKKwkvKiBSZWdpc3RlciBJMkMgc2xhdmUgKi8KKwlpMmNf c2V0X2NsaWVudGRhdGEoY2xpZW50LCBzc2lmX2JtYyk7CisJcmV0ID0gaTJjX3NsYXZlX3JlZ2lz dGVyKGNsaWVudCwgc3NpZl9ibWNfY2IpOworCWlmIChyZXQpIHsKKwkJbWlzY19kZXJlZ2lzdGVy KCZzc2lmX2JtYy0+bWlzY2Rldik7CisJCWdvdG8gb3V0OworCX0KKworCXJldHVybiBzc2lmX2Jt YzsKKworb3V0OgorCWRldm1fa2ZyZWUoJmNsaWVudC0+ZGV2LCBzc2lmX2JtYyk7CisJcmV0dXJu IEVSUl9QVFIocmV0KTsKK30KK0VYUE9SVF9TWU1CT0woc3NpZl9ibWNfYWxsb2MpOworCitNT0RV TEVfQVVUSE9SKCJDaHVvbmcgVHJhbiA8Y2h1b25nQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+Iik7 CitNT0RVTEVfQVVUSE9SKCJRdWFuIE5ndXllbiA8cXVhbkBvcy5hbXBlcmVjb21wdXRpbmcuY29t PiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJMaW51eCBkZXZpY2UgZHJpdmVyIG9mIHRoZSBCTUMg SVBNSSBTU0lGIGludGVyZmFjZS4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvY2hhci9pcG1pL3NzaWZfYm1jLmggYi9kcml2ZXJzL2NoYXIvaXBtaS9z c2lmX2JtYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWFiNTQw MDYxZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9jaGFyL2lwbWkvc3NpZl9ibWMuaApA QCAtMCwwICsxLDkzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8K Ky8qCisgKiBUaGUgZHJpdmVyIGZvciBCTUMgc2lkZSBvZiBTU0lGIGludGVyZmFjZQorICoKKyAq IENvcHlyaWdodCAoYykgMjAyMSwgQW1wZXJlIENvbXB1dGluZyBMTEMKKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworI2lmbmRlZiBfX1NTSUZfQk1DX0hfXworI2RlZmlu ZSBfX1NTSUZfQk1DX0hfXworCisjZGVmaW5lIERFVklDRV9OQU1FCQkJCSJpcG1pLXNzaWYtaG9z dCIKKworI2RlZmluZSBHRVRfOEJJVF9BRERSKGFkZHJfN2JpdCkJCSgoKGFkZHJfN2JpdCkgPDwg MSkgJiAweGZmKQorCisjZGVmaW5lIE1TR19QQVlMT0FEX0xFTl9NQVgJCQkyNTIKKworLyogQSBz dGFuZGFyZCBTTUJ1cyBUcmFuc2FjdGlvbiBpcyBsaW1pdGVkIHRvIDMyIGRhdGEgYnl0ZXMgKi8K KyNkZWZpbmUgTUFYX1BBWUxPQURfUEVSX1RSQU5TQUNUSU9OCQkzMgorCisjZGVmaW5lIE1BWF9J UE1JX0RBVEFfUEVSX1NUQVJUX1RSQU5TQUNUSU9OCTMwCisjZGVmaW5lIE1BWF9JUE1JX0RBVEFf UEVSX01JRERMRV9UUkFOU0FDVElPTgkzMQorCisjZGVmaW5lIFNTSUZfSVBNSV9TSU5HTEVQQVJU X1dSSVRFCQkweDIKKyNkZWZpbmUgU1NJRl9JUE1JX1NJTkdMRVBBUlRfUkVBRAkJMHgzCisjZGVm aW5lIFNTSUZfSVBNSV9NVUxUSVBBUlRfV1JJVEVfU1RBUlQJCTB4NgorI2RlZmluZSBTU0lGX0lQ TUlfTVVMVElQQVJUX1dSSVRFX01JRERMRQkweDcKKyNkZWZpbmUgU1NJRl9JUE1JX01VTFRJUEFS VF9XUklURV9FTkQJCTB4OAorI2RlZmluZSBTU0lGX0lQTUlfTVVMVElQQVJUX1JFQURfU1RBUlQJ CTB4MworI2RlZmluZSBTU0lGX0lQTUlfTVVMVElQQVJUX1JFQURfTUlERExFCQkweDkKKworc3Ry dWN0IHNzaWZfbXNnIHsKKwl1OCBsZW47CisJdTggbmV0Zm5fbHVuOworCXU4IGNtZDsKKwl1OCBw YXlsb2FkW01TR19QQVlMT0FEX0xFTl9NQVhdOworfSBfX3BhY2tlZDsKKworc3RhdGljIGlubGlu ZSB1MzIgc3NpZl9tc2dfbGVuKHN0cnVjdCBzc2lmX21zZyAqc3NpZl9tc2cpCit7CisJcmV0dXJu IHNzaWZfbXNnLT5sZW4gKyAxOworfQorCisjZGVmaW5lIFNTSUZfQk1DX0JVU1kgICAweDAxCisj ZGVmaW5lIFNTSUZfQk1DX1JFQURZICAweDAyCisKK3N0cnVjdCBzc2lmX2JtY19jdHggeworCXN0 cnVjdCBpMmNfY2xpZW50CSpjbGllbnQ7CisJc3RydWN0IG1pc2NkZXZpY2UJbWlzY2RldjsKKwl1 OAkJCXJ1bm5pbmc7CisJdTgJCQlzbWJ1c19jbWQ7CisJc3RydWN0IHNzaWZfbXNnCQlyZXF1ZXN0 OworCWJvb2wJCQlyZXF1ZXN0X2F2YWlsYWJsZTsKKwlzdHJ1Y3Qgc3NpZl9tc2cJCXJlc3BvbnNl OworCWJvb2wJCQlyZXNwb25zZV9pbl9wcm9ncmVzczsKKwkvKiBSZXNwb25zZSBidWZmZXIgZm9y IE11bHRpLXBhcnQgUmVhZCBUcmFuc2FjdGlvbiAqLworCXU4CQkJcmVzcG9uc2VfYnVmW01BWF9Q QVlMT0FEX1BFUl9UUkFOU0FDVElPTl07CisJLyogRmxhZyB0byBpZGVudGlmeSBhIE11bHRpLXBh cnQgUmVhZCBUcmFuc2FjdGlvbiAqLworCWJvb2wJCQlpc19zaW5nbGVwYXJ0X3JlYWQ7CisJdTgJ CQluYnl0ZXNfcHJvY2Vzc2VkOworCXU4CQkJcmVtYWluX2xlbjsKKwl1OAkJCXJlY3ZfbGVuOwor CS8qIEJsb2NrIE51bWJlciBvZiBhIE11bHRpLXBhcnQgUmVhZCBUcmFuc2FjdGlvbiAqLworCXU4 CQkJYmxvY2tfbnVtOworCXNpemVfdAkJCW1zZ19pZHg7CisJZW51bSBpMmNfc2xhdmVfZXZlbnQJ bGFzdF9ldmVudDsKKwlib29sCQkJcGVjX3N1cHBvcnQ7CisJLyogc3BpbmxvY2sgKi8KKwlzcGlu bG9ja190CQlsb2NrOworCXdhaXRfcXVldWVfaGVhZF90CXdhaXRfcXVldWU7CisJdm9pZCAoKnNl dF9zc2lmX2JtY19zdGF0dXMpKHN0cnVjdCBzc2lmX2JtY19jdHggKnNzaWZfYm1jLCB1bnNpZ25l ZCBpbnQgZmxhZ3MpOworCXZvaWQJCQkqcHJpdjsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0 IHNzaWZfYm1jX2N0eCAqdG9fc3NpZl9ibWMoc3RydWN0IGZpbGUgKmZpbGUpCit7CisJcmV0dXJu IGNvbnRhaW5lcl9vZihmaWxlLT5wcml2YXRlX2RhdGEsIHN0cnVjdCBzc2lmX2JtY19jdHgsIG1p c2NkZXYpOworfQorCitzdHJ1Y3Qgc3NpZl9ibWNfY3R4ICpzc2lmX2JtY19hbGxvYyhzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50LCBpbnQgc2l6ZW9mX3ByaXYpOworCisjZW5kaWYgLyogX19TU0lG X0JNQ19IX18gKi8KLS0gCjIuMjguMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK