Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp935430pxj; Thu, 27 May 2021 15:30:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLAgjrYCprxG/oOLoHLyrics06ohXXNBbn2f+UQ07GEleA+EL/4WpznzRWBjxsJIXPh5kf X-Received: by 2002:a92:ca0a:: with SMTP id j10mr4685730ils.154.1622154640221; Thu, 27 May 2021 15:30:40 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1622154640; cv=pass; d=google.com; s=arc-20160816; b=Lr1G/fSmxyhZ3MGFg2hdP5NwaCNN4iR/D4UBpu69VR2n9+Ri2+hFuclkDy5RSuM31J UJsHDyH5PsihRQ2s0CEVLOprG/gnGV9xrm6VA+tYTIvuUmfS+KpdM5mGHFGouSwmqJYL 01E8yT2yg5cW0NZUMiEOLc+2F6KkpirwEYbdgR5X6YqebbsBmeC7emZIZUpuB7+PQfRf FEEcUwZ1y0Mk4PC7wtFNgHDuU84Eu5iYtwqnwxnwW8k1FjozZQYjcoleGz1TUhkPrv0k gHaE/pJZhRyfxzcoNfuHL6Vjg31xJ0bIbkbLvhwmmbNxC5D+eAZZffn+EEUaH7fpkHX+ NLCQ== 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 :msip_labels:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=orUom83ewoKjB//GmzTtNwJcu9TFiWCjMgINqGYlgGA=; b=UwCJRbKb6ImmjKjgOXsgqQ3ZarLWqvqnmATb6dVl9vAi0yFEqtTYQvtgCeTSOHc8Ov Z5Rb3YKqnsfx6gefHt96NarRw+iQXpO5HzswewIUH0ES/szOTO+Muo/n7QIhph6Yf/zm tsGGe4+08Gk2ASXeoY1o79s3ePtbxdF78C6gpWv/DARc0qBugaMASr3vdOwLRygh0Xae b3dNLKOMEszmavDsSzf75kB8COCYU2IDCLfud4C2TzTEibsZ/ii8zV54NREarO2HdhoX VL++XzJ3S2atGUOXn1wCISGVcKoYzUKpy3rnou50a+ZEH4AUyzNrN2F5ge+avWEc/mQi 622Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=vTlTgvPB; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amd.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k14si3425265ili.35.2021.05.27.15.29.54; Thu, 27 May 2021 15:30:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=vTlTgvPB; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amd.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233521AbhE0PxO (ORCPT + 99 others); Thu, 27 May 2021 11:53:14 -0400 Received: from mail-dm6nam11on2061.outbound.protection.outlook.com ([40.107.223.61]:39904 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229713AbhE0PxE (ORCPT ); Thu, 27 May 2021 11:53:04 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gX7Rz4LTggFJH+ugPjY0OtFz111nK4sSl0w1kH30IIGAu7klGHiaH4vT72X5CXgpYIWiTN4YDzstGpAAkjhbTQpP+YeZWbrKhMoJUbLf0chn1RqiaTYXnrdNnc1jge7jU2hOyGHapksMwMQSYMd/GFUg2BgKYYellEP6YktfXhAKtIGzVL1qd1Y8QkXRbXg/0V11isvHxDlpr4NCBMT+edlHXUKVQCiSDCk/DFSYteVdqwYZB+Oq9PBbbznDv9xguRJYh0NcEZGJUF90x/cXQVyAoz7JFOGWaryz02MvPr6NawB2PMMQrrd9RSwOYkodysfS08SP9oNYcpiPl1xDjg== 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-SenderADCheck; bh=orUom83ewoKjB//GmzTtNwJcu9TFiWCjMgINqGYlgGA=; b=n/PN+eNGoBGo//NLVeUGlI1M5GxBmylFDEp7HA2ALnaRbUDvG1EgDn0TRHuRBomHzwKrxt2Xl3swwo0GHR2CPjuwmZLnmZ590TGRYD7ZdsBr0XsPI4MABi1kVQox3L1uKW+qZmvOadkIADXSca8t1ELiIr6oOnn74SQE1pVtN0SlQgynOWukrT5p6t3iLw1rbvLvliXYF3Hpi3rPh6io/ncZluVfEKZ6iuqXt5TccZuCZ0UV2ppcd/N/Mweu2WNDUoSRdwUshHiUPSAN2GWt+clgePndHCmF2z9d0jWUB2e/v0/2miKOhYwKpGgMVDyYvjBB/VpievBBVliy1HtxPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=orUom83ewoKjB//GmzTtNwJcu9TFiWCjMgINqGYlgGA=; b=vTlTgvPBzur9yfaE5U6wRX3eff/iAtwVeN5rW4N/ehWg/Q57zlFWVplwV7UNDHQQt1hOdHUCJMb2xaG5YHxJBF9Z3TpU4/4hQxwbk3Ujxq452chhgUorE25ng1vv1DKbk/c7VihM3JVBWZGOAtk5JoRuz/aF7w2qEcLBD4XXAMs= Received: from SN6PR12MB2767.namprd12.prod.outlook.com (2603:10b6:805:75::23) by SN6PR12MB2687.namprd12.prod.outlook.com (2603:10b6:805:73::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.22; Thu, 27 May 2021 15:51:29 +0000 Received: from SN6PR12MB2767.namprd12.prod.outlook.com ([fe80::1fb:7d59:2c24:615e]) by SN6PR12MB2767.namprd12.prod.outlook.com ([fe80::1fb:7d59:2c24:615e%6]) with mapi id 15.20.4129.036; Thu, 27 May 2021 15:51:29 +0000 From: "Kalra, Ashish" To: Paolo Bonzini , Tobin Feldman-Fitzthum , "natet@google.com" CC: Dov Murik , "Lendacky, Thomas" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "srutherford@google.com" , "seanjc@google.com" , "rientjes@google.com" , "Singh, Brijesh" , Laszlo Ersek , James Bottomley , Hubertus Franke , "qemu-devel@nongnu.org" Subject: RE: [RFC] KVM: x86: Support KVM VMs sharing SEV context Thread-Topic: [RFC] KVM: x86: Support KVM VMs sharing SEV context Thread-Index: AQHXCot5SNFL8RrPlkCutU8OGpQ4JKp/Ae+AgAAQa4CAdHeyEIAEX2Pw Date: Thu, 27 May 2021 15:51:29 +0000 Message-ID: References: <20210224085915.28751-1-natet@google.com> <7829472d-741c-1057-c61f-321fcfb5bdcd@linux.ibm.com> <35dde628-f1a8-c3bf-9c7d-7789166b0ee1@redhat.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_Enabled=true; MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_SetDate=2021-05-27T15:51:25Z; MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_Method=Privileged; MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_Name=Public_0; MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_ActionId=c0e1fa55-cc39-48d4-80c0-6013c0b193d0; MSIP_Label_0d814d60-469d-470c-8cb0-58434e2bf457_ContentBits=1 authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=amd.com; x-originating-ip: [183.83.213.75] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: da5904f3-231a-4827-4802-08d921274ad4 x-ms-traffictypediagnostic: SN6PR12MB2687: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VSvQsQxHnGVye0ee6g6pSbEV9n1povuxQ9uUJL3Z+NdZHbALyKQ0SRzFC6s6x2OwQTo4SpVTdaI9Fr/2D4HUldfOn89m+VV/T9oD6medxtaympjcQ/nAI/V5WSdVxlH/8vwibhHDiQWBVAsIoNZ6MHJqDNt0vfT8qAApFWn3DhnnE+hIgddT2R2wlOjm9Xv149I3a+ViTLofHTLUwgHCgcb/exWL8k4sMymnBGz9QH+c59lmAvMc/vBhdrktlDwT+JnEdaWHypYSnCcdcLBf7/3q4Ql2bRkvQJWlgH1RR5DsVnv5wZHTRJw8EOOJUhrccIlt2lv7daojeWSaCVrNWB/kABnwoOnC55QOP7z3jun8D3B8SXRi6rVIq+BWhqZJl+cQuZhW78mi1YhafC4kdhaaAhvMkSR+uTGvyia/VEvBhCltkukcHK3NYAaQxWkYzdvG53v1ZAYfZXeaZV85/vVKDOdac1zEypabt6XZNhv3jio2Xu7w3AV3S9PynBX+EFNpp5AtF3E6KvMTarpg8Bm7cyNSh1OjfujvJKSnq5ilbjdee8TW9Fyr0qRTfDVSYOdXJDnSx6cUyprj2ttsbGHkzupV9G0gjOWuSXWVz/4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR12MB2767.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(366004)(39860400002)(396003)(136003)(376002)(4326008)(26005)(33656002)(71200400001)(53546011)(6506007)(7696005)(86362001)(55016002)(122000001)(38100700002)(64756008)(76116006)(52536014)(7416002)(2906002)(8936002)(9686003)(5660300002)(186003)(316002)(478600001)(66446008)(66556008)(8676002)(83380400001)(66946007)(66476007)(54906003)(110136005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?TmxnQzFXeEVWc3ZoMTRWRW1oZzBVdlBVQzlUTHVTTlc1Sm1FYkxzNVF3aG8z?= =?utf-8?B?N3VkcHhGeWZtbUpGV0dXdVBaUHFtQ0ZGQW01bnNRdm1KSUdsUmFXN3I2RnRI?= =?utf-8?B?bTJKblJyK2huUHdndzg5REN3MkFYUStKRlhhZnJRdmQyN3FQaGIwUTZEaHZi?= =?utf-8?B?Wld4c095VFVrZmhXL3luQmIzU3lmOWRTOXZGMXY3RmlSZlVkL2hVTitGaFMr?= =?utf-8?B?MWRkaDlWTUxURTNKdEdUTU8xWUhoQ0Rxdy9rSlZkWE0zWTRrNFowc0hLQ0w1?= =?utf-8?B?dFUrTHlHaXpqdktQY3VGUDllS0dyNTdIT1htVit6cU5Ra05qQmloWVhGdEVU?= =?utf-8?B?NlNsZVJNN09EZkVjb2pVZ2hHUmkrT2w4Z1p0T3J6T2ZzY0lrM2U4NzhTWXp5?= =?utf-8?B?c3VYcjVLK0gyVHVGaWdsaFdBcmN0SFVtUXJtN0hJUGpjaW5LVWJTUnVicGU2?= =?utf-8?B?YjdkVkVxMU51bkl0bis4SXFnMnhndEZ0RzMvdnh1MVlXc3ptSXlqWjZTUmJU?= =?utf-8?B?M3dXYVFtSkwxeWNtbkk3ZFRWNGMvaE1uZzZOcUt0VEtDRXJqeGVFa0Q3dXZF?= =?utf-8?B?T3lySUdpME9kOXAvRVJHNXdycStsZXZlbFkxRkNvVWs3Nk5JOGxrd253cUcv?= =?utf-8?B?c2dxNDVySjVJVFpvSnA3bHVOOTVnVWRYaStCOTMxZUpQZkRWSVVmRjEwK2pF?= =?utf-8?B?WHhyOFRYUDE3Z0hsQTMrZUtVYTZGcjRWcjV4dzREaVduQWg3TDVPVUpWV2R3?= =?utf-8?B?NW1vMjdmNitLMFRta3VkcXdUbjJqd3JVYXR5YVE2MWZRd1h1Rm04VTJEWWJ3?= =?utf-8?B?NnU4M0o4NG00QU1TSTFrZk4rYitBdC9tRWJGL2drYU93T1YwVXV5b0k2c25H?= =?utf-8?B?N2QxYlRPRW02MjgrdU9uT0ZwMGZMbHkxa0VReTJBY0lRSmhsRG5JVVUyNCtq?= =?utf-8?B?TExjbEZ4cURsdXpGMEZsU1ZtamFmSjNLWElVZ0U2QWc4YjlZeWZhL015MXVp?= =?utf-8?B?S1ZBUVJpdHlwVlJHNTR1MDYya2ExQjBQSERaMTdXdWRlL3E5THZUWU5lekw5?= =?utf-8?B?Rk1OL0dOODhOeEJlMGdZUVVqR0NGZ0wzYzEzeERHOXI3ZTJmYThraFViUnNP?= =?utf-8?B?MXRGci9ETnZocmo0NjFEMFgwM1VXZUdJOFhxQXB0cEY0YnhDZTEyYk0yQmp2?= =?utf-8?B?UjJIc0R2OWZiZmZkcU1OYmwxekVCVDRNNnFpczdZR2V6clFIemVmVk9hSzhr?= =?utf-8?B?Rys0dFRmMjNLanovOGhYMlNGQkczdmRGd01GczlDd0hTWlQyb0hoTEpKTWVm?= =?utf-8?B?RTVCaWtRWnZXMEJaUk9GSkx5QnNUSUFPN1oyWHhnM2VMSThFS0hIWFZJUFBS?= =?utf-8?B?bFR1cnp2ek9MK0ZpbGdCTnBwTVNZOXRwVzltTlhBb0IxZWpWTENWYzlwTFVQ?= =?utf-8?B?QnhYWTdNbEphOGI4aXc3R3AvYWQvQkZNUFVlSTFCd3daK2JrbHJxR3lVZ1NR?= =?utf-8?B?Uk9iRDJpK2xzT0swb1p5UTMwVlY5ZmtXZnNGS05WL2dRMjhieE52Y2xwaEpH?= =?utf-8?B?YlBhODdCQ1lGU0RZOVdwcWhEaUhETGV1MjBkbDlmelk0ZlJoTUg3dzg0RDBI?= =?utf-8?B?cGFtWUdhYXh0eHM4OG5kM1B2ODI1RU5TcmRWdXlSOXhmOExGVzNkTWI4TkVX?= =?utf-8?B?Ynk3cS8xclhGVlBrUHdaZExVaXMxZ1BvZlUwNmd5R0hEeXUreWpnWTFrYVVD?= =?utf-8?Q?2O5yEop4L0I4iIjx/Pjhjklk4MAAPbeS/VvV/ld?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB2767.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: da5904f3-231a-4827-4802-08d921274ad4 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2021 15:51:29.1253 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2dR64nPLEB0begIXFaXMS8ha3QNfoBA5JrGjeK8D/2X7xzbXuaUP9OzuZjLnKdE7S6EBVOyubaVoXtjZht5uQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2687 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org W0FNRCBQdWJsaWMgVXNlXQ0KDQpMb29raW5nIGF0IGt2bSBzZWxmdGVzdHMgaW4gdGhlIGtlcm5l bCwgSSB0aGluayB0aGUgb3RoZXIgYWx0ZXJuYXRpdmUgaXMgdG8gOg0KDQpNYWludGFpbiBzZXBh cmF0ZSBkYXRhIHN0cnVjdHVyZXMgbGlrZSBzdHJ1Y3Qga3ZtX3ZtLCBzdHJ1Y3QgdmNwdSBmb3Ig dGhlIG1pcnJvciBWTSwgYnV0IHRoZW4gdGhhdCBtZWFucyBxdWl0ZSBhIGJpdCBvZiANCnRoZSBL Vk0gY29kZSBpbiBRZW11IGZvciB0aGUgbWlycm9yIFZNIHdpbGwgYmUgZHVwbGljYXRlZC4gDQoN CkZvciBleGFtcGxlLCB0aGlzIHdpbGwgYWRkIHNlcGFyYXRlIGFuZCBkdXBsaWNhdGVkIGZ1bmN0 aW9uYWxpdHkgZm9yIDogDQoNCnZtX2NoZWNrX2NhcC92bV9lbmFibGVfY2FwLA0Kdm1fY3JlYXRl LA0KdmNwdV9ydW4sDQp2Y3B1X2dldF9yZWdzLCB2Y3B1X3NyZWdzX2dldC9zZXQsDQp2Y3B1X2lv Y3RsLA0Kdm1faW9jdGwsIGV0Yy4sIGV0Yy4NCg0KQWxzbyBJIHRoaW5rIHRoYXQgb25jZSB0aGUg bWlycm9yIFZNIHN0YXJ0cyBib290aW5nIGFuZCBydW5uaW5nIHRoZSBVRUZJIGNvZGUsIGl0IG1p Z2h0IGJlIG9ubHkgZHVyaW5nIHRoZSBQRUkgb3IgRFhFIHBoYXNlIHdoZXJlDQppdCB3aWxsIHN0 YXJ0IGFjdHVhbGx5IHJ1bm5pbmcgdGhlIE1IIGNvZGUsIHNvIG1pcnJvciBWTSBwcm9iYWJseSBz dGlsbCBuZWVkIHRvIGhhbmRsZXMgS1ZNX0VYSVRfSU8sIHdoZW4gU0VDIHBoYXNlIGRvZXMgSS9P LA0KSSBjYW4gc2VlIFBJQyBhY2Nlc3NlcyBhbmQgRGVidWcgQWdlbnQgaW5pdGlhbGl6YXRpb24g c3R1ZmYgaW4gU2VjIHN0YXJ0dXAgY29kZS4NCg0KVGhhbmtzLA0KQXNoaXNoDQoNCi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBLYWxyYSwgQXNoaXNoIA0KU2VudDogTW9uZGF5LCBN YXkgMjQsIDIwMjEgNDoyOSBQTQ0KVG86IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5j b20+OyBUb2JpbiBGZWxkbWFuLUZpdHp0aHVtIDx0b2JpbkBsaW51eC5pYm0uY29tPjsgbmF0ZXRA Z29vZ2xlLmNvbQ0KQ2M6IERvdiBNdXJpayA8ZG92bXVyaWtAbGludXgudm5ldC5pYm0uY29tPjsg TGVuZGFja3ksIFRob21hcyA8VGhvbWFzLkxlbmRhY2t5QGFtZC5jb20+OyB4ODZAa2VybmVsLm9y Zzsga3ZtQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgc3J1 dGhlcmZvcmRAZ29vZ2xlLmNvbTsgc2VhbmpjQGdvb2dsZS5jb207IHJpZW50amVzQGdvb2dsZS5j b207IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+OyBMYXN6bG8gRXJzZWsg PGxlcnNla0ByZWRoYXQuY29tPjsgSmFtZXMgQm90dG9tbGV5IDxqZWpiQGxpbnV4LmlibS5jb20+ OyBIdWJlcnR1cyBGcmFua2UgPGZyYW5rZWhAdXMuaWJtLmNvbT47IHFlbXUtZGV2ZWxAbm9uZ251 Lm9yZw0KU3ViamVjdDogUkU6IFtSRkNdIEtWTTogeDg2OiBTdXBwb3J0IEtWTSBWTXMgc2hhcmlu ZyBTRVYgY29udGV4dA0KDQpbQU1EIFB1YmxpYyBVc2VdDQoNCkhlbGxvIFBhb2xvLA0KDQpJIGFt IHdvcmtpbmcgb24gcHJvdG90eXBlIGNvZGUgaW4gcWVtdSB0byBzdGFydCBhIG1pcnJvciBWTSBy dW5uaW5nIGluIHBhcmFsbGVsIHRvIHRoZSBwcmltYXJ5IFZNLiBJbml0aWFsbHkgSSBoYWQgYW4g aWRlYSBvZiBhIHJ1bm5pbmcgYSBjb21wbGV0ZWx5IHBhcmFsbGVsIFZNIGxpa2UgdXNpbmcgdGhl IHFlbXXigJlzIG1pY3Jvdm0gbWFjaGluZS9wbGF0Zm9ybSwgYnV0IHRoZSBtYWluIGlzc3VlIHdp dGggdGhpcyBpZGVhIGlzIHRoZSBkaWZmaWN1bHR5IGluIHNoYXJpbmcgdGhlIG1lbW9yeSBvZiBw cmltYXJ5IFZNIHdpdGggaXQuDQoNCkhlbmNlLCBJIHN0YXJ0ZWQgZXhwbG9yaW5nIHJ1bm5pbmcg YW4gaW50ZXJuYWwgdGhyZWFkIGxpa2UgdGhlIGN1cnJlbnQgcGVyLXZDUFUgdGhyZWFkKHMpIGlu IHFlbXUuIFRoZSBtYWluIGlzc3VlIGlzIHRoYXQgcWVtdSBoYXMgYSBsb3Qgb2YgZ2xvYmFsIHN0 YXRlLCBlc3BlY2lhbGx5IHRoZSBLVk1TdGF0ZSBzdHJ1Y3R1cmUgd2hpY2ggaXMgcGVyLVZNLCBh bmQgYWxsIHRoZSBLVk0gdkNQVXMgYXJlIHZlcnkgdGlnaHRseSB0aWVkIGludG8gaXQuIEl0IGRv ZXMgbm90IG1ha2Ugc2Vuc2UgdG8gYWRkIGEgY29tcGxldGVseSBuZXcgS1ZNU3RhdGUgc3RydWN0 dXJlIGluc3RhbmNlIGZvciB0aGUgbWlycm9yIFZNIGFzIHRoZW4gdGhlIG1pcnJvciBWTSBkb2Vz IG5vdCByZW1haW4gbGlnaHR3ZWlnaHQgYXQgYWxsLiANCg0KSGVuY2UsIHRoZSBtaXJyb3IgVk0g aSBhbSBhZGRpbmcsIGhhcyB0byBpbnRlZ3JhdGUgd2l0aCB0aGUgY3VycmVudCBLVk1TdGF0ZSBz dHJ1Y3R1cmUgYW5kIHRoZSDigJxnbG9iYWzigJ0gS1ZNIHN0YXRlIGluIHFlbXUsIHRoaXMgcmVx dWlyZWQgYWRkaW5nIHNvbWUgcGFyYWxsZWwgS1ZNIGNvZGUgaW4gcWVtdSwgZm9yIGV4YW1wbGUg dG8gZG8gaW9jdGwncyBvbiB0aGUgbWlycm9yIFZNLCBzaW1pbGFyIHRvIHRoZSBwcmltYXJ5IFZN LiBEZXRhaWxzIGJlbG93IDoNCg0KVGhlIG1pcnJvcl92bV9mZCBpcyBhZGRlZCB0byB0aGUgS1ZN U3RhdGUgc3RydWN0dXJlIGl0c2VsZi4gDQoNClRoZSBwYXJhbGxlbCBjb2RlIEkgbWVudGlvbmVk IGlzIGxpa2UgdGhlIGZvbGxvd2luZyA6DQoNCiNkZWZpbmUga3ZtX21pcnJvcl92bV9lbmFibGVf Y2FwKHMsIGNhcGFiaWxpdHksIGNhcF9mbGFncywgLi4uKSAgICAgIFwNCiAgICAoeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CiAgICAgICAgc3RydWN0IGt2bV9lbmFibGVfY2FwIGNhcCA9IHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCiAgICAgICAgICAgIC5jYXAgPSBjYXBhYmlsaXR5LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICAgICAgICAgIC5mbGFncyA9IGNhcF9m bGFncywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCiAgICAgICAgfTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCiAgICAgICAgdWludDY0X3QgYXJnc190bXBbXSA9IHsgX19WQV9BUkdTX18gfTsgICAgICAg ICAgICAgICAgICAgICAgIFwNCiAgICAgICAgc2l6ZV90IG4gPSBNSU4oQVJSQVlfU0laRShhcmdz X3RtcCksIEFSUkFZX1NJWkUoY2FwLmFyZ3MpKTsgIFwNCiAgICAgICAgbWVtY3B5KGNhcC5hcmdz LCBhcmdzX3RtcCwgbiAqIHNpemVvZihjYXAuYXJnc1swXSkpOyAgICAgICAgIFwNCiAgICAgICAg a3ZtX21pcnJvcl92bV9pb2N0bChzLCBLVk1fRU5BQkxFX0NBUCwgJmNhcCk7ICAgICAgICAgICAg ICAgIFwNCiAgICB9KQ0KDQoNCitpbnQga3ZtX21pcnJvcl92bV9pb2N0bChLVk1TdGF0ZSAqcywg aW50IHR5cGUsIC4uLikgew0KKyAgICBpbnQgcmV0Ow0KKyAgICB2b2lkICphcmc7DQorICAgIHZh X2xpc3QgYXA7DQorDQorICAgIHZhX3N0YXJ0KGFwLCB0eXBlKTsNCisgICAgYXJnID0gdmFfYXJn KGFwLCB2b2lkICopOw0KKyAgICB2YV9lbmQoYXApOw0KKw0KKyAgICB0cmFjZV9rdm1fdm1faW9j dGwodHlwZSwgYXJnKTsNCisgICAgcmV0ID0gaW9jdGwocy0+bWlycm9yX3ZtX2ZkLCB0eXBlLCBh cmcpOw0KKyAgICBpZiAocmV0ID09IC0xKSB7DQorICAgICAgICByZXQgPSAtZXJybm87DQorICAg IH0NCisgICAgcmV0dXJuIHJldDsNCit9DQorDQoNClRoZSB2Y3B1IGlvY3RsIGNvZGUgd29ya3Mg YXMgaXQgaXMuIA0KDQpUaGUga3ZtX2FyY2hfcHV0X3JlZ2lzdGVycygpIGFsc28gbmVlZGVkIGEg bWlycm9yIFZNIHZhcmlhbnQga3ZtX2FyY2hfbWlycm9yX3B1dF9yZWdpc3RlcnMoKSwgZm9yIHJl YXNvbnMgc3VjaCBhcyBzYXZpbmcgTVNScyBvbiB0aGUgbWlycm9yIFZNIHJlcXVpcmVkIGVuYWJs aW5nIHRoZSBpbi1rZXJuZWwgaXJxY2hpcCBzdXBwb3J0IG9uIHRoZSBtaXJyb3IgVk0sIG90aGVy d2lzZSwga3ZtX3B1dF9tc3JzKCkgZmFpbHMuIEhlbmNlLCBrdm1fYXJjaF9taXJyb3JfcHV0X3Jl Z2lzdGVycygpIG1ha2VzIHRoZSBtaXJyb3IgVk0gc2ltcGxlciBieSBub3Qgc2F2aW5nIGFueSBN U1JzIGFuZCBub3QgbmVlZGluZyB0aGUgaW4ta2VybmVsIGlycWNoaXAgc3VwcG9ydC4NCg0KSSBo YWQgbG90IG9mIGlzc3VlcyBpbiBkeW5hbWljYWxseSBhZGRpbmcgYSBuZXcgdkNQVSwgaS5lLiwg dGhlIENQVVN0YXRlIHN0cnVjdHVyZSBkdWUgdG8gcWVtdSdzIG9iamVjdCBtb2RlbCAoUU9NKSB3 aGljaCByZXF1aXJlcyB0aGF0IGV2ZXJ5IHFlbXUgc3RydWN0dXJlL29iamVjdCBoYXMgdG8gY29u dGFpbiB0aGUgcGFyZW50L2Jhc2UgY2xhc3Mvb2JqZWN0IGFuZCB0aGVuIGFsbCB0aGUgZGVyaXZl ZCBjbGFzc2VzIGFmdGVyIHRoYXQuIEl0IHdhcyBkaWZmaWN1bHQgdG8gYWRkIGEgbmV3IENQVSBv YmplY3QgZHluYW1pY2FsbHksIGhlbmNlIEkgaGF2ZSB0byByZXVzZSBvbmUgb2YgdGhlIOKAnC1z bXDigJ0gIGNwdXMgcGFzc2VkIG9uIHFlbXUgY29tbWFuZCBsaW5lIGFzIHRoZSBtaXJyb3IgdkNQ VS4gVGhpcyBhbHNvIGFzc2lzdHMgaW4gaGF2aW5nIHRoZSBYODZDUFUgImJhY2tpbmciIHN0cnVj dHVyZSBmb3IgdGhlIG1pcnJvciB2Q1BV4oCZcyBDUFUgb2JqZWN0LCB3aGljaCBhbGxvd3MgdXNp bmcgbW9zdCBvZiB0aGUgS1ZNIGNvZGUgaW4gcWVtdSBmb3IgdGhlIG1pcnJvciB2Q1BVLiBBbHNv IHRoZSBtaXJyb3IgdkNQVSBDUFUgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgQ1BVWDg2U3RhdGUgc3Ry dWN0dXJlIGVtYmVkZGVkIHdoaWNoIGNvbnRhaW5zIHRoZSBjcHUgcmVnaXN0ZXIgc3RhdGUgZm9y IHRoZSBtaXJyb3IgdkNQVS4gDQoNClRoZSBtaXJyb3IgdkNQVSBpcyBub3cgcnVubmluZyBhIHNp bXBsZXIgS1ZNIHJ1biBsb29wLCBpdCBkb2VzIG5vdCBoYXZlIGFueSBpbi1rZXJuZWwgaXJxY2hp cCAoaW50ZXJydXB0IGNvbnRyb2xsZXIpIG9yIGFueSBvdGhlciBrdm1hcGljIGludGVycnVwdCBj b250cm9sbGVyIHN1cHBvcnRlZCBhbmQgZW5hYmxlZCBmb3IgaXQuIEFzIG9mIG5vdyBpdCBpcyBz dGlsbCBkb2luZyBib3RoIEkvTyBhbmQgTU1JTyBoYW5kbGluZy4NCg0KTG9va2luZyBmd2QuIHRv IGNvbW1lbnRzLCBmZWVkYmFjaywgdGhvdWdodHMgb24gdGhlIGFib3ZlIGFwcHJvYWNoLg0KDQpU aGFua3MsDQpBc2hpc2gNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFBhb2xv IEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+DQpTZW50OiBUaHVyc2RheSwgTWFyY2ggMTEs IDIwMjEgMTA6MzAgQU0NClRvOiBUb2JpbiBGZWxkbWFuLUZpdHp0aHVtIDx0b2JpbkBsaW51eC5p Ym0uY29tPjsgbmF0ZXRAZ29vZ2xlLmNvbQ0KQ2M6IERvdiBNdXJpayA8ZG92bXVyaWtAbGludXgu dm5ldC5pYm0uY29tPjsgTGVuZGFja3ksIFRob21hcyA8VGhvbWFzLkxlbmRhY2t5QGFtZC5jb20+ OyB4ODZAa2VybmVsLm9yZzsga3ZtQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIu a2VybmVsLm9yZzsgc3J1dGhlcmZvcmRAZ29vZ2xlLmNvbTsgc2VhbmpjQGdvb2dsZS5jb207IHJp ZW50amVzQGdvb2dsZS5jb207IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+ OyBLYWxyYSwgQXNoaXNoIDxBc2hpc2guS2FscmFAYW1kLmNvbT47IExhc3psbyBFcnNlayA8bGVy c2VrQHJlZGhhdC5jb20+OyBKYW1lcyBCb3R0b21sZXkgPGplamJAbGludXguaWJtLmNvbT47IEh1 YmVydHVzIEZyYW5rZSA8ZnJhbmtlaEB1cy5pYm0uY29tPg0KU3ViamVjdDogUmU6IFtSRkNdIEtW TTogeDg2OiBTdXBwb3J0IEtWTSBWTXMgc2hhcmluZyBTRVYgY29udGV4dA0KDQpPbiAxMS8wMy8y MSAxNjozMCwgVG9iaW4gRmVsZG1hbi1GaXR6dGh1bSB3cm90ZToNCj4gSSBhbSBub3Qgc3VyZSBo b3cgdGhlIG1pcnJvciBWTSB3aWxsIGJlIHN1cHBvcnRlZCBpbiBRRU1VLiBVc3VhbGx5IA0KPiB0 aGVyZSBpcyBvbmUgUUVNVSBwcm9jZXNzIHBlci12bS4gTm93IHdlIHdvdWxkIG5lZWQgdG8gcnVu IGEgc2Vjb25kIFZNIA0KPiBhbmQgY29tbXVuaWNhdGUgd2l0aCBpdCBkdXJpbmcgbWlncmF0aW9u LiBJcyB0aGVyZSBhIHdheSB0byBkbyB0aGlzIA0KPiB3aXRob3V0IGFkZGluZyBzaWduaWZpY2Fu dCBjb21wbGV4aXR5Pw0KDQpJIGNhbiBhbnN3ZXIgdGhpcyBwYXJ0LiAgSSB0aGluayB0aGlzIHdp bGwgYWN0dWFsbHkgYmUgc2ltcGxlciB0aGFuIHdpdGggYXV4aWxpYXJ5IHZDUFVzLiAgVGhlcmUg d2lsbCBiZSBhIHNlcGFyYXRlIHBhaXIgb2YgVk0rdkNQVSBmaWxlIGRlc2NyaXB0b3JzIHdpdGhp biB0aGUgc2FtZSBRRU1VIHByb2Nlc3MsIGFuZCBzb21lIGNvZGUgdG8gc2V0IHVwIHRoZSBtZW1v cnkgbWFwIHVzaW5nIEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OLg0KDQpIb3dldmVyLCB0aGUg Y29kZSB0byBydW4gdGhpcyBWTSB3aWxsIGJlIHZlcnkgc21hbGwgYXMgdGhlIFZNIGRvZXMgbm90 IGhhdmUgdG8gZG8gTU1JTywgaW50ZXJydXB0cywgbGl2ZSBtaWdyYXRpb24gKG9mIGl0c2VsZiks IGV0Yy4gIEl0IGp1c3Qgc3RhcnRzIHVwIGFuZCBjb21tdW5pY2F0ZXMgd2l0aCBRRU1VIHVzaW5n IGEgbWFpbGJveCBhdCBhIHByZWRldGVybWluZWQgYWRkcmVzcy4NCg0KSSBhbHNvIHRoaW5rIChi dXQgSSdtIG5vdCAxMDAlIHN1cmUpIHRoYXQgdGhlIGF1eGlsaWFyeSBWTSBkb2VzIG5vdCBoYXZl IHRvIHdhdGNoIGNoYW5nZXMgaW4gdGhlIHByaW1hcnkgVk0ncyBtZW1vcnkgbWFwIChlLmcuIG1h cHBpbmcgYW5kIHVubWFwcGluZyBvZiBCQVJzKS4gIEluIFFFTVUgdGVybXMsIHRoZSBhdXhpbGlh cnkgVk0ncyBtZW1vcnkgbWFwIHRyYWNrcyBSQU1CbG9ja3MsIG5vdCBNZW1vcnlSZWdpb25zLCB3 aGljaCBtYWtlcyB0aGluZ3MgbXVjaCBzaW1wbGVyLg0KDQpUaGVyZSBhcmUgYWxyZWFkeSBtYW55 IGV4YW1wbGVzIG9mIG1pbmkgVk1NcyBydW5uaW5nIHNwZWNpYWwgcHVycG9zZSBWTXMgaW4gdGhl IGtlcm5lbCdzIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bSBkaXJlY3RvcnksIGFuZCBJIGRv bid0IHRoaW5rIHRoZSBRRU1VIGNvZGUgd291bGQgYmUgYW55IG1vcmUgY29tcGxleCB0aGFuIHRo YXQuDQoNClBhb2xvDQo=