Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp3643284img; Mon, 25 Mar 2019 14:44:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqxI/QRALCdu7lYomXBRbs6zpojlhxJHqQgxXy1bi8jMR8+gCp6O3UJtxZEg+PUIW6KPHmKy X-Received: by 2002:a62:ab14:: with SMTP id p20mr26990633pff.23.1553550242390; Mon, 25 Mar 2019 14:44:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553550242; cv=none; d=google.com; s=arc-20160816; b=ZDupatrkyWkH6ao4pppVXxzagjoqp9XOJ9uLaOj+FxinRiNAYJ/wXUJF0BIvHB3ZZX zjkoMCQSGgMw0CQytKWZdlAgXIkWKhZK1ZsUIrDrgXVE3r9KDF4mmcQYkSUkr04ejfVW EudjTGhzCvl0ShHMIrNxAlOB5UUnIN82Cj46QE30tmpqwjeAZva4BNHSYVHjcdr3C82P rww4FvKom303PLxI7DB8U63m/gw4uV/T69gxJ7AUHTnmnibGgFMDvc0INiqmtOK1Vzh5 f2DIxAnbasD17VF8ykkOXYxfK/m8E+ds+BYOeEHu+foVyqMZNHg1MVKO5NEOBDLYCrl1 oycQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:to:from:dkim-signature; bh=WOHIi1Kh0Q8ycMfLZ5Ss8TCECv9LV29/awUGnhRhcYU=; b=DPd0QMtm4wlznfn+SlICg4HrH3tN2tbhe+fgn9LHmEvJWl9TprA7OVm7mltxWNYUpY acWZ8e7wiyUwDZXWkxi+2P66/HNrxGBTttOi0IhkaBJ/MhTnjXpURLNqLipLrD+b6j9+ 3SCLNF5WqYGO4WLt5G8CA1wEJrH2wkyUb1jVhI3pBLGqhzZzhdqPE8zbmYIyOreqkBlf X52Em1FQXRIGblE0qyzMvWa7rtFCJ68WLbb4q2AjxQEE7QO/pixqco12UfCZsIMDz0DX 3p9B4rvqj6m33FHA0TcFJ9TCDVTWpREyi9E7k72JCeTfWudljx1Ghgrq/stDjq01eO8U 1i3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@Mellanox.com header.s=selector1 header.b=ug3tw4YR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h1si14564463pfb.276.2019.03.25.14.43.45; Mon, 25 Mar 2019 14:44:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@Mellanox.com header.s=selector1 header.b=ug3tw4YR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730270AbfCYVm7 (ORCPT + 99 others); Mon, 25 Mar 2019 17:42:59 -0400 Received: from mail-eopbgr40066.outbound.protection.outlook.com ([40.107.4.66]:6476 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729127AbfCYVm7 (ORCPT ); Mon, 25 Mar 2019 17:42:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WOHIi1Kh0Q8ycMfLZ5Ss8TCECv9LV29/awUGnhRhcYU=; b=ug3tw4YRi9+xdRB+l3ek7zWSWoK7F9Ky49vGc3TmWy6yF0m6UHXlZCz4/25WAUutKiQM7sXKFVKQnVm+z5qmJC1c9mnMC8VEdeZ6NDbm41ZxbZnKE8/mfdpPYDPzmh/loCobvza7sFFpMxRuCmwWItsx0E980DQxHd4wuz+iIq0= Received: from VI1PR0501MB2271.eurprd05.prod.outlook.com (10.169.135.8) by VI1PR0501MB2174.eurprd05.prod.outlook.com (10.169.134.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1730.16; Mon, 25 Mar 2019 21:42:48 +0000 Received: from VI1PR0501MB2271.eurprd05.prod.outlook.com ([fe80::a0b8:7ed8:d657:2f59]) by VI1PR0501MB2271.eurprd05.prod.outlook.com ([fe80::a0b8:7ed8:d657:2f59%6]) with mapi id 15.20.1730.019; Mon, 25 Mar 2019 21:42:48 +0000 From: Parav Pandit To: Maxim Levitsky , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kwankhede@nvidia.com" , "alex.williamson@redhat.com" Subject: RE: [PATCH 8/8] vfio/mdev: Improve the create/remove sequence Thread-Topic: [PATCH 8/8] vfio/mdev: Improve the create/remove sequence Thread-Index: AQHU4QXvNq2tSD+YZ0aNNrE4+GOfm6YcWfiAgACKHzA= Date: Mon, 25 Mar 2019 21:42:48 +0000 Message-ID: References: <1553296835-37522-1-git-send-email-parav@mellanox.com> <1553296835-37522-9-git-send-email-parav@mellanox.com> <0e299016aa80122cb9f82d0e0544166c54806268.camel@redhat.com> In-Reply-To: <0e299016aa80122cb9f82d0e0544166c54806268.camel@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=parav@mellanox.com; x-originating-ip: [208.176.44.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1a204268-9794-4613-4574-08d6b16ad2fc x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:VI1PR0501MB2174; x-ms-traffictypediagnostic: VI1PR0501MB2174: x-microsoft-antispam-prvs: x-forefront-prvs: 0987ACA2E2 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(396003)(39860400002)(346002)(376002)(366004)(13464003)(189003)(199004)(86362001)(305945005)(229853002)(14454004)(110136005)(316002)(106356001)(33656002)(30864003)(25786009)(2201001)(6246003)(256004)(9686003)(2501003)(53936002)(53946003)(14444005)(55016002)(105586002)(6116002)(3846002)(2906002)(71190400001)(5660300002)(486006)(52536014)(68736007)(6506007)(99286004)(8936002)(97736004)(66066001)(81156014)(81166006)(102836004)(6436002)(53546011)(186003)(74316002)(76176011)(11346002)(446003)(7736002)(7696005)(476003)(26005)(71200400001)(8676002)(478600001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0501MB2174;H:VI1PR0501MB2271.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: lal6SSw8uPQUEIgDX7CjSSphaTzUqQBReXqdf2kMpiHFP8qjBjjXX1uitfWPmhCJAn0Y3lvc//p6Gu7Il96HgIcX14YlHC3jizZkjRPjwRgCTFFxP60Ojw5hHkwB7Qil/ma9EvCzVzNr6pJhq/apkrqZwhbyAg4pgujoEaxPGQz7g5ZbeYqiaXgeCPKd+7/ZlZgWkwSjSX/vKqEWbCfbzzVSybkfaKMQF2+LrUG166JeIkkMdn9Xy7yAWfaRHbJ3IyfgC9ahzu2rTmd7daSyNO36IHIEzsqZ7tvsRIUU41e3wKAppERP1K6HccDE63IJzhkNi8msxvfcBG6qtkPKYDBbKcfnzjlgfun8TC5tA2BMC9E6jAhnXeRHlzgY92KYobmd+rm3YWLIUeB0YZfYTOcFS+5YrqzZdI1f9oXbJxg= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a204268-9794-4613-4574-08d6b16ad2fc X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Mar 2019 21:42:48.2500 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2174 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW0gTGV2aXRza3kg PG1sZXZpdHNrQHJlZGhhdC5jb20+DQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMjUsIDIwMTkgODoy NCBBTQ0KPiBUbzogUGFyYXYgUGFuZGl0IDxwYXJhdkBtZWxsYW5veC5jb20+OyBrdm1Admdlci5r ZXJuZWwub3JnOyBsaW51eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZzsga3dhbmtoZWRlQG52 aWRpYS5jb207DQo+IGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tDQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggOC84XSB2ZmlvL21kZXY6IEltcHJvdmUgdGhlIGNyZWF0ZS9yZW1vdmUgc2VxdWVuY2UN Cj4gDQo+IE9uIEZyaSwgMjAxOS0wMy0yMiBhdCAxODoyMCAtMDUwMCwgUGFyYXYgUGFuZGl0IHdy b3RlOg0KPiA+IFRoZXJlIGFyZSBmaXZlIHByb2JsZW1zIHdpdGggY3VycmVudCBjb2RlIHN0cnVj dHVyZS4NCj4gPiAxLiBtZGV2IGRldmljZSBpcyBwbGFjZWQgb24gdGhlIG1kZXYgYnVzIGJlZm9y ZSBpdCBpcyBjcmVhdGVkIGluIHRoZQ0KPiA+IHZlbmRvciBkcml2ZXIuIE9uY2UgYSBkZXZpY2Ug aXMgcGxhY2VkIG9uIHRoZSBtZGV2IGJ1cyB3aXRob3V0DQo+ID4gY3JlYXRpbmcgaXRzIHN1cHBv cnRpbmcgdW5kZXJseWluZyB2ZW5kb3IgZGV2aWNlLCBhbiBvcGVuKCkgY2FuIGdldA0KPiA+IHRy aWdnZXJlZCBieSB1c2Vyc3BhY2Ugb24gcGFydGlhbGx5IGluaXRpYWxpemVkIGRldmljZS4NCj4g PiBCZWxvdyBsYWRkZXIgZGlhZ3JhbSBoaWdobGlnaHQgaXQuDQo+ID4NCj4gPiAgICAgICBjcHUt MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0xDQo+ID4gICAgICAg LS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLQ0KPiA+ICAg IGNyZWF0ZV9zdG9yZSgpDQo+ID4gICAgICBtZGV2X2NyZWF0ZV9kZXZpY2UoKQ0KPiA+ICAgICAg ICBkZXZpY2VfcmVnaXN0ZXIoKQ0KPiA+ICAgICAgICAgICAuLi4NCj4gPiAgICAgICAgICB2Zmlv X21kZXZfcHJvYmUoKQ0KPiA+ICAgICAgICAgIC4uLmNyZWF0ZXMgY2hhciBkZXZpY2UNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmZpb19tZGV2X29wZW4oKQ0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC0+b3Bz LT5vcGVuKG1kZXYpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2ZmlvX2FwX21kZXZfb3BlbigpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hdHJpeF9tZGV2ID0gTlVMTA0KPiA+ICAgICAgICAgWy4uLl0N Cj4gPiAgICAgICAgIHBhcmVudC0+b3BzLT5jcmVhdGUoKQ0KPiA+ICAgICAgICAgICB2ZmlvX2Fw X21kZXZfY3JlYXRlKCkNCj4gPiAgICAgICAgICAgICBtZGV2X3NldF9kcnZkYXRhKG1kZXYsIG1h dHJpeF9tZGV2KTsNCj4gPiAgICAgICAgICAgICAvKiBWYWxpZCBwb2ludGVyIHNldCBhYm92ZSAq Lw0KPiANCj4gQWdyZWUuDQo+IFlvdSBwcm9iYWJseSBtZWFuIG1kZXZfZGV2aWNlX2NyZWF0ZSBo ZXJlLg0KPiANCj4gPg0KPiA+IDIuIEN1cnJlbnQgY3JlYXRpb24gc2VxdWVuY2UgaXMsDQo+ID4g ICAgcGFyZW50LT5vcHNfY3JlYXRlKCkNCj4gPiAgICBncm91cHNfcmVnaXN0ZXIoKQ0KPiA+DQo+ ID4gUmVtb3ZlIHNlcXVlbmNlIGlzLA0KPiA+ICAgIHBhcmVudC0+b3BzLT5yZW1vdmUoKQ0KPiA+ ICAgIGdyb3Vwc191bnJlZ2lzdGVyKCkNCj4gPiBIb3dldmVyLCByZW1vdmUgc2VxdWVuY2Ugc2hv dWxkIGJlIGV4YWN0IG1pcnJvciBvZiBjcmVhdGlvbiBzZXF1ZW5jZS4NCj4gPiBPbmNlIHRoaXMg aXMgYWNoaWV2ZWQsIGFsbCB1c2VycyBvZiB0aGUgbWRldiB3aWxsIGJlIHRlcm1pbmF0ZWQgZmly c3QNCj4gPiBiZWZvcmUgcmVtb3ZpbmcgdW5kZXJseWluZyB2ZW5kb3IgZGV2aWNlLg0KPiA+IChG b2xsb3cgc3RhbmRhcmQgbGludXggZHJpdmVyIG1vZGVsKS4NCj4gPiBBdCB0aGF0IHBvaW50IHZl bmRvcidzIHJlbW92ZSgpIG9wcyBzaG91bGRuJ3QgZmFpbGVkIGJlY2F1c2UgZGV2aWNlIGlzDQo+ ID4gdGFrZW4gb2ZmIHRoZSBidXMgdGhhdCBzaG91bGQgdGVybWluYXRlIHRoZSB1c2Vycy4NCj4g QWdyZWVlIGhlcmUgdG9vLg0KPiANCj4gDQo+IA0KPiA+DQo+ID4gMy4gQWRkaXRpb25hbGx5IGFu eSBuZXcgbWRldiBkcml2ZXIgdGhhdCB3YW50cyB0byB3b3JrIG9uIG1kZXYgZGV2aWNlDQo+ID4g ZHVyaW5nIHByb2JlKCkgcm91dGluZSByZWdpc3RlcmVkIHVzaW5nIG1kZXZfcmVnaXN0ZXJfZHJp dmVyKCkgbmVlZHMNCj4gPiB0byBnZXQgc3RhYmxlIG1kZXYgc3RydWN0dXJlLg0KPiA+DQo+ID4g NC4gSW4gZm9sbG93aW5nIHNlcXVlbmNlLCBjaGlsZCBkZXZpY2VzIGNyZWF0ZWQgd2hpbGUgcmVt b3ZpbmcgbWRldg0KPiA+IHBhcmVudCBkZXZpY2UgY2FuIGJlIGxlZnQgb3V0LCBvciBpdCBtYXkg bGVhZCB0byByYWNlIG9mIHJlbW92aW5nIGhhbGYNCj4gPiBpbml0aWFsaXplZCBjaGlsZCBtZGV2 IGRldmljZXMuDQo+ID4NCj4gPiBpc3N1ZS0xOg0KPiA+IC0tLS0tLS0tDQo+ID4gICAgICAgIGNw dS0wICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0xDQo+ID4gICAgICAgIC0tLS0tICAgICAg ICAgICAgICAgICAgICAgICAgIC0tLS0tDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1kZXZfdW5yZWdpc3Rlcl9kZXZpY2UoKQ0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoKQ0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZGV2X2RldmljZV9yZW1vdmVfY2IoKQ0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWRldl9kZXZpY2Vf cmVtb3ZlKCkNCj4gPiBjcmVhdGVfc3RvcmUoKQ0KPiA+ICAgbWRldl9kZXZpY2VfY3JlYXRlKCkg ICAgICAgICAgICAgICAgICAgWy4uLl0NCj4gPiAgICAgICAgZGV2aWNlX3JlZ2lzdGVyKCkNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X3JlbW92ZV9zeXNmc19m aWxlcygpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJVRzogZGV2 aWNlIGFkZGVkIGJ5IGNwdS0wDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIHdob3NlIHBhcmVudCBpcyBnZXR0aW5nIHJlbW92ZWQuDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gaXNzdWUtMjoNCj4gPiAtLS0tLS0tLQ0K PiA+ICAgICAgICBjcHUtMCAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtMQ0KPiA+ICAgICAg ICAtLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLQ0KPiA+IGNyZWF0ZV9zdG9yZSgp DQo+ID4gICBtZGV2X2RldmljZV9jcmVhdGUoKSAgICAgICAgICAgICAgICAgICBbLi4uXQ0KPiA+ ICAgICAgICBkZXZpY2VfcmVnaXN0ZXIoKQ0KPiA+DQo+ID4gICAgICAgIFsuLi5dICAgICAgICAg ICAgICAgICAgICAgIG1kZXZfdW5yZWdpc3Rlcl9kZXZpY2UoKQ0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoKQ0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZGV2X2RldmljZV9yZW1vdmVfY2Io KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWRldl9k ZXZpY2VfcmVtb3ZlKCkNCj4gPg0KPiA+ICAgICAgICBtZGV2X2NyZWF0ZV9zeXNmc19maWxlcygp DQo+ID4gICAgICAgIC8qIEJVRzogY3JlYXRlIGlzIGFkZGluZw0KPiA+ICAgICAgICAgKiBzeXNm cyBmaWxlcyBmb3IgYSBkZXZpY2UNCj4gPiAgICAgICAgICogd2hpY2ggaXMgdW5kZXJnb2luZyBy ZW1vdmFsLg0KPiA+ICAgICAgICAgKi8NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXJlbnRfcmVtb3ZlX3N5c2ZzX2ZpbGVzKCkNCj4gTG9va3MgbGlrZSBhbiBpc3N1ZSB0 byBtZSB0b28uDQo+IA0KPiA+DQo+ID4gNS4gQmVsb3cgY3Jhc2ggaXMgb2JzZXJ2ZWQgd2hlbiB1 c2VyIGluaXRpYXRlZCByZW1vdmUgaXMgaW4gcHJvZ3Jlc3MNCj4gPiBhbmQgbWRldl91bnJlZ2lz dGVyX2RyaXZlcigpIGNvbXBsZXRlcyBwYXJlbnQgdW5yZWdpc3RyYXRpb24uDQo+ID4NCj4gPiAg ICAgICAgY3B1LTAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LTENCj4gPiAgICAgICAgLS0t LS0gICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0NCj4gPiByZW1vdmVfc3RvcmUoKQ0KPiA+ ICAgIG1kZXZfZGV2aWNlX3JlbW92ZSgpDQo+ID4gICAgYWN0aXZlID0gZmFsc2U7DQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kZXZfdW5yZWdpc3Rlcl9kZXZpY2UoKQ0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSB0eXBlDQo+ID4g ICAgWy4uLl0NCj4gPiAgICBtZGV2X3JlbW92ZV9vcHMoKSBjcmFzaGVzLg0KPiA+DQo+ID4gVGhp cyBpcyBzaW1pbGFyIHJhY2UgbGlrZSBjcmVhdGUoKSByYWNpbmcgd2l0aCBtZGV2X3VucmVnaXN0 ZXJfZGV2aWNlKCkuDQo+ID4NCj4gPiBtdHR5IG10dHk6IE1ERVY6IFJlZ2lzdGVyZWQNCj4gPiBp b21tdTogQWRkaW5nIGRldmljZSA4M2I4ZjRmMi01MDlmLTM4MmYtM2MxZS1lNmJmZTBmYTEwMDEg dG8gZ3JvdXAgNTcNCj4gPiB2ZmlvX21kZXYgODNiOGY0ZjItNTA5Zi0zODJmLTNjMWUtZTZiZmUw ZmExMDAxOiBNREVWOiBncm91cF9pZCA9IDU3DQo+ID4gbWRldl9kZXZpY2VfcmVtb3ZlIHNsZWVw IHN0YXJ0ZWQgbXR0eSBtdHR5OiBNREVWOiBVbnJlZ2lzdGVyaW5nDQo+ID4gbXR0eV9kZXY6IFVu bG9hZGVkIQ0KPiA+IEJVRzogdW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3Qg YXQgZmZmZmZmZmZjMDI3ZDY2OCBQR0QNCj4gPiBhZjk4MTgwNjcgUDREIGFmOTgxODA2NyBQVUQg YWY5ODFhMDY3IFBNRCA4NTgzYzMwNjcgUFRFIDANCj4gPiBPb3BzOiAwMDAwIFsjMV0gU01QIFBU SQ0KPiA+IENQVTogMTUgUElEOiAzNTE3IENvbW06IGJhc2ggS2R1bXA6IGxvYWRlZCBOb3QgdGFp bnRlZA0KPiA+IDUuMC4wLXJjNy12ZGV2YnVzKyAjMiBIYXJkd2FyZSBuYW1lOiBTdXBlcm1pY3Jv DQo+ID4gU1lTLTYwMjhVLVRSNCsvWDEwRFJVLWkrLCBCSU9TIDIuMGIgMDgvMDkvMjAxNg0KPiA+ IFJJUDogMDAxMDptZGV2X2RldmljZV9yZW1vdmVfb3BzKzB4MWEvMHg1MCBbbWRldl0gQ2FsbCBU cmFjZToNCj4gPiAgbWRldl9kZXZpY2VfcmVtb3ZlKzB4ZWYvMHgxMzAgW21kZXZdDQo+ID4gIHJl bW92ZV9zdG9yZSsweDc3LzB4YTAgW21kZXZdDQo+ID4gIGtlcm5mc19mb3Bfd3JpdGUrMHgxMTMv MHgxYTANCj4gPiAgX192ZnNfd3JpdGUrMHgzMy8weDFiMA0KPiA+ICA/IHJjdV9yZWFkX2xvY2tf c2NoZWRfaGVsZCsweDY0LzB4NzANCj4gPiAgPyByY3Vfc3luY19sb2NrZGVwX2Fzc2VydCsweDJh LzB4NTANCj4gPiAgPyBfX3NiX3N0YXJ0X3dyaXRlKzB4MTIxLzB4MWIwDQo+ID4gID8gdmZzX3dy aXRlKzB4MTdjLzB4MWIwDQo+ID4gIHZmc193cml0ZSsweGFkLzB4MWIwDQo+ID4gID8gdHJhY2Vf aGFyZGlycXNfb25fdGh1bmsrMHgxYS8weDFjDQo+ID4gIGtzeXNfd3JpdGUrMHg1NS8weGMwDQo+ ID4gIGRvX3N5c2NhbGxfNjQrMHg1YS8weDIxMA0KPiA+DQo+ID4gVGhlcmVmb3JlLCBtZGV2IGNv cmUgaXMgaW1wcm92ZWQgaW4gZm9sbG93aW5nIHdheXMgdG8gb3ZlcmNvbWUgYWJvdmUNCj4gPiBp c3N1ZXMuDQo+ID4NCj4gPiAxLiBCZWZvcmUgcGxhY2luZyBtZGV2IGRldmljZXMgb24gdGhlIGJ1 cywgcGVyZm9ybSB2ZW5kb3IgZHJpdmVycw0KPiA+IGNyZWF0aW9uIHdoaWNoIHN1cHBvcnRzIHRo ZSBtZGV2IGNyZWF0aW9uLg0KPiA+IFRoaXMgZW5zdXJlcyB0aGF0IG1kZXYgc3BlY2lmaWMgYWxs IG5lY2Vzc2FyeSBmaWVsZHMgYXJlIGluaXRpYWxpemVkDQo+ID4gYmVmb3JlIGEgZ2l2ZW4gbWRl diBjYW4gYmUgYWNjZXNzZWQgYnkgYnVzIGRyaXZlci4NCj4gPg0KPiA+IDIuIER1cmluZyByZW1v dmUgZmxvdywgZmlyc3QgcmVtb3ZlIHRoZSBkZXZpY2UgZnJvbSB0aGUgYnVzLiBUaGlzDQo+ID4g ZW5zdXJlcyB0aGF0IGFueSBidXMgc3BlY2lmaWMgZGV2aWNlcyBhbmQgZGF0YSBpcyBjbGVhcmVk Lg0KPiA+IE9uY2UgZGV2aWNlIGlzIHRha2VuIG9mIHRoZSBtZGV2IGJ1cywgcGVyZm9ybSByZW1v dmUoKSBvZiBtZGV2IGZyb20NCj4gPiB0aGUgdmVuZG9yIGRyaXZlci4NCj4gPg0KPiA+DQo+ID4g My4gTGludXggY29yZSBkZXZpY2UgbW9kZWwgcHJvdmlkZXMgd2F5IHRvIHJlZ2lzdGVyIGFuZCBh dXRvDQo+ID4gdW5yZWdpc3RlciB0aGUgZGV2aWNlIHN5c2ZzIGF0dHJpYnV0ZSBncm91cHMgYXQg ZGV2LT5ncm91cHMuDQo+ID4gdG8gYXZvaWQgZXhwbGljaXQgZ3JvdXBzIGNyZWF0aW9uIGFuZCBy ZW1vdmFsLg0KPiA+IHRvIGF2b2lkIGV4cGxpY2l0IGdyb3VwcyBjcmVhdGlvbiBhbmQgcmVtb3Zh bC4NCj4gPg0KPiA+IDQuIFdhaXQgZm9yIGFueSBvbmdvaW5nIG1kZXYgY3JlYXRlKCkgYW5kIHJl bW92ZSgpIHRvIGZpbmlzaCBiZWZvcmUNCj4gPiB1bnJlZ2lzdGVyaW5nIHBhcmVudCBkZXZpY2Ug dXNpbmcgc3JjdS4gVGhpcyBjb250aW51ZXMgdG8gYWxsb3cNCj4gPiBtdWx0aXBsZSBjcmVhdGUg YW5kIHJlbW92ZSB0byBwcm9ncmVzcyBpbiBwYXJhbGxlbC4gQXQgdGhlIHNhbWUgdGltZQ0KPiA+ IGd1YXJkIHBhcmVudCByZW1vdmFsIHdoaWxlIHBhcmVudCBpcyBiZWluZyBhY2Nlc3MgYnkgY3Jl YXRlKCkgYW5kIHJlbW92ZQ0KPiBjYWxsYmFja3MuDQo+IEFsbCB0aGVzZSBmaXhlcyBzZWVtIHJl YXNvbmFibGUgYW5kIGNvcnJlY3QgdG8gbWUNCj4gDQo+IA0KPiA+DQo+ID4gRml4ZXM6IDdiOTY5 NTNiYzY0MCAoInZmaW86IE1lZGlhdGVkIGRldmljZSBDb3JlIGRyaXZlciIpDQo+ID4gU2lnbmVk LW9mZi1ieTogUGFyYXYgUGFuZGl0IDxwYXJhdkBtZWxsYW5veC5jb20+DQo+ID4gLS0tDQo+ID4g IGRyaXZlcnMvdmZpby9tZGV2L21kZXZfY29yZS5jICAgIHwgMTQyICsrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tDQo+IC0tLQ0KPiA+IC0NCj4gPiAgZHJpdmVycy92ZmlvL21kZXYv bWRldl9wcml2YXRlLmggfCAgIDcgKy0NCj4gPiAgZHJpdmVycy92ZmlvL21kZXYvbWRldl9zeXNm cy5jICAgfCAgIDYgKy0NCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCA3 MSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vbWRldi9t ZGV2X2NvcmUuYw0KPiA+IGIvZHJpdmVycy92ZmlvL21kZXYvbWRldl9jb3JlLmMgaW5kZXggOTQ0 YTA1OC4uOGZlMGVkMSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X2Nv cmUuYw0KPiA+ICsrKyBiL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfY29yZS5jDQo+ID4gQEAgLTg0 LDYgKzg0LDcgQEAgc3RhdGljIHZvaWQgbWRldl9yZWxlYXNlX3BhcmVudChzdHJ1Y3Qga3JlZiAq a3JlZikNCj4gPiAgCQkJCQkJICByZWYpOw0KPiA+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGFy ZW50LT5kZXY7DQo+ID4NCj4gPiArCWNsZWFudXBfc3JjdV9zdHJ1Y3QoJnBhcmVudC0+dW5yZWdf c3JjdSk7DQo+ID4gIAlrZnJlZShwYXJlbnQpOw0KPiA+ICAJcHV0X2RldmljZShkZXYpOw0KPiA+ ICB9DQo+ID4gQEAgLTEwMyw1NiArMTA0LDMwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtZGV2X3B1 dF9wYXJlbnQoc3RydWN0DQo+ID4gbWRldl9wYXJlbnQNCj4gPiAqcGFyZW50KQ0KPiA+ICAJCWty ZWZfcHV0KCZwYXJlbnQtPnJlZiwgbWRldl9yZWxlYXNlX3BhcmVudCk7ICB9DQo+ID4NCj4gPiAt c3RhdGljIGludCBtZGV2X2RldmljZV9jcmVhdGVfb3BzKHN0cnVjdCBrb2JqZWN0ICprb2JqLA0K PiA+IC0JCQkJICBzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpDQo+ID4gK3N0YXRpYyBpbnQgbWRl dl9kZXZpY2VfbXVzdF9yZW1vdmUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KQ0KPiANCj4gVGlu eSBuaXRwaWM6IG1heWJlIGEgYmV0dGVyIG5hbWU/IG9yIGEgY29tbWVudCBmb3IgdGhpcyBmdW5j dGlvbiB0aGF0IHN0YXRlDQo+IHRoYXQgaXQgdHJpZXMgcmVtb3ZlcyB0aGUgZGV2aWNlIGV2ZW4g aWYgaW4gdXNlDQo+IA0KPiA+ICB7DQo+ID4gLQlzdHJ1Y3QgbWRldl9wYXJlbnQgKnBhcmVudCA9 IG1kZXYtPnBhcmVudDsNCj4gPiArCXN0cnVjdCBtZGV2X3BhcmVudCAqcGFyZW50Ow0KPiA+ICsJ c3RydWN0IG1kZXZfdHlwZSAqdHlwZTsNCj4gPiAgCWludCByZXQ7DQo+ID4NCj4gPiAtCXJldCA9 IHBhcmVudC0+b3BzLT5jcmVhdGUoa29iaiwgbWRldik7DQo+ID4gLQlpZiAocmV0KQ0KPiA+IC0J CXJldHVybiByZXQ7DQo+ID4gKwl0eXBlID0gdG9fbWRldl90eXBlKG1kZXYtPnR5cGVfa29iaik7 DQo+ID4NCj4gPiAtCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cHMoJm1kZXYtPmRldi5rb2JqLA0K PiA+IC0JCQkJICBwYXJlbnQtPm9wcy0+bWRldl9hdHRyX2dyb3Vwcyk7DQo+ID4gKwltZGV2X3Jl bW92ZV9zeXNmc19maWxlcygmbWRldi0+ZGV2LCB0eXBlKTsNCj4gPiArCWRldmljZV9kZWwoJm1k ZXYtPmRldik7DQo+ID4gKwlwYXJlbnQgPSBtZGV2LT5wYXJlbnQ7DQo+ID4gKwlyZXQgPSBwYXJl bnQtPm9wcy0+cmVtb3ZlKG1kZXYpOw0KPiA+ICAJaWYgKHJldCkNCj4gPiAtCQlwYXJlbnQtPm9w cy0+cmVtb3ZlKG1kZXYpOw0KPiA+ICsJCWRldl9lcnIoJm1kZXYtPmRldiwgIlJlbW92ZSBmYWls ZWQ6IGVycj0lZFxuIiwgcmV0KTsNCj4gPg0KPiA+ICsJLyogQmFsYW5jZXMgd2l0aCBkZXZpY2Vf aW5pdGlhbGl6ZSgpICovDQo+ID4gKwlwdXRfZGV2aWNlKCZtZGV2LT5kZXYpOw0KPiA+ICAJcmV0 dXJuIHJldDsNCj4gPiAgfQ0KPiA+DQo+ID4gLS8qDQo+ID4gLSAqIG1kZXZfZGV2aWNlX3JlbW92 ZV9vcHMgZ2V0cyBjYWxsZWQgZnJvbSBzeXNmcydzICdyZW1vdmUnIGFuZCB3aGVuDQo+ID4gcGFy ZW50DQo+ID4gLSAqIGRldmljZSBpcyBiZWluZyB1bnJlZ2lzdGVyZWQgZnJvbSBtZGV2IGRldmlj ZSBmcmFtZXdvcmsuDQo+ID4gLSAqIC0gJ2ZvcmNlX3JlbW92ZScgaXMgc2V0IHRvICdmYWxzZScg d2hlbiBjYWxsZWQgZnJvbSBzeXNmcydzICdyZW1vdmUnIHdoaWNoDQo+ID4gLSAqICAgaW5kaWNh dGVzIHRoYXQgaWYgdGhlIG1kZXYgZGV2aWNlIGlzIGFjdGl2ZSwgdXNlZCBieSBWTU0gb3IgdXNl cnNwYWNlDQo+ID4gLSAqICAgYXBwbGljYXRpb24sIHZlbmRvciBkcml2ZXIgY291bGQgcmV0dXJu IGVycm9yIHRoZW4gZG9uJ3QgcmVtb3ZlIHRoZQ0KPiA+IGRldmljZS4NCj4gPiAtICogLSAnZm9y Y2VfcmVtb3ZlJyBpcyBzZXQgdG8gJ3RydWUnIHdoZW4gY2FsbGVkIGZyb20NCj4gPiBtZGV2X3Vu cmVnaXN0ZXJfZGV2aWNlKCkNCj4gPiAtICogICB3aGljaCBpbmRpY2F0ZSB0aGF0IHBhcmVudCBk ZXZpY2UgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIG1kZXYgZGV2aWNlDQo+ID4gLSAqICAgZnJhbWV3 b3JrIHNvIHJlbW92ZSBtZGV2IGRldmljZSBmb3JjZWZ1bGx5Lg0KPiA+IC0gKi8NCj4gPiAtc3Rh dGljIGludCBtZGV2X2RldmljZV9yZW1vdmVfb3BzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwg Ym9vbA0KPiA+IGZvcmNlX3JlbW92ZSkNCj4gPiAtew0KPiA+IC0Jc3RydWN0IG1kZXZfcGFyZW50 ICpwYXJlbnQgPSBtZGV2LT5wYXJlbnQ7DQo+ID4gLQlpbnQgcmV0Ow0KPiA+IC0NCj4gPiAtCS8q DQo+ID4gLQkgKiBWZW5kb3IgZHJpdmVyIGNhbiByZXR1cm4gZXJyb3IgaWYgVk1NIG9yIHVzZXJz cGFjZSBhcHBsaWNhdGlvbiBpcw0KPiA+IC0JICogdXNpbmcgdGhpcyBtZGV2IGRldmljZS4NCj4g PiAtCSAqLw0KPiA+IC0JcmV0ID0gcGFyZW50LT5vcHMtPnJlbW92ZShtZGV2KTsNCj4gPiAtCWlm IChyZXQgJiYgIWZvcmNlX3JlbW92ZSkNCj4gPiAtCQlyZXR1cm4gcmV0Ow0KPiA+IC0NCj4gPiAt CXN5c2ZzX3JlbW92ZV9ncm91cHMoJm1kZXYtPmRldi5rb2JqLCBwYXJlbnQtPm9wcy0NCj4gPm1k ZXZfYXR0cl9ncm91cHMpOw0KPiA+IC0JcmV0dXJuIDA7DQo+ID4gLX0NCj4gPiAtDQo+ID4gIHN0 YXRpYyBpbnQgbWRldl9kZXZpY2VfcmVtb3ZlX2NiKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSkgIHsNCj4gPiAgCWlmIChkZXZfaXNfbWRldihkZXYpKQ0KPiA+IC0JCW1kZXZfZGV2aWNl X3JlbW92ZShkZXYsIHRydWUpOw0KPiA+IC0NCj4gPiArCQltZGV2X2RldmljZV9tdXN0X3JlbW92 ZSh0b19tZGV2X2RldmljZShkZXYpKTsNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4g PiBAQCAtMTk0LDYgKzE2OSw3IEBAIGludCBtZGV2X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0DQo+ID4gc3RydWN0IG1kZXZfcGFyZW50X29wcyAqb3BzKQ0KPiA+ICAJ fQ0KPiA+DQo+ID4gIAlrcmVmX2luaXQoJnBhcmVudC0+cmVmKTsNCj4gPiArCWluaXRfc3JjdV9z dHJ1Y3QoJnBhcmVudC0+dW5yZWdfc3JjdSk7DQo+ID4NCj4gPiAgCXBhcmVudC0+ZGV2ID0gZGV2 Ow0KPiA+ICAJcGFyZW50LT5vcHMgPSBvcHM7DQo+ID4gQEAgLTIxNCw2ICsxOTAsNyBAQCBpbnQg bWRldl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdA0KPiA+IHN0cnVj dCBtZGV2X3BhcmVudF9vcHMgKm9wcykNCj4gPiAgCWlmIChyZXQpDQo+ID4gIAkJZGV2X3dhcm4o ZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBjb21wYXRpYmlsaXR5IGNsYXNzIGxpbmtcbiIpOw0KPiA+ DQo+ID4gKwlyY3VfYXNzaWduX3BvaW50ZXIocGFyZW50LT5zZWxmLCBwYXJlbnQpOw0KPiA+ICAJ bGlzdF9hZGQoJnBhcmVudC0+bmV4dCwgJnBhcmVudF9saXN0KTsNCj4gPiAgCW11dGV4X3VubG9j aygmcGFyZW50X2xpc3RfbG9jayk7DQo+ID4NCj4gPiBAQCAtMjQ0LDIxICsyMjEsMzYgQEAgdm9p ZCBtZGV2X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPg0KPiA+ICAJ bXV0ZXhfbG9jaygmcGFyZW50X2xpc3RfbG9jayk7DQo+ID4gIAlwYXJlbnQgPSBfX2ZpbmRfcGFy ZW50X2RldmljZShkZXYpOw0KPiA+IC0NCj4gPiAgCWlmICghcGFyZW50KSB7DQo+ID4gIAkJbXV0 ZXhfdW5sb2NrKCZwYXJlbnRfbGlzdF9sb2NrKTsNCj4gPiAgCQlyZXR1cm47DQo+ID4gIAl9DQo+ ID4gKwlsaXN0X2RlbCgmcGFyZW50LT5uZXh0KTsNCj4gPiArCW11dGV4X3VubG9jaygmcGFyZW50 X2xpc3RfbG9jayk7DQo+ID4gKw0KPiA+ICAJZGV2X2luZm8oZGV2LCAiTURFVjogVW5yZWdpc3Rl cmluZ1xuIik7DQo+ID4NCj4gPiAtCWxpc3RfZGVsKCZwYXJlbnQtPm5leHQpOw0KPiA+ICsJLyog UHVibGlzaCB0aGF0IHRoaXMgbWRldiBwYXJlbnQgaXMgdW5yZWdpc3RlcmluZy4gU28gYW55IG5l dw0KPiA+ICsJICogY3JlYXRlL3JlbW92ZSBjYW5ub3Qgc3RhcnQgb24gdGhpcyBwYXJlbnQgYW55 bW9yZSBieSB1c2VyLg0KPiA+ICsJICovDQo+ID4gKwlyY3VfYXNzaWduX3BvaW50ZXIocGFyZW50 LT5zZWxmLCBOVUxMKTsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogV2FpdCBmb3IgYW55IGFj dGl2ZSBjcmVhdGUoKSBvciByZW1vdmUoKSBtZGV2IG9wcyBvbiB0aGUgcGFyZW50DQo+ID4gKwkg KiB0byBjb21wbGV0ZS4NCj4gPiArCSAqLw0KPiA+ICsJc3luY2hyb25pemVfc3JjdSgmcGFyZW50 LT51bnJlZ19zcmN1KTsNCj4gPiArDQo+ID4gKwkvKiBBdCB0aGlzIHBvaW50IGl0IGlzIGNvbmZp cm1lZCB0aGF0IGFueSBwZW5kaW5nIHVzZXIgaW5pdGlhdGVkDQo+ID4gKwkgKiBjcmVhdGUgb3Ig cmVtb3ZlIGNhbGxiYWNrcyBhY2Nlc3NpbmcgdGhlIHBhcmVudCBhcmUgY29tcGxldGVkLg0KPiA+ ICsJICogSXQgaXMgc2FmZSB0byByZW1vdmUgdGhlIHBhcmVudCBub3cuDQo+ID4gKwkgKi8NCj4g PiAgCWNsYXNzX2NvbXBhdF9yZW1vdmVfbGluayhtZGV2X2J1c19jb21wYXRfY2xhc3MsIGRldiwg TlVMTCk7DQo+ID4NCj4gPiAgCWRldmljZV9mb3JfZWFjaF9jaGlsZChkZXYsIE5VTEwsIG1kZXZf ZGV2aWNlX3JlbW92ZV9jYik7DQo+ID4NCj4gPiAgCXBhcmVudF9yZW1vdmVfc3lzZnNfZmlsZXMo cGFyZW50KTsNCj4gPg0KPiA+IC0JbXV0ZXhfdW5sb2NrKCZwYXJlbnRfbGlzdF9sb2NrKTsNCj4g PiAgCW1kZXZfcHV0X3BhcmVudChwYXJlbnQpOw0KPiA+ICB9DQo+ID4gIEVYUE9SVF9TWU1CT0wo bWRldl91bnJlZ2lzdGVyX2RldmljZSk7DQo+ID4gQEAgLTI3OCwxNCArMjcwLDI0IEBAIHN0YXRp YyB2b2lkIG1kZXZfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZQ0KPiA+ICpkZXYpICBpbnQg bWRldl9kZXZpY2VfY3JlYXRlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgZGV2aWNlDQo+ ID4gKmRldiwgdXVpZF9sZQ0KPiA+IHV1aWQpDQo+ID4gIHsNCj4gPiAgCWludCByZXQ7DQo+ID4g KwlzdHJ1Y3QgbWRldl9wYXJlbnQgKnZhbGlkX3BhcmVudDsNCj4gPiAgCXN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldiwgKnRtcDsNCj4gPiAgCXN0cnVjdCBtZGV2X3BhcmVudCAqcGFyZW50Ow0KPiA+ ICAJc3RydWN0IG1kZXZfdHlwZSAqdHlwZSA9IHRvX21kZXZfdHlwZShrb2JqKTsNCj4gPiArCWlu dCBzcmN1X2lkeDsNCj4gPg0KPiA+ICAJcGFyZW50ID0gbWRldl9nZXRfcGFyZW50KHR5cGUtPnBh cmVudCk7DQo+ID4gIAlpZiAoIXBhcmVudCkNCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPg0K PiA+ICsJc3JjdV9pZHggPSBzcmN1X3JlYWRfbG9jaygmcGFyZW50LT51bnJlZ19zcmN1KTsNCj4g PiArCXZhbGlkX3BhcmVudCA9IHNyY3VfZGVyZWZlcmVuY2UocGFyZW50LT5zZWxmLCAmcGFyZW50 LT51bnJlZ19zcmN1KTsNCj4gPiArCWlmICghdmFsaWRfcGFyZW50KSB7DQo+ID4gKwkJLyogcGFy ZW50IGlzIHVuZGVyZ29pbmcgdW5yZWdpc3RyYXRpb24gKi8NCj4gPiArCQlyZXQgPSAtRU5PREVW Ow0KPiA+ICsJCWdvdG8gbWRldl9mYWlsOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAgCW11dGV4X2xv Y2soJm1kZXZfbGlzdF9sb2NrKTsNCj4gPg0KPiA+ICAJLyogQ2hlY2sgZm9yIGR1cGxpY2F0ZSAq Lw0KPiA+IEBAIC0zMTAsNjggKzMxMiw3NiBAQCBpbnQgbWRldl9kZXZpY2VfY3JlYXRlKHN0cnVj dCBrb2JqZWN0ICprb2JqLA0KPiA+IHN0cnVjdCBkZXZpY2UgKmRldiwgdXVpZF9sZSB1dWlkKQ0K PiA+DQo+ID4gIAltZGV2LT5wYXJlbnQgPSBwYXJlbnQ7DQo+ID4NCj4gPiArCWRldmljZV9pbml0 aWFsaXplKCZtZGV2LT5kZXYpOw0KPiA+ICAJbWRldi0+ZGV2LnBhcmVudCAgPSBkZXY7DQo+ID4g IAltZGV2LT5kZXYuYnVzICAgICA9ICZtZGV2X2J1c190eXBlOw0KPiA+ICAJbWRldi0+ZGV2LnJl bGVhc2UgPSBtZGV2X2RldmljZV9yZWxlYXNlOw0KPiA+ICsJbWRldi0+ZGV2Lmdyb3VwcyA9IHR5 cGUtPnBhcmVudC0+b3BzLT5tZGV2X2F0dHJfZ3JvdXBzOw0KPiA+ICAJZGV2X3NldF9uYW1lKCZt ZGV2LT5kZXYsICIlcFVsIiwgdXVpZC5iKTsNCj4gPg0KPiA+IC0JcmV0ID0gZGV2aWNlX3JlZ2lz dGVyKCZtZGV2LT5kZXYpOw0KPiA+ICsJcmV0ID0gdHlwZS0+cGFyZW50LT5vcHMtPmNyZWF0ZShr b2JqLCBtZGV2KTsNCj4gPiAgCWlmIChyZXQpDQo+ID4gLQkJZ290byBtZGV2X2ZhaWw7DQo+ID4g KwkJZ290byBjcmVhdGVfZmFpbDsNCj4gPg0KPiA+IC0JcmV0ID0gbWRldl9kZXZpY2VfY3JlYXRl X29wcyhrb2JqLCBtZGV2KTsNCj4gPiArCXJldCA9IGRldmljZV9hZGQoJm1kZXYtPmRldik7DQo+ ID4gIAlpZiAocmV0KQ0KPiA+IC0JCWdvdG8gY3JlYXRlX2ZhaWw7DQo+ID4gKwkJZ290byBkZXZf ZmFpbDsNCj4gPg0KPiA+ICAJcmV0ID0gbWRldl9jcmVhdGVfc3lzZnNfZmlsZXMoJm1kZXYtPmRl diwgdHlwZSk7DQo+ID4gLQlpZiAocmV0KSB7DQo+ID4gLQkJbWRldl9kZXZpY2VfcmVtb3ZlX29w cyhtZGV2LCB0cnVlKTsNCj4gPiAtCQlnb3RvIGNyZWF0ZV9mYWlsOw0KPiA+IC0JfQ0KPiA+ICsJ aWYgKHJldCkNCj4gPiArCQlnb3RvIHN5c2ZzX2ZhaWw7DQo+ID4NCj4gPiAgCW1kZXYtPnR5cGVf a29iaiA9IGtvYmo7DQo+ID4gIAltZGV2LT5hY3RpdmUgPSB0cnVlOw0KPiA+ICAJZGV2X2RiZygm bWRldi0+ZGV2LCAiTURFVjogY3JlYXRlZFxuIik7DQo+ID4gKwlzcmN1X3JlYWRfdW5sb2NrKCZw YXJlbnQtPnVucmVnX3NyY3UsIHNyY3VfaWR4KTsNCj4gPg0KPiA+ICAJcmV0dXJuIDA7DQo+ID4N Cj4gPiArc3lzZnNfZmFpbDoNCj4gPiArCWRldmljZV9kZWwoJm1kZXYtPmRldik7DQo+ID4gK2Rl dl9mYWlsOg0KPiA+ICsJdHlwZS0+cGFyZW50LT5vcHMtPnJlbW92ZShtZGV2KTsNCj4gPiAgY3Jl YXRlX2ZhaWw6DQo+ID4gLQlkZXZpY2VfdW5yZWdpc3RlcigmbWRldi0+ZGV2KTsNCj4gPiArCXB1 dF9kZXZpY2UoJm1kZXYtPmRldik7DQo+ID4gIG1kZXZfZmFpbDoNCj4gPiArCXNyY3VfcmVhZF91 bmxvY2soJnBhcmVudC0+dW5yZWdfc3JjdSwgc3JjdV9pZHgpOw0KPiA+ICAJbWRldl9wdXRfcGFy ZW50KHBhcmVudCk7DQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiAtaW50IG1k ZXZfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgZm9yY2VfcmVtb3ZlKQ0K PiA+ICtpbnQgbWRldl9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiAgew0K PiA+ICsJc3RydWN0IG1kZXZfcGFyZW50ICp2YWxpZF9wYXJlbnQ7DQo+ID4gIAlzdHJ1Y3QgbWRl dl9kZXZpY2UgKm1kZXY7DQo+ID4gIAlzdHJ1Y3QgbWRldl9wYXJlbnQgKnBhcmVudDsNCj4gPiAt CXN0cnVjdCBtZGV2X3R5cGUgKnR5cGU7DQo+ID4gKwlpbnQgc3JjdV9pZHg7DQo+ID4gIAlpbnQg cmV0Ow0KPiA+DQo+ID4gIAltZGV2ID0gdG9fbWRldl9kZXZpY2UoZGV2KTsNCj4gPiArCXBhcmVu dCA9IG1kZXYtPnBhcmVudDsNCj4gPiArCXNyY3VfaWR4ID0gc3JjdV9yZWFkX2xvY2soJnBhcmVu dC0+dW5yZWdfc3JjdSk7DQo+ID4gKwl2YWxpZF9wYXJlbnQgPSBzcmN1X2RlcmVmZXJlbmNlKHBh cmVudC0+c2VsZiwgJnBhcmVudC0+dW5yZWdfc3JjdSk7DQo+ID4gKwlpZiAoIXZhbGlkX3BhcmVu dCkgew0KPiA+ICsJCXNyY3VfcmVhZF91bmxvY2soJnBhcmVudC0+dW5yZWdfc3JjdSwgc3JjdV9p ZHgpOw0KPiA+ICsJCS8qIHBhcmVudCBpcyB1bmRlcmdvaW5nIHVucmVnaXN0cmF0aW9uICovDQo+ ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbXV0ZXhfbG9jaygm bWRldl9saXN0X2xvY2spOw0KPiA+ICAJaWYgKCFtZGV2LT5hY3RpdmUpIHsNCj4gPiAgCQltdXRl eF91bmxvY2soJm1kZXZfbGlzdF9sb2NrKTsNCj4gPiAtCQlyZXR1cm4gLUVBR0FJTjsNCj4gPiAr CQlzcmN1X3JlYWRfdW5sb2NrKCZwYXJlbnQtPnVucmVnX3NyY3UsIHNyY3VfaWR4KTsNCj4gPiAr CQlyZXR1cm4gLUVOT0RFVjsNCj4gPiAgCX0NCj4gPiAtDQo+ID4gIAltZGV2LT5hY3RpdmUgPSBm YWxzZTsNCj4gPiAgCW11dGV4X3VubG9jaygmbWRldl9saXN0X2xvY2spOw0KPiA+DQo+ID4gLQl0 eXBlID0gdG9fbWRldl90eXBlKG1kZXYtPnR5cGVfa29iaik7DQo+ID4gLQlwYXJlbnQgPSBtZGV2 LT5wYXJlbnQ7DQo+ID4gLQ0KPiA+IC0JcmV0ID0gbWRldl9kZXZpY2VfcmVtb3ZlX29wcyhtZGV2 LCBmb3JjZV9yZW1vdmUpOw0KPiA+IC0JaWYgKHJldCkgew0KPiA+IC0JCW1kZXYtPmFjdGl2ZSA9 IHRydWU7DQo+ID4gLQkJcmV0dXJuIHJldDsNCj4gPiAtCX0NCj4gPiArCXJldCA9IG1kZXZfZGV2 aWNlX211c3RfcmVtb3ZlKG1kZXYpOw0KPiA+ICsJc3JjdV9yZWFkX3VubG9jaygmcGFyZW50LT51 bnJlZ19zcmN1LCBzcmN1X2lkeCk7DQo+ID4NCj4gPiAtCW1kZXZfcmVtb3ZlX3N5c2ZzX2ZpbGVz KGRldiwgdHlwZSk7DQo+ID4gLQlkZXZpY2VfdW5yZWdpc3RlcihkZXYpOw0KPiA+ICAJbWRldl9w dXRfcGFyZW50KHBhcmVudCk7DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIDA7DQo+ID4gKwlyZXR1cm4g cmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGludCBfX2luaXQgbWRldl9pbml0KHZvaWQp DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oDQo+ID4g Yi9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaA0KPiA+IGluZGV4IDg0YjJiNmMuLjNk MTdkYjkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy92ZmlvL21kZXYvbWRldl9wcml2YXRlLmgN Cj4gPiArKysgYi9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaA0KPiA+IEBAIC0yMyw2 ICsyMywxMSBAQCBzdHJ1Y3QgbWRldl9wYXJlbnQgew0KPiA+ICAJc3RydWN0IGxpc3RfaGVhZCBu ZXh0Ow0KPiA+ICAJc3RydWN0IGtzZXQgKm1kZXZfdHlwZXNfa3NldDsNCj4gPiAgCXN0cnVjdCBs aXN0X2hlYWQgdHlwZV9saXN0Ow0KPiA+ICsJLyogUHJvdGVjdHMgdW5yZWdpc3RyYXRpb24gdG8g d2FpdCB1bnRpbCBjcmVhdGUvcmVtb3ZlDQo+ID4gKwkgKiBhcmUgY29tcGxldGVkLg0KPiA+ICsJ ICovDQo+ID4gKwlzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgdW5yZWdfc3JjdTsNCj4gPiArCXN0cnVjdCBt ZGV2X3BhcmVudCBfX3JjdSAqc2VsZjsNCj4gPiAgfTsNCj4gPg0KPiA+ICBzdHJ1Y3QgbWRldl9k ZXZpY2Ugew0KPiA+IEBAIC01OCw2ICs2Myw2IEBAIHN0cnVjdCBtZGV2X3R5cGUgew0KPiA+ICB2 b2lkIG1kZXZfcmVtb3ZlX3N5c2ZzX2ZpbGVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1k ZXZfdHlwZQ0KPiA+ICp0eXBlKTsNCj4gPg0KPiA+ICBpbnQgIG1kZXZfZGV2aWNlX2NyZWF0ZShz dHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGRldmljZSAqZGV2LA0KPiA+IHV1aWRfbGUgdXVp ZCk7IC1pbnQgIG1kZXZfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wNCj4g PiBmb3JjZV9yZW1vdmUpOw0KPiA+ICtpbnQgIG1kZXZfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2 aWNlICpkZXYpOw0KPiA+DQo+ID4gICNlbmRpZiAvKiBNREVWX1BSSVZBVEVfSCAqLw0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3N5c2ZzLmMNCj4gPiBiL2RyaXZlcnMv dmZpby9tZGV2L21kZXZfc3lzZnMuYyBpbmRleCBjNzgyZmE5Li42OGE4MTkxIDEwMDY0NA0KPiA+ IC0tLSBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfc3lzZnMuYw0KPiA+ICsrKyBiL2RyaXZlcnMv dmZpby9tZGV2L21kZXZfc3lzZnMuYw0KPiA+IEBAIC0yMzYsMTEgKzIzNiw5IEBAIHN0YXRpYyBz c2l6ZV90IHJlbW92ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gIAlpZiAodmFsICYmIGRldmljZV9yZW1vdmVfZmlsZV9z ZWxmKGRldiwgYXR0cikpIHsNCj4gPiAgCQlpbnQgcmV0Ow0KPiA+DQo+ID4gLQkJcmV0ID0gbWRl dl9kZXZpY2VfcmVtb3ZlKGRldiwgZmFsc2UpOw0KPiA+IC0JCWlmIChyZXQpIHsNCj4gPiAtCQkJ ZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgYXR0cik7DQo+ID4gKwkJcmV0ID0gbWRldl9kZXZpY2Vf cmVtb3ZlKGRldik7DQo+ID4gKwkJaWYgKHJldCkNCj4gPiAgCQkJcmV0dXJuIHJldDsNCj4gPiAt CQl9DQo+ID4gIAl9DQo+ID4NCj4gPiAgCXJldHVybiBjb3VudDsNCj4gDQo+IFRoZSBwYXRjaCBs b29rcyBPSyB0byBtZSwgZXNwZWNpYWxseSBsb29raW5nIGF0IHRoZSBjb2RlIGFmdGVyIHRoZSBj aGFuZ2VzDQo+IHdlcmUgYXBsbGllZC4gSSBtaWdodCBoYXZlIG1pc3NlZCBzb21ldGhpbmcgdGhv dWdoIGR1ZSB0byBhbW91bnQgb2YNCj4gY2hhbmdlcyBkb25lLg0KPiANCj4gSSBsaWdodGx5IHRl c3RlZCB0aGUgd2hvbGUgcGF0Y2ggc2VyaWVzIHdpdGggbXkgbWRldiBkcml2ZXIsIGFuZCBpdCBz ZWVtcyB0bw0KPiBzdXJ2aXZlLCBidXQgbXkgdGVzdGluZyBkb2Vzbid0IHRlc3QgbXVjaCBvZiB0 aGUgZXJyb3IgcGF0aHMgc28gdGhlcmUgdGhhdC4NCj4gDQo+IEknbGwga2VlcCB0aGlzIGFwcGxp ZWQgc28gaWYgSSBub3RpY2UgYW55IGVycm9ycyBJJ2xsIGxldCB5b3Uga25vdy4NCj4gDQo+IElm IHlvdSBjb3VsZCBzcGxpdCB0aGlzIGludG8gZmV3IHBhdGNoZXMsIHRoaXMgd291bGQgYmUgZXZl biBiZXR0ZXIsIGJ1dA0KPiBhbnl3YXkgdGhhbmtzIGEgbG90IGZvciB0aGlzIHdvcmshDQo+IA0K PiBSZXZpZXdlZC1ieTogTWF4aW0gTGV2aXRza3kgPG1sZXZpdHNrQHJlZGhhdC5jb20+DQo+IA0K VGhhbmtzIGEgbG90IE1heGltIGZvciB0aGUgcmV2aWV3Lg0KVGhpcyBwYXJ0aWN1bGFyIHBhdGNo IGNhbm5vdCBiZSBjdXQgaW50byBtb3JlIHBhdGNoZXMgYmVjYXVzZSBpdCB0b3VjaGVzIHNlcmlh bGl6YXRpb24gYmV0d2VlbiBtdWx0aXBsZSBmdW5jdGlvbnMuDQpTbyBhbGwgb2YgdGhvc2UgaGF2 ZSB0byBiZSB0b3VjaGVkLg0KSSB0cmllZCB0byBjdXQgaW50byB0d28gd2hlcmUgcHJldmlvdXMg cGF0Y2ggZG9lcyB0aGUgbWRldiBjbGVhbnVwLCBidXQgSSBndWVzcyBmb3IgY29ycmVjdG5lc3Mg SSBnb3QgdG8gbWVyZ2UgaGVyZS4NCk9ubHkgdGhlIGNvbW1pdCBtZXNzYWdlIGlzIHByb2JhYmx5 IGJpZywgYnV0IEkgaGFkIHRvIGV4cGxhaW4gYWxsIDQtNSBjYXNlcyBmb3IgdGhpcyByZWZhY3Rv ci4NCg0KSSB3aWxsIHNlbmQgdjEgd2l0aCBiZWxvdyBjaGFuZ2VzLg0KMS4gZHJvcCBwYXRjaC0x IGluIHRoZSBzZXJpZXMuDQoyLiBzaW1wbGlmeSBwYXRjaCA3IHRvIGRyb3AgdGhlIGJvb2wgcGFy dC4uLg0KMy4gbW92ZSB0aGUgbG9vcF9yZW1vdmFsIGNvZGUgaW4gbWRldl9yZW1vdmUoKSBmcm9t IHBhdGNoLTcgdG8gOCBmb3IgY29ycmVjdG5lc3MuDQo=