From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.120]) by mx.groups.io with SMTP id smtpd.web09.9144.1582478772205427539 for ; Sun, 23 Feb 2020 09:26:12 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=EXz2vs2S; spf=pass (domain: redhat.com, ip: 205.139.110.120, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582478771; 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=j6/O8S6gKFVgDw2TvRyDWE3+J1xWIjRtJogKp4CTWnc=; b=EXz2vs2Snk1CeJpoP4kQ1D2NyMLFqX2BxJErFASTJ8KGLMWMSwNQ6vwD8CxGJUYQDIWqmq El/GS7f8yrthAQ+pEZZpa4sc6pyXL5U3i2VTkxLji+3mU63XUTxHSDk9QnyNGs1fkjUGQS AMgym3Q5tPSNZi/MhF53OOXqMD/piiI= 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-88-VZ-F1WZzMQeKWMuGYxqJjw-1; Sun, 23 Feb 2020 12:26:09 -0500 X-MC-Unique: VZ-F1WZzMQeKWMuGYxqJjw-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B65A6800D50; Sun, 23 Feb 2020 17:26:08 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-53.ams2.redhat.com [10.36.116.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id 08D2C9182B; Sun, 23 Feb 2020 17:26:06 +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 11/16] OvmfPkg/CpuHotplugSmm: introduce Post-SMM Pen for hot-added CPUs Date: Sun, 23 Feb 2020 18:25:32 +0100 Message-Id: <20200223172537.28464-12-lersek@redhat.com> In-Reply-To: <20200223172537.28464-1-lersek@redhat.com> References: <20200223172537.28464-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 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 ZXJzZWtAcmVkaGF0LmNvbT4KLS0tCiBPdm1mUGtnL0NwdUhvdHBsdWdTbW0vQ3B1SG90cGx1Z1Nt bS5pbmYgfCAgIDQgKwogT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1NtYmFzZS5oICAgICAgICAgIHwg IDMyICsrKysrCiBPdm1mUGtnL0NwdUhvdHBsdWdTbW0vUG9zdFNtbVBlbi5uYXNtICAgfCAxMzcg KysrKysrKysrKysrKysrKysrKysKIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9TbWJhc2UuYyAgICAg ICAgICB8IDExMCArKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI4MyBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0u aW5mIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mCmluZGV4IDMxYzFl ZTFjOWY2ZC4uYmY0MTYyMjk5YzdjIDEwMDY0NAotLS0gYS9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0v Q3B1SG90cGx1Z1NtbS5pbmYKKysrIGIvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdT bW0uaW5mCkBAIC01LDUyICs1LDU2IEBACiAjDQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KICMjDQogDQogW0RlZmluZXNdDQogICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICA9IDEuMjkNCiAgIFBJX1NQRUNJRklDQVRJT05fVkVSU0lPTiAgID0gMHgw MDAxMDA0NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBJLTEuNy4wDQogICBCQVNFX05B TUUgICAgICAgICAgICAgICAgICA9IENwdUhvdHBsdWdTbW0NCiAgIEZJTEVfR1VJRCAgICAgICAg ICAgICAgICAgID0gODRFRUExMTQtQzZCRS00NDQ1LThGOTAtNTFEOTc4NjNFMzYzDQogICBNT0RV TEVfVFlQRSAgICAgICAgICAgICAgICA9IERYRV9TTU1fRFJJVkVSDQogICBFTlRSWV9QT0lOVCAg ICAgICAgICAgICAgICA9IENwdUhvdHBsdWdFbnRyeQ0KIA0KICMNCiAjIFRoZSBmb2xsb3dpbmcg aW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhl IGJ1aWxkDQogIyB0b29scy4NCiAjDQogIyBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICA9IElB MzIgWDY0DQogIw0KIA0KIFtTb3VyY2VzXQ0KICAgQXBpY0lkLmgNCiAgIENwdUhvdHBsdWcuYw0K KyAgUG9zdFNtbVBlbi5uYXNtDQogICBRZW11Q3B1aHAuYw0KICAgUWVtdUNwdWhwLmgNCisgIFNt YmFzZS5jDQorICBTbWJhc2UuaA0KIA0KIFtQYWNrYWdlc10NCiAgIE1kZVBrZy9NZGVQa2cuZGVj DQogICBPdm1mUGtnL092bWZQa2cuZGVjDQogICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQog DQogW0xpYnJhcnlDbGFzc2VzXQ0KICAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KICAgRGVi dWdMaWINCiAgIE1tU2VydmljZXNUYWJsZUxpYg0KICAgUGNkTGliDQogICBTYWZlSW50TGliDQog ICBVZWZpRHJpdmVyRW50cnlQb2ludA0KIA0KIFtQcm90b2NvbHNdDQogICBnRWZpTW1DcHVJb1By b3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBD T05TVU1FUw0KICAgZ0VmaVNtbUNwdVNlcnZpY2VQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCiANCiBbUGNkXQ0KICAgZ1VlZmlDcHVQ a2dUb2tlblNwYWNlR3VpZC5QY2RDcHVIb3RQbHVnRGF0YUFkZHJlc3MgICAgICAgICAgICAgICAg IyMgQ09OU1VNRVMNCiAgIGdVZWZpT3ZtZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZFEzNVNtcmFtQXRE ZWZhdWx0U21iYXNlICAgICAgICAgICAgICMjIENPTlNVTUVTDQogDQogW0ZlYXR1cmVQY2RdDQog ICBnVWVmaU92bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RTbW1TbXJhbVJlcXVpcmUgICAgICAgICAg ICAgICAgICAgICAjIyBDT05TVU1FUw0KIA0KIFtEZXBleF0NCiAgIGdFZmlNbUNwdUlvUHJvdG9j b2xHdWlkIEFORA0KICAgZ0VmaVNtbUNwdVNlcnZpY2VQcm90b2NvbEd1aWQNCmRpZmYgLS1naXQg YS9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vU21iYXNlLmggYi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0v U21iYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYjVhZWQ5 OGNkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vU21iYXNlLmgK QEAgLTAsMCArMSwzMiBAQAorLyoqIEBmaWxlDQorICBTTUJBU0UgcmVsb2NhdGlvbiBmb3IgaG90 LXBsdWdnZWQgQ1BVcy4NCisNCisgIENvcHlyaWdodCAoYykgMjAyMCwgUmVkIEhhdCwgSW5jLg0K Kw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8N CisNCisjaWZuZGVmIFNNQkFTRV9IXw0KKyNkZWZpbmUgU01CQVNFX0hfDQorDQorI2luY2x1ZGUg PFVlZmkvVWVmaUJhc2VUeXBlLmg+IC8vIEVGSV9TVEFUVVMNCisjaW5jbHVkZSA8VWVmaS9VZWZp U3BlYy5oPiAgICAgLy8gRUZJX0JPT1RfU0VSVklDRVMNCisNCitFRklfU1RBVFVTDQorU21iYXNl QWxsb2NhdGVQb3N0U21tUGVuICgNCisgIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAgICAqUGVu QWRkcmVzcywNCisgIElOICBDT05TVCBFRklfQk9PVF9TRVJWSUNFUyAqQm9vdFNlcnZpY2VzDQor ICApOw0KKw0KK1ZPSUQNCitTbWJhc2VSZWluc3RhbGxQb3N0U21tUGVuICgNCisgIElOIFVJTlQz MiBQZW5BZGRyZXNzDQorICApOw0KKw0KK1ZPSUQNCitTbWJhc2VSZWxlYXNlUG9zdFNtbVBlbiAo DQorICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICBQZW5BZGRyZXNzLA0KKyAgSU4gQ09OU1Qg RUZJX0JPT1RfU0VSVklDRVMgKkJvb3RTZXJ2aWNlcw0KKyAgKTsNCisNCisjZW5kaWYgLy8gU01C QVNFX0hfDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9DcHVIb3RwbHVnU21tL1Bvc3RTbW1QZW4ubmFz bSBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9Qb3N0U21tUGVuLm5hc20KbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYTMyOGJlMjliMWYKLS0tIC9kZXYvbnVsbAorKysg Yi9Pdm1mUGtnL0NwdUhvdHBsdWdTbW0vUG9zdFNtbVBlbi5uYXNtCkBAIC0wLDAgKzEsMTM3IEBA Cis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorOyBAZmlsZQ0KKzsgUGVuIGFueSBob3QtYWRkZWQg Q1BVIGluIGEgMTYtYml0LCByZWFsIG1vZGUgSExUIGxvb3AsIGFmdGVyIGl0IGxlYXZlcyBTTU0g YnkNCis7IGV4ZWN1dGluZyB0aGUgUlNNIGluc3RydWN0aW9uLg0KKzsNCis7IENvcHlyaWdodCAo YykgMjAyMCwgUmVkIEhhdCwgSW5jLg0KKzsNCis7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQorOw0KKzsgVGhlIHJvdXRpbmUgaW1wbGVtZW50ZWQgaGVyZSBp cyBzdG9yZWQgaW50byBub3JtYWwgUkFNLCB1bmRlciAxTUIsIGF0IHRoZQ0KKzsgYmVnaW5uaW5n IG9mIGEgcGFnZSB0aGF0IGlzIGFsbG9jYXRlZCBhcyBFZmlSZXNlcnZlZE1lbW9yeVR5cGUuIE9u IGFueQ0KKzsgaG90LWFkZGVkIENQVSwgaXQgaXMgZXhlY3V0ZWQgYWZ0ZXIgKmF0IGxlYXN0KiB0 aGUgZmlyc3QgUlNNIChpLmUuLCBhZnRlcg0KKzsgU01CQVNFIHJlbG9jYXRpb24pLg0KKzsNCis7 IFRoZSBmaXJzdCBleGVjdXRpb24gb2YgdGhpcyBjb2RlIG9jY3VycyBhcyBmb2xsb3dzOg0KKzsN Cis7IC0gVGhlIGhvdC1hZGRlZCBDUFUgaXMgaW4gUkVTRVQgc3RhdGUuDQorOw0KKzsgLSBUaGUg QUNQSSBDUFUgaG90cGx1ZyBldmVudCBoYW5kbGVyIHRyaWdnZXJzIGEgYnJvYWRjYXN0IFNNSSwg ZnJvbSB0aGUgT1MuDQorOw0KKzsgLSBFeGlzdGVudCBDUFVzIChCU1AgYW5kIEFQcykgZW50ZXIg U01NLg0KKzsNCis7IC0gVGhlIGhvdC1hZGRlZCBDUFUgcmVtYWlucyBpbiBSRVNFVCBzdGF0ZSwg YnV0IGFuIFNNSSBpcyBwZW5kaW5nIGZvciBpdCBub3cuDQorOyAgIChTZWUgIlNZU1RFTSBNQU5B R0VNRU5UIElOVEVSUlVQVCAoU01JKSIgaW4gdGhlIEludGVsIFNETS4pDQorOw0KKzsgLSBJbiBT TU0sIHByZS1leGlzdGVudCBDUFVzIHRoYXQgYXJlIG5vdCBlbGVjdGVkIFNNTSBNb25hcmNoLCBr ZWVwIHRoZW1zZWx2ZXMNCis7ICAgYnVzeSB3aXRoIHRoZWlyIHdhaXQgbG9vcHMuDQorOw0KKzsg LSBGcm9tIHRoZSByb290IE1NSSBoYW5kbGVyLCB0aGUgU01NIE1vbmFyY2g6DQorOw0KKzsgICAt IHBsYWNlcyB0aGlzIHJvdXRpbmUgaW4gdGhlIHJlc2VydmVkIHBhZ2UsDQorOw0KKzsgICAtIGNs ZWFycyB0aGUgbGFzdCBieXRlIG9mIHRoZSByZXNlcnZlZCBwYWdlLA0KKzsNCis7ICAgLSBzZW5k cyBhbiBJTklULVNJUEktU0lQSSBzZXF1ZW5jZSB0byB0aGUgaG90LWFkZGVkIENQVSwNCis7DQor OyAgIC0gdW4tZ2F0ZXMgdGhlIGRlZmF1bHQgU01JIGhhbmRsZXIgYnkgQVBJQyBJRC4NCis7DQor OyAtIFRoZSBzdGFydHVwIHZlY3RvciBpbiB0aGUgU0lQSSB0aGF0IGlzIHNlbnQgYnkgdGhlIFNN TSBNb25hcmNoIHBvaW50cyB0bw0KKzsgICB0aGlzIGNvZGU7IGkuZS4sIHRvIHRoZSByZXNlcnZl ZCBwYWdlLiAoRXhhbXBsZTogMHg5X0YwMDAuKQ0KKzsNCis7IC0gVGhlIFNNTSBNb25hcmNoIHN0 YXJ0cyBwb2xsaW5nIHRoZSBsYXN0IGJ5dGUgaW4gdGhlIHJlc2VydmVkIHBhZ2UuDQorOw0KKzsg LSBUaGUgaG90LWFkZGVkIENQVSBib290cywgYW5kIGltbWVkaWF0ZWx5IGVudGVycyBTTU0gZHVl IHRvIHRoZSBwZW5kaW5nIFNNSS4NCis7ICAgSXQgc3RhcnRzIGV4ZWN1dGluZyB0aGUgZGVmYXVs dCBTTUkgaGFuZGxlci4NCis7DQorOyAtIEltcG9ydGFudGx5LCB0aGUgU01SQU0gU2F2ZSBTdGF0 ZSBNYXAgY2FwdHVyZXMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiwNCis7ICAgd2hlbiB0aGUg aG90LWFkZGVkIENQVSBlbnRlcnMgU01NOg0KKzsNCis7ICAgLSBDUyBzZWxlY3RvcjogYXNzdW1l cyB0aGUgMTYgbW9zdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSAyMC1iaXQgKGkuZS4sDQorOyAg ICAgYmVsb3cgMU1CKSBzdGFydHVwIHZlY3RvciBmcm9tIHRoZSBTSVBJLiAoRXhhbXBsZTogMHg5 RjAwLikNCis7DQorOyAgIC0gQ1MgYXR0cmlidXRlczogQWNjZXNzZWQsIFJlYWRhYmxlLCBVc2Vy IChTPTEpLCBDb2RlU2VnbWVudCAoYml0IzExKSwNCis7ICAgICBQcmVzZW50Lg0KKzsNCis7ICAg LSBDUyBsaW1pdDogMHhGRkZGLg0KKzsNCis7ICAgLSBDUyBiYXNlOiB0aGUgQ1Mgc2VsZWN0b3Ig dmFsdWUgc2hpZnRlZCBsZWZ0IGJ5IDQgYml0cy4gVGhhdCBpcywgdGhlIENTDQorOyAgICAgYmFz ZSBlcXVhbHMgdGhlIFNJUEkgc3RhcnR1cCB2ZWN0b3IuIChFeGFtcGxlOiAweDlfRjAwMC4pDQor Ow0KKzsgICAtIElQOiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNCBiaXRzIGZyb20gdGhlIFNJUEkg c3RhcnR1cCB2ZWN0b3IuIEJlY2F1c2UNCis7ICAgICB0aGUgcm91dGluZSBpcyBwYWdlLWFsaWdu ZWQsIHRoZXNlIGJpdHMgYXJlIHplcm8gKGhlbmNlIElQIGlzIHplcm8pLg0KKzsNCis7ICAgLSBF UywgU1MsIERTLCBGUywgR1Mgc2VsZWN0b3JzOiAwLg0KKzsNCis7ICAgLSBFUywgU1MsIERTLCBG UywgR1MgYXR0cmlidXRlczogc2FtZSBhcyB0aGUgQ1MgYXR0cmlidXRlcywgbWludXMNCis7ICAg ICBDb2RlU2VnbWVudCAoYml0IzExKS4NCis7DQorOyAgIC0gRVMsIFNTLCBEUywgRlMsIEdTIGxp bWl0czogMHhGRkZGLg0KKzsNCis7ICAgLSBFUywgU1MsIERTLCBGUywgR1MgYmFzZXM6IDAuDQor Ow0KKzsgLSBUaGUgaG90LWFkZGVkIENQVSBwZXJmb3JtcyBTTUJBU0UgcmVsb2NhdGlvbiwgdGhl biBleGVjdXRlcyB0aGUgUlNNDQorOyAgIGluc3RydWN0aW9uLCBsZWF2aW5nIFNNTS4NCis7DQor OyAtIFRoZSBob3QtYWRkZWQgQ1BVIGp1bXBzICgicmV0dXJucyIpIHRvIHRoZSBjb2RlIGJlbG93 IChpbiB0aGUgcmVzZXJ2ZWQNCis7ICAgcGFnZSksIGFjY29yZGluZyB0byB0aGUgcmVnaXN0ZXIg c3RhdGUgbGlzdGVkIGluIHRoZSBTTVJBTSBTYXZlIFN0YXRlIE1hcC4NCis7DQorOyAtIFRoZSBo b3QtYWRkZWQgQ1BVIHNldHMgdGhlIGxhc3QgYnl0ZSBvZiB0aGUgcmVzZXJ2ZWQgcGFnZSwgdGhl biBoYWx0cw0KKzsgICBpdHNlbGYuDQorOw0KKzsgLSBUaGUgU01NIE1vbmFyY2ggbm90aWNlcyB0 aGF0IHRoZSBob3QtYWRkZWQgQ1BVIGlzIGRvbmUgd2l0aCBTTUJBU0UNCis7ICAgcmVsb2NhdGlv bi4NCis7DQorOyBOb3RlIHRoYXQsIGlmIHRoZSBPUyBpcyBtYWxpY2lvdXMgYW5kIHNlbmRzIElO SVQtU0lQSS1TSVBJIHRvIHRoZSBob3QtYWRkZWQNCis7IENQVSBiZWZvcmUgYWxsb3dpbmcgdGhl IEFDUEkgQ1BVIGhvdHBsdWcgZXZlbnQgaGFuZGxlciB0byB0cmlnZ2VyIGEgYnJvYWRjYXN0DQor OyBTTUksIHRoZW4gc2FpZCBicm9hZGNhc3QgU01JIHdpbGwgeWFuayB0aGUgaG90LWFkZGVkIENQ VSBkaXJlY3RseSBpbnRvIFNNTSwNCis7IHdpdGhvdXQgYmVjb21pbmcgcGVuZGluZyBmb3IgaXQg KGFzIHRoZSBob3QtYWRkZWQgQ1BVIGlzIG5vIGxvbmdlciBpbiBSRVNFVA0KKzsgc3RhdGUpLiBU aGlzIGlzIE9LLCBiZWNhdXNlOg0KKzsNCis7IC0gVGhlIGRlZmF1bHQgU01JIGhhbmRsZXIgY29w ZXMgd2l0aCB0aGlzLCBhcyBpdCBpcyBnYXRlZCBieSBBUElDIElELiBUaGUNCis7ICAgaG90LWFk ZGVkIENQVSB3b24ndCBzdGFydCB0aGUgYWN0dWFsIFNNQkFTRSByZWxvY2F0aW9uIHVudGlsIHRo ZSBTTU0NCis7ICAgTW9uYXJjaCBsZXRzIGl0Lg0KKzsNCis7IC0gVGhlIElOSVQtU0lQSS1TSVBJ IHNlcXVlbmNlIHRoYXQgdGhlIFNNTSBNb25hcmNoIHNlbmRzIHRvIHRoZSBob3QtYWRkZWQgQ1BV DQorOyAgIHdpbGwgYmUgaWdub3JlZCBpbiB0aGlzIHNhdGUgKGl0IHdvbid0IGV2ZW4gYmUgbGF0 Y2hlZCkuIFNlZSAiU01JIEhBTkRMRVINCis7ICAgRVhFQ1VUSU9OIEVOVklST05NRU5UIiBpbiB0 aGUgSW50ZWwgU0RNOiAiSU5JVCBvcGVyYXRpb25zIGFyZSBpbmhpYml0ZWQNCis7ICAgd2hlbiB0 aGUgcHJvY2Vzc29yIGVudGVycyBTTU0iLg0KKzsNCis7IC0gV2hlbiB0aGUgaG90LWFkZGVkIENQ VSBleGVjdXRlcyB0aGUgUlNNIChoYXZpbmcgcmVsb2NhdGVkIFNNQkFTRSksIGl0DQorOyAgIHJl dHVybnMgdG8gdGhlIE9TLg0KKzsNCis7IEluIG90aGVyIHdvcmRzLCB3ZSBkbyBub3QgLyBuZWVk IG5vdCBwcmV2ZW50IGEgbWFsaWNpb3VzIE9TIGZyb20gYm9vdGluZyB0aGUNCis7IGhvdC1hZGRl ZCBDUFUgZWFybHk7IGluc3RlYWQgd2UgcHJvdmlkZSBiZW5pZ24gT1NlcyB3aXRoIGEgcGVuIGZv ciBob3QtYWRkZWQNCis7IENQVXMuDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1NFQ1RJ T04gLmRhdGENCitCSVRTIDE2DQorDQorR0xPQkFMIEFTTV9QRlggKG1Qb3N0U21tUGVuKSAgICAg OyBVSU5UOFtdDQorR0xPQkFMIEFTTV9QRlggKG1Qb3N0U21tUGVuU2l6ZSkgOyBVSU5UMTYNCisN CitBU01fUEZYIChtUG9zdFNtbVBlbik6DQorICA7DQorICA7IFBvaW50IERTIGF0IHRoZSBzYW1l IHJlc2VydmVkIHBhZ2UuDQorICA7DQorICBtb3YgYXgsIGNzDQorICBtb3YgZHMsIGF4DQorDQor ICA7DQorICA7IEluZm9ybSB0aGUgU01NIE1vbmFyY2ggdGhhdCB3ZSdyZSBkb25lIHdpdGggU01C QVNFIHJlbG9jYXRpb24sIGJ5IHNldHRpbmcNCisgIDsgdGhlIGxhc3QgYnl0ZSBpbiB0aGUgcmVz ZXJ2ZWQgcGFnZS4NCisgIDsNCisgIG1vdiBieXRlIFtkcyA6IHdvcmQgMHhGRkZdLCAxDQorDQor ICA7DQorICA7IEhhbHQgbm93LCB1bnRpbCB3ZSBnZXQgd29rZW4gYnkgYW5vdGhlciBTTUksIG9y IChtb3JlIGxpa2VseSkgdGhlIE9TDQorICA7IHJlYm9vdHMgdXMgd2l0aCBhbm90aGVyIElOSVQt U0lQSS1TSVBJLg0KKyAgOw0KK0hsdExvb3A6DQorICBjbGkNCisgIGhsdA0KKyAgam1wIEhsdExv b3ANCisNCitBU01fUEZYIChtUG9zdFNtbVBlblNpemUpOg0KKyAgZHcgJCAtIEFTTV9QRlggKG1Q b3N0U21tUGVuKQ0KZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9TbWJhc2UuYyBi L092bWZQa2cvQ3B1SG90cGx1Z1NtbS9TbWJhc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmVhMjExNTNkOTE0NQotLS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cv Q3B1SG90cGx1Z1NtbS9TbWJhc2UuYwpAQCAtMCwwICsxLDExMCBAQAorLyoqIEBmaWxlDQorICBT TUJBU0UgcmVsb2NhdGlvbiBmb3IgaG90LXBsdWdnZWQgQ1BVcy4NCisNCisgIENvcHlyaWdodCAo YykgMjAyMCwgUmVkIEhhdCwgSW5jLg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaW5jbHVkZSA8QmFzZS5oPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gQkFTRV8xTUINCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVt b3J5TGliLmg+ICAgICAgICAgICAgLy8gQ29weU1lbSgpDQorI2luY2x1ZGUgPExpYnJhcnkvRGVi dWdMaWIuaD4gICAgICAgICAgICAgICAgIC8vIERFQlVHKCkNCisNCisjaW5jbHVkZSAiU21iYXNl LmgiDQorDQorZXh0ZXJuIENPTlNUIFVJTlQ4IG1Qb3N0U21tUGVuW107DQorZXh0ZXJuIENPTlNU IFVJTlQxNiBtUG9zdFNtbVBlblNpemU7DQorDQorLyoqDQorICBBbGxvY2F0ZSBhIG5vbi1TTVJB TSByZXNlcnZlZCBtZW1vcnkgcGFnZSBmb3IgdGhlIFBvc3QtU01NIFBlbiBmb3IgaG90LWFkZGVk DQorICBDUFVzLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0 aGUgZW50cnkgcG9pbnQgZnVuY3Rpb24gb2YgdGhlIGRyaXZlci4NCisNCisgIEBwYXJhbVtvdXRd IFBlbkFkZHJlc3MgICBUaGUgYWRkcmVzcyBvZiB0aGUgYWxsb2NhdGVkIChub3JtYWwgUkFNKSBy ZXNlcnZlZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuDQorDQorICBAcGFyYW1b aW5dIEJvb3RTZXJ2aWNlcyAgUG9pbnRlciB0byB0aGUgVUVGSSBib290IHNlcnZpY2VzIHRhYmxl LiBVc2VkIGZvcg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRpbmcgdGhlIG5v cm1hbCBSQU0gKG5vdCBTTVJBTSkgcmVzZXJ2ZWQgcGFnZS4NCisNCisgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgQWxsb2NhdGlvbiBzdWNjZXNzZnVsLg0KKw0KKyAgQHJldHZhbCBFRklf QkFEX0JVRkZFUl9TSVpFICBUaGUgUG9zdC1TTU0gUGVuIHRlbXBsYXRlIGlzIG5vdCBzbWFsbGVy IHRoYW4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1BBR0VfU0laRS4NCisN CisgIEByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgRXJyb3IgY29kZXMgcHJvcGFnYXRlZCBm cm9tIHVuZGVybHlpbmcgc2VydmljZXMuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERFQlVHX0VSUk9SIG1lc3NhZ2VzIGhhdmUgYmVlbiBsb2dnZWQuIE5vDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc291cmNlcyBoYXZlIGJlZW4gYWxsb2NhdGVkLg0KKyoqLw0K K0VGSV9TVEFUVVMNCitTbWJhc2VBbGxvY2F0ZVBvc3RTbW1QZW4gKA0KKyAgT1VUIFVJTlQzMiAg ICAgICAgICAgICAgICAgICpQZW5BZGRyZXNzLA0KKyAgSU4gIENPTlNUIEVGSV9CT09UX1NFUlZJ Q0VTICpCb290U2VydmljZXMNCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICBTdGF0 dXM7DQorICBFRklfUEhZU0lDQUxfQUREUkVTUyBBZGRyZXNzOw0KKw0KKyAgLy8NCisgIC8vIFRo ZSBwZW4gY29kZSBtdXN0IGZpdCBpbiBvbmUgcGFnZSwgYW5kIHRoZSBsYXN0IGJ5dGUgbXVzdCBy ZW1haW4gZnJlZSBmb3INCisgIC8vIHNpZ25hbGluZyB0aGUgU01NIE1vbmFyY2guDQorICAvLw0K KyAgaWYgKG1Qb3N0U21tUGVuU2l6ZSA+PSBFRklfUEFHRV9TSVpFKSB7DQorICAgIFN0YXR1cyA9 IEVGSV9CQURfQlVGRkVSX1NJWkU7DQorICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogbVBv c3RTbW1QZW5TaXplPSV1OiAlclxuIiwgX19GVU5DVElPTl9fLA0KKyAgICAgIG1Qb3N0U21tUGVu U2l6ZSwgU3RhdHVzKSk7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICBBZGRyZXNz ID0gQkFTRV8xTUIgLSAxOw0KKyAgU3RhdHVzID0gQm9vdFNlcnZpY2VzLT5BbGxvY2F0ZVBhZ2Vz IChBbGxvY2F0ZU1heEFkZHJlc3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZpUmVz ZXJ2ZWRNZW1vcnlUeXBlLCAxLCAmQWRkcmVzcyk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQorICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogQWxsb2NhdGVQYWdlcygpOiAlclxu IiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisN CisgIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBQb3N0LVNNTSBQZW4gYXQgMHglTHhcbiIsIF9f RlVOQ1RJT05fXywgQWRkcmVzcykpOw0KKyAgKlBlbkFkZHJlc3MgPSAoVUlOVDMyKUFkZHJlc3M7 DQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKy8qKg0KKyAgQ29weSB0aGUgUG9zdC1T TU0gUGVuIHRlbXBsYXRlIGNvZGUgaW50byB0aGUgcmVzZXJ2ZWQgcGFnZSBhbGxvY2F0ZWQgd2l0 aA0KKyAgU21iYXNlQWxsb2NhdGVQb3N0U21tUGVuKCkuDQorDQorICBOb3RlIHRoYXQgdGhpcyBl ZmZlY3RzIGFuICJTTVJBTSB0byBub3JtYWwgUkFNIiBjb3B5Lg0KKw0KKyAgVGhlIFNNTSBNb25h cmNoIGlzIHN1cHBvc2VkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSByb290IE1NSSBo YW5kbGVyLg0KKw0KKyAgQHBhcmFtW2luXSBQZW5BZGRyZXNzICBUaGUgYWxsb2NhdGlvbiBhZGRy ZXNzIHJldHVybmVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgICAgIFNtYmFzZUFsbG9jYXRl UG9zdFNtbVBlbigpLg0KKyoqLw0KK1ZPSUQNCitTbWJhc2VSZWluc3RhbGxQb3N0U21tUGVuICgN CisgIElOIFVJTlQzMiBQZW5BZGRyZXNzDQorICApDQorew0KKyAgQ29weU1lbSAoKFZPSUQgKiko VUlOVE4pUGVuQWRkcmVzcywgbVBvc3RTbW1QZW4sIG1Qb3N0U21tUGVuU2l6ZSk7DQorfQ0KKw0K Ky8qKg0KKyAgUmVsZWFzZSB0aGUgcmVzZXJ2ZWQgcGFnZSBhbGxvY2F0ZWQgd2l0aCBTbWJhc2VB bGxvY2F0ZVBvc3RTbW1QZW4oKS4NCisNCisgIFRoaXMgZnVuY3Rpb24gbWF5IG9ubHkgYmUgY2Fs bGVkIGZyb20gdGhlIGVudHJ5IHBvaW50IGZ1bmN0aW9uIG9mIHRoZSBkcml2ZXIsDQorICBvbiB0 aGUgZXJyb3IgcGF0aC4NCisNCisgIEBwYXJhbVtpbl0gUGVuQWRkcmVzcyAgICBUaGUgYWxsb2Nh dGlvbiBhZGRyZXNzIHJldHVybmVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgU21i YXNlQWxsb2NhdGVQb3N0U21tUGVuKCkuDQorDQorICBAcGFyYW1baW5dIEJvb3RTZXJ2aWNlcyAg UG9pbnRlciB0byB0aGUgVUVGSSBib290IHNlcnZpY2VzIHRhYmxlLiBVc2VkIGZvcg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2luZyB0aGUgbm9ybWFsIFJBTSAobm90IFNNUkFN KSByZXNlcnZlZCBwYWdlLg0KKyoqLw0KK1ZPSUQNCitTbWJhc2VSZWxlYXNlUG9zdFNtbVBlbiAo DQorICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICBQZW5BZGRyZXNzLA0KKyAgSU4gQ09OU1Qg RUZJX0JPT1RfU0VSVklDRVMgKkJvb3RTZXJ2aWNlcw0KKyAgKQ0KK3sNCisgIEJvb3RTZXJ2aWNl cy0+RnJlZVBhZ2VzIChQZW5BZGRyZXNzLCAxKTsNCit9DQotLSAKMi4xOS4xLjMuZzMwMjQ3YWE1 ZDIwMQoKCg==