From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [RFC v3 4/5] virtio_ring: add event idx support in packed ring Date: Thu, 3 May 2018 04:44:39 +0300 Message-ID: <20180503044218-mutt-send-email-mst__39675.3480694771$1525311775$gmane$org@kernel.org> References: <20180425051550.24342-1-tiwei.bie@intel.com> <20180425051550.24342-5-tiwei.bie@intel.com> <34781052-df9f-e505-cd3f-08e460b34dcc@redhat.com> <20180502072819.mf5l3dypk6dwx2s7@debian> <20180502164828-mutt-send-email-mst@kernel.org> <20180502151255.h3x6rhszxa3euinl@debian> <20180502184015-mutt-send-email-mst@kernel.org> <20180503011116.qvoyblcpklinrk26@debian> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180503011116.qvoyblcpklinrk26@debian> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Tiwei Bie Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, wexu@redhat.com List-Id: virtualization@lists.linuxfoundation.org T24gVGh1LCBNYXkgMDMsIDIwMTggYXQgMDk6MTE6MTZBTSArMDgwMCwgVGl3ZWkgQmllIHdyb3Rl Ogo+IE9uIFdlZCwgTWF5IDAyLCAyMDE4IGF0IDA2OjQyOjU3UE0gKzAzMDAsIE1pY2hhZWwgUy4g VHNpcmtpbiB3cm90ZToKPiA+IE9uIFdlZCwgTWF5IDAyLCAyMDE4IGF0IDExOjEyOjU1UE0gKzA4 MDAsIFRpd2VpIEJpZSB3cm90ZToKPiA+ID4gT24gV2VkLCBNYXkgMDIsIDIwMTggYXQgMDQ6NTE6 MDFQTSArMDMwMCwgTWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+ID4gPiA+IE9uIFdlZCwgTWF5 IDAyLCAyMDE4IGF0IDAzOjI4OjE5UE0gKzA4MDAsIFRpd2VpIEJpZSB3cm90ZToKPiA+ID4gPiA+ IE9uIFdlZCwgTWF5IDAyLCAyMDE4IGF0IDEwOjUxOjA2QU0gKzA4MDAsIEphc29uIFdhbmcgd3Jv dGU6Cj4gPiA+ID4gPiA+IE9uIDIwMTjlubQwNOaciDI15pelIDEzOjE1LCBUaXdlaSBCaWUgd3Jv dGU6Cj4gPiA+ID4gPiA+ID4gVGhpcyBjb21taXQgaW50cm9kdWNlcyB0aGUgZXZlbnQgaWR4IHN1 cHBvcnQgaW4gcGFja2VkCj4gPiA+ID4gPiA+ID4gcmluZy4gVGhpcyBmZWF0dXJlIGlzIHRlbXBv cmFyaWx5IGRpc2FibGVkLCBiZWNhdXNlIHRoZQo+ID4gPiA+ID4gPiA+IGltcGxlbWVudGF0aW9u IGluIHRoaXMgcGF0Y2ggbWF5IG5vdCB3b3JrIGFzIGV4cGVjdGVkLAo+ID4gPiA+ID4gPiA+IGFu ZCBzb21lIGZ1cnRoZXIgZGlzY3Vzc2lvbnMgb24gdGhlIGltcGxlbWVudGF0aW9uIGFyZQo+ID4g PiA+ID4gPiA+IG5lZWRlZCwgZS5nLiBkbyB3ZSBoYXZlIHRvIGNoZWNrIHRoZSB3cmFwIGNvdW50 ZXIgd2hlbgo+ID4gPiA+ID4gPiA+IGNoZWNraW5nIHdoZXRoZXIgYSBraWNrIGlzIG5lZWRlZD8K PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBUaXdlaSBCaWUgPHRp d2VpLmJpZUBpbnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gICBkcml2 ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KPiA+ID4gPiA+ID4gPiAgIDEgZmlsZSBjaGFuZ2VkLCA0OSBpbnNl cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jIGIvZHJpdmVycy92aXJ0aW8v dmlydGlvX3JpbmcuYwo+ID4gPiA+ID4gPiA+IGluZGV4IDAxODFlOTM4OTdiZS4uYjEwMzljMjk4 NWI5IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19yaW5n LmMKPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jCj4gPiA+ ID4gPiA+ID4gQEAgLTk4Niw3ICs5ODYsNyBAQCBzdGF0aWMgaW5saW5lIGludCB2aXJ0cXVldWVf YWRkX3BhY2tlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gPiA+ID4gPiA+ID4gICBzdGF0aWMg Ym9vbCB2aXJ0cXVldWVfa2lja19wcmVwYXJlX3BhY2tlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEp Cj4gPiA+ID4gPiA+ID4gICB7Cj4gPiA+ID4gPiA+ID4gICAJc3RydWN0IHZyaW5nX3ZpcnRxdWV1 ZSAqdnEgPSB0b192dnEoX3ZxKTsKPiA+ID4gPiA+ID4gPiAtCXUxNiBmbGFnczsKPiA+ID4gPiA+ ID4gPiArCXUxNiBuZXcsIG9sZCwgb2ZmX3dyYXAsIGZsYWdzOwo+ID4gPiA+ID4gPiA+ICAgCWJv b2wgbmVlZHNfa2ljazsKPiA+ID4gPiA+ID4gPiAgIAl1MzIgc25hcHNob3Q7Cj4gPiA+ID4gPiA+ ID4gQEAgLTk5NSw3ICs5OTUsMTIgQEAgc3RhdGljIGJvb2wgdmlydHF1ZXVlX2tpY2tfcHJlcGFy ZV9wYWNrZWQoc3RydWN0IHZpcnRxdWV1ZSAqX3ZxKQo+ID4gPiA+ID4gPiA+ICAgCSAqIHN1cHBy ZXNzaW9ucy4gKi8KPiA+ID4gPiA+ID4gPiAgIAl2aXJ0aW9fbWIodnEtPndlYWtfYmFycmllcnMp Owo+ID4gPiA+ID4gPiA+ICsJb2xkID0gdnEtPm5leHRfYXZhaWxfaWR4IC0gdnEtPm51bV9hZGRl ZDsKPiA+ID4gPiA+ID4gPiArCW5ldyA9IHZxLT5uZXh0X2F2YWlsX2lkeDsKPiA+ID4gPiA+ID4g PiArCXZxLT5udW1fYWRkZWQgPSAwOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiAgIAlz bmFwc2hvdCA9ICoodTMyICopdnEtPnZyaW5nX3BhY2tlZC5kZXZpY2U7Cj4gPiA+ID4gPiA+ID4g KwlvZmZfd3JhcCA9IHZpcnRpbzE2X3RvX2NwdShfdnEtPnZkZXYsIHNuYXBzaG90ICYgMHhmZmZm KTsKPiA+ID4gPiA+ID4gPiAgIAlmbGFncyA9IGNwdV90b192aXJ0aW8xNihfdnEtPnZkZXYsIHNu YXBzaG90ID4+IDE2KSAmIDB4MzsKPiA+ID4gPiA+ID4gPiAgICNpZmRlZiBERUJVRwo+ID4gPiA+ ID4gPiA+IEBAIC0xMDA2LDcgKzEwMTEsMTAgQEAgc3RhdGljIGJvb2wgdmlydHF1ZXVlX2tpY2tf cHJlcGFyZV9wYWNrZWQoc3RydWN0IHZpcnRxdWV1ZSAqX3ZxKQo+ID4gPiA+ID4gPiA+ICAgCXZx LT5sYXN0X2FkZF90aW1lX3ZhbGlkID0gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gICAjZW5kaWYKPiA+ ID4gPiA+ID4gPiAtCW5lZWRzX2tpY2sgPSAoZmxhZ3MgIT0gVlJJTkdfRVZFTlRfRl9ESVNBQkxF KTsKPiA+ID4gPiA+ID4gPiArCWlmIChmbGFncyA9PSBWUklOR19FVkVOVF9GX0RFU0MpCj4gPiA+ ID4gPiA+ID4gKwkJbmVlZHNfa2ljayA9IHZyaW5nX25lZWRfZXZlbnQob2ZmX3dyYXAgJiB+KDE8 PDE1KSwgbmV3LCBvbGQpOwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gSSB3b25kZXIgd2hldGhl ciBvciBub3QgdGhlIG1hdGggaXMgY29ycmVjdC4gQm90aCBuZXcgYW5kIGV2ZW50IGFyZSBpbiB0 aGUKPiA+ID4gPiA+ID4gdW5pdCBvZiBkZXNjcmlwdG9yIHJpbmcgc2l6ZSwgYnV0IG9sZCBsb29r cyBub3QuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFdoYXQgdnJpbmdfbmVlZF9ldmVudCgpIGNhcmVz IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuCj4gPiA+ID4gPiBgbmV3YCBhbmQgYG9sZGAsIGkuZS4g dnEtPm51bV9hZGRlZC4gU28gSSB0aGluayB0aGVyZQo+ID4gPiA+ID4gaXMgbm90aGluZyB3cm9u ZyB3aXRoIGBvbGRgLiBCdXQgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZQo+ID4gPiA+ID4gZGlzdGFu Y2UgYmV0d2VlbiBgbmV3YCBhbmQgYGV2ZW50X2lkeGAgaXNuJ3QgcmlnaHQgd2hlbgo+ID4gPiA+ ID4gYG5ld2Agd3JhcHMuIEhvdyBkbyB5b3UgdGhpbmsgYWJvdXQgdGhlIGJlbG93IGNvZGU6Cj4g PiA+ID4gPiAKPiA+ID4gPiA+IAl3cmFwX2NvdW50ZXIgPSBvZmZfd3JhcCA+PiAxNTsKPiA+ID4g PiA+IAlldmVudF9pZHggPSBvZmZfd3JhcCAmIH4oMTw8MTUpOwo+ID4gPiA+ID4gCWlmICh3cmFw X2NvdW50ZXIgIT0gdnEtPndyYXBfY291bnRlcikKPiA+ID4gPiA+IAkJZXZlbnRfaWR4IC09IHZx LT52cmluZ19wYWNrZWQubnVtOwo+ID4gPiA+ID4gCQo+ID4gPiA+ID4gCW5lZWRzX2tpY2sgPSB2 cmluZ19uZWVkX2V2ZW50KGV2ZW50X2lkeCwgbmV3LCBvbGQpOwo+ID4gPiA+IAo+ID4gPiA+IEkg c3VzcGVjdCB0aGlzIGhhY2sgd29uJ3Qgd29yayBmb3Igbm9uIHBvd2VyIG9mIDIgcmluZy4KPiA+ ID4gCj4gPiA+IEFib3ZlIGNvZGUgZG9lc24ndCByZXF1aXJlIHRoZSByaW5nIHNpemUgdG8gYmUg YSBwb3dlciBvZiAyLgo+ID4gPiAKPiA+ID4gRm9yIChfX3UxNikobmV3X2lkeCAtIG9sZCksIHdo YXQgd2Ugd2FudCB0byBnZXQgaXMgdnEtPm51bV9hZGRlZC4KPiA+ID4gCj4gPiA+IG9sZCA9IHZx LT5uZXh0X2F2YWlsX2lkeCAtIHZxLT5udW1fYWRkZWQ7Cj4gPiA+IG5ldyA9IHZxLT5uZXh0X2F2 YWlsX2lkeDsKPiA+ID4gCj4gPiA+IFdoZW4gdnEtPm5leHRfYXZhaWxfaWR4ID49IHZxLT5udW1f YWRkZWQsIGl0J3Mgb2J2aW91cyB0aGF0LAo+ID4gPiAoX191MTYpKG5ld19pZHggLSBvbGQpIGlz IHZxLT5udW1fYWRkZWQuCj4gPiA+IAo+ID4gPiBBbmQgd2hlbiB2cS0+bmV4dF9hdmFpbF9pZHgg PCB2cS0+bnVtX2FkZGVkLCBuZXcgd2lsbCBiZSBzbWFsbGVyCj4gPiA+IHRoYW4gb2xkIChvbGQg d2lsbCBiZSBhIGJpZyB1bnNpZ25lZCBudW1iZXIpLCBidXQgKF9fdTE2KShuZXdfaWR4Cj4gPiA+ IC0gb2xkKSBpcyBzdGlsbCB2cS0+bnVtX2FkZGVkLgo+ID4gPiAKPiA+ID4gRm9yIChfX3UxNiko bmV3X2lkeCAtIGV2ZW50X2lkeCAtIDEpLCB3aGVuIG5ldyB3cmFwcyBhbmQgZXZlbnRfaWR4Cj4g PiA+IGRvZXNuJ3Qgd3JhcCwgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBjYWxjdWxh dGUgaXQgaXM6Cj4gPiA+IChuZXcgKyB2cS0+dnJpbmdfcGFja2VkLm51bSkgLSBldmVudF9pZHgg LSAxLgo+ID4gCj4gPiBTbyBob3cgYWJvdXQgd2UgdXNlIHRoZSBzdHJhaWdodGZvcndhcmQgd2F5 IHRoZW4/Cj4gCj4gWW91IG1lYW4gd2UgZG8gbmV3ICs9IHZxLT52cmluZ19wYWNrZWQubnVtIGlu c3RlYWQKPiBvZiBldmVudF9pZHggLT0gdnEtPnZyaW5nX3BhY2tlZC5udW0gYmVmb3JlIGNhbGxp bmcKPiB2cmluZ19uZWVkX2V2ZW50KCk/Cj4gCj4gVGhlIHByb2JsZW0gaXMgdGhhdCwgdGhlIHNl Y29uZCBwYXJhbSAobmV3X2lkeCkgb2YKPiB2cmluZ19uZWVkX2V2ZW50KCkgd2lsbCBiZSB1c2Vk IGZvcjoKPiAKPiAoX191MTYpKG5ld19pZHggLSBldmVudF9pZHggLSAxKQo+IChfX3UxNikobmV3 X2lkeCAtIG9sZCkKPiAKPiBTbyBpZiB3ZSBjaGFuZ2UgbmV3LCB3ZSB3aWxsIG5lZWQgdG8gY2hh bmdlIG9sZCB0b28uCgpJIHRoaW5rIHRoYXQgc2luY2Ugd2UgaGF2ZSBhIGJyYW5jaCB0aGVyZSBh bnl3YXksCndlIGFyZSBiZXR0ZXIgb2ZmIGp1c3Qgc3BlY2lhbC1jYXNpbmcgaWYgKHdyYXBfY291 bnRlciAhPSB2cS0+d3JhcF9jb3VudGVyKS4KVHJlYXQgaXMgZGlmZmVyZW50eSBhbmQgYXZvaWQg Y2FzdHMuCgo+IEFuZCB0aGF0IHdvdWxkIGJlIGFuIHVnbHkgaGFjay4uCj4gCj4gQmVzdCByZWdh cmRzLAo+IFRpd2VpIEJpZQoKSSBjb25zaWRlciBjYXN0cyBhbmQgaHVnZSBudW1iZXJzIHdpdGgg dHdvJ3MgY29tcGxlbWVudApnYW1lcyBldmVuIHVnbGllci4KCj4gPiAKPiA+ID4gQnV0IHdlIGNh biBhbHNvIGNhbGN1bGF0ZSBpdCBpbiB0aGlzIHdheToKPiA+ID4gCj4gPiA+IGV2ZW50X2lkeCAt PSB2cS0+dnJpbmdfcGFja2VkLm51bTsKPiA+ID4gKGV2ZW50X2lkeCB3aWxsIGJlIGEgYmlnIHVu c2lnbmVkIG51bWJlcikKPiA+ID4gCj4gPiA+IFRoZW4gKF9fdTE2KShuZXdfaWR4IC0gZXZlbnRf aWR4IC0gMSkgd2lsbCBiZSB0aGUgdmFsdWUgd2Ugd2FudC4KPiA+ID4gCj4gPiA+IEJlc3QgcmVn YXJkcywKPiA+ID4gVGl3ZWkgQmllCj4gPiAKPiA+IAo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+ ID4gQmVzdCByZWdhcmRzLAo+ID4gPiA+ID4gVGl3ZWkgQmllCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gVGhhbmtzCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ICsJZWxzZQo+ID4gPiA+ID4gPiA+ICsJCW5lZWRzX2tpY2sgPSAoZmxhZ3MgIT0gVlJJTkdf RVZFTlRfRl9ESVNBQkxFKTsKPiA+ID4gPiA+ID4gPiAgIAlFTkRfVVNFKHZxKTsKPiA+ID4gPiA+ ID4gPiAgIAlyZXR1cm4gbmVlZHNfa2ljazsKPiA+ID4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+ID4g PiBAQCAtMTExNiw2ICsxMTI0LDE1IEBAIHN0YXRpYyB2b2lkICp2aXJ0cXVldWVfZ2V0X2J1Zl9j dHhfcGFja2VkKHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiA+ID4gPiA+ID4gPiAgIAlpZiAodnEt Pmxhc3RfdXNlZF9pZHggPj0gdnEtPnZyaW5nX3BhY2tlZC5udW0pCj4gPiA+ID4gPiA+ID4gICAJ CXZxLT5sYXN0X3VzZWRfaWR4IC09IHZxLT52cmluZ19wYWNrZWQubnVtOwo+ID4gPiA+ID4gPiA+ ICsJLyogSWYgd2UgZXhwZWN0IGFuIGludGVycnVwdCBmb3IgdGhlIG5leHQgZW50cnksIHRlbGwg aG9zdAo+ID4gPiA+ID4gPiA+ICsJICogYnkgd3JpdGluZyBldmVudCBpbmRleCBhbmQgZmx1c2gg b3V0IHRoZSB3cml0ZSBiZWZvcmUKPiA+ID4gPiA+ID4gPiArCSAqIHRoZSByZWFkIGluIHRoZSBu ZXh0IGdldF9idWYgY2FsbC4gKi8KPiA+ID4gPiA+ID4gPiArCWlmICh2cS0+ZXZlbnRfZmxhZ3Nf c2hhZG93ID09IFZSSU5HX0VWRU5UX0ZfREVTQykKPiA+ID4gPiA+ID4gPiArCQl2aXJ0aW9fc3Rv cmVfbWIodnEtPndlYWtfYmFycmllcnMsCj4gPiA+ID4gPiA+ID4gKwkJCQkmdnEtPnZyaW5nX3Bh Y2tlZC5kcml2ZXItPm9mZl93cmFwLAo+ID4gPiA+ID4gPiA+ICsJCQkJY3B1X3RvX3ZpcnRpbzE2 KF92cS0+dmRldiwgdnEtPmxhc3RfdXNlZF9pZHggfAo+ID4gPiA+ID4gPiA+ICsJCQkJCQkodnEt PndyYXBfY291bnRlciA8PCAxNSkpKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gICAj aWZkZWYgREVCVUcKPiA+ID4gPiA+ID4gPiAgIAl2cS0+bGFzdF9hZGRfdGltZV92YWxpZCA9IGZh bHNlOwo+ID4gPiA+ID4gPiA+ICAgI2VuZGlmCj4gPiA+ID4gPiA+ID4gQEAgLTExNDMsMTAgKzEx NjAsMTcgQEAgc3RhdGljIHVuc2lnbmVkIHZpcnRxdWV1ZV9lbmFibGVfY2JfcHJlcGFyZV9wYWNr ZWQoc3RydWN0IHZpcnRxdWV1ZSAqX3ZxKQo+ID4gPiA+ID4gPiA+ICAgCS8qIFdlIG9wdGltaXN0 aWNhbGx5IHR1cm4gYmFjayBvbiBpbnRlcnJ1cHRzLCB0aGVuIGNoZWNrIGlmIHRoZXJlIHdhcwo+ ID4gPiA+ID4gPiA+ICAgCSAqIG1vcmUgdG8gZG8uICovCj4gPiA+ID4gPiA+ID4gKwkvKiBEZXBl bmRpbmcgb24gdGhlIFZJUlRJT19SSU5HX0ZfVVNFRF9FVkVOVF9JRFggZmVhdHVyZSwgd2UgbmVl ZCB0bwo+ID4gPiA+ID4gPiA+ICsJICogZWl0aGVyIGNsZWFyIHRoZSBmbGFncyBiaXQgb3IgcG9p bnQgdGhlIGV2ZW50IGluZGV4IGF0IHRoZSBuZXh0Cj4gPiA+ID4gPiA+ID4gKwkgKiBlbnRyeS4g QWx3YXlzIHVwZGF0ZSB0aGUgZXZlbnQgaW5kZXggdG8ga2VlcCBjb2RlIHNpbXBsZS4gKi8KPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwl2cS0+dnJpbmdfcGFja2VkLmRyaXZlci0+b2Zm X3dyYXAgPSBjcHVfdG9fdmlydGlvMTYoX3ZxLT52ZGV2LAo+ID4gPiA+ID4gPiA+ICsJCQl2cS0+ bGFzdF91c2VkX2lkeCB8ICh2cS0+d3JhcF9jb3VudGVyIDw8IDE1KSk7Cj4gPiA+ID4gPiA+ID4g ICAJaWYgKHZxLT5ldmVudF9mbGFnc19zaGFkb3cgPT0gVlJJTkdfRVZFTlRfRl9ESVNBQkxFKSB7 Cj4gPiA+ID4gPiA+ID4gICAJCXZpcnRpb193bWIodnEtPndlYWtfYmFycmllcnMpOwo+ID4gPiA+ ID4gPiA+IC0JCXZxLT5ldmVudF9mbGFnc19zaGFkb3cgPSBWUklOR19FVkVOVF9GX0VOQUJMRTsK PiA+ID4gPiA+ID4gPiArCQl2cS0+ZXZlbnRfZmxhZ3Nfc2hhZG93ID0gdnEtPmV2ZW50ID8gVlJJ TkdfRVZFTlRfRl9ERVNDIDoKPiA+ID4gPiA+ID4gPiArCQkJCQkJICAgICBWUklOR19FVkVOVF9G X0VOQUJMRTsKPiA+ID4gPiA+ID4gPiAgIAkJdnEtPnZyaW5nX3BhY2tlZC5kcml2ZXItPmZsYWdz ID0gY3B1X3RvX3ZpcnRpbzE2KF92cS0+dmRldiwKPiA+ID4gPiA+ID4gPiAgIAkJCQkJCQl2cS0+ ZXZlbnRfZmxhZ3Nfc2hhZG93KTsKPiA+ID4gPiA+ID4gPiAgIAl9Cj4gPiA+ID4gPiA+ID4gQEAg LTExNzIsMTUgKzExOTYsMzQgQEAgc3RhdGljIGJvb2wgdmlydHF1ZXVlX3BvbGxfcGFja2VkKHN0 cnVjdCB2aXJ0cXVldWUgKl92cSwgdW5zaWduZWQgbGFzdF91c2VkX2lkeCkKPiA+ID4gPiA+ID4g PiAgIHN0YXRpYyBib29sIHZpcnRxdWV1ZV9lbmFibGVfY2JfZGVsYXllZF9wYWNrZWQoc3RydWN0 IHZpcnRxdWV1ZSAqX3ZxKQo+ID4gPiA+ID4gPiA+ICAgewo+ID4gPiA+ID4gPiA+ICAgCXN0cnVj dCB2cmluZ192aXJ0cXVldWUgKnZxID0gdG9fdnZxKF92cSk7Cj4gPiA+ID4gPiA+ID4gKwl1MTYg YnVmcywgdXNlZF9pZHgsIHdyYXBfY291bnRlcjsKPiA+ID4gPiA+ID4gPiAgIAlTVEFSVF9VU0Uo dnEpOwo+ID4gPiA+ID4gPiA+ICAgCS8qIFdlIG9wdGltaXN0aWNhbGx5IHR1cm4gYmFjayBvbiBp bnRlcnJ1cHRzLCB0aGVuIGNoZWNrIGlmIHRoZXJlIHdhcwo+ID4gPiA+ID4gPiA+ICAgCSAqIG1v cmUgdG8gZG8uICovCj4gPiA+ID4gPiA+ID4gKwkvKiBEZXBlbmRpbmcgb24gdGhlIFZJUlRJT19S SU5HX0ZfVVNFRF9FVkVOVF9JRFggZmVhdHVyZSwgd2UgbmVlZCB0bwo+ID4gPiA+ID4gPiA+ICsJ ICogZWl0aGVyIGNsZWFyIHRoZSBmbGFncyBiaXQgb3IgcG9pbnQgdGhlIGV2ZW50IGluZGV4IGF0 IHRoZSBuZXh0Cj4gPiA+ID4gPiA+ID4gKwkgKiBlbnRyeS4gQWx3YXlzIHVwZGF0ZSB0aGUgZXZl bnQgaW5kZXggdG8ga2VlcCBjb2RlIHNpbXBsZS4gKi8KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gKwkvKiBUT0RPOiB0dW5lIHRoaXMgdGhyZXNob2xkICovCj4gPiA+ID4gPiA+ID4gKwli dWZzID0gKHUxNikodnEtPm5leHRfYXZhaWxfaWR4IC0gdnEtPmxhc3RfdXNlZF9pZHgpICogMyAv IDQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJdXNlZF9pZHggPSB2cS0+bGFzdF91 c2VkX2lkeCArIGJ1ZnM7Cj4gPiA+ID4gPiA+ID4gKwl3cmFwX2NvdW50ZXIgPSB2cS0+d3JhcF9j b3VudGVyOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCWlmICh1c2VkX2lkeCA+PSB2 cS0+dnJpbmdfcGFja2VkLm51bSkgewo+ID4gPiA+ID4gPiA+ICsJCXVzZWRfaWR4IC09IHZxLT52 cmluZ19wYWNrZWQubnVtOwo+ID4gPiA+ID4gPiA+ICsJCXdyYXBfY291bnRlciBePSAxOwo+ID4g PiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCXZxLT52cmluZ19w YWNrZWQuZHJpdmVyLT5vZmZfd3JhcCA9IGNwdV90b192aXJ0aW8xNihfdnEtPnZkZXYsCj4gPiA+ ID4gPiA+ID4gKwkJCXVzZWRfaWR4IHwgKHdyYXBfY291bnRlciA8PCAxNSkpOwo+ID4gPiA+ID4g PiA+ICAgCWlmICh2cS0+ZXZlbnRfZmxhZ3Nfc2hhZG93ID09IFZSSU5HX0VWRU5UX0ZfRElTQUJM RSkgewo+ID4gPiA+ID4gPiA+ICAgCQl2aXJ0aW9fd21iKHZxLT53ZWFrX2JhcnJpZXJzKTsKPiA+ ID4gPiA+ID4gPiAtCQl2cS0+ZXZlbnRfZmxhZ3Nfc2hhZG93ID0gVlJJTkdfRVZFTlRfRl9FTkFC TEU7Cj4gPiA+ID4gPiA+ID4gKwkJdnEtPmV2ZW50X2ZsYWdzX3NoYWRvdyA9IHZxLT5ldmVudCA/ IFZSSU5HX0VWRU5UX0ZfREVTQyA6Cj4gPiA+ID4gPiA+ID4gKwkJCQkJCSAgICAgVlJJTkdfRVZF TlRfRl9FTkFCTEU7Cj4gPiA+ID4gPiA+ID4gICAJCXZxLT52cmluZ19wYWNrZWQuZHJpdmVyLT5m bGFncyA9IGNwdV90b192aXJ0aW8xNihfdnEtPnZkZXYsCj4gPiA+ID4gPiA+ID4gICAJCQkJCQkJ dnEtPmV2ZW50X2ZsYWdzX3NoYWRvdyk7Cj4gPiA+ID4gPiA+ID4gICAJfQo+ID4gPiA+ID4gPiA+ IEBAIC0xODIyLDggKzE4NjUsMTAgQEAgdm9pZCB2cmluZ190cmFuc3BvcnRfZmVhdHVyZXMoc3Ry dWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpCj4gPiA+ID4gPiA+ID4gICAJCXN3aXRjaCAoaSkgewo+ ID4gPiA+ID4gPiA+ICAgCQljYXNlIFZJUlRJT19SSU5HX0ZfSU5ESVJFQ1RfREVTQzoKPiA+ID4g PiA+ID4gPiAgIAkJCWJyZWFrOwo+ID4gPiA+ID4gPiA+ICsjaWYgMAo+ID4gPiA+ID4gPiA+ICAg CQljYXNlIFZJUlRJT19SSU5HX0ZfRVZFTlRfSURYOgo+ID4gPiA+ID4gPiA+ICAgCQkJYnJlYWs7 Cj4gPiA+ID4gPiA+ID4gKyNlbmRpZgo+ID4gPiA+ID4gPiA+ICAgCQljYXNlIFZJUlRJT19GX1ZF UlNJT05fMToKPiA+ID4gPiA+ID4gPiAgIAkJCWJyZWFrOwo+ID4gPiA+ID4gPiA+ICAgCQljYXNl IFZJUlRJT19GX0lPTU1VX1BMQVRGT1JNOgo+ID4gPiA+ID4gPiAKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0 ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMu bGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u