From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v10 1/6] VT-d: Introduce new fields in msi_desc to track binding with guest interrupt Date: Wed, 15 Mar 2017 13:11:17 +0800 Message-ID: <1489554682-6126-2-git-send-email-chao.gao@intel.com> References: <1489554682-6126-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489554682-6126-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Feng Wu , Jun Nakajima , George Dunlap , Andrew Cooper , Dario Faggioli , Jan Beulich , Chao Gao List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCBtc2lfbXNnX3RvX3JlbWFwX2VudHJ5IGlzIGJ1Z2d5IHdoZW4gdGhlIGxpdmUg SVJURSBpcyBpbiBwb3N0ZWQKZm9ybWF0LiBTdHJhaWdodGZvcndhcmRseSwgd2UgY2FuIGxldCBj YWxsZXIgc3BlY2lmeSB3aGljaCBmb3JtYXQgb2YgSVJURSB0aGV5CndhbnQgdXBkYXRlIHRvLiBC dXQgdGhlIHByb2JsZW0gaXMgY3VycmVudCBjYWxsZXJzIGFyZSBub3QgYXdhcmUgb2YgdGhlCmJp bmRpbmcgd2l0aCBndWVzdCBpbnRlcnJ1cHQuIE1ha2luZyBhbGwgY2FsbGVycyBiZSBhd2FyZSBv ZiB0aGUgYmluZGluZyB3aXRoCmd1ZXN0IGludGVycnVwdCB3aWxsIGNhdXNlIGEgZmFyIG1vcmUg Y29tcGxpY2F0ZWQgY2hhbmdlLiBBbHNvIHNvbWUgY2FsbGluZ3MKaGFwcGVuIGluIGludGVycnVw dCBjb250ZXh0IHdoZXJlIHRoZXkgY2FuJ3QgYWNxdWlyZSBkLT5ldmVudF9sb2NrIHRvIHJlYWQK c3RydWN0IGh2bV9waXJxX2RwY2kuCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIG5ldyBmaWVs ZHMgaW4gbXNpX2Rlc2MgdG8gdHJhY2sgYmluZGluZyB3aXRoIGEgZ3Vlc3QKaW50ZXJydXB0IHN1 Y2ggdGhhdCBtc2lfbXNnX3RvX3JlbWFwX2VudHJ5KCkgY2FuIGdldCB0aGUgYmluZGluZyBhbmQg dXBkYXRlCklSVEUgYWNjb3JkaW5nbHkuIEFmdGVyIHRoYXQgY2hhbmdlLCBwaV91cGRhdGVfaXJ0 ZSgpIGNhbiB1dGlsaXplCm1zaV9tc2dfdG9fcmVtYXBfZW50cnkoKSB0byB1cGRhdGUgSVJURSB0 byBwb3N0ZWQgZm9ybWF0LgoKU2lnbmVkLW9mZi1ieTogRmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Ci0tLQp2MTA6 Ci0gTmV3bHkgYWRkZWQuCgogeGVuL2FyY2gveDg2L21zaS5jICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2ludHJlbWFwLmMgfCAxNDggKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L21zaS5o ICAgICAgICAgICAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyks IDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbXNpLmMgYi94ZW4v YXJjaC94ODYvbXNpLmMKaW5kZXggYTg2ODAwNy4uMzM3NGNkNCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L21zaS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tc2kuYwpAQCAtNTc4LDYgKzU3OCw3IEBA IHN0YXRpYyBzdHJ1Y3QgbXNpX2Rlc2MgKmFsbG9jX21zaV9lbnRyeSh1bnNpZ25lZCBpbnQgbnIp CiAgICAgICAgIGVudHJ5W25yXS5kZXYgPSBOVUxMOwogICAgICAgICBlbnRyeVtucl0uaXJxID0g LTE7CiAgICAgICAgIGVudHJ5W25yXS5yZW1hcF9pbmRleCA9IC0xOworICAgICAgICBlbnRyeVtu cl0ucGlfZGVzYyA9IE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIGVudHJ5OwpkaWZmIC0tZ2l0 IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2ludHJlbWFwLmMgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC92dGQvaW50cmVtYXAuYwppbmRleCBiZmQ0NjhiLi42MjAyZWNlIDEwMDY0NAot LS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW50cmVtYXAuYworKysgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW50cmVtYXAuYwpAQCAtNTUyLDExICs1NTIsMTIgQEAgc3Rh dGljIGludCBtc2lfbXNnX3RvX3JlbWFwX2VudHJ5KAogICAgIHN0cnVjdCBtc2lfZGVzYyAqbXNp X2Rlc2MsIHN0cnVjdCBtc2lfbXNnICptc2cpCiB7CiAgICAgc3RydWN0IGlyZW1hcF9lbnRyeSAq aXJlbWFwX2VudHJ5ID0gTlVMTCwgKmlyZW1hcF9lbnRyaWVzOwotICAgIHN0cnVjdCBpcmVtYXBf ZW50cnkgbmV3X2lyZTsKKyAgICBzdHJ1Y3QgaXJlbWFwX2VudHJ5IG5ld19pcmUgPSB7ezB9fTsK ICAgICBzdHJ1Y3QgbXNpX21zZ19yZW1hcF9lbnRyeSAqcmVtYXBfcnRlOwogICAgIHVuc2lnbmVk IGludCBpbmRleCwgaSwgbnIgPSAxOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3Ry dWN0IGlyX2N0cmwgKmlyX2N0cmwgPSBpb21tdV9pcl9jdHJsKGlvbW11KTsKKyAgICBjb25zdCBz dHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYyA9IG1zaV9kZXNjLT5waV9kZXNjOwogCiAgICAgaWYgKCBt c2lfZGVzYy0+bXNpX2F0dHJpYi50eXBlID09IFBDSV9DQVBfSURfTVNJICkKICAgICAgICAgbnIg PSBtc2lfZGVzYy0+bXNpLm52ZWM7CkBAIC01OTUsMzMgKzU5NiwzNSBAQCBzdGF0aWMgaW50IG1z aV9tc2dfdG9fcmVtYXBfZW50cnkoCiAgICAgR0VUX0lSRU1BUF9FTlRSWShpcl9jdHJsLT5pcmVt YXBfbWFkZHIsIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgaXJlbWFwX2VudHJpZXMsIGly ZW1hcF9lbnRyeSk7CiAKLSAgICBtZW1jcHkoJm5ld19pcmUsIGlyZW1hcF9lbnRyeSwgc2l6ZW9m KHN0cnVjdCBpcmVtYXBfZW50cnkpKTsKLQotICAgIC8qIFNldCBpbnRlcnJ1cHQgcmVtYXBwaW5n IHRhYmxlIGVudHJ5ICovCi0gICAgbmV3X2lyZS5yZW1hcC5mcGQgPSAwOwotICAgIG5ld19pcmUu cmVtYXAuZG0gPSAobXNnLT5hZGRyZXNzX2xvID4+IE1TSV9BRERSX0RFU1RNT0RFX1NISUZUKSAm IDB4MTsKLSAgICBuZXdfaXJlLnJlbWFwLnRtID0gKG1zZy0+ZGF0YSA+PiBNU0lfREFUQV9UUklH R0VSX1NISUZUKSAmIDB4MTsKLSAgICBuZXdfaXJlLnJlbWFwLmRsbSA9IChtc2ctPmRhdGEgPj4g TVNJX0RBVEFfREVMSVZFUllfTU9ERV9TSElGVCkgJiAweDE7Ci0gICAgLyogSGFyZHdhcmUgcmVx dWlyZSBSSCA9IDEgZm9yIExQUiBkZWxpdmVyeSBtb2RlICovCi0gICAgbmV3X2lyZS5yZW1hcC5y aCA9IChuZXdfaXJlLnJlbWFwLmRsbSA9PSBkZXN0X0xvd2VzdFByaW8pOwotICAgIG5ld19pcmUu cmVtYXAuYXZhaWwgPSAwOwotICAgIG5ld19pcmUucmVtYXAucmVzXzEgPSAwOwotICAgIG5ld19p cmUucmVtYXAudmVjdG9yID0gKG1zZy0+ZGF0YSA+PiBNU0lfREFUQV9WRUNUT1JfU0hJRlQpICYK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0lfREFUQV9WRUNUT1JfTUFTSzsKLSAgICBu ZXdfaXJlLnJlbWFwLnJlc18yID0gMDsKLSAgICBpZiAoIHgyYXBpY19lbmFibGVkICkKLSAgICAg ICAgbmV3X2lyZS5yZW1hcC5kc3QgPSBtc2ctPmRlc3QzMjsKKyAgICBpZiAoICFwaV9kZXNjICkK KyAgICB7CisgICAgICAgIG5ld19pcmUucmVtYXAuZG0gPSBtc2ctPmFkZHJlc3NfbG8gPj4gTVNJ X0FERFJfREVTVE1PREVfU0hJRlQ7CisgICAgICAgIG5ld19pcmUucmVtYXAudG0gPSBtc2ctPmRh dGEgPj4gTVNJX0RBVEFfVFJJR0dFUl9TSElGVDsKKyAgICAgICAgbmV3X2lyZS5yZW1hcC5kbG0g PSBtc2ctPmRhdGEgPj4gTVNJX0RBVEFfREVMSVZFUllfTU9ERV9TSElGVDsKKyAgICAgICAgLyog SGFyZHdhcmUgcmVxdWlyZSBSSCA9IDEgZm9yIExQUiBkZWxpdmVyeSBtb2RlICovCisgICAgICAg IG5ld19pcmUucmVtYXAucmggPSAobmV3X2lyZS5yZW1hcC5kbG0gPT0gZGVzdF9Mb3dlc3RQcmlv KTsKKyAgICAgICAgbmV3X2lyZS5yZW1hcC52ZWN0b3IgPSAobXNnLT5kYXRhID4+IE1TSV9EQVRB X1ZFQ1RPUl9TSElGVCkgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0lfREFU QV9WRUNUT1JfTUFTSzsKKyAgICAgICAgaWYgKCB4MmFwaWNfZW5hYmxlZCApCisgICAgICAgICAg ICBuZXdfaXJlLnJlbWFwLmRzdCA9IG1zZy0+ZGVzdDMyOworICAgICAgICBlbHNlCisgICAgICAg ICAgICBuZXdfaXJlLnJlbWFwLmRzdCA9CisgICAgICAgICAgICAgICAgTUFTS19FWFRSKG1zZy0+ YWRkcmVzc19sbywgTVNJX0FERFJfREVTVF9JRF9NQVNLKSA8PCA4OworICAgICAgICBuZXdfaXJl LnJlbWFwLnAgPSAxOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIG5ld19pcmUucmVtYXAuZHN0 ID0gKChtc2ctPmFkZHJlc3NfbG8gPj4gTVNJX0FERFJfREVTVF9JRF9TSElGVCkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJiAweGZmKSA8PCA4OworICAgIHsKKyAgICAgICAgbmV3X2ly ZS5wb3N0LmltID0gMTsKKyAgICAgICAgbmV3X2lyZS5wb3N0LnZlY3RvciA9IG1zaV9kZXNjLT5n dmVjOworICAgICAgICBuZXdfaXJlLnBvc3QucGRhX2wgPSB2aXJ0X3RvX21hZGRyKHBpX2Rlc2Mp ID4+ICgzMiAtIFBEQV9MT1dfQklUKTsKKyAgICAgICAgbmV3X2lyZS5wb3N0LnBkYV9oID0gdmly dF90b19tYWRkcihwaV9kZXNjKSA+PiAzMjsKKyAgICAgICAgbmV3X2lyZS5wb3N0LnAgPSAxOwor ICAgIH0KIAogICAgIGlmICggcGRldiApCiAgICAgICAgIHNldF9tc2lfc291cmNlX2lkKHBkZXYs ICZuZXdfaXJlKTsKICAgICBlbHNlCiAgICAgICAgIHNldF9ocGV0X3NvdXJjZV9pZChtc2lfZGVz Yy0+aHBldF9pZCwgJm5ld19pcmUpOwotICAgIG5ld19pcmUucmVtYXAucmVzXzMgPSAwOwotICAg IG5ld19pcmUucmVtYXAucmVzXzQgPSAwOwotICAgIG5ld19pcmUucmVtYXAucCA9IDE7ICAgIC8q IGZpbmFsbHksIHNldCBwcmVzZW50IGJpdCAqLwogCiAgICAgLyogbm93IGNvbnN0cnVjdCBuZXcg TVNJL01TSS1YIHJ0ZSBlbnRyeSAqLwogICAgIHJlbWFwX3J0ZSA9IChzdHJ1Y3QgbXNpX21zZ19y ZW1hcF9lbnRyeSAqKW1zZzsKQEAgLTkwMiw0MiArOTA1LDYgQEAgdm9pZCBpb21tdV9kaXNhYmxl X3gyYXBpY19JUih2b2lkKQogICAgICAgICBkaXNhYmxlX3FpbnZhbChkcmhkLT5pb21tdSk7CiB9 CiAKLXN0YXRpYyB2b2lkIHNldHVwX3Bvc3RlZF9pcnRlKAotICAgIHN0cnVjdCBpcmVtYXBfZW50 cnkgKm5ld19pcmUsIGNvbnN0IHN0cnVjdCBpcmVtYXBfZW50cnkgKm9sZF9pcmUsCi0gICAgY29u c3Qgc3RydWN0IHBpX2Rlc2MgKnBpX2Rlc2MsIGNvbnN0IHVpbnQ4X3QgZ3ZlYykKLXsKLSAgICBt ZW1zZXQobmV3X2lyZSwgMCwgc2l6ZW9mKCpuZXdfaXJlKSk7Ci0KLSAgICAvKgotICAgICAqICdp bScgZmlsZWQgZGVjaWRlcyB3aGV0aGVyIHRoZSBpcnRlIGlzIGluIHBvc3RlZCBmb3JtYXQgKHdp dGggdmFsdWUgMSkKLSAgICAgKiBvciByZW1hcHBlZCBmb3JtYXQgKHdpdGggdmFsdWUgMCksIGlm IHRoZSBvbGQgaXJ0ZSBpcyBpbiByZW1hcHBlZCBmb3JtYXQsCi0gICAgICogd2UgY29weSB0aGlu Z3MgZnJvbSByZW1hcHBlZCBwYXJ0IGluICdzdHJ1Y3QgaXJlbWFwX2VudHJ5Jywgb3RoZXJ3aXNl LAotICAgICAqIHdlIGNvcHkgZnJvbSBwb3N0ZWQgcGFydC4KLSAgICAgKi8KLSAgICBpZiAoICFv bGRfaXJlLT5yZW1hcC5pbSApCi0gICAgewotICAgICAgICBuZXdfaXJlLT5wb3N0LnAgPSBvbGRf aXJlLT5yZW1hcC5wOwotICAgICAgICBuZXdfaXJlLT5wb3N0LmZwZCA9IG9sZF9pcmUtPnJlbWFw LmZwZDsKLSAgICAgICAgbmV3X2lyZS0+cG9zdC5zaWQgPSBvbGRfaXJlLT5yZW1hcC5zaWQ7Ci0g ICAgICAgIG5ld19pcmUtPnBvc3Quc3EgPSBvbGRfaXJlLT5yZW1hcC5zcTsKLSAgICAgICAgbmV3 X2lyZS0+cG9zdC5zdnQgPSBvbGRfaXJlLT5yZW1hcC5zdnQ7Ci0gICAgfQotICAgIGVsc2UKLSAg ICB7Ci0gICAgICAgIG5ld19pcmUtPnBvc3QucCA9IG9sZF9pcmUtPnBvc3QucDsKLSAgICAgICAg bmV3X2lyZS0+cG9zdC5mcGQgPSBvbGRfaXJlLT5wb3N0LmZwZDsKLSAgICAgICAgbmV3X2lyZS0+ cG9zdC5zaWQgPSBvbGRfaXJlLT5wb3N0LnNpZDsKLSAgICAgICAgbmV3X2lyZS0+cG9zdC5zcSA9 IG9sZF9pcmUtPnBvc3Quc3E7Ci0gICAgICAgIG5ld19pcmUtPnBvc3Quc3Z0ID0gb2xkX2lyZS0+ cG9zdC5zdnQ7Ci0gICAgICAgIG5ld19pcmUtPnBvc3QudXJnID0gb2xkX2lyZS0+cG9zdC51cmc7 Ci0gICAgfQotCi0gICAgbmV3X2lyZS0+cG9zdC5pbSA9IDE7Ci0gICAgbmV3X2lyZS0+cG9zdC52 ZWN0b3IgPSBndmVjOwotICAgIG5ld19pcmUtPnBvc3QucGRhX2wgPSB2aXJ0X3RvX21hZGRyKHBp X2Rlc2MpID4+ICgzMiAtIFBEQV9MT1dfQklUKTsKLSAgICBuZXdfaXJlLT5wb3N0LnBkYV9oID0g dmlydF90b19tYWRkcihwaV9kZXNjKSA+PiAzMjsKLX0KLQogLyoKICAqIFRoaXMgZnVuY3Rpb24g aXMgdXNlZCB0byB1cGRhdGUgdGhlIElSVEUgZm9yIHBvc3RlZC1pbnRlcnJ1cHQKICAqIHdoZW4g Z3Vlc3QgY2hhbmdlcyBNU0kvTVNJLVggaW5mb3JtYXRpb24uCkBAIC05NDYsMTcgKzkxMyw5IEBA IGludCBwaV91cGRhdGVfaXJ0ZShjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgY29uc3Qgc3RydWN0IHBp cnEgKnBpcnEsCiAgICAgY29uc3QgdWludDhfdCBndmVjKQogewogICAgIHN0cnVjdCBpcnFfZGVz YyAqZGVzYzsKLSAgICBjb25zdCBzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjOwotICAgIGludCBy ZW1hcF9pbmRleDsKLSAgICBpbnQgcmMgPSAwOwotICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpw Y2lfZGV2OwotICAgIGNvbnN0IHN0cnVjdCBhY3BpX2RyaGRfdW5pdCAqZHJoZDsKLSAgICBzdHJ1 Y3QgaW9tbXUgKmlvbW11OwotICAgIHN0cnVjdCBpcl9jdHJsICppcl9jdHJsOwotICAgIHN0cnVj dCBpcmVtYXBfZW50cnkgKmlyZW1hcF9lbnRyaWVzID0gTlVMTCwgKnAgPSBOVUxMOwotICAgIHN0 cnVjdCBpcmVtYXBfZW50cnkgbmV3X2lyZSwgb2xkX2lyZTsKKyAgICBzdHJ1Y3QgbXNpX2Rlc2Mg Km1zaV9kZXNjOwogICAgIGNvbnN0IHN0cnVjdCBwaV9kZXNjICpwaV9kZXNjID0gJnYtPmFyY2gu aHZtX3ZteC5waV9kZXNjOwotICAgIF9fdWludDEyOF90IHJldDsKKyAgICBpbnQgcmM7CiAKICAg ICBkZXNjID0gcGlycV9zcGluX2xvY2tfaXJxX2Rlc2MocGlycSwgTlVMTCk7CiAgICAgaWYgKCAh ZGVzYyApCkBAIC05NjgsNTkgKzkyNywxNCBAQCBpbnQgcGlfdXBkYXRlX2lydGUoY29uc3Qgc3Ry dWN0IHZjcHUgKnYsIGNvbnN0IHN0cnVjdCBwaXJxICpwaXJxLAogICAgICAgICByYyA9IC1FTk9E RVY7CiAgICAgICAgIGdvdG8gdW5sb2NrX291dDsKICAgICB9Ci0KLSAgICBwY2lfZGV2ID0gbXNp X2Rlc2MtPmRldjsKLSAgICBpZiAoICFwY2lfZGV2ICkKLSAgICB7Ci0gICAgICAgIHJjID0gLUVO T0RFVjsKLSAgICAgICAgZ290byB1bmxvY2tfb3V0OwotICAgIH0KLQotICAgIHJlbWFwX2luZGV4 ID0gbXNpX2Rlc2MtPnJlbWFwX2luZGV4OworICAgIG1zaV9kZXNjLT5waV9kZXNjID0gcGlfZGVz YzsKKyAgICBtc2lfZGVzYy0+Z3ZlYyA9IGd2ZWM7CiAKICAgICBzcGluX3VubG9ja19pcnEoJmRl c2MtPmxvY2spOwogCiAgICAgQVNTRVJUKHBjaWRldnNfbG9ja2VkKCkpOwotCi0gICAgLyoKLSAg ICAgKiBGSVhNRTogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgd2Ugc2hvdWxkIHN0b3JlIHRoZSAn aW9tbXUnIHBvaW50ZXIgaW4KLSAgICAgKiAnc3RydWN0IG1zaV9kZXNjJyBpbiBzb21lIG90aGVy IHBsYWNlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhc3RlCi0gICAgICogdGltZSBzZWFyY2hpbmcg aXQgaGVyZS4KLSAgICAgKi8KLSAgICBkcmhkID0gYWNwaV9maW5kX21hdGNoZWRfZHJoZF91bml0 KHBjaV9kZXYpOwotICAgIGlmICggIWRyaGQgKQotICAgICAgICByZXR1cm4gLUVOT0RFVjsKLQot ICAgIGlvbW11ID0gZHJoZC0+aW9tbXU7Ci0gICAgaXJfY3RybCA9IGlvbW11X2lyX2N0cmwoaW9t bXUpOwotICAgIGlmICggIWlyX2N0cmwgKQotICAgICAgICByZXR1cm4gLUVOT0RFVjsKLQotICAg IHNwaW5fbG9ja19pcnEoJmlyX2N0cmwtPmlyZW1hcF9sb2NrKTsKLQotICAgIEdFVF9JUkVNQVBf RU5UUlkoaXJfY3RybC0+aXJlbWFwX21hZGRyLCByZW1hcF9pbmRleCwgaXJlbWFwX2VudHJpZXMs IHApOwotCi0gICAgb2xkX2lyZSA9ICpwOwotCi0gICAgLyogU2V0dXAvVXBkYXRlIGludGVycnVw dCByZW1hcHBpbmcgdGFibGUgZW50cnkuICovCi0gICAgc2V0dXBfcG9zdGVkX2lydGUoJm5ld19p cmUsICZvbGRfaXJlLCBwaV9kZXNjLCBndmVjKTsKLSAgICByZXQgPSBjbXB4Y2hnMTZiKHAsICZv bGRfaXJlLCAmbmV3X2lyZSk7Ci0KLSAgICAvKgotICAgICAqIEluIHRoZSBhYm92ZSwgd2UgdXNl IGNtcHhjaGcxNiB0byBhdG9taWNhbGx5IHVwZGF0ZSB0aGUgMTI4LWJpdCBJUlRFLAotICAgICAq IGFuZCB0aGUgaGFyZHdhcmUgY2Fubm90IHVwZGF0ZSB0aGUgSVJURSBiZWhpbmQgdXMsIHNvIHRo ZSByZXR1cm4gdmFsdWUKLSAgICAgKiBvZiBjbXB4Y2hnMTYgc2hvdWxkIGJlIHRoZSBzYW1lIGFz IG9sZF9pcmUuIFRoaXMgQVNTRVJUIHZhbGlkYXRlIGl0LgotICAgICAqLwotICAgIEFTU0VSVChy ZXQgPT0gb2xkX2lyZS52YWwpOwotCi0gICAgaW9tbXVfZmx1c2hfY2FjaGVfZW50cnkocCwgc2l6 ZW9mKCpwKSk7Ci0gICAgaW9tbXVfZmx1c2hfaWVjX2luZGV4KGlvbW11LCAwLCByZW1hcF9pbmRl eCk7Ci0KLSAgICB1bm1hcF92dGRfZG9tYWluX3BhZ2UoaXJlbWFwX2VudHJpZXMpOwotCi0gICAg c3Bpbl91bmxvY2tfaXJxKCZpcl9jdHJsLT5pcmVtYXBfbG9jayk7Ci0KLSAgICByZXR1cm4gMDsK KyAgICByYyA9IGlvbW11X3VwZGF0ZV9pcmVfZnJvbV9tc2kobXNpX2Rlc2MsICZtc2lfZGVzYy0+ bXNnKTsKKyAgICByZXR1cm4gcmM7CiAKICB1bmxvY2tfb3V0OgogICAgIHNwaW5fdW5sb2NrX2ly cSgmZGVzYy0+bG9jayk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21zaS5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9tc2kuaAppbmRleCA5YzAyOTQ1Li4zMjg2NjkyIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zaS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv bXNpLmgKQEAgLTExOCw2ICsxMTgsOCBAQCBzdHJ1Y3QgbXNpX2Rlc2MgewogCXN0cnVjdCBtc2lf bXNnIG1zZzsJCS8qIExhc3Qgc2V0IE1TSSBtZXNzYWdlICovCiAKIAlpbnQgcmVtYXBfaW5kZXg7 CQkvKiBpbmRleCBpbiBpbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlICovCisJY29uc3Qgdm9pZCAq cGlfZGVzYzsJCS8qIFBEQSwgaW5kaWNhdGVzIG1zaSBpcyBkZWxpdmVyZWQgdmlhIFZULWQgUEkg Ki8KKwl1aW50OF90IGd2ZWM7CQkJLyogZ3Vlc3QgdmVjdG9yLiB2YWxpZCB3aGVuIHBpX2Rlc2Mg aXNuJ3QgTlVMTCAqLwogfTsKIAogLyoKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK