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.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,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 58F63C47094 for ; Thu, 10 Jun 2021 06:53:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2E3BB613E2 for ; Thu, 10 Jun 2021 06:53:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229778AbhFJGzs (ORCPT ); Thu, 10 Jun 2021 02:55:48 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:31200 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229725AbhFJGzr (ORCPT ); Thu, 10 Jun 2021 02:55:47 -0400 Received: from pps.filterd (m0098414.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15A6XFRe179803; Thu, 10 Jun 2021 02:53:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=Zpyy7GdEdJB+ws0/NSpA6v98MDlU7R6ucXpSF+9fNkE=; b=HYRriYwRoKCguEqNgUZ14OUrgnXBJEpiJ/5jkbnzi7KmIMbm4pWDi4cj7H8++0ZwL9HQ 1zqNWCKFz6faxWv2F1paNDVfsyhbVS2ifa0jPGdmQNS8QalpZcn4J9iqoQJftxz2V1Bk XJb9jHG+jYh4ctUKGxdQu+sTj9rJ0LZyz6cRq2rv7hYe4v1YtDISMaGXW2Cl3EJCyqJu JMp95V/GhjeOh7o/X1gqv2GdIU7BHnzqW9VxkCjpJlJU9yNoAC2m6x7fBfth47GauTeJ 9rnGBd1AFnUtsr2PRDQQ34UjYqpiBWROdeRCRiFDUFGqK1bOiPwBM8JR+lJUgVdNtnVt mA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 393c29tm06-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Jun 2021 02:53:49 -0400 Received: from m0098414.ppops.net (m0098414.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 15A6XVfu180452; Thu, 10 Jun 2021 02:53:48 -0400 Received: from ppma01fra.de.ibm.com (46.49.7a9f.ip4.static.sl-reverse.com [159.122.73.70]) by mx0b-001b2d01.pphosted.com with ESMTP id 393c29tkyn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Jun 2021 02:53:48 -0400 Received: from pps.filterd (ppma01fra.de.ibm.com [127.0.0.1]) by ppma01fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 15A6prLS003304; Thu, 10 Jun 2021 06:53:46 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma01fra.de.ibm.com with ESMTP id 3936ns02xy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Jun 2021 06:53:46 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 15A6rieP31130102 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Jun 2021 06:53:44 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 66BB5AE051; Thu, 10 Jun 2021 06:53:44 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BED54AE053; Thu, 10 Jun 2021 06:53:43 +0000 (GMT) Received: from oc7455500831.ibm.com (unknown [9.171.13.5]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 10 Jun 2021 06:53:43 +0000 (GMT) Subject: Re: [PATCH 00/10] KVM: Add idempotent controls for migrating system counter state To: Paolo Bonzini , Oliver Upton Cc: kvm list , kvmarm@lists.cs.columbia.edu, Maxim Levitsky , Sean Christopherson , Marc Zyngier , Peter Shier , Jim Mattson , David Matlack , Ricardo Koller , Jing Zhang , Raghavendra Rao Anata References: <20210608214742.1897483-1-oupton@google.com> <63db3823-b8a3-578d-4baa-146104bb977f@redhat.com> <7b57ce79-6a17-70ac-4639-47a0df463e49@redhat.com> From: Christian Borntraeger Message-ID: Date: Thu, 10 Jun 2021 08:53:43 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <7b57ce79-6a17-70ac-4639-47a0df463e49@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: d2yPKyqtH_-uvpCfYSewkVKVe2Ifw3Od X-Proofpoint-ORIG-GUID: 1uBaAxvYHv7HwtGU5kMIO2iNMoRh2MET X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.761 definitions=2021-06-10_03:2021-06-10,2021-06-10 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 impostorscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 adultscore=0 clxscore=1011 spamscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106100041 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On 10.06.21 08:22, Paolo Bonzini wrote: > On 10/06/21 00:04, Oliver Upton wrote: >>> Your approach still needs to use the "quirky" approach to host-initiated >>> MSR_IA32_TSC_ADJUST writes, which write the MSR without affecting the >>> VMCS offset.  This is just a documentation issue. >> >> My suggested ioctl for the vCPU will still exist, and it will still >> affect the VMCS tsc offset, right? However, we need to do one of the >> following: >> >> - Stash the guest's MSR_IA32_TSC_ADJUST value in the >> kvm_system_counter_state structure. During >> KVM_SET_SYSTEM_COUNTER_STATE, check to see if the field is valid. If >> so, treat it as a dumb value (i.e. show it to the guest but don't fold >> it into the offset). > > Yes, it's already folded into the guestTSC-hostTSC offset that the caller provides. > >> - Inform userspace that it must still migrate MSR_IA32_TSC_ADJUST, and >> continue to our quirky behavior around host-initiated writes of the >> MSR. >> >> This is why Maxim's spin migrated a value for IA32_TSC_ADJUST, right? > > Yes, so that he could then remove (optionally) the quirk for host-initiated writes to the TSC and TSC_ADJUST MSRs. > >> Doing so ensures we don't have any guest-observable consequences due >> to our migration of TSC state. To me, adding the guest IA32_TSC_ADJUST >> MSR into the new counter state structure is probably best. No strong >> opinions in either direction on this point, though:) > > Either is good for me, since documentation will be very important either way.  This is a complex API to use due to the possibility of skewed TSCs. > > Just one thing, please don't introduce a new ioctl and use KVM_GET_DEVICE_ATTR/KVM_SET_DEVICE_ATTR/KVM_HAS_DEVICE_ATTR. > > Christian, based on what Oliver mentions here, it's probably useful for s390 to have functionality to get/set kvm->arch.epoch and kvm->arch.epdx in addition to the absolute TOD values that you are migrating now. Yes, a scheme where we migrate the offsets (assuming that the hosts are synced) would be often better. If the hosts are not synced, things will be harder. I will have a look at this series, Thanks for the pointer. 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.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 833B4C48BCD for ; Thu, 10 Jun 2021 06:53:55 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id EA9BD613E2 for ; Thu, 10 Jun 2021 06:53:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EA9BD613E2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=de.ibm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 61072407EF; Thu, 10 Jun 2021 02:53:54 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Authentication-Results: mm01.cs.columbia.edu (amavisd-new); dkim=softfail (fail, message has been altered) header.i=@ibm.com Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DhbxXOMPl98I; Thu, 10 Jun 2021 02:53:53 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 4C65C4086A; Thu, 10 Jun 2021 02:53:53 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id F3DA5407EF for ; Thu, 10 Jun 2021 02:53:51 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ihX-y6+1iOYA for ; Thu, 10 Jun 2021 02:53:51 -0400 (EDT) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 0326340617 for ; Thu, 10 Jun 2021 02:53:50 -0400 (EDT) Received: from pps.filterd (m0098414.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15A6XFRe179803; Thu, 10 Jun 2021 02:53:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=pp1; bh=Zpyy7GdEdJB+ws0/NSpA6v98MDlU7R6ucXpSF+9fNkE=; b=HYRriYwRoKCguEqNgUZ14OUrgnXBJEpiJ/5jkbnzi7KmIMbm4pWDi4cj7H8++0ZwL9HQ 1zqNWCKFz6faxWv2F1paNDVfsyhbVS2ifa0jPGdmQNS8QalpZcn4J9iqoQJftxz2V1Bk XJb9jHG+jYh4ctUKGxdQu+sTj9rJ0LZyz6cRq2rv7hYe4v1YtDISMaGXW2Cl3EJCyqJu JMp95V/GhjeOh7o/X1gqv2GdIU7BHnzqW9VxkCjpJlJU9yNoAC2m6x7fBfth47GauTeJ 9rnGBd1AFnUtsr2PRDQQ34UjYqpiBWROdeRCRiFDUFGqK1bOiPwBM8JR+lJUgVdNtnVt mA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 393c29tm06-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Jun 2021 02:53:49 -0400 Received: from m0098414.ppops.net (m0098414.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 15A6XVfu180452; Thu, 10 Jun 2021 02:53:48 -0400 Received: from ppma01fra.de.ibm.com (46.49.7a9f.ip4.static.sl-reverse.com [159.122.73.70]) by mx0b-001b2d01.pphosted.com with ESMTP id 393c29tkyn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Jun 2021 02:53:48 -0400 Received: from pps.filterd (ppma01fra.de.ibm.com [127.0.0.1]) by ppma01fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 15A6prLS003304; Thu, 10 Jun 2021 06:53:46 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma01fra.de.ibm.com with ESMTP id 3936ns02xy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Jun 2021 06:53:46 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 15A6rieP31130102 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Jun 2021 06:53:44 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 66BB5AE051; Thu, 10 Jun 2021 06:53:44 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BED54AE053; Thu, 10 Jun 2021 06:53:43 +0000 (GMT) Received: from oc7455500831.ibm.com (unknown [9.171.13.5]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 10 Jun 2021 06:53:43 +0000 (GMT) Subject: Re: [PATCH 00/10] KVM: Add idempotent controls for migrating system counter state To: Paolo Bonzini , Oliver Upton References: <20210608214742.1897483-1-oupton@google.com> <63db3823-b8a3-578d-4baa-146104bb977f@redhat.com> <7b57ce79-6a17-70ac-4639-47a0df463e49@redhat.com> From: Christian Borntraeger Message-ID: Date: Thu, 10 Jun 2021 08:53:43 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <7b57ce79-6a17-70ac-4639-47a0df463e49@redhat.com> Content-Language: en-US X-TM-AS-GCONF: 00 X-Proofpoint-GUID: d2yPKyqtH_-uvpCfYSewkVKVe2Ifw3Od X-Proofpoint-ORIG-GUID: 1uBaAxvYHv7HwtGU5kMIO2iNMoRh2MET X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.761 definitions=2021-06-10_03:2021-06-10, 2021-06-10 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 impostorscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 adultscore=0 clxscore=1011 spamscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106100041 Cc: kvm list , Sean Christopherson , Raghavendra Rao Anata , Peter Shier , Maxim Levitsky , Marc Zyngier , David Matlack , kvmarm@lists.cs.columbia.edu, Jim Mattson X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu CgpPbiAxMC4wNi4yMSAwODoyMiwgUGFvbG8gQm9uemluaSB3cm90ZToKPiBPbiAxMC8wNi8yMSAw MDowNCwgT2xpdmVyIFVwdG9uIHdyb3RlOgo+Pj4gWW91ciBhcHByb2FjaCBzdGlsbCBuZWVkcyB0 byB1c2UgdGhlICJxdWlya3kiIGFwcHJvYWNoIHRvIGhvc3QtaW5pdGlhdGVkCj4+PiBNU1JfSUEz Ml9UU0NfQURKVVNUIHdyaXRlcywgd2hpY2ggd3JpdGUgdGhlIE1TUiB3aXRob3V0IGFmZmVjdGlu ZyB0aGUKPj4+IFZNQ1Mgb2Zmc2V0LsKgIFRoaXMgaXMganVzdCBhIGRvY3VtZW50YXRpb24gaXNz dWUuCj4+Cj4+IE15IHN1Z2dlc3RlZCBpb2N0bCBmb3IgdGhlIHZDUFUgd2lsbCBzdGlsbCBleGlz dCwgYW5kIGl0IHdpbGwgc3RpbGwKPj4gYWZmZWN0IHRoZSBWTUNTIHRzYyBvZmZzZXQsIHJpZ2h0 PyBIb3dldmVyLCB3ZSBuZWVkIHRvIGRvIG9uZSBvZiB0aGUKPj4gZm9sbG93aW5nOgo+Pgo+PiAt IFN0YXNoIHRoZSBndWVzdCdzIE1TUl9JQTMyX1RTQ19BREpVU1QgdmFsdWUgaW4gdGhlCj4+IGt2 bV9zeXN0ZW1fY291bnRlcl9zdGF0ZSBzdHJ1Y3R1cmUuIER1cmluZwo+PiBLVk1fU0VUX1NZU1RF TV9DT1VOVEVSX1NUQVRFLCBjaGVjayB0byBzZWUgaWYgdGhlIGZpZWxkIGlzIHZhbGlkLiBJZgo+ PiBzbywgdHJlYXQgaXQgYXMgYSBkdW1iIHZhbHVlIChpLmUuIHNob3cgaXQgdG8gdGhlIGd1ZXN0 IGJ1dCBkb24ndCBmb2xkCj4+IGl0IGludG8gdGhlIG9mZnNldCkuCj4gCj4gWWVzLCBpdCdzIGFs cmVhZHkgZm9sZGVkIGludG8gdGhlIGd1ZXN0VFNDLWhvc3RUU0Mgb2Zmc2V0IHRoYXQgdGhlIGNh bGxlciBwcm92aWRlcy4KPiAKPj4gLSBJbmZvcm0gdXNlcnNwYWNlIHRoYXQgaXQgbXVzdCBzdGls bCBtaWdyYXRlIE1TUl9JQTMyX1RTQ19BREpVU1QsIGFuZAo+PiBjb250aW51ZSB0byBvdXIgcXVp cmt5IGJlaGF2aW9yIGFyb3VuZCBob3N0LWluaXRpYXRlZCB3cml0ZXMgb2YgdGhlCj4+IE1TUi4K Pj4KPj4gVGhpcyBpcyB3aHkgTWF4aW0ncyBzcGluIG1pZ3JhdGVkIGEgdmFsdWUgZm9yIElBMzJf VFNDX0FESlVTVCwgcmlnaHQ/Cj4gCj4gWWVzLCBzbyB0aGF0IGhlIGNvdWxkIHRoZW4gcmVtb3Zl IChvcHRpb25hbGx5KSB0aGUgcXVpcmsgZm9yIGhvc3QtaW5pdGlhdGVkIHdyaXRlcyB0byB0aGUg VFNDIGFuZCBUU0NfQURKVVNUIE1TUnMuCj4gCj4+IERvaW5nIHNvIGVuc3VyZXMgd2UgZG9uJ3Qg aGF2ZSBhbnkgZ3Vlc3Qtb2JzZXJ2YWJsZSBjb25zZXF1ZW5jZXMgZHVlCj4+IHRvIG91ciBtaWdy YXRpb24gb2YgVFNDIHN0YXRlLiBUbyBtZSwgYWRkaW5nIHRoZSBndWVzdCBJQTMyX1RTQ19BREpV U1QKPj4gTVNSIGludG8gdGhlIG5ldyBjb3VudGVyIHN0YXRlIHN0cnVjdHVyZSBpcyBwcm9iYWJs eSBiZXN0LiBObyBzdHJvbmcKPj4gb3BpbmlvbnMgaW4gZWl0aGVyIGRpcmVjdGlvbiBvbiB0aGlz IHBvaW50LCB0aG91Z2g6KQo+IAo+IEVpdGhlciBpcyBnb29kIGZvciBtZSwgc2luY2UgZG9jdW1l bnRhdGlvbiB3aWxsIGJlIHZlcnkgaW1wb3J0YW50IGVpdGhlciB3YXkuwqAgVGhpcyBpcyBhIGNv bXBsZXggQVBJIHRvIHVzZSBkdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHNrZXdlZCBUU0NzLgo+ IAo+IEp1c3Qgb25lIHRoaW5nLCBwbGVhc2UgZG9uJ3QgaW50cm9kdWNlIGEgbmV3IGlvY3RsIGFu ZCB1c2UgS1ZNX0dFVF9ERVZJQ0VfQVRUUi9LVk1fU0VUX0RFVklDRV9BVFRSL0tWTV9IQVNfREVW SUNFX0FUVFIuCj4gCj4gQ2hyaXN0aWFuLCBiYXNlZCBvbiB3aGF0IE9saXZlciBtZW50aW9ucyBo ZXJlLCBpdCdzIHByb2JhYmx5IHVzZWZ1bCBmb3IgczM5MCB0byBoYXZlIGZ1bmN0aW9uYWxpdHkg dG8gZ2V0L3NldCBrdm0tPmFyY2guZXBvY2ggYW5kIGt2bS0+YXJjaC5lcGR4IGluIGFkZGl0aW9u IHRvIHRoZSBhYnNvbHV0ZSBUT0QgdmFsdWVzIHRoYXQgeW91IGFyZSBtaWdyYXRpbmcgbm93LgoK WWVzLCBhIHNjaGVtZSB3aGVyZSB3ZSBtaWdyYXRlIHRoZSBvZmZzZXRzIChhc3N1bWluZyB0aGF0 IHRoZSBob3N0cyBhcmUgc3luY2VkKSB3b3VsZCBiZSBvZnRlbiBiZXR0ZXIuCklmIHRoZSBob3N0 cyBhcmUgbm90IHN5bmNlZCwgdGhpbmdzIHdpbGwgYmUgaGFyZGVyLiBJIHdpbGwgaGF2ZSBhIGxv b2sgYXQgdGhpcyBzZXJpZXMsIFRoYW5rcyBmb3IgdGhlIHBvaW50ZXIuCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3Zt YXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9t YWlsbWFuL2xpc3RpbmZvL2t2bWFybQo=