Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2805623iob; Mon, 16 May 2022 06:42:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyzKC2psWksp0qYyNs1HnY6I+KX3LYiToF7Ke8wMOPNltlaMcNHi/aHstWtyCfsS5SwPpFz X-Received: by 2002:a17:906:c28a:b0:6f5:30e7:faf0 with SMTP id r10-20020a170906c28a00b006f530e7faf0mr15142304ejz.183.1652708520933; Mon, 16 May 2022 06:42:00 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1652708520; cv=pass; d=google.com; s=arc-20160816; b=uuk2bkawW2T/9vrwKdZznjRzNbGScDWzVs2/0b01Bs+yauUI9Axp9yFVgPHgrum647 n3r2kWgthr3ax6XYAmaJKsM+A+0hXU49rJMP8tTvvkbSqZ0VRRZ5cBYyCkQFamWvQiKX Bxt/7ZPfB0viB0MajDfeWw6M2SH2fBgXbEpf7nSPFuH18X1zoUVUwqPD/iVpvrgaOs/t 7iJzrvjD/E6xsXX8mZ1bq+gHo1G/gb1Xn8UGaxnGpCFRDBVUROKOnQXwlaPwpHv/nS9C Fg1Ad/EcdSIdGBafpAMErCvIImCyYI2rdAZ80TIjBGRyRnZVz4wMqmVU2jiJKIKDvRLO qFbg== 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=K5EkaLWKfichqer4qqKcPNNWt0s/rmV2Ko6SL9WDyI4=; b=xx8/dEmWONBm9IU/tHXqMeQN4/v/OSltYwT1ZIo7tZ/5AiosCQu2NyQqCtqW8qTAYQ i9+UrABHnIX8E1XBYIooICxb/6FnQrqyb7X3c2+ZxUnCmWtJXJ2JQkvE/CVbq9Ov4/2g 8A0IZ7Q00dSh9xisLrvNzA3In6SmA0RYWhb+mx7rItwGWaFXtxcInvhlLfITPjA23CY9 Uygr5FAY44N6bJTL6SQ5lNL627kmyF/GwhpflBf7vQDeFp70vGiYk3d01BxMwzQblqcR 7fCWNj3YrRR5hwDZHaSvH4Z4qsDAhSHz5JLmEA0QsXMrGS/v43xCAgUVbjc2QmAq0oIf RZiA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=msH2LAIG; 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 hv21-20020a17090760d500b006f4adc54180si9175314ejc.611.2022.05.16.06.41.33; Mon, 16 May 2022 06:42:00 -0700 (PDT) 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=msH2LAIG; 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 S239892AbiEPFrA (ORCPT + 99 others); Mon, 16 May 2022 01:47:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230431AbiEPFq5 (ORCPT ); Mon, 16 May 2022 01:46:57 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2069.outbound.protection.outlook.com [40.107.93.69]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4C7411C0A for ; Sun, 15 May 2022 22:46:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UepLD6RM7zlMIExqbOP1H+Ni8fk2jxns0AtyeUWCvoLKEaSSgYdop9u7Nwh26ONmK1Q/od5bPMvwc4e0P2t0QzBNzE0p1Kxl4nfU+Y1GNaWCes7y9FDGoL0Nu1oVyhul8ulLpI+jMbHVANf/nn5BBeMxJev5gJhbrIC9bE8xv1fNgn3KFOUj4slPWJau7CRLVzJSbmkuLyiNGqPWM85Bn8hRQ9rlATruZSCH9PMbHkx1zKJk11zDPzBpICaxvm7xVRPMLXNCKLCgQ0Dbq0cM4JTEHar4WPhteZECDR09rp/xOcy0ciKvdW93hFyM7iQveGasHHPQ/CEtf+TTnfaSGA== 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=K5EkaLWKfichqer4qqKcPNNWt0s/rmV2Ko6SL9WDyI4=; b=i6E6r7uuYrP81kLDZ6D9NfL4eNAA1OTw/AW6lmWo7Ys86KYvIibCyNLjklnYAzkFwolyqG+Bh/8fdslsj6EESzM4NTdA5hmh5KvwYbHGZF+6B0c1Yu8LOrh+7TL/1xsHRtY3fcMRDqVkNyGUDGHPxD183Tr/7aadU6vefCITrtFqnynFmPBu3JIpDJFkyMsk5ATZ82qZgJKE+2Wtpqmdn3AElHcoJ/MDnd/YswyuJJRL2nYqj/8NHFTv6TEZhle20wG3ymfpal3WsAEBGcXbQB6ilHN41osoMi3sW5Um9L/FFoICOLo7fbKPRF3BV/to9UCHy6dWiJm0Hm0gWmOS3g== 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=K5EkaLWKfichqer4qqKcPNNWt0s/rmV2Ko6SL9WDyI4=; b=msH2LAIGVO8hWLEjubGMh3PI2+l3SoQDx+iI4/8F5xzt8MDSfo2TiqBTt8GtrZcKZ5+TpEAEaNPsySqOGP1/YPGWiWeezfH2fpkXSIusvogQldPfd/oFxm2rTqrwlPn4l5a5YOmW6QAAjoQ5eCmoqHMzlT2rZT7aWVH1SuBraQWMKQpFpPHQOPkpeJiaHXetijPCE5AOcVXImMrEL38Jsu6iykOL5Fr563tPRAn7zIceQBc6kMHPJYg4ekcPepwzb2jls8C8Ea9zv3sIGBD05WyF/OHhSz6UlhBFNarVn1wdJx7GlZrddDZZH62K5ImUV6Rm+32atgm6LFeW9hqhiw== Received: from DM8PR12MB5400.namprd12.prod.outlook.com (2603:10b6:8:3b::12) by SN6PR12MB4736.namprd12.prod.outlook.com (2603:10b6:805:e0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13; Mon, 16 May 2022 05:46:49 +0000 Received: from DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::a196:bbcc:de9d:50a5]) by DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::a196:bbcc:de9d:50a5%9]) with mapi id 15.20.5250.018; Mon, 16 May 2022 05:46:49 +0000 From: Eli Cohen To: Si-Wei Liu , "mst@redhat.com" , "jasowang@redhat.com" CC: "virtualization@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v1 for reference] vdpa: Add support for reading vdpa device statistics Thread-Topic: [PATCH v1 for reference] vdpa: Add support for reading vdpa device statistics Thread-Index: AQHYZcLHSsF9UwJIvka5wIX81rJS660bxGCAgAU/XbA= Date: Mon, 16 May 2022 05:46:49 +0000 Message-ID: References: <20220512054006.3509356-1-elic@nvidia.com> <5164c886-4af5-1d69-e0bc-0c30482d5c8f@oracle.com> In-Reply-To: <5164c886-4af5-1d69-e0bc-0c30482d5c8f@oracle.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-office365-filtering-correlation-id: b094c648-8a64-4cee-c792-08da36ff78b3 x-ms-traffictypediagnostic: SN6PR12MB4736:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 93KWanJzIrNe9TqTZISPOgnG7vx1n35jSRaeLFXLSyqdH4IAHVxaDKnzU+4hOMpn/bxj4p0UEj8P/HAR4ZKC4s2vJ00pEfxwz/kbbqEpzCi/IVpuvGYap6/8xFXXkTDyaACxT6ts/K/gYP9A5uVY77JjGUcxB9qG9IeNXuYXsDOHb8s1Lfz6ui/cOpc/WicPEHhl6DCIid0n0QWWeBbFdQqbIQ1wCobNMan9Qj3HsnY6Gs4nqZOrOOMbftg/8o8mtOTd0ZEFVkkdgqOUzHYPbcAttBlbDeGkj627VY87sqibmSoRVFvNV4iXOeQsadU0/9lKrG4GYMfDWsDupuXJxDurfbsenMRnRRQAgOcKrrNoHeM8ODVnk4apDvHtZ93bwoJglcH/U7oKm/9uSuL2r0Omoyu2Fibc0kTwa5Gk+tY+qjxf32/r0f/o4ekDxgEUBR0pMfytfRxUqXlJ1tcAOUSbsydXPxKsRBRUr5qm6zHQmJjW7NHZPvV5ye1oLIso+N46RePqMRHxO7DYAJcj5BapArMYEjJNSTcLmThoDTNdt+MB6hDl8K66elqTqi6PrQZfb1cfbg2h/1M6q0QNCA2Vkd2V/7T5sFA3kYDztJ3VPePHCqwZjG4G1lWAYGFeXiDBL+KaX5RjORTTKWd7z9IvnAe6RVKyIPIcx2aUeNg8eKtYpRg/kFj6sGww7fwHIR5WdAPevDYlcQfCADnygj6elW7NyGhX/JcVzQHMcnNlIZWGxPIUG5ipUvzXKTxUqiEzEqWl6OLSU9EKWrSYua/0vpD59oSHy6DnyULdQE2VPCo1gNeJKI4pYHogkzUecKzmYUItCQb3tNPVP+NBgA== 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:(13230001)(4636009)(366004)(8676002)(66476007)(66556008)(66946007)(66446008)(64756008)(71200400001)(4326008)(966005)(86362001)(26005)(53546011)(6506007)(7696005)(508600001)(8936002)(52536014)(186003)(122000001)(76116006)(83380400001)(33656002)(5660300002)(45080400002)(55016003)(54906003)(110136005)(9686003)(316002)(2906002)(30864003)(38100700002)(38070700005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cFdaK055QldUWlZIcFYwUzBMNllEVDBJOE9OQTNTZmVVTDRaWW16R29iVmkw?= =?utf-8?B?ZXBJYXZEMzF0UTROVDJMUTEzT0ZlS2dQU1BOMGhSQ0l5OW9IY0lLNzN3SDFk?= =?utf-8?B?ajlBSWU4WlYrVHlQZlN3Z282UE42Y20rcGRkTE43bmh4dFR1dlZqQ29QcEpV?= =?utf-8?B?V3pnZ3RMdDVlOE03L0ZSVk1pS0JvV3JheDhXQVdJend2U05jekJsVU5WZnNQ?= =?utf-8?B?bUxmUTY4MGNlTWZyOVRWSVJMYVNCSm9iL1FMaldRZW81d3RsTUE1c1RESzYz?= =?utf-8?B?WmFjN2E2N0o4NUJ5YUVnYnhIT2tmd1BvU01oTmQ5TWhBNjRsUlJ6UjMzODBC?= =?utf-8?B?TmJzTy9DQjhNWlBXYzM5OXBoN1VrM2RvcGNmNDd6Y2xsWjl2dnBVMnJaWDZw?= =?utf-8?B?SWhOSjdFNU1EZE1FZDVxdHU5TlFGbDZYZzY0SEpKU2J0NmJwaUlvK1paRzJG?= =?utf-8?B?M1FDQkoyRWVuWkZjaklad3k0Snc4WUdlamxOTzBxMk9PYVN4ejViaGV3QWlX?= =?utf-8?B?UmhPUzJTWCtGTnhDWnhvTVZxSml1Ui94bCtZZzQ3enJzUDRZZ0Y3Y3BQMHZH?= =?utf-8?B?ZHorNTcyZWRZVzNZdFhUeG1RVW9jeVVlbGFQczFKTXVzRHFLRDN6VUlNY2NF?= =?utf-8?B?MzBRdWJaRnhyaGw5VW1Vd1gySUR3MlZBbDFrRDVlY29XUTBpL2xhQUZkRHF5?= =?utf-8?B?bEVMWkEyazhpcEVLUDVrN0FaZmF5cE43bFIvSWw1WVN5QmJhYitEbDMwclBZ?= =?utf-8?B?UmNNbUhRci8zdmlnK1hObXcvVnRFeFBQR3FDOVkwWTE0L1kzdkVTZGpoMU9G?= =?utf-8?B?TEhON2paR3dSc0FYTzVBdmhhYkhNSW5xai8waW9pdjF2K1Z3dGZyTndMMUhQ?= =?utf-8?B?ZCtTYTZQOEVDRm9pZzg4UTBFZiszVmVpeGdwdDFJRjVpc01HSzcxWTlFbGpu?= =?utf-8?B?WXUyRkVmeFhKWXVaWGoxUFU3eW5lbHJCRExBdVJZNFpNSUlYUzNtc3VVM3pU?= =?utf-8?B?U0JOcTdZTEs5bXhZR3dMK2VFVDBySDhrV0c3SEh6RHRpZGVra0tsQ3NTZzRN?= =?utf-8?B?Z2djUWZUYnkwZ1ZocTBsTjEzUlptNStPWXB0QjcvQ01sVW94VTJubGZ5K085?= =?utf-8?B?eXJFZmVobFVnc0NjNXNWVGlCdm9IUUhSb052MGRCS1NpNUhEVUdIOFM1OU0x?= =?utf-8?B?YTdkWklGRHo1dE9tVXFIQzhtTU0xQnZRMzNWTUszdmJoVi91RDRlUHR2ZjJB?= =?utf-8?B?cmppaDdnSTVGUFBuVHpLSGhMYXh2SFdqRTE1Z0o3cEpyZTE2NU1WNU54NG1H?= =?utf-8?B?Z0cxQS9mQkpqZnk0L1dpekF0Z2RRa1Q1V2MxWUhlQllISlgwNXFvaEVjTXZr?= =?utf-8?B?YTVOcXZROTVKRUlYQUlXUXl6OWh6TlhFSHhsTzJUa2RKNldyRlRySnAvSUhR?= =?utf-8?B?NlhmZllMRm9wYVp6MXVZeXdCa25wRkt0WElrMWZZM0RSSGl1Y0FCWVpLcWJX?= =?utf-8?B?azJCSmN3YmR5Q3N4cUE3NUZUYWlKRW1UR3hhVU9pYnVaeXlTOTZNWmFrQnhS?= =?utf-8?B?ZlkyWlJyUktTbzRFTURCbXU3RSthQzYyMWR3eHFQQVgyd3BEMXNra1RoTFB6?= =?utf-8?B?bGpoVzU0bVVhZ3Q4eHI2Zm5nZnB4STFsc09RUmlQekNQM21wWmFtUkpQSFJM?= =?utf-8?B?UEhCd2h1YUZ4TGlKSVRoTVY2cU43VEZaWElpN1I0VlJqcEJnSDFiaEw0M08v?= =?utf-8?B?RjNDdzU4NFJnbVdQcXFQeGhjYUZTY2toSGJHUmlLQmlnc2orWnJwUFRZOVpy?= =?utf-8?B?aEh6MkpyWlg0d3JKNFJzelBwZHFuQW9PRW9oaUkxZVpJVVYrbEtIR2dPdWda?= =?utf-8?B?azFMOXdJckU2RzVpaE9rSGlpaEppQi8veUt1ZjBGd2dLVmliQWMvTWFiTm1P?= =?utf-8?B?aXZqdWN2Q3AwL3l6YTJHVFh2ODRyVmY1MmNqUTVjWitEZytvd3VkQ0pKdWJ5?= =?utf-8?B?SE1mYkNLOVBYak9Hblp5VzhqTk5IYXJSd1ppNGFXcFhDMlM3MWhrUExhMzBu?= =?utf-8?B?Yk16UXE0bzgxL1NJWDRYeWlLbTM3WEZNN1B1UjNuSUFQa3RkblNsT0ZTLzEv?= =?utf-8?B?akh5cXI1dzcvYXpweXFEYlMrczBCcWJSR2QyRmU5TmtybWV4ZEVKU0o2ZDV2?= =?utf-8?B?ckdacjhqV3lSb0xyMWUwNDZWcDgvamVHK1FXUHBwa2JIVWsrUE9VNXFMQzRm?= =?utf-8?B?TGlrL1dsVUdJUi9Jd0UvUi9jT1pXdFRYTFBnbUdwMDVMZStrd0hBVUVWWkph?= =?utf-8?Q?qDzP3kXnjjGpJf966O?= 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: b094c648-8a64-4cee-c792-08da36ff78b3 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 May 2022 05:46:49.5330 (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: NFWUtffIn+1Dv2bTLg/w2qYnfejR8Hb9a5lmmtGPu/7Q7ZucKTUOxGzA66aoPEhO X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB4736 X-Spam-Status: No, score=-2.0 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, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaS1XZWkgTGl1IDxzaS13ZWku bGl1QG9yYWNsZS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgTWF5IDEzLCAyMDIyIDEyOjM0IEFNDQo+ IFRvOiBFbGkgQ29oZW4gPGVsaWNAbnZpZGlhLmNvbT47IG1zdEByZWRoYXQuY29tOyBqYXNvd2Fu Z0ByZWRoYXQuY29tDQo+IENjOiB2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9u Lm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENI IHYxIGZvciByZWZlcmVuY2VdIHZkcGE6IEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIHZkcGEgZGV2 aWNlIHN0YXRpc3RpY3MNCj4gDQo+IA0KPiANCj4gT24gNS8xMS8yMDIyIDEwOjQwIFBNLCBFbGkg Q29oZW4gd3JvdGU6DQo+ID4gUmVhZCBzdGF0aXN0aWNzIG9mIGEgdmRwYSBkZXZpY2UuIFRoZSBz cGVjaWZpYyBkYXRhIGlzIGEgcmVjZWl2ZWQgYXMgYQ0KPiA+IHBhaXIgb2YgYXR0cmlidXRlIG5h bWUgYW5kIGF0dHJpYnV0ZSB2YWx1ZS4NCj4gPg0KPiA+IEV4YW1wbGVzOg0KPiA+IDEuIFJlYWQg c3RhdGlzdGljcyBmb3IgdGhlIHZpcnRxdWV1ZSBhdCBpbmRleCAxDQo+ID4NCj4gPiAkIHZkcGEg ZGV2IHZzdGF0cyBzaG93IHZkcGEtYSBxaWR4IDENCj4gPiB2ZHBhLWE6DQo+ID4gcXR5cGUgdHgg cWlkeCAxIHJlY2VpdmVkX2Rlc2MgNDU4MzM2NyBjb21wbGV0ZWRfZGVzYyA0NTgzMzY3DQo+ID4N Cj4gPiAyLiBSZWFkIHN0YXRpc3RpY3MgZm9yIHRoZSB2aXJ0cXVldWUgYXQgaW5kZXggMzINCj4g PiAkIHZkcGEgZGV2IHZzdGF0cyBzaG93IHZkcGEtYSBxaWR4IDMyDQo+ID4gdmRwYS1hOg0KPiA+ IHF0eXBlIGN2cSBxaWR4IDMyIHJlY2VpdmVkX2Rlc2MgMCBjb21wbGV0ZWRfZGVzYyAwDQo+ID4N Cj4gPiAzLiBSZWFkIHN0YXRpc2l0aWNzIGZvciB0aGUgdmlydHF1ZXVlIGF0IGluZGV4IDAgd2l0 aCBqc29uIG91dHB1dA0KPiA+ICQgdmRwYSAtaiBkZXYgdnN0YXRzIHNob3cgdmRwYS1hIHFpZHgg MA0KPiA+IHsidnN0YXRzIjp7InZkcGEtYSI6ew0KPiA+ICJxdHlwZSI6InJ4IiwicWlkeCI6MCwi bmFtZSI6InJlY2VpdmVkX2Rlc2MiLCJ2YWx1ZSI6NDkwMjA1LCJuYW1lIjoiY29tcGxldGVkX2Rl c2MiLCJ2YWx1ZSI6NDg5OTY0fX19DQo+ID4NCj4gPiA0LiBSZWFkIHN0YXRpc3RpY3MgZm9yIHRo ZSB2aXJ0cXVldWUgYXQgaW5kZXggMCB3aXRoIHByZWV0eSBqc29uDQo+ID4gICAgIG91dHB1dA0K PiA+ICQgdmRwYSAtanAgZGV2IHZzdGF0cyBzaG93IHZkcGEtYSBxaWR4IDANCj4gPiB7DQo+ID4g ICAgICAidnN0YXRzIjogew0KPiA+ICAgICAgICAgICJ2ZHBhLWEiOiB7DQo+ID4NCj4gPiAgICAg ICAgICAgICAgInF0eXBlIjogInJ4IiwNCj4gPiAgICAgICAgICAgICAgInFpZHgiOiAwLA0KPiA+ ICAgICAgICAgICAgICAibmFtZSI6ICJyZWNlaXZlZF9kZXNjIiwNCj4gPiAgICAgICAgICAgICAg InZhbHVlIjogNDkwMjA1LA0KPiA+ICAgICAgICAgICAgICAibmFtZSI6ICJjb21wbGV0ZWRfZGVz YyIsDQo+ID4gICAgICAgICAgICAgICJ2YWx1ZSI6IDQ4OTk2NA0KPiA+ICAgICAgICAgIH0NCj4g PiAgICAgIH0NCj4gPiB9DQo+ID4NCj4gPiBJc3N1ZTogMjg4ODU1NA0KPiA+IENoYW5nZS1JZDog STEzNzExNWZkM2RiMjU4YzViOTVmYTUzZGFiYzJjZDRjMzY0YTE3NGINCj4gPiBTaWduZWQtb2Zm LWJ5OiBFbGkgQ29oZW4gPGVsaWNAbnZpZGlhLmNvbT4NCj4gPiAtLS0NCj4gPiAgIHZkcGEvaW5j bHVkZS91YXBpL2xpbnV4L3ZkcGEuaCB8ICAgNiArKw0KPiA+ICAgdmRwYS92ZHBhLmMgICAgICAg ICAgICAgICAgICAgIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ ICAgMiBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL3ZkcGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZkcGEuaCBiL3ZkcGEvaW5jbHVkZS91YXBpL2xp bnV4L3ZkcGEuaA0KPiA+IGluZGV4IGNjNTc1YTgyNWE3Yy4uN2Y1MmU3MDNmMWFkIDEwMDY0NA0K PiA+IC0tLSBhL3ZkcGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZkcGEuaA0KPiA+ICsrKyBiL3ZkcGEv aW5jbHVkZS91YXBpL2xpbnV4L3ZkcGEuaA0KPiA+IEBAIC0xOCw2ICsxOCw3IEBAIGVudW0gdmRw YV9jb21tYW5kIHsNCj4gPiAgIAlWRFBBX0NNRF9ERVZfREVMLA0KPiA+ICAgCVZEUEFfQ01EX0RF Vl9HRVQsCQkvKiBjYW4gZHVtcCAqLw0KPiA+ICAgCVZEUEFfQ01EX0RFVl9DT05GSUdfR0VULAkv KiBjYW4gZHVtcCAqLw0KPiA+ICsJVkRQQV9DTURfREVWX1NUQVRTX0dFVCwNCj4gPiAgIH07DQo+ ID4NCj4gPiAgIGVudW0gdmRwYV9hdHRyIHsNCj4gPiBAQCAtNDYsNiArNDcsMTEgQEAgZW51bSB2 ZHBhX2F0dHIgew0KPiA+ICAgCVZEUEFfQVRUUl9ERVZfTkVHT1RJQVRFRF9GRUFUVVJFUywJLyog dTY0ICovDQo+ID4gICAJVkRQQV9BVFRSX0RFVl9NR01UREVWX01BWF9WUVMsCQkvKiB1MzIgKi8N Cj4gPiAgIAlWRFBBX0FUVFJfREVWX1NVUFBPUlRFRF9GRUFUVVJFUywJLyogdTY0ICovDQo+ID4g Kw0KPiA+ICsJVkRQQV9BVFRSX0RFVl9RVUVVRV9JTkRFWCwJCS8qIHUzMiAqLw0KPiA+ICsJVkRQ QV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9OQU1FLAkJLyogc3RyaW5nICovDQo+ID4gKwlWRFBBX0FU VFJfREVWX1ZFTkRPUl9BVFRSX1ZBTFVFLAkvKiB1NjQgKi8NCj4gPiArDQo+ID4gICAJLyogbmV3 IGF0dHJpYnV0ZXMgbXVzdCBiZSBhZGRlZCBhYm92ZSBoZXJlICovDQo+ID4gICAJVkRQQV9BVFRS X01BWCwNCj4gPiAgIH07DQo+ID4gZGlmZiAtLWdpdCBhL3ZkcGEvdmRwYS5jIGIvdmRwYS92ZHBh LmMNCj4gPiBpbmRleCAzYWUxYjc4ZjRjYWMuLjRmMjE3OTkzYzczYiAxMDA2NDQNCj4gPiAtLS0g YS92ZHBhL3ZkcGEuYw0KPiA+ICsrKyBiL3ZkcGEvdmRwYS5jDQo+ID4gQEAgLTI2LDYgKzI2LDcg QEANCj4gPiAgICNkZWZpbmUgVkRQQV9PUFRfVkRFVl9NQUMJCUJJVCg0KQ0KPiA+ICAgI2RlZmlu ZSBWRFBBX09QVF9WREVWX01UVQkJQklUKDUpDQo+ID4gICAjZGVmaW5lIFZEUEFfT1BUX01BWF9W UVAJCUJJVCg2KQ0KPiA+ICsjZGVmaW5lIFZEUEFfT1BUX1FVRVVFX0lOREVYCQlCSVQoNykNCj4g Pg0KPiA+ICAgc3RydWN0IHZkcGFfb3B0cyB7DQo+ID4gICAJdWludDY0X3QgcHJlc2VudDsgLyog ZmxhZ3Mgb2YgcHJlc2VudCBpdGVtcyAqLw0KPiA+IEBAIC0zNiw2ICszNyw3IEBAIHN0cnVjdCB2 ZHBhX29wdHMgew0KPiA+ICAgCWNoYXIgbWFjW0VUSF9BTEVOXTsNCj4gPiAgIAl1aW50MTZfdCBt dHU7DQo+ID4gICAJdWludDE2X3QgbWF4X3ZxcDsNCj4gPiArCXVpbnQzMl90IHF1ZXVlX2lkeDsN Cj4gPiAgIH07DQo+ID4NCj4gPiAgIHN0cnVjdCB2ZHBhIHsNCj4gPiBAQCAtMTc0LDYgKzE3Niwx NyBAQCBzdGF0aWMgaW50IHZkcGFfYXJndl91MTYoc3RydWN0IHZkcGEgKnZkcGEsIGludCBhcmdj LCBjaGFyICoqYXJndiwNCj4gPiAgIAlyZXR1cm4gZ2V0X3UxNihyZXN1bHQsICphcmd2LCAxMCk7 DQo+ID4gICB9DQo+ID4NCj4gPiArc3RhdGljIGludCB2ZHBhX2FyZ3ZfdTMyKHN0cnVjdCB2ZHBh ICp2ZHBhLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YsDQo+ID4gKwkJCSB1aW50MzJfdCAqcmVzdWx0 KQ0KPiA+ICt7DQo+ID4gKwlpZiAoYXJnYyA8PSAwIHx8ICphcmd2ID09IE5VTEwpIHsNCj4gPiAr CQlmcHJpbnRmKHN0ZGVyciwgIm51bWJlciBleHBlY3RlZFxuIik7DQo+ID4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGdldF91MzIocmVzdWx0LCAqYXJn diwgMTApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgc3RydWN0IHZkcGFfYXJnc19tZXRhZGF0YSB7 DQo+ID4gICAJdWludDY0X3Qgb19mbGFnOw0KPiA+ICAgCWNvbnN0IGNoYXIgKmVycl9tc2c7DQo+ ID4gQEAgLTE4Myw2ICsxOTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfYXJnc19tZXRh ZGF0YSB2ZHBhX2FyZ3NfcmVxdWlyZWRbXSA9IHsNCj4gPiAgIAl7VkRQQV9PUFRfVkRFVl9NR01U REVWX0hBTkRMRSwgIm1hbmFnZW1lbnQgZGV2aWNlIGhhbmRsZSBub3Qgc2V0LiJ9LA0KPiA+ICAg CXtWRFBBX09QVF9WREVWX05BTUUsICJkZXZpY2UgbmFtZSBpcyBub3Qgc2V0LiJ9LA0KPiA+ICAg CXtWRFBBX09QVF9WREVWX0hBTkRMRSwgImRldmljZSBuYW1lIGlzIG5vdCBzZXQuIn0sDQo+ID4g Kwl7VkRQQV9PUFRfUVVFVUVfSU5ERVgsICJxdWV1ZSBpbmRleCBpcyBub3Qgc2V0LiJ9LA0KPiA+ ICAgfTsNCj4gPg0KPiA+ICAgc3RhdGljIGludCB2ZHBhX2FyZ3NfZmluZGluZ19yZXF1aXJlZF92 YWxpZGF0ZSh1aW50NjRfdCBvX3JlcXVpcmVkLA0KPiA+IEBAIC0yMjgsNiArMjQyLDggQEAgc3Rh dGljIHZvaWQgdmRwYV9vcHRzX3B1dChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IHZkcGEg KnZkcGEpDQo+ID4gICAJCW1ubF9hdHRyX3B1dF91MTYobmxoLCBWRFBBX0FUVFJfREVWX05FVF9D RkdfTVRVLCBvcHRzLT5tdHUpOw0KPiA+ICAgCWlmIChvcHRzLT5wcmVzZW50ICYgVkRQQV9PUFRf TUFYX1ZRUCkNCj4gPiAgIAkJbW5sX2F0dHJfcHV0X3UxNihubGgsIFZEUEFfQVRUUl9ERVZfTkVU X0NGR19NQVhfVlFQLCBvcHRzLT5tYXhfdnFwKTsNCj4gPiArCWlmIChvcHRzLT5wcmVzZW50ICYg VkRQQV9PUFRfUVVFVUVfSU5ERVgpDQo+ID4gKwkJbW5sX2F0dHJfcHV0X3UzMihubGgsIFZEUEFf QVRUUl9ERVZfUVVFVUVfSU5ERVgsIG9wdHMtPnF1ZXVlX2lkeCk7DQo+ID4gICB9DQo+ID4NCj4g PiAgIHN0YXRpYyBpbnQgdmRwYV9hcmd2X3BhcnNlKHN0cnVjdCB2ZHBhICp2ZHBhLCBpbnQgYXJn YywgY2hhciAqKmFyZ3YsDQo+ID4gQEAgLTMwNCw2ICszMjAsMTQgQEAgc3RhdGljIGludCB2ZHBh X2FyZ3ZfcGFyc2Uoc3RydWN0IHZkcGEgKnZkcGEsIGludCBhcmdjLCBjaGFyICoqYXJndiwNCj4g Pg0KPiA+ICAgCQkJTkVYVF9BUkdfRldEKCk7DQo+ID4gICAJCQlvX2ZvdW5kIHw9IFZEUEFfT1BU X01BWF9WUVA7DQo+ID4gKwkJfSBlbHNlIGlmICgobWF0Y2hlcygqYXJndiwgInFpZHgiKSAgPT0g MCkgJiYgKG9fb3B0aW9uYWwgJiBWRFBBX09QVF9RVUVVRV9JTkRFWCkpIHsNCj4gPiArCQkJTkVY VF9BUkdfRldEKCk7DQo+ID4gKwkJCWVyciA9IHZkcGFfYXJndl91MzIodmRwYSwgYXJnYywgYXJn diwgJm9wdHMtPnF1ZXVlX2lkeCk7DQo+ID4gKwkJCWlmIChlcnIpDQo+ID4gKwkJCQlyZXR1cm4g ZXJyOw0KPiA+ICsNCj4gPiArCQkJTkVYVF9BUkdfRldEKCk7DQo+ID4gKwkJCW9fZm91bmQgfD0g VkRQQV9PUFRfUVVFVUVfSU5ERVg7DQo+ID4gICAJCX0gZWxzZSB7DQo+ID4gICAJCQlmcHJpbnRm KHN0ZGVyciwgIlVua25vd24gb3B0aW9uIFwiJXNcIlxuIiwgKmFyZ3YpOw0KPiA+ICAgCQkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4gQEAgLTU5NCw2ICs2MTgsNyBAQCBzdGF0aWMgdm9pZCBjbWRfZGV2 X2hlbHAodm9pZCkNCj4gPiAgIAlmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIG1heF92cXAgTUFYX1ZRX1BBSVJTIF1c biIpOw0KPiA+ICAgCWZwcmludGYoc3RkZXJyLCAiICAgICAgIHZkcGEgZGV2IGRlbCBERVZcbiIp Ow0KPiA+ICAgCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IHZkcGEgZGV2IGNvbmZpZyBDT01NQU5E IFsgT1BUSU9OUyBdXG4iKTsNCj4gPiArCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IHZkcGEgZGV2 IHZzdGF0cyBDT01NQU5EXG4iKTsNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIGNvbnN0IGNo YXIgKmRldmljZV90eXBlX25hbWUodWludDMyX3QgdHlwZSkNCj4gPiBAQCAtODE5LDYgKzg0NCwx MzIgQEAgc3RhdGljIGludCBjbWRfZGV2X2NvbmZpZyhzdHJ1Y3QgdmRwYSAqdmRwYSwgaW50IGFy Z2MsIGNoYXIgKiphcmd2KQ0KPiA+ICAgCXJldHVybiAtRU5PRU5UOw0KPiA+ICAgfQ0KPiA+DQo+ ID4gKyNkZWZpbmUgTUFYX0tFWV9MRU4gMjAwDQo+ID4gKy8qIDUgYnl0ZXMgZm9yIGZvcm1hdCAq Lw0KPiA+ICsjZGVmaW5lIE1BWF9GTVRfTEVOIChNQVhfS0VZX0xFTiArIDUgKyAxKQ0KPiA+ICsN Cj4gPiArc3RhdGljIHZvaWQgcHJfb3V0X2Rldl9uZXRfdnN0YXRzKGNvbnN0IHN0cnVjdCBubG1z Z2hkciAqbmxoKQ0KPiA+ICt7DQo+ID4gKwljb25zdCBjaGFyICpuYW1lID0gTlVMTDsNCj4gPiAr CXVpbnQ2NF90IGZlYXR1cmVzID0gMDsNCj4gPiArCWNoYXIgZm10W01BWF9GTVRfTEVOXTsNCj4g PiArCXVpbnQxNl90IG1heF92cXAgPSAwOw0KPiA+ICsJYm9vbCBpc19jdHJsID0gZmFsc2U7DQo+ ID4gKwlzdHJ1Y3QgbmxhdHRyICphdHRyOw0KPiA+ICsJdWludDE2X3QgcWlkeCA9IDA7DQo+ID4g Kwl1aW50NjRfdCB2NjQ7DQo+ID4gKw0KPiA+ICsJbW5sX2F0dHJfZm9yX2VhY2goYXR0ciwgbmxo LCBzaXplb2Yoc3RydWN0IGdlbmxtc2doZHIpKSB7DQo+ID4gKwkJc3dpdGNoIChhdHRyLT5ubGFf dHlwZSkgew0KPiA+ICsJCWNhc2UgVkRQQV9BVFRSX0RFVl9ORUdPVElBVEVEX0ZFQVRVUkVTOg0K PiA+ICsJCQlmZWF0dXJlcyA9IG1ubF9hdHRyX2dldF91NjQoYXR0cik7DQo+ID4gKwkJCWJyZWFr Ow0KPiA+ICsJCWNhc2UgVkRQQV9BVFRSX0RFVl9ORVRfQ0ZHX01BWF9WUVA6DQo+ID4gKwkJCW1h eF92cXAgPSBtbmxfYXR0cl9nZXRfdTE2KGF0dHIpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQlj YXNlIFZEUEFfQVRUUl9ERVZfUVVFVUVfSU5ERVg6DQo+ID4gKwkJCXFpZHggPSBtbmxfYXR0cl9n ZXRfdTE2KGF0dHIpOw0KPiA+ICsJCQlpc19jdHJsID0gZmVhdHVyZXMgJiBCSVQoVklSVElPX05F VF9GX0NUUkxfVlEpICYmIHFpZHggPT0gMiAqIG1heF92cXA7DQo+IEhlcmUgdGhlcmUncyBubyBn dWFyYW50ZWUgaW4gdGhlICh1c2Vyc3BhY2UpIGNvZGUgeW91IGNvdWxkIGdldCB2YWxpZA0KPiBm ZWF0dXJlcyBhbmQgbWF4X3ZxcCB2YWx1ZSBhbHRob3VnaCB0aGVzZSB0d28gYXR0cmlidXRlcyBt YXkgd2VsbCBiZQ0KPiBwcmVzZW50IGluIHRoZSB0YWJsZSByaWdodCBhZnRlciB0aGUgVkRQQV9B VFRSX0RFVl9RVUVVRV9JTkRFWC4gSSB0aGluaw0KPiBpdCdzIHdpdGggbGVzcyBwb2ludCB0byBt YWtlIHVzZXJzcGFjZSBjb2RlIGNvbXBsaWNhdGVkIHRvIGNoZWNrIHRoZQ0KPiBvcmRlcmluZyBh bmQgZmFpbCBidWdneSBkcml2ZXIgaW1wbGVtZW50YXRpb24uIFdoeSBub3QgZm9sbG93IEphc29u J3MNCj4gc3VnZ2VzdGlvbiB0byBoYXZlIHZkcGEgY29yZSBpbnNlcnQgREVWX05FR09USUFURURf RkVBVFVSRVMsDQo+IERFVl9ORVRfQ0ZHX01BWF9WUVAgYXMgd2VsbCBhcyBWRFBBX0FUVFJfREVW X1FVRVVFX0lOREVYIGF0dHJzIGFoZWFkIG9mDQo+IG90aGVyIHZlbmRvciBkcml2ZXIgc3RhdHM/ IFRoZW4gdGhlcmUncyBubyBuZWVkIHRvIGR1cGxpY2F0ZSB0aGUgbG9naWMNCj4gZm9yIHRoZSBj b21tb24gYXR0cnMgaW4gZWFjaCB2ZW5kb3IgZHJpdmVyLg0KDQpJIHdvbmRlciBpZiB3ZSdyZSBu b3QgZ29pbmcgaW4gY2lyY2xlcy4gQXQgZmlyc3QgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIGJldHRl ciB0byB0aGUga2VybmVsIGRyaXZlcg0KZGlnZXN0IGV2ZXJ5dGhpbmcgYW5kIGdpdmUgaXQgdG8g dXNlcnNwYWNlLiBGb3IgZWFjaCByZWNvcmQgd2Ugd291bGQgcGFzcyBiYWNrIHRoZSBhdHRyaWJ1 dGUNCm5hbWUsIGF0dHJpYnV0ZSB2YWx1ZSwgYW5kIGFuIGluZGljYXRpb24gb2YgdGhlIHR5cGUg b2YgcXVldWU6IFRYLCBSWCBvciBDb250cm9sLg0KUmVnYXJkaW5nIHRoZSB0eXBlIG9mIHF1ZXVl LCB3ZSBjYW4gZG8gaXQgaW4gdGhlIHZkcGEgY29yZS4NCg0KV2hhdCBkbyB5b3UgdGhpbms/DQoN Cj4gDQo+ID4gKwkJCWlmICghaXNfY3RybCkgew0KPiA+ICsJCQkJaWYgKHFpZHggJiAxKQ0KPiA+ ICsJCQkJCXByaW50X3N0cmluZyhQUklOVF9BTlksICJxdWV1ZV90eXBlIiwgInF1ZXVlX3R5cGUg JXMgIiwgInR4Iik7DQo+ID4gKwkJCQllbHNlDQo+ID4gKwkJCQkJcHJpbnRfc3RyaW5nKFBSSU5U X0FOWSwgInF1ZXVlX3R5cGUiLCAicXVldWVfdHlwZSAlcyAiLCAicngiKTsNCj4gPiArCQkJfSBl bHNlIHsNCj4gPiArCQkJCQlwcmludF9zdHJpbmcoUFJJTlRfQU5ZLCAicXVldWVfdHlwZSIsICJx dWV1ZV90eXBlICVzICIsICJjb250cm9sX3ZxIik7DQo+ID4gKwkJCX0NCj4gPiArCQkJYnJlYWs7 DQo+ID4gKwkJY2FzZSBWRFBBX0FUVFJfREVWX1ZFTkRPUl9BVFRSX05BTUU6DQo+ID4gKwkJCW5h bWUgPSBtbmxfYXR0cl9nZXRfc3RyKGF0dHIpOw0KPiA+ICsJCQlpZiAoc3RybGVuKG5hbWUpID4g TUFYX0tFWV9MRU4pDQo+ID4gKwkJCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJCQlzdHJjcHkoZm10 LCBuYW1lKTsNCj4gPiArCQkJc3RyY2F0KGZtdCwgIiAlbHUgIik7DQo+ID4gKwkJCWJyZWFrOw0K PiA+ICsJCWNhc2UgVkRQQV9BVFRSX0RFVl9WRU5ET1JfQVRUUl9WQUxVRToNCj4gPiArCQkJdjY0 ID0gbW5sX2F0dHJfZ2V0X3U2NChhdHRyKTsNCj4gPiArCQkJcHJpbnRfdTY0KFBSSU5UX0FOWSwg bmFtZSwgZm10LCB2NjQpOw0KPiA+ICsJCQlicmVhazsNCj4gTGlrZXdpc2UsIEkgYmVsaWV2ZSB0 aGVzZSB2ZW5kb3Igc3RhdHMgbmVlZCBtb3JlIHN0cnVjdHVyZWQgbWVzc2FnZQ0KPiBsYXlvdXQg dG8gZW5zdXJlIHBhaXJpbmcgYW5kIG9yZGVyLg0KPiANCj4gPg0KPiA+IFsxXQ0KPiA+IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL3ZpcnR1YWxpemF0aW9uL1BIMFBSMTJNQjU0ODFGNkQ0NDQ1MUYw MTgxNDQ3MDExMkRDMDg5QFBIMFBSMTJNQjU0ODEubmFtcHJkMTIucHJvZC5vdXRsb29rLmNvbS8N Cj4gPg0KPiA+IFsyXQ0KPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3ZpcnR1YWxpemF0aW9u LzYxNzVkNjIwLTZiZTMtYzI0OS01NDgyLTBhOTQ0ODQ5OWU0YUBvcmFjbGUuY29tLw0KPiANCj4g VGhhbmtzLA0KPiAtU2l3ZWkNCj4gDQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZCBwcl9vdXRfZGV2X3ZzdGF0cyhzdHJ1Y3QgdmRwYSAqdmRwYSwgc3Ry dWN0IG5sYXR0ciAqKnRiLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCkNCj4gPiArew0KPiA+ ICsJdWludDMyX3QgZGV2aWNlX2lkID0gbW5sX2F0dHJfZ2V0X3UzMih0YltWRFBBX0FUVFJfREVW X0lEXSk7DQo+ID4gKw0KPiA+ICsJcHJfb3V0X3ZkZXZfaGFuZGxlX3N0YXJ0KHZkcGEsIHRiKTsN Cj4gPiArCXN3aXRjaCAoZGV2aWNlX2lkKSB7DQo+ID4gKwljYXNlIFZJUlRJT19JRF9ORVQ6DQo+ ID4gKwkJcHJfb3V0X2Rldl9uZXRfdnN0YXRzKG5saCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlk ZWZhdWx0Og0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsJcHJfb3V0X3ZkZXZfaGFuZGxl X2VuZCh2ZHBhKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjbWRfZGV2X3ZzdGF0 c19zaG93X2NiKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCB2b2lkICpkYXRhKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgZ2VubG1zZ2hkciAqZ2VubCA9IG1ubF9ubG1zZ19nZXRfcGF5bG9hZChu bGgpOw0KPiA+ICsJc3RydWN0IG5sYXR0ciAqdGJbVkRQQV9BVFRSX01BWCArIDFdID0ge307DQo+ ID4gKwlzdHJ1Y3QgdmRwYSAqdmRwYSA9IGRhdGE7DQo+ID4gKw0KPiA+ICsJbW5sX2F0dHJfcGFy c2UobmxoLCBzaXplb2YoKmdlbmwpLCBhdHRyX2NiLCB0Yik7DQo+ID4gKwlpZiAoIXRiW1ZEUEFf QVRUUl9ERVZfTkFNRV0gfHwgIXRiW1ZEUEFfQVRUUl9ERVZfSURdKQ0KPiA+ICsJCXJldHVybiBN TkxfQ0JfRVJST1I7DQo+ID4gKwlwcl9vdXRfZGV2X3ZzdGF0cyh2ZHBhLCB0YiwgbmxoKTsNCj4g PiArCXJldHVybiBNTkxfQ0JfT0s7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNt ZF9kZXZfdnN0YXRzX2hlbHAodm9pZCkNCj4gPiArew0KPiA+ICsJZnByaW50ZihzdGRlcnIsICJV c2FnZTogdmRwYSBkZXYgdnN0YXRzIHNob3cgREVWIFtxaWR4IFFVRVVFX0lOREVYXVxuIik7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY21kX2Rldl92c3RhdHNfc2hvdyhzdHJ1Y3Qg dmRwYSAqdmRwYSwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiA+ICt7DQo+ID4gKwl1aW50MTZf dCBmbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9BQ0s7DQo+ID4gKwlzdHJ1Y3Qgbmxtc2do ZHIgKm5saDsNCj4gPiArCWludCBlcnI7DQo+ID4gKw0KPiA+ICsJaWYgKGFyZ2MgIT0gMSAmJiBh cmdjICE9IDMpIHsNCj4gPiArCQljbWRfZGV2X3ZzdGF0c19oZWxwKCk7DQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbmxoID0gbW5sdV9nZW5fc29ja2V0X2Nt ZF9wcmVwYXJlKCZ2ZHBhLT5ubGcsIFZEUEFfQ01EX0RFVl9TVEFUU19HRVQsDQo+ID4gKwkJCQkJ ICBmbGFncyk7DQo+ID4gKw0KPiA+ICsJZXJyID0gdmRwYV9hcmd2X3BhcnNlX3B1dChubGgsIHZk cGEsIGFyZ2MsIGFyZ3YsDQo+ID4gKwkJCQkgIFZEUEFfT1BUX1ZERVZfSEFORExFLCBWRFBBX09Q VF9RVUVVRV9JTkRFWCk7DQo+ID4gKwlpZiAoZXJyKQ0KPiA+ICsJCXJldHVybiBlcnI7DQo+ID4g Kw0KPiA+ICsJcHJfb3V0X3NlY3Rpb25fc3RhcnQodmRwYSwgInZzdGF0cyIpOw0KPiA+ICsJZXJy ID0gbW5sdV9nZW5fc29ja2V0X3NuZHJjdigmdmRwYS0+bmxnLCBubGgsIGNtZF9kZXZfdnN0YXRz X3Nob3dfY2IsIHZkcGEpOw0KPiA+ICsJcHJfb3V0X3NlY3Rpb25fZW5kKHZkcGEpOw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY21kX2Rldl92c3RhdHMo c3RydWN0IHZkcGEgKnZkcGEsIGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gPiArew0KPiA+ICsJ aWYgKGFyZ2MgPCAxKSB7DQo+ID4gKwkJY21kX2Rldl92c3RhdHNfaGVscCgpOw0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChtYXRjaGVzKCphcmd2LCAi aGVscCIpID09IDApIHsNCj4gPiArCQljbWRfZGV2X3ZzdGF0c19oZWxwKCk7DQo+ID4gKwkJcmV0 dXJuIDA7DQo+ID4gKwl9IGVsc2UgaWYgKG1hdGNoZXMoKmFyZ3YsICJzaG93IikgPT0gMCkgew0K PiA+ICsJCXJldHVybiBjbWRfZGV2X3ZzdGF0c19zaG93KHZkcGEsIGFyZ2MgLSAxLCBhcmd2ICsg MSk7DQo+ID4gKwl9DQo+ID4gKwlmcHJpbnRmKHN0ZGVyciwgIkNvbW1hbmQgXCIlc1wiIG5vdCBm b3VuZFxuIiwgKmFyZ3YpOw0KPiA+ICsJcmV0dXJuIC1FTk9FTlQ7DQo+ID4gK30NCj4gPiArDQo+ ID4gICBzdGF0aWMgaW50IGNtZF9kZXYoc3RydWN0IHZkcGEgKnZkcGEsIGludCBhcmdjLCBjaGFy ICoqYXJndikNCj4gPiAgIHsNCj4gPiAgIAlpZiAoIWFyZ2MpDQo+ID4gQEAgLTgzNiw2ICs5ODcs OCBAQCBzdGF0aWMgaW50IGNtZF9kZXYoc3RydWN0IHZkcGEgKnZkcGEsIGludCBhcmdjLCBjaGFy ICoqYXJndikNCj4gPiAgIAkJcmV0dXJuIGNtZF9kZXZfZGVsKHZkcGEsIGFyZ2MgLSAxLCBhcmd2 ICsgMSk7DQo+ID4gICAJfSBlbHNlIGlmIChtYXRjaGVzKCphcmd2LCAiY29uZmlnIikgPT0gMCkg ew0KPiA+ICAgCQlyZXR1cm4gY21kX2Rldl9jb25maWcodmRwYSwgYXJnYyAtIDEsIGFyZ3YgKyAx KTsNCj4gPiArCX0gZWxzZSBpZiAobWF0Y2hlcygqYXJndiwgInZzdGF0cyIpID09IDApIHsNCj4g PiArCQlyZXR1cm4gY21kX2Rldl92c3RhdHModmRwYSwgYXJnYyAtIDEsIGFyZ3YgKyAxKTsNCj4g PiAgIAl9DQo+ID4gICAJZnByaW50ZihzdGRlcnIsICJDb21tYW5kIFwiJXNcIiBub3QgZm91bmRc biIsICphcmd2KTsNCj4gPiAgIAlyZXR1cm4gLUVOT0VOVDsNCg0K