Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp1087622rwl; Thu, 5 Jan 2023 08:30:50 -0800 (PST) X-Google-Smtp-Source: AMrXdXuvFyfQugNAFR+nwqNLs2WGuGOxVAXpvz5yZP1timfp4Th7voj5KVs3CTq2GATkxDA1UlKp X-Received: by 2002:a05:6a20:b29e:b0:ad:48b3:c5d1 with SMTP id ei30-20020a056a20b29e00b000ad48b3c5d1mr53936613pzb.47.1672936249909; Thu, 05 Jan 2023 08:30:49 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1672936249; cv=pass; d=google.com; s=arc-20160816; b=awO/TKg9Z7nD3LI603oG6BDVqzrDZ7nYw9j+C02L10+edyo4wcbzFjkN89B6lV2DV3 aLJ16J3UJgp7Xr8q4lSIHMZh/8Es2NpJrMyvmGNjQwWS6yq2MedVGJOHHy5V49ShTaOJ +yNmX6SmANc8Yp2Et9TdksYS9gwkkRDf1xIGvAB4rqzZfszalpCoLzQwaG0Tc1GEHavh DwPDtgsBh200Hy+HgtsDWZdTy+gnq1JBBEztTlou14fGzD8nrnGIy1EG/s0P4qzV3+xV soGXTXk3vV3S48L6I9eGNo6FgygsLF5NwbzBd+WW4TKMG9UeC7Orr0XTEsVFufYU2DNv 1eog== 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 :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_contentbits :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_actionid :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_siteid :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_name :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_method :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_setdate :msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_enabled:msip_labels :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=nD5zNgXKfTbnnKgMjoOGswSdqHl84jTuxGNNGsJBq2I=; b=qNyx4pCb/6q8Ay17Mv9D4U3/2ZK+8KSrqOz7oeLirqdWSTl1CYLU+jItkQ6AbADAdD 68OYgS+1lFITTkc/pJ2E9w59C879KKJpvq5Jkb4Ggsi1yEkMmZ9uWble2U5wxG8u9EGE 8C5oWU2+H1BZITMp9Or8yLf8JSuV9VPJBDxPsRfQewtIx7CAhzziQDhgVL+avuBLwie3 e6RXIvnw33p6+zewR1GKWecU6KYBY8xY2bB/84f3kl9WPG8WuLoos4wPDF0GjeWd/Bt5 jbsPYd/2rp7j04RaF0sZ+d1vY1P0Suk9Mv5FRkJnCYn3G27pDIB4lG7Vh+nGeSQrwtHQ XS8Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=DXwka3pc; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o6-20020a63e346000000b00478d39fcb3dsi39365757pgj.519.2023.01.05.08.30.43; Thu, 05 Jan 2023 08:30:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=DXwka3pc; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234773AbjAEQFQ (ORCPT + 55 others); Thu, 5 Jan 2023 11:05:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234993AbjAEQFC (ORCPT ); Thu, 5 Jan 2023 11:05:02 -0500 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2049.outbound.protection.outlook.com [40.107.94.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EFB2E1C912 for ; Thu, 5 Jan 2023 08:04:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bClHBQrY9XeIp4tRzmhAOeDl/5+0qqACLBAcwOl50M06dWMRY0QRKHRR9/mlYnbaQyVbrvMebKVr8kYiz3WRIwvMZAHRXeYY/t+YEH2yf1A+XmE0m0jwBMBHNBHbUSxNZ0C3100PHe2ppx7EiViLzmCU72nReZzvtu2K/VqZjNC3ceO2++0Pst8GKd39tJwAF/3VJyNWHDpZlFKQ+TaoAajhG72/cQSFkeTMazbGtaLGU15eRGEz0qpiIn/9UwzigPvtk10niQF4akr419wMZlspDZ9hC6QAwA5YKYawoyI8gnMa6ceJrdmUfREsDUrgwS03FsViUAm48/iZpkzJjg== 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=nD5zNgXKfTbnnKgMjoOGswSdqHl84jTuxGNNGsJBq2I=; b=iYHMseEkvpPri7ryT7eYn7bKd7PIsLo1GM85MHLx1Eo4hTPvyi8AdoJLiSgtwv/u7jZAFx/knG5lyVjmVqlCSDuiHci7cOAjtV/BEee9knXoRWkrq3bD8BGxp8QM/ylKUTQOR6DhRDmF3IVGN0Efr0+fh3t7sguvGweHnv6mkxLrz+tagBWeFc3M+3mHkgPMPdCbR8BfJPVRcA1AIIlfBAQZKFC85ufAnT5dOK7RgBV8iIF019QrsPdxun7tKQmF5ft4gcFHkH70RIefF0ODR7DI6myqSrp1xAkWIDepNREI8PNxfNFezbzdStrnrHdz1KbNCpNbnMmLwyVTuWsrQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nD5zNgXKfTbnnKgMjoOGswSdqHl84jTuxGNNGsJBq2I=; b=DXwka3pcdkUPgeE2CFt9lBmOktDmsKlgafKOEcFUvO3ytYCOlDMEyxaHycEivonVeaFLuaSdvG6Zw4yr4I3RjctGzC8h7SAiZV3mMsWnS2t20zWFMQPRS/GAZWb+L2JSusH7OPhbwCneY8rg3t2IX3JIXJuZvGeH7jVyU5rBjQc= Received: from MN0PR12MB6101.namprd12.prod.outlook.com (2603:10b6:208:3cb::10) by BN9PR12MB5130.namprd12.prod.outlook.com (2603:10b6:408:137::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 16:04:49 +0000 Received: from MN0PR12MB6101.namprd12.prod.outlook.com ([fe80::ff3c:2d37:75f3:442a]) by MN0PR12MB6101.namprd12.prod.outlook.com ([fe80::ff3c:2d37:75f3:442a%6]) with mapi id 15.20.5944.019; Thu, 5 Jan 2023 16:04:49 +0000 From: "Limonciello, Mario" To: "Lazar, Lijo" , "Deucher, Alexander" , "linux-kernel@vger.kernel.org" CC: Javier Martinez Canillas , Carlos Soriano Sanchez , "amd-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , David Airlie , Daniel Vetter , "Koenig, Christian" , "Pan, Xinhui" Subject: RE: [PATCH v6 20/45] drm/amd: Parse both v1 and v2 TA microcode headers using same function Thread-Topic: [PATCH v6 20/45] drm/amd: Parse both v1 and v2 TA microcode headers using same function Thread-Index: AQHZILgLGQxp2nJuKUSLwGd2gDAOCK6P0A4AgAAs9EA= Date: Thu, 5 Jan 2023 16:04:49 +0000 Message-ID: References: <20230105034327.1439-1-mario.limonciello@amd.com> <20230105034327.1439-21-mario.limonciello@amd.com> <142113d4-b958-c55e-eacd-04ff4ef3243f@amd.com> In-Reply-To: <142113d4-b958-c55e-eacd-04ff4ef3243f@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-01-05T16:04:48Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=027fd8d7-88a8-434a-8b96-f7adc21f6b18; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_enabled: true msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_setdate: 2023-01-05T16:04:48Z msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_method: Standard msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_name: General msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_actionid: f886d27b-6249-4142-9689-16ebd2fe11ae msip_label_4342314e-0df4-4b58-84bf-38bed6170a0f_contentbits: 0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN0PR12MB6101:EE_|BN9PR12MB5130:EE_ x-ms-office365-filtering-correlation-id: 7fd2c312-d245-4fb3-eade-08daef3692d6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bqqfyXzaGFkZs8SFL6MR6WO2D3BPJiyecWENi6Zo8DCpUfGLF/B7kxFf0ksLprUUZkEIdIzjg84dgfbTqcGXVo4qBPtIIE4LL4fTDiDFFafaLHFDTJ30nA0MmVuRyvb+4jUIW2eXS6tSdasKo2QWD4PeAW7I1pWqneTLL9ujo2Y9d6VfKuEfICYhOxrMi7rc5d/GFFaVS8EbNcBeKcqXbzc+omaNtUdJfLkJBlwj/DyjugEzr0W2/kgtrMGudjd27MxKHeDEiQyw9FV3xEziQMyh0tHVYnHUP+9JvpegEy/72TfSbo9YjPYTJHlCMadiaJlEEL90lnm8Pu06ItP4efzUGljSrB8YpPfuCNoQQBAqf1pviD5vRdxjrNsdMhTFBcRQ6bl4DcUDGiJIKjKRfuBPo/DgJQq0RtcJiX74eV6hXMaYKGF+yVxaYpVbuc1EjbjQdoYbYS2HPYRaKGiHorM2PfArBI1H8vuT8f9Hx3iR0G4Vn4yzi/s6C4nnGYeIlnf9H6qMBzv5KFOvdx4/88m4E8ankmseu1rxF0+cOCPGfpx4ddgOInqFOv3Q/Vv2Kc/HXVjuTjgAwlNJSrsRVmYzSnFWRXJqZHmmTQhbqaEQJjRVOuWxBju8O5juxA3pfD/z0rzUVMWwfpuJp8dQsV3sduJnCgQcEVlOcnc9cBz1okBqPD+oi/HGrjFoSkU/cONdwxWI4YwpeOwbPhdYrA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR12MB6101.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(396003)(376002)(136003)(346002)(451199015)(66446008)(5660300002)(30864003)(8936002)(41300700001)(8676002)(4326008)(2906002)(66556008)(76116006)(64756008)(66946007)(316002)(110136005)(54906003)(71200400001)(66476007)(478600001)(52536014)(33656002)(186003)(26005)(9686003)(55016003)(7696005)(6506007)(83380400001)(53546011)(38100700002)(122000001)(86362001)(38070700005)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bnZ5VmxXc0lBdU1qdTF1L2dhb0hpd05zai9kK1J3VVRqNXh2K1RQWi9RNkNp?= =?utf-8?B?U2c4b28yMzBuMnZ3M3dlOTk4Q3hJQ0tMNlVKNkZMbFdSWndDZmxxNEtIY0I0?= =?utf-8?B?c1oxM3BYOE55TFN4dlhTeURsaHBMYTRiSzFUSmVjcjRpZmlsQnloRHhyUXZ1?= =?utf-8?B?SVhxTWtlSmlQRy8yN21BZ29BbTQwQnJERXNqRGhXNGdoendWMkhuZzc1Ym1Q?= =?utf-8?B?TnFrWkdBL3pSQWVLRk05UllCZWo5UmVBOC9XdlRRcTNsaGRrcDJuT2RHb0l4?= =?utf-8?B?bzJHY0M0UGxKbHUvVWRRaUd0cUZ3d1UrNC9VQSt6ellNY2xmSnpTUEtMbDgv?= =?utf-8?B?K3RrRjZoY0FkcFVhczVxd3FaNVdKelZhYVQrRm5TdTZucEtTUFFxeWEwN1R3?= =?utf-8?B?WEV3MmwwQlpsajFjN1hRc0xSZjRFVmpyakYwTUVPZXFHRU04SXFEUldtOFRs?= =?utf-8?B?RWNWdk1LSC95QUFEWUxRdzRYdWdpY3ZnR3g5V1o5b2FkR2FSWnAxNzBPdzgy?= =?utf-8?B?MlBEUXAweVpsRWgyODMvZzEwVFl0MUltaTFwQzFlRkZMaFJtbmo4K1NxWlY4?= =?utf-8?B?cFIyL0JNWHhPOUcvZGx6R1pNdFBFSGRVWk15aTgyTmp2VDhTeWhlcjdiK0xv?= =?utf-8?B?QXAwM2RIWXBia1hRNXJiSlBWeG84TWdtZWJod1ZqMDhjVTZrOWczM3JYUnF6?= =?utf-8?B?T3BxTmwyUVpkK1BEZjBJd0xDWkE5YTFzKzVsb2o5ZkJlRXpOZkJuZ3ptZUpt?= =?utf-8?B?N3FjSGpDUUJqMEpMcTZ3a2hJN1hiSmx5ZUtmVnNvTG5ybWlnQkM5MkhMZnk5?= =?utf-8?B?cUM5TldQMFE1dUJnQ2xuL1liVm9JTE1HVFluWk9pWUxUc2JsL0lSRjZhR25O?= =?utf-8?B?dFAvdFlOOWtCVlFBTk1ZUmRNQm9hVWlXbWFMeTJicjNZWSs4VFF5YThDMW0v?= =?utf-8?B?bmhUOXk5WElvVEViR2NVWnpzWVFvVk9idUlHK0hCWk9FUW54QytLWjg3OHlH?= =?utf-8?B?OFpYNWJmWUQ0LytvbldRZ29SMEtzS0tmUGpUQzZibmZVR2RIZ1gxcmxLUGU0?= =?utf-8?B?cGxHNFJtVENHMUlhQ25PdndLRmtMTW5XTHNLaWhkSnZreGpoV0gwc3NGdm41?= =?utf-8?B?dVR2SXhXRkNlN09DS3ZGTURldjhWVDVSSGR4STRYZExlMi9qbC9HMkF6OW1k?= =?utf-8?B?OER0Wm1HalNsblE1UUtCZU8zTEhmUG1SRFpSZzZJMWhLWkxPby91emRGUnRl?= =?utf-8?B?TDN4NkR0T1FTR2pJNklZSVZwcDZOSGpTVnFLTGpBRjBOaCtMQitaZVNMcmdO?= =?utf-8?B?NDJubEUyUHhLMGxjZUJlNzFZS01XZDl2UE9EbmQ1eU10ZXdRdmNpK05wV3E2?= =?utf-8?B?YlVua1ZFeTlOUW0vbDN0V0VvT0xlV1ZEQTlSQnBFZHB1Uy9odWJCTm9NemNn?= =?utf-8?B?STVwK0RVU1F6QnRXbmVCcml0ZGVlSXNZY2FMZnAxdUlJZmk1anJOaWpRc0NY?= =?utf-8?B?ZkF3ZkZRR3J1Tzg4c215ZTFHVXJTOHZMemo1T0RJU0x4WnlaWkxMWUpISWdm?= =?utf-8?B?Q2lqR01YYzdSalk0ZUpBUERnNkFEaXpieXZCVHZIanhFMEdQNkpQdFgwTWtZ?= =?utf-8?B?MUVvUHNNVUxzNjl4d3hGQ2RBVFVET1RWK01nWk9JdVJkQ2FzTU44UjAwdHF5?= =?utf-8?B?NzFNU0QxNGtvWlRvN0trNzNKYkxpVE4yODBtYjk2aEIwSWZ3a0VjcHBzdHFa?= =?utf-8?B?ZFBHMzI5bFFDelVWcWgvTml4eHdkeEtrYW1nSlo4TnVjR3pITFkxa2pya0J2?= =?utf-8?B?bjhtZVVQb0pGenl3SW9hTzhmMy9MTXVRWm1XSEZLOStoOFZTSldNK3BDdGRo?= =?utf-8?B?RWE0Qk5BRXVwOWFnSC9tQ2QvdlVwVkFFVkxsdXIwb3hxWHpvY3lCMzMvcDJR?= =?utf-8?B?VWVZS0t4ZW5mTlhrUmpDVFBiclhTSExocFVIY2lpRS8yOGMyV2ROc0M3WXNU?= =?utf-8?B?eGtYYVA5TlVsbmllQkFtRlFGV2pnTFZjZ0pJSDlJaXMzMnU5bWZZVVdIeEZH?= =?utf-8?B?a204bDFUVVVFRGNrSWxHRWwyYmk2SnRXSFNnT1pCb09yY05LOE9lMWpDaTBK?= =?utf-8?Q?aGh0=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR12MB6101.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7fd2c312-d245-4fb3-eade-08daef3692d6 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2023 16:04:49.6864 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: DbXveW2oAmNdTD8fD6i75Vtu+/AKVmcp2ynfG/35uU0EPGe8KcwTJfOiqylDdcwHhktNU+b9pE8Ua15rJDMB+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5130 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IExhemFyLCBMaWpvIDxMaWpvLkxhemFyQGFtZC5jb20+DQo+ IFNlbnQ6IFRodXJzZGF5LCBKYW51YXJ5IDUsIDIwMjMgMDc6MjINCj4gVG86IExpbW9uY2llbGxv LCBNYXJpbyA8TWFyaW8uTGltb25jaWVsbG9AYW1kLmNvbT47IERldWNoZXIsIEFsZXhhbmRlcg0K PiA8QWxleGFuZGVyLkRldWNoZXJAYW1kLmNvbT47IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v cmcNCj4gQ2M6IEphdmllciBNYXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRoYXQuY29tPjsg Q2FybG9zIFNvcmlhbm8gU2FuY2hleg0KPiA8Y3Nvcmlhbm9AcmVkaGF0LmNvbT47IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktDQo+IGRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZzsgRGF2aWQgQWlybGllIDxhaXJsaWVkQGdtYWlsLmNvbT47IERhbmllbCBWZXR0ZXINCj4gPGRh bmllbEBmZndsbC5jaD47IEtvZW5pZywgQ2hyaXN0aWFuIDxDaHJpc3RpYW4uS29lbmlnQGFtZC5j b20+OyBQYW4sDQo+IFhpbmh1aSA8WGluaHVpLlBhbkBhbWQuY29tPg0KPiBTdWJqZWN0OiBSZTog W1BBVENIIHY2IDIwLzQ1XSBkcm0vYW1kOiBQYXJzZSBib3RoIHYxIGFuZCB2MiBUQSBtaWNyb2Nv ZGUNCj4gaGVhZGVycyB1c2luZyBzYW1lIGZ1bmN0aW9uDQo+IA0KPiANCj4gDQo+IE9uIDEvNS8y MDIzIDk6MTIgQU0sIE1hcmlvIExpbW9uY2llbGxvIHdyb3RlOg0KPiA+IFNldmVyYWwgSVAgdmVy c2lvbnMgZHVwbGljYXRlIGNvZGUgYW5kIGNhbid0IHVzZSB0aGUgY29tbW9uIGhlbHBlcnMuDQo+ ID4gTW92ZSB0aGlzIGNvZGUgaW50byBhIHNpbmdsZSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBoZWxw ZXJzIGNhbiBiZSB1c2VkLg0KPiA+DQo+ID4gUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxl eGFuZGVyLmRldWNoZXJAYW1kLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJpbyBMaW1vbmNp ZWxsbyA8bWFyaW8ubGltb25jaWVsbG9AYW1kLmNvbT4NCj4gPiAtLS0NCj4gPiB2NS0+djY6DQo+ ID4gICAqIFJlYmFzZSBvbiBlYXJsaWVyIHBhdGNoZXMNCj4gPiAtLS0NCj4gPiAgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wc3AuYyB8IDEyMA0KPiArKysrKysrKysrKysrKysr KystLS0tLS0NCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5jICB8 ICA2NCArLS0tLS0tLS0tLS0tDQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3Bf djExXzAuYyAgfCAgNzcgKystLS0tLS0tLS0tLS0tDQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9wc3BfdjEyXzAuYyAgfCAgNjIgKy0tLS0tLS0tLS0tDQo+ID4gICA0IGZpbGVzIGNo YW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCAyMTQgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jDQo+IGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BzcC5jDQo+ID4gaW5kZXggN2EyZmM5MjA3 MzliLi5kOTcxZTM3ODVlYWYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3BzcC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3BzcC5jDQo+ID4gQEAgLTMyNzIsNDEgKzMyNzIsNzUgQEAgc3RhdGljIGludCBwYXJz ZV90YV9iaW5fZGVzY3JpcHRvcihzdHJ1Y3QNCj4gcHNwX2NvbnRleHQgKnBzcCwNCj4gPiAgIAly ZXR1cm4gMDsNCj4gPiAgIH0NCj4gPg0KPiA+IC1pbnQgcHNwX2luaXRfdGFfbWljcm9jb2RlKHN0 cnVjdCBwc3BfY29udGV4dCAqcHNwLA0KPiA+IC0JCQkgIGNvbnN0IGNoYXIgKmNoaXBfbmFtZSkN Cj4gPiArc3RhdGljIGludCBwYXJzZV90YV92MV9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0 ICpwc3ApDQo+ID4gICB7DQo+ID4gKwljb25zdCBzdHJ1Y3QgdGFfZmlybXdhcmVfaGVhZGVyX3Yx XzAgKnRhX2hkcjsNCj4gPiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHBzcC0+YWRl djsNCj4gPiAtCWNoYXIgZndfbmFtZVtQU1BfRldfTkFNRV9MRU5dOw0KPiA+IC0JY29uc3Qgc3Ry dWN0IHRhX2Zpcm13YXJlX2hlYWRlcl92Ml8wICp0YV9oZHI7DQo+ID4gLQlpbnQgZXJyID0gMDsN Cj4gPiAtCWludCB0YV9pbmRleCA9IDA7DQo+ID4NCj4gPiAtCWlmICghY2hpcF9uYW1lKSB7DQo+ ID4gLQkJZGV2X2VycihhZGV2LT5kZXYsICJpbnZhbGlkIGNoaXAgbmFtZSBmb3IgdGEgbWljcm9j b2RlXG4iKTsNCj4gPiArCXRhX2hkciA9IChjb25zdCBzdHJ1Y3QgdGFfZmlybXdhcmVfaGVhZGVy X3YxXzAgKikNCj4gPiArCQkJIGFkZXYtPnBzcC50YV9mdy0+ZGF0YTsNCj4gPiArDQo+ID4gKwlp ZiAobGUxNl90b19jcHUodGFfaGRyLT5oZWFkZXIuaGVhZGVyX3ZlcnNpb25fbWFqb3IpICE9IDEp DQo+ID4gICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWFkZXYtPnBzcC54Z21pX2Nv bnRleHQuY29udGV4dC5iaW5fZGVzYy5md192ZXJzaW9uID0NCj4gPiArCQlsZTMyX3RvX2NwdSh0 YV9oZHItPnhnbWkuZndfdmVyc2lvbik7DQo+ID4gKwlhZGV2LT5wc3AueGdtaV9jb250ZXh0LmNv bnRleHQuYmluX2Rlc2Muc2l6ZV9ieXRlcyA9DQo+ID4gKwkJbGUzMl90b19jcHUodGFfaGRyLT54 Z21pLnNpemVfYnl0ZXMpOw0KPiA+ICsJYWRldi0+cHNwLnhnbWlfY29udGV4dC5jb250ZXh0LmJp bl9kZXNjLnN0YXJ0X2FkZHIgPQ0KPiA+ICsJCSh1aW50OF90ICopdGFfaGRyICsNCj4gPiArCQls ZTMyX3RvX2NwdSh0YV9oZHItPmhlYWRlci51Y29kZV9hcnJheV9vZmZzZXRfYnl0ZXMpOw0KPiA+ ICsJYWRldi0+cHNwLnRhX2Z3X3ZlcnNpb24gPSBsZTMyX3RvX2NwdSh0YV9oZHItDQo+ID5oZWFk ZXIudWNvZGVfdmVyc2lvbik7DQo+ID4gKwlhZGV2LT5wc3AucmFzX2NvbnRleHQuY29udGV4dC5i aW5fZGVzYy5md192ZXJzaW9uID0NCj4gPiArCQlsZTMyX3RvX2NwdSh0YV9oZHItPnJhcy5md192 ZXJzaW9uKTsNCj4gPiArCWFkZXYtPnBzcC5yYXNfY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnNp emVfYnl0ZXMgPQ0KPiA+ICsJCWxlMzJfdG9fY3B1KHRhX2hkci0+cmFzLnNpemVfYnl0ZXMpOw0K PiA+ICsJYWRldi0+cHNwLnJhc19jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciA9 DQo+ID4gKwkJKHVpbnQ4X3QgKilhZGV2LQ0KPiA+cHNwLnhnbWlfY29udGV4dC5jb250ZXh0LmJp bl9kZXNjLnN0YXJ0X2FkZHIgKw0KPiA+ICsJCWxlMzJfdG9fY3B1KHRhX2hkci0+cmFzLm9mZnNl dF9ieXRlcyk7DQo+ID4gKwlhZGV2LT5wc3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Mu ZndfdmVyc2lvbiA9DQo+ID4gKwkJbGUzMl90b19jcHUodGFfaGRyLT5oZGNwLmZ3X3ZlcnNpb24p Ow0KPiA+ICsJYWRldi0+cHNwLmhkY3BfY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnNpemVfYnl0 ZXMgPQ0KPiA+ICsJCWxlMzJfdG9fY3B1KHRhX2hkci0+aGRjcC5zaXplX2J5dGVzKTsNCj4gPiAr CWFkZXYtPnBzcC5oZGNwX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zdGFydF9hZGRyID0NCj4g PiArCQkodWludDhfdCAqKXRhX2hkciArDQo+ID4gKwkJbGUzMl90b19jcHUodGFfaGRyLT5oZWFk ZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKTsNCj4gPiArCWFkZXYtPnBzcC50YV9md192ZXJz aW9uID0gbGUzMl90b19jcHUodGFfaGRyLQ0KPiA+aGVhZGVyLnVjb2RlX3ZlcnNpb24pOw0KPiA+ ICsJYWRldi0+cHNwLmR0bV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2MuZndfdmVyc2lvbiA9DQo+ ID4gKwkJbGUzMl90b19jcHUodGFfaGRyLT5kdG0uZndfdmVyc2lvbik7DQo+ID4gKwlhZGV2LT5w c3AuZHRtX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zaXplX2J5dGVzID0NCj4gPiArCQlsZTMy X3RvX2NwdSh0YV9oZHItPmR0bS5zaXplX2J5dGVzKTsNCj4gPiArCWFkZXYtPnBzcC5kdG1fY29u dGV4dC5jb250ZXh0LmJpbl9kZXNjLnN0YXJ0X2FkZHIgPQ0KPiA+ICsJCSh1aW50OF90ICopYWRl di0NCj4gPnBzcC5oZGNwX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zdGFydF9hZGRyICsNCj4g PiArCQlsZTMyX3RvX2NwdSh0YV9oZHItPmR0bS5vZmZzZXRfYnl0ZXMpOw0KPiA+ICsJaWYgKGFk ZXYtPmFwdV9mbGFncyAmIEFNRF9BUFVfSVNfUkVOT0lSKSB7DQo+ID4gKwkJYWRldi0NCj4gPnBz cC5zZWN1cmVkaXNwbGF5X2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5md192ZXJzaW9uID0NCj4g PiArCQkJbGUzMl90b19jcHUodGFfaGRyLT5zZWN1cmVkaXNwbGF5LmZ3X3ZlcnNpb24pOw0KPiA+ ICsJCWFkZXYtDQo+ID5wc3Auc2VjdXJlZGlzcGxheV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Mu c2l6ZV9ieXRlcyA9DQo+ID4gKwkJCWxlMzJfdG9fY3B1KHRhX2hkci0+c2VjdXJlZGlzcGxheS5z aXplX2J5dGVzKTsNCj4gPiArCQlhZGV2LQ0KPiA+cHNwLnNlY3VyZWRpc3BsYXlfY29udGV4dC5j b250ZXh0LmJpbl9kZXNjLnN0YXJ0X2FkZHIgPQ0KPiA+ICsJCQkodWludDhfdCAqKWFkZXYtDQo+ ID5wc3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciArDQo+ID4gKwkJ CWxlMzJfdG9fY3B1KHRhX2hkci0+c2VjdXJlZGlzcGxheS5vZmZzZXRfYnl0ZXMpOw0KPiA+ICAg CX0NCj4gDQo+IHBzcF92MTBfMF9pbml0X21pY3JvY29kZSB1c2VkIHRvIGdldCBzZWN1cmVkaXNw bGF5X2NvbnRleHQNCj4gdW5jb25kaXRpb25hbGx5IGFuZCBub3cgdGhpcyBpcyByZXN0cmljdGVk IHRvIFJFTk9JUiBmb2xsb3dpbmcgdGhlIGxvZ2ljDQo+IGluIHBzcCB2MTIuIA0KDQpHb29kIGNh dGNoLCB0aGFua3MuICBJJ2xsIGZpeCB0aGF0Lg0KDQo+IEJldHRlciBpcyB0byBmZXRjaCBhbGwg RlcgZGV0YWlscyB1bmNvbmRpdGlvbmFsbHkgYW5kIG1ha2UNCj4gdGhlIHNpemVfYnl0ZXMgdG8g MCAoanVzdCB0byBiZSBzdXJlKSBpbiBzcGVjaWZpYyBQU1AgdmVyc2lvbnMgdG8NCj4gcHJldmVu dCB0aGVpciBsb2FkLg0KDQpJIGRvIGhhdmUgdG8gd29uZGVyIGlmIHRoaXMgd2FzIGp1c3QgYW4g b3ZlcnNpZ2h0IG9yIGl0J3MgaW50ZW50aW9uYWw/DQoNCkZvciBub3cgSSdsbCByZXR1cm4gaXQg dG8ganVzdCBjaGVjayBpbiBSZW5vaXIgaW4gcHNwLXYxMiBjb2RlIHRob3VnaC4NCldlIGNhbiBy ZW1vdmUgdGhhdCBiaXQgbGF0ZXIgaWYgaXQgd2FzIGp1c3QgYW4gb3ZlcnNpZ2h0Lg0KDQo+IA0K PiBUaGFua3MsDQo+IExpam8NCj4gDQo+ID4NCj4gPiAtCXNucHJpbnRmKGZ3X25hbWUsIHNpemVv Zihmd19uYW1lKSwgImFtZGdwdS8lc190YS5iaW4iLA0KPiBjaGlwX25hbWUpOw0KPiA+IC0JZXJy ID0gcmVxdWVzdF9maXJtd2FyZSgmYWRldi0+cHNwLnRhX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYp Ow0KPiA+IC0JaWYgKGVycikNCj4gPiAtCQlnb3RvIG91dDsNCj4gPiArCXJldHVybiAwOw0KPiA+ ICt9DQo+ID4NCj4gPiAtCWVyciA9IGFtZGdwdV91Y29kZV92YWxpZGF0ZShhZGV2LT5wc3AudGFf ZncpOw0KPiA+IC0JaWYgKGVycikNCj4gPiAtCQlnb3RvIG91dDsNCj4gPiArc3RhdGljIGludCBw YXJzZV90YV92Ml9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0ICpwc3ApDQo+ID4gK3sNCj4g PiArCWNvbnN0IHN0cnVjdCB0YV9maXJtd2FyZV9oZWFkZXJfdjJfMCAqdGFfaGRyOw0KPiA+ICsJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBwc3AtPmFkZXY7DQo+ID4gKwlpbnQgZXJyID0g MDsNCj4gPiArCWludCB0YV9pbmRleCA9IDA7DQo+ID4NCj4gPiAgIAl0YV9oZHIgPSAoY29uc3Qg c3RydWN0IHRhX2Zpcm13YXJlX2hlYWRlcl92Ml8wICopYWRldi0NCj4gPnBzcC50YV9mdy0+ZGF0 YTsNCj4gPg0KPiA+IC0JaWYgKGxlMTZfdG9fY3B1KHRhX2hkci0+aGVhZGVyLmhlYWRlcl92ZXJz aW9uX21ham9yKSAhPSAyKSB7DQo+ID4gLQkJZGV2X2VycihhZGV2LT5kZXYsICJ1bnN1cHBvcnRl ZCBUQSBoZWFkZXIgdmVyc2lvblxuIik7DQo+ID4gLQkJZXJyID0gLUVJTlZBTDsNCj4gPiAtCQln b3RvIG91dDsNCj4gPiAtCX0NCj4gPiArCWlmIChsZTE2X3RvX2NwdSh0YV9oZHItPmhlYWRlci5o ZWFkZXJfdmVyc2lvbl9tYWpvcikgIT0gMikNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPg0K PiA+ICAgCWlmIChsZTMyX3RvX2NwdSh0YV9oZHItPnRhX2Z3X2Jpbl9jb3VudCkgPj0NCj4gVUNP REVfTUFYX1BTUF9QQUNLQUdJTkcpIHsNCj4gPiAgIAkJZGV2X2VycihhZGV2LT5kZXYsICJwYWNr ZWQgVEEgY291bnQgZXhjZWVkcyBtYXhpbXVtDQo+IGxpbWl0XG4iKTsNCj4gPiAtCQllcnIgPSAt RUlOVkFMOw0KPiA+IC0JCWdvdG8gb3V0Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICAg CX0NCj4gPg0KPiA+ICAgCWZvciAodGFfaW5kZXggPSAwOyB0YV9pbmRleCA8IGxlMzJfdG9fY3B1 KHRhX2hkci0NCj4gPnRhX2Z3X2Jpbl9jb3VudCk7IHRhX2luZGV4KyspIHsNCj4gPiBAQCAtMzMx NCwxNCArMzM0OCw0NiBAQCBpbnQgcHNwX2luaXRfdGFfbWljcm9jb2RlKHN0cnVjdCBwc3BfY29u dGV4dA0KPiAqcHNwLA0KPiA+ICAgCQkJCQkgICAgICAmdGFfaGRyLT50YV9md19iaW5bdGFfaW5k ZXhdLA0KPiA+ICAgCQkJCQkgICAgICB0YV9oZHIpOw0KPiA+ICAgCQlpZiAoZXJyKQ0KPiA+IC0J CQlnb3RvIG91dDsNCj4gPiArCQkJcmV0dXJuIGVycjsNCj4gPiAgIAl9DQo+ID4NCj4gPiAgIAly ZXR1cm4gMDsNCj4gPiAtb3V0Og0KPiA+IC0JZGV2X2VycihhZGV2LT5kZXYsICJmYWlsIHRvIGlu aXRpYWxpemUgdGEgbWljcm9jb2RlXG4iKTsNCj4gPiAtCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+ cHNwLnRhX2Z3KTsNCj4gPiAtCWFkZXYtPnBzcC50YV9mdyA9IE5VTEw7DQo+ID4gK30NCj4gPiAr DQo+ID4gK2ludCBwc3BfaW5pdF90YV9taWNyb2NvZGUoc3RydWN0IHBzcF9jb250ZXh0ICpwc3As IGNvbnN0IGNoYXINCj4gKmNoaXBfbmFtZSkNCj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IGNv bW1vbl9maXJtd2FyZV9oZWFkZXIgKmhkcjsNCj4gPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gcHNwLT5hZGV2Ow0KPiA+ICsJY2hhciBmd19uYW1lW1BTUF9GV19OQU1FX0xFTl07DQo+ ID4gKwlpbnQgZXJyOw0KPiA+ICsNCj4gPiArCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19u YW1lKSwgImFtZGdwdS8lc190YS5iaW4iLA0KPiBjaGlwX25hbWUpOw0KPiA+ICsJZXJyID0gcmVx dWVzdF9maXJtd2FyZSgmYWRldi0+cHNwLnRhX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOw0KPiA+ ICsJaWYgKGVycikNCj4gPiArCQlyZXR1cm4gZXJyOw0KPiA+ICsJZXJyID0gYW1kZ3B1X3Vjb2Rl X3ZhbGlkYXRlKGFkZXYtPnBzcC50YV9mdyk7DQo+ID4gKwlpZiAoZXJyKQ0KPiA+ICsJCXJldHVy biBlcnI7DQo+ID4gKw0KPiA+ICsJaGRyID0gKGNvbnN0IHN0cnVjdCBjb21tb25fZmlybXdhcmVf aGVhZGVyICopYWRldi0+cHNwLnRhX2Z3LQ0KPiA+ZGF0YTsNCj4gPiArCXN3aXRjaCAobGUxNl90 b19jcHUoaGRyLT5oZWFkZXJfdmVyc2lvbl9tYWpvcikpIHsNCj4gPiArCWNhc2UgMToNCj4gPiAr CQllcnIgPSBwYXJzZV90YV92MV9taWNyb2NvZGUocHNwKTsNCj4gPiArCQlicmVhazsNCj4gPiAr CWNhc2UgMjoNCj4gPiArCQllcnIgPSBwYXJzZV90YV92Ml9taWNyb2NvZGUocHNwKTsNCj4gPiAr CQlicmVhazsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJZGV2X2VycihhZGV2LT5kZXYsICJ1bnN1 cHBvcnRlZCBUQSBoZWFkZXIgdmVyc2lvblxuIik7DQo+ID4gKwkJZXJyID0gLUVJTlZBTDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlpZiAoZXJyKSB7DQo+ID4gKwkJZGV2X2VycihhZGV2LT5kZXYs ICJmYWlsIHRvIGluaXRpYWxpemUgdGEgbWljcm9jb2RlXG4iKTsNCj4gPiArCQlyZWxlYXNlX2Zp cm13YXJlKGFkZXYtPnBzcC50YV9mdyk7DQo+ID4gKwkJYWRldi0+cHNwLnRhX2Z3ID0gTlVMTDsN Cj4gPiArCX0NCj4gPiArDQo+ID4gICAJcmV0dXJuIGVycjsNCj4gPiAgIH0NCj4gPg0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEwXzAuYw0KPiBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3BzcF92MTBfMC5jDQo+ID4gaW5kZXggOWRlNDZmYThm NDZjLi5mMTRmY2ZiOWM0MjUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvcHNwX3YxMF8wLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9w c3BfdjEwXzAuYw0KPiA+IEBAIC00OCw5ICs0OCw4IEBAIHN0YXRpYyBpbnQgcHNwX3YxMF8wX2lu aXRfbWljcm9jb2RlKHN0cnVjdA0KPiBwc3BfY29udGV4dCAqcHNwKQ0KPiA+ICAgew0KPiA+ICAg CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcHNwLT5hZGV2Ow0KPiA+ICAgCWNvbnN0IGNo YXIgKmNoaXBfbmFtZTsNCj4gPiAtCWNoYXIgZndfbmFtZVszMF07DQo+ID4gKwljaGFyIHVjb2Rl X3ByZWZpeFszMF07DQo+ID4gICAJaW50IGVyciA9IDA7DQo+ID4gLQljb25zdCBzdHJ1Y3QgdGFf ZmlybXdhcmVfaGVhZGVyX3YxXzAgKnRhX2hkcjsNCj4gPiAgIAlEUk1fREVCVUcoIlxuIik7DQo+ ID4NCj4gPiAgIAlzd2l0Y2ggKGFkZXYtPmFzaWNfdHlwZSkgew0KPiA+IEBAIC02NCw2NiArNjMs MTMgQEAgc3RhdGljIGludCBwc3BfdjEwXzBfaW5pdF9taWNyb2NvZGUoc3RydWN0DQo+IHBzcF9j b250ZXh0ICpwc3ApDQo+ID4gICAJCWJyZWFrOw0KPiA+ICAgCWRlZmF1bHQ6IEJVRygpOw0KPiA+ ICAgCX0NCj4gPiArCWFtZGdwdV91Y29kZV9pcF92ZXJzaW9uX2RlY29kZShhZGV2LCBNUDBfSFdJ UCwNCj4gdWNvZGVfcHJlZml4LCBzaXplb2YodWNvZGVfcHJlZml4KSk7DQo+ID4NCj4gPiAtCWVy ciA9IHBzcF9pbml0X2FzZF9taWNyb2NvZGUocHNwLCBjaGlwX25hbWUpOw0KPiA+ICsJZXJyID0g cHNwX2luaXRfYXNkX21pY3JvY29kZShwc3AsIHVjb2RlX3ByZWZpeCk7DQo+ID4gICAJaWYgKGVy cikNCj4gPiAtCQlnb3RvIG91dDsNCj4gPiAtDQo+ID4gLQlzbnByaW50Zihmd19uYW1lLCBzaXpl b2YoZndfbmFtZSksICJhbWRncHUvJXNfdGEuYmluIiwNCj4gY2hpcF9uYW1lKTsNCj4gPiAtCWVy ciA9IHJlcXVlc3RfZmlybXdhcmUoJmFkZXYtPnBzcC50YV9mdywgZndfbmFtZSwgYWRldi0+ZGV2 KTsNCj4gPiAtCWlmIChlcnIpIHsNCj4gPiAtCQlyZWxlYXNlX2Zpcm13YXJlKGFkZXYtPnBzcC50 YV9mdyk7DQo+ID4gLQkJYWRldi0+cHNwLnRhX2Z3ID0gTlVMTDsNCj4gPiAtCQlkZXZfaW5mbyhh ZGV2LT5kZXYsDQo+ID4gLQkJCSAicHNwIHYxMC4wOiBGYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSBc IiVzXCJcbiIsDQo+ID4gLQkJCSBmd19uYW1lKTsNCj4gPiAtCX0gZWxzZSB7DQo+ID4gLQkJZXJy ID0gYW1kZ3B1X3Vjb2RlX3ZhbGlkYXRlKGFkZXYtPnBzcC50YV9mdyk7DQo+ID4gLQkJaWYgKGVy cikNCj4gPiAtCQkJZ290byBvdXQyOw0KPiA+IC0NCj4gPiAtCQl0YV9oZHIgPSAoY29uc3Qgc3Ry dWN0IHRhX2Zpcm13YXJlX2hlYWRlcl92MV8wICopDQo+ID4gLQkJCQkgYWRldi0+cHNwLnRhX2Z3 LT5kYXRhOw0KPiA+IC0JCWFkZXYtPnBzcC5oZGNwX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5m d192ZXJzaW9uID0NCj4gPiAtCQkJbGUzMl90b19jcHUodGFfaGRyLT5oZGNwLmZ3X3ZlcnNpb24p Ow0KPiA+IC0JCWFkZXYtPnBzcC5oZGNwX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zaXplX2J5 dGVzID0NCj4gPiAtCQkJbGUzMl90b19jcHUodGFfaGRyLT5oZGNwLnNpemVfYnl0ZXMpOw0KPiA+ IC0JCWFkZXYtPnBzcC5oZGNwX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zdGFydF9hZGRyID0N Cj4gPiAtCQkJKHVpbnQ4X3QgKil0YV9oZHIgKw0KPiA+IC0JCQlsZTMyX3RvX2NwdSh0YV9oZHIt DQo+ID5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKTsNCj4gPiAtDQo+ID4gLQkJYWRl di0+cHNwLmR0bV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2MuZndfdmVyc2lvbiA9DQo+ID4gLQkJ CWxlMzJfdG9fY3B1KHRhX2hkci0+ZHRtLmZ3X3ZlcnNpb24pOw0KPiA+IC0JCWFkZXYtPnBzcC5k dG1fY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnNpemVfYnl0ZXMgPQ0KPiA+IC0JCQlsZTMyX3Rv X2NwdSh0YV9oZHItPmR0bS5zaXplX2J5dGVzKTsNCj4gPiAtCQlhZGV2LT5wc3AuZHRtX2NvbnRl eHQuY29udGV4dC5iaW5fZGVzYy5zdGFydF9hZGRyID0NCj4gPiAtCQkJKHVpbnQ4X3QgKilhZGV2 LQ0KPiA+cHNwLmhkY3BfY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnN0YXJ0X2FkZHIgKw0KPiA+ IC0JCQlsZTMyX3RvX2NwdSh0YV9oZHItPmR0bS5vZmZzZXRfYnl0ZXMpOw0KPiA+IC0NCj4gPiAt CQlhZGV2LQ0KPiA+cHNwLnNlY3VyZWRpc3BsYXlfY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLmZ3 X3ZlcnNpb24gPQ0KPiA+IC0JCQlsZTMyX3RvX2NwdSh0YV9oZHItPnNlY3VyZWRpc3BsYXkuZndf dmVyc2lvbik7DQo+ID4gLQkJYWRldi0NCj4gPnBzcC5zZWN1cmVkaXNwbGF5X2NvbnRleHQuY29u dGV4dC5iaW5fZGVzYy5zaXplX2J5dGVzID0NCj4gPiAtCQkJbGUzMl90b19jcHUodGFfaGRyLT5z ZWN1cmVkaXNwbGF5LnNpemVfYnl0ZXMpOw0KPiA+IC0JCWFkZXYtDQo+ID5wc3Auc2VjdXJlZGlz cGxheV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciA9DQo+ID4gLQkJCSh1aW50 OF90ICopYWRldi0NCj4gPnBzcC5oZGNwX2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zdGFydF9h ZGRyICsNCj4gPiAtCQkJbGUzMl90b19jcHUodGFfaGRyLT5zZWN1cmVkaXNwbGF5Lm9mZnNldF9i eXRlcyk7DQo+ID4gLQ0KPiA+IC0JCWFkZXYtPnBzcC50YV9md192ZXJzaW9uID0gbGUzMl90b19j cHUodGFfaGRyLQ0KPiA+aGVhZGVyLnVjb2RlX3ZlcnNpb24pOw0KPiA+IC0JfQ0KPiA+IC0NCj4g PiAtCXJldHVybiAwOw0KPiA+IC0NCj4gPiAtb3V0MjoNCj4gPiAtCXJlbGVhc2VfZmlybXdhcmUo YWRldi0+cHNwLnRhX2Z3KTsNCj4gPiAtCWFkZXYtPnBzcC50YV9mdyA9IE5VTEw7DQo+ID4gLW91 dDoNCj4gPiAtCWlmIChlcnIpIHsNCj4gPiAtCQlkZXZfZXJyKGFkZXYtPmRldiwNCj4gPiAtCQkJ InBzcCB2MTAuMDogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLA0KPiA+IC0JCQlm d19uYW1lKTsNCj4gPiAtCX0NCj4gPiArCQlyZXR1cm4gZXJyOw0KPiA+DQo+ID4gLQlyZXR1cm4g ZXJyOw0KPiA+ICsJcmV0dXJuIHBzcF9pbml0X3RhX21pY3JvY29kZShwc3AsIHVjb2RlX3ByZWZp eCk7DQo+ID4gICB9DQo+ID4NCj4gPiAgIHN0YXRpYyBpbnQgcHNwX3YxMF8wX3JpbmdfY3JlYXRl KHN0cnVjdCBwc3BfY29udGV4dCAqcHNwLA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9wc3BfdjExXzAuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L3BzcF92MTFfMC5jDQo+ID4gaW5kZXggYmQzZTNlMjNhOTM5Li4yMWQyMGNhMjM3N2EgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMV8wLmMNCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjExXzAuYw0KPiA+IEBAIC04OSw5 ICs4OSw4IEBAIHN0YXRpYyBpbnQgcHNwX3YxMV8wX2luaXRfbWljcm9jb2RlKHN0cnVjdA0KPiBw c3BfY29udGV4dCAqcHNwKQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gcHNwLT5hZGV2Ow0KPiA+ICAgCWNvbnN0IGNoYXIgKmNoaXBfbmFtZTsNCj4gPiAtCWNo YXIgZndfbmFtZVtQU1BfRldfTkFNRV9MRU5dOw0KPiA+ICsJY2hhciB1Y29kZV9wcmVmaXhbMzBd Ow0KPiA+ICAgCWludCBlcnIgPSAwOw0KPiA+IC0JY29uc3Qgc3RydWN0IHRhX2Zpcm13YXJlX2hl YWRlcl92MV8wICp0YV9oZHI7DQo+ID4NCj4gPiAgIAlEUk1fREVCVUcoIlxuIik7DQo+ID4NCj4g PiBAQCAtMTI5LDYgKzEyOCw3IEBAIHN0YXRpYyBpbnQgcHNwX3YxMV8wX2luaXRfbWljcm9jb2Rl KHN0cnVjdA0KPiBwc3BfY29udGV4dCAqcHNwKQ0KPiA+ICAgCWRlZmF1bHQ6DQo+ID4gICAJCUJV RygpOw0KPiA+ICAgCX0NCj4gPiArCWFtZGdwdV91Y29kZV9pcF92ZXJzaW9uX2RlY29kZShhZGV2 LCBNUDBfSFdJUCwNCj4gdWNvZGVfcHJlZml4LCBzaXplb2YodWNvZGVfcHJlZml4KSk7DQo+ID4N Cj4gPg0KPiA+ICAgCXN3aXRjaCAoYWRldi0+aXBfdmVyc2lvbnNbTVAwX0hXSVBdWzBdKSB7DQo+ ID4gQEAgLTE0MCwzNSArMTQwLDkgQEAgc3RhdGljIGludCBwc3BfdjExXzBfaW5pdF9taWNyb2Nv ZGUoc3RydWN0DQo+IHBzcF9jb250ZXh0ICpwc3ApDQo+ID4gICAJCWVyciA9IHBzcF9pbml0X2Fz ZF9taWNyb2NvZGUocHNwLCBjaGlwX25hbWUpOw0KPiA+ICAgCQlpZiAoZXJyKQ0KPiA+ICAgCQkJ cmV0dXJuIGVycjsNCj4gPiAtCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJh bWRncHUvJXNfdGEuYmluIiwNCj4gY2hpcF9uYW1lKTsNCj4gPiAtCQllcnIgPSByZXF1ZXN0X2Zp cm13YXJlKCZhZGV2LT5wc3AudGFfZncsIGZ3X25hbWUsIGFkZXYtDQo+ID5kZXYpOw0KPiA+IC0J CWlmIChlcnIpIHsNCj4gPiAtCQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5wc3AudGFfZncpOw0K PiA+IC0JCQlhZGV2LT5wc3AudGFfZncgPSBOVUxMOw0KPiA+IC0JCQlkZXZfaW5mbyhhZGV2LT5k ZXYsDQo+ID4gLQkJCQkgInBzcCB2MTEuMDogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUNCj4gXCIl c1wiXG4iLCBmd19uYW1lKTsNCj4gPiAtCQl9IGVsc2Ugew0KPiA+IC0JCQllcnIgPSBhbWRncHVf dWNvZGVfdmFsaWRhdGUoYWRldi0+cHNwLnRhX2Z3KTsNCj4gPiAtCQkJaWYgKGVycikNCj4gPiAt CQkJCWdvdG8gb3V0MjsNCj4gPiAtDQo+ID4gLQkJCXRhX2hkciA9IChjb25zdCBzdHJ1Y3QgdGFf ZmlybXdhcmVfaGVhZGVyX3YxXzANCj4gKilhZGV2LT5wc3AudGFfZnctPmRhdGE7DQo+ID4gLQkJ CWFkZXYtDQo+ID5wc3AueGdtaV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2MuZndfdmVyc2lvbiA9 DQo+ID4gLQkJCQlsZTMyX3RvX2NwdSh0YV9oZHItPnhnbWkuZndfdmVyc2lvbik7DQo+ID4gLQkJ CWFkZXYtDQo+ID5wc3AueGdtaV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc2l6ZV9ieXRlcyA9 DQo+ID4gLQkJCQlsZTMyX3RvX2NwdSh0YV9oZHItPnhnbWkuc2l6ZV9ieXRlcyk7DQo+ID4gLQkJ CWFkZXYtDQo+ID5wc3AueGdtaV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciA9 DQo+ID4gLQkJCQkodWludDhfdCAqKXRhX2hkciArDQo+ID4gLQkJCQlsZTMyX3RvX2NwdSh0YV9o ZHItDQo+ID5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKTsNCj4gPiAtCQkJYWRldi0+ cHNwLnRhX2Z3X3ZlcnNpb24gPSBsZTMyX3RvX2NwdSh0YV9oZHItDQo+ID5oZWFkZXIudWNvZGVf dmVyc2lvbik7DQo+ID4gLQkJCWFkZXYtPnBzcC5yYXNfY29udGV4dC5jb250ZXh0LmJpbl9kZXNj LmZ3X3ZlcnNpb24NCj4gPQ0KPiA+IC0JCQkJbGUzMl90b19jcHUodGFfaGRyLT5yYXMuZndfdmVy c2lvbik7DQo+ID4gLQkJCWFkZXYtPnBzcC5yYXNfY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnNp emVfYnl0ZXMNCj4gPQ0KPiA+IC0JCQkJbGUzMl90b19jcHUodGFfaGRyLT5yYXMuc2l6ZV9ieXRl cyk7DQo+ID4gLQkJCWFkZXYtPnBzcC5yYXNfY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnN0YXJ0 X2FkZHINCj4gPQ0KPiA+IC0JCQkJKHVpbnQ4X3QgKilhZGV2LQ0KPiA+cHNwLnhnbWlfY29udGV4 dC5jb250ZXh0LmJpbl9kZXNjLnN0YXJ0X2FkZHIgKw0KPiA+IC0JCQkJbGUzMl90b19jcHUodGFf aGRyLT5yYXMub2Zmc2V0X2J5dGVzKTsNCj4gPiAtCQl9DQo+ID4gKwkJZXJyID0gcHNwX2luaXRf dGFfbWljcm9jb2RlKHBzcCwgdWNvZGVfcHJlZml4KTsNCj4gPiArCQlpZiAoZXJyKQ0KPiA+ICsJ CQlyZXR1cm4gZXJyOw0KPiA+ICAgCQlicmVhazsNCj4gPiAgIAljYXNlIElQX1ZFUlNJT04oMTEs IDAsIDApOg0KPiA+ICAgCWNhc2UgSVBfVkVSU0lPTigxMSwgMCwgNSk6DQo+ID4gQEAgLTE3OSwz OSArMTUzLDkgQEAgc3RhdGljIGludCBwc3BfdjExXzBfaW5pdF9taWNyb2NvZGUoc3RydWN0DQo+ IHBzcF9jb250ZXh0ICpwc3ApDQo+ID4gICAJCWVyciA9IHBzcF9pbml0X2FzZF9taWNyb2NvZGUo cHNwLCBjaGlwX25hbWUpOw0KPiA+ICAgCQlpZiAoZXJyKQ0KPiA+ICAgCQkJcmV0dXJuIGVycjsN Cj4gPiAtCQlzbnByaW50Zihmd19uYW1lLCBzaXplb2YoZndfbmFtZSksICJhbWRncHUvJXNfdGEu YmluIiwNCj4gY2hpcF9uYW1lKTsNCj4gPiAtCQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZhZGV2 LT5wc3AudGFfZncsIGZ3X25hbWUsIGFkZXYtDQo+ID5kZXYpOw0KPiA+IC0JCWlmIChlcnIpIHsN Cj4gPiAtCQkJcmVsZWFzZV9maXJtd2FyZShhZGV2LT5wc3AudGFfZncpOw0KPiA+IC0JCQlhZGV2 LT5wc3AudGFfZncgPSBOVUxMOw0KPiA+IC0JCQlkZXZfaW5mbyhhZGV2LT5kZXYsDQo+ID4gLQkJ CQkgInBzcCB2MTEuMDogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUNCj4gXCIlc1wiXG4iLCBmd19u YW1lKTsNCj4gPiAtCQl9IGVsc2Ugew0KPiA+IC0JCQllcnIgPSBhbWRncHVfdWNvZGVfdmFsaWRh dGUoYWRldi0+cHNwLnRhX2Z3KTsNCj4gPiAtCQkJaWYgKGVycikNCj4gPiAtCQkJCWdvdG8gb3V0 MjsNCj4gPiAtDQo+ID4gLQkJCXRhX2hkciA9IChjb25zdCBzdHJ1Y3QgdGFfZmlybXdhcmVfaGVh ZGVyX3YxXzANCj4gKilhZGV2LT5wc3AudGFfZnctPmRhdGE7DQo+ID4gLQkJCWFkZXYtDQo+ID5w c3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2MuZndfdmVyc2lvbiA9DQo+ID4gLQkJCQls ZTMyX3RvX2NwdSh0YV9oZHItPmhkY3AuZndfdmVyc2lvbik7DQo+ID4gLQkJCWFkZXYtDQo+ID5w c3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc2l6ZV9ieXRlcyA9DQo+ID4gLQkJCQls ZTMyX3RvX2NwdSh0YV9oZHItPmhkY3Auc2l6ZV9ieXRlcyk7DQo+ID4gLQkJCWFkZXYtDQo+ID5w c3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciA9DQo+ID4gLQkJCQko dWludDhfdCAqKXRhX2hkciArDQo+ID4gLQkJCQlsZTMyX3RvX2NwdSgNCj4gPiAtCQkJCQl0YV9o ZHItDQo+ID5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKTsNCj4gPiAtDQo+ID4gLQkJ CWFkZXYtPnBzcC50YV9md192ZXJzaW9uID0gbGUzMl90b19jcHUodGFfaGRyLQ0KPiA+aGVhZGVy LnVjb2RlX3ZlcnNpb24pOw0KPiA+IC0NCj4gPiAtCQkJYWRldi0NCj4gPnBzcC5kdG1fY29udGV4 dC5jb250ZXh0LmJpbl9kZXNjLmZ3X3ZlcnNpb24gPQ0KPiA+IC0JCQkJbGUzMl90b19jcHUodGFf aGRyLT5kdG0uZndfdmVyc2lvbik7DQo+ID4gLQkJCWFkZXYtDQo+ID5wc3AuZHRtX2NvbnRleHQu Y29udGV4dC5iaW5fZGVzYy5zaXplX2J5dGVzID0NCj4gPiAtCQkJCWxlMzJfdG9fY3B1KHRhX2hk ci0+ZHRtLnNpemVfYnl0ZXMpOw0KPiA+IC0JCQlhZGV2LQ0KPiA+cHNwLmR0bV9jb250ZXh0LmNv bnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciA9DQo+ID4gLQkJCQkodWludDhfdCAqKWFkZXYtPnBz cC5oZGNwX2NvbnRleHQuY29udGV4dA0KPiA+IC0JCQkJCS5iaW5fZGVzYy5zdGFydF9hZGRyICsN Cj4gPiAtCQkJCWxlMzJfdG9fY3B1KHRhX2hkci0+ZHRtLm9mZnNldF9ieXRlcyk7DQo+ID4gLQkJ fQ0KPiA+ICsJCWVyciA9IHBzcF9pbml0X3RhX21pY3JvY29kZShwc3AsIHVjb2RlX3ByZWZpeCk7 DQo+ID4gKwkJaWYgKGVycikNCj4gPiArCQkJcmV0dXJuIGVycjsNCj4gPiAgIAkJYnJlYWs7DQo+ ID4gICAJY2FzZSBJUF9WRVJTSU9OKDExLCAwLCA3KToNCj4gPiAgIAljYXNlIElQX1ZFUlNJT04o MTEsIDAsIDExKToNCj4gPiBAQCAtMjM3LDExICsxODEsNiBAQCBzdGF0aWMgaW50IHBzcF92MTFf MF9pbml0X21pY3JvY29kZShzdHJ1Y3QNCj4gcHNwX2NvbnRleHQgKnBzcCkNCj4gPiAgIAl9DQo+ ID4NCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAtDQo+ID4gLW91dDI6DQo+ID4gLQlyZWxlYXNlX2Zp cm13YXJlKGFkZXYtPnBzcC50YV9mdyk7DQo+ID4gLQlhZGV2LT5wc3AudGFfZncgPSBOVUxMOw0K PiA+IC0JcmV0dXJuIGVycjsNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIGludCBwc3BfdjEx XzBfd2FpdF9mb3JfYm9vdGxvYWRlcihzdHJ1Y3QgcHNwX2NvbnRleHQgKnBzcCkNCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNwX3YxMl8wLmMNCj4gYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9wc3BfdjEyXzAuYw0KPiA+IGluZGV4IDhlZDIyODFiNjU1 Ny4uNjM0ZmEyODIyZDhhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3BzcF92MTJfMC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvcHNw X3YxMl8wLmMNCj4gPiBAQCAtNDksOSArNDksOCBAQCBzdGF0aWMgaW50IHBzcF92MTJfMF9pbml0 X21pY3JvY29kZShzdHJ1Y3QNCj4gcHNwX2NvbnRleHQgKnBzcCkNCj4gPiAgIHsNCj4gPiAgIAlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHBzcC0+YWRldjsNCj4gPiAgIAljb25zdCBjaGFy ICpjaGlwX25hbWU7DQo+ID4gLQljaGFyIGZ3X25hbWVbMzBdOw0KPiA+ICsJY2hhciB1Y29kZV9w cmVmaXhbMzBdOw0KPiA+ICAgCWludCBlcnIgPSAwOw0KPiA+IC0JY29uc3Qgc3RydWN0IHRhX2Zp cm13YXJlX2hlYWRlcl92MV8wICp0YV9oZHI7DQo+ID4gICAJRFJNX0RFQlVHKCJcbiIpOw0KPiA+ DQo+ID4gICAJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsNCj4gPiBAQCAtNjQsNjcgKzYzLDEy IEBAIHN0YXRpYyBpbnQgcHNwX3YxMl8wX2luaXRfbWljcm9jb2RlKHN0cnVjdA0KPiBwc3BfY29u dGV4dCAqcHNwKQ0KPiA+ICAgCWRlZmF1bHQ6DQo+ID4gICAJCUJVRygpOw0KPiA+ICAgCX0NCj4g PiArCWFtZGdwdV91Y29kZV9pcF92ZXJzaW9uX2RlY29kZShhZGV2LCBNUDBfSFdJUCwNCj4gdWNv ZGVfcHJlZml4LCBzaXplb2YodWNvZGVfcHJlZml4KSk7DQo+ID4NCj4gPiAgIAllcnIgPSBwc3Bf aW5pdF9hc2RfbWljcm9jb2RlKHBzcCwgY2hpcF9uYW1lKTsNCj4gPiAgIAlpZiAoZXJyKQ0KPiA+ ICAgCQlyZXR1cm4gZXJyOw0KPiA+IC0NCj4gPiAtCXNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihm d19uYW1lKSwgImFtZGdwdS8lc190YS5iaW4iLA0KPiBjaGlwX25hbWUpOw0KPiA+IC0JZXJyID0g cmVxdWVzdF9maXJtd2FyZSgmYWRldi0+cHNwLnRhX2Z3LCBmd19uYW1lLCBhZGV2LT5kZXYpOw0K PiA+IC0JaWYgKGVycikgew0KPiA+IC0JCXJlbGVhc2VfZmlybXdhcmUoYWRldi0+cHNwLnRhX2Z3 KTsNCj4gPiAtCQlhZGV2LT5wc3AudGFfZncgPSBOVUxMOw0KPiA+IC0JCWRldl9pbmZvKGFkZXYt PmRldiwNCj4gPiAtCQkJICJwc3AgdjEyLjA6IEZhaWxlZCB0byBsb2FkIGZpcm13YXJlIFwiJXNc IlxuIiwNCj4gPiAtCQkJIGZ3X25hbWUpOw0KPiA+IC0JfSBlbHNlIHsNCj4gPiAtCQllcnIgPSBh bWRncHVfdWNvZGVfdmFsaWRhdGUoYWRldi0+cHNwLnRhX2Z3KTsNCj4gPiAtCQlpZiAoZXJyKQ0K PiA+IC0JCQlnb3RvIG91dDsNCj4gPiAtDQo+ID4gLQkJdGFfaGRyID0gKGNvbnN0IHN0cnVjdCB0 YV9maXJtd2FyZV9oZWFkZXJfdjFfMCAqKQ0KPiA+IC0JCQkJIGFkZXYtPnBzcC50YV9mdy0+ZGF0 YTsNCj4gPiAtCQlhZGV2LT5wc3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2MuZndfdmVy c2lvbiA9DQo+ID4gLQkJCWxlMzJfdG9fY3B1KHRhX2hkci0+aGRjcC5md192ZXJzaW9uKTsNCj4g PiAtCQlhZGV2LT5wc3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc2l6ZV9ieXRlcyA9 DQo+ID4gLQkJCWxlMzJfdG9fY3B1KHRhX2hkci0+aGRjcC5zaXplX2J5dGVzKTsNCj4gPiAtCQlh ZGV2LT5wc3AuaGRjcF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciA9DQo+ID4g LQkJCSh1aW50OF90ICopdGFfaGRyICsNCj4gPiAtCQkJbGUzMl90b19jcHUodGFfaGRyLQ0KPiA+ aGVhZGVyLnVjb2RlX2FycmF5X29mZnNldF9ieXRlcyk7DQo+ID4gLQ0KPiA+IC0JCWFkZXYtPnBz cC50YV9md192ZXJzaW9uID0gbGUzMl90b19jcHUodGFfaGRyLQ0KPiA+aGVhZGVyLnVjb2RlX3Zl cnNpb24pOw0KPiA+IC0NCj4gPiAtCQlhZGV2LT5wc3AuZHRtX2NvbnRleHQuY29udGV4dC5iaW5f ZGVzYy5md192ZXJzaW9uID0NCj4gPiAtCQkJbGUzMl90b19jcHUodGFfaGRyLT5kdG0uZndfdmVy c2lvbik7DQo+ID4gLQkJYWRldi0+cHNwLmR0bV9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc2l6 ZV9ieXRlcyA9DQo+ID4gLQkJCWxlMzJfdG9fY3B1KHRhX2hkci0+ZHRtLnNpemVfYnl0ZXMpOw0K PiA+IC0JCWFkZXYtPnBzcC5kdG1fY29udGV4dC5jb250ZXh0LmJpbl9kZXNjLnN0YXJ0X2FkZHIg PQ0KPiA+IC0JCQkodWludDhfdCAqKWFkZXYtDQo+ID5wc3AuaGRjcF9jb250ZXh0LmNvbnRleHQu YmluX2Rlc2Muc3RhcnRfYWRkciArDQo+ID4gLQkJCWxlMzJfdG9fY3B1KHRhX2hkci0+ZHRtLm9m ZnNldF9ieXRlcyk7DQo+ID4gLQ0KPiA+IC0JCWlmIChhZGV2LT5hcHVfZmxhZ3MgJiBBTURfQVBV X0lTX1JFTk9JUikgew0KPiA+IC0JCQlhZGV2LQ0KPiA+cHNwLnNlY3VyZWRpc3BsYXlfY29udGV4 dC5jb250ZXh0LmJpbl9kZXNjLmZ3X3ZlcnNpb24gPQ0KPiA+IC0JCQkJbGUzMl90b19jcHUodGFf aGRyLQ0KPiA+c2VjdXJlZGlzcGxheS5md192ZXJzaW9uKTsNCj4gPiAtCQkJYWRldi0NCj4gPnBz cC5zZWN1cmVkaXNwbGF5X2NvbnRleHQuY29udGV4dC5iaW5fZGVzYy5zaXplX2J5dGVzID0NCj4g PiAtCQkJCWxlMzJfdG9fY3B1KHRhX2hkci0NCj4gPnNlY3VyZWRpc3BsYXkuc2l6ZV9ieXRlcyk7 DQo+ID4gLQkJCWFkZXYtDQo+ID5wc3Auc2VjdXJlZGlzcGxheV9jb250ZXh0LmNvbnRleHQuYmlu X2Rlc2Muc3RhcnRfYWRkciA9DQo+ID4gLQkJCQkodWludDhfdCAqKWFkZXYtDQo+ID5wc3AuaGRj cF9jb250ZXh0LmNvbnRleHQuYmluX2Rlc2Muc3RhcnRfYWRkciArDQo+ID4gLQkJCQlsZTMyX3Rv X2NwdSh0YV9oZHItDQo+ID5zZWN1cmVkaXNwbGF5Lm9mZnNldF9ieXRlcyk7DQo+ID4gLQkJfQ0K PiA+IC0JfQ0KPiA+IC0NCj4gPiAtCXJldHVybiAwOw0KPiA+IC0NCj4gPiAtb3V0Og0KPiA+IC0J cmVsZWFzZV9maXJtd2FyZShhZGV2LT5wc3AudGFfZncpOw0KPiA+IC0JYWRldi0+cHNwLnRhX2Z3 ID0gTlVMTDsNCj4gPiAtCWlmIChlcnIpIHsNCj4gPiAtCQlkZXZfZXJyKGFkZXYtPmRldiwNCj4g PiAtCQkJInBzcCB2MTIuMDogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgXCIlc1wiXG4iLA0KPiA+ IC0JCQlmd19uYW1lKTsNCj4gPiAtCX0NCj4gPiAtDQo+ID4gLQlyZXR1cm4gZXJyOw0KPiA+ICsJ cmV0dXJuIHBzcF9pbml0X3RhX21pY3JvY29kZShwc3AsIHVjb2RlX3ByZWZpeCk7DQo+ID4gICB9 DQo+ID4NCj4gPiAgIHN0YXRpYyBpbnQgcHNwX3YxMl8wX2Jvb3Rsb2FkZXJfbG9hZF9zeXNkcnYo c3RydWN0IHBzcF9jb250ZXh0ICpwc3ApDQo=