Received: by 2002:a05:7412:40d:b0:e2:908c:2ebd with SMTP id 13csp619055rdf; Tue, 21 Nov 2023 11:18:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IFUpP03Mnb6I3xdT5YEDcghqJPbHqdllzkK1Z72LREJHZSZMDUqFfa4EXmenuF0HauiBDCD X-Received: by 2002:a05:6e02:1a02:b0:35b:37a:f25e with SMTP id s2-20020a056e021a0200b0035b037af25emr296870ild.5.1700594333450; Tue, 21 Nov 2023 11:18:53 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1700594333; cv=pass; d=google.com; s=arc-20160816; b=lEIXBquD+rBtKYue2cr5uYPG6S4CyLnns9ATMEr22XERxXDqnxTOUkZKSCLSPOiXEB NyYcC4DeFGDKtgwwrOk7VgxDm0f+Qv/3gduqVK6Sm9bdG5qN482GuhcciLnV8Z3SXIOn 3LeuB7SnKJ1OTFJ+INt9Y4zqPv60pdV+sz6tVKygs0BjC4E3t3o8BRhsTnE3k2PAryRH DiXFKV2LnQwGRPN33ZzIB22xV+d7EYqBcq2KcxsbGnwTIKki2leO7wZnmomIgkySWUFw gN434hKe4eYw0ghpIM1UrcHimkjRWB8zW7lSuUxSEJo6GJ/xG+HBkvUDMrYLi/oavWja uRDg== 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 :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=ED8I1Q3Xujij1MBBsQAcArpn2NWS+Jz5iMFl542CWGU=; fh=5Xx5+1mZBz5F9lU+vwltx+qidcyIJ7y6cyatoh0x5Jw=; b=ZwoMdu649FwVRbzlr6DM7SuBc1LL+p5fbCa3ayVpkO0bTilqax4HOfKID/GmonUbO1 MKzxRGL8vrP//K894uWF89yy12vzh3X+1lJVomaXrGtiB6SLQk8H1pODK6iVWdS8DJTF 6Wkd5+kLoLsHwxKoUeBMjG0Ah3u1NLnatbncMIwVtTNXTHXIYe/vSN9aRjV2W/4dXutM HP9iWvQ9GywPTGBQhFLTZqrVyojvBKlyACUXrGsWHjj/pXB3BIYzAUu6a6aV+W+YoBn5 QtH1pgfEvKZYsdxv+zGNMDffp8NQS8r7luW3agvXv9pkI0wLiPHdWmju6gznz4mw+GRq y+Vw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=hqAv+DLM; 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 23.128.96.32 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 agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id b25-20020a631b59000000b00578b63123desi11240431pgm.789.2023.11.21.11.18.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 11:18:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=hqAv+DLM; 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 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id F2B138023A18; Tue, 21 Nov 2023 11:18:47 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229642AbjKUTSU (ORCPT + 99 others); Tue, 21 Nov 2023 14:18:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44666 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229514AbjKUTST (ORCPT ); Tue, 21 Nov 2023 14:18:19 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2040.outbound.protection.outlook.com [40.107.236.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC57E188; Tue, 21 Nov 2023 11:18:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fVDEEjcOfXfIe4hYExCkOn/joZ2LGK3sqkYicdEvcTMglX9m5mtwpXVQd7TcicUmwYGKF8SiZIilnoLUuVzkAfMIvVClNfUi9jo+8Z+Qmbyb/tSTUVUsxrO3rJ1+N3mvFYsy3h7TYnC1cDiOswgmVRG2/LGxa5nYvKt9RkGz8ZGA3KTMXizrrSG36VJomPgIdh+bbaFwIY3h+XKJnKrZ/TAdyaWO5gm8oYVbwJ50OmK/izXUimji+GGd27OxIDhla7EccMMOkAhafnGj9nMT2U2d+tfnFGOaknAwy7uTI6kv7ntgtx2uzOWMww0XczeU1lPZVpdmbDOtAEnTk7Idvw== 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=ED8I1Q3Xujij1MBBsQAcArpn2NWS+Jz5iMFl542CWGU=; b=QQ75BHYTUGOLa09PZIVz9U5XienAZTMcgvuN5Aho1eI8g+0lnhnS8Vh7GTZfsvkqHORgtXcQ2MduWTeEI6SMiu0E7RnlREroh643EiRihdfuatU03l0cwZ8XWiTyC3KZ6cZG/CkDJTm2dYqFh4sDKel/D0vu/GP+MhLLUvYHzUgHIxsUP6YEABQakFQJFhzZ7GUMHmoLUNLf6KanRCxXft3jLB7UeiQw0R66gPOHpjX61LlWMSJKvb0YMc0SJ7mY/ajf/aZ9Weo9AyCQUIQpsY1HTMF5S15DtGQP0RbGD+A9yUU4ObhmAr5t+BWECWD1YxcfZibsmi2SbHONzwCc7A== 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=ED8I1Q3Xujij1MBBsQAcArpn2NWS+Jz5iMFl542CWGU=; b=hqAv+DLM7baP05PhvjJTtAjy8/tQ5QNows23LSRO2hBSUOLlebsc0ZgONtEqvsxEBzZOKhY/4U8F2I14ImvGzITM6rFOoF34uowz99dNhDHLb0x3RX7xueFxY3ZGp6PYe9FETQEcjUyj17qEI/xU3FuluN1qg1d6syHGI0YRouo= Received: from BN7PR12MB2802.namprd12.prod.outlook.com (2603:10b6:408:25::33) by SN7PR12MB6912.namprd12.prod.outlook.com (2603:10b6:806:26d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7002.28; Tue, 21 Nov 2023 19:18:09 +0000 Received: from BN7PR12MB2802.namprd12.prod.outlook.com ([fe80::2a35:852d:bc78:ed64]) by BN7PR12MB2802.namprd12.prod.outlook.com ([fe80::2a35:852d:bc78:ed64%7]) with mapi id 15.20.7025.017; Tue, 21 Nov 2023 19:18:08 +0000 From: "Mahapatra, Amit Kumar" To: Stefan Binding , "broonie@kernel.org" , "tudor.ambarus@linaro.org" , "pratyush@kernel.org" , "miquel.raynal@bootlin.com" , "richard@nod.at" , "vigneshr@ti.com" CC: "linux-spi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "michael@walle.cc" , "linux-mtd@lists.infradead.org" , "nicolas.ferre@microchip.com" , "alexandre.belloni@bootlin.com" , "claudiu.beznea@tuxon.dev" , "Simek, Michal" , "linux-arm-kernel@lists.infradead.org" , "git (AMD-Xilinx)" , "amitrkcian2002@gmail.com" , "patches@opensource.cirrus.com" Subject: RE: [PATCH v10 1/8] spi: Add multi-cs memories support in SPI core Thread-Topic: [PATCH v10 1/8] spi: Add multi-cs memories support in SPI core Thread-Index: AQHaGibZHpgN4p9GY0OYE+Yp0J4AjrCDR+WAgAEA2tCAAIh1gIAAJXwQgAAXwQCAABeN8A== Date: Tue, 21 Nov 2023 19:18:08 +0000 Message-ID: References: <20231118135446.52783-1-amit.kumar-mahapatra@amd.com> <20231118135446.52783-2-amit.kumar-mahapatra@amd.com> <8182135b-6f4f-47ae-ba53-e94a058d466f@opensource.cirrus.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: BN7PR12MB2802:EE_|SN7PR12MB6912:EE_ x-ms-office365-filtering-correlation-id: 286b66d3-6b18-4155-1f2e-08dbeac69850 x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yflQqQVSPtMsnAIyUeLR4Q1QERYOeeLr75fdUcXgp+qA/+bsrMH8FFVb7bZA3OMgeflZRQheUD+ev7xZU5q0c4LocDdVgN57Yua+s/chNWwC8IqwoRNpLMvaoqJYTj3N3kTp6pu6oUNQsqGGzARBWe1piI0n8Wh2on5Z4gFEidVtk4TuY9rnRnKzZQZXP734PQd5NnbdRqzWNzVbsmdPxdZSkvy+y5aGA+wg6smuxWAlrKv6xW9EYhSfTXMQ0adHy2HqdD/1gYbQMWsKzKToqf1DRWlPiVNnZQJ2200fu+U5loJtO7Fadgh6XYY+5fk7tXNtC4RRpL0iltbt7nOzARzWpADB0MP5FH1O4g15wSRzC3R6diVjwK7Z3eIpgdlL2dVa7t089xw+ofG3wOLNxNmNw7gXBWZs/kbpe9HG3wNVQow2Q1XGhDJQ9hp2+EtOOD5bcsOKy0lxjui+Skt+qauErSN8DjaSigBQwCuvhXL+Ntwma4XMitcHh5lN7z7GgWYffwa7uq050zzgg3iHpB6rJoeLY/mbhHxjZHEtdoJs4YnbmCZMk/RgIdkSULkjM+zVrM+ljEpt4JAjl/slp8WWbF2H2w79rV1RlC++Ps/8HxnCGEFQ3H+qFZ6Gpb9W x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN7PR12MB2802.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(346002)(136003)(376002)(39860400002)(396003)(230922051799003)(451199024)(186009)(64100799003)(1800799012)(38100700002)(83380400001)(122000001)(33656002)(86362001)(38070700009)(66946007)(110136005)(76116006)(66476007)(66556008)(66446008)(64756008)(54906003)(41300700001)(316002)(8676002)(8936002)(52536014)(4326008)(55016003)(7416002)(5660300002)(30864003)(2906002)(53546011)(9686003)(26005)(71200400001)(478600001)(6506007)(7696005)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d1ZBN1RaNDNjNGE1akl5cm0wUnRFb09ZNkRzVGlDVGtGcCs0RW5tbCtCZStm?= =?utf-8?B?bjE1ckNyTWc0ZW1USVVzNjhFWFBYSVlWdWMxVXVTSnRGMnR5SG54UVBjK29o?= =?utf-8?B?K1U3a1VuYjA0YUx4RkdHY3RFNXgzcWExc0xBMEI1NytXaFVVT2lwTVJtMkV2?= =?utf-8?B?RU1PUVMwckRUTnNiVldJNG1WWWdFbEwvSlEzaFNtVUMzV0pzN1djbVB1ekpJ?= =?utf-8?B?ZFFQUnJManpLWGFDcjM2Nk11VEcvRmNkWGl3T0d6ckkrVkUyM0ZpM3YxSFNX?= =?utf-8?B?bUtVYW5HSDVVRFFSM2pTc2ZjUWpOcFlxN1lrOG9HTkQ5S1c1YjExZkFwK09R?= =?utf-8?B?bGRibXlVUlRZUVc4blN6a2dvcnMxdVBpK3cvUGRMOTZUcVRYVVZEVU5JZVVx?= =?utf-8?B?U0Yrek1Nb094d2Z2ckJSL2U5Mi9YVTJTVER6QzZTV2cxdlIwZ0dyd2c5SDRp?= =?utf-8?B?YjBEdy9TM3pRZHVDb3ZtN1VTU3Z1WW1VZ0VUb0E4VGNhc095MnVzbzVGYWtW?= =?utf-8?B?NnhuTGR3ZHZjd2pyNDVmVVJpMW9SQWQ2aUdsbWhONlo1Y1lTbWttMjNnaFhT?= =?utf-8?B?RnNaK3FTT1FkNWxkVTEyaHBiQ0hVV0dxSzR0WmNUS3ZRU1E1WE01bDM1Y2Ru?= =?utf-8?B?eUN5K0FMYTZFRHpZbk5hdWxuWkhuNHBITDh0elAweE42dmp3MHFhV0hIZDc4?= =?utf-8?B?MUFlazBiWG84Qm45N016UkgveUswUDFxYjBOQWF2Tk5MMGpsRGdZRnkrdlJj?= =?utf-8?B?WVpnN3luVVlTS3FMeGRnQ2F5SlpncEJGSGxQNHZmK0FuZ081RkVweG5NUno0?= =?utf-8?B?NTlrSHBIUU9naVZhS1ZlOEV0NXdNbzN0Zmc1Mlh1NDQ2OHB5RXBWUHk0SHJl?= =?utf-8?B?NlFPRWNnUEJmNHlDTzhCSnNsaER2TDFVdUtVeFlrSDZ4UzJnTUgxd1BZWm1Y?= =?utf-8?B?VjRob1Nzdi8rVU9icm1kSGVJQ1VYR1VldlJUMzFrVjNyYTlJSGxBWW0vKzNC?= =?utf-8?B?b2UvMy9zRngwSGlKazZNQUJweU9sMmdVek1PTFRnRExVWm9OQTM0akl6Qm5C?= =?utf-8?B?Wi9qWmZaODVoNEpSNGMyWGhSOWtkbUJpeWM3M2tlampwTzBNeGtkRGVOS3Q2?= =?utf-8?B?ZmxOaVh3SUtWOW9lTVpKWWJDZUszditTOExSVmxvajNZekNVZ3VmT0IyL0pF?= =?utf-8?B?NlB6YXZqZEczNStjNDJkNzhpK2RrTlpxQ0dJY3Y0Rk12Z2o1S3Z2RUlWc3B0?= =?utf-8?B?LzhxeGNvQlhmcWo5NHB2WkdQbGU4Q08vU0VJNFNEdEEwQmVnZEQvVWFJNkdW?= =?utf-8?B?K0NSZXRjb1JhVGhqMHI1L0gvZlJzTzk2SUpGRHJpam9EekFkSmpOSkxzSExv?= =?utf-8?B?SkpaMFNmYWpNYmVQbGFJQWVUdGxuNUJpL0t0V3dCMVdCSXhBeXBSWjRKcWUz?= =?utf-8?B?UGpSNktWYUIva1gvbFlXZUtSLytPMVh4VVhISnphZUFVL2Voa2svSEVKZVFB?= =?utf-8?B?c1hxZGJSc25laHJwYnFzclJENG5LWll0NXFDZTUzcExsUWZ0am5WRGI3N3c5?= =?utf-8?B?cWtTVVYwdHcxNUZxT0s4THhzODJzNFZmb3ExNEdNdUt4Yld5dnR6Ymc5KzZh?= =?utf-8?B?dE9pY3RaWkY4OVl3bXhrYzZOdlhyd0ZwWnZDZGc5QnREdEt0emhlbDZTOUps?= =?utf-8?B?OTcwc3RxQTIrTncvTUQyVUU0SFBvRm1Rb2dybGpMR0JIUDNSdnB3aGdVVnZW?= =?utf-8?B?NWxTSEdDMWtaTlg3RW10dVNNWVJYdUlmRlk0a2VpRFVvOURhY0hKdk5rSDk0?= =?utf-8?B?Nzc3eEdscEwvVFYxZTI3M2lkSk5DdlVVRG1OTUlKaTBCRnRCNmNMNHBFRnNV?= =?utf-8?B?ejl1TmhqTVRDQkgyb3lZUmcyNHBhUThTMTlSQkNYZjJudExsR0phOVVWcTJq?= =?utf-8?B?OXBMOTJtY0xvclFCVzlJTTY3NjZlSzZBdEwxRnpUd2FaNHJxM0hFc2draDgz?= =?utf-8?B?MVBWM2liTWRSU1ZyWXFRQmJiN1Q1RnAyNjZsandVUEhRdXFPYVBHNXEzeUlk?= =?utf-8?B?Tng1dFlmTHo4MWhPVnh2Rng5c0ZhUTg1WExCMWgvZVltUVlvRDYyMms1T0RK?= =?utf-8?Q?x/rs=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: BN7PR12MB2802.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 286b66d3-6b18-4155-1f2e-08dbeac69850 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Nov 2023 19:18:08.2671 (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: sCzd5W8zGcp0mnfJOZLq1YT/6iqWSEmFoPCSJ/0ss9vHQvwQssYL990TV2Kdn6dHBoH1vrkqM7dYHTNaU6gXew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6912 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 21 Nov 2023 11:18:48 -0800 (PST) SGVsbG8gU3RlZmFuLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFN0 ZWZhbiBCaW5kaW5nIDxzYmluZGluZ0BvcGVuc291cmNlLmNpcnJ1cy5jb20+DQo+IFNlbnQ6IFR1 ZXNkYXksIE5vdmVtYmVyIDIxLCAyMDIzIDExOjA3IFBNDQo+IFRvOiBNYWhhcGF0cmEsIEFtaXQg S3VtYXIgPGFtaXQua3VtYXItbWFoYXBhdHJhQGFtZC5jb20+Ow0KPiBicm9vbmllQGtlcm5lbC5v cmc7IHR1ZG9yLmFtYmFydXNAbGluYXJvLm9yZzsgcHJhdHl1c2hAa2VybmVsLm9yZzsNCj4gbWlx dWVsLnJheW5hbEBib290bGluLmNvbTsgcmljaGFyZEBub2QuYXQ7IHZpZ25lc2hyQHRpLmNvbQ0K PiBDYzogbGludXgtc3BpQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVs Lm9yZzsNCj4gbWljaGFlbEB3YWxsZS5jYzsgbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmc7 DQo+IG5pY29sYXMuZmVycmVAbWljcm9jaGlwLmNvbTsgYWxleGFuZHJlLmJlbGxvbmlAYm9vdGxp bi5jb207DQo+IGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRldjsgU2ltZWssIE1pY2hhbCA8bWljaGFs LnNpbWVrQGFtZC5jb20+OyBsaW51eC0NCj4gYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn OyBnaXQgKEFNRC1YaWxpbngpIDxnaXRAYW1kLmNvbT47DQo+IGFtaXRya2NpYW4yMDAyQGdtYWls LmNvbTsgcGF0Y2hlc0BvcGVuc291cmNlLmNpcnJ1cy5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRD SCB2MTAgMS84XSBzcGk6IEFkZCBtdWx0aS1jcyBtZW1vcmllcyBzdXBwb3J0IGluIFNQSSBjb3Jl DQo+IA0KPiANCj4gT24gMjEvMTEvMjAyMyAxNjozNSwgTWFoYXBhdHJhLCBBbWl0IEt1bWFyIHdy b3RlOg0KPiA+IEhlbGxvIFN0ZWZhbiwNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+PiBGcm9tOiBTdGVmYW4gQmluZGluZyA8c2JpbmRpbmdAb3BlbnNvdXJjZS5jaXJy dXMuY29tPg0KPiA+PiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJlciAyMSwgMjAyMyA3OjI4IFBNDQo+ ID4+IFRvOiBNYWhhcGF0cmEsIEFtaXQgS3VtYXIgPGFtaXQua3VtYXItbWFoYXBhdHJhQGFtZC5j b20+Ow0KPiA+PiBicm9vbmllQGtlcm5lbC5vcmc7IHR1ZG9yLmFtYmFydXNAbGluYXJvLm9yZzsg cHJhdHl1c2hAa2VybmVsLm9yZzsNCj4gPj4gbWlxdWVsLnJheW5hbEBib290bGluLmNvbTsgcmlj aGFyZEBub2QuYXQ7IHZpZ25lc2hyQHRpLmNvbQ0KPiA+PiBDYzogbGludXgtc3BpQHZnZXIua2Vy bmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gPj4gbWljaGFlbEB3YWxs ZS5jYzsgbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+ID4+IG5pY29sYXMuZmVycmVA bWljcm9jaGlwLmNvbTsgYWxleGFuZHJlLmJlbGxvbmlAYm9vdGxpbi5jb207DQo+ID4+IGNsYXVk aXUuYmV6bmVhQHR1eG9uLmRldjsgU2ltZWssIE1pY2hhbCA8bWljaGFsLnNpbWVrQGFtZC5jb20+ Ow0KPiA+PiBsaW51eC0gYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBnaXQgKEFNRC1Y aWxpbngpDQo+ID4+IDxnaXRAYW1kLmNvbT47IGFtaXRya2NpYW4yMDAyQGdtYWlsLmNvbTsNCj4g Pj4gcGF0Y2hlc0BvcGVuc291cmNlLmNpcnJ1cy5jb20NCj4gPj4gU3ViamVjdDogUmU6IFtQQVRD SCB2MTAgMS84XSBzcGk6IEFkZCBtdWx0aS1jcyBtZW1vcmllcyBzdXBwb3J0IGluDQo+ID4+IFNQ SSBjb3JlDQo+ID4+DQo+ID4+DQo+ID4+IE9uIDIxLzExLzIwMjMgMDc6MzksIE1haGFwYXRyYSwg QW1pdCBLdW1hciB3cm90ZToNCj4gPj4+IEhlbGxvIFN0ZWZhbiwNCj4gPj4+DQo+ID4+Pj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBTdGVmYW4gQmluZGluZyA8c2Jp bmRpbmdAb3BlbnNvdXJjZS5jaXJydXMuY29tPg0KPiA+Pj4+IFNlbnQ6IE1vbmRheSwgTm92ZW1i ZXIgMjAsIDIwMjMgODowMCBQTQ0KPiA+Pj4+IFRvOiBNYWhhcGF0cmEsIEFtaXQgS3VtYXIgPGFt aXQua3VtYXItbWFoYXBhdHJhQGFtZC5jb20+Ow0KPiA+Pj4+IGJyb29uaWVAa2VybmVsLm9yZzsg dHVkb3IuYW1iYXJ1c0BsaW5hcm8ub3JnOyBwcmF0eXVzaEBrZXJuZWwub3JnOw0KPiA+Pj4+IG1p cXVlbC5yYXluYWxAYm9vdGxpbi5jb207IHJpY2hhcmRAbm9kLmF0OyB2aWduZXNockB0aS5jb20N Cj4gPj4+PiBDYzogbGludXgtc3BpQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIu a2VybmVsLm9yZzsNCj4gPj4+PiBtaWNoYWVsQHdhbGxlLmNjOyBsaW51eC1tdGRAbGlzdHMuaW5m cmFkZWFkLm9yZzsNCj4gPj4+PiBuaWNvbGFzLmZlcnJlQG1pY3JvY2hpcC5jb207IGFsZXhhbmRy ZS5iZWxsb25pQGJvb3RsaW4uY29tOw0KPiA+Pj4+IGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRldjsg U2ltZWssIE1pY2hhbCA8bWljaGFsLnNpbWVrQGFtZC5jb20+Ow0KPiA+Pj4+IGxpbnV4LSBhcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGdpdCAoQU1ELVhpbGlueCkNCj4gPj4+PiA8Z2l0 QGFtZC5jb20+OyBhbWl0cmtjaWFuMjAwMkBnbWFpbC5jb207DQo+ID4+Pj4gcGF0Y2hlc0BvcGVu c291cmNlLmNpcnJ1cy5jb20NCj4gPj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYxMCAxLzhdIHNw aTogQWRkIG11bHRpLWNzIG1lbW9yaWVzIHN1cHBvcnQgaW4NCj4gPj4+PiBTUEkgY29yZQ0KPiA+ Pj4+DQo+ID4+Pj4NCj4gPj4+PiBPbiAxOC8xMS8yMDIzIDEzOjU0LCBBbWl0IEt1bWFyIE1haGFw YXRyYSB3cm90ZToNCj4gPj4+Pj4gQU1ELVhpbGlueCBHUVNQSSBjb250cm9sbGVyIGhhcyB0d28g YWR2YW5jZWQgbW9kZSB0aGF0IGFsbG93cyB0aGUNCj4gPj4+Pj4gY29udHJvbGxlciB0byBjb25z aWRlciB0d28gZmxhc2hlcyBhcyBvbmUgc2luZ2xlIGRldmljZS4NCj4gPj4+Pj4NCj4gPj4+Pj4g T25lIG9mIHRoZXNlIHR3byBtb2RlIGlzIHRoZSBwYXJhbGxlbCBtb2RlIGluIHdoaWNoIGVhY2gg Ynl0ZSBvZg0KPiA+Pj4+PiBkYXRhIGlzIHN0b3JlZCBpbiBib3RoIGRldmljZXMsIHRoZSBldmVu IGJpdHMgaW4gdGhlIGxvd2VyIGZsYXNoICYNCj4gPj4+Pj4gdGhlIG9kZCBiaXRzIGluIHRoZSB1 cHBlciBmbGFzaC4gVGhlIGJ5dGUgc3BsaXQgaXMgYXV0b21hdGljYWxseQ0KPiA+Pj4+PiBoYW5k bGVkIGJ5IHRoZSBRU1BJIGNvbnRyb2xsZXIuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoZSBvdGhlciBt b2RlIGlzIHRoZSBzdGFja2VkIG1vZGUgaW4gd2hpY2ggYm90aCB0aGUgZmxhc2hlcyBzaGFyZQ0K PiA+Pj4+PiB0aGUgc2FtZSBTUEkgYnVzIGJ1dCBlYWNoIG9mIHRoZSBkZXZpY2UgY29udGFpbiBo YWxmIG9mIHRoZSBkYXRhLg0KPiA+Pj4+PiBJbiB0aGlzIG1vZGUsIHRoZSBjb250cm9sbGVyIGRv ZXMgbm90IGZvbGxvdyBDUyByZXF1ZXN0cyBidXQNCj4gPj4+Pj4gaW5zdGVhZCBpbnRlcm5hbGx5 IHdpcmVzIHRoZSB0d28gQ1MgbGV2ZWxzIHdpdGggdGhlIHZhbHVlIG9mIHRoZQ0KPiA+Pj4+PiBt b3N0IHNpZ25pZmljYW50DQo+ID4+Pj4gYWRkcmVzcyBiaXQuDQo+ID4+Pj4+IEZvciBzdXBwb3J0 aW5nIGJvdGggdGhlc2UgbW9kZXMgU1BJIGNvcmUgbmVlZCB0byBiZSB1cGRhdGVkIGZvcg0KPiA+ Pj4+PiBwcm92aWRpbmcgbXVsdGlwbGUgQ1MgZm9yIGEgc2luZ2xlIFNQSSBkZXZpY2UuDQo+ID4+ Pj4+DQo+ID4+Pj4+IEZvciBhZGRpbmcgbXVsdGkgQ1Mgc3VwcG9ydCB0aGUgU1BJIGRldmljZSBu ZWVkIHRvIGJlIGF3YXJlIG9mIGFsbA0KPiA+Pj4+PiB0aGUgQ1MgdmFsdWVzLiBTbywgdGhlICJj aGlwX3NlbGVjdCIgbWVtYmVyIGluIHRoZSBzcGlfZGV2aWNlDQo+ID4+Pj4+IHN0cnVjdHVyZSBp cyBub3cgYW4gYXJyYXkgdGhhdCBob2xkcyBhbGwgdGhlIENTIHZhbHVlcy4NCj4gPj4+Pj4NCj4g Pj4+Pj4gc3BpX2RldmljZSBzdHJ1Y3R1cmUgbm93IGhhcyBhICJjc19pbmRleF9tYXNrIiBtZW1i ZXIuIFRoaXMgYWN0cw0KPiA+Pj4+PiBhcyBhbiBpbmRleCB0byB0aGUgY2hpcF9zZWxlY3QgYXJy YXkuIElmIG50aCBiaXQgb2YNCj4gPj4+Pj4gc3BpLT5jc19pbmRleF9tYXNrIGlzIHNldCB0aGVu IHRoZSBkcml2ZXIgd291bGQgYXNzZXJ0IHNwaS0NCj4gPmNoaXBfc2VsZWN0W25dLg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBJbiBwYXJhbGxlbCBtb2RlIGFsbCB0aGUgY2hpcCBzZWxlY3RzIGFyZSBhc3Nl cnRlZC9kZS1hc3NlcnRlZA0KPiA+Pj4+PiBzaW11bHRhbmVvdXNseSBhbmQgZWFjaCBieXRlIG9m IGRhdGEgaXMgc3RvcmVkIGluIGJvdGggZGV2aWNlcywNCj4gPj4+Pj4gdGhlIGV2ZW4gYml0cyBp biBvbmUsIHRoZSBvZGQgYml0cyBpbiB0aGUgb3RoZXIuIFRoZSBzcGxpdCBpcw0KPiA+Pj4+PiBh dXRvbWF0aWNhbGx5IGhhbmRsZWQgYnkgdGhlIEdRU1BJIGNvbnRyb2xsZXIuIFRoZSBHUVNQSQ0K PiA+Pj4+PiBjb250cm9sbGVyIHN1cHBvcnRzIGEgbWF4aW11bSBvZiB0d28gZmxhc2hlcyBjb25u ZWN0ZWQgaW4gcGFyYWxsZWwNCj4gPj4+Pj4gbW9kZS4gQSBTUElfQ09OVFJPTExFUl9NVUxUSV9D UyBmbGFnIGJpdCBpcyBhZGRlZCBpbiB0aGUgc3BpDQo+ID4+Pj4+IGNvbnRyb2xsZXIgZmxhZ3Ms IHRocm91Z2ggY3Rsci0+ZmxhZ3MgdGhlIHNwaSBjb3JlIHdpbGwgbWFrZSBzdXJlDQo+ID4+Pj4+ IHRoYXQgdGhlIGNvbnRyb2xsZXIgaXMgY2FwYWJsZSBvZiBoYW5kbGluZyBtdWx0aXBsZSBjaGlw IHNlbGVjdHMgYXQgb25jZS4NCj4gPj4+Pj4NCj4gPj4+Pj4gRm9yIHN1cHBvcnRpbmcgbXVsdGlw bGUgQ1MgdmlhIEdQSU8gdGhlIGNzX2dwaW9kIG1lbWJlciBvZiB0aGUNCj4gPj4+Pj4gc3BpX2Rl dmljZSBzdHJ1Y3R1cmUgaXMgbm93IGFuIGFycmF5IHRoYXQgaG9sZHMgdGhlIGdwaW8NCj4gPj4+ Pj4gZGVzY3JpcHRvciBmb3IgZWFjaCBjaGlwc2VsZWN0Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBDUyBH UElPIGlzIG5vdCB0ZXN0ZWQgZHVlIHRvIHVuYXZhaWxhYmlsaXR5IG9mIG5lY2Vzc2FyeSBoYXJk d2FyZQ0KPiBzZXR1cC4NCj4gPj4+Pj4NCj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogQW1pdCBLdW1h ciBNYWhhcGF0cmEgPGFtaXQua3VtYXItDQo+ID4+IG1haGFwYXRyYUBhbWQuY29tPg0KPiA+Pj4+ PiAtLS0NCj4gPj4+Pj4gSGVsbG8gQFN0ZWZlbiwNCj4gPj4+Pj4gV2UgcmVzdHJ1Y3R1cmVkIHRo ZSBTUEkgY29yZSBpbXBsZW1lbnRhdGlvbiwgZm9yIGhhbmRsaW5nDQo+ID4+Pj4+IGFyYml0cmFy eSBudW1iZXIgb2YgZGV2aWNlcyBjb25uZWN0ZWQgaW4gcGFyYWxsZWwobXVsdGktY3MpIG9yIHN0 YWNrZWQNCj4gbW9kZS4NCj4gPj4+Pj4gV2UgaGF2ZSB0ZXN0ZWQgdGhpcyB1cGRhdGVkIHBhdGNo IG9uIG5hdGl2ZS1jcyBzZXR1cCBidXQgY291bGRuJ3QNCj4gPj4+Pj4gdGVzdCBjcy1ncGlvIGR1 ZSB0byB1bmF2YWlsYWJpbGl0eSBvZiBhIHByb3BlciBzZXR1cC4gSWYgcG9zc2libGUsDQo+ID4+ Pj4+IGNvdWxkIHlvdSBwbGVhc2UgcmV0ZXN0IHRoZSBjcy1ncGlvIHVzZSBjYXNlIHdpdGggdGhp cyB1cGRhdGVkDQo+ID4+Pj4+IHBhdGNoIGFuZCBwcm92aWRlDQo+ID4+Pj4geW91ciBmZWVkYmFj ay4NCj4gPj4+Pg0KPiA+Pj4+IEhpLA0KPiA+Pj4+DQo+ID4+Pj4gSSB0ZXN0ZWQgdGhpcyBjaGFp biBvbiAyIGRpZmZlcmVudCBzeXN0ZW1zIHVzaW5nIEdQSU9zIGFzIGNoaXANCj4gPj4+PiBzZWxl Y3RzLCBhbmQgc2VlIHRoZSBzYW1lIGVycm9yIG9uIGJvdGg6DQo+ID4+Pj4gW8KgwqDCoCAyLjg0 MjA0NV0gcHhhMnh4LXNwaSBweGEyeHgtc3BpLjY6IGNoaXBzZWxlY3QgMCBhbHJlYWR5IGluIHVz ZQ0KPiA+Pj4+DQo+ID4+Pj4gTGV0IG1lIGtub3cgaWYgeW91IG5lZWQgYW55IGZ1cnRoZXIgdGVz dGluZy4NCj4gPj4+Pg0KPiA+Pj4+IFRoYW5rcywNCj4gPj4+Pg0KPiA+Pj4+IFN0ZWZhbiBCaW5k aW5nDQo+ID4+Pj4NCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+ICAgICBkcml2ZXJzL3NwaS9zcGkuYyAg ICAgICB8IDE5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQ0KPiAtLQ0K PiA+Pj4+PiAgICAgaW5jbHVkZS9saW51eC9zcGkvc3BpLmggfCAgNTEgKysrKysrKystLS0NCj4g Pj4+Pj4gICAgIDIgZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9u cygtKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLmMgYi9k cml2ZXJzL3NwaS9zcGkuYyBpbmRleA0KPiA+Pj4+PiA4ZWFkN2FjYjk5ZjMuLmZmNjYxNDdiYTk1 ZiAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvZHJpdmVycy9zcGkvc3BpLmMNCj4gPj4+Pj4gKysrIGIv ZHJpdmVycy9zcGkvc3BpLmMNCj4gPj4+Pj4gQEAgLTYxMiwxMCArNjEyLDIxIEBAIHN0YXRpYyBp bnQgc3BpX2Rldl9jaGVjayhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4+Pj4+IHZvaWQNCj4gPj4+ PiAqZGF0YSkNCj4gPj4+Pj4gICAgIHsNCj4gPj4+Pj4gICAgIAlzdHJ1Y3Qgc3BpX2RldmljZSAq c3BpID0gdG9fc3BpX2RldmljZShkZXYpOw0KPiA+Pj4+PiAgICAgCXN0cnVjdCBzcGlfZGV2aWNl ICpuZXdfc3BpID0gZGF0YTsNCj4gPj4+Pj4gLQ0KPiA+Pj4+PiAtCWlmIChzcGktPmNvbnRyb2xs ZXIgPT0gbmV3X3NwaS0+Y29udHJvbGxlciAmJg0KPiA+Pj4+PiAtCSAgICBzcGlfZ2V0X2NoaXBz ZWxlY3Qoc3BpLCAwKSA9PSBzcGlfZ2V0X2NoaXBzZWxlY3QobmV3X3NwaSwgMCkpDQo+ID4+Pj4+ IC0JCXJldHVybiAtRUJVU1k7DQo+ID4+Pj4+ICsJaW50IGlkeCwgbndfaWR4Ow0KPiA+Pj4+PiAr CXU4IGNzLCBjc19udzsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCWlmIChzcGktPmNvbnRyb2xsZXIg PT0gbmV3X3NwaS0+Y29udHJvbGxlcikgew0KPiA+Pj4+PiArCQlmb3IgKGlkeCA9IDA7IGlkeCA8 IFNQSV9DU19DTlRfTUFYOyBpZHgrKykgew0KPiA+Pj4+PiArCQkJY3MgPSBzcGlfZ2V0X2NoaXBz ZWxlY3Qoc3BpLCBpZHgpOw0KPiA+Pj4+PiArCQkJZm9yIChud19pZHggPSAwOyBud19pZHggPCBT UElfQ1NfQ05UX01BWDsNCj4gPj4+PiBud19pZHgrKykgew0KPiA+Pj4+PiArCQkJCWNzX253ID0g c3BpX2dldF9jaGlwc2VsZWN0KHNwaSwNCj4gbndfaWR4KTsNCj4gPj4+IFRoYW5rIHlvdSBmb3Ig ZGVkaWNhdGluZyB5b3VyIHRpbWUgdG8gdGVzdCBteSBwYXRjaC4NCj4gPj4+IEFzIHBlciBteSBh bmFseXNpcyB0aGUgZXJyb3IgaXMgcmVwb3J0ZWQgZnJvbSBoZXJlIGFzIHdlIGFyZQ0KPiA+Pj4g c3VwcGx5aW5nIHRoZSBmb3JtZXIgU1BJIGRldmljZSBzdHJ1Y3R1cmUgdG8gcmV0cmlldmUgdGhl IENTIHZhbHVlDQo+ID4+PiBmb3IgdGhlIG5ldyBTUEkgZGV2aWNlcy4NCj4gPj4+IFRvIGZpeCB0 aGlzLCBjb3VsZCB5b3Uga2luZGx5IHN1YnN0aXR1dGUgdGhlIGFib3ZlIGxpbmUgd2l0aA0KPiA+ Pj4NCj4gPj4+IGNzX253ID0gc3BpX2dldF9jaGlwc2VsZWN0KG5ld19zcGksIG53X2lkeCk7DQo+ ID4+Pg0KPiA+Pj4gYW5kIHJlcnVuIHlvdXIgdGVzdHM/DQo+ID4+PiBJZiBpdCB3b3JrcyBjb3Jy ZWN0bHksIEkgd2lsbCBpbmNvcnBvcmF0ZSB0aGlzIGZpeCBpbnRvIG15IHVwY29taW5nDQo+ID4+ PiBzZXJpZXMuDQo+ID4+Pg0KPiA+Pj4gUmVnYXJkcywNCj4gPj4+IEFtaXQNCj4gDQo+IEhpLA0K PiANCj4gSSd2ZSBhdHRhY2hlZCBteSBsb2cuDQo+IEkgbm90aWNlIHRoYXQgeW91IGFkZCBhIHBy aW50IHRvIG9mX3NwaV9wYXJzZV9kdCwgaG93ZXZlciBzaW5jZSB0aGUgbGFwdG9wIEkNCj4gYW0g dXNpbmcgaXMgYW4geDg2IGxhcHRvcCwgaXQgdXNlcyBBQ1BJIHJhdGhlciB0aGFuIE9GLCBhbmQg SSBkb24ndCB0aGluayB0aGlzDQo+IGZ1bmN0aW9uIGlzbnQgZXZlbiBjb21waWxlZCBpbi4NCg0K VGhhdOKAmXMgY29ycmVjdCwgSSBtaXNzZWQgaXQuDQpVcG9uIHJldmlld2luZyB0aGUgbG9ncywg SSBkaXNjb3ZlcmVkIHRoYXQgaW4gdGhlIEFDUEkgZmxvdywgSSBhbSBub3QgDQppbml0aWFsaXpp bmcgdGhlIHVudXNlZCBDU1tdIHRvIEZGLCBhcyBJIGFtIGRvaW5nIGluIHRoZSBPRiBmbG93LiAN CkNvbnNlcXVlbnRseSwgaW4gdGhlIEFDUEkgZmxvdywgYWxsIHRoZSB1bnVzZWQgQ1NbXSBhcmUg YXV0b21hdGljYWxseSANCmluaXRpYWxpemVkIHRvIDAuIER1cmluZyB0aGUgX19zcGlfYWRkX2Rl dmljZSBwcm9jZXNzLCB0aGUgU1BJIGNvcmUgZmFjZXMgDQpkaWZmaWN1bHR5IGRpc3Rpbmd1aXNo aW5nIGJldHdlZW4gYSB2YWxpZCBDUyB2YWx1ZSBvZiAwIGFuZCBhbiB1bnVzZWQgQ1MgDQp2YWx1 ZSBvZiAwLCBsZWFkaW5nIHRvIGEgZmFpbHVyZSBpbiB0aGUgZHJpdmVyIHByb2JlLg0KDQpJbmNv cnBvcmF0aW5nIHRoZSBmb2xsb3dpbmcgbW9kaWZpY2F0aW9ucyBzaG91bGQgcmVzb2x2ZSB0aGlz IGlzc3VlLiANCktpbmRseSBhcHBseSB0aGVzZSBjaGFuZ2VzIG9uIHRvcCBvZiAxLzggYW5kIHJl LXJ1biB0aGUgdGVzdC4NCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS5jIGIvZHJpdmVy cy9zcGkvc3BpLmMNCmluZGV4IGZmNjYxNDdiYTk1Zi4uZDAzMDFjMTdkNGY4IDEwMDY0NA0KLS0t IGEvZHJpdmVycy9zcGkvc3BpLmMNCisrKyBiL2RyaXZlcnMvc3BpL3NwaS5jDQpAQCAtNjE5LDcg KzYxOSw3IEBAIHN0YXRpYyBpbnQgc3BpX2Rldl9jaGVjayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEpDQogICAgICAgICAgICAgICAgZm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05U X01BWDsgaWR4KyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNzID0gc3BpX2dldF9jaGlw c2VsZWN0KHNwaSwgaWR4KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobndfaWR4ID0g MDsgbndfaWR4IDwgU1BJX0NTX0NOVF9NQVg7IG53X2lkeCsrKSB7DQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNzX253ID0gc3BpX2dldF9jaGlwc2VsZWN0KHNwaSwgbndfaWR4KTsN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NfbncgPSBzcGlfZ2V0X2NoaXBzZWxl Y3QobmV3X3NwaSwgbndfaWR4KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KGNzICE9IDB4RkYgJiYgY3NfbncgIT0gMHhGRiAmJiBjcyA9PSBjc19udykgew0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiY2hpcHNlbGVjdCAl ZCBhbHJlYWR5IGluIHVzZVxuIiwgY3NfbncpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7DQpAQCAtNzY0LDYgKzc2NCw3IEBAIHN0cnVjdCBz cGlfZGV2aWNlICpzcGlfbmV3X2RldmljZShzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsDQog ew0KICAgICAgICBzdHJ1Y3Qgc3BpX2RldmljZSAgICAgICAqcHJveHk7DQogICAgICAgIGludCAg ICAgICAgICAgICAgICAgICAgIHN0YXR1czsNCisgICAgICAgdTggICAgICAgICAgICAgICAgICAg ICAgaWR4Ow0KIA0KICAgICAgICAvKg0KICAgICAgICAgKiBOT1RFOiAgY2FsbGVyIGRpZCBhbnkg Y2hpcC0+YnVzX251bSBjaGVja3MgbmVjZXNzYXJ5Lg0KQEAgLTc3OSw2ICs3ODAsOSBAQCBzdHJ1 Y3Qgc3BpX2RldmljZSAqc3BpX25ld19kZXZpY2Uoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxy LA0KIA0KICAgICAgICBXQVJOX09OKHN0cmxlbihjaGlwLT5tb2RhbGlhcykgPj0gc2l6ZW9mKHBy b3h5LT5tb2RhbGlhcykpOw0KIA0KKyAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19D TlRfTUFYOyBpZHgrKykNCisgICAgICAgICAgICAgICBzcGlfc2V0X2NoaXBzZWxlY3QocHJveHks IGlkeCwgMHhGRik7DQorDQogICAgICAgIHNwaV9zZXRfY2hpcHNlbGVjdChwcm94eSwgMCwgY2hp cC0+Y2hpcF9zZWxlY3QpOw0KICAgICAgICBwcm94eS0+bWF4X3NwZWVkX2h6ID0gY2hpcC0+bWF4 X3NwZWVkX2h6Ow0KICAgICAgICBwcm94eS0+bW9kZSA9IGNoaXAtPm1vZGU7DQpAQCAtMjUxNCw2 ICsyNTE4LDcgQEAgc3RydWN0IHNwaV9kZXZpY2UgKnNwaV9uZXdfYW5jaWxsYXJ5X2RldmljZShz dHJ1Y3Qgc3BpX2RldmljZSAqc3BpLA0KICAgICAgICBzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0 bHIgPSBzcGktPmNvbnRyb2xsZXI7DQogICAgICAgIHN0cnVjdCBzcGlfZGV2aWNlICphbmNpbGxh cnk7DQogICAgICAgIGludCByYyA9IDA7DQorICAgICAgIHU4IGlkeDsNCiANCiAgICAgICAgLyog QWxsb2MgYW4gc3BpX2RldmljZSAqLw0KICAgICAgICBhbmNpbGxhcnkgPSBzcGlfYWxsb2NfZGV2 aWNlKGN0bHIpOw0KQEAgLTI1MjQsNiArMjUyOSw5IEBAIHN0cnVjdCBzcGlfZGV2aWNlICpzcGlf bmV3X2FuY2lsbGFyeV9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwNCg0KICAgICAgICBz dHJzY3B5KGFuY2lsbGFyeS0+bW9kYWxpYXMsICJkdW1teSIsIHNpemVvZihhbmNpbGxhcnktPm1v ZGFsaWFzKSk7DQogDQorICAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7 IGlkeCsrKQ0KKyAgICAgICAgICAgICAgIHNwaV9zZXRfY2hpcHNlbGVjdChhbmNpbGxhcnksIGlk eCwgMHhGRik7DQorDQogICAgICAgIC8qIFVzZSBwcm92aWRlZCBjaGlwLXNlbGVjdCBmb3IgYW5j aWxsYXJ5IGRldmljZSAqLw0KICAgICAgICBzcGlfc2V0X2NoaXBzZWxlY3QoYW5jaWxsYXJ5LCAw LCBjaGlwX3NlbGVjdCk7DQogDQpAQCAtMjczMiw2ICsyNzQwLDcgQEAgc3RydWN0IHNwaV9kZXZp Y2UgKmFjcGlfc3BpX2RldmljZV9hbGxvYyhzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIsDQog ICAgICAgIHN0cnVjdCBhY3BpX3NwaV9sb29rdXAgbG9va3VwID0ge307DQogICAgICAgIHN0cnVj dCBzcGlfZGV2aWNlICpzcGk7DQogICAgICAgIGludCByZXQ7DQorICAgICAgIHU4IGlkeDsNCiAN CiAgICAgICAgaWYgKCFjdGxyICYmIGluZGV4ID09IC0xKQ0KICAgICAgICAgICAgICAgIHJldHVy biBFUlJfUFRSKC1FSU5WQUwpOw0KQEAgLTI3NjcsNiArMjc3Niw5IEBAIHN0cnVjdCBzcGlfZGV2 aWNlICphY3BpX3NwaV9kZXZpY2VfYWxsb2Moc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLA0K ICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KICAgICAgICB9DQogDQor ICAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKQ0KKyAgICAg ICAgICAgICAgIHNwaV9zZXRfY2hpcHNlbGVjdChzcGksIGlkeCwgMHhGRik7DQorDQogICAgICAg IEFDUElfQ09NUEFOSU9OX1NFVCgmc3BpLT5kZXYsIGFkZXYpOw0KICAgICAgICBzcGktPm1heF9z cGVlZF9oeiAgICAgICA9IGxvb2t1cC5tYXhfc3BlZWRfaHo7DQogICAgICAgIHNwaS0+bW9kZSAg ICAgICAgICAgICAgIHw9IGxvb2t1cC5tb2RlOw0KDQpSZWdhcmRzLA0KQW1pdA0KIA0KPiBUaGFu a3MsDQo+IA0KPiBTdGVmYW4NCj4gDQo+ID4+IEhpLA0KPiA+Pg0KPiA+PiBJIHN0aWxsIHNlZSB0 aGUgc2FtZSBlcnJvcjoNCj4gPj4NCj4gPj4gW8KgwqDCoCAyLjc0ODU0Nl0gcHhhMnh4LXNwaSBw eGEyeHgtc3BpLjY6IGNoaXBzZWxlY3QgMCBhbHJlYWR5IGluIHVzZQ0KPiA+IFRoYW5rIHlvdSBm b3IgdGhlIHF1aWNrIHRlc3RpbmcuIEZvciBmdXJ0aGVyIGFuYWx5c2lzIEkgaGF2ZQ0KPiA+IGlu Y29ycG9yYXRlZCBhZGRpdGlvbmFsIGRlYnVnIHByaW50cyBvbiB0b3Agb2YgMS84IHBhdGNoLiBU aGUNCj4gPiBjb3JyZXNwb25kaW5nIGRpZmYgaXMgc2hhcmVkIGJlbG93LiBLaW5kbHkgaW1wbGVt ZW50IHRoZSBzcGVjaWZpZWQNCj4gPiBjaGFuZ2VzLCByZXJ1biB5b3VyIHRlc3QgYW5kIHNoYXJl IHRoZSBrZXJuZWwgbG9ncy4NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGku YyBiL2RyaXZlcnMvc3BpL3NwaS5jIGluZGV4DQo+ID4gZmY2NjE0N2JhOTVmLi43ZjU5ZWE4MTU5 M2QgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9zcGkvc3BpLmMNCj4gPiArKysgYi9kcml2ZXJz L3NwaS9zcGkuYw0KPiA+IEBAIC02MTgsOCArNjE4LDEwIEBAIHN0YXRpYyBpbnQgc3BpX2Rldl9j aGVjayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQNCj4gKmRhdGEpDQo+ID4gICAgICAgICAgaWYg KHNwaS0+Y29udHJvbGxlciA9PSBuZXdfc3BpLT5jb250cm9sbGVyKSB7DQo+ID4gICAgICAgICAg ICAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykgew0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICBjcyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIGlk eCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCIlcygpIFslZF0gQ1NbJWRd ID0gWyVkXVxuIiwgX19mdW5jX18sDQo+ID4gKyBfX0xJTkVfXywgaWR4LCBjcyk7DQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgIGZvciAobndfaWR4ID0gMDsgbndfaWR4IDwgU1BJX0NTX0NO VF9NQVg7IG53X2lkeCsrKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj c19udyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIG53X2lkeCk7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjc19udyA9IHNwaV9nZXRfY2hpcHNlbGVjdChuZXdfc3BpLCBu d19pZHgpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCIlcygp IFslZF0gQ1NfTkVXWyVkXSA9DQo+ID4gKyBbJWRdXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIG53 X2lkeCwgY3NfbncpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj cyAhPSAweEZGICYmIGNzX253ICE9IDB4RkYgJiYgY3MgPT0gY3NfbncpIHsNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiY2hpcHNlbGVj dCAlZCBhbHJlYWR5IGluIHVzZVxuIiwNCj4gY3NfbncpOw0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsgQEAgLTY1OSw4DQo+ID4gKzY2 MSwxMCBAQCBzdGF0aWMgaW50IF9fc3BpX2FkZF9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkNCj4gPiAgICAgICAgICAgKi8NCj4gPiAgICAgICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IFNQ SV9DU19DTlRfTUFYOyBpZHgrKykgew0KPiA+ICAgICAgICAgICAgICAgICAgY3MgPSBzcGlfZ2V0 X2NoaXBzZWxlY3Qoc3BpLCBpZHgpOw0KPiA+ICsgICAgICAgICAgICAgICBwcmludGsoIiVzKCkg WyVkXSBDU1slZF0gPSBbJWRdXG4iLCBfX2Z1bmNfXywNCj4gPiArIF9fTElORV9fLCBpZHgsIGNz KTsNCj4gPiAgICAgICAgICAgICAgICAgIGZvciAobndfaWR4ID0gaWR4ICsgMTsgbndfaWR4IDwg U1BJX0NTX0NOVF9NQVg7IG53X2lkeCsrKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg IG53X2NzID0gc3BpX2dldF9jaGlwc2VsZWN0KHNwaSwgbndfaWR4KTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBwcmludGsoIiVzKCkgWyVkXSBDU19ORVdbJWRdID0gWyVkXVxuIiwNCj4g PiArIF9fZnVuY19fLCBfX0xJTkVfXywgbndfaWR4LCBud19jcyk7DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChjcyAhPSAweEZGICYmIG53X2NzICE9IDB4RkYgJiYgY3MgPT0gbndf Y3MpIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwg ImNoaXBzZWxlY3QgJWQgYWxyZWFkeSBpbiB1c2VcbiIsIG53X2NzKTsNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVCVVNZOyBAQCAtMjQwMSw2ICsyNDA1LDkg QEANCj4gPiBzdGF0aWMgaW50IG9mX3NwaV9wYXJzZV9kdChzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIg KmN0bHIsIHN0cnVjdCBzcGlfZGV2aWNlICpzcGksDQo+ID4gICAgICAgICAgZm9yIChpZHggPSAw OyBpZHggPCByYzsgaWR4KyspDQo+ID4gICAgICAgICAgICAgICAgICBzcGlfc2V0X2NoaXBzZWxl Y3Qoc3BpLCBpZHgsIGNzW2lkeF0pOw0KPiA+DQo+ID4gKyAgICAgICBmb3IgKGlkeCA9IDA7IGlk eCA8IFNQSV9DU19DTlRfTUFYOyBpZHgrKykNCj4gPiArICAgICAgICAgICAgICAgcHJpbnRrKCIl cygpIFslZF0gQ1NbJWRdID0gWyVkXVxuIiwgX19mdW5jX18sDQo+ID4gKyBfX0xJTkVfXywgaWR4 LCBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCBpZHgpKTsNCj4gPiArDQo+ID4gICAgICAgICAgLyog c3BpLT5jaGlwX3NlbGVjdFtpXSBnaXZlcyB0aGUgY29ycmVzcG9uZGluZyBwaHlzaWNhbCBDUyBm b3IgbG9naWNhbCBDUyBpDQo+ID4gICAgICAgICAgICogbG9naWNhbCBDUyBudW1iZXIgaXMgcmVw cmVzZW50ZWQgYnkgc2V0dGluZyB0aGUgaXRoIGJpdCBpbiBzcGktDQo+ID5jc19pbmRleF9tYXNr DQo+ID4gICAgICAgICAgICogU28sIGZvciBleGFtcGxlLCBpZiBzcGktPmNzX2luZGV4X21hc2sg PSAweDAxIHRoZW4gbG9naWNhbA0KPiA+IENTIG51bWJlciBpcyAwIGFuZA0KPiA+DQo+ID4gUmVn YXJkcywNCj4gPiBBbWl0DQo+ID4NCj4gPj4gVGhhbmtzLA0KPiA+Pg0KPiA+PiBTdGVmYW4NCj4g Pj4NCj4gPj4+Pj4gKwkJCQlpZiAoY3MgIT0gMHhGRiAmJiBjc19udyAhPSAweEZGICYmIGNzDQo+ ID09DQo+ID4+Pj4gY3NfbncpIHsNCj4gPj4+Pj4gKwkJCQkJZGV2X2VycihkZXYsICJjaGlwc2Vs ZWN0ICVkDQo+IGFscmVhZHkgaW4NCj4gPj4+PiB1c2VcbiIsIGNzX253KTsNCj4gPj4+Pj4gKwkJ CQkJcmV0dXJuIC1FQlVTWTsNCj4gPj4+Pj4gKwkJCQl9DQo+ID4+Pj4+ICsJCQl9DQo+ID4+Pj4+ ICsJCX0NCj4gPj4+Pj4gKwl9DQo+ID4+Pj4+ICAgICAJcmV0dXJuIDA7DQo+ID4+Pj4+ICAgICB9 DQo+ID4+Pj4+DQo+ID4+Pj4+IEBAIC02MjksMTMgKzY0MCwzMiBAQCBzdGF0aWMgaW50IF9fc3Bp X2FkZF9kZXZpY2Uoc3RydWN0DQo+ID4+Pj4+IHNwaV9kZXZpY2UNCj4gPj4gKnNwaSkNCj4gPj4+ Pj4gICAgIHsNCj4gPj4+Pj4gICAgIAlzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0bHIgPSBzcGkt PmNvbnRyb2xsZXI7DQo+ID4+Pj4+ICAgICAJc3RydWN0IGRldmljZSAqZGV2ID0gY3Rsci0+ZGV2 LnBhcmVudDsNCj4gPj4+Pj4gLQlpbnQgc3RhdHVzOw0KPiA+Pj4+PiArCWludCBzdGF0dXMsIGlk eCwgbndfaWR4Ow0KPiA+Pj4+PiArCXU4IGNzLCBud19jczsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiAr CWZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKSB7DQo+ID4+Pj4+ICsJ CS8qIENoaXBzZWxlY3RzIGFyZSBudW1iZXJlZCAwLi5tYXg7IHZhbGlkYXRlLiAqLw0KPiA+Pj4+ PiArCQljcyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIGlkeCk7DQo+ID4+Pj4+ICsJCWlmIChj cyAhPSAweEZGICYmIGNzID49IGN0bHItPm51bV9jaGlwc2VsZWN0KSB7DQo+ID4+Pj4+ICsJCQlk ZXZfZXJyKGRldiwgImNzJWQgPj0gbWF4ICVkXG4iLA0KPiA+Pj4+IHNwaV9nZXRfY2hpcHNlbGVj dChzcGksIGlkeCksDQo+ID4+Pj4+ICsJCQkJY3Rsci0+bnVtX2NoaXBzZWxlY3QpOw0KPiA+Pj4+ PiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+Pj4+ICsJCX0NCj4gPj4+Pj4gKwl9DQo+ID4+Pj4+ DQo+ID4+Pj4+IC0JLyogQ2hpcHNlbGVjdHMgYXJlIG51bWJlcmVkIDAuLm1heDsgdmFsaWRhdGUu ICovDQo+ID4+Pj4+IC0JaWYgKHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIDApID49IGN0bHItPm51 bV9jaGlwc2VsZWN0KSB7DQo+ID4+Pj4+IC0JCWRldl9lcnIoZGV2LCAiY3MlZCA+PSBtYXggJWRc biIsIHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIDApLA0KPiA+Pj4+PiAtCQkJY3Rsci0+bnVtX2No aXBzZWxlY3QpOw0KPiA+Pj4+PiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4gKwkvKg0KPiA+ Pj4+PiArCSAqIE1ha2Ugc3VyZSB0aGF0IG11bHRpcGxlIGxvZ2ljYWwgQ1MgZG9lc24ndCBtYXAg dG8gdGhlIHNhbWUNCj4gPj4+PiBwaHlzaWNhbCBDUy4NCj4gPj4+Pj4gKwkgKiBGb3IgZXhhbXBs ZSwgc3BpLT5jaGlwX3NlbGVjdFswXSAhPSBzcGktPmNoaXBfc2VsZWN0WzFdIGFuZA0KPiBzbyBv bi4NCj4gPj4+Pj4gKwkgKi8NCj4gPj4+Pj4gKwlmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9DU19D TlRfTUFYOyBpZHgrKykgew0KPiA+Pj4+PiArCQljcyA9IHNwaV9nZXRfY2hpcHNlbGVjdChzcGks IGlkeCk7DQo+ID4+Pj4+ICsJCWZvciAobndfaWR4ID0gaWR4ICsgMTsgbndfaWR4IDwgU1BJX0NT X0NOVF9NQVg7DQo+IG53X2lkeCsrKSB7DQo+ID4+Pj4+ICsJCQlud19jcyA9IHNwaV9nZXRfY2hp cHNlbGVjdChzcGksIG53X2lkeCk7DQo+ID4+Pj4+ICsJCQlpZiAoY3MgIT0gMHhGRiAmJiBud19j cyAhPSAweEZGICYmIGNzID09DQo+IG53X2NzKSB7DQo+ID4+Pj4+ICsJCQkJZGV2X2VycihkZXYs ICJjaGlwc2VsZWN0ICVkIGFscmVhZHkgaW4NCj4gdXNlXG4iLA0KPiA+Pj4+IG53X2NzKTsNCj4g Pj4+Pj4gKwkJCQlyZXR1cm4gLUVCVVNZOw0KPiA+Pj4+PiArCQkJfQ0KPiA+Pj4+PiArCQl9DQo+ ID4+Pj4+ICAgICAJfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgCS8qIFNldCB0aGUgYnVzIElEIHN0 cmluZyAqLw0KPiA+Pj4+PiBAQCAtNjQ3LDExICs2NzcsOCBAQCBzdGF0aWMgaW50IF9fc3BpX2Fk ZF9kZXZpY2Uoc3RydWN0IHNwaV9kZXZpY2UNCj4gPj4gKnNwaSkNCj4gPj4+Pj4gICAgIAkgKiBp dHMgY29uZmlndXJhdGlvbi4NCj4gPj4+Pj4gICAgIAkgKi8NCj4gPj4+Pj4gICAgIAlzdGF0dXMg PSBidXNfZm9yX2VhY2hfZGV2KCZzcGlfYnVzX3R5cGUsIE5VTEwsIHNwaSwNCj4gc3BpX2Rldl9j aGVjayk7DQo+ID4+Pj4+IC0JaWYgKHN0YXR1cykgew0KPiA+Pj4+PiAtCQlkZXZfZXJyKGRldiwg ImNoaXBzZWxlY3QgJWQgYWxyZWFkeSBpbiB1c2VcbiIsDQo+ID4+Pj4+IC0JCQkJc3BpX2dldF9j aGlwc2VsZWN0KHNwaSwgMCkpOw0KPiA+Pj4+PiArCWlmIChzdGF0dXMpDQo+ID4+Pj4+ICAgICAJ CXJldHVybiBzdGF0dXM7DQo+ID4+Pj4+IC0JfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgCS8qIENv bnRyb2xsZXIgbWF5IHVucmVnaXN0ZXIgY29uY3VycmVudGx5ICovDQo+ID4+Pj4+ICAgICAJaWYg KElTX0VOQUJMRUQoQ09ORklHX1NQSV9EWU5BTUlDKSAmJiBAQCAtNjU5LDgNCj4gKzY4NiwxNSBA QA0KPiA+Pj4+IHN0YXRpYw0KPiA+Pj4+PiBpbnQgX19zcGlfYWRkX2RldmljZShzdHJ1Y3Qgc3Bp X2RldmljZSAqc3BpKQ0KPiA+Pj4+PiAgICAgCQlyZXR1cm4gLUVOT0RFVjsNCj4gPj4+Pj4gICAg IAl9DQo+ID4+Pj4+DQo+ID4+Pj4+IC0JaWYgKGN0bHItPmNzX2dwaW9kcykNCj4gPj4+Pj4gLQkJ c3BpX3NldF9jc2dwaW9kKHNwaSwgMCwgY3Rsci0+Y3NfZ3Bpb2RzW3NwaV9nZXRfY2hpcHNlbGVj dChzcGksDQo+ID4+Pj4gMCldKTsNCj4gPj4+Pj4gKwlpZiAoY3Rsci0+Y3NfZ3Bpb2RzKSB7DQo+ ID4+Pj4+ICsJCXU4IGNzOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJCWZvciAoaWR4ID0gMDsgaWR4 IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKSB7DQo+ID4+Pj4+ICsJCQljcyA9IHNwaV9nZXRfY2hp cHNlbGVjdChzcGksIGlkeCk7DQo+ID4+Pj4+ICsJCQlpZiAoY3MgIT0gMHhGRikNCj4gPj4+Pj4g KwkJCQlzcGlfc2V0X2NzZ3Bpb2Qoc3BpLCBpZHgsIGN0bHItDQo+ID5jc19ncGlvZHNbY3NdKTsN Cj4gPj4+Pj4gKwkJfQ0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAkvKg0KPiA+ Pj4+PiAgICAgCSAqIERyaXZlcnMgbWF5IG1vZGlmeSB0aGlzIGluaXRpYWwgaS9vIHNldHVwLCBi dXQgd2lsbCBAQA0KPiA+Pj4+PiAtNzAxLDYNCj4gPj4+Pj4gKzczNSw5IEBAIGludCBzcGlfYWRk X2RldmljZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQ0KPiA+Pj4+PiAgICAgCXN0cnVjdCBzcGlf Y29udHJvbGxlciAqY3RsciA9IHNwaS0+Y29udHJvbGxlcjsNCj4gPj4+Pj4gICAgIAlpbnQgc3Rh dHVzOw0KPiA+Pj4+Pg0KPiA+Pj4+PiArCS8qIFNldCB0aGUgYnVzIElEIHN0cmluZyAqLw0KPiA+ Pj4+PiArCXNwaV9kZXZfc2V0X25hbWUoc3BpKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgICAgCW11 dGV4X2xvY2soJmN0bHItPmFkZF9sb2NrKTsNCj4gPj4+Pj4gICAgIAlzdGF0dXMgPSBfX3NwaV9h ZGRfZGV2aWNlKHNwaSk7DQo+ID4+Pj4+ICAgICAJbXV0ZXhfdW5sb2NrKCZjdGxyLT5hZGRfbG9j ayk7IEBAIC05NDIsMzIgKzk3OSw1MSBAQA0KPiBzdGF0aWMNCj4gPj4+Pj4gdm9pZCBzcGlfcmVz X3JlbGVhc2Uoc3RydWN0IHNwaV9jb250cm9sbGVyDQo+ID4+Pj4gKmN0bHIsIHN0cnVjdCBzcGlf bWVzc2FnZSAqbWVzDQo+ID4+Pj4+ICAgICB9DQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IC8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiA+Pj4+PiAtLQ0KPiA+Pj4+PiAtLQ0KPiA+Pj4+PiAtLS0tLSovDQo+ID4+Pj4+ ICtzdGF0aWMgaW5saW5lIGJvb2wgc3BpX2lzX2xhc3RfY3Moc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkgew0KPiA+Pj4+PiArCXU4IGlkeDsNCj4gPj4+Pj4gKwlib29sIGxhc3QgPSBmYWxzZTsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArCWZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlk eCsrKSB7DQo+ID4+Pj4+ICsJCWlmICgoc3BpLT5jc19pbmRleF9tYXNrID4+IGlkeCkgJiAweDAx KSB7DQo+ID4+Pj4+ICsJCQlpZiAoc3BpLT5jb250cm9sbGVyLT5sYXN0X2NzW2lkeF0gPT0NCj4g Pj4+PiBzcGlfZ2V0X2NoaXBzZWxlY3Qoc3BpLCBpZHgpKQ0KPiA+Pj4+PiArCQkJCWxhc3QgPSB0 cnVlOw0KPiA+Pj4+PiArCQl9DQo+ID4+Pj4+ICsJfQ0KPiA+Pj4+PiArCXJldHVybiBsYXN0Ow0K PiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBzdGF0aWMgdm9pZCBz cGlfc2V0X2NzKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIGJvb2wgZW5hYmxlLCBib29sIGZvcmNl KQ0KPiA+Pj4+PiAgICAgew0KPiA+Pj4+PiAgICAgCWJvb2wgYWN0aXZhdGUgPSBlbmFibGU7DQo+ ID4+Pj4+ICsJdTggaWR4Ow0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgCS8qDQo+ID4+Pj4+ICAgICAJ ICogQXZvaWQgY2FsbGluZyBpbnRvIHRoZSBkcml2ZXIgKG9yIGRvaW5nIGRlbGF5cykgaWYgdGhl IGNoaXANCj4gc2VsZWN0DQo+ID4+Pj4+ICAgICAJICogaXNuJ3QgYWN0dWFsbHkgY2hhbmdpbmcg ZnJvbSB0aGUgbGFzdCB0aW1lIHRoaXMgd2FzIGNhbGxlZC4NCj4gPj4+Pj4gICAgIAkgKi8NCj4g Pj4+Pj4gLQlpZiAoIWZvcmNlICYmICgoZW5hYmxlICYmIHNwaS0+Y29udHJvbGxlci0+bGFzdF9j cyA9PQ0KPiA+Pj4+IHNwaV9nZXRfY2hpcHNlbGVjdChzcGksIDApKSB8fA0KPiA+Pj4+PiAtCQkg ICAgICAgKCFlbmFibGUgJiYgc3BpLT5jb250cm9sbGVyLT5sYXN0X2NzICE9DQo+ID4+Pj4gc3Bp X2dldF9jaGlwc2VsZWN0KHNwaSwgMCkpKSAmJg0KPiA+Pj4+PiArCWlmICghZm9yY2UgJiYgKChl bmFibGUgJiYgc3BpLT5jb250cm9sbGVyLT5sYXN0X2NzX2luZGV4X21hc2sNCj4gPT0NCj4gPj4+ Pj4gK3NwaS0NCj4gPj4+Pj4gY3NfaW5kZXhfbWFzayAmJg0KPiA+Pj4+PiArCQkJc3BpX2lzX2xh c3RfY3Moc3BpKSkgfHwNCj4gPj4+Pj4gKwkJICAgICAgICghZW5hYmxlICYmIHNwaS0+Y29udHJv bGxlci0+bGFzdF9jc19pbmRleF9tYXNrDQo+ID09IHNwaS0NCj4gPj4+Pj4gY3NfaW5kZXhfbWFz ayAmJg0KPiA+Pj4+PiArCQkJIXNwaV9pc19sYXN0X2NzKHNwaSkpKSAmJg0KPiA+Pj4+PiAgICAg CSAgICAoc3BpLT5jb250cm9sbGVyLT5sYXN0X2NzX21vZGVfaGlnaCA9PSAoc3BpLT5tb2RlICYN Cj4gPj4+PiBTUElfQ1NfSElHSCkpKQ0KPiA+Pj4+PiAgICAgCQlyZXR1cm47DQo+ID4+Pj4+DQo+ ID4+Pj4+ICAgICAJdHJhY2Vfc3BpX3NldF9jcyhzcGksIGFjdGl2YXRlKTsNCj4gPj4+Pj4NCj4g Pj4+Pj4gLQlzcGktPmNvbnRyb2xsZXItPmxhc3RfY3MgPSBlbmFibGUgPyBzcGlfZ2V0X2NoaXBz ZWxlY3Qoc3BpLCAwKSA6IC0xOw0KPiA+Pj4+PiArCXNwaS0+Y29udHJvbGxlci0+bGFzdF9jc19p bmRleF9tYXNrID0gc3BpLT5jc19pbmRleF9tYXNrOw0KPiA+Pj4+PiArCWZvciAoaWR4ID0gMDsg aWR4IDwgU1BJX0NTX0NOVF9NQVg7IGlkeCsrKQ0KPiA+Pj4+PiArCQlzcGktPmNvbnRyb2xsZXIt Pmxhc3RfY3NbaWR4XSA9IGVuYWJsZSA/DQo+ID4+Pj4+ICtzcGlfZ2V0X2NoaXBzZWxlY3Qoc3Bp LA0KPiA+Pj4+IDApDQo+ID4+Pj4+ICs6IC0xOw0KPiA+Pj4+PiAgICAgCXNwaS0+Y29udHJvbGxl ci0+bGFzdF9jc19tb2RlX2hpZ2ggPSBzcGktPm1vZGUgJg0KPiBTUElfQ1NfSElHSDsNCj4gPj4+ Pj4NCj4gPj4+Pj4gLQlpZiAoKHNwaV9nZXRfY3NncGlvZChzcGksIDApIHx8ICFzcGktPmNvbnRy b2xsZXItPnNldF9jc190aW1pbmcpICYmDQo+ID4+Pj4gIWFjdGl2YXRlKQ0KPiA+Pj4+PiAtCQlz cGlfZGVsYXlfZXhlYygmc3BpLT5jc19ob2xkLCBOVUxMKTsNCj4gPj4+Pj4gLQ0KPiA+Pj4+PiAg ICAgCWlmIChzcGktPm1vZGUgJiBTUElfQ1NfSElHSCkNCj4gPj4+Pj4gICAgIAkJZW5hYmxlID0g IWVuYWJsZTsNCj4gPj4+Pj4NCj4gPj4+Pj4gLQlpZiAoc3BpX2dldF9jc2dwaW9kKHNwaSwgMCkp IHsNCj4gPj4+Pj4gKwlpZiAoc3BpX2lzX2NzZ3Bpb2Qoc3BpKSkgew0KPiA+Pj4+PiArCQlpZiAo IXNwaS0+Y29udHJvbGxlci0+c2V0X2NzX3RpbWluZyAmJiAhYWN0aXZhdGUpDQo+ID4+Pj4+ICsJ CQlzcGlfZGVsYXlfZXhlYygmc3BpLT5jc19ob2xkLCBOVUxMKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+ PiAgICAgCQlpZiAoIShzcGktPm1vZGUgJiBTUElfTk9fQ1MpKSB7DQo+ID4+Pj4+ICAgICAJCQkv Kg0KPiA+Pj4+PiAgICAgCQkJICogSGlzdG9yaWNhbGx5IEFDUEkgaGFzIG5vIG1lYW5zIG9mIHRo ZSBHUElPDQo+IHBvbGFyaXR5DQo+ID4+Pj4gYW5kIEBADQo+ID4+Pj4+IC05NzksMjYgKzEwMzUs MzggQEAgc3RhdGljIHZvaWQgc3BpX3NldF9jcyhzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLA0KPiA+ Pj4+PiBib29sDQo+ID4+Pj4gZW5hYmxlLCBib29sIGZvcmNlKQ0KPiA+Pj4+PiAgICAgCQkJICog YW1iaWd1aXR5LiBUaGF0J3Mgd2h5IHdlIHVzZSBlbmFibGUsIHRoYXQNCj4gdGFrZXMNCj4gPj4+ PiBTUElfQ1NfSElHSA0KPiA+Pj4+PiAgICAgCQkJICogaW50byBhY2NvdW50Lg0KPiA+Pj4+PiAg ICAgCQkJICovDQo+ID4+Pj4+IC0JCQlpZiAoaGFzX2FjcGlfY29tcGFuaW9uKCZzcGktPmRldikp DQo+ID4+Pj4+IC0NCj4gPj4+PiAJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHNwaV9nZXRfY3Nn cGlvZChzcGksIDApLCAhZW5hYmxlKTsNCj4gPj4+Pj4gLQkJCWVsc2UNCj4gPj4+Pj4gLQkJCQkv KiBQb2xhcml0eSBoYW5kbGVkIGJ5IEdQSU8gbGlicmFyeSAqLw0KPiA+Pj4+PiAtDQo+ID4+Pj4g CWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChzcGlfZ2V0X2NzZ3Bpb2Qoc3BpLCAwKSwgYWN0aXZh dGUpOw0KPiA+Pj4+PiArCQkJZm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01BWDsgaWR4 KyspIHsNCj4gPj4+Pj4gKwkJCQlpZiAoKChzcGktPmNzX2luZGV4X21hc2sgPj4gaWR4KSAmDQo+ IDB4MDEpICYmDQo+ID4+Pj4+ICsJCQkJICAgIHNwaV9nZXRfY3NncGlvZChzcGksIGlkeCkpIHsN Cj4gPj4+Pj4gKwkJCQkJaWYgKGhhc19hY3BpX2NvbXBhbmlvbigmc3BpLQ0KPiA+ZGV2KSkNCj4g Pj4+Pj4gKw0KPiA+Pj4+IAlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoc3BpX2dldF9jc2dwaW9k KHNwaSwgaWR4KSwNCj4gPj4+Pj4gKw0KPiA+Pj4+ICFlbmFibGUpOw0KPiA+Pj4+PiArCQkJCQll bHNlDQo+ID4+Pj4+ICsJCQkJCQkvKiBQb2xhcml0eSBoYW5kbGVkIGJ5DQo+IEdQSU8NCj4gPj4+ PiBsaWJyYXJ5ICovDQo+ID4+Pj4+ICsNCj4gPj4+PiAJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVw KHNwaV9nZXRfY3NncGlvZChzcGksIGlkeCksDQo+ID4+Pj4+ICsNCj4gPj4+PiBhY3RpdmF0ZSk7 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJCQkJaWYgKGFjdGl2YXRlKQ0KPiA+Pj4+PiArCQkJCQkJ c3BpX2RlbGF5X2V4ZWMoJnNwaS0NCj4gPj4+Pj4gY3Nfc2V0dXAsIE5VTEwpOw0KPiA+Pj4+PiAr CQkJCQllbHNlDQo+ID4+Pj4+ICsJCQkJCQlzcGlfZGVsYXlfZXhlYygmc3BpLQ0KPiA+Pj4+PiBj c19pbmFjdGl2ZSwgTlVMTCk7DQo+ID4+Pj4+ICsJCQkJfQ0KPiA+Pj4+PiArCQkJfQ0KPiA+Pj4+ PiAgICAgCQl9DQo+ID4+Pj4+ICAgICAJCS8qIFNvbWUgU1BJIG1hc3RlcnMgbmVlZCBib3RoIEdQ SU8gQ1MgJg0KPiBzbGF2ZV9zZWxlY3QgKi8NCj4gPj4+Pj4gICAgIAkJaWYgKChzcGktPmNvbnRy b2xsZXItPmZsYWdzICYNCj4gU1BJX0NPTlRST0xMRVJfR1BJT19TUykgJiYNCj4gPj4+Pj4gICAg IAkJICAgIHNwaS0+Y29udHJvbGxlci0+c2V0X2NzKQ0KPiA+Pj4+PiAgICAgCQkJc3BpLT5jb250 cm9sbGVyLT5zZXRfY3Moc3BpLCAhZW5hYmxlKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQlpZiAo IXNwaS0+Y29udHJvbGxlci0+c2V0X2NzX3RpbWluZykgew0KPiA+Pj4+PiArCQkJaWYgKGFjdGl2 YXRlKQ0KPiA+Pj4+PiArCQkJCXNwaV9kZWxheV9leGVjKCZzcGktPmNzX3NldHVwLA0KPiBOVUxM KTsNCj4gPj4+Pj4gKwkJCWVsc2UNCj4gPj4+Pj4gKwkJCQlzcGlfZGVsYXlfZXhlYygmc3BpLT5j c19pbmFjdGl2ZSwNCj4gTlVMTCk7DQo+ID4+Pj4+ICsJCX0NCj4gPj4+Pj4gICAgIAl9IGVsc2Ug aWYgKHNwaS0+Y29udHJvbGxlci0+c2V0X2NzKSB7DQo+ID4+Pj4+ICAgICAJCXNwaS0+Y29udHJv bGxlci0+c2V0X2NzKHNwaSwgIWVuYWJsZSk7DQo+ID4+Pj4+ICAgICAJfQ0KPiA+Pj4+PiAtDQo+ ID4+Pj4+IC0JaWYgKHNwaV9nZXRfY3NncGlvZChzcGksIDApIHx8ICFzcGktPmNvbnRyb2xsZXIt PnNldF9jc190aW1pbmcpIHsNCj4gPj4+Pj4gLQkJaWYgKGFjdGl2YXRlKQ0KPiA+Pj4+PiAtCQkJ c3BpX2RlbGF5X2V4ZWMoJnNwaS0+Y3Nfc2V0dXAsIE5VTEwpOw0KPiA+Pj4+PiAtCQllbHNlDQo+ ID4+Pj4+IC0JCQlzcGlfZGVsYXlfZXhlYygmc3BpLT5jc19pbmFjdGl2ZSwgTlVMTCk7DQo+ID4+ Pj4+IC0JfQ0KPiA+Pj4+PiAgICAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgI2lmZGVmIENPTkZJ R19IQVNfRE1BDQo+ID4+Pj4+IEBAIC0yMjIyLDggKzIyOTAsOCBAQCBzdGF0aWMgdm9pZCBvZl9z cGlfcGFyc2VfZHRfY3NfZGVsYXkoc3RydWN0DQo+ID4+Pj4gZGV2aWNlX25vZGUgKm5jLA0KPiA+ Pj4+PiAgICAgc3RhdGljIGludCBvZl9zcGlfcGFyc2VfZHQoc3RydWN0IHNwaV9jb250cm9sbGVy ICpjdGxyLCBzdHJ1Y3QNCj4gPj4+Pj4gc3BpX2RldmljZQ0KPiA+PiAqc3BpLA0KPiA+Pj4+PiAg ICAgCQkJICAgc3RydWN0IGRldmljZV9ub2RlICpuYykNCj4gPj4+Pj4gICAgIHsNCj4gPj4+Pj4g LQl1MzIgdmFsdWU7DQo+ID4+Pj4+IC0JaW50IHJjOw0KPiA+Pj4+PiArCXUzMiB2YWx1ZSwgY3Nb U1BJX0NTX0NOVF9NQVhdOw0KPiA+Pj4+PiArCWludCByYywgaWR4Ow0KPiA+Pj4+Pg0KPiA+Pj4+ PiAgICAgCS8qIE1vZGUgKGNsb2NrIHBoYXNlL3BvbGFyaXR5L2V0Yy4pICovDQo+ID4+Pj4+ICAg ICAJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChuYywgInNwaS1jcGhhIikpIEBAIC0yMjk1LDE0 DQo+ID4+Pj4+ICsyMzYzLDUyDQo+ID4+Pj4gQEANCj4gPj4+Pj4gc3RhdGljIGludCBvZl9zcGlf cGFyc2VfZHQoc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyLCBzdHJ1Y3Qgc3BpX2RldmljZQ0K PiAqc3BpLA0KPiA+Pj4+PiAgICAgCQlyZXR1cm4gMDsNCj4gPj4+Pj4gICAgIAl9DQo+ID4+Pj4+ DQo+ID4+Pj4+ICsJaWYgKGN0bHItPm51bV9jaGlwc2VsZWN0ID4gU1BJX0NTX0NOVF9NQVgpIHsN Cj4gPj4+Pj4gKwkJZGV2X2VycigmY3Rsci0+ZGV2LCAiTm8uIG9mIENTIGlzIG1vcmUgdGhhbiBt YXguIG5vLg0KPiBvZg0KPiA+Pj4+IHN1cHBvcnRlZCBDU1xuIik7DQo+ID4+Pj4+ICsJCXJldHVy biAtRUlOVkFMOw0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCS8qDQo+ID4+Pj4+ ICsJICogWmVybygwKSBpcyBhIHZhbGlkIHBoeXNpY2FsIENTIHZhbHVlIGFuZCBjYW4gYmUgbG9j YXRlZCBhdA0KPiBhbnkNCj4gPj4+Pj4gKwkgKiBsb2dpY2FsIENTIGluIHRoZSBzcGktPmNoaXBf c2VsZWN0W10uIElmIGFsbCB0aGUgcGh5c2ljYWwgQ1MNCj4gPj4+Pj4gKwkgKiBhcmUgaW5pdGlh bGl6ZWQgdG8gMCB0aGVuIEl0IHdvdWxkIGJlIGRpZmZpY3VsdCB0byBkaWZmZXJlbnRpYXRlDQo+ ID4+Pj4+ICsJICogYmV0d2VlbiBhIHZhbGlkIHBoeXNpY2FsIENTIDAgJiBhbiB1bnVzZWQgbG9n aWNhbCBDUyB3aG9zZQ0KPiA+Pj4+IHBoeXNpY2FsDQo+ID4+Pj4+ICsJICogQ1MgY2FuIGJlIDAu IEFzIGEgc29sdXRpb24gdG8gdGhpcyBpc3N1ZSBpbml0aWFsaXplIGFsbCB0aGUgQ1MgdG8NCj4g MHhGRi4NCj4gPj4+Pj4gKwkgKiBOb3cgYWxsIHRoZSB1bnVzZWQgbG9naWNhbCBDUyB3aWxsIGhh dmUgMHhGRiBwaHlzaWNhbCBDUw0KPiA+Pj4+PiArdmFsdWUgJiBjYW4NCj4gPj4+PiBiZQ0KPiA+ Pj4+PiArCSAqIGlnbm9yZSB3aGlsZSBwZXJmb3JtaW5nIHBoeXNpY2FsIENTIHZhbGlkaXR5IGNo ZWNrcy4NCj4gPj4+Pj4gKwkgKi8NCj4gPj4+Pj4gKwlmb3IgKGlkeCA9IDA7IGlkeCA8IFNQSV9D U19DTlRfTUFYOyBpZHgrKykNCj4gPj4+Pj4gKwkJc3BpX3NldF9jaGlwc2VsZWN0KHNwaSwgaWR4 LCAweEZGKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgICAgCS8qIERldmljZSBhZGRyZXNzICovDQo+ ID4+Pj4+IC0JcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihuYywgInJlZyIsICZ2YWx1ZSk7DQo+ ID4+Pj4+IC0JaWYgKHJjKSB7DQo+ID4+Pj4+ICsJcmMgPSBvZl9wcm9wZXJ0eV9yZWFkX3Zhcmlh YmxlX3UzMl9hcnJheShuYywgInJlZyIsICZjc1swXSwNCj4gMSwNCj4gPj4+Pj4gKwkJCQkJCSBT UElfQ1NfQ05UX01BWCk7DQo+ID4+Pj4+ICsJaWYgKHJjIDwgMCkgew0KPiA+Pj4+PiAgICAgCQlk ZXZfZXJyKCZjdGxyLT5kZXYsICIlcE9GIGhhcyBubyB2YWxpZCAncmVnJyBwcm9wZXJ0eQ0KPiA+ Pj4+ICglZClcbiIsDQo+ID4+Pj4+ICAgICAJCQluYywgcmMpOw0KPiA+Pj4+PiAgICAgCQlyZXR1 cm4gcmM7DQo+ID4+Pj4+ICAgICAJfQ0KPiA+Pj4+PiAtCXNwaV9zZXRfY2hpcHNlbGVjdChzcGks IDAsIHZhbHVlKTsNCj4gPj4+Pj4gKwlpZiAocmMgPiBjdGxyLT5udW1fY2hpcHNlbGVjdCkgew0K PiA+Pj4+PiArCQlkZXZfZXJyKCZjdGxyLT5kZXYsICIlcE9GIGhhcyBudW1iZXIgb2YgQ1MgPiBj dGxyLQ0KPiA+Pj4+PiBudW1fY2hpcHNlbGVjdCAoJWQpXG4iLA0KPiA+Pj4+PiArCQkJbmMsIHJj KTsNCj4gPj4+Pj4gKwkJcmV0dXJuIHJjOw0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4gKwlpZiAoKG9m X3Byb3BlcnR5X3JlYWRfYm9vbChuYywgInBhcmFsbGVsLW1lbW9yaWVzIikpICYmDQo+ID4+Pj4+ ICsJICAgICghKGN0bHItPmZsYWdzICYgU1BJX0NPTlRST0xMRVJfTVVMVElfQ1MpKSkgew0KPiA+ Pj4+PiArCQlkZXZfZXJyKCZjdGxyLT5kZXYsICJTUEkgY29udHJvbGxlciBkb2Vzbid0IHN1cHBv cnQNCj4gbXVsdGkNCj4gPj4+PiBDU1xuIik7DQo+ID4+Pj4+ICsJCXJldHVybiAtRUlOVkFMOw0K PiA+Pj4+PiArCX0NCj4gPj4+Pj4gKwlmb3IgKGlkeCA9IDA7IGlkeCA8IHJjOyBpZHgrKykNCj4g Pj4+Pj4gKwkJc3BpX3NldF9jaGlwc2VsZWN0KHNwaSwgaWR4LCBjc1tpZHhdKTsNCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArCS8qIHNwaS0+Y2hpcF9zZWxlY3RbaV0gZ2l2ZXMgdGhlIGNvcnJlc3BvbmRp bmcgcGh5c2ljYWwgQ1MgZm9yDQo+ID4+Pj4+ICtsb2dpY2FsIENTDQo+ID4+Pj4gaQ0KPiA+Pj4+ PiArCSAqIGxvZ2ljYWwgQ1MgbnVtYmVyIGlzIHJlcHJlc2VudGVkIGJ5IHNldHRpbmcgdGhlIGl0 aCBiaXQgaW4NCj4gPj4+Pj4gK3NwaS0NCj4gPj4+Pj4gY3NfaW5kZXhfbWFzaw0KPiA+Pj4+PiAr CSAqIFNvLCBmb3IgZXhhbXBsZSwgaWYgc3BpLT5jc19pbmRleF9tYXNrID0gMHgwMSB0aGVuIGxv Z2ljYWwNCj4gQ1MNCj4gPj4+PiBudW1iZXIgaXMgMCBhbmQNCj4gPj4+Pj4gKwkgKiBzcGktPmNo aXBfc2VsZWN0WzBdIHdpbGwgZ2l2ZSB0aGUgcGh5c2ljYWwgQ1MuDQo+ID4+Pj4+ICsJICogQnkg ZGVmYXVsdCBzcGktPmNoaXBfc2VsZWN0WzBdIHdpbGwgaG9sZCB0aGUgcGh5c2ljYWwgQ1MNCj4g Pj4+Pj4gK251bWJlciBzbywNCj4gPj4+PiBzZXQNCj4gPj4+Pj4gKwkgKiBzcGktPmNzX2luZGV4 X21hc2sgYXMgMHgwMS4NCj4gPj4+Pj4gKwkgKi8NCj4gPj4+Pj4gKwlzcGktPmNzX2luZGV4X21h c2sgPSAweDAxOw0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgCS8qIERldmljZSBzcGVlZCAqLw0KPiA+ Pj4+PiAgICAgCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobmMsICJzcGktbWF4LWZyZXF1ZW5j eSIsICZ2YWx1ZSkpDQo+ID4+Pj4+IEBADQo+ID4+Pj4+IC0zMTAwLDYgKzMyMDYsNyBAQCBpbnQg c3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IHNwaV9jb250cm9sbGVyDQo+ICpjdGxyKQ0K PiA+Pj4+PiAgICAgCXN0cnVjdCBib2FyZGluZm8JKmJpOw0KPiA+Pj4+PiAgICAgCWludAkJCWZp cnN0X2R5bmFtaWM7DQo+ID4+Pj4+ICAgICAJaW50CQkJc3RhdHVzOw0KPiA+Pj4+PiArCWludAkJ CWlkeDsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAlpZiAoIWRldikNCj4gPj4+Pj4gICAgIAkJcmV0 dXJuIC1FTk9ERVY7DQo+ID4+Pj4+IEBAIC0zMTY0LDcgKzMyNzEsOCBAQCBpbnQgc3BpX3JlZ2lz dGVyX2NvbnRyb2xsZXIoc3RydWN0DQo+ID4+Pj4+IHNwaV9jb250cm9sbGVyDQo+ID4+Pj4gKmN0 bHIpDQo+ID4+Pj4+ICAgICAJfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgCS8qIFNldHRpbmcgbGFz dF9jcyB0byAtMSBtZWFucyBubyBjaGlwIHNlbGVjdGVkICovDQo+ID4+Pj4+IC0JY3Rsci0+bGFz dF9jcyA9IC0xOw0KPiA+Pj4+PiArCWZvciAoaWR4ID0gMDsgaWR4IDwgU1BJX0NTX0NOVF9NQVg7 IGlkeCsrKQ0KPiA+Pj4+PiArCQljdGxyLT5sYXN0X2NzW2lkeF0gPSAtMTsNCj4gPj4+Pj4NCj4g Pj4+Pj4gICAgIAlzdGF0dXMgPSBkZXZpY2VfYWRkKCZjdGxyLT5kZXYpOw0KPiA+Pj4+PiAgICAg CWlmIChzdGF0dXMgPCAwKQ0KPiA+Pj4+PiBAQCAtMzg4OSw3ICszOTk3LDcgQEAgc3RhdGljIGlu dCBfX3NwaV92YWxpZGF0ZShzdHJ1Y3Qgc3BpX2RldmljZQ0KPiA+Pj4+PiAqc3BpLA0KPiA+Pj4+ IHN0cnVjdCBzcGlfbWVzc2FnZSAqbWVzc2FnZSkNCj4gPj4+Pj4gICAgIAkgKiBjc19jaGFuZ2Ug aXMgc2V0IGZvciBlYWNoIHRyYW5zZmVyLg0KPiA+Pj4+PiAgICAgCSAqLw0KPiA+Pj4+PiAgICAg CWlmICgoc3BpLT5tb2RlICYgU1BJX0NTX1dPUkQpICYmICghKGN0bHItPm1vZGVfYml0cyAmDQo+ ID4+Pj4gU1BJX0NTX1dPUkQpIHx8DQo+ID4+Pj4+IC0JCQkJCSAgc3BpX2dldF9jc2dwaW9kKHNw aSwgMCkpKSB7DQo+ID4+Pj4+ICsJCQkJCSAgc3BpX2lzX2NzZ3Bpb2Qoc3BpKSkpIHsNCj4gPj4+ Pj4gICAgIAkJc2l6ZV90IG1heHNpemUgPSBCSVRTX1RPX0JZVEVTKHNwaS0+Yml0c19wZXJfd29y ZCk7DQo+ID4+Pj4+ICAgICAJCWludCByZXQ7DQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L3NwaS9zcGkuaCBiL2luY2x1ZGUvbGludXgvc3BpL3NwaS5oDQo+ID4+ Pj4+IGluZGV4IDdiNGJhZmY2M2M1Yy4uODcxZDNhNmQ4NzliIDEwMDY0NA0KPiA+Pj4+PiAtLS0g YS9pbmNsdWRlL2xpbnV4L3NwaS9zcGkuaA0KPiA+Pj4+PiArKysgYi9pbmNsdWRlL2xpbnV4L3Nw aS9zcGkuaA0KPiA+Pj4+PiBAQCAtMjAsNiArMjAsOSBAQA0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAg I2luY2x1ZGUgPHVhcGkvbGludXgvc3BpL3NwaS5oPg0KPiA+Pj4+Pg0KPiA+Pj4+PiArLyogTWF4 IG5vLiBvZiBDUyBzdXBwb3J0ZWQgcGVyIHNwaSBkZXZpY2UgKi8gI2RlZmluZQ0KPiA+Pj4+PiAr U1BJX0NTX0NOVF9NQVgNCj4gPj4+Pj4gKzQNCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgICAgc3RydWN0 IGRtYV9jaGFuOw0KPiA+Pj4+PiAgICAgc3RydWN0IHNvZnR3YXJlX25vZGU7DQo+ID4+Pj4+ICAg ICBzdHJ1Y3QgcHRwX3N5c3RlbV90aW1lc3RhbXA7DQo+ID4+Pj4+IEBAIC0xMzIsNyArMTM1LDgg QEAgZXh0ZXJuIHZvaWQNCj4gPj4+PiBzcGlfdHJhbnNmZXJfY3NfY2hhbmdlX2RlbGF5X2V4ZWMo c3RydWN0IHNwaV9tZXNzYWdlICptc2csDQo+ID4+Pj4+ICAgICAgKiBAbWF4X3NwZWVkX2h6OiBN YXhpbXVtIGNsb2NrIHJhdGUgdG8gYmUgdXNlZCB3aXRoIHRoaXMgY2hpcA0KPiA+Pj4+PiAgICAg ICoJKG9uIHRoaXMgYm9hcmQpOyBtYXkgYmUgY2hhbmdlZCBieSB0aGUgZGV2aWNlJ3MgZHJpdmVy Lg0KPiA+Pj4+PiAgICAgICoJVGhlIHNwaV90cmFuc2Zlci5zcGVlZF9oeiBjYW4gb3ZlcnJpZGUg dGhpcyBmb3IgZWFjaCB0cmFuc2Zlci4NCj4gPj4+Pj4gLSAqIEBjaGlwX3NlbGVjdDogQ2hpcHNl bGVjdCwgZGlzdGluZ3Vpc2hpbmcgY2hpcHMgaGFuZGxlZCBieQ0KPiBAY29udHJvbGxlci4NCj4g Pj4+Pj4gKyAqIEBjaGlwX3NlbGVjdDogQXJyYXkgb2YgcGh5c2ljYWwgY2hpcHNlbGVjdCwgc3Bp LT5jaGlwc2VsZWN0W2ldIGdpdmVzDQo+ID4+Pj4+ICsgKgl0aGUgY29ycmVzcG9uZGluZyBwaHlz aWNhbCBDUyBmb3IgbG9naWNhbCBDUyBpLg0KPiA+Pj4+PiAgICAgICogQG1vZGU6IFRoZSBzcGkg bW9kZSBkZWZpbmVzIGhvdyBkYXRhIGlzIGNsb2NrZWQgb3V0IGFuZCBpbi4NCj4gPj4+Pj4gICAg ICAqCVRoaXMgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIGRldmljZSdzIGRyaXZlci4NCj4gPj4+Pj4g ICAgICAqCVRoZSAiYWN0aXZlIGxvdyIgZGVmYXVsdCBmb3IgY2hpcHNlbGVjdCBtb2RlIGNhbiBi ZQ0KPiBvdmVycmlkZGVuDQo+ID4+Pj4+IEBAIC0xNTcsOCArMTYxLDggQEAgZXh0ZXJuIHZvaWQN Cj4gPj4+PiBzcGlfdHJhbnNmZXJfY3NfY2hhbmdlX2RlbGF5X2V4ZWMoc3RydWN0IHNwaV9tZXNz YWdlICptc2csDQo+ID4+Pj4+ICAgICAgKgl0aGUgZGV2aWNlIHdpbGwgYmluZCB0byB0aGUgbmFt ZWQgZHJpdmVyIGFuZCBvbmx5IHRoZSBuYW1lZA0KPiBkcml2ZXIuDQo+ID4+Pj4+ICAgICAgKglE byBub3Qgc2V0IGRpcmVjdGx5LCBiZWNhdXNlIGNvcmUgZnJlZXMgaXQ7IHVzZQ0KPiBkcml2ZXJf c2V0X292ZXJyaWRlKCkgdG8NCj4gPj4+Pj4gICAgICAqCXNldCBvciBjbGVhciBpdC4NCj4gPj4+ Pj4gLSAqIEBjc19ncGlvZDogR1BJTyBkZXNjcmlwdG9yIG9mIHRoZSBjaGlwc2VsZWN0IGxpbmUg KG9wdGlvbmFsLA0KPiA+Pj4+PiBOVUxMDQo+ID4+IHdoZW4NCj4gPj4+Pj4gLSAqCW5vdCB1c2lu ZyBhIEdQSU8gbGluZSkNCj4gPj4+Pj4gKyAqIEBjc19ncGlvZDogQXJyYXkgb2YgR1BJTyBkZXNj cmlwdG9ycyBvZiB0aGUgY29ycmVzcG9uZGluZw0KPiA+Pj4+PiArIGNoaXBzZWxlY3QNCj4gPj4+ PiBsaW5lcw0KPiA+Pj4+PiArICoJKG9wdGlvbmFsLCBOVUxMIHdoZW4gbm90IHVzaW5nIGEgR1BJ TyBsaW5lKQ0KPiA+Pj4+PiAgICAgICogQHdvcmRfZGVsYXk6IGRlbGF5IHRvIGJlIGluc2VydGVk IGJldHdlZW4gY29uc2VjdXRpdmUNCj4gPj4+Pj4gICAgICAqCXdvcmRzIG9mIGEgdHJhbnNmZXIN Cj4gPj4+Pj4gICAgICAqIEBjc19zZXR1cDogZGVsYXkgdG8gYmUgaW50cm9kdWNlZCBieSB0aGUg Y29udHJvbGxlciBhZnRlcg0KPiA+Pj4+PiBDUyBpcyBhc3NlcnRlZCBAQCAtMTY3LDYgKzE3MSw3 IEBAIGV4dGVybiB2b2lkDQo+ID4+Pj4gc3BpX3RyYW5zZmVyX2NzX2NoYW5nZV9kZWxheV9leGVj KHN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnLA0KPiA+Pj4+PiAgICAgICoJZGVhc3NlcnRlZC4gSWYg QGNzX2NoYW5nZV9kZWxheSBpcyB1c2VkIGZyb20gQHNwaV90cmFuc2ZlciwNCj4gdGhlbg0KPiA+ Pj4+IHRoZQ0KPiA+Pj4+PiAgICAgICoJdHdvIGRlbGF5cyB3aWxsIGJlIGFkZGVkIHVwLg0KPiA+ Pj4+PiAgICAgICogQHBjcHVfc3RhdGlzdGljczogc3RhdGlzdGljcyBmb3IgdGhlIHNwaV9kZXZp Y2UNCj4gPj4+Pj4gKyAqIEBjc19pbmRleF9tYXNrOiBCaXQgbWFzayBvZiB0aGUgYWN0aXZlIGNo aXBzZWxlY3QocykgaW4gdGhlDQo+ID4+Pj4+ICsgY2hpcHNlbGVjdCBhcnJheQ0KPiA+Pj4+PiAg ICAgICoNCj4gPj4+Pj4gICAgICAqIEEgQHNwaV9kZXZpY2UgaXMgdXNlZCB0byBpbnRlcmNoYW5n ZSBkYXRhIGJldHdlZW4gYW4gU1BJIHNsYXZlDQo+ID4+Pj4+ICAgICAgKiAodXN1YWxseSBhIGRp c2NyZXRlIGNoaXApIGFuZCBDUFUgbWVtb3J5Lg0KPiA+Pj4+PiBAQCAtMTgyLDcgKzE4Nyw3IEBA IHN0cnVjdCBzcGlfZGV2aWNlIHsNCj4gPj4+Pj4gICAgIAlzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIJ KmNvbnRyb2xsZXI7DQo+ID4+Pj4+ICAgICAJc3RydWN0IHNwaV9jb250cm9sbGVyCSptYXN0ZXI7 CS8qIENvbXBhdGliaWxpdHkgbGF5ZXINCj4gKi8NCj4gPj4+Pj4gICAgIAl1MzIJCQltYXhfc3Bl ZWRfaHo7DQo+ID4+Pj4+IC0JdTgJCQljaGlwX3NlbGVjdDsNCj4gPj4+Pj4gKwl1OAkJCWNoaXBf c2VsZWN0W1NQSV9DU19DTlRfTUFYXTsNCj4gPj4+Pj4gICAgIAl1OAkJCWJpdHNfcGVyX3dvcmQ7 DQo+ID4+Pj4+ICAgICAJYm9vbAkJCXJ0Ow0KPiA+Pj4+PiAgICAgI2RlZmluZSBTUElfTk9fVFgJ CUJJVCgzMSkJCS8qIE5vIHRyYW5zbWl0IHdpcmUgKi8NCj4gPj4+Pj4gQEAgLTIxMyw3ICsyMTgs NyBAQCBzdHJ1Y3Qgc3BpX2RldmljZSB7DQo+ID4+Pj4+ICAgICAJdm9pZAkJCSpjb250cm9sbGVy X2RhdGE7DQo+ID4+Pj4+ICAgICAJY2hhcgkJCW1vZGFsaWFzW1NQSV9OQU1FX1NJWkVdOw0KPiA+ Pj4+PiAgICAgCWNvbnN0IGNoYXIJCSpkcml2ZXJfb3ZlcnJpZGU7DQo+ID4+Pj4+IC0Jc3RydWN0 IGdwaW9fZGVzYwkqY3NfZ3Bpb2Q7CS8qIENoaXAgc2VsZWN0IEdQSU8gZGVzY3JpcHRvcg0KPiA+ Pj4+ICovDQo+ID4+Pj4+ICsJc3RydWN0IGdwaW9fZGVzYwkqY3NfZ3Bpb2RbU1BJX0NTX0NOVF9N QVhdOwkvKg0KPiBDaGlwIHNlbGVjdA0KPiA+Pj4+IGdwaW8gZGVzYyAqLw0KPiA+Pj4+PiAgICAg CXN0cnVjdCBzcGlfZGVsYXkJd29yZF9kZWxheTsgLyogSW50ZXItd29yZCBkZWxheSAqLw0KPiA+ Pj4+PiAgICAgCS8qIENTIGRlbGF5cyAqLw0KPiA+Pj4+PiAgICAgCXN0cnVjdCBzcGlfZGVsYXkJ Y3Nfc2V0dXA7DQo+ID4+Pj4+IEBAIC0yMjMsNiArMjI4LDEzIEBAIHN0cnVjdCBzcGlfZGV2aWNl IHsNCj4gPj4+Pj4gICAgIAkvKiBUaGUgc3RhdGlzdGljcyAqLw0KPiA+Pj4+PiAgICAgCXN0cnVj dCBzcGlfc3RhdGlzdGljcyBfX3BlcmNwdQkqcGNwdV9zdGF0aXN0aWNzOw0KPiA+Pj4+Pg0KPiA+ Pj4+PiArCS8qIEJpdCBtYXNrIG9mIHRoZSBjaGlwc2VsZWN0KHMpIHRoYXQgdGhlIGRyaXZlciBu ZWVkIHRvIHVzZQ0KPiBmcm9tDQo+ID4+Pj4+ICsJICogdGhlIGNoaXBzZWxlY3QgYXJyYXkuV2hl biB0aGUgY29udHJvbGxlciBpcyBjYXBhYmxlIHRvDQo+IGhhbmRsZQ0KPiA+Pj4+PiArCSAqIG11 bHRpcGxlIGNoaXAgc2VsZWN0cyAmIG1lbW9yaWVzIGFyZSBjb25uZWN0ZWQgaW4gcGFyYWxsZWwN Cj4gPj4+Pj4gKwkgKiB0aGVuIG1vcmUgdGhhbiBvbmUgYml0IG5lZWQgdG8gYmUgc2V0IGluIGNz X2luZGV4X21hc2suDQo+ID4+Pj4+ICsJICovDQo+ID4+Pj4+ICsJdTMyCQkJY3NfaW5kZXhfbWFz ayA6IFNQSV9DU19DTlRfTUFYOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAgICAJLyoNCj4gPj4+Pj4g ICAgIAkgKiBMaWtlbHkgbmVlZCBtb3JlIGhvb2tzIGZvciBtb3JlIHByb3RvY29sIG9wdGlvbnMg YWZmZWN0aW5nDQo+IGhvdw0KPiA+Pj4+PiAgICAgCSAqIHRoZSBjb250cm9sbGVyIHRhbGtzIHRv IGVhY2ggY2hpcCwgbGlrZToNCj4gPj4+Pj4gQEAgLTI3OSwyMiArMjkxLDMzIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCAqc3BpX2dldF9kcnZkYXRhKGNvbnN0DQo+ID4+Pj4+IHN0cnVjdCBzcGlfZGV2 aWNlICpzcGkpDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICBzdGF0aWMgaW5saW5lIHU4IHNwaV9nZXRf Y2hpcHNlbGVjdChjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCB1OCBpZHgpDQo+ID4+Pj4+ ICAgICB7DQo+ID4+Pj4+IC0JcmV0dXJuIHNwaS0+Y2hpcF9zZWxlY3Q7DQo+ID4+Pj4+ICsJcmV0 dXJuIHNwaS0+Y2hpcF9zZWxlY3RbaWR4XTsNCj4gPj4+Pj4gICAgIH0NCj4gPj4+Pj4NCj4gPj4+ Pj4gICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGlfc2V0X2NoaXBzZWxlY3Qoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSwNCj4gPj4+Pj4gdTggaWR4LCB1OA0KPiA+Pj4+IGNoaXBzZWxlY3QpDQo+ID4+ Pj4+ICAgICB7DQo+ID4+Pj4+IC0Jc3BpLT5jaGlwX3NlbGVjdCA9IGNoaXBzZWxlY3Q7DQo+ID4+ Pj4+ICsJc3BpLT5jaGlwX3NlbGVjdFtpZHhdID0gY2hpcHNlbGVjdDsNCj4gPj4+Pj4gICAgIH0N Cj4gPj4+Pj4NCj4gPj4+Pj4gICAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IGdwaW9fZGVzYyAqc3Bp X2dldF9jc2dwaW9kKGNvbnN0IHN0cnVjdA0KPiA+Pj4+PiBzcGlfZGV2aWNlICpzcGksDQo+ID4+ Pj4gdTggaWR4KQ0KPiA+Pj4+PiAgICAgew0KPiA+Pj4+PiAtCXJldHVybiBzcGktPmNzX2dwaW9k Ow0KPiA+Pj4+PiArCXJldHVybiBzcGktPmNzX2dwaW9kW2lkeF07DQo+ID4+Pj4+ICAgICB9DQo+ ID4+Pj4+DQo+ID4+Pj4+ICAgICBzdGF0aWMgaW5saW5lIHZvaWQgc3BpX3NldF9jc2dwaW9kKHN0 cnVjdCBzcGlfZGV2aWNlICpzcGksIHU4DQo+ID4+Pj4+IGlkeCwgc3RydWN0DQo+ID4+Pj4gZ3Bp b19kZXNjICpjc2dwaW9kKQ0KPiA+Pj4+PiAgICAgew0KPiA+Pj4+PiAtCXNwaS0+Y3NfZ3Bpb2Qg PSBjc2dwaW9kOw0KPiA+Pj4+PiArCXNwaS0+Y3NfZ3Bpb2RbaWR4XSA9IGNzZ3Bpb2Q7DQo+ID4+ Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBzcGlfaXNfY3Nn cGlvZChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKSB7DQo+ID4+Pj4+ICsJdTggaWR4Ow0KPiA+Pj4+ PiArDQo+ID4+Pj4+ICsJZm9yIChpZHggPSAwOyBpZHggPCBTUElfQ1NfQ05UX01BWDsgaWR4Kysp IHsNCj4gPj4+Pj4gKwkJaWYgKHNwaV9nZXRfY3NncGlvZChzcGksIGlkeCkpDQo+ID4+Pj4+ICsJ CQlyZXR1cm4gdHJ1ZTsNCj4gPj4+Pj4gKwl9DQo+ID4+Pj4+ICsJcmV0dXJuIGZhbHNlOw0KPiA+ Pj4+PiAgICAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgLyoqDQo+ID4+Pj4+IEBAIC0zOTksNiAr NDIyLDggQEAgZXh0ZXJuIHN0cnVjdCBzcGlfZGV2aWNlDQo+ID4+Pj4gKnNwaV9uZXdfYW5jaWxs YXJ5X2RldmljZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCB1OCBjaA0KPiA+Pj4+PiAgICAgICog QGJ1c19sb2NrX3NwaW5sb2NrOiBzcGlubG9jayBmb3IgU1BJIGJ1cyBsb2NraW5nDQo+ID4+Pj4+ ICAgICAgKiBAYnVzX2xvY2tfbXV0ZXg6IG11dGV4IGZvciBleGNsdXNpb24gb2YgbXVsdGlwbGUg Y2FsbGVycw0KPiA+Pj4+PiAgICAgICogQGJ1c19sb2NrX2ZsYWc6IGluZGljYXRlcyB0aGF0IHRo ZSBTUEkgYnVzIGlzIGxvY2tlZCBmb3INCj4gPj4+Pj4gZXhjbHVzaXZlIHVzZQ0KPiA+Pj4+PiAr ICogQG11bHRpX2NzX2NhcDogaW5kaWNhdGVzIHRoYXQgdGhlIFNQSSBDb250cm9sbGVyIGNhbiBh c3NlcnQvZGUtDQo+IGFzc2VydA0KPiA+Pj4+PiArICoJbW9yZSB0aGFuIG9uZSBjaGlwIHNlbGVj dCBhdCBvbmNlLg0KPiA+Pj4+PiAgICAgICogQHNldHVwOiB1cGRhdGVzIHRoZSBkZXZpY2UgbW9k ZSBhbmQgY2xvY2tpbmcgcmVjb3JkcyB1c2VkIGJ5IGENCj4gPj4+Pj4gICAgICAqCWRldmljZSdz IFNQSSBjb250cm9sbGVyOyBwcm90b2NvbCBjb2RlIG1heSBjYWxsIHRoaXMuICBUaGlzDQo+ID4+ Pj4+ICAgICAgKgltdXN0IGZhaWwgaWYgYW4gdW5yZWNvZ25pemVkIG9yIHVuc3VwcG9ydGVkIG1v ZGUgaXMNCj4gcmVxdWVzdGVkLg0KPiA+Pj4+PiBAQCAtNTY3LDYgKzU5MiwxMSBAQCBzdHJ1Y3Qg c3BpX2NvbnRyb2xsZXIgew0KPiA+Pj4+PiAgICAgI2RlZmluZSBTUElfQ09OVFJPTExFUl9NVVNU X1RYCQlCSVQoNCkJLyogUmVxdWlyZXMgdHgNCj4gPj4gKi8NCj4gPj4+Pj4gICAgICNkZWZpbmUg U1BJX0NPTlRST0xMRVJfR1BJT19TUwkJQklUKDUpCS8qIEdQSU8gQ1MNCj4gPj4gbXVzdA0KPiA+ Pj4+IHNlbGVjdCBzbGF2ZSAqLw0KPiA+Pj4+PiAgICAgI2RlZmluZSBTUElfQ09OVFJPTExFUl9T VVNQRU5ERUQJQklUKDYpCS8qIEN1cnJlbnRseQ0KPiA+Pj4+IHN1c3BlbmRlZCAqLw0KPiA+Pj4+ PiArCS8qDQo+ID4+Pj4+ICsJICogVGhlIHNwaS1jb250cm9sbGVyIGhhcyBtdWx0aSBjaGlwIHNl bGVjdCBjYXBhYmlsaXR5IGFuZCBjYW4NCj4gPj4+Pj4gKwkgKiBhc3NlcnQvZGUtYXNzZXJ0IG1v cmUgdGhhbiBvbmUgY2hpcCBzZWxlY3QgYXQgb25jZS4NCj4gPj4+Pj4gKwkgKi8NCj4gPj4+Pj4g KyNkZWZpbmUgU1BJX0NPTlRST0xMRVJfTVVMVElfQ1MJCUJJVCg3KQ0KPiA+Pj4+Pg0KPiA+Pj4+ PiAgICAgCS8qIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgYWxsb2NhdGlvbiBvZiB0aGlzIHN0cnVj dCBpcyBkZXZyZXMtDQo+IG1hbmFnZWQgKi8NCj4gPj4+Pj4gICAgIAlib29sCQkJZGV2bV9hbGxv Y2F0ZWQ7DQo+ID4+Pj4+IEBAIC02NzcsNyArNzA3LDggQEAgc3RydWN0IHNwaV9jb250cm9sbGVy IHsNCj4gPj4+Pj4gICAgIAlib29sCQkJCXJ0Ow0KPiA+Pj4+PiAgICAgCWJvb2wJCQkJYXV0b19y dW50aW1lX3BtOw0KPiA+Pj4+PiAgICAgCWJvb2wJCQkJY3VyX21zZ19tYXBwZWQ7DQo+ID4+Pj4+ IC0JY2hhcgkJCQlsYXN0X2NzOw0KPiA+Pj4+PiArCWNoYXIJCQkJbGFzdF9jc1tTUElfQ1NfQ05U X01BWF07DQo+ID4+Pj4+ICsJY2hhcgkJCQlsYXN0X2NzX2luZGV4X21hc2s7DQo+ID4+Pj4+ICAg ICAJYm9vbAkJCQlsYXN0X2NzX21vZGVfaGlnaDsNCj4gPj4+Pj4gICAgIAlib29sICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrOw0KPiA+Pj4+PiAgICAgCXN0cnVjdCBjb21wbGV0 aW9uICAgICAgICAgICAgICAgeGZlcl9jb21wbGV0aW9uOw0K