From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: Re: [PATCH v9 5/8] VT-d: Introduce a new function update_irte_for_msi_common Date: Thu, 2 Mar 2017 15:14:21 +0800 Message-ID: <20170302071421.GA15870@skl-2s3.sh.intel.com> References: <1488159949-15011-1-git-send-email-chao.gao@intel.com> <1488159949-15011-6-git-send-email-chao.gao@intel.com> <58B7ECB6020000780013F1E9@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <58B7ECB6020000780013F1E9@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Kevin Tian , Feng Wu , George Dunlap , Andrew Cooper , Dario Faggioli , xen-devel@lists.xen.org, Jun Nakajima List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBNYXIgMDIsIDIwMTcgYXQgMDE6NTg6MTRBTSAtMDcwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4+Pj4gT24gMjcuMDIuMTcgYXQgMDI6NDUsIDxjaGFvLmdhb0BpbnRlbC5jb20+IHdyb3Rl Ogo+PiBAQCAtNTQ3LDE2ICs1NDgsMTE2IEBAIHN0YXRpYyBpbnQgcmVtYXBfZW50cnlfdG9fbXNp X21zZygKPj4gICAgICByZXR1cm4gMDsKPj4gIH0KPj4gIAo+PiArLyoKPj4gKyAqIFRoaXMgZnVu Y3Rpb24gaXMgYSBjb21tb24gaW50ZXJmYWNlIHRvIHVwZGF0ZSBpcnRlIGZvciBtc2kgY2FzZS4K Pj4gKyAqCj4+ICsgKiBJZiBAcGlfZGVzYyAhPSBOVUxMIGFuZCBAZ3ZlYyAhPSAwLCB0aGUgSVJU RSB3aWxsIGJlIHVwZGF0ZWQgdG8gYSBwb3N0ZWQKPj4gKyAqIGZvcm1hdC4gSW4gdGhpcyBjYXNl LCBAbXNnIGlzIGlnbm9yZWQgYmVjYXVzZSBjb25zdHJ1Y3RpbmcgYSBwb3N0ZWQgZm9ybWF0Cj4+ ICsgKiBJUlRFIGRvZXNuJ3QgbmVlZCBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1zaSBhZGRy ZXNzIG9yIG1zaSBkYXRhLgo+PiArICoKPj4gKyAqIElmIEBwaV9kZXNjID09IE5VTEwgYW5kIEBn dmVjID09IDAsIHRoZSBJUlRFIHdpbGwgYmUgdXBkYXRlZCB0byBhIHJlbWFwcGVkCj4+ICsgKiBm b3JtYXQuIEluIHRoaXMgY2FzZSwgQG1zZyBjYW4ndCBiZSBOVUxMLgo+Cj5UaGlzIGtpbmQgb2Yg aW1wbGllcyB0aGF0IGluIHRoZSBvdGhlciBjYXNlIG1zZyBjYW4gYmUgTlVMTC4gUGxlYXNlCj5t YWtlIHRoaXMgZXhwbGljaXQgb3IgcmVtb3ZlIHRoZSBsYXN0IHNlbnRlbmNlLCB0byBhdm9pZCBj b25mdXNpbmcKPnJlYWRlcnMuIFBsdXMsIGlmIG1zZyBjYW4gYmUgTlVMTCBpbiB0aGF0IGNhc2Us IHdoeSBkb24ndCB5b3UgcGFzcwo+TlVMTCBpbiB0aGF0IGNhc2U/CgpJIGNob29zZSB0byBtYWtl IHRoaXMgZXhwbGljaXQuCgo+Cj4+ICsgKiBBc3N1bWUgJ2lyX2N0cmwtPmlyZW1hcF9sb2NrJyBo YXMgYmVlbiBhY3F1aXJlZCBhbmQgdGhlIHJlbWFwX2luZGV4Cj4+ICsgKiBvZiBtc2lfZGVzYyBo YXMgYSBiZW5pZ24gdmFsdWUuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgdXBkYXRlX2lydGVfZm9y X21zaV9jb21tb24oCj4+ICsgICAgc3RydWN0IGlvbW11ICppb21tdSwgY29uc3Qgc3RydWN0IHBj aV9kZXYgKnBkZXYsCj4+ICsgICAgY29uc3Qgc3RydWN0IG1zaV9kZXNjICptc2lfZGVzYywgc3Ry dWN0IG1zaV9tc2cgKm1zZywKPj4gKyAgICBjb25zdCBzdHJ1Y3QgcGlfZGVzYyAqcGlfZGVzYywg Y29uc3QgdWludDhfdCBndmVjKQo+PiArewo+PiArICAgIHN0cnVjdCBpcmVtYXBfZW50cnkgKmly ZW1hcF9lbnRyeSA9IE5VTEwsICppcmVtYXBfZW50cmllczsKPj4gKyAgICBzdHJ1Y3QgaXJlbWFw X2VudHJ5IG5ld19pcmUgPSB7ezB9fTsKPgo+SSB0aGluayBqdXN0ICJ7IH0iIHdpbGwgZG8uCj4K Pj4gKyAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSBtc2lfZGVzYy0+cmVtYXBfaW5kZXg7Cj4+ICsg ICAgc3RydWN0IGlyX2N0cmwgKmlyX2N0cmwgPSBpb21tdV9pcl9jdHJsKGlvbW11KTsKPj4gKwo+ PiArICAgIEFTU0VSVCggaXJfY3RybCApOwo+PiArICAgIEFTU0VSVCggc3Bpbl9pc19sb2NrZWQo JmlyX2N0cmwtPmlyZW1hcF9sb2NrKSApOwo+PiArICAgIEFTU0VSVCggKGluZGV4ID49IDApICYm IChpbmRleCA8IElSRU1BUF9FTlRSWV9OUikgKTsKPgo+U3RyYXkgYmxhbmtzIGluc2lkZSBwYXJl bnRoZXNlcy4KPgo+PiArICAgIGlmICggKCFwaV9kZXNjICYmIGd2ZWMpIHx8IChwaV9kZXNjICYm ICFndmVjKSApCj4KPmd2ZWMgPT0gMCBhbG9uZSBpcyBuZXZlciBhIHZhbGlkIGNoZWNrOiBFaXRo ZXIgYWxsIHZlY3RvcnMgYXJlIHZhbGlkLAo+b3IgYSB3aG9sZSByYW5nZSAoZS5nLiAweDAwLi4u MHgwZikgaXMgaW52YWxpZC4gRnVydGhlcm1vcmUgSSB0aGluawo+c3VjaCBjaGVja3MgYXJlIGVh c2llciB0byByZWFkIGFzIGVpdGhlcgoKSG93IGFib3V0IG9ubHkgdXNlIHBpX2Rlc2MgaXMgTlVM TCBvciBub3QgdG8gZGVjaWRlIHRoZSBmb3JtYXQgb2YgdGhlIElSVEU/Cgo+Cj4gICAgaWYgKCAh cGlfZGVzYyAhPSAhZ3ZlYyApCj4KPm9yCj4KPiAgICBpZiAoIHBpX2Rlc2MgPyAhZ3ZlYyA6IGd2 ZWMgKQo+Cj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgaWYgKCAhcGlf ZGVzYyAmJiAhZ3ZlYyAmJiAhbXNnICkKPgo+V2l0aCB0aGUgZWFybGllciBjaGVjayB0aGUgZmly c3Qgb3Igc2Vjb25kIHBhcnQgY291bGQgYmUgb21pdHRlZAo+YWZhaWN0LgoKQWdyZWUKCj4KPj4g KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAgICBHRVRfSVJFTUFQX0VOVFJZKGly X2N0cmwtPmlyZW1hcF9tYWRkciwgaW5kZXgsCj4+ICsgICAgICAgICAgICAgICAgICAgICBpcmVt YXBfZW50cmllcywgaXJlbWFwX2VudHJ5KTsKPj4gKwo+PiArICAgIGlmICggIXBpX2Rlc2MgKQo+ PiArICAgIHsKPj4gKyAgICAgICAvKiBTZXQgaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBlbnRy eSAqLwo+Cj5BZ2FpbiBhIHJlcXVlc3QgZm9yIGNvbnNpc3RlbmN5OiBFaXRoZXIgaGF2ZSBhIHJl c3BlY3RpdmUgY29tbWVudAo+YWxzbyBhdCB0aGUgdG9wIG9mIHRoZSBlbHNlIGJyYW5jaCwgb3Ig b21pdCB0aGUgb25lIGhlcmUgdG9vLgo+Cj4+ICsgICAgICAgIG5ld19pcmUucmVtYXAuZG0gPSBt c2ctPmFkZHJlc3NfbG8gPj4gTVNJX0FERFJfREVTVE1PREVfU0hJRlQ7Cj4+ICsgICAgICAgIG5l d19pcmUucmVtYXAudG0gPSBtc2ctPmRhdGEgPj4gTVNJX0RBVEFfVFJJR0dFUl9TSElGVDsKPj4g KyAgICAgICAgbmV3X2lyZS5yZW1hcC5kbG0gPSBtc2ctPmRhdGEgPj4gTVNJX0RBVEFfREVMSVZF UllfTU9ERV9TSElGVDsKPj4gKyAgICAgICAgLyogSGFyZHdhcmUgcmVxdWlyZSBSSCA9IDEgZm9y IExQUiBkZWxpdmVyeSBtb2RlICovCj4+ICsgICAgICAgIG5ld19pcmUucmVtYXAucmggPSAobmV3 X2lyZS5yZW1hcC5kbG0gPT0gZGVzdF9Mb3dlc3RQcmlvKTsKPj4gKyAgICAgICAgbmV3X2lyZS5y ZW1hcC52ZWN0b3IgPSAobXNnLT5kYXRhID4+IE1TSV9EQVRBX1ZFQ1RPUl9TSElGVCkgJgo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0lfREFUQV9WRUNUT1JfTUFTSzsKPj4g KyAgICAgICAgaWYgKCB4MmFwaWNfZW5hYmxlZCApCj4+ICsgICAgICAgICAgICBuZXdfaXJlLnJl bWFwLmRzdCA9IG1zZy0+ZGVzdDMyOwo+PiArICAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICBu ZXdfaXJlLnJlbWFwLmRzdCA9ICgobXNnLT5hZGRyZXNzX2xvID4+IE1TSV9BRERSX0RFU1RfSURf U0hJRlQpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIDB4ZmYpIDw8IDg7 Cj4KPlBsZWFzZSBzdHJpdmUgdG8gZWxpbWluYXRlIGxpdGVyYWwgbnVtYmVycyBoZXJlLiBBdCBs ZWFzdCB0aGUgMHhmZiBsb29rcwo+dG8gYmUgZWFzeSB0byBkZWFsIHdpdGggKHVzaW5nIE1BU0tf RVhUUigpIHRvZ2V0aGVyIHdpdGgKPk1TSV9BRERSX0RFU1RfSURfTUFTSykuCj4KPj4gKyAgICAg ICAgbmV3X2lyZS5yZW1hcC5wID0gMTsKPj4gKyAgICB9Cj4+ICsgICAgZWxzZQo+PiArICAgIHsK Pj4gKyAgICAgICAgbmV3X2lyZS5wb3N0LmltID0gMTsKPj4gKyAgICAgICAgbmV3X2lyZS5wb3N0 LnZlY3RvciA9IGd2ZWM7Cj4+ICsgICAgICAgIG5ld19pcmUucG9zdC5wZGFfbCA9IHZpcnRfdG9f bWFkZHIocGlfZGVzYykgPj4gKDMyIC0gUERBX0xPV19CSVQpOwo+PiArICAgICAgICBuZXdfaXJl LnBvc3QucGRhX2ggPSB2aXJ0X3RvX21hZGRyKHBpX2Rlc2MpID4+IDMyOwo+PiArICAgICAgICBu ZXdfaXJlLnBvc3QucCA9IDE7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgaWYgKCBwZGV2ICkKPj4g KyAgICAgICAgc2V0X21zaV9zb3VyY2VfaWQocGRldiwgJm5ld19pcmUpOwo+PiArICAgIGVsc2UK Pj4gKyAgICAgICAgc2V0X2hwZXRfc291cmNlX2lkKG1zaV9kZXNjLT5ocGV0X2lkLCAmbmV3X2ly ZSk7Cj4+ICsKPj4gKyAgICBpZiAoIGlyZW1hcF9lbnRyeS0+dmFsICE9IG5ld19pcmUudmFsICkK Pj4gKyAgICB7Cj4+ICsgICAgICAgIGlmICggY3B1X2hhc19jeDE2ICkKPj4gKyAgICAgICAgewo+ PiArICAgICAgICAgICAgX191aW50MTI4X3QgcmV0Owo+PiArICAgICAgICAgICAgc3RydWN0IGly ZW1hcF9lbnRyeSBvbGRfaXJlOwo+PiArCj4+ICsgICAgICAgICAgICBvbGRfaXJlID0gKmlyZW1h cF9lbnRyeTsKPj4gKyAgICAgICAgICAgIHJldCA9IGNtcHhjaGcxNmIoaXJlbWFwX2VudHJ5LCAm b2xkX2lyZSwgJm5ld19pcmUpOwo+PiArCj4+ICsgICAgICAgICAgICAvKgo+PiArICAgICAgICAg ICAgICogSW4gdGhlIGFib3ZlLCB3ZSB1c2UgY21weGNoZzE2IHRvIGF0b21pY2FsbHkgdXBkYXRl IHRoZSAxMjgtYml0Cj4+ICsgICAgICAgICAgICAgKiBJUlRFLCBhbmQgdGhlIGhhcmR3YXJlIGNh bm5vdCB1cGRhdGUgdGhlIElSVEUgYmVoaW5kIHVzLCBzbwo+PiArICAgICAgICAgICAgICogdGhl IHJldHVybiB2YWx1ZSBvZiBjbXB4Y2hnMTYgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIG9sZF9pcmUu Cj4+ICsgICAgICAgICAgICAgKiBUaGlzIEFTU0VSVCB2YWxpZGF0ZSBpdC4KPj4gKyAgICAgICAg ICAgICAqLwo+PiArICAgICAgICAgICAgQVNTRVJUKHJldCA9PSBvbGRfaXJlLnZhbCk7Cj4+ICsg ICAgICAgIH0KPj4gKyAgICAgICAgZWxzZQo+PiArICAgICAgICB7Cj4KPlRoaXMgd2FudHMgYSBj b21tZW50IGFkZGVkIGV4cGxhaW5pbmcgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2gKPnRoaXMg aXMgc2FmZS4gUGVyaGFwcyBhbHNvIG9uZSBvciBtb3JlIEFTU0VSVCgpcyB0byB0aGF0IGVmZmVj dC4KClllcywgd2lsbCBhZGQgYW4gZXhwbGFpbmF0aW9uIGFuZCBBU1NFUlQoKS4KCj4KPj4gKyAg ICAgICAgICAgIGlyZW1hcF9lbnRyeS0+bG8gPSBuZXdfaXJlLmxvOwo+PiArICAgICAgICAgICAg aXJlbWFwX2VudHJ5LT5oaSA9IG5ld19pcmUuaGk7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAg ICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShpcmVtYXBfZW50cnksIHNpemVvZihzdHJ1Y3Qg aXJlbWFwX2VudHJ5KSk7Cj4KPnNpemVvZigqaXJlbWFwX2VudHJ5KQo+Cj4+IEBAIC01OTIsMzgg KzY5MywzMyBAQCBzdGF0aWMgaW50IG1zaV9tc2dfdG9fcmVtYXBfZW50cnkoCj4+ICAgICAgICAg IHJldHVybiAtRUZBVUxUOwo+PiAgICAgIH0KPj4gIAo+PiArICAgIC8qIEdldCB0aGUgSVJURSdz IGJpbmQgcmVsYXRpb25zaGlwIHdpdGggZ3Vlc3QgZnJvbSB0aGUgbGl2ZSBJUlRFLiAqLwo+PiAg ICAgIEdFVF9JUkVNQVBfRU5UUlkoaXJfY3RybC0+aXJlbWFwX21hZGRyLCBpbmRleCwKPj4gICAg ICAgICAgICAgICAgICAgICAgIGlyZW1hcF9lbnRyaWVzLCBpcmVtYXBfZW50cnkpOwo+PiAtCj4+ IC0gICAgbWVtY3B5KCZuZXdfaXJlLCBpcmVtYXBfZW50cnksIHNpemVvZihzdHJ1Y3QgaXJlbWFw X2VudHJ5KSk7Cj4+IC0KPj4gLSAgICAvKiBTZXQgaW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBl bnRyeSAqLwo+PiAtICAgIG5ld19pcmUucmVtYXAuZnBkID0gMDsKPj4gLSAgICBuZXdfaXJlLnJl bWFwLmRtID0gKG1zZy0+YWRkcmVzc19sbyA+PiBNU0lfQUREUl9ERVNUTU9ERV9TSElGVCkgJiAw eDE7Cj4+IC0gICAgbmV3X2lyZS5yZW1hcC50bSA9IChtc2ctPmRhdGEgPj4gTVNJX0RBVEFfVFJJ R0dFUl9TSElGVCkgJiAweDE7Cj4+IC0gICAgbmV3X2lyZS5yZW1hcC5kbG0gPSAobXNnLT5kYXRh ID4+IE1TSV9EQVRBX0RFTElWRVJZX01PREVfU0hJRlQpICYgMHgxOwo+PiAtICAgIC8qIEhhcmR3 YXJlIHJlcXVpcmUgUkggPSAxIGZvciBMUFIgZGVsaXZlcnkgbW9kZSAqLwo+PiAtICAgIG5ld19p cmUucmVtYXAucmggPSAobmV3X2lyZS5yZW1hcC5kbG0gPT0gZGVzdF9Mb3dlc3RQcmlvKTsKPj4g LSAgICBuZXdfaXJlLnJlbWFwLmF2YWlsID0gMDsKPj4gLSAgICBuZXdfaXJlLnJlbWFwLnJlc18x ID0gMDsKPj4gLSAgICBuZXdfaXJlLnJlbWFwLnZlY3RvciA9IChtc2ctPmRhdGEgPj4gTVNJX0RB VEFfVkVDVE9SX1NISUZUKSAmCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNJX0RB VEFfVkVDVE9SX01BU0s7Cj4+IC0gICAgbmV3X2lyZS5yZW1hcC5yZXNfMiA9IDA7Cj4+IC0gICAg aWYgKCB4MmFwaWNfZW5hYmxlZCApCj4+IC0gICAgICAgIG5ld19pcmUucmVtYXAuZHN0ID0gbXNn LT5kZXN0MzI7Cj4+ICsgICAgaWYgKCAhaXJlbWFwX2VudHJ5LT5yZW1hcC5pbSApCj4+ICsgICAg ewo+PiArICAgICAgICBndmVjID0gMDsKPj4gKyAgICAgICAgcGlfZGVzYyA9IE5VTEw7Cj4+ICsg ICAgfQo+PiAgICAgIGVsc2UKPj4gLSAgICAgICAgbmV3X2lyZS5yZW1hcC5kc3QgPSAoKG1zZy0+ YWRkcmVzc19sbyA+PiBNU0lfQUREUl9ERVNUX0lEX1NISUZUKQo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmIDB4ZmYpIDw8IDg7Cj4+ICsgICAgewo+PiArICAgICAgICBndmVjID0g aXJlbWFwX2VudHJ5LT5wb3N0LnZlY3RvcjsKPj4gKyAgICAgICAgcGlfZGVzYyA9ICh2b2lkICop KCgoKHU2NClpcmVtYXBfZW50cnktPnBvc3QucGRhX2gpIDw8IFBEQV9MT1dfQklUICkKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICsgaXJlbWFwX2VudHJ5LT5wb3N0LnBkYV9sKTsKPj4g KyAgICB9Cj4+ICsgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKGlyZW1hcF9lbnRyaWVzKTsKPgo+ SSBkb24ndCBmb2xsb3c6IFdoeSBkb2VzIGl0IG1hdHRlciB3aGF0IHRoZSBlbnRyeSBjdXJyZW50 bHkgaG9sZHM/Cj5BcyBJJ3ZlIHBvaW50ZWQgb3V0IG1vcmUgdGhhbiBvbmNlIGJlZm9yZSAobWFp bmx5IHRvIEZlbmcpLCB0aGUKPmdvYWwgb3VnaHQgdG8gYmUgdG8gcHJvZHVjZSB0aGUgbmV3IGVu dHJ5IHNvbGVseSBiYXNlZCBvbiB3aGF0Cj50aGUgaW50ZW5kZWQgbmV3IHN0YXRlIGlzLCBpLmUu IGZ1bmN0aW9uIGlucHV0IGFuZCBnbG9iYWwgZGF0YS4KPgoKSSB0aGluayB0aGUgZnVuY3Rpb24g aW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIGlzIHRvIHByb2R1Y2UgdGhlIG5ldwplbnRyeSBzb2xl bHkgYmFzZWQgb24gaW5wdXQuIElmIHNvbWVvbmUgd2FudHMgdG8gcHJvZHVjZSB0aGUgbmV3IGVu dHJ5LAppdCBjYW4gY2FsbCBpdCBkaXJlY3RseS4gCgpJIHdhbnQgdG8gZXhwbGFpbiB3aHkgd2Ug cmVhZCB0aGUgZW50cnkuCgptc2lfbXNnX3RvX3JlbWFwX2VudHJ5KCkgY2FuIGJlIGNhbGxlZCBi ZWZvcmUgYSBtc2kgZ2V0cyBib3VuZCB0byBhIGd1ZXN0CmludGVycnVwdCBvciBhZnRlciB0aGF0 LiBJZiB3ZSBjYWxsIHRoZSBmdW5jdGlvbiB3aXRob3V0IHJlYWxpemluZyB0aGUgbXNpCmhhcyBi ZWVuIGJpbmRlZCB0byBhIGd1ZXN0IGludGVycnVwdCwgdGhlIElSVEUgd291bGQgYmUgdXBkYXRl ZCB0byBhIApyZW1hcHBlZCBmb3JtYXQgYnJlYWtpbmcgdGhlIGJpbmRpbmcgKGF0IGxlYXN0IGJy ZWFraW5nIHRoZSBpbnRlbnRpb24gdG8gdXNlClZULWQgUEkpLiBJIHRoaW5rIHRoaXMgaXMgYSBw b3NzaWJsZSBjYXNlIGluIHRoZSBjdXJyZW50IGNvZGUuIFRoaXMgcGF0Y2ggYXZvaWRzCnRoaXMg Y2FzZSBhbmQgcHJvdmlkZXMgYSBuZXcgZnVuY3Rpb24gdG8gdGhlIGNhbGxlcnMgd2hvIGFyZSBp bnRlbmRlZCB0byByZXBsYWNlCmEgcG9zdGVkIGZvcm1hdCBJUlRFIHdpdGggYSByZW1hcHBlZCBm b3JtYXQgSVJURS4gUmVhZGluZyB0aGlzIGVudHJ5IGlzIHRvIGdldAp0aGUgYmluZGluZyBpbmZv cm1hdGlvbiBhbmQgdXNlIGl0IHRvIHVwZGF0ZSBJUlRFICggYXMgY29tbWVudHMgaW4gY29kZSwg d2hlbgp0aGUgSVJURSBpcyBpbiBwb3N0ZWQgZm9ybWF0LCB3ZSBjYW4gc3VwcHJlc3MgdGhlIHVw ZGF0ZSBzaW5jZSB0aGUgY29udGVudCBvZiBJUlRFIHdpbGwgbm90IGNoYW5nZSBmb3IgdGhlIGJp bmRpbmcgaW5mb3JtYXRpb24gaGFzbid0IGNoYW5nZS4gYW5kIEFsc28gaWYgdGhlIGJpbmRpbmcg aW5mb3JtYXRpb24gY2hhbmdlZCwgd2Ugc2hvdWxkIGNhbGwgcGlfdXBkYXRlX2lydGUgKS4KCkF0 IHRoaXMgbW9tZW50LCB3ZSBkb24ndCByZWNvZ25pemUgYW55IGV4aXN0aW5nIGNhbGxlciBvZgpt c2lfbXNnX3RvX3JlbWFwX2VudHJ5KCkgbmVlZHMgdG8gdXBkYXRlIGEgcG9zdGVkIElSVEUgdG8g YSByZW1hcHBlZCBJUlRFLgpJZiB0aGUgbmVlZCBlbWVyZ2VzLCB3ZSBjYW4gZXhwb3NlIHRoZSBj b21tb24gZnVuY3Rpb24gdG8gdGhlIGNhbGxlcnMuCgpJIGFsc28gd2FudCB0byBleHRlbmQgcGlf dXBkYXRlX2lydGUgdG8gcmVwbGFjZSBhIHBvc3RlZCBJUlRFIHRvIGEgcmVtYXBwZWQgb25lLHdo ZW4gZ3Vlc3Qgd3JvbmdseSBjb25maWd1cmF0ZSBpdHMgbXNpIGludGVycnVwdC4KCkkgaG9wZSBJ IGhhdmUgbWFkZSBpdCBhIGxpdHRsZSBjbGVhci4gYW5kIGdsYWQgdG8gc2VlIHlvdXIgZnVydGhl ciBzdWdnZXN0aW9uCnRvIG1ha2UgdGhlIGNvZGUgYW5kIHRoZSBkZXNjcmlwdGlvbiBiZXR0ZXIg dG8gZW5saWdodGVuIHRoZSBmb2xsb3dpbmcgcmVhZGVycy4KCj4+IC0gICAgaWYgKCBwZGV2ICkK Pj4gLSAgICAgICAgc2V0X21zaV9zb3VyY2VfaWQocGRldiwgJm5ld19pcmUpOwo+PiAtICAgIGVs c2UKPj4gLSAgICAgICAgc2V0X2hwZXRfc291cmNlX2lkKG1zaV9kZXNjLT5ocGV0X2lkLCAmbmV3 X2lyZSk7Cj4+IC0gICAgbmV3X2lyZS5yZW1hcC5yZXNfMyA9IDA7Cj4+IC0gICAgbmV3X2lyZS5y ZW1hcC5yZXNfNCA9IDA7Cj4+IC0gICAgbmV3X2lyZS5yZW1hcC5wID0gMTsgICAgLyogZmluYWxs eSwgc2V0IHByZXNlbnQgYml0ICovCj4+ICsgICAgLyoKPj4gKyAgICAgKiBBY3R1YWxseSB3ZSBj YW4ganVzdCBzdXBwcmVzcyB0aGUgdXBkYXRlIHdoZW4gSVJURSBpcyBhbHJlYWR5IGluIHBvc3Rl ZAo+PiArICAgICAqIGZvcm1hdC4gQWZ0ZXIgYSBtc2kgZ2V0cyBib3VuZCB0byBhIGd1ZXN0IGlu dGVycnVwdCwgY2hhbmdlcyB0byB0aGUgbXNpCj4+ICsgICAgICogbWVzc2FnZSBoYXZlIG5vIGVm ZmVjdCB0byB0aGUgSVJURS4KPj4gKyAgICAgKi8KPj4gKyAgICB1cGRhdGVfaXJ0ZV9mb3JfbXNp X2NvbW1vbihpb21tdSwgcGRldiwgbXNpX2Rlc2MsIG1zZywgcGlfZGVzYywgZ3ZlYyk7Cj4+ICAK Pj4gICAgICAvKiBub3cgY29uc3RydWN0IG5ldyBNU0kvTVNJLVggcnRlIGVudHJ5ICovCj4+ICsg ICAgaWYgKCBtc2lfZGVzYy0+bXNpX2F0dHJpYi50eXBlID09IFBDSV9DQVBfSURfTVNJICkKPj4g KyAgICAgICAgbnIgPSBtc2lfZGVzYy0+bXNpLm52ZWM7Cj4KPldoeSBkbyB5b3UgcmUtZG8gaGVy ZSB3aGF0IHdhcyBhbHJlYWR5IGRvbmUgZWFybGllciBpbiB0aGUgZnVuY3Rpb24KPihjb2RlIHlv dSBkaWRuJ3QgdG91Y2gpPwo+CgpXaWxsIHJlbW92ZSB0aGlzLgoKPj4gQEAgLTk5NiwzMSArMTA0 NiwxMSBAQCBpbnQgcGlfdXBkYXRlX2lydGUoY29uc3Qgc3RydWN0IHZjcHUgKnYsIGNvbnN0IHN0 cnVjdCBwaXJxICpwaXJxLAo+PiAgICAgIGlmICggIWlyX2N0cmwgKQo+PiAgICAgICAgICByZXR1 cm4gLUVOT0RFVjsKPj4gIAo+PiAtICAgIHNwaW5fbG9ja19pcnEoJmlyX2N0cmwtPmlyZW1hcF9s b2NrKTsKPj4gLQo+PiAtICAgIEdFVF9JUkVNQVBfRU5UUlkoaXJfY3RybC0+aXJlbWFwX21hZGRy LCByZW1hcF9pbmRleCwgaXJlbWFwX2VudHJpZXMsIHApOwo+PiAtCj4+IC0gICAgb2xkX2lyZSA9 ICpwOwo+PiAtCj4+IC0gICAgLyogU2V0dXAvVXBkYXRlIGludGVycnVwdCByZW1hcHBpbmcgdGFi bGUgZW50cnkuICovCj4+IC0gICAgc2V0dXBfcG9zdGVkX2lydGUoJm5ld19pcmUsICZvbGRfaXJl LCBwaV9kZXNjLCBndmVjKTsKPj4gLSAgICByZXQgPSBjbXB4Y2hnMTZiKHAsICZvbGRfaXJlLCAm bmV3X2lyZSk7Cj4+IC0KPj4gLSAgICAvKgo+PiAtICAgICAqIEluIHRoZSBhYm92ZSwgd2UgdXNl IGNtcHhjaGcxNiB0byBhdG9taWNhbGx5IHVwZGF0ZSB0aGUgMTI4LWJpdCBJUlRFLAo+PiAtICAg ICAqIGFuZCB0aGUgaGFyZHdhcmUgY2Fubm90IHVwZGF0ZSB0aGUgSVJURSBiZWhpbmQgdXMsIHNv IHRoZSByZXR1cm4gdmFsdWUKPj4gLSAgICAgKiBvZiBjbXB4Y2hnMTYgc2hvdWxkIGJlIHRoZSBz YW1lIGFzIG9sZF9pcmUuIFRoaXMgQVNTRVJUIHZhbGlkYXRlIGl0Lgo+PiAtICAgICAqLwo+PiAt ICAgIEFTU0VSVChyZXQgPT0gb2xkX2lyZS52YWwpOwo+PiAtCj4+IC0gICAgaW9tbXVfZmx1c2hf Y2FjaGVfZW50cnkocCwgc2l6ZW9mKCpwKSk7Cj4+IC0gICAgaW9tbXVfZmx1c2hfaWVjX2luZGV4 KGlvbW11LCAwLCByZW1hcF9pbmRleCk7Cj4+IC0KPj4gLSAgICB1bm1hcF92dGRfZG9tYWluX3Bh Z2UoaXJlbWFwX2VudHJpZXMpOwo+PiAtCj4+IC0gICAgc3Bpbl91bmxvY2tfaXJxKCZpcl9jdHJs LT5pcmVtYXBfbG9jayk7Cj4+IC0KPj4gLSAgICByZXR1cm4gMDsKPj4gKyAgICBzcGluX2xvY2tf aXJxc2F2ZSgmaXJfY3RybC0+aXJlbWFwX2xvY2ssIGZsYWdzKTsKPj4gKyAgICByYyA9IHVwZGF0 ZV9pcnRlX2Zvcl9tc2lfY29tbW9uKGlvbW11LCBwY2lfZGV2LCBtc2lfZGVzYywgTlVMTCwgcGlf ZGVzYywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd2ZWMpOwo+PiAr ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlyX2N0cmwtPmlyZW1hcF9sb2NrLCBmbGFncyk7 Cj4+ICsgICAgcmV0dXJuIHJjOwo+Cj5Db25zaWRlcmluZyB0aGUgb2xkIGNvZGUgdXNlIHNwaW5f bG9ja19pcnEoKSAoYW5kIHRoZXJlJ3Mgc3VjaCBsZWZ0Cj5hbHNvIGVhcmxpZXIgaW4gdGhlIGZ1 bmN0aW9uKSwgd2h5IGRvIHlvdSB1c2UgdGhlIGlycXNhdmUgZnVuY3Rpb24KPmhlcmU/CgpZZXMs IGl0IHNob3VsZCBiZSBzcGluX2xvY2tfaXJxKCkuIEkgc2F3IGl0IHVzZWQgaW4gbXNpX21zZ190 b19yZW1hcF9lbnRyeSgpIHNvCkkgZm9sbG93ZWQgaXQgd2l0aG91dCBkaWdnaW5nIGRlZXAgaW50 byB0aGUgZGlmZmVyZW5jZS4gVGhlIHNwaW5fbG9ja19pcnEoKQptYWtlcyBhbiBhc3N1bXB0aW9u IHRvIHRoZSBjdXJyZW50IGNvbnRleHQsIHNvIGl0J3MgYmV0dGVyLiAgCgpUaGFua3MsCkNoYW8K Cj4KPkphbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==