From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [v2 2/3] x86: add support for L2 CAT in hypervisor. Date: Fri, 30 Sep 2016 17:23:43 -0400 Message-ID: <20160930212343.GD5382@char.us.oracle.com> References: <1474510544-29571-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bq5Hn-0003DB-7L for xen-devel@lists.xenproject.org; Fri, 30 Sep 2016 21:24:03 +0000 Content-Disposition: inline In-Reply-To: <1474510544-29571-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Yi Sun Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBTZXAgMjIsIDIwMTYgYXQgMTA6MTU6NDRBTSArMDgwMCwgWWkgU3VuIHdyb3RlOgo+ IEFkZCBMMiBDQVQgKENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSkgZmVhdHVyZSBzdXBwb3J0 IGluCj4gaHlwZXJ2aXNvcjoKPiAtIEltcGxlbWVudCAnc3RydWN0IGZlYXRfb3BzJyBjYWxsYmFj ayBmdW5jdGlvbnMgZm9yIEwyIENBVAo+ICAgYW5kIGluaXRpYWxpemUgTDIgQ0FUIGZlYXR1cmUg YW5kIGFkZCBpdCBpbnRvIGZlYXR1cmUgbGlzdC4KPiAtIEFkZCBuZXcgc3lzY3RsIHRvIGdldCBM MiBDQVQgaW5mb3JtYXRpb24uCj4gLSBBZGQgbmV3IGRvbWN0bCB0byBzZXQvZ2V0IEwyIENBVCBD Qk0uCj4gCj4gU2lnbmVkLW9mZi1ieTogSGUgQ2hlbiA8aGUuY2hlbkBsaW51eC5pbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Cj4gCj4g LS0tCj4gQ2hhbmdlZCBzaW5jZSB2MToKPiAgKiBwc3IuYwo+ICAgICAtIEZ1bmN0aW9uIGFuZCB2 YXJpYWJsZXMgbmFtZXMgYXJlIGNoYW5nZWQgdG8gZXhwcmVzcyBhY2N1cmF0ZWx5Lgo+ICAgICAt IEZpeCBjb2RlIHN0eWxlIGlzc3Vlcy4KPiAgICAgLSBGaXggaW1wcmVjaXNlIGNvbW1lbnRzLgo+ ICAgICAtIEFkZCBvbmUgY2FsbGJhY2sgZnVuY3Rpb24sIGdldF9jb3NfbnVtKCksIHRvIGZ1bGZp bGwgdGhlCj4gICAgICAgYWJzdHJhY3Rpb24gcmVxdWlyZW1lbnQuCj4gICAgIC0gUmVwbGFjZSBj dXN0b20gbGlzdCBtYW5hZ2VtZW50IHRvIHN5c3RlbS4KPiAgICAgLSBVc2UgJ2NvbnN0JyB0byBt YWtlIGNvZGVzIG1vcmUgc2FmZS4KPiAtLS0KPiAgeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAg ICAgICB8ICAxMyArKysKPiAgeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgICAgICB8IDIxNiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9hcmNoL3g4Ni9z eXNjdGwuYyAgICAgICAgICAgfCAgMTMgKysrCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWlu ZGV4LmggfCAgIDEgKwo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oICAgICAgIHwgICAyICsK PiAgeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAgICB8ICAgMiArCj4gIHhlbi9pbmNsdWRl L3B1YmxpYy9zeXNjdGwuaCAgICAgfCAgIDYgKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAyNTMgaW5z ZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4v YXJjaC94ODYvZG9tY3RsLmMKPiBpbmRleCBjNTNkODE5Li4yNGY4NWM3IDEwMDY0NAo+IC0tLSBh L3hlbi9hcmNoL3g4Ni9kb21jdGwuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwo+IEBA IC0xNDI0LDYgKzE0MjQsMTkgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKPiAgICAgICAgICAgICAg Y29weWJhY2sgPSAxOwo+ICAgICAgICAgICAgICBicmVhazsKPiAgCj4gKyAgICAgICAgY2FzZSBY RU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTToKPiArICAgICAgICAgICAgcmV0ID0gcHNy X3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQU1JfTUFTS19UWVBFX0wyX0NCTSk7Cj4gKyAgICAgICAgICAg IGJyZWFrOwo+ICsKPiArICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJf Q0JNOgo+ICsgICAgICAgICAgICByZXQgPSBwc3JfZ2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2Nh dF9vcC50YXJnZXQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkb21jdGwtPnUu cHNyX2NhdF9vcC5kYXRhLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfTUFT S19UWVBFX0wyX0NCTSk7Cj4gKyAgICAgICAgICAgIGNvcHliYWNrID0gMTsKPiArICAgICAgICAg ICAgYnJlYWs7Cj4gKwo+ICAgICAgICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgICAgIHJldCA9IC1F T1BOT1RTVVBQOwo+ICAgICAgICAgICAgICBicmVhazsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCj4gaW5kZXggOTllNGM3OC4uNTAwMGEzYyAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKPiArKysgYi94ZW4vYXJjaC94ODYvcHNy LmMKPiBAQCAtMTM3LDYgKzEzNyw3IEBAIHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvIHsKPiAgc3Ry dWN0IGZlYXRfaW5mbyB7Cj4gICAgICB1bmlvbiB7Cj4gICAgICAgICAgc3RydWN0IHBzcl9jYXRf bHZsX2luZm8gbDNfaW5mbzsKPiArICAgICAgICBzdHJ1Y3QgcHNyX2NhdF9sdmxfaW5mbyBsMl9p bmZvOwo+ICAgICAgfTsKPiAgfTsKPiAgCj4gQEAgLTE1OCwxMiArMTU5LDE1IEBAIHN0cnVjdCBw c3JfcmVmIHsKPiAgICAgIHVuc2lnbmVkIGludCByZWY7Cj4gIH07Cj4gIAo+ICsKPiAgI2RlZmlu ZSBQU1JfU09DS0VUX0wzX0NBVCAwCj4gICNkZWZpbmUgUFNSX1NPQ0tFVF9MM19DRFAgMQo+ICsj ZGVmaW5lIFBTUl9TT0NLRVRfTDJfQ0FUIDIKPiAgCj4gIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8g ewo+ICAgICAgLyoKPiAgICAgICAqIGJpdCAxfjA6IFswMV0tPkwzIENBVC1vbmx5LCBbMTBdLT5M MyBDRFAKPiArICAgICAqIGJpdCAyOiAgIEwyIENBVAo+ICAgICAgICovCj4gICAgICB1bnNpZ25l ZCBpbnQgZmVhdHVyZXM7Cj4gICAgICB1bnNpZ25lZCBpbnQgbnJfZmVhdDsKPiBAQCAtMTkwLDYg KzE5NCw3IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBwc3JfYXNz b2MpOwo+ICBzdGF0aWMgc3RydWN0IHBzcl9yZWYgKnRlbXBfY29zX3JlZjsKPiAgLyogRXZlcnkg ZmVhdHVyZSBoYXMgaXRzIG93biBvYmplY3QuICovCj4gIHN0YXRpYyBzdHJ1Y3QgZmVhdF9saXN0 ICpmZWF0X2wzOwo+ICtzdGF0aWMgc3RydWN0IGZlYXRfbGlzdCAqZmVhdF9sMjsKPiAgCj4gIC8q IENvbW1vbiBmdW5jdGlvbnMgZm9yIHN1cHBvcnRpbmcgZmVhdHVyZSBjYWxsYmFjayBmdW5jdGlv bnMuICovCj4gIHN0YXRpYyB2b2lkIGZyZWVfZmVhdHVyZShzdHJ1Y3QgcHNyX3NvY2tldF9pbmZv ICppbmZvKQo+IEBAIC0yMTIsNiArMjE3LDEyIEBAIHN0YXRpYyB2b2lkIGZyZWVfZmVhdHVyZShz dHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvKQo+ICAgICAgICAgIHhmcmVlKGZlYXRfbDMpOwo+ ICAgICAgICAgIGZlYXRfbDMgPSBOVUxMOwo+ICAgICAgfQo+ICsKPiArICAgIGlmICggZmVhdF9s MiApCj4gKyAgICB7Cj4gKyAgICAgICAgeGZyZWUoZmVhdF9sMik7Cj4gKyAgICAgICAgZmVhdF9s MiA9IE5VTEw7Cj4gKyAgICB9Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIHBzcl9jaGVja19jYm0o dW5zaWduZWQgaW50IGNibV9sZW4sIHVpbnQ2NF90IGNibSkKPiBAQCAtMjQxLDYgKzI1MiwxOTUg QEAgc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdWludDY0 X3QgY2JtKQo+ICAgKiBGZWF0dXJlcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCj4gICAqLwo+ ICAKPiArLyogTDIgQ0FUIGNhbGxiYWNrIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KPiAr c3RhdGljIHZvaWQgbDJfY2F0X2luaXRfZmVhdHVyZSh1bnNpZ25lZCBpbnQgZWF4LCB1bnNpZ25l ZCBpbnQgZWJ4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBlY3gsIHVuc2lnbmVkIGludCBlZHgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgcHNy X2NhdF9sdmxfaW5mbyBsMl9jYXQ7Cj4gKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0Owo+ICsKPiAr ICAgIC8qIE5vIHZhbGlkIHZhbHVlIHNvIGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KCnMvdmFs dWUvdmFsdWVzLwpzL2ZlYXR1cmUvdGhlIGZlYXR1cmUvCj4gKyAgICBpZiAoIDAgPT0gZWF4IHx8 IDAgPT0gZWR4ICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgbDJfY2F0LmNibV9sZW4g PSAoZWF4ICYgMHgxZikgKyAxOwo+ICsgICAgbDJfY2F0LmNvc19tYXggPSBtaW4ob3B0X2Nvc19t YXgsIGVkeCAmIDB4ZmZmZik7CgpIbSwgdGhlc2UgMHgxZiBhbmQgMHhmZmZmIGxvb2sgc2FtZSBh cyBMMy4gUGVyaGFwcyBtYWtlIHRoaXMgYSAjZGVmaW5lLgoKPiArCj4gKyAgICAvKiBjb3M9MCBp cyByZXNlcnZlZCBhcyBkZWZhdWx0IGNibShhbGwgb25lcykuICovCj4gKyAgICBmZWF0LT5jb3Nf cmVnX3ZhbFswXSA9ICgxdWxsIDw8IGwyX2NhdC5jYm1fbGVuKSAtIDE7Cj4gKwo+ICsgICAgZmVh dC0+ZmVhdHVyZSA9IFBTUl9TT0NLRVRfTDJfQ0FUOwo+ICsgICAgX19zZXRfYml0KFBTUl9TT0NL RVRfTDJfQ0FULCAmaW5mby0+ZmVhdHVyZXMpOwo+ICsKPiArICAgIGZlYXQtPmluZm8ubDJfaW5m byA9IGwyX2NhdDsKPiArCj4gKyAgICBpbmZvLT5ucl9mZWF0Kys7Cj4gKwo+ICsgICAgLyogQWRk IHRoaXMgZmVhdHVyZSBpbnRvIGxpc3QuICovCj4gKyAgICBsaXN0X2FkZF90YWlsKCZmZWF0LT5s aXN0LCAmaW5mby0+ZmVhdF9saXN0KTsKPiArCj4gKyAgICBzb2NrZXQgPSBjcHVfdG9fc29ja2V0 KHNtcF9wcm9jZXNzb3JfaWQoKSk7Cj4gKyAgICBwcmludGsoWEVOTE9HX0lORk8gIkwyIENBVDog ZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXUuXG4iLAo+ICsgICAg ICAgICAgIHNvY2tldCwgZmVhdC0+aW5mby5sMl9pbmZvLmNvc19tYXgsIGZlYXQtPmluZm8ubDJf aW5mby5jYm1fbGVuKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsMl9jYXRfY29tcGFyZV92YWwo Y29uc3QgdWludDY0X3QgdmFsW10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBjb3MsIGJvb2wgKmZvdW5kKQo+ICt7Cj4gKyAgICB1aW50NjRfdCBs Ml9kZWZfY2JtOwo+ICsKPiArICAgIGwyX2RlZl9jYm0gPSAoMXVsbCA8PCBmZWF0LT5pbmZvLmwy X2luZm8uY2JtX2xlbikgLSAxOwo+ICsKPiArICAgIC8qIEwyIENBVCAqLwo+ICsgICAgaWYgKCBj b3MgPiBmZWF0LT5pbmZvLmwyX2luZm8uY29zX21heCApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYg KCB2YWxbMF0gIT0gbDJfZGVmX2NibSApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAqZm91 bmQgPSBmYWxzZTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7Cj4gKyAgICAgICAgfQo+ ICsgICAgICAgICpmb3VuZCA9IHRydWU7Cj4gKyAgICB9Cj4gKyAgICBlbHNlCj4gKyAgICAgICAg KmZvdW5kID0gKHZhbFswXSA9PSBmZWF0LT5jb3NfcmVnX3ZhbFtjb3NdKTsKPiArCj4gKyAgICAv KiBMMiBDQVQgb2NjdXBpZXMgb25lIENPUy4gKi8KPiArICAgIHJldHVybiAxOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdW5zaWduZWQgaW50IGwyX2NhdF9nZXRfY29zX21heF9mcm9tX3R5cGUoY29uc3Qg c3RydWN0IGZlYXRfbGlzdCAqZmVhdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCj4gK3sKPiArICAgIGlm ICggdHlwZSAhPSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4g Kwo+ICsgICAgcmV0dXJuIGZlYXQtPmluZm8ubDJfaW5mby5jb3NfbWF4Owo+ICt9Cj4gKwo+ICtz dGF0aWMgdW5zaWduZWQgaW50IGwyX2NhdF9leGNlZWRzX2Nvc19tYXgoY29uc3QgdWludDY0X3Qg dmFsW10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvcykKPiArewo+ICsgICAgdWludDY0X3QgbDJf ZGVmX2NibTsKPiArCj4gKyAgICBsMl9kZWZfY2JtID0gKDF1bGwgPDwgZmVhdC0+aW5mby5sMl9p bmZvLmNibV9sZW4pIC0gMTsKPiArCj4gKyAgICAvKiBMMiBDQVQgKi8KPiArICAgIGlmICggY29z ID4gZmVhdC0+aW5mby5sM19pbmZvLmNvc19tYXggJiYKPiArICAgICAgICAgdmFsWzBdICE9IGwy X2RlZl9jYm0gKQo+ICsgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgKiBFeGNlZWQgY29z X21heCBhbmQgdmFsdWUgdG8gc2V0IGlzIG5vdCBkZWZhdWx0LAo+ICsgICAgICAgICAgICAgKiBy ZXR1cm4gZXJyb3IuCj4gKyAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICByZXR1cm4gMDsK PiArCj4gKyAgICAvKiBMMiBDQVQgb2NjdXBpZXMgb25lIENPUy4gKi8KPiArICAgIHJldHVybiAx Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGwyX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNv cywgY29uc3QgdWludDY0X3QgdmFsW10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZmVhdF9saXN0ICpmZWF0KQo+ICt7Cj4gKyAgICAvKiBMMiBDQVQgKi8KPiArICAgIGlm ICggY29zID4gZmVhdC0+aW5mby5sMl9pbmZvLmNvc19tYXggKQo+ICsgICAgICAgIHJldHVybiAx Owo+ICsKPiArICAgIGZlYXQtPmNvc19yZWdfdmFsW2Nvc10gPSB2YWxbMF07Cj4gKyAgICB3cm1z cmwoTVNSX0lBMzJfUFNSX0wyX01BU0soY29zKSwgdmFsWzBdKTsKPiArCj4gKyAgICAvKiBMMiBD QVQgb2NjdXBpZXMgb25lIENPUy4gKi8KPiArICAgIHJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdW5zaWduZWQgaW50IGwyX2NhdF9nZXRfY29zX251bShjb25zdCBzdHJ1Y3QgZmVhdF9saXN0 ICpmZWF0KQo+ICt7Cj4gKyAgICAvKiBMMiBDQVQgb2NjdXBpZXMgb25lIENPUy4gKi8KPiArICAg IHJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGwyX2NhdF9nZXRfb2xkX3ZhbCh1aW50 NjRfdCB2YWxbXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGZlYXRfbGlzdCAqZmVhdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IG9sZF9jb3MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNy X3ZhbF90eXBlIHR5cGUpCj4gK3sKPiArICAgIGlmICggb2xkX2NvcyA+IGZlYXQtPmluZm8ubDJf aW5mby5jb3NfbWF4ICkKPiArICAgICAgICAvKiBVc2UgZGVmYXVsdCB2YWx1ZS4gKi8KPiArICAg ICAgICBvbGRfY29zID0gMDsKPiArCj4gKyAgICB2YWxbMF0gPSAgZmVhdC0+Y29zX3JlZ192YWxb b2xkX2Nvc107CgpFeHRyYSBzcGFjZS4KCj4gKwo+ICsgICAgLyogTDIgQ0FUIG9jY3VwaWVzIG9u ZSBDT1MuICovCj4gKyAgICByZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsMl9jYXRf c2V0X25ld192YWwodWludDY0X3QgdmFsW10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHBzcl92YWxfdHlwZSB0eXBlLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBtKQo+ICt7Cj4gKyAgICBpZiAoIHR5cGUgPT0gUFNSX01BU0tfVFlQ RV9MMl9DQk0gKQo+ICsgICAgewo+ICsgICAgICAgIGlmICggIXBzcl9jaGVja19jYm0oZmVhdC0+ aW5mby5sMl9pbmZvLmNibV9sZW4sIG0pICkKPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICsgICAgICAgIHZhbFswXSA9IG07Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogTDIgQ0FU IG9jY3VwaWVzIG9uZSBDT1MuICovCj4gKyAgICByZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGlj IGludCBsMl9jYXRfZ2V0X3ZhbChjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpmZWF0LCB1bnNpZ25l ZCBpbnQgY29zLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBl IHR5cGUsIHVpbnQ2NF90ICp2YWwpCj4gK3sKPiArICAgIGlmICggdHlwZSAhPSBQU1JfTUFTS19U WVBFX0wyX0NCTSApCj4gKyAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIGlmICggY29zID4g ZmVhdC0+aW5mby5sM19pbmZvLmNvc19tYXggKQo+ICsgICAgICAgIGNvcyA9IDA7Cj4gKwo+ICsg ICAgLyogTDIgQ0FUICovCj4gKyAgICAqdmFsID0gIGZlYXQtPmNvc19yZWdfdmFsW2Nvc107Cj4g Kwo+ICsgICAgcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbDJfY2F0X2dldF9mZWF0 X2luZm8oY29uc3Qgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIHBzcl92YWxfdHlwZSB0eXBlLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdFtdLCB1aW50MzJfdCBhcnJheV9sZW4pCj4gK3sK PiArICAgIGlmICggdHlwZSAhPSBQU1JfTUFTS19UWVBFX0wyX0NCTSB8fCAhZGF0IHx8IDIgPiBh cnJheV9sZW4pCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgZGF0WzBdID0gZmVhdC0+ aW5mby5sMl9pbmZvLmNibV9sZW47Cj4gKyAgICBkYXRbMV0gPSBmZWF0LT5pbmZvLmwyX2luZm8u Y29zX21heDsKPiArCj4gKyAgICByZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIHVuc2lnbmVk IGludCBsMl9jYXRfZ2V0X21heF9jb3NfbWF4KGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQp Cj4gK3sKPiArICAgIHJldHVybiBmZWF0LT5pbmZvLmwyX2luZm8uY29zX21heDsKPiArfQo+ICsK PiArc3RydWN0IGZlYXRfb3BzIGwyX2NhdF9vcHMgPSB7Cj4gKyAgICAuaW5pdF9mZWF0dXJlID0g bDJfY2F0X2luaXRfZmVhdHVyZSwKPiArICAgIC5nZXRfY29zX251bSA9IGwyX2NhdF9nZXRfY29z X251bSwKPiArICAgIC5nZXRfb2xkX3ZhbCA9IGwyX2NhdF9nZXRfb2xkX3ZhbCwKPiArICAgIC5z ZXRfbmV3X3ZhbCA9IGwyX2NhdF9zZXRfbmV3X3ZhbCwKPiArICAgIC5jb21wYXJlX3ZhbCA9IGwy X2NhdF9jb21wYXJlX3ZhbCwKPiArICAgIC5nZXRfY29zX21heF9mcm9tX3R5cGUgPSBsMl9jYXRf Z2V0X2Nvc19tYXhfZnJvbV90eXBlLAo+ICsgICAgLmV4Y2VlZHNfY29zX21heCA9IGwyX2NhdF9l eGNlZWRzX2Nvc19tYXgsCj4gKyAgICAud3JpdGVfbXNyID0gbDJfY2F0X3dyaXRlX21zciwKPiAr ICAgIC5nZXRfdmFsID0gbDJfY2F0X2dldF92YWwsCj4gKyAgICAuZ2V0X2ZlYXRfaW5mbyA9IGwy X2NhdF9nZXRfZmVhdF9pbmZvLAo+ICsgICAgLmdldF9tYXhfY29zX21heCA9IGwyX2NhdF9nZXRf bWF4X2Nvc19tYXgsCj4gK307Cj4gKwo+ICAvKiBMMyBDQVQvQ0RQIGNhbGxiYWNrIGZ1bmN0aW9u cyBpbXBsZW1lbnRhdGlvbi4gKi8KPiAgc3RhdGljIHZvaWQgbDNfY2F0X2luaXRfZmVhdHVyZSh1 bnNpZ25lZCBpbnQgZWF4LCB1bnNpZ25lZCBpbnQgZWJ4LAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlY3gsIHVuc2lnbmVkIGludCBlZHgsCj4gQEAgLTEy MjAsNiArMTQyMCwxMCBAQCBzdGF0aWMgaW50IGNwdV9wcmVwYXJlX3dvcmsodW5zaWduZWQgaW50 IGNwdSkKPiAgICAgICAgICAgKGZlYXRfbDMgPSB4emFsbG9jKHN0cnVjdCBmZWF0X2xpc3QpKSA9 PSBOVUxMICkKPiAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAgCj4gKyAgICBpZiAoIGZlYXRf bDIgPT0gTlVMTCAmJgo+ICsgICAgICAgICAoZmVhdF9sMiA9IHh6YWxsb2Moc3RydWN0IGZlYXRf bGlzdCkpID09IE5VTEwgKQoKSG1tLCBhbmQgbGVhayBmZWF0X2wzIGFuZCB0aGUgb3RoZXIgb25l PwoKPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gICAgICByZXR1cm4gMDsKPiAgfQo+ ICAKPiBAQCAtMTI1NSw2ICsxNDU5LDE4IEBAIHN0YXRpYyB2b2lkIGNwdV9pbml0X3dvcmsodm9p ZCkKPiAgICAgICAgICBmZWF0X3RtcC0+b3BzID0gbDNfY2F0X29wczsKPiAgICAgICAgICBmZWF0 X3RtcC0+b3BzLmluaXRfZmVhdHVyZShlYXgsIGVieCwgZWN4LCBlZHgsIGZlYXRfdG1wLCBpbmZv KTsKPiAgICAgIH0KPiArCj4gKyAgICBjcHVpZF9jb3VudChQU1JfQ1BVSURfTEVWRUxfQ0FULCAw LCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKPiArICAgIGlmICggZWJ4ICYgUFNSX1JFU09VUkNF X1RZUEVfTDIgKQo+ICsgICAgewo+ICsgICAgICAgIGZlYXRfdG1wID0gZmVhdF9sMjsKPiArICAg ICAgICBmZWF0X2wyID0gTlVMTDsKPiArCj4gKyAgICAgICAgLyogSW5pdGlhbGl6ZSBMMiBDQVQg YWNjb3JkaW5nIHRvIENQVUlELiAqLwo+ICsgICAgICAgIGNwdWlkX2NvdW50KFBTUl9DUFVJRF9M RVZFTF9DQVQsIDIsICZlYXgsICZlYngsICZlY3gsICZlZHgpOwo+ICsgICAgICAgIGZlYXRfdG1w LT5vcHMgPSBsMl9jYXRfb3BzOwo+ICsgICAgICAgIGZlYXRfdG1wLT5vcHMuaW5pdF9mZWF0dXJl KGVheCwgZWJ4LCBlY3gsIGVkeCwgZmVhdF90bXAsIGluZm8pOwo+ICsgICAgfQo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBjcHVfZmluaV93b3JrKHVuc2lnbmVkIGludCBjcHUpCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYyBiL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYwo+IGluZGV4 IDhlMTdhOWEuLjZiYmU5OTQgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3N5c2N0bC5jCj4g KysrIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jCj4gQEAgLTE4OSw2ICsxODksMTkgQEAgbG9uZyBh cmNoX2RvX3N5c2N0bCgKPiAgICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gICAgICAg ICAgICAgIGJyZWFrOwo+ICAgICAgICAgIH0KPiArICAgICAgICBjYXNlIFhFTl9TWVNDVExfUFNS X0NBVF9nZXRfbDJfaW5mbzoKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHVpbnQzMl90IGRh dFsyXTsKPiArICAgICAgICAgICAgcmV0ID0gcHNyX2dldF9pbmZvKHN5c2N0bC0+dS5wc3JfY2F0 X29wLnRhcmdldCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9NQVNLX1RZ UEVfTDJfQ0JNLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0LCAyKTsKPiAr ICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jYXRfb3AudS5sMl9pbmZvLmNibV9sZW4gPSBkYXRb MF07CgpXb3VsZCBpdCBtYWtlIHNlbnNlIHRvIGhhdmUgMCBhbmQgMSBiZSBhbiAjZGVmaW5lPwoK VGhhdCB3YXkgaGVyZSBhbmQgaW4gbDJfY2F0X2dldF9mZWF0X2luZm8geW91IGNhbiBqdXN0CnJl ZmVyZW5jZSBieToKCmRhdFtDT1NfTUFYXSA9IC4uCgpBbmQgdGhlbiBkb24ndCBoYXZlIHRvIHdv cnJ5IG9mIGFjY2lkZW50bHkgc3dhcHBpbmcgdGhlIHZhbHVlcy4KCj4gKyAgICAgICAgICAgIHN5 c2N0bC0+dS5wc3JfY2F0X29wLnUubDJfaW5mby5jb3NfbWF4ID0gZGF0WzFdOwo+ICsKPiArICAg ICAgICAgICAgaWYgKCAhcmV0ICYmIF9fY29weV9maWVsZF90b19ndWVzdCh1X3N5c2N0bCwgc3lz Y3RsLCB1LnBzcl9jYXRfb3ApICkKPiArICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4g KyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiAgICAgICAgICBkZWZhdWx0Ogo+ICAg ICAgICAgICAgICByZXQgPSAtRU9QTk9UU1VQUDsKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5jbHVkZS9h c20teDg2L21zci1pbmRleC5oCj4gaW5kZXggZGViODJhNy4uOTkyMDJmMyAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9tc3ItaW5kZXguaAo+IEBAIC0zNDIsNiArMzQyLDcgQEAKPiAgI2RlZmluZSBNU1JfSUEz Ml9QU1JfTDNfTUFTSyhuKQkoMHgwMDAwMGM5MCArIChuKSkKPiAgI2RlZmluZSBNU1JfSUEzMl9Q U1JfTDNfTUFTS19DT0RFKG4pCSgweDAwMDAwYzkwICsgKG4pICogMiArIDEpCj4gICNkZWZpbmUg TVNSX0lBMzJfUFNSX0wzX01BU0tfREFUQShuKQkoMHgwMDAwMGM5MCArIChuKSAqIDIpCj4gKyNk ZWZpbmUgTVNSX0lBMzJfUFNSX0wyX01BU0sobikJCSgweDAwMDAwZDEwICsgKG4pKQoKU29tZXRo aW5nIGlzIG9mZiBoZXJlPyBUYWJzPwo+ICAKPiAgLyogSW50ZWwgTW9kZWwgNiAqLwo+ICAjZGVm aW5lIE1TUl9QNl9QRVJGQ1RSKG4pCQkoMHgwMDAwMDBjMSArIChuKSkKPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKPiBp bmRleCBlZjQ2ZDEyLi4xMDFhNzZhIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv cHNyLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCj4gQEAgLTIzLDYgKzIzLDcg QEAKPiAgCj4gIC8qIFJlc291cmNlIFR5cGUgRW51bWVyYXRpb24gKi8KPiAgI2RlZmluZSBQU1Jf UkVTT1VSQ0VfVFlQRV9MMyAgICAgICAgICAgIDB4Mgo+ICsjZGVmaW5lIFBTUl9SRVNPVVJDRV9U WVBFX0wyICAgICAgICAgICAgMHg0Cj4gIAo+ICAvKiBMMyBNb25pdG9yaW5nIEZlYXR1cmVzICov Cj4gICNkZWZpbmUgUFNSX0NNVF9MM19PQ0NVUEFOQ1kgICAgICAgICAgIDB4MQo+IEBAIC01MCw2 ICs1MSw3IEBAIGVudW0gcHNyX3ZhbF90eXBlIHsKPiAgICAgIFBTUl9NQVNLX1RZUEVfTDNfQ0JN LAo+ICAgICAgUFNSX01BU0tfVFlQRV9MM19DT0RFLAo+ICAgICAgUFNSX01BU0tfVFlQRV9MM19E QVRBLAo+ICsgICAgUFNSX01BU0tfVFlQRV9MMl9DQk0sCj4gIH07Cj4gIAo+ICBleHRlcm4gc3Ry dWN0IHBzcl9jbXQgKnBzcl9jbXQ7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9k b21jdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAo+IGluZGV4IGRkZDNkZTQuLjhh MzAyOTkgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCj4gKysrIGIv eGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCj4gQEAgLTExMzYsNiArMTEzNiw4IEBAIHN0cnVj dCB4ZW5fZG9tY3RsX3Bzcl9jYXRfb3Agewo+ICAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9P UF9TRVRfTDNfREFUQSAgICAzCj4gICNkZWZpbmUgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9M M19DT0RFICAgIDQKPiAgI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0RBVEEg ICAgNQo+ICsjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNICAgICA2Cj4g KyNkZWZpbmUgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk0gICAgIDcKPiAgICAgIHVp bnQzMl90IGNtZDsgICAgICAgLyogSU46IFhFTl9ET01DVExfUFNSX0NBVF9PUF8qICovCj4gICAg ICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICovCj4gICAgICB1aW50NjRfdCBkYXRhOyAgICAg IC8qIElOL09VVCAqLwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKPiBpbmRleCA4MTk3YzE0Li41MGZmNjFjIDEw MDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAo+ICsrKyBiL3hlbi9pbmNs dWRlL3B1YmxpYy9zeXNjdGwuaAo+IEBAIC03MzQsNiArNzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGVuX3N5c2N0bF9wY2l0b3BvaW5mbyB4ZW5fc3lzY3RsX3BjaXRvcG9pbmZvX3Q7Cj4gIERFRklO RV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfcGNpdG9wb2luZm9fdCk7Cj4gIAo+ICAjZGVm aW5lIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5mbyAgICAgICAgICAgICAgIDAKPiArI2Rl ZmluZSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm8gICAgICAgICAgICAgICAxCj4gIHN0 cnVjdCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3Agewo+ICAgICAgdWludDMyX3QgY21kOyAgICAgICAv KiBJTjogWEVOX1NZU0NUTF9QU1JfQ0FUXyogKi8KPiAgICAgIHVpbnQzMl90IHRhcmdldDsgICAg LyogSU4gKi8KPiBAQCAtNzQ0LDYgKzc0NSwxMSBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF9wc3JfY2F0 X29wIHsKPiAgI2RlZmluZSBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNfQ0RQICAgICAgICgxdSA8PCAw KQo+ICAgICAgICAgICAgICB1aW50MzJfdCBmbGFnczsgICAgIC8qIE9VVDogQ0FUIGZsYWdzICov Cj4gICAgICAgICAgfSBsM19pbmZvOwo+ICsKCkV4dHJhIHNwYWNlPwoKPiArICAgICAgICBzdHJ1 Y3Qgewo+ICsgICAgICAgICAgICB1aW50MzJfdCBjYm1fbGVuOyAgIC8qIE9VVDogQ0JNIGxlbmd0 aCAqLwo+ICsgICAgICAgICAgICB1aW50MzJfdCBjb3NfbWF4OyAgIC8qIE9VVDogTWF4aW11bSBD T1MgKi8KPiArICAgICAgICB9IGwyX2luZm87Cj4gICAgICB9IHU7Cj4gIH07Cj4gIHR5cGVkZWYg c3RydWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9vcCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3BfdDsKPiAt LSAKPiAyLjcuNAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCj4gaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==