From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF8CAC43457 for ; Sat, 17 Oct 2020 18:09:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 622B02074A for ; Sat, 17 Oct 2020 18:09:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.de header.i=@amazon.de header.b="b9yEHz9k" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2438771AbgJQSJb (ORCPT ); Sat, 17 Oct 2020 14:09:31 -0400 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]:47208 "EHLO smtp-fw-6001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2411020AbgJQSJb (ORCPT ); Sat, 17 Oct 2020 14:09:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209; t=1602958167; x=1634494167; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=sMRJ1nmaaZClOicpi2VfDlHuqHED+gJWzf9LpOrjUvA=; b=b9yEHz9k3WjlKmBVIzVRRpcuGdm6bPeRyT+r/tUqaqHSDIJ3su4Mnw3g c/6EqmoaRprDj5lrcwSsFjtUnV0X84CIdWmgxe8KeeYBhyvTyGSr08ln1 a5qbSUj+tNGxKjj23bPqd+uF6Ucl39juA6xjoPV9KghJnX/Riglr6mVF7 4=; X-IronPort-AV: E=Sophos;i="5.77,387,1596499200"; d="scan'208";a="61770157" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1a-16acd5e0.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 17 Oct 2020 18:09:21 +0000 Received: from EX13MTAUWC002.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-1a-16acd5e0.us-east-1.amazon.com (Postfix) with ESMTPS id A2E1DA2039; Sat, 17 Oct 2020 18:09:14 +0000 (UTC) Received: from EX13D20UWC001.ant.amazon.com (10.43.162.244) by EX13MTAUWC002.ant.amazon.com (10.43.162.240) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 17 Oct 2020 18:09:14 +0000 Received: from freeip.amazon.com (10.43.162.241) by EX13D20UWC001.ant.amazon.com (10.43.162.244) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 17 Oct 2020 18:09:08 +0000 Subject: Re: [PATCH] drivers/virt: vmgenid: add vm generation id driver To: "Jason A. Donenfeld" , Jann Horn CC: Willy Tarreau , Colm MacCarthaigh , "Catangiu, Adrian Costin" , Andy Lutomirski , "Theodore Y. Ts'o" , Eric Biggers , "open list:DOCUMENTATION" , kernel list , "open list:VIRTIO GPU DRIVER" , "Woodhouse, David" , , "Singh, Balbir" , "Weiss, Radu" , , , Jonathan Corbet , Greg Kroah-Hartman , "Michael S. Tsirkin" , "Qemu Developers" , KVM list , "Michal Hocko" , "Rafael J. Wysocki" , "Pavel Machek" , Linux API , "Christian Borntraeger" , References: <788878CE-2578-4991-A5A6-669DCABAC2F2@amazon.com> <20201017033606.GA14014@1wt.eu> <6CC3DB03-27BA-4F5E-8ADA-BE605D83A85C@amazon.com> <20201017053712.GA14105@1wt.eu> <20201017064442.GA14117@1wt.eu> From: Alexander Graf Message-ID: Date: Sat, 17 Oct 2020 20:09:06 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:78.0) Gecko/20100101 Thunderbird/78.3.2 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [10.43.162.241] X-ClientProxiedBy: EX13D15UWB004.ant.amazon.com (10.43.161.61) To EX13D20UWC001.ant.amazon.com (10.43.162.244) Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgSmFzb24sCgpPbiAxNy4xMC4yMCAxNToyNCwgSmFzb24gQS4gRG9uZW5mZWxkIHdyb3RlOgo+ IAo+IEFmdGVyIGRpc2N1c3NpbmcgdGhpcyBvZmZsaW5lIHdpdGggSmFubiBhIGJpdCwgSSBoYXZl IGEgZmV3IGdlbmVyYWwKPiBjb21tZW50cyBvbiB0aGUgZGVzaWduIG9mIHRoaXMuCj4gCj4gRmly c3QsIHRoZSBVVUlEIGNvbW11bmljYXRlZCBieSB0aGUgaHlwZXJ2aXNvciBzaG91bGQgYmUgY29u c3VtZWQgYnkKPiB0aGUga2VybmVsIC0tIGFkZGVkIGFzIGFub3RoZXIgaW5wdXQgdG8gdGhlIHJu ZyAtLSBhbmQgdGhlbiB1c2Vyc3BhY2UKCldlIGRlZmluaXRlbHkgd2FudCBhIGtlcm5lbCBpbnRl cm5hbCBub3RpZmllciBhcyB3ZWxsLCB5ZXMgOikuCgo+IHNob3VsZCBiZSBub3RpZmllZCB0aGF0 IGl0IHNob3VsZCByZXNlZWQgYW55IHVzZXJzcGFjZSBSTkdzIHRoYXQgaXQKPiBtYXkgaGF2ZSwg d2l0aG91dCBhY3R1YWxseSBjb21tdW5pY2F0aW5nIHRoYXQgVVVJRCB0byB1c2Vyc3BhY2UuIElP VywKCkkgYWxzbyB0ZW5kIHRvIGFncmVlIHRoYXQgaXQgbWFrZXMgc2Vuc2UgdG8gZGlzY29ubmVj dCB0aGUgYWN0dWFsIFVVSUQgCndlIHJlY2VpdmUgZnJvbSB0aGUgbm90aWZpY2F0aW9uIHRvIHVz ZXIgc3BhY2UuIFRoaXMgd291bGQgYWxsb3cgdXMgdG8gCmNyZWF0ZSBhIGdlbmVyaWMgbWVjaGFu aXNtIGZvciBWTSBzYXZlL3Jlc3RvcmUgY3ljbGVzIGFjcm9zcyBkaWZmZXJlbnQgCmh5cGVydmlz b3JzLiBMZXQgbWUgYWRkIFBQQyBhbmQgczM5MHggcGVvcGxlIHRvIHRoZSBDQyBsaXN0IHRvIHNl ZSAKd2hldGhlciB0aGV5IGhhdmUgYW55dGhpbmcgcmVtb3RlbHkgc2ltaWxhciB0byB0aGUgVm1H ZW5JRCBtZWNoYW5pc20uIApGb3IgeDg2IGFuZCBhYXJjaDY0LCB0aGUgQUNQSSBhbmQgbWVtb3J5 IGJhc2VkIFZtR2VuSUQgaW1wbGVtZW50ZWQgaGVyZSAKaXMgdGhlIG1vc3Qgb2J2aW91cyBvcHRp b24gdG8gaW1wbGVtZW50IElNSE8uIEl0J3MgYWxzbyBhbHJlYWR5IAppbXBsZW1lbnRlZCBpbiBh bGwgbWFqb3IgaHlwZXJ2aXNvcnMuCgo+IEkgYWdyZWUgd2l0aCBKYW5uIHRoZXJlLiBUaGVuLCBp dCdzIHRoZSBmdW5jdGlvbmluZyBvZiB0aGlzCj4gbm90aWZpY2F0aW9uIG1lY2hhbmlzbSB0byB1 c2Vyc3BhY2UgdGhhdCBpcyBpbnRlcmVzdGluZyB0byBtZS4KCkFic29sdXRlbHkhIFBsZWFzZSBo YXZlIGEgbG9vayBhdCB0aGUgcHJldmlvdXMgZGlzY3Vzc2lvbiBoZXJlOgoKIApodHRwczovL2xv cmUua2VybmVsLm9yZy9saW51eC1wbS9CNzc5M0I3QS0zNjYwLTQ3NjktOUI5QS1GRkNGMjUwNzI4 QkJAYW1hem9uLmNvbS8KClRoZSB1c2VyIHNwYWNlIGludGVyZmFjZSBpcyBhYnNvbHV0ZWx5IHdo YXQgdGhpcyBpcyBhYm91dC4KCj4gVGhlcmUgYXJlIGEgZmV3IGRlc2lnbiBnb2FscyBvZiBub3Rp ZnlpbmcgdXNlcnNwYWNlOiBpdCBzaG91bGQgYmUKPiBmYXN0LCBiZWNhdXNlIHBlb3BsZSB3aG8g YXJlIHVzaW5nIHVzZXJzcGFjZSBSTkdzIGFyZSB1c3VhbGx5IGRvaW5nIHNvCj4gaW4gdGhlIGZp cnN0IHBsYWNlIHRvIGNvbXBsZXRlbHkgYXZvaWQgc3lzY2FsbCBvdmVyaGVhZCBmb3Igd2hhdGV2 ZXIKPiBoaWdoIHBlcmZvcm1hbmNlIGFwcGxpY2F0aW9uIHRoZXkgaGF2ZSAtIGUuZy4gSSByZWNh bGwgY29udmVyc2F0aW9ucwo+IHdpdGggQ29sbSBhYm91dCBoaXMgVExTIGltcGxlbWVudGF0aW9u IG5lZWRpbmcgdG8gbWFrZSByYW5kb20gSVZzCj4gX3JlYWxseV8gZmFzdC4gSXQgc2hvdWxkIGFs c28gaGFwcGVuIGFzIGVhcmx5IGFzIHBvc3NpYmxlLCB3aXRoIG5vCj4gcmFjZSBvciBhcyBtaW5p bWFsIGFzIHBvc3NpYmxlIHJhY2Ugd2luZG93LCBzbyB0aGF0IHVzZXJzcGFjZSBkb2Vzbid0Cj4g YmVnaW4gdXNpbmcgb2xkIHJhbmRvbW5lc3MgYW5kIHRoZW4gc3dpdGNoIG92ZXIgYWZ0ZXIgdGhl IGRhbWFnZSBpcwo+IGFscmVhZHkgZG9uZS4KClRoZXJlIGFyZSBtdWx0aXBsZSBmYWNldHMgYW5k IGRpZmZlcmVudCB0eXBlcyBvZiBjb25zdW1lcnMgaGVyZS4gRm9yIGEgCnVzZXIgc3BhY2UgUk5H LCBJIGFncmVlIHRoYXQgZmFzdCBhbmQgYXMgcmFjZSBmcmVlIGFzIHBvc3NpYmxlIGlzIGtleS4g ClRoYXQncyB3aGF0IHRoZSBtbWFwIGludGVyZmFjZSBpcyB0aGVyZSBmb3IuCgpUaGVyZSBhcmUg YXBwbGljYXRpb25zIHdheSBiZXlvbmQgdGhhdCB0aG91Z2guIFdoYXQgZG8geW91IGRvIHdpdGgg CmFwcGxpY2F0aW9ucyB0aGF0IGFscmVhZHkgY29uc3VtZWQgcmFuZG9tbmVzcz8gRm9yIGV4YW1w bGUgYSBjYWNoZWQgcG9vbCAKb2YgU1NMIGtleXMuIE9yIGEgaGlnaGVyIGxldmVsIGxhbmd1YWdl IHByaW1pdGl2ZSB0aGF0IGNvbnN1bWVzIApyYW5kb21uZXNzIGFuZCBjYWNoZXMgaXRzIHNlZWQg c29tZXdoZXJlIGluIGFuIGludGVybmFsIGRhdGEgc3RydWN0dXJlLiAKT3IgZXZlbiB3b3JzZTog eW91ciBzeXN0ZW0ncyBob3N0IHNzaCBrZXkuCgpGb3IgdGhvc2UgdHlwZXMgb2YgZXZlbnRzLCBh biBtbWFwIChvciB2RFNPKSBpbnRlcmZhY2UgZG9lcyBub3Qgd29yay4gV2UgCm5lZWQgdG8gYWN0 aXZlbHkgYWxsb3cgdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMgdG8gcmVhZGp1c3QgdG8gdGhlIG5l dyAKZW52aXJvbm1lbnQgLSBlaXRoZXIgaW50ZXJuYWxseSAodGhlIGxhbmd1YWdlIHByaW1pdGl2 ZSBjYXNlKSBvciB0aHJvdWdoIAphIHN5c3RlbSBldmVudCwgbWF5YmUgZXZlbiBhcyBzeXN0ZW1k IHRyaWdnZXIgKHRoZSBzc2ggaG9zdCBrZXkgY2FzZSkuCgpUbyBnaXZlIGV2ZXJ5b25lIGVub3Vn aCB0aW1lIGJlZm9yZSB3ZSBjb25zaWRlciBhIHN5c3RlbSBhcyAidXBkYXRlZCB0byAKdGhlIG5l dyBlbnZpcm9ubWVudCIsIHdlIGhhdmUgdGhlIGNhbGxiYWNrIGxvZ2ljIHdpdGggdGhlICJPcmNo ZXN0cmF0b3IiIAp0aGF0IGNhbiBjaGVjayB3aGV0aGVyIGFsbCBsaXN0ZW5lcnMgdG8gc3lzdGVt IHdpZGUgdXBkYXRlcyBjb25maXJtcyAKdGhleSBhZGp1c3RlZCB0aGVtc2VsdmVzLgoKVGhhdCdz IHdoYXQgdGhlIHJlc3Qgb2YgdGhlIGxvZ2ljIGlzIHRoZXJlIGZvcjogQSByZWFkK3BvbGwgaW50 ZXJmYWNlIAphbmQgYWxsIG9mIHRoZSBvcmNoZXN0cmF0aW9uIGxvZ2ljLiBJdCdzIG5vdCBmb3Ig dGhlIHVzZXIgc3BhY2UgUk5HIApjYXNlLCBpdCdzIGZvciBhbGwgb2YgaXRzIGRvd25zdHJlYW0g dXNlcnMuCgo+IEknbSBhbHNvIG5vdCB3ZWRkZWQgdG8gdXNpbmcgTWljcm9zb2Z0J3MgcHJvcHJp ZXRhcnkgaHlwZXJ2aXNvciBkZXNpZ24KPiBmb3IgdGhpcy4gSWYgd2UgY29tZSB1cCB3aXRoIGEg YmV0dGVyIGludGVyZmFjZSwgSSBkb24ndCB0aGluayBpdCdzCj4gYXNraW5nIHRvbyBtdWNoIHRv IGltcGxlbWVudCB0aGF0IGFuZCByZWFzb25hYmx5IGV4cGVjdCBmb3IgTWljcm9zb2Z0Cj4gdG8g Y2F0Y2ggdXAuIE1heWJlIHNvbWVvbmUgaGVyZSB3aWxsIGZpbmQgdGhhdCBjb250cm92ZXJzaWFs LCBidXQKPiB3aGF0ZXZlciAtLSBkaXNjdXNzaW5nIGlkZWFsIGRlc2lnbnMgZG9lcyBub3Qgc2Vl bSBvdXQgb2YgcGxhY2Ugb3IKPiBpbmFwcHJvcHJpYXRlIGZvciBob3cgd2UgdXN1YWxseSBhcHBy b2FjaCB0aGluZ3MgaW4gdGhlIGtlcm5lbCwgYW5kIGEKPiBjbG9zZWQgc291cmNlIGh5cGVydmlz b3IgY29taW5nIGFsb25nIHNob3VsZG4ndCBkaXNydXB0IHRoYXQuCgpUaGUgbWFpbiBib251cyBw b2ludCBvbiB0aGlzIGludGVyZmFjZSBpcyB0aGF0IEh5cGVyLVYsIFZNd2FyZSBhbmQgUUVNVSAK aW1wbGVtZW50IGl0IGFscmVhZHkuIEl0IHdvdWxkIGJlIGEgdmVyeSBuYXR1cmFsIGZvciBpbnRv IHRoZSBlY29zeXN0ZW0uIApJIGFncmVlIHRob3VnaCB0aGF0IHdlIHNob3VsZG4ndCBoYXZlIG91 ciB1c2VyIHNwYWNlIGludGVyZmFjZSAKbmVjZXNzYXJpbHkgZGljdGF0ZWQgYnkgaXQ6IE90aGVy IGh5cGVydmlzb3JzIG1heSBpbXBsZW1lbnQgZGlmZmVyZW50IAp3YXlzIHN1Y2ggYXMgYSBzaW1w bGUgZWRnZSBJUlEgdGhhdCBnZXRzIHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgVk0gZ2V0cyAKcmVz dW1lZC4KCj4gU28sIGFueXdheSwgaGVyZSBhcmUgYSBmZXcgb3B0aW9ucyB3aXRoIHNvbWUgcHJv cyBhbmQgY29ucyBmb3IgdGhlCj4ga2VybmVsIG5vdGlmeWluZyB1c2Vyc3BhY2UgdGhhdCBpdHMg Uk5HIHNob3VsZCByZXNlZWQuCgpJIGNhbiBvbmx5IHN0cmVzcyBhZ2FpbiB0aGF0IHdlIHNob3Vs ZCBub3QgYmUgbGFzZXIgZm9jdXNlZCBvbiB0aGUgUk5HIApjYXNlLiBJbiBhIGxvdCBvZiBjYXNl cywgZGF0YSBoYXMgYWxyZWFkeSBiZWVuIGdlbmVyYXRlZCBieSB0aGUgUk5HIApiZWZvcmUgdGhl IHNuYXBzaG90IGFuZCBuZWVkcyB0byBiZSByZWluaXRpYWxpemVkIGFmdGVyIHRoZSBzbmFwc2hv dC4gSW4gCm90aGVyIGNhc2VzIHN1Y2ggYXMgc3lzdGVtIFVVSURzLCBpdCdzIGNvbXBsZXRlbHkg b3J0aG9nb25hbCB0byB0aGUgUk5HLgoKPiAKPiAxLiBTSUdSTkQgLSBhIG5ldyBzaWduYWwuIExv bC4KCkRvYWJsZSwgYnV0IGEgbG90IG9mIHBsdW1iaW5nIGluIHVzZXIgc3BhY2UuIEl0J3MgYWxz byBub3QgbmVjZXNzYXJpbHkgYSAKZ29vZCBmb3IgZm9yIGV2ZW50IG5vdGlmaWNhdGlvbiBpbiBt b3N0IHVzZXIgc3BhY2UgYXBwbGljYXRpb25zLgoKPiAKPiAyLiBVc2Vyc3BhY2Ugb3BlbnMgYSBm aWxlIGRlc2NyaXB0b3IgdGhhdCBpdCBjYW4gZXBvbGwgb24uIFByb3MgYXJlCj4gdGhhdCBtYW55 IG5vdGlmaWNhdGlvbiBtZWNoYW5pc21zIGFscmVhZHkgdXNlIHRoaXMuIENvbnMgaXMgdGhhdCB0 aGlzCj4gcmVxdWlyZXMgc3lzY2FsbCBhbmQgbWlnaHQgYmUgbW9yZSByYWN5IHRoYW4gd2Ugd2Fu dC4gQW5vdGhlciBjb24gaXMKPiB0aGF0IHRoaXMgYSBuZXcgdGhpbmcgZm9yIHVzZXJzcGFjZSBw cm9ncmFtcyB0byBkby4KClRoYXQncyBwYXJ0IG9mIHdoYXQgdGhpcyBwYXRjaCBkb2VzLCByaWdo dD8gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIApyZWFkK3BvbGwgYXMgd2VsbCBhcyBtbWFwKCkgZm9y IGhpZ2ggc3BlZWQgcmVhZHMuCgo+IDMuIFdlIHN0aWNrIGFuIGF0b21pYyBjb3VudGVyIGluIHRo ZSB2RFNPLCBKYW5uJ3Mgc3VnZ2VzdGlvbi4gUHJvcyBhcmUKPiB0aGF0IHRoaXMgaXMgZXh0cmVt ZWx5IGZhc3QsIGFuZCBhbHNvIHNpbXBsZSB0byB1c2UgYW5kIGltcGxlbWVudC4KPiBUaGVyZSBh cmUgZW5vdWdoIHNlcXVlbmNlIHBvaW50cyBpbiB0eXBpY2FsIGNyeXB0byBwcm9ncmFtcyB0aGF0 Cj4gY2hlY2tpbmcgdG8gc2VlIHdoZXRoZXIgdGhpcyBjb3VudGVyIGhhcyBjaGFuZ2VkIGJlZm9y ZSBkb2luZyB3aGF0ZXZlcgo+IG9wZXJhdGlvbiBzZWVtcyBlYXN5IGVub3VnaC4gQ29ucyBhcmUg dGhhdCB0eXBpY2FsbHkgd2UndmUgYmVlbgo+IGNvbnNlcnZhdGl2ZSBhYm91dCBhZGRpbmcgdGhp bmdzIHRvIHRoZSB2RFNPLCBhbmQgdGhpcyBpcyBhbHNvIGEgbmV3Cj4gdGhpbmcgZm9yIHVzZXJz cGFjZSBwcm9ncmFtcyB0byBkby4KClRoZSBiaWcgY29uIGlzIHRoYXQgaXRzIHVzZSBpcyBnb2lu ZyB0byBiZSBzdXBlciBsaW1pdGVkIHRvIGFwcGxpY2F0aW9ucyAKdGhhdCBjYW4gYmUgYWRhcHRl ZCB0byBjaGVjayB0aGVpciAidm0gZ2VuZXJhdGlvbiIgdGhyb3VnaCBhIHZEU08gY2FsbCAvIApy ZWFkIGV2ZXJ5IHRpbWUgdGhleSBjb25zdW1lIGRhdGEgdGhhdCBtYXkgcG90ZW50aWFsbHkgbmVl ZCB0byBiZSAKcmVnZW5lcmF0ZWQuCgpUaGlzIHByb2JhYmx5IHdvcmtzIGZvciB0aGUgcHVyZSBS TkcgY2FzZS4gSXQgZmFsbHMgYXBhcnQgZm9yIG1vcmUgCnNvcGhpc3RpY2F0ZWQgdGhpbmdzIHN1 Y2ggYXMgInJlZG8gbXkgc3NoIGhvc3Qga2V5cyBhbmQgcmVzdGFydCB0aGUgCnNlcnZpY2UiIG9y ICJyZWdlbmVyYXRlIG15IHNhbWJhIG1hY2hpbmUgdXVpZCIuCgo+IDQuIFdlIGFscmVhZHkgaGF2 ZSBhIG1lY2hhbmlzbSBmb3IgdGhpcyBraW5kIG9mIHRoaW5nLCBiZWNhdXNlIHRoZQo+IHNhbWUg aXNzdWUgY29tZXMgdXAgd2hlbiBmb3JrKClpbmcuIFRoZSBzb2x1dGlvbiB3YXMgTUFEVl9XSVBF T05GT1JLLAo+IHdoZXJlIHVzZXJzcGFjZSBtYXJrcyBhIHBhZ2UgdG8gYmUgemVyb2VkIHdoZW4g Zm9ya2luZywgZm9yIHRoZQo+IHB1cnBvc2VzIG9mIHRoZSBSTkcgYmVpbmcgbm90aWZpZWQgd2hl biBpdHMgd29ybGQgZ2V0cyBzcGxpdCBpbiB0d28uCj4gVGhpcyBpcyBiYXNpY2FsbHkgdGhlIHNh bWUgdGhpbmcgYXMgd2UncmUgZGlzY3Vzc2luZyBoZXJlIHdpdGggZ3Vlc3QKPiBzbmFwc2hvdHMs IGV4Y2VwdCBpdCdzIG9uIHRoZSBzeXN0ZW0gbGV2ZWwgcmF0aGVyIHRoYW4gdGhlIHByb2Nlc3MK PiBsZXZlbCwgYW5kIGEgc3lzdGVtIGhhcyBtYW55IHByb2Nlc3Nlcy4gQnV0IHRoZSBwcm9ibGVt IHNwYWNlIGlzIHN0aWxsCj4gYWxtb3N0IHRoZSBzYW1lLCBhbmQgd2UgY291bGQgc2ltcGx5IHJl dXNlIHRoYXQgc2FtZSBtZWNoYW5pc20uIFRoZXJlCj4gYXJlIGEgZmV3IGltcGxlbWVudGF0aW9u IHN0cmF0ZWdpZXMgZm9yIHRoYXQ6CgpZdXAsIHRoYXQncyB3aGVyZSB3ZSBzdGFydGVkIGZyb20g OikuIEFuZCB0aGVuIHdlIHJhbiBpbnRvIHJlc2lzdGFuY2UgYnkgCnRoZSBtbSBwZW9wbGUgKG9u IENDIGhlcmUpLiBBbmQgdGhlbiB3ZSBsb29rZWQgYXQgdGhlIHByb2JsZW0gbW9yZSBpbiAKZGVw dGggYW5kIGNoZWNrZWQgd2hhdCBpdCB3b3VsZCB0YWtlIHRvIGZvciBleGFtcGxlIGltcGxlbWVu dCB0aGlzIGZvciAKdXNlciBzcGFjZSBSTkdzIGluIEphdmEuIEl0J3MgLi4uIG1vcmUgY29tcGxp Y2F0ZWQgdGhhbiBvbmUgbWF5IHRoaW5rIGF0IApmaXJzdC4KCj4gNGEuIFdlIG1lc3Mgd2l0aCB0 aGUgUFRFcyBvZiBhbGwgcHJvY2Vzc2VzJyBwYWdlcyB0aGF0IGFyZQo+IE1BRFZfV0lQRU9ORk9S SywgbGlrZSBmb3JrIGRvZXMgbm93LCB3aGVuIHRoZSBoeXBlcnZpc29yIG5vdGlmaWVzIHVzCj4g dG8gZG8gc28uIFRoZW4gd2Ugd2luZCB1cCByZXVzaW5nIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGxv Z2ljIGZvcgo+IHVzZXJzcGFjZSBSTkdzLiBDb25zIG1pZ2h0IGJlIHRoYXQgdGhpcyB1c3VhbGx5 IHJlcXVpcmVzIHNlbWFwaG9yZXMsCj4gYW5kIHdlJ3JlIGluIGlycSBjb250ZXh0LCBzbyB3ZSdk IGhhdmUgdG8gaG9pc3QgdG8gYSB3b3JrcXVldWUsIHdoaWNoCj4gbWVhbnMgZWl0aGVyIG1vcmUg d2FrZSB1cCBsYXRlbmN5LCBvciBhIGxhcmdlciByYWNlIHdpbmRvdy4KPiAKPiA0Yi4gV2UganVz dCBtZW16ZXJvIGFsbCBwcm9jZXNzZXMnIHBhZ2VzIHRoYXQgYXJlIE1BRFZfV0lQRU9ORk9SSywK PiB3aGVuIHRoZSBoeXBlcnZpc29yIG5vdGlmaWVzIHVzIHRvIGRvIHNvLiBUaGVuIHdlIHdpbmQg dXAgcmV1c2luZyB0aGUKPiBhbHJlYWR5IGV4aXN0aW5nIGxvZ2ljIGZvciB1c2Vyc3BhY2UgUk5H cy4KPiAKPiA0Yy4gVGhlIGd1ZXN0IGtlcm5lbCBtYWludGFpbnMgYW4gYXJyYXkgb2YgcGh5c2lj YWwgYWRkcmVzc2VzIHRoYXQgYXJlCj4gTUFEVl9XSVBFT05GT1JLLiBUaGUgaHlwZXJ2aXNvciBr bm93cyBhYm91dCB0aGlzIGFycmF5IGFuZCBpdHMKPiBsb2NhdGlvbiB0aHJvdWdoIHdoYXRldmVy IHByb3RvY29sLCBhbmQgYmVmb3JlIHJlc3VtaW5nIGEKPiBtb3ZlZC9zbmFwc2hvdHRlZC9kdXBs aWNhdGVkIFZNLCBpdCB0YWtlcyB0aGUgcmVzcG9uc2liaWxpdHkgZm9yCj4gbWVtemVyb2luZyB0 aGlzIG1lbW9yeS4gVGhlIGh1Z2UgcHJvIGhlcmUgd291bGQgYmUgdGhhdCB0aGlzCj4gZWxpbWlu YXRlcyBhbGwgcmFjZXMsIGFuZCByZWR1Y2VzIGNvbXBsZXhpdHkgcXVpdGUgYSBiaXQsIGJlY2F1 c2UgdGhlCj4gaHlwZXJ2aXNvciBjYW4gcGVyZmVjdGx5IHN5bmNocm9uaXplIGl0cyBicmluZ3Vw IChhbmQgU01QIGJyaW5ndXApCj4gd2l0aCB0aGlzLCBhbmQgaXQgY2FuIGV2ZW4gb3B0aW1pemUg dGhpbmdzIGxpa2Ugb24tZGlzayBtZW1vcnkKPiBzbmFwc2hvdHMgdG8gc2ltcGx5IG5vdCB3cml0 ZSBvdXQgdGhvc2UgcGFnZXMgdG8gZGlzay4KPiAKPiBBIDRjLWxpa2UgYXBwcm9hY2ggc2VlbXMg bGlrZSBpdCdkIGJlIGEgbG90IG9mIGJhbmcgZm9yIHRoZSBidWNrIC0tIHdlCj4gcmV1c2UgdGhl IGV4aXN0aW5nIG1lY2hhbmlzbSAoTUFEVl9XSVBFT05GT1JLKSwgc28gdGhlcmUncyBubyBuZXcK PiB1c2Vyc3BhY2UgQVBJIHRvIGRlYWwgd2l0aCwgYW5kIGl0J2QgYmUgcmFjZSBmcmVlLCBhbmQg ZWxpbWluYXRlIGEgbG90Cj4gb2Yga2VybmVsIGNvbXBsZXhpdHkuCj4gCj4gQnV0IDRiIGFuZCAz IGRvbid0IHNlZW0gdG9vIGJhZCBlaXRoZXIuCj4gCj4gQW55IHRob3VnaHRzIG9uIDRjPyBJcyB0 aGF0IHV0dGVybHkgaW5zYW5lLCBvciBkb2VzIHRoYXQgYWN0dWFsbHkgZ2V0Cj4gdXMgc29tZXdo ZXJlIGNsb3NlIHRvIHdoYXQgd2Ugd2FudD8KCkFsbCBvZiB0aGUgb3B0aW9ucyBmb3IgIjQiIGFy ZSBwb3NzaWJsZSBhbmQgaGF2ZSBhbiBSRkMgb3V0LiBQbGVhc2UgCmNoZWNrIG91dCB0aGUgZGlz Y3Vzc2lvbiBsaW5rZWQgYWJvdmUgOikuCgpUaGUgcHJvYmxlbSB3aXRoIGFueXRoaW5nIHRoYXQg cmVsaWVzIG9uIGNsb3NlIGxvb3AgcmVhZHMgKG9wdGlvbnMgMys0KSAKaXMgbm90IGdvaW5nIHRv IHdvcmsgd2VsbCB3aXRoIHRoZSBtb3JlIHNvcGhpc3RpY2F0ZWQgdXNlIGNhc2Ugb2YgCmRlcml2 ZWQgZGF0YS4KCklNSE8gaXQgd2lsbCBib2lsIGRvd24gdG8gImJvdGgiLiBXZSB3aWxsIG5lZWQg YSBoaWdoLXNwZWVkIGludGVyZmFjZSAKdGhhdCB3aXRoIGNsb3NlLXRvLTAgb3ZlcmhlYWQgdGVs bHMgeW91IGVpdGhlciB0aGUgZ2VuZXJhdGlvbiBJRCBvciAKY2xlYXJzIHBhZ2VzIChvcHRpb25z IDMrNCkgYXMgd2VsbCBhcyBzb21ldGhpbmcgdGhhdCBpcyBiaWdnZXIgZm9yIAphcHBsaWNhdGlv bnMgdGhhdCBjYW4gZWl0aGVyIGludHJpbnNpY2FsbHkgKHNzaGQpIG9yIGJ5IHN5c3RlbSBkZXNp Z24gCihKYXZhKSBub3QgYWRvcHQgdGhlIG1lY2hhbmlzbXMgYWJvdmUgZWFzaWx5LgoKVGhhdCBz YWlkLCB3ZSBuZWVkIHRvIHN0YXJ0IHNvbWV3aGVyZS4gSSBkb24ndCBtaW5kIHdoaWNoIGFuZ2xl IHdlIHN0YXJ0IApmcm9tLiBCdXQgdGhpcyBpcyBhIHJlYWwgd29ybGQgcHJvYmxlbSBhbmQgb25l IHRoYXQgd2lsbCBvbmx5IGJlY29tZSAKbW9yZSBwcmV2YWxlbnQgb3ZlciB0aW1lIGFzIFZNcyBh cmUgdXNlZCBmb3IgbW9yZSB0aGFuIG9ubHkgeW91ciAKdHJhZGl0aW9uYWwgZW50ZXJwcmlzZSBo YXJkd2FyZSBjb25zb2xpZGF0aW9uLgoKCkFsZXgKCgoKQW1hem9uIERldmVsb3BtZW50IENlbnRl ciBHZXJtYW55IEdtYkgKS3JhdXNlbnN0ci4gMzgKMTAxMTcgQmVybGluCkdlc2NoYWVmdHNmdWVo cnVuZzogQ2hyaXN0aWFuIFNjaGxhZWdlciwgSm9uYXRoYW4gV2Vpc3MKRWluZ2V0cmFnZW4gYW0g QW10c2dlcmljaHQgQ2hhcmxvdHRlbmJ1cmcgdW50ZXIgSFJCIDE0OTE3MyBCClNpdHo6IEJlcmxp bgpVc3QtSUQ6IERFIDI4OSAyMzcgODc5CgoK