From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v9 5/8] VT-d: Introduce a new function update_irte_for_msi_common Date: Mon, 27 Feb 2017 09:45:46 +0800 Message-ID: <1488159949-15011-6-git-send-email-chao.gao@intel.com> References: <1488159949-15011-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: <1488159949-15011-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 Qm90aCBwaV91cGRhdGVfaXJ0ZSgpIGFuZCBtc2lfbXNnX3RvX3JlbWFwX2VudHJ5KCkgdXBkYXRl IHRoZSBjb250ZW50IG9mIElSVEU7CmJlc2lkZXMsIHRoZSBjdXJyZW50IG1zaV9tc2dfdG9fcmVt YXBfZW50cnkgaXMgYnVnZ3kgd2hlbiB0aGUgbGl2ZSBJUlRFIGlzIGluCnBvc3RlZCBmb3JtYXQu IFRoaXMgcGF0Y2ggdHJ5IHRvIHJld29yayB0aGVzZSB0d28gZnVuY3Rpb25zIHRvIG1ha2UgdGhl bQpjbGVhcmVyIGJ5IG1vdmluZyB0aGVpciBjb21tb24gcGFydCB0byB0aGUgbmV3IGZ1bmN0aW9u LgoKU2lnbmVkLW9mZi1ieTogRmVuZyBXdSA8ZmVuZy53dUBpbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Ci0tLQp2OToKLSBOZXdseSBhZGRlZC4K CiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW50cmVtYXAuYyB8IDIzMiArKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygr KSwgMTAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3Z0ZC9pbnRyZW1hcC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2ludHJlbWFwLmMK aW5kZXggYmZkNDY4Yi4uNDI2OWNkNCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvdnRkL2ludHJlbWFwLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2ludHJl bWFwLmMKQEAgLTQyMCw3ICs0MjAsOCBAQCB2b2lkIGlvX2FwaWNfd3JpdGVfcmVtYXBfcnRlKAog ICAgICAgICBfX2lvYXBpY193cml0ZV9lbnRyeShhcGljLCBpb2FwaWNfcGluLCAxLCBvbGRfcnRl KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0X21zaV9zb3VyY2VfaWQoc3RydWN0IHBjaV9kZXYgKnBk ZXYsIHN0cnVjdCBpcmVtYXBfZW50cnkgKmlyZSkKK3N0YXRpYyB2b2lkIHNldF9tc2lfc291cmNl X2lkKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGlyZW1hcF9lbnRyeSAqaXJlKQogewogICAgIHUxNiBzZWc7CiAgICAgdTgg YnVzLCBkZXZmbiwgc2VjYnVzOwpAQCAtNTQ3LDE2ICs1NDgsMTE2IEBAIHN0YXRpYyBpbnQgcmVt YXBfZW50cnlfdG9fbXNpX21zZygKICAgICByZXR1cm4gMDsKIH0KIAorLyoKKyAqIFRoaXMgZnVu Y3Rpb24gaXMgYSBjb21tb24gaW50ZXJmYWNlIHRvIHVwZGF0ZSBpcnRlIGZvciBtc2kgY2FzZS4K KyAqCisgKiBJZiBAcGlfZGVzYyAhPSBOVUxMIGFuZCBAZ3ZlYyAhPSAwLCB0aGUgSVJURSB3aWxs IGJlIHVwZGF0ZWQgdG8gYSBwb3N0ZWQKKyAqIGZvcm1hdC4gSW4gdGhpcyBjYXNlLCBAbXNnIGlz IGlnbm9yZWQgYmVjYXVzZSBjb25zdHJ1Y3RpbmcgYSBwb3N0ZWQgZm9ybWF0CisgKiBJUlRFIGRv ZXNuJ3QgbmVlZCBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1zaSBhZGRyZXNzIG9yIG1zaSBk YXRhLgorICoKKyAqIElmIEBwaV9kZXNjID09IE5VTEwgYW5kIEBndmVjID09IDAsIHRoZSBJUlRF IHdpbGwgYmUgdXBkYXRlZCB0byBhIHJlbWFwcGVkCisgKiBmb3JtYXQuIEluIHRoaXMgY2FzZSwg QG1zZyBjYW4ndCBiZSBOVUxMLgorICoKKyAqIEFzc3VtZSAnaXJfY3RybC0+aXJlbWFwX2xvY2sn IGhhcyBiZWVuIGFjcXVpcmVkIGFuZCB0aGUgcmVtYXBfaW5kZXgKKyAqIG9mIG1zaV9kZXNjIGhh cyBhIGJlbmlnbiB2YWx1ZS4KKyAqLworc3RhdGljIGludCB1cGRhdGVfaXJ0ZV9mb3JfbXNpX2Nv bW1vbigKKyAgICBzdHJ1Y3QgaW9tbXUgKmlvbW11LCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRl diwKKyAgICBjb25zdCBzdHJ1Y3QgbXNpX2Rlc2MgKm1zaV9kZXNjLCBzdHJ1Y3QgbXNpX21zZyAq bXNnLAorICAgIGNvbnN0IHN0cnVjdCBwaV9kZXNjICpwaV9kZXNjLCBjb25zdCB1aW50OF90IGd2 ZWMpCit7CisgICAgc3RydWN0IGlyZW1hcF9lbnRyeSAqaXJlbWFwX2VudHJ5ID0gTlVMTCwgKmly ZW1hcF9lbnRyaWVzOworICAgIHN0cnVjdCBpcmVtYXBfZW50cnkgbmV3X2lyZSA9IHt7MH19Owor ICAgIHVuc2lnbmVkIGludCBpbmRleCA9IG1zaV9kZXNjLT5yZW1hcF9pbmRleDsKKyAgICBzdHJ1 Y3QgaXJfY3RybCAqaXJfY3RybCA9IGlvbW11X2lyX2N0cmwoaW9tbXUpOworCisgICAgQVNTRVJU KCBpcl9jdHJsICk7CisgICAgQVNTRVJUKCBzcGluX2lzX2xvY2tlZCgmaXJfY3RybC0+aXJlbWFw X2xvY2spICk7CisgICAgQVNTRVJUKCAoaW5kZXggPj0gMCkgJiYgKGluZGV4IDwgSVJFTUFQX0VO VFJZX05SKSApOworCisgICAgaWYgKCAoIXBpX2Rlc2MgJiYgZ3ZlYykgfHwgKHBpX2Rlc2MgJiYg IWd2ZWMpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICFwaV9kZXNjICYm ICFndmVjICYmICFtc2cgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIEdFVF9JUkVN QVBfRU5UUlkoaXJfY3RybC0+aXJlbWFwX21hZGRyLCBpbmRleCwKKyAgICAgICAgICAgICAgICAg ICAgIGlyZW1hcF9lbnRyaWVzLCBpcmVtYXBfZW50cnkpOworCisgICAgaWYgKCAhcGlfZGVzYyAp CisgICAgeworICAgICAgIC8qIFNldCBpbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGVudHJ5ICov CisgICAgICAgIG5ld19pcmUucmVtYXAuZG0gPSBtc2ctPmFkZHJlc3NfbG8gPj4gTVNJX0FERFJf REVTVE1PREVfU0hJRlQ7CisgICAgICAgIG5ld19pcmUucmVtYXAudG0gPSBtc2ctPmRhdGEgPj4g TVNJX0RBVEFfVFJJR0dFUl9TSElGVDsKKyAgICAgICAgbmV3X2lyZS5yZW1hcC5kbG0gPSBtc2ct PmRhdGEgPj4gTVNJX0RBVEFfREVMSVZFUllfTU9ERV9TSElGVDsKKyAgICAgICAgLyogSGFyZHdh cmUgcmVxdWlyZSBSSCA9IDEgZm9yIExQUiBkZWxpdmVyeSBtb2RlICovCisgICAgICAgIG5ld19p cmUucmVtYXAucmggPSAobmV3X2lyZS5yZW1hcC5kbG0gPT0gZGVzdF9Mb3dlc3RQcmlvKTsKKyAg ICAgICAgbmV3X2lyZS5yZW1hcC52ZWN0b3IgPSAobXNnLT5kYXRhID4+IE1TSV9EQVRBX1ZFQ1RP Ul9TSElGVCkgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0lfREFUQV9WRUNU T1JfTUFTSzsKKyAgICAgICAgaWYgKCB4MmFwaWNfZW5hYmxlZCApCisgICAgICAgICAgICBuZXdf aXJlLnJlbWFwLmRzdCA9IG1zZy0+ZGVzdDMyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBu ZXdfaXJlLnJlbWFwLmRzdCA9ICgobXNnLT5hZGRyZXNzX2xvID4+IE1TSV9BRERSX0RFU1RfSURf U0hJRlQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIDB4ZmYpIDw8IDg7Cisg ICAgICAgIG5ld19pcmUucmVtYXAucCA9IDE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg ICAgIG5ld19pcmUucG9zdC5pbSA9IDE7CisgICAgICAgIG5ld19pcmUucG9zdC52ZWN0b3IgPSBn dmVjOworICAgICAgICBuZXdfaXJlLnBvc3QucGRhX2wgPSB2aXJ0X3RvX21hZGRyKHBpX2Rlc2Mp ID4+ICgzMiAtIFBEQV9MT1dfQklUKTsKKyAgICAgICAgbmV3X2lyZS5wb3N0LnBkYV9oID0gdmly dF90b19tYWRkcihwaV9kZXNjKSA+PiAzMjsKKyAgICAgICAgbmV3X2lyZS5wb3N0LnAgPSAxOwor ICAgIH0KKworICAgIGlmICggcGRldiApCisgICAgICAgIHNldF9tc2lfc291cmNlX2lkKHBkZXYs ICZuZXdfaXJlKTsKKyAgICBlbHNlCisgICAgICAgIHNldF9ocGV0X3NvdXJjZV9pZChtc2lfZGVz Yy0+aHBldF9pZCwgJm5ld19pcmUpOworCisgICAgaWYgKCBpcmVtYXBfZW50cnktPnZhbCAhPSBu ZXdfaXJlLnZhbCApCisgICAgeworICAgICAgICBpZiAoIGNwdV9oYXNfY3gxNiApCisgICAgICAg IHsKKyAgICAgICAgICAgIF9fdWludDEyOF90IHJldDsKKyAgICAgICAgICAgIHN0cnVjdCBpcmVt YXBfZW50cnkgb2xkX2lyZTsKKworICAgICAgICAgICAgb2xkX2lyZSA9ICppcmVtYXBfZW50cnk7 CisgICAgICAgICAgICByZXQgPSBjbXB4Y2hnMTZiKGlyZW1hcF9lbnRyeSwgJm9sZF9pcmUsICZu ZXdfaXJlKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEluIHRoZSBhYm92ZSwg d2UgdXNlIGNtcHhjaGcxNiB0byBhdG9taWNhbGx5IHVwZGF0ZSB0aGUgMTI4LWJpdAorICAgICAg ICAgICAgICogSVJURSwgYW5kIHRoZSBoYXJkd2FyZSBjYW5ub3QgdXBkYXRlIHRoZSBJUlRFIGJl aGluZCB1cywgc28KKyAgICAgICAgICAgICAqIHRoZSByZXR1cm4gdmFsdWUgb2YgY21weGNoZzE2 IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvbGRfaXJlLgorICAgICAgICAgICAgICogVGhpcyBBU1NF UlQgdmFsaWRhdGUgaXQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEFTU0VSVChyZXQg PT0gb2xkX2lyZS52YWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg ICAgICAgICAgaXJlbWFwX2VudHJ5LT5sbyA9IG5ld19pcmUubG87CisgICAgICAgICAgICBpcmVt YXBfZW50cnktPmhpID0gbmV3X2lyZS5oaTsKKyAgICAgICAgfQorCisgICAgICAgIGlvbW11X2Zs dXNoX2NhY2hlX2VudHJ5KGlyZW1hcF9lbnRyeSwgc2l6ZW9mKHN0cnVjdCBpcmVtYXBfZW50cnkp KTsKKyAgICAgICAgaW9tbXVfZmx1c2hfaWVjX2luZGV4KGlvbW11LCAwLCBpbmRleCk7CisgICAg fQorCisgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKGlyZW1hcF9lbnRyaWVzKTsKKyAgICByZXR1 cm4gMDsKK30KKwogc3RhdGljIGludCBtc2lfbXNnX3RvX3JlbWFwX2VudHJ5KAotICAgIHN0cnVj dCBpb21tdSAqaW9tbXUsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LAorICAgIHN0cnVjdCBpb21tdSAq aW9tbXUsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogICAgIHN0cnVjdCBtc2lfZGVzYyAq bXNpX2Rlc2MsIHN0cnVjdCBtc2lfbXNnICptc2cpCiB7CiAgICAgc3RydWN0IGlyZW1hcF9lbnRy eSAqaXJlbWFwX2VudHJ5ID0gTlVMTCwgKmlyZW1hcF9lbnRyaWVzOwotICAgIHN0cnVjdCBpcmVt YXBfZW50cnkgbmV3X2lyZTsKICAgICBzdHJ1Y3QgbXNpX21zZ19yZW1hcF9lbnRyeSAqcmVtYXBf cnRlOwogICAgIHVuc2lnbmVkIGludCBpbmRleCwgaSwgbnIgPSAxOwogICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAgICAgc3RydWN0IGlyX2N0cmwgKmlyX2N0cmwgPSBpb21tdV9pcl9jdHJsKGlv bW11KTsKKyAgICB2b2lkICpwaV9kZXNjOworICAgIGludCBndmVjOwogCiAgICAgaWYgKCBtc2lf ZGVzYy0+bXNpX2F0dHJpYi50eXBlID09IFBDSV9DQVBfSURfTVNJICkKICAgICAgICAgbnIgPSBt c2lfZGVzYy0+bXNpLm52ZWM7CkBAIC01OTIsMzggKzY5MywzMyBAQCBzdGF0aWMgaW50IG1zaV9t c2dfdG9fcmVtYXBfZW50cnkoCiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAorICAg IC8qIEdldCB0aGUgSVJURSdzIGJpbmQgcmVsYXRpb25zaGlwIHdpdGggZ3Vlc3QgZnJvbSB0aGUg bGl2ZSBJUlRFLiAqLwogICAgIEdFVF9JUkVNQVBfRU5UUlkoaXJfY3RybC0+aXJlbWFwX21hZGRy LCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgIGlyZW1hcF9lbnRyaWVzLCBpcmVtYXBfZW50 cnkpOwotCi0gICAgbWVtY3B5KCZuZXdfaXJlLCBpcmVtYXBfZW50cnksIHNpemVvZihzdHJ1Y3Qg aXJlbWFwX2VudHJ5KSk7Ci0KLSAgICAvKiBTZXQgaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBl bnRyeSAqLwotICAgIG5ld19pcmUucmVtYXAuZnBkID0gMDsKLSAgICBuZXdfaXJlLnJlbWFwLmRt ID0gKG1zZy0+YWRkcmVzc19sbyA+PiBNU0lfQUREUl9ERVNUTU9ERV9TSElGVCkgJiAweDE7Ci0g ICAgbmV3X2lyZS5yZW1hcC50bSA9IChtc2ctPmRhdGEgPj4gTVNJX0RBVEFfVFJJR0dFUl9TSElG VCkgJiAweDE7Ci0gICAgbmV3X2lyZS5yZW1hcC5kbG0gPSAobXNnLT5kYXRhID4+IE1TSV9EQVRB X0RFTElWRVJZX01PREVfU0hJRlQpICYgMHgxOwotICAgIC8qIEhhcmR3YXJlIHJlcXVpcmUgUkgg PSAxIGZvciBMUFIgZGVsaXZlcnkgbW9kZSAqLwotICAgIG5ld19pcmUucmVtYXAucmggPSAobmV3 X2lyZS5yZW1hcC5kbG0gPT0gZGVzdF9Mb3dlc3RQcmlvKTsKLSAgICBuZXdfaXJlLnJlbWFwLmF2 YWlsID0gMDsKLSAgICBuZXdfaXJlLnJlbWFwLnJlc18xID0gMDsKLSAgICBuZXdfaXJlLnJlbWFw LnZlY3RvciA9IChtc2ctPmRhdGEgPj4gTVNJX0RBVEFfVkVDVE9SX1NISUZUKSAmCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgTVNJX0RBVEFfVkVDVE9SX01BU0s7Ci0gICAgbmV3X2lyZS5y ZW1hcC5yZXNfMiA9IDA7Ci0gICAgaWYgKCB4MmFwaWNfZW5hYmxlZCApCi0gICAgICAgIG5ld19p cmUucmVtYXAuZHN0ID0gbXNnLT5kZXN0MzI7CisgICAgaWYgKCAhaXJlbWFwX2VudHJ5LT5yZW1h cC5pbSApCisgICAgeworICAgICAgICBndmVjID0gMDsKKyAgICAgICAgcGlfZGVzYyA9IE5VTEw7 CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgbmV3X2lyZS5yZW1hcC5kc3QgPSAoKG1zZy0+YWRk cmVzc19sbyA+PiBNU0lfQUREUl9ERVNUX0lEX1NISUZUKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmIDB4ZmYpIDw8IDg7CisgICAgeworICAgICAgICBndmVjID0gaXJlbWFwX2VudHJ5 LT5wb3N0LnZlY3RvcjsKKyAgICAgICAgcGlfZGVzYyA9ICh2b2lkICopKCgoKHU2NClpcmVtYXBf ZW50cnktPnBvc3QucGRhX2gpIDw8IFBEQV9MT1dfQklUICkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICsgaXJlbWFwX2VudHJ5LT5wb3N0LnBkYV9sKTsKKyAgICB9CisgICAgdW5tYXBfdnRk X2RvbWFpbl9wYWdlKGlyZW1hcF9lbnRyaWVzKTsKIAotICAgIGlmICggcGRldiApCi0gICAgICAg IHNldF9tc2lfc291cmNlX2lkKHBkZXYsICZuZXdfaXJlKTsKLSAgICBlbHNlCi0gICAgICAgIHNl dF9ocGV0X3NvdXJjZV9pZChtc2lfZGVzYy0+aHBldF9pZCwgJm5ld19pcmUpOwotICAgIG5ld19p cmUucmVtYXAucmVzXzMgPSAwOwotICAgIG5ld19pcmUucmVtYXAucmVzXzQgPSAwOwotICAgIG5l d19pcmUucmVtYXAucCA9IDE7ICAgIC8qIGZpbmFsbHksIHNldCBwcmVzZW50IGJpdCAqLworICAg IC8qCisgICAgICogQWN0dWFsbHkgd2UgY2FuIGp1c3Qgc3VwcHJlc3MgdGhlIHVwZGF0ZSB3aGVu IElSVEUgaXMgYWxyZWFkeSBpbiBwb3N0ZWQKKyAgICAgKiBmb3JtYXQuIEFmdGVyIGEgbXNpIGdl dHMgYm91bmQgdG8gYSBndWVzdCBpbnRlcnJ1cHQsIGNoYW5nZXMgdG8gdGhlIG1zaQorICAgICAq IG1lc3NhZ2UgaGF2ZSBubyBlZmZlY3QgdG8gdGhlIElSVEUuCisgICAgICovCisgICAgdXBkYXRl X2lydGVfZm9yX21zaV9jb21tb24oaW9tbXUsIHBkZXYsIG1zaV9kZXNjLCBtc2csIHBpX2Rlc2Ms IGd2ZWMpOwogCiAgICAgLyogbm93IGNvbnN0cnVjdCBuZXcgTVNJL01TSS1YIHJ0ZSBlbnRyeSAq LworICAgIGlmICggbXNpX2Rlc2MtPm1zaV9hdHRyaWIudHlwZSA9PSBQQ0lfQ0FQX0lEX01TSSAp CisgICAgICAgIG5yID0gbXNpX2Rlc2MtPm1zaS5udmVjOworCiAgICAgcmVtYXBfcnRlID0gKHN0 cnVjdCBtc2lfbXNnX3JlbWFwX2VudHJ5ICopbXNnOwogICAgIHJlbWFwX3J0ZS0+YWRkcmVzc19s by5kb250Y2FyZSA9IDA7CiAgICAgaSA9IGluZGV4OwpAQCAtNjM3LDExICs3MzMsNiBAQCBzdGF0 aWMgaW50IG1zaV9tc2dfdG9fcmVtYXBfZW50cnkoCiAgICAgcmVtYXBfcnRlLT5hZGRyZXNzX2hp ID0gMDsKICAgICByZW1hcF9ydGUtPmRhdGEgPSBpbmRleCAtIGk7CiAKLSAgICBtZW1jcHkoaXJl bWFwX2VudHJ5LCAmbmV3X2lyZSwgc2l6ZW9mKHN0cnVjdCBpcmVtYXBfZW50cnkpKTsKLSAgICBp b21tdV9mbHVzaF9jYWNoZV9lbnRyeShpcmVtYXBfZW50cnksIHNpemVvZihzdHJ1Y3QgaXJlbWFw X2VudHJ5KSk7Ci0gICAgaW9tbXVfZmx1c2hfaWVjX2luZGV4KGlvbW11LCAwLCBpbmRleCk7Ci0K LSAgICB1bm1hcF92dGRfZG9tYWluX3BhZ2UoaXJlbWFwX2VudHJpZXMpOwogICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmlyX2N0cmwtPmlyZW1hcF9sb2NrLCBmbGFncyk7CiAgICAgcmV0dXJu IDA7CiB9CkBAIC05MDIsNDIgKzk5Myw2IEBAIHZvaWQgaW9tbXVfZGlzYWJsZV94MmFwaWNfSVIo dm9pZCkKICAgICAgICAgZGlzYWJsZV9xaW52YWwoZHJoZC0+aW9tbXUpOwogfQogCi1zdGF0aWMg dm9pZCBzZXR1cF9wb3N0ZWRfaXJ0ZSgKLSAgICBzdHJ1Y3QgaXJlbWFwX2VudHJ5ICpuZXdfaXJl LCBjb25zdCBzdHJ1Y3QgaXJlbWFwX2VudHJ5ICpvbGRfaXJlLAotICAgIGNvbnN0IHN0cnVjdCBw aV9kZXNjICpwaV9kZXNjLCBjb25zdCB1aW50OF90IGd2ZWMpCi17Ci0gICAgbWVtc2V0KG5ld19p cmUsIDAsIHNpemVvZigqbmV3X2lyZSkpOwotCi0gICAgLyoKLSAgICAgKiAnaW0nIGZpbGVkIGRl Y2lkZXMgd2hldGhlciB0aGUgaXJ0ZSBpcyBpbiBwb3N0ZWQgZm9ybWF0ICh3aXRoIHZhbHVlIDEp Ci0gICAgICogb3IgcmVtYXBwZWQgZm9ybWF0ICh3aXRoIHZhbHVlIDApLCBpZiB0aGUgb2xkIGly dGUgaXMgaW4gcmVtYXBwZWQgZm9ybWF0LAotICAgICAqIHdlIGNvcHkgdGhpbmdzIGZyb20gcmVt YXBwZWQgcGFydCBpbiAnc3RydWN0IGlyZW1hcF9lbnRyeScsIG90aGVyd2lzZSwKLSAgICAgKiB3 ZSBjb3B5IGZyb20gcG9zdGVkIHBhcnQuCi0gICAgICovCi0gICAgaWYgKCAhb2xkX2lyZS0+cmVt YXAuaW0gKQotICAgIHsKLSAgICAgICAgbmV3X2lyZS0+cG9zdC5wID0gb2xkX2lyZS0+cmVtYXAu cDsKLSAgICAgICAgbmV3X2lyZS0+cG9zdC5mcGQgPSBvbGRfaXJlLT5yZW1hcC5mcGQ7Ci0gICAg ICAgIG5ld19pcmUtPnBvc3Quc2lkID0gb2xkX2lyZS0+cmVtYXAuc2lkOwotICAgICAgICBuZXdf aXJlLT5wb3N0LnNxID0gb2xkX2lyZS0+cmVtYXAuc3E7Ci0gICAgICAgIG5ld19pcmUtPnBvc3Qu c3Z0ID0gb2xkX2lyZS0+cmVtYXAuc3Z0OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg ICBuZXdfaXJlLT5wb3N0LnAgPSBvbGRfaXJlLT5wb3N0LnA7Ci0gICAgICAgIG5ld19pcmUtPnBv c3QuZnBkID0gb2xkX2lyZS0+cG9zdC5mcGQ7Ci0gICAgICAgIG5ld19pcmUtPnBvc3Quc2lkID0g b2xkX2lyZS0+cG9zdC5zaWQ7Ci0gICAgICAgIG5ld19pcmUtPnBvc3Quc3EgPSBvbGRfaXJlLT5w b3N0LnNxOwotICAgICAgICBuZXdfaXJlLT5wb3N0LnN2dCA9IG9sZF9pcmUtPnBvc3Quc3Z0Owot ICAgICAgICBuZXdfaXJlLT5wb3N0LnVyZyA9IG9sZF9pcmUtPnBvc3QudXJnOwotICAgIH0KLQot ICAgIG5ld19pcmUtPnBvc3QuaW0gPSAxOwotICAgIG5ld19pcmUtPnBvc3QudmVjdG9yID0gZ3Zl YzsKLSAgICBuZXdfaXJlLT5wb3N0LnBkYV9sID0gdmlydF90b19tYWRkcihwaV9kZXNjKSA+PiAo MzIgLSBQREFfTE9XX0JJVCk7Ci0gICAgbmV3X2lyZS0+cG9zdC5wZGFfaCA9IHZpcnRfdG9fbWFk ZHIocGlfZGVzYykgPj4gMzI7Ci19Ci0KIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8g dXBkYXRlIHRoZSBJUlRFIGZvciBwb3N0ZWQtaW50ZXJydXB0CiAgKiB3aGVuIGd1ZXN0IGNoYW5n ZXMgTVNJL01TSS1YIGluZm9ybWF0aW9uLgpAQCAtOTQ3LDE2ICsxMDAyLDEzIEBAIGludCBwaV91 cGRhdGVfaXJ0ZShjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgY29uc3Qgc3RydWN0IHBpcnEgKnBpcnEs CiB7CiAgICAgc3RydWN0IGlycV9kZXNjICpkZXNjOwogICAgIGNvbnN0IHN0cnVjdCBtc2lfZGVz YyAqbXNpX2Rlc2M7Ci0gICAgaW50IHJlbWFwX2luZGV4OwogICAgIGludCByYyA9IDA7CiAgICAg Y29uc3Qgc3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7CiAgICAgY29uc3Qgc3RydWN0IGFjcGlfZHJo ZF91bml0ICpkcmhkOwogICAgIHN0cnVjdCBpb21tdSAqaW9tbXU7CiAgICAgc3RydWN0IGlyX2N0 cmwgKmlyX2N0cmw7Ci0gICAgc3RydWN0IGlyZW1hcF9lbnRyeSAqaXJlbWFwX2VudHJpZXMgPSBO VUxMLCAqcCA9IE5VTEw7Ci0gICAgc3RydWN0IGlyZW1hcF9lbnRyeSBuZXdfaXJlLCBvbGRfaXJl OworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgY29uc3Qgc3RydWN0IHBpX2Rlc2MgKnBp X2Rlc2MgPSAmdi0+YXJjaC5odm1fdm14LnBpX2Rlc2M7Ci0gICAgX191aW50MTI4X3QgcmV0Owog CiAgICAgZGVzYyA9IHBpcnFfc3Bpbl9sb2NrX2lycV9kZXNjKHBpcnEsIE5VTEwpOwogICAgIGlm ICggIWRlc2MgKQpAQCAtOTc2LDggKzEwMjgsNiBAQCBpbnQgcGlfdXBkYXRlX2lydGUoY29uc3Qg c3RydWN0IHZjcHUgKnYsIGNvbnN0IHN0cnVjdCBwaXJxICpwaXJxLAogICAgICAgICBnb3RvIHVu bG9ja19vdXQ7CiAgICAgfQogCi0gICAgcmVtYXBfaW5kZXggPSBtc2lfZGVzYy0+cmVtYXBfaW5k ZXg7Ci0KICAgICBzcGluX3VubG9ja19pcnEoJmRlc2MtPmxvY2spOwogCiAgICAgQVNTRVJUKHBj aWRldnNfbG9ja2VkKCkpOwpAQCAtOTk2LDMxICsxMDQ2LDExIEBAIGludCBwaV91cGRhdGVfaXJ0 ZShjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgY29uc3Qgc3RydWN0IHBpcnEgKnBpcnEsCiAgICAgaWYg KCAhaXJfY3RybCApCiAgICAgICAgIHJldHVybiAtRU5PREVWOwogCi0gICAgc3Bpbl9sb2NrX2ly cSgmaXJfY3RybC0+aXJlbWFwX2xvY2spOwotCi0gICAgR0VUX0lSRU1BUF9FTlRSWShpcl9jdHJs LT5pcmVtYXBfbWFkZHIsIHJlbWFwX2luZGV4LCBpcmVtYXBfZW50cmllcywgcCk7Ci0KLSAgICBv bGRfaXJlID0gKnA7Ci0KLSAgICAvKiBTZXR1cC9VcGRhdGUgaW50ZXJydXB0IHJlbWFwcGluZyB0 YWJsZSBlbnRyeS4gKi8KLSAgICBzZXR1cF9wb3N0ZWRfaXJ0ZSgmbmV3X2lyZSwgJm9sZF9pcmUs IHBpX2Rlc2MsIGd2ZWMpOwotICAgIHJldCA9IGNtcHhjaGcxNmIocCwgJm9sZF9pcmUsICZuZXdf aXJlKTsKLQotICAgIC8qCi0gICAgICogSW4gdGhlIGFib3ZlLCB3ZSB1c2UgY21weGNoZzE2IHRv IGF0b21pY2FsbHkgdXBkYXRlIHRoZSAxMjgtYml0IElSVEUsCi0gICAgICogYW5kIHRoZSBoYXJk d2FyZSBjYW5ub3QgdXBkYXRlIHRoZSBJUlRFIGJlaGluZCB1cywgc28gdGhlIHJldHVybiB2YWx1 ZQotICAgICAqIG9mIGNtcHhjaGcxNiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgb2xkX2lyZS4gVGhp cyBBU1NFUlQgdmFsaWRhdGUgaXQuCi0gICAgICovCi0gICAgQVNTRVJUKHJldCA9PSBvbGRfaXJl LnZhbCk7Ci0KLSAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwLCBzaXplb2YoKnApKTsKLSAg ICBpb21tdV9mbHVzaF9pZWNfaW5kZXgoaW9tbXUsIDAsIHJlbWFwX2luZGV4KTsKLQotICAgIHVu bWFwX3Z0ZF9kb21haW5fcGFnZShpcmVtYXBfZW50cmllcyk7Ci0KLSAgICBzcGluX3VubG9ja19p cnEoJmlyX2N0cmwtPmlyZW1hcF9sb2NrKTsKLQotICAgIHJldHVybiAwOworICAgIHNwaW5fbG9j a19pcnFzYXZlKCZpcl9jdHJsLT5pcmVtYXBfbG9jaywgZmxhZ3MpOworICAgIHJjID0gdXBkYXRl X2lydGVfZm9yX21zaV9jb21tb24oaW9tbXUsIHBjaV9kZXYsIG1zaV9kZXNjLCBOVUxMLCBwaV9k ZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ZlYyk7CisgICAgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmaXJfY3RybC0+aXJlbWFwX2xvY2ssIGZsYWdzKTsKKyAgICBy ZXR1cm4gcmM7CiAKICB1bmxvY2tfb3V0OgogICAgIHNwaW5fdW5sb2NrX2lycSgmZGVzYy0+bG9j ayk7Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==