From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.61]) by mx.groups.io with SMTP id smtpd.web12.232.1582755151402646866 for ; Wed, 26 Feb 2020 14:12:31 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=BN2pE0YY; spf=pass (domain: redhat.com, ip: 205.139.110.61, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582755150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fQhVWQYDpAEnxOqjMxLadKWBeWCuk/IQGrE/FswcD88=; b=BN2pE0YYfJAqJkcHKvNEhSIST4FplZHHucMg2ORL78WaliaabVd7D85pwDtfTdBKr+MPar j12eRaF+Gj+J+fKVzM6qu5X3pGE9XIIbEpPLpz8+eHTlWkFRHBKnFhqk/ftrCTWXNPzATf taCYAiYjPyn24BJHNznj+j86lPmKwQI= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-28-pHhiLQ_jPlSKbcL3ITP7MQ-1; Wed, 26 Feb 2020 17:12:28 -0500 X-MC-Unique: pHhiLQ_jPlSKbcL3ITP7MQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8CDD91005516; Wed, 26 Feb 2020 22:12:27 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-185.ams2.redhat.com [10.36.116.185]) by smtp.corp.redhat.com (Postfix) with ESMTP id D2E19909E9; Wed, 26 Feb 2020 22:12:25 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Igor Mammedov , Jiewen Yao , Jordan Justen , Michael Kinney , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 11/16] OvmfPkg/CpuHotplugSmm: introduce Post-SMM Pen for hot-added CPUs Date: Wed, 26 Feb 2020 23:11:51 +0100 Message-Id: <20200226221156.29589-12-lersek@redhat.com> In-Reply-To: <20200226221156.29589-1-lersek@redhat.com> References: <20200226221156.29589-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 T25jZSBhIGhvdC1hZGRlZCBDUFUgZmluaXNoZXMgdGhlIFNNQkFTRSByZWxvY2F0aW9uLCB3ZSBu ZWVkIHRvIHBlbiBpdCBpbgphIEhMVCBsb29wLiBBZGQgdGhlIE5BU00gaW1wbGVtZW50YXRpb24g KHdpdGgganVzdCBhIGhhbmRmdWwgb2YKaW5zdHJ1Y3Rpb25zLCBidXQgbXVjaCBkb2N1bWVudGF0 aW9uKSwgYW5kIHNvbWUgQyBsYW5ndWFnZSBoZWxwZXIKZnVuY3Rpb25zLgoKQ2M6IEFyZCBCaWVz aGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPgpDYzogSWdvciBNYW1tZWRvdiA8aW1h bW1lZG9AcmVkaGF0LmNvbT4KQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPgpD YzogSm9yZGFuIEp1c3RlbiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KQ2M6IE1pY2hhZWwg S2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4KQ2M6IFBoaWxpcHBlIE1hdGhpZXUt RGF1ZMOpIDxwaGlsbWRAcmVkaGF0LmNvbT4KUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29y ZS5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxs ZXJzZWtAcmVkaGF0LmNvbT4KLS0tCgpOb3RlczoKICAgIHYyOgogICAgCiAgICAtIGRvY3VtZW50 IHRoZSBjb21iaW5lZCBhcHByb2FjaCBkZXNjcmliZWQgaGVyZToKICAgIAogICAgICBodHRwOi8v bWlkLm1haWwtYXJjaGl2ZS5jb20vMTExMTQ1ZmMtYmUzZC0yYTlhLWExMjYtYzE0MzQ1YThhOGE0 QHJlZGhhdC5jb20KICAgICAgaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2Uv NTQ3NTQKICAgIAogICAgICBieSBtZW50aW9uaW5nIHRoZSAiYWJvdXQgdG8gbGVhdmUgU01NIiBi eXRlIGluIFNNUkFNLgoKIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVIb3RwbHVnU21tLmluZiB8 ICAgNCArCiBPdm1mUGtnL0NwdUhvdHBsdWdTbW0vU21iYXNlLmggICAgICAgICAgfCAgMzIgKysr KysKIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9Qb3N0U21tUGVuLm5hc20gICB8IDE1MSArKysrKysr KysrKysrKysrKysrKwogT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1NtYmFzZS5jICAgICAgICAgIHwg MTEwICsrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mIGIvT3Zt ZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mCmluZGV4IDMxYzFlZTFjOWY2ZC4u YmY0MTYyMjk5YzdjIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vQ3B1SG90cGx1 Z1NtbS5pbmYKKysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mCkBA IC01LDUyICs1LDU2IEBACiAjDQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KICMjDQogDQogW0RlZmluZXNdDQogICBJTkZfVkVSU0lPTiAgICAgICAgICAg ICAgICA9IDEuMjkNCiAgIFBJX1NQRUNJRklDQVRJT05fVkVSU0lPTiAgID0gMHgwMDAxMDA0NiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBJLTEuNy4wDQogICBCQVNFX05BTUUgICAgICAg ICAgICAgICAgICA9IENwdUhvdHBsdWdTbW0NCiAgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAg ID0gODRFRUExMTQtQzZCRS00NDQ1LThGOTAtNTFEOTc4NjNFMzYzDQogICBNT0RVTEVfVFlQRSAg ICAgICAgICAgICAgICA9IERYRV9TTU1fRFJJVkVSDQogICBFTlRSWV9QT0lOVCAgICAgICAgICAg ICAgICA9IENwdUhvdHBsdWdFbnRyeQ0KIA0KICMNCiAjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRp b24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1aWxkDQog IyB0b29scy4NCiAjDQogIyBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICA9IElBMzIgWDY0DQog Iw0KIA0KIFtTb3VyY2VzXQ0KICAgQXBpY0lkLmgNCiAgIENwdUhvdHBsdWcuYw0KKyAgUG9zdFNt bVBlbi5uYXNtDQogICBRZW11Q3B1aHAuYw0KICAgUWVtdUNwdWhwLmgNCisgIFNtYmFzZS5jDQor ICBTbWJhc2UuaA0KIA0KIFtQYWNrYWdlc10NCiAgIE1kZVBrZy9NZGVQa2cuZGVjDQogICBPdm1m UGtnL092bWZQa2cuZGVjDQogICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQogDQogW0xpYnJh cnlDbGFzc2VzXQ0KICAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KICAgRGVidWdMaWINCiAg IE1tU2VydmljZXNUYWJsZUxpYg0KICAgUGNkTGliDQogICBTYWZlSW50TGliDQogICBVZWZpRHJp dmVyRW50cnlQb2ludA0KIA0KIFtQcm90b2NvbHNdDQogICBnRWZpTW1DcHVJb1Byb3RvY29sR3Vp ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0K ICAgZ0VmaVNtbUNwdVNlcnZpY2VQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyMgQ09OU1VNRVMNCiANCiBbUGNkXQ0KICAgZ1VlZmlDcHVQa2dUb2tlblNw YWNlR3VpZC5QY2RDcHVIb3RQbHVnRGF0YUFkZHJlc3MgICAgICAgICAgICAgICAgIyMgQ09OU1VN RVMNCiAgIGdVZWZpT3ZtZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZFEzNVNtcmFtQXREZWZhdWx0U21i YXNlICAgICAgICAgICAgICMjIENPTlNVTUVTDQogDQogW0ZlYXR1cmVQY2RdDQogICBnVWVmaU92 bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVpcmUgICAgICAgICAgICAgICAgICAg ICAjIyBDT05TVU1FUw0KIA0KIFtEZXBleF0NCiAgIGdFZmlNbUNwdUlvUHJvdG9jb2xHdWlkIEFO RA0KICAgZ0VmaVNtbUNwdVNlcnZpY2VQcm90b2NvbEd1aWQNCmRpZmYgLS1naXQgYS9Pdm1mUGtn L0NwdUhvdHBsdWdTbW0vU21iYXNlLmggYi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vU21iYXNlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYjVhZWQ5OGNkZDMKLS0t IC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vU21iYXNlLmgKQEAgLTAsMCAr MSwzMiBAQAorLyoqIEBmaWxlDQorICBTTUJBU0UgcmVsb2NhdGlvbiBmb3IgaG90LXBsdWdnZWQg Q1BVcy4NCisNCisgIENvcHlyaWdodCAoYykgMjAyMCwgUmVkIEhhdCwgSW5jLg0KKw0KKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaWZu ZGVmIFNNQkFTRV9IXw0KKyNkZWZpbmUgU01CQVNFX0hfDQorDQorI2luY2x1ZGUgPFVlZmkvVWVm aUJhc2VUeXBlLmg+IC8vIEVGSV9TVEFUVVMNCisjaW5jbHVkZSA8VWVmaS9VZWZpU3BlYy5oPiAg ICAgLy8gRUZJX0JPT1RfU0VSVklDRVMNCisNCitFRklfU1RBVFVTDQorU21iYXNlQWxsb2NhdGVQ b3N0U21tUGVuICgNCisgIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAgICAqUGVuQWRkcmVzcywN CisgIElOICBDT05TVCBFRklfQk9PVF9TRVJWSUNFUyAqQm9vdFNlcnZpY2VzDQorICApOw0KKw0K K1ZPSUQNCitTbWJhc2VSZWluc3RhbGxQb3N0U21tUGVuICgNCisgIElOIFVJTlQzMiBQZW5BZGRy ZXNzDQorICApOw0KKw0KK1ZPSUQNCitTbWJhc2VSZWxlYXNlUG9zdFNtbVBlbiAoDQorICBJTiBV SU5UMzIgICAgICAgICAgICAgICAgICBQZW5BZGRyZXNzLA0KKyAgSU4gQ09OU1QgRUZJX0JPT1Rf U0VSVklDRVMgKkJvb3RTZXJ2aWNlcw0KKyAgKTsNCisNCisjZW5kaWYgLy8gU01CQVNFX0hfDQpk aWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1Bvc3RTbW1QZW4ubmFzbSBiL092bWZQ a2cvQ3B1SG90cGx1Z1NtbS9Qb3N0U21tUGVuLm5hc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5lZjcwMjY4OWJkYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtn L0NwdUhvdHBsdWdTbW0vUG9zdFNtbVBlbi5uYXNtCkBAIC0wLDAgKzEsMTUxIEBACis7LS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorOyBAZmlsZQ0KKzsgUGVuIGFueSBob3QtYWRkZWQgQ1BVIGluIGEg MTYtYml0LCByZWFsIG1vZGUgSExUIGxvb3AsIGFmdGVyIGl0IGxlYXZlcyBTTU0gYnkNCis7IGV4 ZWN1dGluZyB0aGUgUlNNIGluc3RydWN0aW9uLg0KKzsNCis7IENvcHlyaWdodCAoYykgMjAyMCwg UmVkIEhhdCwgSW5jLg0KKzsNCis7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQorOw0KKzsgVGhlIHJvdXRpbmUgaW1wbGVtZW50ZWQgaGVyZSBpcyBzdG9yZWQg aW50byBub3JtYWwgUkFNLCB1bmRlciAxTUIsIGF0IHRoZQ0KKzsgYmVnaW5uaW5nIG9mIGEgcGFn ZSB0aGF0IGlzIGFsbG9jYXRlZCBhcyBFZmlSZXNlcnZlZE1lbW9yeVR5cGUuIE9uIGFueQ0KKzsg aG90LWFkZGVkIENQVSwgaXQgaXMgZXhlY3V0ZWQgYWZ0ZXIgKmF0IGxlYXN0KiB0aGUgZmlyc3Qg UlNNIChpLmUuLCBhZnRlcg0KKzsgU01CQVNFIHJlbG9jYXRpb24pLg0KKzsNCis7IFRoZSBmaXJz dCBleGVjdXRpb24gb2YgdGhpcyBjb2RlIG9jY3VycyBhcyBmb2xsb3dzOg0KKzsNCis7IC0gVGhl IGhvdC1hZGRlZCBDUFUgaXMgaW4gUkVTRVQgc3RhdGUuDQorOw0KKzsgLSBUaGUgQUNQSSBDUFUg aG90cGx1ZyBldmVudCBoYW5kbGVyIHRyaWdnZXJzIGEgYnJvYWRjYXN0IFNNSSwgZnJvbSB0aGUg T1MuDQorOw0KKzsgLSBFeGlzdGVudCBDUFVzIChCU1AgYW5kIEFQcykgZW50ZXIgU01NLg0KKzsN Cis7IC0gVGhlIGhvdC1hZGRlZCBDUFUgcmVtYWlucyBpbiBSRVNFVCBzdGF0ZSwgYnV0IGFuIFNN SSBpcyBwZW5kaW5nIGZvciBpdCBub3cuDQorOyAgIChTZWUgIlNZU1RFTSBNQU5BR0VNRU5UIElO VEVSUlVQVCAoU01JKSIgaW4gdGhlIEludGVsIFNETS4pDQorOw0KKzsgLSBJbiBTTU0sIHByZS1l eGlzdGVudCBDUFVzIHRoYXQgYXJlIG5vdCBlbGVjdGVkIFNNTSBNb25hcmNoLCBrZWVwIHRoZW1z ZWx2ZXMNCis7ICAgYnVzeSB3aXRoIHRoZWlyIHdhaXQgbG9vcHMuDQorOw0KKzsgLSBGcm9tIHRo ZSByb290IE1NSSBoYW5kbGVyLCB0aGUgU01NIE1vbmFyY2g6DQorOw0KKzsgICAtIHBsYWNlcyB0 aGlzIHJvdXRpbmUgaW4gdGhlIHJlc2VydmVkIHBhZ2UsDQorOw0KKzsgICAtIGNsZWFycyB0aGUg ImFib3V0IHRvIGxlYXZlIFNNTSIgYnl0ZSBpbiBTTVJBTSwNCis7DQorOyAgIC0gY2xlYXJzIHRo ZSBsYXN0IGJ5dGUgb2YgdGhlIHJlc2VydmVkIHBhZ2UsDQorOw0KKzsgICAtIHNlbmRzIGFuIElO SVQtU0lQSS1TSVBJIHNlcXVlbmNlIHRvIHRoZSBob3QtYWRkZWQgQ1BVLA0KKzsNCis7ICAgLSB1 bi1nYXRlcyB0aGUgZGVmYXVsdCBTTUkgaGFuZGxlciBieSBBUElDIElELg0KKzsNCis7IC0gVGhl IHN0YXJ0dXAgdmVjdG9yIGluIHRoZSBTSVBJIHRoYXQgaXMgc2VudCBieSB0aGUgU01NIE1vbmFy Y2ggcG9pbnRzIHRvDQorOyAgIHRoaXMgY29kZTsgaS5lLiwgdG8gdGhlIHJlc2VydmVkIHBhZ2Uu IChFeGFtcGxlOiAweDlfRjAwMC4pDQorOw0KKzsgLSBUaGUgU01NIE1vbmFyY2ggc3RhcnRzIHBv bGxpbmcgdGhlICJhYm91dCB0byBsZWF2ZSBTTU0iIGJ5dGUgaW4gU01SQU0uDQorOw0KKzsgLSBU aGUgaG90LWFkZGVkIENQVSBib290cywgYW5kIGltbWVkaWF0ZWx5IGVudGVycyBTTU0gZHVlIHRv IHRoZSBwZW5kaW5nIFNNSS4NCis7ICAgSXQgc3RhcnRzIGV4ZWN1dGluZyB0aGUgZGVmYXVsdCBT TUkgaGFuZGxlci4NCis7DQorOyAtIEltcG9ydGFudGx5LCB0aGUgU01SQU0gU2F2ZSBTdGF0ZSBN YXAgY2FwdHVyZXMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiwNCis7ICAgd2hlbiB0aGUgaG90 LWFkZGVkIENQVSBlbnRlcnMgU01NOg0KKzsNCis7ICAgLSBDUyBzZWxlY3RvcjogYXNzdW1lcyB0 aGUgMTYgbW9zdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSAyMC1iaXQgKGkuZS4sDQorOyAgICAg YmVsb3cgMU1CKSBzdGFydHVwIHZlY3RvciBmcm9tIHRoZSBTSVBJLiAoRXhhbXBsZTogMHg5RjAw LikNCis7DQorOyAgIC0gQ1MgYXR0cmlidXRlczogQWNjZXNzZWQsIFJlYWRhYmxlLCBVc2VyIChT PTEpLCBDb2RlU2VnbWVudCAoYml0IzExKSwNCis7ICAgICBQcmVzZW50Lg0KKzsNCis7ICAgLSBD UyBsaW1pdDogMHhGRkZGLg0KKzsNCis7ICAgLSBDUyBiYXNlOiB0aGUgQ1Mgc2VsZWN0b3IgdmFs dWUgc2hpZnRlZCBsZWZ0IGJ5IDQgYml0cy4gVGhhdCBpcywgdGhlIENTDQorOyAgICAgYmFzZSBl cXVhbHMgdGhlIFNJUEkgc3RhcnR1cCB2ZWN0b3IuIChFeGFtcGxlOiAweDlfRjAwMC4pDQorOw0K KzsgICAtIElQOiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNCBiaXRzIGZyb20gdGhlIFNJUEkgc3Rh cnR1cCB2ZWN0b3IuIEJlY2F1c2UNCis7ICAgICB0aGUgcm91dGluZSBpcyBwYWdlLWFsaWduZWQs IHRoZXNlIGJpdHMgYXJlIHplcm8gKGhlbmNlIElQIGlzIHplcm8pLg0KKzsNCis7ICAgLSBFUywg U1MsIERTLCBGUywgR1Mgc2VsZWN0b3JzOiAwLg0KKzsNCis7ICAgLSBFUywgU1MsIERTLCBGUywg R1MgYXR0cmlidXRlczogc2FtZSBhcyB0aGUgQ1MgYXR0cmlidXRlcywgbWludXMNCis7ICAgICBD b2RlU2VnbWVudCAoYml0IzExKS4NCis7DQorOyAgIC0gRVMsIFNTLCBEUywgRlMsIEdTIGxpbWl0 czogMHhGRkZGLg0KKzsNCis7ICAgLSBFUywgU1MsIERTLCBGUywgR1MgYmFzZXM6IDAuDQorOw0K KzsgLSBUaGUgaG90LWFkZGVkIENQVSBzZXRzIGl0cyBuZXcgU01CQVNFIHZhbHVlIGluIHRoZSBT TVJBTSBTYXZlIFN0YXRlIE1hcC4NCis7DQorOyAtIFRoZSBob3QtYWRkZWQgQ1BVIHNldHMgdGhl ICJhYm91dCB0byBsZWF2ZSBTTU0iIGJ5dGUgaW4gU01SQU0sIHRoZW4NCis7ICAgZXhlY3V0ZXMg dGhlIFJTTSBpbnN0cnVjdGlvbiBpbW1lZGlhdGVseSBhZnRlciwgbGVhdmluZyBTTU0uDQorOw0K KzsgLSBUaGUgU01NIE1vbmFyY2ggbm90aWNlcyB0aGF0IHRoZSAiYWJvdXQgdG8gbGVhdmUgU01N IiBieXRlIGluIFNNUkFNIGhhcw0KKzsgICBiZWVuIHNldCwgYW5kIHN0YXJ0cyBwb2xsaW5nIHRo ZSBsYXN0IGJ5dGUgaW4gdGhlIHJlc2VydmVkIHBhZ2UuDQorOw0KKzsgLSBUaGUgaG90LWFkZGVk IENQVSBqdW1wcyAoInJldHVybnMiKSB0byB0aGUgY29kZSBiZWxvdyAoaW4gdGhlIHJlc2VydmVk DQorOyAgIHBhZ2UpLCBhY2NvcmRpbmcgdG8gdGhlIHJlZ2lzdGVyIHN0YXRlIGxpc3RlZCBpbiB0 aGUgU01SQU0gU2F2ZSBTdGF0ZSBNYXAuDQorOw0KKzsgLSBUaGUgaG90LWFkZGVkIENQVSBzZXRz IHRoZSBsYXN0IGJ5dGUgb2YgdGhlIHJlc2VydmVkIHBhZ2UsIHRoZW4gaGFsdHMNCis7ICAgaXRz ZWxmLg0KKzsNCis7IC0gVGhlIFNNTSBNb25hcmNoIG5vdGljZXMgdGhhdCB0aGUgaG90LWFkZGVk IENQVSBpcyBkb25lIHdpdGggU01CQVNFDQorOyAgIHJlbG9jYXRpb24uDQorOw0KKzsgTm90ZSB0 aGF0LCBpZiB0aGUgT1MgaXMgbWFsaWNpb3VzIGFuZCBzZW5kcyBJTklULVNJUEktU0lQSSB0byB0 aGUgaG90LWFkZGVkDQorOyBDUFUgYmVmb3JlIGFsbG93aW5nIHRoZSBBQ1BJIENQVSBob3RwbHVn IGV2ZW50IGhhbmRsZXIgdG8gdHJpZ2dlciBhIGJyb2FkY2FzdA0KKzsgU01JLCB0aGVuIHNhaWQg YnJvYWRjYXN0IFNNSSB3aWxsIHlhbmsgdGhlIGhvdC1hZGRlZCBDUFUgZGlyZWN0bHkgaW50byBT TU0sDQorOyB3aXRob3V0IGJlY29taW5nIHBlbmRpbmcgZm9yIGl0IChhcyB0aGUgaG90LWFkZGVk IENQVSBpcyBubyBsb25nZXIgaW4gUkVTRVQNCis7IHN0YXRlKS4gVGhpcyBpcyBPSywgYmVjYXVz ZToNCis7DQorOyAtIFRoZSBkZWZhdWx0IFNNSSBoYW5kbGVyIGNvcGVzIHdpdGggdGhpcywgYXMg aXQgaXMgZ2F0ZWQgYnkgQVBJQyBJRC4gVGhlDQorOyAgIGhvdC1hZGRlZCBDUFUgd29uJ3Qgc3Rh cnQgdGhlIGFjdHVhbCBTTUJBU0UgcmVsb2NhdGlvbiB1bnRpbCB0aGUgU01NDQorOyAgIE1vbmFy Y2ggbGV0cyBpdC4NCis7DQorOyAtIFRoZSBJTklULVNJUEktU0lQSSBzZXF1ZW5jZSB0aGF0IHRo ZSBTTU0gTW9uYXJjaCBzZW5kcyB0byB0aGUgaG90LWFkZGVkIENQVQ0KKzsgICB3aWxsIGJlIGln bm9yZWQgaW4gdGhpcyBzYXRlIChpdCB3b24ndCBldmVuIGJlIGxhdGNoZWQpLiBTZWUgIlNNSSBI QU5ETEVSDQorOyAgIEVYRUNVVElPTiBFTlZJUk9OTUVOVCIgaW4gdGhlIEludGVsIFNETTogIklO SVQgb3BlcmF0aW9ucyBhcmUgaW5oaWJpdGVkDQorOyAgIHdoZW4gdGhlIHByb2Nlc3NvciBlbnRl cnMgU01NIi4NCis7DQorOyAtIFdoZW4gdGhlIGhvdC1hZGRlZCBDUFUgKGUuZy4sIENQVSMxKSBl eGVjdXRlcyB0aGUgUlNNIChoYXZpbmcgcmVsb2NhdGVkDQorOyAgIFNNQkFTRSksIGl0IHJldHVy bnMgdG8gdGhlIE9TLiBUaGUgT1MgY2FuIHVzZSBDUFUjMSB0byBhdHRhY2sgdGhlIGxhc3QgYnl0 ZQ0KKzsgICBvZiB0aGUgcmVzZXJ2ZWQgcGFnZSwgd2hpbGUgYW5vdGhlciBDUFUgKGUuZy4sIENQ VSMyKSBpcyByZWxvY2F0aW5nIFNNQkFTRSwNCis7ICAgaW4gb3JkZXIgdG8gdHJpY2sgdGhlIFNN TSBNb25hcmNoIChlLmcuLCBDUFUjMCkgdG8gb3BlbiB0aGUgQVBJQyBJRCBnYXRlDQorOyAgIGZv ciB5ZXQgYW5vdGhlciBDUFUgKGUuZy4sIENQVSMzKS4gSG93ZXZlciwgdGhlIFNNTSBNb25hcmNo IHdvbid0IGxvb2sgYXQNCis7ICAgdGhlIGxhc3QgYnl0ZSBvZiB0aGUgcmVzZXJ2ZWQgcGFnZSwg dW50aWwgQ1BVIzIgc2V0cyB0aGUgImFib3V0IHRvIGxlYXZlDQorOyAgIFNNTSIgYnl0ZSBpbiBT TVJBTS4gVGhpcyBsZWF2ZXMgYSB2ZXJ5IHNtYWxsIHdpbmRvdyAoanVzdCBvbmUgaW5zdHJ1Y3Rp b24ncw0KKzsgICB3b3J0aCBiZWZvcmUgdGhlIFJTTSkgZm9yIENQVSMzIHRvICJjYXRjaCB1cCIg d2l0aCBDUFUjMiwgYW5kIG92ZXJ3cml0ZQ0KKzsgICBDUFUjMidzIFNNQkFTRSB3aXRoIGl0cyBv d24uDQorOw0KKzsgSW4gb3RoZXIgd29yZHMsIHdlIGRvIG5vdCAvIG5lZWQgbm90IHByZXZlbnQg YSBtYWxpY2lvdXMgT1MgZnJvbSBib290aW5nIHRoZQ0KKzsgaG90LWFkZGVkIENQVSBlYXJseTsg aW5zdGVhZCB3ZSBwcm92aWRlIGJlbmlnbiBPU2VzIHdpdGggYSBwZW4gZm9yIGhvdC1hZGRlZA0K KzsgQ1BVcy4NCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorU0VDVElPTiAuZGF0YQ0KK0JJ VFMgMTYNCisNCitHTE9CQUwgQVNNX1BGWCAobVBvc3RTbW1QZW4pICAgICA7IFVJTlQ4W10NCitH TE9CQUwgQVNNX1BGWCAobVBvc3RTbW1QZW5TaXplKSA7IFVJTlQxNg0KKw0KK0FTTV9QRlggKG1Q b3N0U21tUGVuKToNCisgIDsNCisgIDsgUG9pbnQgRFMgYXQgdGhlIHNhbWUgcmVzZXJ2ZWQgcGFn ZS4NCisgIDsNCisgIG1vdiBheCwgY3MNCisgIG1vdiBkcywgYXgNCisNCisgIDsNCisgIDsgSW5m b3JtIHRoZSBTTU0gTW9uYXJjaCB0aGF0IHdlJ3JlIGRvbmUgd2l0aCBTTUJBU0UgcmVsb2NhdGlv biwgYnkgc2V0dGluZw0KKyAgOyB0aGUgbGFzdCBieXRlIGluIHRoZSByZXNlcnZlZCBwYWdlLg0K KyAgOw0KKyAgbW92IGJ5dGUgW2RzIDogd29yZCAweEZGRl0sIDENCisNCisgIDsNCisgIDsgSGFs dCBub3csIHVudGlsIHdlIGdldCB3b2tlbiBieSBhbm90aGVyIFNNSSwgb3IgKG1vcmUgbGlrZWx5 KSB0aGUgT1MNCisgIDsgcmVib290cyB1cyB3aXRoIGFub3RoZXIgSU5JVC1TSVBJLVNJUEkuDQor ICA7DQorSGx0TG9vcDoNCisgIGNsaQ0KKyAgaGx0DQorICBqbXAgSGx0TG9vcA0KKw0KK0FTTV9Q RlggKG1Qb3N0U21tUGVuU2l6ZSk6DQorICBkdyAkIC0gQVNNX1BGWCAobVBvc3RTbW1QZW4pDQpk aWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1NtYmFzZS5jIGIvT3ZtZlBrZy9DcHVI b3RwbHVnU21tL1NtYmFzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZWEyMTE1M2Q5MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21t L1NtYmFzZS5jCkBAIC0wLDAgKzEsMTEwIEBACisvKiogQGZpbGUNCisgIFNNQkFTRSByZWxvY2F0 aW9uIGZvciBob3QtcGx1Z2dlZCBDUFVzLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBSZWQg SGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxCYXNlLmg+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBCQVNFXzFNQg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4gICAg ICAgICAgICAvLyBDb3B5TWVtKCkNCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPiAgICAg ICAgICAgICAgICAgLy8gREVCVUcoKQ0KKw0KKyNpbmNsdWRlICJTbWJhc2UuaCINCisNCitleHRl cm4gQ09OU1QgVUlOVDggbVBvc3RTbW1QZW5bXTsNCitleHRlcm4gQ09OU1QgVUlOVDE2IG1Qb3N0 U21tUGVuU2l6ZTsNCisNCisvKioNCisgIEFsbG9jYXRlIGEgbm9uLVNNUkFNIHJlc2VydmVkIG1l bW9yeSBwYWdlIGZvciB0aGUgUG9zdC1TTU0gUGVuIGZvciBob3QtYWRkZWQNCisgIENQVXMuDQor DQorICBUaGlzIGZ1bmN0aW9uIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBlbnRyeSBwb2lu dCBmdW5jdGlvbiBvZiB0aGUgZHJpdmVyLg0KKw0KKyAgQHBhcmFtW291dF0gUGVuQWRkcmVzcyAg IFRoZSBhZGRyZXNzIG9mIHRoZSBhbGxvY2F0ZWQgKG5vcm1hbCBSQU0pIHJlc2VydmVkDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4NCisNCisgIEBwYXJhbVtpbl0gQm9vdFNlcnZp Y2VzICBQb2ludGVyIHRvIHRoZSBVRUZJIGJvb3Qgc2VydmljZXMgdGFibGUuIFVzZWQgZm9yDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGluZyB0aGUgbm9ybWFsIFJBTSAobm90 IFNNUkFNKSByZXNlcnZlZCBwYWdlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICBBbGxvY2F0aW9uIHN1Y2Nlc3NmdWwuDQorDQorICBAcmV0dmFsIEVGSV9CQURfQlVGRkVSX1NJ WkUgIFRoZSBQb3N0LVNNTSBQZW4gdGVtcGxhdGUgaXMgbm90IHNtYWxsZXIgdGhhbg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfUEFHRV9TSVpFLg0KKw0KKyAgQHJldHVybiAg ICAgICAgICAgICAgICAgICAgICBFcnJvciBjb2RlcyBwcm9wYWdhdGVkIGZyb20gdW5kZXJseWlu ZyBzZXJ2aWNlcy4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdfRVJST1Ig bWVzc2FnZXMgaGF2ZSBiZWVuIGxvZ2dlZC4gTm8NCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzb3VyY2VzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuDQorKiovDQorRUZJX1NUQVRVUw0K K1NtYmFzZUFsbG9jYXRlUG9zdFNtbVBlbiAoDQorICBPVVQgVUlOVDMyICAgICAgICAgICAgICAg ICAgKlBlbkFkZHJlc3MsDQorICBJTiAgQ09OU1QgRUZJX0JPT1RfU0VSVklDRVMgKkJvb3RTZXJ2 aWNlcw0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICAgIFN0YXR1czsNCisgIEVGSV9Q SFlTSUNBTF9BRERSRVNTIEFkZHJlc3M7DQorDQorICAvLw0KKyAgLy8gVGhlIHBlbiBjb2RlIG11 c3QgZml0IGluIG9uZSBwYWdlLCBhbmQgdGhlIGxhc3QgYnl0ZSBtdXN0IHJlbWFpbiBmcmVlIGZv cg0KKyAgLy8gc2lnbmFsaW5nIHRoZSBTTU0gTW9uYXJjaC4NCisgIC8vDQorICBpZiAobVBvc3RT bW1QZW5TaXplID49IEVGSV9QQUdFX1NJWkUpIHsNCisgICAgU3RhdHVzID0gRUZJX0JBRF9CVUZG RVJfU0laRTsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBtUG9zdFNtbVBlblNpemU9 JXU6ICVyXG4iLCBfX0ZVTkNUSU9OX18sDQorICAgICAgbVBvc3RTbW1QZW5TaXplLCBTdGF0dXMp KTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIEFkZHJlc3MgPSBCQVNFXzFNQiAt IDE7DQorICBTdGF0dXMgPSBCb290U2VydmljZXMtPkFsbG9jYXRlUGFnZXMgKEFsbG9jYXRlTWF4 QWRkcmVzcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmlSZXNlcnZlZE1lbW9yeVR5 cGUsIDEsICZBZGRyZXNzKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVC VUcgKChERUJVR19FUlJPUiwgIiVhOiBBbGxvY2F0ZVBhZ2VzKCk6ICVyXG4iLCBfX0ZVTkNUSU9O X18sIFN0YXR1cykpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgREVCVUcgKChE RUJVR19JTkZPLCAiJWE6IFBvc3QtU01NIFBlbiBhdCAweCVMeFxuIiwgX19GVU5DVElPTl9fLCBB ZGRyZXNzKSk7DQorICAqUGVuQWRkcmVzcyA9IChVSU5UMzIpQWRkcmVzczsNCisgIHJldHVybiBF RklfU1VDQ0VTUzsNCit9DQorDQorLyoqDQorICBDb3B5IHRoZSBQb3N0LVNNTSBQZW4gdGVtcGxh dGUgY29kZSBpbnRvIHRoZSByZXNlcnZlZCBwYWdlIGFsbG9jYXRlZCB3aXRoDQorICBTbWJhc2VB bGxvY2F0ZVBvc3RTbW1QZW4oKS4NCisNCisgIE5vdGUgdGhhdCB0aGlzIGVmZmVjdHMgYW4gIlNN UkFNIHRvIG5vcm1hbCBSQU0iIGNvcHkuDQorDQorICBUaGUgU01NIE1vbmFyY2ggaXMgc3VwcG9z ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIHJvb3QgTU1JIGhhbmRsZXIuDQorDQor ICBAcGFyYW1baW5dIFBlbkFkZHJlc3MgIFRoZSBhbGxvY2F0aW9uIGFkZHJlc3MgcmV0dXJuZWQg YnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgU21iYXNlQWxsb2NhdGVQb3N0U21tUGVuKCku DQorKiovDQorVk9JRA0KK1NtYmFzZVJlaW5zdGFsbFBvc3RTbW1QZW4gKA0KKyAgSU4gVUlOVDMy IFBlbkFkZHJlc3MNCisgICkNCit7DQorICBDb3B5TWVtICgoVk9JRCAqKShVSU5UTilQZW5BZGRy ZXNzLCBtUG9zdFNtbVBlbiwgbVBvc3RTbW1QZW5TaXplKTsNCit9DQorDQorLyoqDQorICBSZWxl YXNlIHRoZSByZXNlcnZlZCBwYWdlIGFsbG9jYXRlZCB3aXRoIFNtYmFzZUFsbG9jYXRlUG9zdFNt bVBlbigpLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUg ZW50cnkgcG9pbnQgZnVuY3Rpb24gb2YgdGhlIGRyaXZlciwNCisgIG9uIHRoZSBlcnJvciBwYXRo Lg0KKw0KKyAgQHBhcmFtW2luXSBQZW5BZGRyZXNzICAgIFRoZSBhbGxvY2F0aW9uIGFkZHJlc3Mg cmV0dXJuZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWJhc2VBbGxvY2F0ZVBv c3RTbW1QZW4oKS4NCisNCisgIEBwYXJhbVtpbl0gQm9vdFNlcnZpY2VzICBQb2ludGVyIHRvIHRo ZSBVRUZJIGJvb3Qgc2VydmljZXMgdGFibGUuIFVzZWQgZm9yDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVsZWFzaW5nIHRoZSBub3JtYWwgUkFNIChub3QgU01SQU0pIHJlc2VydmVkIHBh Z2UuDQorKiovDQorVk9JRA0KK1NtYmFzZVJlbGVhc2VQb3N0U21tUGVuICgNCisgIElOIFVJTlQz MiAgICAgICAgICAgICAgICAgIFBlbkFkZHJlc3MsDQorICBJTiBDT05TVCBFRklfQk9PVF9TRVJW SUNFUyAqQm9vdFNlcnZpY2VzDQorICApDQorew0KKyAgQm9vdFNlcnZpY2VzLT5GcmVlUGFnZXMg KFBlbkFkZHJlc3MsIDEpOw0KK30NCi0tIAoyLjE5LjEuMy5nMzAyNDdhYTVkMjAxCgoK