Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp1726019rwb; Sun, 15 Jan 2023 03:19:53 -0800 (PST) X-Google-Smtp-Source: AMrXdXuB8Q0CU+CXvl1fsGsYPKWjNdBGLzyS/mI0fK9raxDvx2Gbio1bFNKcmdWuaK7yzahPwHAq X-Received: by 2002:a05:6402:494:b0:49b:b1ab:f216 with SMTP id k20-20020a056402049400b0049bb1abf216mr9999966edv.11.1673781593186; Sun, 15 Jan 2023 03:19:53 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1673781593; cv=pass; d=google.com; s=arc-20160816; b=bOKVHuJrxgQzZHZ6LGrS3rG14KzifLeuZmF5qBE1ja+fHRSNYbK6MSfA0NwmDikpT2 lHbE4T9cCaweBQMo1PPC3+J8htiKQIhgLSEYTWOFhJFsBMGFrLlQQKfaYjr4O6ME5phq wpTYtUXXo76FZd6KF/wsSdDbMu+p/jYy2bJ7edMSMgJiiZIpHUMqOTylYQyvjpYbSCTX CXQWXLpTtEiwHayeOjWzSDIeyGY3NwhyY6xi/3kj4UNKEYj6qnrGX1oKaAVNMnf3LVnQ sNl5r3nl5T+YIiFXTSsKAoYSx1XvPmD++eM4PdWVbRowRNwkWw+1tb+oQfx9djSU/g7V 2peA== 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=HbM8qBq13R74cijNBngjyVUlb3IoD+EtQGA2tGsWrHs=; b=j1VaYklLG8CcLpOCTBGBxzFoKVql8cYYW10LmYyiiNf8aIB8bBEpfbHaX/8f6gyKKW Na4SZ232uMUcNNA3jAAi/YbOAoTWvX20PQVcUEWFezt323glmt9F3qP/JJKVcuH7Yr+W ujMguln91922/5r/x+22OE8hoPzCsEBNlgWlodwZtv1S960UfR6lUQ3n6Wk4uq6z0aPo 1EW0nN4STnGuoe8FBagLBquuwuiyuDLlhGM6KI8LF8tpq5K3Ac1kV9XnbA2aVzOYDjVs EqgpD+2xlgPly2+Mea+OwBXgwMBiWCl0V9bAIp3D5XlbSZUEVJHOg4+Dq5jbXPw0Tg6Z JQjw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=Z4nbMoZR; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.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=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f20-20020a056402355400b0048c0b5672cesi3914813edd.552.2023.01.15.03.19.40; Sun, 15 Jan 2023 03:19:53 -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=@Nvidia.com header.s=selector2 header.b=Z4nbMoZR; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.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=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229907AbjAOLF6 (ORCPT + 52 others); Sun, 15 Jan 2023 06:05:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230354AbjAOLFy (ORCPT ); Sun, 15 Jan 2023 06:05:54 -0500 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2085.outbound.protection.outlook.com [40.107.95.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78DBFE3BE for ; Sun, 15 Jan 2023 03:05:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f9enBmsuOlZJkNHdZnu7q88aoHQpq2FaaxpKswMCze0M/lAVqPvAFjbsgrTu3xbEuUCpRwhzZA1v9y7t7ZXlfS9/aFjuHP6gGgsUJbMHQIoJF+9E4GDylqmZmIMFONTXgWahTMMdpusQcTRAcpvmyf0f5lFowN7MEU6mOc4FWK/8bFVR3r9brSRbMKdWlSTV7ipfiMxBbAKSQfZ+64wDAwvIIODicYiYCoQ8f6a9JoMewY4RM0/mQ7k7kZDj3C0Ye+7cKYaG6ZtZqkhKf0fb2EjR8biMVU9/EaoHUyx8zOS0Xpx7OM57yM2xNovx5yM4v7iyMIzzvUQqTw6SufBg7w== 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=HbM8qBq13R74cijNBngjyVUlb3IoD+EtQGA2tGsWrHs=; b=PuY3DP41BO4fheYvQTTtCuIGWrsCUqoGeEZPDX1IXUc9L6nk6dCONjQzrHpYr2k4yvliMPgBtgRxnOFuYgG1/nrrPU8AREV9bi06uSFYcTom6RITrmDMYrh+LXWSeA7zgGkpLI3oIt/TDp5hVL09YK97ssP7y0ERWwx7YMq4HFulb0HqftwTooEGqPmIRO0PUJ82pEgJ1700xnpECjaf2Lf1Nhs+fMwZt3UWI6KNCPW2qwNkQq1kZd5z8pzyiyBmJ8+C7BKHXflZ9wziBRc3wFQvCo7WcO3ktY+bwPxdGCrCoG5KSoh0Mwrkr2WqxLsh/FMhK4WTJVNlWRvfEaFgsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HbM8qBq13R74cijNBngjyVUlb3IoD+EtQGA2tGsWrHs=; b=Z4nbMoZRqBTGpCtriWLb842EMrECMv//HULYcmy6SF6w7wNQ3TW3ZEeGMmYUngpdY9rynSquUY/7WMtU8VuOimJMEaKeL+iT1PzlzuC3dZNNV8XALLheWWrMV5ksFrfExc990aofYf/LQkP2jGzhWqURB+DVuvxvx2DhSkHRSd2I+nnOzSv+akNJYp59qoqSxEnizZwuUBATHgjDbeVCFfzSZTnkFPG7HcHF45UPv3RWtloYDHXZ7Of83BLFnXuPErqopQylWVBJcepFSlN6GHNUP3Ae53XP1VYX3Fd7BvFUNoG6K6l+h8olgcU0A7Bx+XlY1KT5IQm56xYSGyPm2Q== Received: from DM8PR12MB5400.namprd12.prod.outlook.com (2603:10b6:8:3b::12) by CH0PR12MB5219.namprd12.prod.outlook.com (2603:10b6:610:d2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.23; Sun, 15 Jan 2023 11:05:50 +0000 Received: from DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::70c6:a62a:4199:b8ed]) by DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::70c6:a62a:4199:b8ed%4]) with mapi id 15.20.5986.023; Sun, 15 Jan 2023 11:05:50 +0000 From: Eli Cohen To: Jason Wang , "mst@redhat.com" CC: "gdawar@amd.com" , "virtualization@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "tanuj.kamde@amd.com" Subject: RE: [PATCH 1/5] virtio_ring: per virtqueue dma device Thread-Topic: [PATCH 1/5] virtio_ring: per virtqueue dma device Thread-Index: AQHZJYXp/exib+Y5JEShlN8ZA2yzKK6fV1sQ Date: Sun, 15 Jan 2023 11:05:49 +0000 Message-ID: References: <20230111062809.25020-1-jasowang@redhat.com> <20230111062809.25020-2-jasowang@redhat.com> In-Reply-To: <20230111062809.25020-2-jasowang@redhat.com> 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=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR12MB5400:EE_|CH0PR12MB5219:EE_ x-ms-office365-filtering-correlation-id: a2673faf-d33a-4f2e-7f54-08daf6e87626 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: I8NNBz6Ml8YI/FnXvLrNMddoow+tL+xQbHwIVhJOfcEopPpL9Niyt2plr/qwivyEWfPoRMXmzxbvg/d18InReNkAC/l1E+DKrni//PRDgm1AhlD0KBuGLZsidqdnUB283cYOm1lMibpqIF5og31xM/4LCSFFFO53A+fS72vTpFX6dSnpZAuLmKK9rhuMed4A/3vUTFolpvWPG7VQtMk7V06CQ7JZLzwjuwxevT4KVI9Wz7a/BuGoC9pHCHt6Yy7mX5nexW+8covwEb6WeqCRHp9uJJU8ow1IkuWoXXIPEHk+6pV/NwxQroxGrW3wDGYPN/KR1HTQhd+ksLIHZ8ymnp6pf7jPWq50ndgYRefkb4gpC4KQhKS0UAQDP8HrnWgdsX0so5gPlaGy8dmk/trr8MSDzKnXiCYjjpxTKS0mEXp06QYWN/zkkRk0wqpQpJG/qNAduVNQR3jAUzgLCFPJ4hHm0XLPgL47OQQHaG9x9C4CDjuNnA1B1Xr1wEfHMO7P+NVYiMUbGJr0QCldyiusSHX0b2LREkmtny2tvGwq2YBOEd1b18+/3e0z6vI4D+q/9M3txivXfB8PUS65scPI7LcRuVrTi1IJyU9tuei4Rr3tUDSQ5Ixc3X3twUntu2Lw34tTyqAezX6gDI8cVCYCoQrK9TxxcJJCYkA22OIftLBuZZopks4NySk61Vi/omW/tbqI8NitbT0gb7ipRAkogg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR12MB5400.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(376002)(396003)(136003)(346002)(451199015)(7696005)(71200400001)(33656002)(478600001)(4326008)(8676002)(64756008)(66446008)(66476007)(66946007)(76116006)(66556008)(41300700001)(110136005)(54906003)(316002)(55016003)(38070700005)(38100700002)(122000001)(6506007)(53546011)(26005)(9686003)(186003)(83380400001)(86362001)(30864003)(5660300002)(2906002)(8936002)(52536014)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WEZ2aWs3RlJoYmNLWDhUQlBDZWpibk1ucjgrNzhyZ0JPYjR4N0JkMmJQdGo0?= =?utf-8?B?SmtjUVk4QVBkdllGZkFkMzJpQVVBTFpJYUZOR0VYZHNxN1FoR1pBV2p6T3Zi?= =?utf-8?B?RFMrRGU3RGY1L3hMSDFWMFBrVlBkNW00VWYybW84MnZrY0hwYTJLLzdEaXl5?= =?utf-8?B?OW5xZXBWTzczSUJpR2g5ZVIyaWtkbmVkak1nS2VaSjNQMjRyc0RWWE9aMWt4?= =?utf-8?B?TC9HWjRNWXVVb1pkUDFxZkRmYXltK1JCTEFGZ0hGMkt1S2tpaEQ2MGVwNzlM?= =?utf-8?B?aDMxc0tjSzdzWFVFVUJURVg5TjJzaFZ6NWwrUWhOQ1djVDRxVUREWUJidVpW?= =?utf-8?B?azZOU3ZCTmhwRWlqeUlJVjFpNTQzaU5RQW1jWm5pVzVxUU1CQUdOSmRhT2N0?= =?utf-8?B?UW5zZGloMmxqWDhzRDZmK0dkUHZQdzU3K2xqRDdLenZCRUVvODVja2g0WUhS?= =?utf-8?B?aUN6SmErVUdJVzVrSUw4S2Z1TWt0R3FDY1Nkc3ZaYWluR3lKNW5odGh4WHVY?= =?utf-8?B?LzUxQWdzbEdoeTVVaUVVMjNqdGFDYlRaN01IQkJaV2wyQ3IxSm9uMzlyd0JX?= =?utf-8?B?T0duT3hKZk5FMi81aVRvS1V3M2hnMDRLU3A1bG9PQ0s0NDFhNEZzTzRSK2tj?= =?utf-8?B?cm5DZ2IwZ2VUbEJTem9xeVVkRzkvVjFlQVBEaTVkcE9VZzBaMFR1QVJVY3V0?= =?utf-8?B?Y09yZ1FsNS9iTEJYdUo2WDlCMnZFeWN6Z3hlSGxSS2hVazdUb3hISXU4a0J0?= =?utf-8?B?M1d3Q3V0dFNHeWtDUkZWQjNTVnFRT3dPUUNGU3hEV3ppOVhTVWtaZ2lMS21B?= =?utf-8?B?Y21rbnJlY3JHeGhQRGJTa1orRXF6VmU3NkF6LzZHWWtqeHA0dDJFWGR3cC9x?= =?utf-8?B?RWFOcGpOdk9yMDRzWGVFU3VOREYrWkM5ZVNuajJPdDE3L1NuL0JwRnozWDhG?= =?utf-8?B?STNnUHE3cDlWUU1jZ0hDdXBlWUxFckJhSDJ5czNXemNUVjlnNE8zekpBcUlU?= =?utf-8?B?UEoxUU5OOG1UWm5Bc2hMN1h2bU9aVHIvQkdiQ1JnanhDOTVBVDdpUXVlVEly?= =?utf-8?B?c3NBcFFNdlpiL0Y0Zm1zRU1TWFJuOHk3OE1KNjR3VkVFdk5yMDgxM3VCQ1p0?= =?utf-8?B?MUJNYVZMUDN2QXdvMzlhTThSWDdxWWUyQjlVTlhwOUdSeThwSzZXcVQyVXM3?= =?utf-8?B?OGI4ZC8vdVFxcm5OWEFYKzZFUlhQTGQvQ2d4MlhQMHh3K0Z4aDlBV0hjK0pl?= =?utf-8?B?bkd2dzlSaGRobnFMcUhKcWtPTFVMTlZlbFNxZlhlMlFZV1pvMVd2dmhpVVRT?= =?utf-8?B?ZlQzdXBUNlp0WFpVWjlxbGdKOS9TM2Q3ZzR1VEJacmNQc1VsSmtqSU5MOVRy?= =?utf-8?B?a2FFajlwK3g4ZWkzQ1pVMWw2SXNXVktOTWR1MWVRd0ZKNC9TN3EyYk5tRkVN?= =?utf-8?B?N0w2TmgxakRKQnh3REZWcDNITENvVlIrVDVXWkNwODNjWWhKZmpSZ2M5OWZh?= =?utf-8?B?bThBU3ZzTG85MUp4b2QvYUphSGtHby9VZzhPVWVDTUNNTkMvemxHOGYyTzli?= =?utf-8?B?dkFibStRY3VSQ1BJRUI4cHFqVlE3anNWaUU1SUI0djNKbDBhWit4YVcyMTVu?= =?utf-8?B?QlFKWTZrbjhVSGt3bEZUZ1FROGNMbDdxS0lPdGFZQU9lcVkzUlhhV0dpMnR1?= =?utf-8?B?Vkl3dHJUa1R5MnhFYklKQnVvM2lhUTRqQm1zczJuTGcrZVdIb0wxemxWUlZ4?= =?utf-8?B?UW1KZmYxem03NDJpN2g2ZklySEs4NmVadzZGWnZnaFF2TGtrL0dRM3c1dURy?= =?utf-8?B?dm5MZGpNMlo3VlZkNGYvNGNLLzRnaUlJWDdoZjAyQ2Eya2F1QVR2Z01zZzIz?= =?utf-8?B?cjBleFNlQTlzZlI2bm9hYzdITm5wSGYrSnVFcHBoTzRuQ3JyM2NtSUlxRTk3?= =?utf-8?B?blY1REU4UzRVWTZESFRhL0pSWG14NWxrYWZUdk1pdmJHZzZjU21NUytVVVFS?= =?utf-8?B?UEhqT0JZaGRaaThubHJZRWQ1N25ORldmdUlLeVlTSVBKQmFXMmRTN3VUT1U5?= =?utf-8?B?N1paM2hKNUpyYy8rOUNLUGJvNVVEUXZrQ1FMM2pBYmVyWEhtMzJMQXZVR2xy?= =?utf-8?Q?vAJY=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR12MB5400.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2673faf-d33a-4f2e-7f54-08daf6e87626 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jan 2023 11:05:50.1268 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mVPJ0i+u9YGf9iKShH1xH9ZkJU2NGRA0jIW44nFzEytNOeG1mH1bCbYyerAuEtze X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5219 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no 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 PiBGcm9tOiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPg0KPiBTZW50OiBXZWRuZXNk YXksIDExIEphbnVhcnkgMjAyMyA4OjI4DQo+IFRvOiBtc3RAcmVkaGF0LmNvbTsgamFzb3dhbmdA cmVkaGF0LmNvbQ0KPiBDYzogRWxpIENvaGVuIDxlbGljQG52aWRpYS5jb20+OyBnZGF3YXJAYW1k LmNvbTsNCj4gdmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmc7IGxpbnV4 LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7DQo+IHRhbnVqLmthbWRlQGFtZC5jb20NCj4gU3ViamVj dDogW1BBVENIIDEvNV0gdmlydGlvX3Jpbmc6IHBlciB2aXJ0cXVldWUgZG1hIGRldmljZQ0KPiAN Cj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgcGVyIHZpcnRxdWV1ZSBkbWEgZGV2aWNlLiBUaGlz IHdpbGwgYmUgdXNlZA0KPiBmb3IgdmlydGlvIGRldmljZXMgd2hvc2UgdmlydHF1ZXVlIGFyZSBi YWNrZWQgYnkgZGlmZmVyZW50IHVuZGVybGF5ZXINCj4gZGV2aWNlcy4NCj4gDQo+IE9uZSBleGFt cGxlIGlzIHRoZSB2RFBBIHRoYXQgd2hlcmUgdGhlIGNvbnRyb2wgdmlydHF1ZXVlIGNvdWxkIGJl DQo+IGltcGxlbWVudGVkIHRocm91Z2ggc29mdHdhcmUgbWVkaWF0aW9uLg0KPiANCj4gU29tZSBv ZiB0aGUgd29yayBhcmUgYWN0dWFsbHkgZG9uZSBiZWZvcmUgc2luY2UgdGhlIGhlbHBlciBsaWtl DQo+IHZyaW5nX2RtYV9kZXZpY2UoKS4gVGhpcyB3b3JrIGxlZnQgYXJlOg0KPiANCj4gLSBMZXQg dnJpbmdfZG1hX2RldmljZSgpIHJldHVybiB0aGUgcGVyIHZpcnRxdWV1ZSBkbWEgZGV2aWNlIGlu c3RlYWQNCj4gICBvZiB0aGUgdmRldidzIHBhcmVudC4NCj4gLSBBbGxvdyBwYXNzaW5nIGEgZG1h X2RldmljZSB3aGVuIGNyZWF0aW5nIHRoZSB2aXJ0cXVldWUgdGhyb3VnaCBhIG5ldw0KPiAgIGhl bHBlciwgb2xkIHZyaW5nIGNyZWF0aW9uIGhlbHBlciB3aWxsIGtlZXAgdXNpbmcgdmRldidzIHBh cmVudC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5j b20+DQpSZXZpZXdlZC1ieTogRWxpIENvaGVuIDxlbGljQG52aWRpYS5jb20+DQpUZXN0ZWQtYnk6 IDxlbGljQG52aWRpYS5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy92aXJ0aW8vdmlydGlvX3Jpbmcu YyB8IDEzMyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiAgaW5jbHVkZS9s aW51eC92aXJ0aW9fcmluZy5oICB8ICAxNiArKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDkg aW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aXJ0aW8vdmlydGlvX3JpbmcuYyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19yaW5nLmMNCj4g aW5kZXggNzIzYzRlMjllMWQzLi40MTE0NGI1MjQ2YTggMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19yaW5nLmMNCj4gKysrIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3Jpbmcu Yw0KPiBAQCAtMjAyLDYgKzIwMiw5IEBAIHN0cnVjdCB2cmluZ192aXJ0cXVldWUgew0KPiAgCS8q IERNQSwgYWxsb2NhdGlvbiwgYW5kIHNpemUgaW5mb3JtYXRpb24gKi8NCj4gIAlib29sIHdlX293 bl9yaW5nOw0KPiANCj4gKwkvKiBEZXZpY2UgdXNlZCBmb3IgZG9pbmcgRE1BICovDQo+ICsJc3Ry dWN0IGRldmljZSAqZG1hX2RldjsNCj4gKw0KPiAgI2lmZGVmIERFQlVHDQo+ICAJLyogVGhleSdy ZSBzdXBwb3NlZCB0byBsb2NrIGZvciB1cy4gKi8NCj4gIAl1bnNpZ25lZCBpbnQgaW5fdXNlOw0K PiBAQCAtMjE5LDcgKzIyMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlDQo+ICpfX3ZyaW5n X25ld192aXJ0cXVldWUodW5zaWduZWQgaW50IGluZGV4LA0KPiAgCQkJCQkgICAgICAgYm9vbCBj b250ZXh0LA0KPiAgCQkJCQkgICAgICAgYm9vbCAoKm5vdGlmeSkoc3RydWN0IHZpcnRxdWV1ZSAq KSwNCj4gIAkJCQkJICAgICAgIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0IHZpcnRxdWV1ZQ0KPiAq KSwNCj4gLQkJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOw0KPiArCQkJCQkgICAgICAgY29u c3QgY2hhciAqbmFtZSwNCj4gKwkJCQkJICAgICAgIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpOw0K PiAgc3RhdGljIHN0cnVjdCB2cmluZ19kZXNjX2V4dHJhICp2cmluZ19hbGxvY19kZXNjX2V4dHJh KHVuc2lnbmVkIGludCBudW0pOw0KPiAgc3RhdGljIHZvaWQgdnJpbmdfZnJlZShzdHJ1Y3Qgdmly dHF1ZXVlICpfdnEpOw0KPiANCj4gQEAgLTI5NywxMCArMzAxLDExIEBAIHNpemVfdCB2aXJ0aW9f bWF4X2RtYV9zaXplKHN0cnVjdCB2aXJ0aW9fZGV2aWNlDQo+ICp2ZGV2KQ0KPiAgRVhQT1JUX1NZ TUJPTF9HUEwodmlydGlvX21heF9kbWFfc2l6ZSk7DQo+IA0KPiAgc3RhdGljIHZvaWQgKnZyaW5n X2FsbG9jX3F1ZXVlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCBzaXplX3Qgc2l6ZSwNCj4g LQkJCSAgICAgIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIGdmcF90IGZsYWcpDQo+ICsJCQkgICAg ICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZmxhZywNCj4gKwkJCSAgICAgICBzdHJ1 Y3QgZGV2aWNlICpkbWFfZGV2KQ0KPiAgew0KPiAgCWlmICh2cmluZ191c2VfZG1hX2FwaSh2ZGV2 KSkgew0KPiAtCQlyZXR1cm4gZG1hX2FsbG9jX2NvaGVyZW50KHZkZXYtPmRldi5wYXJlbnQsIHNp emUsDQo+ICsJCXJldHVybiBkbWFfYWxsb2NfY29oZXJlbnQoZG1hX2Rldiwgc2l6ZSwNCj4gIAkJ CQkJICBkbWFfaGFuZGxlLCBmbGFnKTsNCj4gIAl9IGVsc2Ugew0KPiAgCQl2b2lkICpxdWV1ZSA9 IGFsbG9jX3BhZ2VzX2V4YWN0KFBBR0VfQUxJR04oc2l6ZSksIGZsYWcpOw0KPiBAQCAtMzMwLDEw ICszMzUsMTEgQEAgc3RhdGljIHZvaWQgKnZyaW5nX2FsbG9jX3F1ZXVlKHN0cnVjdCB2aXJ0aW9f ZGV2aWNlDQo+ICp2ZGV2LCBzaXplX3Qgc2l6ZSwNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCB2 cmluZ19mcmVlX3F1ZXVlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCBzaXplX3Qgc2l6ZSwN Cj4gLQkJCSAgICAgdm9pZCAqcXVldWUsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSkNCj4gKwkJCSAg ICAgdm9pZCAqcXVldWUsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSwNCj4gKwkJCSAgICAgc3RydWN0 IGRldmljZSAqZG1hX2RldikNCj4gIHsNCj4gIAlpZiAodnJpbmdfdXNlX2RtYV9hcGkodmRldikp DQo+IC0JCWRtYV9mcmVlX2NvaGVyZW50KHZkZXYtPmRldi5wYXJlbnQsIHNpemUsIHF1ZXVlLA0K PiBkbWFfaGFuZGxlKTsNCj4gKwkJZG1hX2ZyZWVfY29oZXJlbnQoZG1hX2Rldiwgc2l6ZSwgcXVl dWUsIGRtYV9oYW5kbGUpOw0KPiAgCWVsc2UNCj4gIAkJZnJlZV9wYWdlc19leGFjdChxdWV1ZSwg UEFHRV9BTElHTihzaXplKSk7DQo+ICB9DQo+IEBAIC0zNDEsMTEgKzM0NywxMSBAQCBzdGF0aWMg dm9pZCB2cmluZ19mcmVlX3F1ZXVlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlDQo+ICp2ZGV2LCBzaXpl X3Qgc2l6ZSwNCj4gIC8qDQo+ICAgKiBUaGUgRE1BIG9wcyBvbiB2YXJpb3VzIGFyY2hlcyBhcmUg cmF0aGVyIGduYXJseSByaWdodCBub3csIGFuZA0KPiAgICogbWFraW5nIGFsbCBvZiB0aGUgYXJj aCBETUEgb3BzIHdvcmsgb24gdGhlIHZyaW5nIGRldmljZSBpdHNlbGYNCj4gLSAqIGlzIGEgbWVz cy4gIEZvciBub3csIHdlIHVzZSB0aGUgcGFyZW50IGRldmljZSBmb3IgRE1BIG9wcy4NCj4gKyAq IGlzIGEgbWVzcy4NCj4gICAqLw0KPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZGV2aWNlICp2cmlu Z19kbWFfZGV2KGNvbnN0IHN0cnVjdCB2cmluZ192aXJ0cXVldWUgKnZxKQ0KPiAgew0KPiAtCXJl dHVybiB2cS0+dnEudmRldi0+ZGV2LnBhcmVudDsNCj4gKwlyZXR1cm4gdnEtPmRtYV9kZXY7DQo+ ICB9DQo+IA0KPiAgLyogTWFwIG9uZSBzZyBlbnRyeS4gKi8NCj4gQEAgLTEwMzIsMTEgKzEwMzgs MTIgQEAgc3RhdGljIGludCB2cmluZ19hbGxvY19zdGF0ZV9leHRyYV9zcGxpdChzdHJ1Y3QNCj4g dnJpbmdfdmlydHF1ZXVlX3NwbGl0ICp2cmluZ19zcGwNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9p ZCB2cmluZ19mcmVlX3NwbGl0KHN0cnVjdCB2cmluZ192aXJ0cXVldWVfc3BsaXQgKnZyaW5nX3Nw bGl0LA0KPiAtCQkJICAgICBzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikNCj4gKwkJCSAgICAg c3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpDQo+ICB7 DQo+ICAJdnJpbmdfZnJlZV9xdWV1ZSh2ZGV2LCB2cmluZ19zcGxpdC0+cXVldWVfc2l6ZV9pbl9i eXRlcywNCj4gIAkJCSB2cmluZ19zcGxpdC0+dnJpbmcuZGVzYywNCj4gLQkJCSB2cmluZ19zcGxp dC0+cXVldWVfZG1hX2FkZHIpOw0KPiArCQkJIHZyaW5nX3NwbGl0LT5xdWV1ZV9kbWFfYWRkciwN Cj4gKwkJCSBkbWFfZGV2KTsNCj4gDQo+ICAJa2ZyZWUodnJpbmdfc3BsaXQtPmRlc2Nfc3RhdGUp Ow0KPiAgCWtmcmVlKHZyaW5nX3NwbGl0LT5kZXNjX2V4dHJhKTsNCj4gQEAgLTEwNDYsNyArMTA1 Myw4IEBAIHN0YXRpYyBpbnQgdnJpbmdfYWxsb2NfcXVldWVfc3BsaXQoc3RydWN0DQo+IHZyaW5n X3ZpcnRxdWV1ZV9zcGxpdCAqdnJpbmdfc3BsaXQsDQo+ICAJCQkJICAgc3RydWN0IHZpcnRpb19k ZXZpY2UgKnZkZXYsDQo+ICAJCQkJICAgdTMyIG51bSwNCj4gIAkJCQkgICB1bnNpZ25lZCBpbnQg dnJpbmdfYWxpZ24sDQo+IC0JCQkJICAgYm9vbCBtYXlfcmVkdWNlX251bSkNCj4gKwkJCQkgICBi b29sIG1heV9yZWR1Y2VfbnVtLA0KPiArCQkJCSAgIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpDQo+ ICB7DQo+ICAJdm9pZCAqcXVldWUgPSBOVUxMOw0KPiAgCWRtYV9hZGRyX3QgZG1hX2FkZHI7DQo+ IEBAIC0xMDYxLDcgKzEwNjksOCBAQCBzdGF0aWMgaW50IHZyaW5nX2FsbG9jX3F1ZXVlX3NwbGl0 KHN0cnVjdA0KPiB2cmluZ192aXJ0cXVldWVfc3BsaXQgKnZyaW5nX3NwbGl0LA0KPiAgCWZvciAo OyBudW0gJiYgdnJpbmdfc2l6ZShudW0sIHZyaW5nX2FsaWduKSA+IFBBR0VfU0laRTsgbnVtIC89 IDIpIHsNCj4gIAkJcXVldWUgPSB2cmluZ19hbGxvY19xdWV1ZSh2ZGV2LCB2cmluZ19zaXplKG51 bSwgdnJpbmdfYWxpZ24pLA0KPiAgCQkJCQkgICZkbWFfYWRkciwNCj4gLQkJCQkJICBHRlBfS0VS TkVMIHwgX19HRlBfTk9XQVJOIHwNCj4gX19HRlBfWkVSTyk7DQo+ICsJCQkJCSAgR0ZQX0tFUk5F TCB8IF9fR0ZQX05PV0FSTiB8DQo+IF9fR0ZQX1pFUk8sDQo+ICsJCQkJCSAgZG1hX2Rldik7DQo+ ICAJCWlmIChxdWV1ZSkNCj4gIAkJCWJyZWFrOw0KPiAgCQlpZiAoIW1heV9yZWR1Y2VfbnVtKQ0K PiBAQCAtMTA3NCw3ICsxMDgzLDggQEAgc3RhdGljIGludCB2cmluZ19hbGxvY19xdWV1ZV9zcGxp dChzdHJ1Y3QNCj4gdnJpbmdfdmlydHF1ZXVlX3NwbGl0ICp2cmluZ19zcGxpdCwNCj4gIAlpZiAo IXF1ZXVlKSB7DQo+ICAJCS8qIFRyeSB0byBnZXQgYSBzaW5nbGUgcGFnZS4gWW91IGFyZSBteSBv bmx5IGhvcGUhICovDQo+ICAJCXF1ZXVlID0gdnJpbmdfYWxsb2NfcXVldWUodmRldiwgdnJpbmdf c2l6ZShudW0sIHZyaW5nX2FsaWduKSwNCj4gLQkJCQkJICAmZG1hX2FkZHIsIEdGUF9LRVJORUwg fA0KPiBfX0dGUF9aRVJPKTsNCj4gKwkJCQkJICAmZG1hX2FkZHIsIEdGUF9LRVJORUwgfA0KPiBf X0dGUF9aRVJPLA0KPiArCQkJCQkgIGRtYV9kZXYpOw0KPiAgCX0NCj4gIAlpZiAoIXF1ZXVlKQ0K PiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gQEAgLTExMDAsMjEgKzExMTAsMjIgQEAgc3RhdGljIHN0 cnVjdCB2aXJ0cXVldWUNCj4gKnZyaW5nX2NyZWF0ZV92aXJ0cXVldWVfc3BsaXQoDQo+ICAJYm9v bCBjb250ZXh0LA0KPiAgCWJvb2wgKCpub3RpZnkpKHN0cnVjdCB2aXJ0cXVldWUgKiksDQo+ICAJ dm9pZCAoKmNhbGxiYWNrKShzdHJ1Y3QgdmlydHF1ZXVlICopLA0KPiAtCWNvbnN0IGNoYXIgKm5h bWUpDQo+ICsJY29uc3QgY2hhciAqbmFtZSwNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KQ0K PiAgew0KPiAgCXN0cnVjdCB2cmluZ192aXJ0cXVldWVfc3BsaXQgdnJpbmdfc3BsaXQgPSB7fTsN Cj4gIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsNCj4gIAlpbnQgZXJyOw0KPiANCj4gIAllcnIgPSB2 cmluZ19hbGxvY19xdWV1ZV9zcGxpdCgmdnJpbmdfc3BsaXQsIHZkZXYsIG51bSwgdnJpbmdfYWxp Z24sDQo+IC0JCQkJICAgICAgbWF5X3JlZHVjZV9udW0pOw0KPiArCQkJCSAgICAgIG1heV9yZWR1 Y2VfbnVtLCBkbWFfZGV2KTsNCj4gIAlpZiAoZXJyKQ0KPiAgCQlyZXR1cm4gTlVMTDsNCj4gDQo+ ICAJdnEgPSBfX3ZyaW5nX25ld192aXJ0cXVldWUoaW5kZXgsICZ2cmluZ19zcGxpdCwgdmRldiwg d2Vha19iYXJyaWVycywNCj4gLQkJCQkgICBjb250ZXh0LCBub3RpZnksIGNhbGxiYWNrLCBuYW1l KTsNCj4gKwkJCQkgICBjb250ZXh0LCBub3RpZnksIGNhbGxiYWNrLCBuYW1lLCBkbWFfZGV2KTsN Cj4gIAlpZiAoIXZxKSB7DQo+IC0JCXZyaW5nX2ZyZWVfc3BsaXQoJnZyaW5nX3NwbGl0LCB2ZGV2 KTsNCj4gKwkJdnJpbmdfZnJlZV9zcGxpdCgmdnJpbmdfc3BsaXQsIHZkZXYsIGRtYV9kZXYpOw0K PiAgCQlyZXR1cm4gTlVMTDsNCj4gIAl9DQo+IA0KPiBAQCAtMTEzMiw3ICsxMTQzLDggQEAgc3Rh dGljIGludCB2aXJ0cXVldWVfcmVzaXplX3NwbGl0KHN0cnVjdCB2aXJ0cXVldWUNCj4gKl92cSwg dTMyIG51bSkNCj4gDQo+ICAJZXJyID0gdnJpbmdfYWxsb2NfcXVldWVfc3BsaXQoJnZyaW5nX3Nw bGl0LCB2ZGV2LCBudW0sDQo+ICAJCQkJICAgICAgdnEtPnNwbGl0LnZyaW5nX2FsaWduLA0KPiAt CQkJCSAgICAgIHZxLT5zcGxpdC5tYXlfcmVkdWNlX251bSk7DQo+ICsJCQkJICAgICAgdnEtPnNw bGl0Lm1heV9yZWR1Y2VfbnVtLA0KPiArCQkJCSAgICAgIHZyaW5nX2RtYV9kZXYodnEpKTsNCj4g IAlpZiAoZXJyKQ0KPiAgCQlnb3RvIGVycjsNCj4gDQo+IEBAIC0xMTUwLDcgKzExNjIsNyBAQCBz dGF0aWMgaW50IHZpcnRxdWV1ZV9yZXNpemVfc3BsaXQoc3RydWN0IHZpcnRxdWV1ZQ0KPiAqX3Zx LCB1MzIgbnVtKQ0KPiAgCXJldHVybiAwOw0KPiANCj4gIGVycl9zdGF0ZV9leHRyYToNCj4gLQl2 cmluZ19mcmVlX3NwbGl0KCZ2cmluZ19zcGxpdCwgdmRldik7DQo+ICsJdnJpbmdfZnJlZV9zcGxp dCgmdnJpbmdfc3BsaXQsIHZkZXYsIHZyaW5nX2RtYV9kZXYodnEpKTsNCj4gIGVycjoNCj4gIAl2 aXJ0cXVldWVfcmVpbml0X3NwbGl0KHZxKTsNCj4gIAlyZXR1cm4gLUVOT01FTTsNCj4gQEAgLTE4 NDEsMjIgKzE4NTMsMjYgQEAgc3RhdGljIHN0cnVjdCB2cmluZ19kZXNjX2V4dHJhDQo+ICp2cmlu Z19hbGxvY19kZXNjX2V4dHJhKHVuc2lnbmVkIGludCBudW0pDQo+ICB9DQo+IA0KPiAgc3RhdGlj IHZvaWQgdnJpbmdfZnJlZV9wYWNrZWQoc3RydWN0IHZyaW5nX3ZpcnRxdWV1ZV9wYWNrZWQgKnZy aW5nX3BhY2tlZCwNCj4gLQkJCSAgICAgIHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQ0KPiAr CQkJICAgICAgc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsDQo+ICsJCQkgICAgICBzdHJ1Y3Qg ZGV2aWNlICpkbWFfZGV2KQ0KPiAgew0KPiAgCWlmICh2cmluZ19wYWNrZWQtPnZyaW5nLmRlc2Mp DQo+ICAJCXZyaW5nX2ZyZWVfcXVldWUodmRldiwgdnJpbmdfcGFja2VkLT5yaW5nX3NpemVfaW5f Ynl0ZXMsDQo+ICAJCQkJIHZyaW5nX3BhY2tlZC0+dnJpbmcuZGVzYywNCj4gLQkJCQkgdnJpbmdf cGFja2VkLT5yaW5nX2RtYV9hZGRyKTsNCj4gKwkJCQkgdnJpbmdfcGFja2VkLT5yaW5nX2RtYV9h ZGRyLA0KPiArCQkJCSBkbWFfZGV2KTsNCj4gDQo+ICAJaWYgKHZyaW5nX3BhY2tlZC0+dnJpbmcu ZHJpdmVyKQ0KPiAgCQl2cmluZ19mcmVlX3F1ZXVlKHZkZXYsIHZyaW5nX3BhY2tlZC0+ZXZlbnRf c2l6ZV9pbl9ieXRlcywNCj4gIAkJCQkgdnJpbmdfcGFja2VkLT52cmluZy5kcml2ZXIsDQo+IC0J CQkJIHZyaW5nX3BhY2tlZC0+ZHJpdmVyX2V2ZW50X2RtYV9hZGRyKTsNCj4gKwkJCQkgdnJpbmdf cGFja2VkLT5kcml2ZXJfZXZlbnRfZG1hX2FkZHIsDQo+ICsJCQkJIGRtYV9kZXYpOw0KPiANCj4g IAlpZiAodnJpbmdfcGFja2VkLT52cmluZy5kZXZpY2UpDQo+ICAJCXZyaW5nX2ZyZWVfcXVldWUo dmRldiwgdnJpbmdfcGFja2VkLT5ldmVudF9zaXplX2luX2J5dGVzLA0KPiAgCQkJCSB2cmluZ19w YWNrZWQtPnZyaW5nLmRldmljZSwNCj4gLQkJCQkgdnJpbmdfcGFja2VkLT5kZXZpY2VfZXZlbnRf ZG1hX2FkZHIpOw0KPiArCQkJCSB2cmluZ19wYWNrZWQtPmRldmljZV9ldmVudF9kbWFfYWRkciwN Cj4gKwkJCQkgZG1hX2Rldik7DQo+IA0KPiAgCWtmcmVlKHZyaW5nX3BhY2tlZC0+ZGVzY19zdGF0 ZSk7DQo+ICAJa2ZyZWUodnJpbmdfcGFja2VkLT5kZXNjX2V4dHJhKTsNCj4gQEAgLTE4NjQsNyAr MTg4MCw3IEBAIHN0YXRpYyB2b2lkIHZyaW5nX2ZyZWVfcGFja2VkKHN0cnVjdA0KPiB2cmluZ192 aXJ0cXVldWVfcGFja2VkICp2cmluZ19wYWNrZWQsDQo+IA0KPiAgc3RhdGljIGludCB2cmluZ19h bGxvY19xdWV1ZV9wYWNrZWQoc3RydWN0IHZyaW5nX3ZpcnRxdWV1ZV9wYWNrZWQNCj4gKnZyaW5n X3BhY2tlZCwNCj4gIAkJCQkgICAgc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsDQo+IC0JCQkJ ICAgIHUzMiBudW0pDQo+ICsJCQkJICAgIHUzMiBudW0sIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYp DQo+ICB7DQo+ICAJc3RydWN0IHZyaW5nX3BhY2tlZF9kZXNjICpyaW5nOw0KPiAgCXN0cnVjdCB2 cmluZ19wYWNrZWRfZGVzY19ldmVudCAqZHJpdmVyLCAqZGV2aWNlOw0KPiBAQCAtMTg3NSw3ICsx ODkxLDggQEAgc3RhdGljIGludCB2cmluZ19hbGxvY19xdWV1ZV9wYWNrZWQoc3RydWN0DQo+IHZy aW5nX3ZpcnRxdWV1ZV9wYWNrZWQgKnZyaW5nX3BhY2tlZCwNCj4gDQo+ICAJcmluZyA9IHZyaW5n X2FsbG9jX3F1ZXVlKHZkZXYsIHJpbmdfc2l6ZV9pbl9ieXRlcywNCj4gIAkJCQkgJnJpbmdfZG1h X2FkZHIsDQo+IC0JCQkJIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfA0KPiBfX0dGUF9aRVJP KTsNCj4gKwkJCQkgR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTiB8DQo+IF9fR0ZQX1pFUk8sDQo+ ICsJCQkJIGRtYV9kZXYpOw0KPiAgCWlmICghcmluZykNCj4gIAkJZ290byBlcnI7DQo+IA0KPiBA QCAtMTg4Nyw3ICsxOTA0LDggQEAgc3RhdGljIGludCB2cmluZ19hbGxvY19xdWV1ZV9wYWNrZWQo c3RydWN0DQo+IHZyaW5nX3ZpcnRxdWV1ZV9wYWNrZWQgKnZyaW5nX3BhY2tlZCwNCj4gDQo+ICAJ ZHJpdmVyID0gdnJpbmdfYWxsb2NfcXVldWUodmRldiwgZXZlbnRfc2l6ZV9pbl9ieXRlcywNCj4g IAkJCQkgICAmZHJpdmVyX2V2ZW50X2RtYV9hZGRyLA0KPiAtCQkJCSAgIEdGUF9LRVJORUwgfCBf X0dGUF9OT1dBUk4gfA0KPiBfX0dGUF9aRVJPKTsNCj4gKwkJCQkgICBHRlBfS0VSTkVMIHwgX19H RlBfTk9XQVJOIHwNCj4gX19HRlBfWkVSTywNCj4gKwkJCQkgICBkbWFfZGV2KTsNCj4gIAlpZiAo IWRyaXZlcikNCj4gIAkJZ290byBlcnI7DQo+IA0KPiBAQCAtMTg5Nyw3ICsxOTE1LDggQEAgc3Rh dGljIGludCB2cmluZ19hbGxvY19xdWV1ZV9wYWNrZWQoc3RydWN0DQo+IHZyaW5nX3ZpcnRxdWV1 ZV9wYWNrZWQgKnZyaW5nX3BhY2tlZCwNCj4gDQo+ICAJZGV2aWNlID0gdnJpbmdfYWxsb2NfcXVl dWUodmRldiwgZXZlbnRfc2l6ZV9pbl9ieXRlcywNCj4gIAkJCQkgICAmZGV2aWNlX2V2ZW50X2Rt YV9hZGRyLA0KPiAtCQkJCSAgIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfA0KPiBfX0dGUF9a RVJPKTsNCj4gKwkJCQkgICBHRlBfS0VSTkVMIHwgX19HRlBfTk9XQVJOIHwNCj4gX19HRlBfWkVS TywNCj4gKwkJCQkgICBkbWFfZGV2KTsNCj4gIAlpZiAoIWRldmljZSkNCj4gIAkJZ290byBlcnI7 DQo+IA0KPiBAQCAtMTkwOSw3ICsxOTI4LDcgQEAgc3RhdGljIGludCB2cmluZ19hbGxvY19xdWV1 ZV9wYWNrZWQoc3RydWN0DQo+IHZyaW5nX3ZpcnRxdWV1ZV9wYWNrZWQgKnZyaW5nX3BhY2tlZCwN Cj4gIAlyZXR1cm4gMDsNCj4gDQo+ICBlcnI6DQo+IC0JdnJpbmdfZnJlZV9wYWNrZWQodnJpbmdf cGFja2VkLCB2ZGV2KTsNCj4gKwl2cmluZ19mcmVlX3BhY2tlZCh2cmluZ19wYWNrZWQsIHZkZXYs IGRtYV9kZXYpOw0KPiAgCXJldHVybiAtRU5PTUVNOw0KPiAgfQ0KPiANCj4gQEAgLTE5ODcsMTMg KzIwMDYsMTQgQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUNCj4gKnZyaW5nX2NyZWF0ZV92aXJ0 cXVldWVfcGFja2VkKA0KPiAgCWJvb2wgY29udGV4dCwNCj4gIAlib29sICgqbm90aWZ5KShzdHJ1 Y3QgdmlydHF1ZXVlICopLA0KPiAgCXZvaWQgKCpjYWxsYmFjaykoc3RydWN0IHZpcnRxdWV1ZSAq KSwNCj4gLQljb25zdCBjaGFyICpuYW1lKQ0KPiArCWNvbnN0IGNoYXIgKm5hbWUsDQo+ICsJc3Ry dWN0IGRldmljZSAqZG1hX2RldikNCj4gIHsNCj4gIAlzdHJ1Y3QgdnJpbmdfdmlydHF1ZXVlX3Bh Y2tlZCB2cmluZ19wYWNrZWQgPSB7fTsNCj4gIAlzdHJ1Y3QgdnJpbmdfdmlydHF1ZXVlICp2cTsN Cj4gIAlpbnQgZXJyOw0KPiANCj4gLQlpZiAodnJpbmdfYWxsb2NfcXVldWVfcGFja2VkKCZ2cmlu Z19wYWNrZWQsIHZkZXYsIG51bSkpDQo+ICsJaWYgKHZyaW5nX2FsbG9jX3F1ZXVlX3BhY2tlZCgm dnJpbmdfcGFja2VkLCB2ZGV2LCBudW0sIGRtYV9kZXYpKQ0KPiAgCQlnb3RvIGVycl9yaW5nOw0K PiANCj4gIAl2cSA9IGttYWxsb2Moc2l6ZW9mKCp2cSksIEdGUF9LRVJORUwpOw0KPiBAQCAtMjAx NCw2ICsyMDM0LDcgQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUNCj4gKnZyaW5nX2NyZWF0ZV92 aXJ0cXVldWVfcGFja2VkKA0KPiAgCXZxLT5icm9rZW4gPSBmYWxzZTsNCj4gICNlbmRpZg0KPiAg CXZxLT5wYWNrZWRfcmluZyA9IHRydWU7DQo+ICsJdnEtPmRtYV9kZXYgPSBkbWFfZGV2Ow0KPiAg CXZxLT51c2VfZG1hX2FwaSA9IHZyaW5nX3VzZV9kbWFfYXBpKHZkZXYpOw0KPiANCj4gIAl2cS0+ aW5kaXJlY3QgPSB2aXJ0aW9faGFzX2ZlYXR1cmUodmRldiwNCj4gVklSVElPX1JJTkdfRl9JTkRJ UkVDVF9ERVNDKSAmJg0KPiBAQCAtMjA0MCw3ICsyMDYxLDcgQEAgc3RhdGljIHN0cnVjdCB2aXJ0 cXVldWUNCj4gKnZyaW5nX2NyZWF0ZV92aXJ0cXVldWVfcGFja2VkKA0KPiAgZXJyX3N0YXRlX2V4 dHJhOg0KPiAgCWtmcmVlKHZxKTsNCj4gIGVycl92cToNCj4gLQl2cmluZ19mcmVlX3BhY2tlZCgm dnJpbmdfcGFja2VkLCB2ZGV2KTsNCj4gKwl2cmluZ19mcmVlX3BhY2tlZCgmdnJpbmdfcGFja2Vk LCB2ZGV2LCBkbWFfZGV2KTsNCj4gIGVycl9yaW5nOg0KPiAgCXJldHVybiBOVUxMOw0KPiAgfQ0K PiBAQCAtMjA1Miw3ICsyMDczLDcgQEAgc3RhdGljIGludCB2aXJ0cXVldWVfcmVzaXplX3BhY2tl ZChzdHJ1Y3QgdmlydHF1ZXVlDQo+ICpfdnEsIHUzMiBudW0pDQo+ICAJc3RydWN0IHZpcnRpb19k ZXZpY2UgKnZkZXYgPSBfdnEtPnZkZXY7DQo+ICAJaW50IGVycjsNCj4gDQo+IC0JaWYgKHZyaW5n X2FsbG9jX3F1ZXVlX3BhY2tlZCgmdnJpbmdfcGFja2VkLCB2ZGV2LCBudW0pKQ0KPiArCWlmICh2 cmluZ19hbGxvY19xdWV1ZV9wYWNrZWQoJnZyaW5nX3BhY2tlZCwgdmRldiwgbnVtLA0KPiB2cmlu Z19kbWFfZGV2KHZxKSkpDQo+ICAJCWdvdG8gZXJyX3Jpbmc7DQo+IA0KPiAgCWVyciA9IHZyaW5n X2FsbG9jX3N0YXRlX2V4dHJhX3BhY2tlZCgmdnJpbmdfcGFja2VkKTsNCj4gQEAgLTIwNjksNyAr MjA5MCw3IEBAIHN0YXRpYyBpbnQgdmlydHF1ZXVlX3Jlc2l6ZV9wYWNrZWQoc3RydWN0IHZpcnRx dWV1ZQ0KPiAqX3ZxLCB1MzIgbnVtKQ0KPiAgCXJldHVybiAwOw0KPiANCj4gIGVycl9zdGF0ZV9l eHRyYToNCj4gLQl2cmluZ19mcmVlX3BhY2tlZCgmdnJpbmdfcGFja2VkLCB2ZGV2KTsNCj4gKwl2 cmluZ19mcmVlX3BhY2tlZCgmdnJpbmdfcGFja2VkLCB2ZGV2LCB2cmluZ19kbWFfZGV2KHZxKSk7 DQo+ICBlcnJfcmluZzoNCj4gIAl2aXJ0cXVldWVfcmVpbml0X3BhY2tlZCh2cSk7DQo+ICAJcmV0 dXJuIC1FTk9NRU07DQo+IEBAIC0yNDgxLDcgKzI1MDIsOCBAQCBzdGF0aWMgc3RydWN0IHZpcnRx dWV1ZQ0KPiAqX192cmluZ19uZXdfdmlydHF1ZXVlKHVuc2lnbmVkIGludCBpbmRleCwNCj4gIAkJ CQkJICAgICAgIGJvb2wgY29udGV4dCwNCj4gIAkJCQkJICAgICAgIGJvb2wgKCpub3RpZnkpKHN0 cnVjdCB2aXJ0cXVldWUgKiksDQo+ICAJCQkJCSAgICAgICB2b2lkICgqY2FsbGJhY2spKHN0cnVj dCB2aXJ0cXVldWUNCj4gKiksDQo+IC0JCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lKQ0KPiAr CQkJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwNCj4gKwkJCQkJICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRtYV9kZXYpDQo+ICB7DQo+ICAJc3RydWN0IHZyaW5nX3ZpcnRxdWV1ZSAqdnE7DQo+ICAJ aW50IGVycjsNCj4gQEAgLTI1MDcsNiArMjUyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVl DQo+ICpfX3ZyaW5nX25ld192aXJ0cXVldWUodW5zaWduZWQgaW50IGluZGV4LA0KPiAgI2Vsc2UN Cj4gIAl2cS0+YnJva2VuID0gZmFsc2U7DQo+ICAjZW5kaWYNCj4gKwl2cS0+ZG1hX2RldiA9IGRt YV9kZXY7DQo+ICAJdnEtPnVzZV9kbWFfYXBpID0gdnJpbmdfdXNlX2RtYV9hcGkodmRldik7DQo+ IA0KPiAgCXZxLT5pbmRpcmVjdCA9IHZpcnRpb19oYXNfZmVhdHVyZSh2ZGV2LA0KPiBWSVJUSU9f UklOR19GX0lORElSRUNUX0RFU0MpICYmDQo+IEBAIC0yNTQ5LDE0ICsyNTcyLDM5IEBAIHN0cnVj dCB2aXJ0cXVldWUgKnZyaW5nX2NyZWF0ZV92aXJ0cXVldWUoDQo+ICAJaWYgKHZpcnRpb19oYXNf ZmVhdHVyZSh2ZGV2LCBWSVJUSU9fRl9SSU5HX1BBQ0tFRCkpDQo+ICAJCXJldHVybiB2cmluZ19j cmVhdGVfdmlydHF1ZXVlX3BhY2tlZChpbmRleCwgbnVtLA0KPiB2cmluZ19hbGlnbiwNCj4gIAkJ CQl2ZGV2LCB3ZWFrX2JhcnJpZXJzLCBtYXlfcmVkdWNlX251bSwNCj4gLQkJCQljb250ZXh0LCBu b3RpZnksIGNhbGxiYWNrLCBuYW1lKTsNCj4gKwkJCQljb250ZXh0LCBub3RpZnksIGNhbGxiYWNr LCBuYW1lLCB2ZGV2LQ0KPiA+ZGV2LnBhcmVudCk7DQo+IA0KPiAgCXJldHVybiB2cmluZ19jcmVh dGVfdmlydHF1ZXVlX3NwbGl0KGluZGV4LCBudW0sIHZyaW5nX2FsaWduLA0KPiAgCQkJdmRldiwg d2Vha19iYXJyaWVycywgbWF5X3JlZHVjZV9udW0sDQo+IC0JCQljb250ZXh0LCBub3RpZnksIGNh bGxiYWNrLCBuYW1lKTsNCj4gKwkJCWNvbnRleHQsIG5vdGlmeSwgY2FsbGJhY2ssIG5hbWUsIHZk ZXYtPmRldi5wYXJlbnQpOw0KPiAgfQ0KPiAgRVhQT1JUX1NZTUJPTF9HUEwodnJpbmdfY3JlYXRl X3ZpcnRxdWV1ZSk7DQo+IA0KPiArc3RydWN0IHZpcnRxdWV1ZSAqdnJpbmdfY3JlYXRlX3ZpcnRx dWV1ZV9kbWEoDQo+ICsJdW5zaWduZWQgaW50IGluZGV4LA0KPiArCXVuc2lnbmVkIGludCBudW0s DQo+ICsJdW5zaWduZWQgaW50IHZyaW5nX2FsaWduLA0KPiArCXN0cnVjdCB2aXJ0aW9fZGV2aWNl ICp2ZGV2LA0KPiArCWJvb2wgd2Vha19iYXJyaWVycywNCj4gKwlib29sIG1heV9yZWR1Y2VfbnVt LA0KPiArCWJvb2wgY29udGV4dCwNCj4gKwlib29sICgqbm90aWZ5KShzdHJ1Y3QgdmlydHF1ZXVl ICopLA0KPiArCXZvaWQgKCpjYWxsYmFjaykoc3RydWN0IHZpcnRxdWV1ZSAqKSwNCj4gKwljb25z dCBjaGFyICpuYW1lLA0KPiArCXN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpDQo+ICt7DQo+ICsNCj4g KwlpZiAodmlydGlvX2hhc19mZWF0dXJlKHZkZXYsIFZJUlRJT19GX1JJTkdfUEFDS0VEKSkNCj4g KwkJcmV0dXJuIHZyaW5nX2NyZWF0ZV92aXJ0cXVldWVfcGFja2VkKGluZGV4LCBudW0sDQo+IHZy aW5nX2FsaWduLA0KPiArCQkJCXZkZXYsIHdlYWtfYmFycmllcnMsIG1heV9yZWR1Y2VfbnVtLA0K PiArCQkJCWNvbnRleHQsIG5vdGlmeSwgY2FsbGJhY2ssIG5hbWUsIGRtYV9kZXYpOw0KPiArDQo+ ICsJcmV0dXJuIHZyaW5nX2NyZWF0ZV92aXJ0cXVldWVfc3BsaXQoaW5kZXgsIG51bSwgdnJpbmdf YWxpZ24sDQo+ICsJCQl2ZGV2LCB3ZWFrX2JhcnJpZXJzLCBtYXlfcmVkdWNlX251bSwNCj4gKwkJ CWNvbnRleHQsIG5vdGlmeSwgY2FsbGJhY2ssIG5hbWUsIGRtYV9kZXYpOw0KPiArfQ0KPiArRVhQ T1JUX1NZTUJPTF9HUEwodnJpbmdfY3JlYXRlX3ZpcnRxdWV1ZV9kbWEpOw0KPiArDQo+ICAvKioN Cj4gICAqIHZpcnRxdWV1ZV9yZXNpemUgLSByZXNpemUgdGhlIHZyaW5nIG9mIHZxDQo+ICAgKiBA X3ZxOiB0aGUgc3RydWN0IHZpcnRxdWV1ZSB3ZSdyZSB0YWxraW5nIGFib3V0Lg0KPiBAQCAtMjY0 NSw3ICsyNjkzLDggQEAgc3RydWN0IHZpcnRxdWV1ZSAqdnJpbmdfbmV3X3ZpcnRxdWV1ZSh1bnNp Z25lZA0KPiBpbnQgaW5kZXgsDQo+IA0KPiAgCXZyaW5nX2luaXQoJnZyaW5nX3NwbGl0LnZyaW5n LCBudW0sIHBhZ2VzLCB2cmluZ19hbGlnbik7DQo+ICAJcmV0dXJuIF9fdnJpbmdfbmV3X3ZpcnRx dWV1ZShpbmRleCwgJnZyaW5nX3NwbGl0LCB2ZGV2LA0KPiB3ZWFrX2JhcnJpZXJzLA0KPiAtCQkJ CSAgICAgY29udGV4dCwgbm90aWZ5LCBjYWxsYmFjaywgbmFtZSk7DQo+ICsJCQkJICAgICBjb250 ZXh0LCBub3RpZnksIGNhbGxiYWNrLCBuYW1lLA0KPiArCQkJCSAgICAgdmRldi0+ZGV2LnBhcmVu dCk7DQo+ICB9DQo+ICBFWFBPUlRfU1lNQk9MX0dQTCh2cmluZ19uZXdfdmlydHF1ZXVlKTsNCj4g DQo+IEBAIC0yNjU4LDE3ICsyNzA3LDIwIEBAIHN0YXRpYyB2b2lkIHZyaW5nX2ZyZWUoc3RydWN0 IHZpcnRxdWV1ZSAqX3ZxKQ0KPiAgCQkJdnJpbmdfZnJlZV9xdWV1ZSh2cS0+dnEudmRldiwNCj4g IAkJCQkJIHZxLT5wYWNrZWQucmluZ19zaXplX2luX2J5dGVzLA0KPiAgCQkJCQkgdnEtPnBhY2tl ZC52cmluZy5kZXNjLA0KPiAtCQkJCQkgdnEtPnBhY2tlZC5yaW5nX2RtYV9hZGRyKTsNCj4gKwkJ CQkJIHZxLT5wYWNrZWQucmluZ19kbWFfYWRkciwNCj4gKwkJCQkJIHZyaW5nX2RtYV9kZXYodnEp KTsNCj4gDQo+ICAJCQl2cmluZ19mcmVlX3F1ZXVlKHZxLT52cS52ZGV2LA0KPiAgCQkJCQkgdnEt PnBhY2tlZC5ldmVudF9zaXplX2luX2J5dGVzLA0KPiAgCQkJCQkgdnEtPnBhY2tlZC52cmluZy5k cml2ZXIsDQo+IC0JCQkJCSB2cS0+cGFja2VkLmRyaXZlcl9ldmVudF9kbWFfYWRkcik7DQo+ICsJ CQkJCSB2cS0+cGFja2VkLmRyaXZlcl9ldmVudF9kbWFfYWRkciwNCj4gKwkJCQkJIHZyaW5nX2Rt YV9kZXYodnEpKTsNCj4gDQo+ICAJCQl2cmluZ19mcmVlX3F1ZXVlKHZxLT52cS52ZGV2LA0KPiAg CQkJCQkgdnEtPnBhY2tlZC5ldmVudF9zaXplX2luX2J5dGVzLA0KPiAgCQkJCQkgdnEtPnBhY2tl ZC52cmluZy5kZXZpY2UsDQo+IC0JCQkJCSB2cS0NCj4gPnBhY2tlZC5kZXZpY2VfZXZlbnRfZG1h X2FkZHIpOw0KPiArCQkJCQkgdnEtPnBhY2tlZC5kZXZpY2VfZXZlbnRfZG1hX2FkZHIsDQo+ICsJ CQkJCSB2cmluZ19kbWFfZGV2KHZxKSk7DQo+IA0KPiAgCQkJa2ZyZWUodnEtPnBhY2tlZC5kZXNj X3N0YXRlKTsNCj4gIAkJCWtmcmVlKHZxLT5wYWNrZWQuZGVzY19leHRyYSk7DQo+IEBAIC0yNjc2 LDcgKzI3MjgsOCBAQCBzdGF0aWMgdm9pZCB2cmluZ19mcmVlKHN0cnVjdCB2aXJ0cXVldWUgKl92 cSkNCj4gIAkJCXZyaW5nX2ZyZWVfcXVldWUodnEtPnZxLnZkZXYsDQo+ICAJCQkJCSB2cS0+c3Bs aXQucXVldWVfc2l6ZV9pbl9ieXRlcywNCj4gIAkJCQkJIHZxLT5zcGxpdC52cmluZy5kZXNjLA0K PiAtCQkJCQkgdnEtPnNwbGl0LnF1ZXVlX2RtYV9hZGRyKTsNCj4gKwkJCQkJIHZxLT5zcGxpdC5x dWV1ZV9kbWFfYWRkciwNCj4gKwkJCQkJIHZyaW5nX2RtYV9kZXYodnEpKTsNCj4gIAkJfQ0KPiAg CX0NCj4gIAlpZiAoIXZxLT5wYWNrZWRfcmluZykgew0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC92aXJ0aW9fcmluZy5oIGIvaW5jbHVkZS9saW51eC92aXJ0aW9fcmluZy5oDQo+IGluZGV4 IDhiOGFmMWEzODk5MS4uOGI5NWI2OWVmNjk0IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2xpbnV4 L3ZpcnRpb19yaW5nLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC92aXJ0aW9fcmluZy5oDQo+IEBA IC03Niw2ICs3NiwyMiBAQCBzdHJ1Y3QgdmlydHF1ZXVlICp2cmluZ19jcmVhdGVfdmlydHF1ZXVl KHVuc2lnbmVkIGludA0KPiBpbmRleCwNCj4gIAkJCQkJIHZvaWQgKCpjYWxsYmFjaykoc3RydWN0 IHZpcnRxdWV1ZQ0KPiAqdnEpLA0KPiAgCQkJCQkgY29uc3QgY2hhciAqbmFtZSk7DQo+IA0KPiAr LyoNCj4gKyAqIENyZWF0ZXMgYSB2aXJ0cXVldWUgYW5kIGFsbG9jYXRlcyB0aGUgZGVzY3JpcHRv ciByaW5nIHdpdGggcGVyDQo+ICsgKiB2aXJ0cXVldWUgRE1BIGRldmljZS4NCj4gKyAqLw0KPiAr c3RydWN0IHZpcnRxdWV1ZSAqdnJpbmdfY3JlYXRlX3ZpcnRxdWV1ZV9kbWEodW5zaWduZWQgaW50 IGluZGV4LA0KPiArCQkJCQkgICAgIHVuc2lnbmVkIGludCBudW0sDQo+ICsJCQkJCSAgICAgdW5z aWduZWQgaW50IHZyaW5nX2FsaWduLA0KPiArCQkJCQkgICAgIHN0cnVjdCB2aXJ0aW9fZGV2aWNl ICp2ZGV2LA0KPiArCQkJCQkgICAgIGJvb2wgd2Vha19iYXJyaWVycywNCj4gKwkJCQkJICAgICBi b29sIG1heV9yZWR1Y2VfbnVtLA0KPiArCQkJCQkgICAgIGJvb2wgY3R4LA0KPiArCQkJCQkgICAg IGJvb2wgKCpub3RpZnkpKHN0cnVjdCB2aXJ0cXVldWUNCj4gKnZxKSwNCj4gKwkJCQkJICAgICB2 b2lkICgqY2FsbGJhY2spKHN0cnVjdCB2aXJ0cXVldWUNCj4gKnZxKSwNCj4gKwkJCQkJICAgICBj b25zdCBjaGFyICpuYW1lLA0KPiArCQkJCQkgICAgIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpOw0K PiArDQo+ICAvKg0KPiAgICogQ3JlYXRlcyBhIHZpcnRxdWV1ZSB3aXRoIGEgc3RhbmRhcmQgbGF5 b3V0IGJ1dCBhIGNhbGxlci1hbGxvY2F0ZWQNCj4gICAqIHJpbmcuDQo+IC0tDQo+IDIuMjUuMQ0K DQo=