From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7DA7989FAD for ; Fri, 10 May 2019 16:03:00 +0000 (UTC) References: <20190510123349.5072-1-maarten.lankhorst@linux.intel.com> <0857cfca-743f-b83a-67f1-72d925700f2c@linux.intel.com> <2c3e93c8f8659a9050668211c751d1d5116d3516.camel@bootlin.com> From: Maarten Lankhorst Message-ID: <4e955d61-6dac-cbd8-0ac5-ac73e4430f13@linux.intel.com> Date: Fri, 10 May 2019 18:02:57 +0200 MIME-Version: 1.0 In-Reply-To: <2c3e93c8f8659a9050668211c751d1d5116d3516.camel@bootlin.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 1/2] lib/igt_fb: Use cairo conversion in igt_fb_convert_with_stride, v3. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Paul Kocialkowski , igt-dev@lists.freedesktop.org List-ID: T3AgMTAtMDUtMjAxOSBvbSAxNzoxMCBzY2hyZWVmIFBhdWwgS29jaWFsa293c2tpOgo+IEhpLAo+ Cj4gT24gRnJpLCAyMDE5LTA1LTEwIGF0IDE2OjE5ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3 cm90ZToKPj4gT3AgMTAtMDUtMjAxOSBvbSAxNTo0MyBzY2hyZWVmIFBhdWwgS29jaWFsa293c2tp Ogo+Pj4gSGksCj4+Pgo+Pj4gSXQgbG9va3MgbGlrZSBJIGZlbGwgYmVoaW5kIG9uIHJldmlld2lu ZyBlYXJsaWVyIHZlcnNpb24gaGVyZSwgc29ycnkKPj4+IGFib3V0IHRoYXQuCj4+Pgo+Pj4gT24g RnJpLCAyMDE5LTA1LTEwIGF0IDE0OjMzICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToK Pj4+PiBFdmVyIHNpbmNlIGNvbW1pdCAzZmE2NWY0YjUzMmJkOWE1YiAoImZiOiBBZGQgc3VwcG9y dCBmb3IgY29udmVyc2lvbnMKPj4+PiB0aHJvdWdoIHBpeG1hbiIpIHdlIGNhbiBnZW5lcmF0ZSBh IHZhbGlkIGNhaXJvIHN1cmZhY2UgZm9yIGFueSBwbGFuZSwKPj4+PiB1c2UgdGhpcyB0byBhdm9p ZCBoYXZpbmcgdG8gaW1wbGVtZW50IG91ciBvd24gY29udmVyc2lvbiByb3V0aW5lLgo+Pj4+Cj4+ Pj4gSW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gaWd0X2ZiX2Nv bnZlcnRfd2l0aF9zdHJpZGUsCj4+Pj4gd2UgY2FuIHNpbXBseSBjb252ZXJ0IHRoaXMgdG8gYSBm ZXcgY2Fpcm8gY2FsbHMsIGJlY2F1c2Ugd2Ugbm93IHN1cHBvcnQKPj4+PiBjYWlybyBjYWxscyB0 byBhbnkgb2YgdGhlIHN1cHBvcnRlZCBmcmFtZWJ1ZmZlciBmb3JtYXRzLgo+Pj4gSSBkb24ndCBz ZWUgaG93IHRoYXQgaXMgdGhlIGNhc2UuIENhaXJvIGRlZmluaXRlbHkgZG9lcyBub3Qgc3VwcG9y dCBvdXIKPj4+IHRpbGVkIGZvcm1hdHMsIHNvIHdlIGNhbid0IGp1c3QgcGlwZSB0aGVtIGludG8g aXQuCj4+Pgo+Pj4gQW5kIHdlIGFscmVhZHkgdXNlIHBpeG1hbiBmb3IgY29udmVydGluZyB0aHJv dWdoIHRoZSBmYl9jb252ZXJ0IGNhbGwgdG8KPj4+IGNvbnZlcnRfcGl4bWFuIHdoZW4gcG9zc2li bGUuIEFsc28sIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBjYWlybyBpcwo+Pj4gdmVyeSBsaW1p dGVkIGZvcm1hdC13aXNlLCBzbyB3ZSdyZSBtdWNoIGJldHRlciBvZmYgdXNpbmcgcGl4bWFuCj4+ PiBkaXJlY3RseSAod2hpY2ggaXMgaXMgd2hhdCBhIG5vbi1hY2NlbGVyYXRlZCBjYWlybyBzdXJm YWNlIHdpbGwgZG8KPj4+IGFueXdheSkuCj4+Pgo+Pj4+IFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFr ZSB0aGlzIGZ1bmN0aW9uIG1vcmUgZ2VuZXJpYywgYW5kIGNvbnZlcnQgZnJvbSBhbnkKPj4+PiBm b3JtYXQvbW9kaWZpZXIgdG8gYW55IG90aGVyIGZvcm1hdC9tb2RpZmllci4KPj4+IFdlJ3ZlIGFs cmVhZHkgZGVzaWduZWQgaXQgdG8gYmUgZ2VuZXJpYywgd2UganVzdCBuZWVkIGNvbnZlcnNpb24K Pj4+IGhlbHBlcnMgZnJvbS90byAoY3VycmVudGx5IG9ubHkgdG8pIGhhcmR3YXJlLXNwZWNpZmlj IHRpbGluZyBtb2RpZmllcnMuCj4+Pgo+Pj4gV2UgY2FuJ3QgZXhwZWN0IGNhaXJvIG9yIHBpeG1h biB0byBkbyB0aGF0IGpvYiBhbmQgdGhpcyBjaGFuZ2UgcHJldHR5Cj4+PiBtdWNoIGtpbGxzIHN1 cHBvcnQgZm9yIHRoZSB2YzQgdGlsaW5nIG1vZGVzIHdlJ3ZlIGFkZGVkLgo+Pj4KPj4+IFVubGVz cyBJJ20gbWlzc2luZyBzb21ldGhpbmcsIHRoYXQncyBhIE5BQ0sgb24gbXkgc2lkZS4KPj4gWW91 IGhhdmUgYSBmdW5jdGlvbiB0aGF0IGNhbiBjb252ZXJ0IGEgdW50aWxlZCBmYiB0byB0aWxlZCwg YnV0IG5vdAo+PiB0aGUgb3RoZXIgd2F5IGFyb3VuZCBpbiBpZ3RfdmM0LmMKPiBXZSBkb24ndCBu ZWVkIGl0IGZvciBhbnl0aGluZyBhdCB0aGUgbW9tZW50IGJ1dCBpdCB3b3VsZG4ndCBiZSBhCj4g cHJvYmxlbSB0byBjb21lIHVwIHdpdGggb25lLCBzdXJlLgo+Cj4+IElmIHlvdSBjb3VsZCBwcm92 aWRlIHRoYXQsIHdlIGNvdWxkIGNvbnZlcnQgZnJvbSBhbnkgZmIvbW9kaWZpZXIKPj4gZm9ybWF0 IHRvIGFueSBmYi9tb2RpZmllciBmb3JtYXQsIGV2ZW4gd2l0aCBWQzQgdGlsaW5nLgo+IEkgZG9u J3QgZnVsbHkgZ2V0IHRoZSBwb2ludCBvZiB0aGF0IGlmIG91ciB0ZXN0cyBhcmUgbm90IGdvaW5n IHRvIHVzZQo+IGl0LCBidXQgaXQgZG9lc24ndCBodXJ0IGVpdGhlciA6KQo+Cj4+IE91ciBpbnRl cm5hbCBjYWlybyBob29rcyBhbHJlYWR5IHByb3ZpZGUgaGVscGVycyBmb3IgY29udmVyc2lvbiwg c2VlCj4+IGlndF9nZXRfY2Fpcm9fc3VyZmFjZSgpIHdoaWNoIGNhbGxzCj4+IGNyZWF0ZV9jYWly b19zdXJmYWNlX19jb252ZXJ0KCkKPiBNeSBmZWVsaW5nIGlzIHRoYXQgd2Ugc2hvdWxkIGtpbGwg dXNlIG9mIGNhaXJvIGZvcm1hdHMgYW5kIGdvIHdpdGgKPiBwaXhtYW4gZGlyZWN0bHkuCj4KPj4g U29tZSBjb252ZXJzaW9ucyBjYW4gb25seSBiZSBkb25lIHRocm91Z2ggY2Fpcm8sIGNvbnZlcnRp bmcgYmV0d2Vlbgo+PiBQMDF4IGFuZCBYUkdCODg4OCBjYW5ub3QgYmUgZG9uZSBkaXJlY3RseSwK Pj4gb3VyIHBpeG1hbiByZXByZXNlbnRhdGlvbiBmb3IgdGhhdCBhcmUgZG9uZSBpbiB0aGUgZmxv YXRpbmcgcG9pbnQKPj4gZm9ybWF0cy4KPiBJJ20gbm90IHN1cmUgSSdtIGZvbGxvd2luZyB0aGlz IHBvaW50LCBidXQgaWYgdGhlcmUncyBhIGNvbnZlcnNpb24gdGhhdAo+IGNhaXJvIGNhbiBkbyBh bmQgcGl4bWFuIGNhbid0LCBpdCBmZWVscyBsaWtlIHRoZSByaWdodCB0aGluZyB3b3VsZCBiZQo+ IHRvIGZpeCBwaXhtYW4gdG8gc3VwcG9ydCBpdC4gSXMgdGhlcmUgYSByZWFzb24gaW4gcGFydGlj dWxhciB3aHkgdGhpcwo+IHdvdWxkbid0IHdvcms/Cj4KPj4gVGhlIG9ubHkgd2F5IHRvIGNvbnZl cnQgYmV0d2VlbiBzb21lIGZyYW1lYnVmZmVyIGZvcm1hdHMgYW5kCj4+IG1vZGlmaWVycyBpbiBp OTE1IGlzIGJ5IHVzaW5nIHRob3NlIGNvbnZlcnNpb24gZnVuY3Rpb25zLAo+PiB0aGUgZmFjdCB0 aGF0IGlndF9mYl9jb252ZXJ0X3dpdGhfc3RyaWRlIGRvZXNuJ3QgZG8gdGhvc2UsIG1ha2VzIGEK Pj4gdHJ1bHkgcmFuZG9tIGhkbWktY21wLXBsYW5lcy1yYW5kb20gdXNlbGVzcy4KPiBTbyBpdCBi b2lscyBkb3duIHRvIGEgbWlzc2luZyBmb3JtYXQgc3VwcG9ydCBpc3N1ZSwgbm90IHJlYWxseSB0 byBhbgo+IGlzc3VlIHdpdGggdGhlIGV4aXN0aW5nIGZsb3cuCj4KPj4gSSB3YXMgZ2V0dGluZyBD UkMgbWlzbWF0Y2hlcyBiZWNhdXNlIHRoZSBpOTE1IG1vZGlmaWVycyB3ZXJlbid0Cj4+IHJlc3Bl Y3RlZC4gV2hlbiBJIG1hZGUgc3VyZSB0aGV5IHdlcmUgYmVpbmcgcmVzcGVjdGVkCj4+IEkgZW5k ZWQgdXAgd2l0aCBhIGR1cGxpY2F0ZSBvZiB0aGUgY2Fpcm8gY29udGV4dCBzdHVmZi4gU28gd2h5 IG5vdAo+PiBsb3NlIGEgbGl0dGxlIHNwZWVkIGFuZCB1c2UgdGhhdD8KPiBNeSBjb3VudGVyLXN1 Z2dlc3Rpb24gd291bGQgYmUgdG8gZG8gdGhlIG9wcG9zaXRlIGFuZCBtYWtlIHN1cmUgcGl4bWFu Cj4gY2FuIGRlYWwgd2l0aCB0aGVzZSBjYXNlcyBvbiBpdHMgb3duLgo+Cj4+IElmIHlvdSB3cml0 ZSBhbmQgdGVzdCBhIGRldGlsZXIgZnVuY3Rpb24sIEkgY2FuIGhvb2sgaXQgdXAgZm9yIHlvdS4K Pj4gOikKPj4gSWYgbmVjZXNzYXJ5IEkgY2FuIGRvIGl0IG15c2VsZiwgdG8gbW92ZSB0aGlzIHBh dGNoIGZvcndhcmQuCj4+Cj4+IENhaXJvIHNob3VsZG4ndCBiZSBtdWNoIHNsb3dlciB0aGFuIHBp eG1hbiwgYmVjYXVzZSBpbnRlcm5hbGx5IGl0Cj4+IGFscmVhZHkgdXNlcyBwaXhtYW4gY2FsbHMg Zm9yIHRoZSBiYWNrZW5kLgo+IFN1cmUsIGJ1dCB0aGF0J3Mgbm90IGNhaXJvJ3Mgcm9sZTogY2Fp cm8gaXMgYWJvdXQgZHJhd2luZywgd2hpbGUgcGl4bWFuCj4gaXMgYWJvdXQgcGl4ZWwgY29udmVy c2lvbi4gSSB0aGluayBpdCB3b3VsZCBiZSBiZXN0IHRvIHN0aWNrIHRvIHRoYXQuCj4KPiBDaGVl cnMsCj4KPiBQYXVsCj4KV2hhdCBhYm91dCB0aGlzPwoKV2UgY291bGQgZHJhdyByZWZlcmVuY2Ug RkIncyBpbiB2YzQgdCB0aWxlZCBmb3JtYXRzIG5vdyB0b28uLgoKLS0tODwtLS0tCkZyb20gNzI0 MmVkZDJjZDAwOTY1NTYwODBlMGNkYThkNGVjZWE0ZTNmYzU4ZCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KRGF0ZTogVHVlLCAyIEFwciAyMDE5IDE2OjU0OjMwICswMjAwClN1YmplY3Q6IFtQ QVRDSCBpLWctdF0gbGliL2lndF9mYjogVXNlIGNhaXJvIGNvbnZlcnNpb24gaW4KIGlndF9mYl9j b252ZXJ0X3dpdGhfc3RyaWRlLCB2NC4KCkV2ZXIgc2luY2UgY29tbWl0IDNmYTY1ZjRiNTMyYmQ5 YTViICgiZmI6IEFkZCBzdXBwb3J0IGZvciBjb252ZXJzaW9ucwp0aHJvdWdoIHBpeG1hbiIpIHdl IGNhbiBnZW5lcmF0ZSBhIHZhbGlkIGNhaXJvIHN1cmZhY2UgZm9yIGFueSBwbGFuZSwKdXNlIHRo aXMgdG8gYXZvaWQgaGF2aW5nIHRvIGltcGxlbWVudCBvdXIgb3duIGNvbnZlcnNpb24gcm91dGlu ZS4KCkluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhpcyBmdW5jdGlvbmFsaXR5IGluIGlndF9mYl9j b252ZXJ0X3dpdGhfc3RyaWRlLAp3ZSBjYW4gc2ltcGx5IGNvbnZlcnQgdGhpcyB0byBhIGZldyBj YWlybyBjYWxscywgYmVjYXVzZSB3ZSBub3cgc3VwcG9ydApjYWlybyBjYWxscyB0byBhbnkgb2Yg dGhlIHN1cHBvcnRlZCBmcmFtZWJ1ZmZlciBmb3JtYXRzLgoKVGhpcyBpcyByZXF1aXJlZCB0byBt YWtlIHRoaXMgZnVuY3Rpb24gbW9yZSBnZW5lcmljLCBhbmQgY29udmVydCBmcm9tIGFueQpmb3Jt YXQvbW9kaWZpZXIgdG8gYW55IG90aGVyIGZvcm1hdC9tb2RpZmllci4KCkNoYW5nZXMgc2luY2Ug djE6Ci0gUmV0dXJuIGZiX2lkIGluIHRoZSBjYWlybyBjYXNlLgpDaGFuZ2VzIHNpbmNlIHYyOgot IFJlbW92ZSB0aGUgbWFudWFsIGNvbnZlcnNpb24gZmFsbGJhY2suCkNoYW5nZXMgc2luY2UgdjM6 Ci0gSW50ZWdyYXRlIFZDNCBjb252ZXJzaW9uIHJvdXRpbmVzLgoKU2lnbmVkLW9mZi1ieTogTWFh cnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KQ2M6IFBh dWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4KLS0tCiBsaWIv aWd0X2ZiLmMgIHwgMTI5ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCiBsaWIvaWd0X3ZjNC5jIHwg Mjc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBs aWIvaWd0X3ZjNC5oIHwgIDEyICstLQogMyBmaWxlcyBjaGFuZ2VkLCAyNDIgaW5zZXJ0aW9ucygr KSwgMTc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3Rf ZmIuYwppbmRleCBkNDkyOTAxOTk3MWMuLmM2ZTE4Mzk3Yjc1NCAxMDA2NDQKLS0tIGEvbGliL2ln dF9mYi5jCisrKyBiL2xpYi9pZ3RfZmIuYwpAQCAtMTcxNiwxNyArMTcxNiwyNSBAQCBzdGF0aWMg dm9pZCBmcmVlX2xpbmVhcl9tYXBwaW5nKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCkKIAlz dHJ1Y3QgaWd0X2ZiICpmYiA9IGJsaXQtPmZiOwogCXN0cnVjdCBmYl9ibGl0X2xpbmVhciAqbGlu ZWFyID0gJmJsaXQtPmxpbmVhcjsKIAotCWdlbV9tdW5tYXAobGluZWFyLT5tYXAsIGxpbmVhci0+ ZmIuc2l6ZSk7Ci0JZ2VtX3NldF9kb21haW4oZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSwKLQkJ ICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOworCWlmIChpZ3RfdmM0X2lzX3RpbGVkKGZi LT5tb2RpZmllcikpIHsKKwkJdm9pZCAqbWFwID0gaWd0X3ZjNF9tbWFwX2JvKGZkLCBmYi0+Z2Vt X2hhbmRsZSwgZmItPnNpemUsIFBST1RfV1JJVEUpOwogCi0JaWYgKGJsaXQtPmJhdGNoKQotCQly ZW5kZXJjb3B5KGJsaXQsIGZiLCAmbGluZWFyLT5mYik7Ci0JZWxzZQotCQlibGl0Y29weShmYiwg JmxpbmVhci0+ZmIpOworCQl2YzRfZmJfY29udmVydF9wbGFuZV90b190aWxlZChmYiwgbWFwLCAm bGluZWFyLT5mYiwgJmxpbmVhci0+bWFwKTsKKworCQltdW5tYXAobWFwLCBmYi0+c2l6ZSk7CisJ fSBlbHNlIHsKKwkJZ2VtX211bm1hcChsaW5lYXItPm1hcCwgbGluZWFyLT5mYi5zaXplKTsKKwkJ Z2VtX3NldF9kb21haW4oZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSwKKwkJCUk5MTVfR0VNX0RP TUFJTl9HVFQsIDApOworCisJCWlmIChibGl0LT5iYXRjaCkKKwkJCXJlbmRlcmNvcHkoYmxpdCwg ZmIsICZsaW5lYXItPmZiKTsKKwkJZWxzZQorCQkJYmxpdGNvcHkoZmIsICZsaW5lYXItPmZiKTsK IAotCWdlbV9zeW5jKGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUpOwotCWdlbV9jbG9zZShmZCwg bGluZWFyLT5mYi5nZW1faGFuZGxlKTsKKwkJZ2VtX3N5bmMoZmQsIGxpbmVhci0+ZmIuZ2VtX2hh bmRsZSk7CisJCWdlbV9jbG9zZShmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxlKTsKKwl9CiAKIAlp ZiAoYmxpdC0+YmF0Y2gpIHsKIAkJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShibGl0LT5iYXRjaCk7 CkBAIC0xNzUxLDcgKzE3NTksNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9saW5lYXJfbWFwcGluZyhz dHJ1Y3QgZmJfYmxpdF91cGxvYWQgKmJsaXQpCiAJc3RydWN0IGlndF9mYiAqZmIgPSBibGl0LT5m YjsKIAlzdHJ1Y3QgZmJfYmxpdF9saW5lYXIgKmxpbmVhciA9ICZibGl0LT5saW5lYXI7CiAKLQlp ZiAodXNlX3JlbmRlcmNvcHkoZmIpKSB7CisJaWYgKCFpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2Rp ZmllcikgJiYgdXNlX3JlbmRlcmNvcHkoZmIpKSB7CiAJCWJsaXQtPmJ1Zm1nciA9IGRybV9pbnRl bF9idWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOwogCQlibGl0LT5iYXRjaCA9IGludGVsX2JhdGNo YnVmZmVyX2FsbG9jKGJsaXQtPmJ1Zm1nciwKIAkJCQkJCSAgICAgIGludGVsX2dldF9kcm1fZGV2 aWQoZmQpKTsKQEAgLTE3NzEsMjMgKzE3NzksMzUgQEAgc3RhdGljIHZvaWQgc2V0dXBfbGluZWFy X21hcHBpbmcoc3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0KQogCiAJaWd0X2Fzc2VydChsaW5l YXItPmZiLmdlbV9oYW5kbGUgPiAwKTsKIAotCS8qIENvcHkgZmIgY29udGVudCB0byBsaW5lYXIg Qk8gKi8KLQlnZW1fc2V0X2RvbWFpbihmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxlLAotCQkJSTkx NV9HRU1fRE9NQUlOX0dUVCwgMCk7CisJaWYgKGlndF92YzRfaXNfdGlsZWQoZmItPm1vZGlmaWVy KSkgeworCQl2b2lkICptYXAgPSBpZ3RfdmM0X21tYXBfYm8oZmQsIGZiLT5nZW1faGFuZGxlLCBm Yi0+c2l6ZSwgUFJPVF9SRUFEKTsKIAotCWlmIChibGl0LT5iYXRjaCkKLQkJcmVuZGVyY29weShi bGl0LCAmbGluZWFyLT5mYiwgZmIpOwotCWVsc2UKLQkJYmxpdGNvcHkoJmxpbmVhci0+ZmIsIGZi KTsKKwkJbGluZWFyLT5tYXAgPSBpZ3RfdmM0X21tYXBfYm8oZmQsIGxpbmVhci0+ZmIuZ2VtX2hh bmRsZSwKKwkJCQkJICAgICAgbGluZWFyLT5mYi5zaXplLAorCQkJCQkgICAgICBQUk9UX1JFQUQg fCBQUk9UX1dSSVRFKTsKIAotCWdlbV9zeW5jKGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUpOwor CQl2YzRfZmJfY29udmVydF9wbGFuZV9mcm9tX3RpbGVkKCZsaW5lYXItPmZiLCAmbGluZWFyLT5t YXAsIGZiLCBtYXApOwogCi0JZ2VtX3NldF9kb21haW4oZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRs ZSwKLQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUpOwor CQltdW5tYXAobWFwLCBmYi0+c2l6ZSk7CisJfSBlbHNlIHsKKwkJLyogQ29weSBmYiBjb250ZW50 IHRvIGxpbmVhciBCTyAqLworCQlnZW1fc2V0X2RvbWFpbihmZCwgbGluZWFyLT5mYi5nZW1faGFu ZGxlLAorCQkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOworCisJCWlmIChibGl0LT5iYXRjaCkK KwkJCXJlbmRlcmNvcHkoYmxpdCwgJmxpbmVhci0+ZmIsIGZiKTsKKwkJZWxzZQorCQkJYmxpdGNv cHkoJmxpbmVhci0+ZmIsIGZiKTsKKworCQlnZW1fc3luYyhmZCwgbGluZWFyLT5mYi5nZW1faGFu ZGxlKTsKKworCQlnZW1fc2V0X2RvbWFpbihmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxlLAorCQkJ STkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CiAKLQkvKiBTZXR1cCBj YWlybyBjb250ZXh0ICovCi0JbGluZWFyLT5tYXAgPSBnZW1fbW1hcF9fY3B1KGZkLCBsaW5lYXIt PmZiLmdlbV9oYW5kbGUsCi0JCQkJICAgIDAsIGxpbmVhci0+ZmIuc2l6ZSwgUFJPVF9SRUFEIHwg UFJPVF9XUklURSk7CisJCS8qIFNldHVwIGNhaXJvIGNvbnRleHQgKi8KKwkJbGluZWFyLT5tYXAg PSBnZW1fbW1hcF9fY3B1KGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUsCisJCQkJCTAsIGxpbmVh ci0+ZmIuc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJfQogfQogCiBzdGF0aWMgdm9p ZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3B1KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCkBA IC0yOTAyLDcgKzI5MjIsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29u dmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCQkJCQkJCSAgICAgJmJsaXQtPnNoYWRv d19mYik7CiAJaWd0X2Fzc2VydChibGl0LT5zaGFkb3dfcHRyKTsKIAotCWlmICh1c2VfcmVuZGVy Y29weShmYikgfHwgdXNlX2JsaXR0ZXIoZmIpKSB7CisJaWYgKHVzZV9yZW5kZXJjb3B5KGZiKSB8 fCB1c2VfYmxpdHRlcihmYikgfHwgaWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpKSB7CiAJ CXNldHVwX2xpbmVhcl9tYXBwaW5nKCZibGl0LT5iYXNlKTsKIAl9IGVsc2UgewogCQlibGl0LT5i YXNlLmxpbmVhci5mYiA9ICpmYjsKQEAgLTI5ODMsNyArMzAwMyw3IEBAIGNhaXJvX3N1cmZhY2Vf dCAqaWd0X2dldF9jYWlyb19zdXJmYWNlKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJCSAg ICAoKGYtPmNhaXJvX2lkID09IENBSVJPX0ZPUk1BVF9JTlZBTElEKSAmJgogCQkgICAgIChmLT5w aXhtYW5faWQgIT0gUElYTUFOX2ludmFsaWQpKSkKIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19j b252ZXJ0KGZkLCBmYik7Ci0JCWVsc2UgaWYgKHVzZV9ibGl0dGVyKGZiKSB8fCB1c2VfcmVuZGVy Y29weShmYikpCisJCWVsc2UgaWYgKHVzZV9ibGl0dGVyKGZiKSB8fCB1c2VfcmVuZGVyY29weShm YikgfHwgaWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpKQogCQkJY3JlYXRlX2NhaXJvX3N1 cmZhY2VfX2dwdShmZCwgZmIpOwogCQllbHNlCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3R0 KGZkLCBmYik7CkBAIC0zMTAyLDU4ICszMTIyLDIzIEBAIHVuc2lnbmVkIGludCBpZ3RfZmJfY29u dmVydF93aXRoX3N0cmlkZShzdHJ1Y3QgaWd0X2ZiICpkc3QsIHN0cnVjdCBpZ3RfZmIgKnNyYywK IAkJCQkJdWludDY0X3QgZHN0X21vZGlmaWVyLAogCQkJCQl1bnNpZ25lZCBpbnQgZHN0X3N0cmlk ZSkKIHsKLQlzdHJ1Y3QgZmJfY29udmVydCBjdnQgPSB7IH07Ci0Jc3RydWN0IGlndF9mYiBsaW5l YXI7Ci0Jdm9pZCAqZHN0X3B0ciwgKnNyY19wdHI7Ci0JdWludDY0X3QgYmFzZV9tb2RpZmllcjsK KwkvKiBVc2UgdGhlIGNhaXJvIGFwaSB0byBjb252ZXJ0ICovCisJY2Fpcm9fc3VyZmFjZV90ICpz dXJmID0gaWd0X2dldF9jYWlyb19zdXJmYWNlKHNyYy0+ZmQsIHNyYyk7CisJY2Fpcm9fdCAqY3I7 CiAJaW50IGZiX2lkOwogCi0JaWYgKGlzX3ZjNF9kZXZpY2Uoc3JjLT5mZCkpCi0JCWJhc2VfbW9k aWZpZXIgPSBmb3VyY2NfbW9kX2Jyb2FkY29tX21vZChkc3RfbW9kaWZpZXIpOwotCWVsc2UKLQkJ YmFzZV9tb2RpZmllciA9IGRzdF9tb2RpZmllcjsKLQotCWZiX2lkID0gaWd0X2NyZWF0ZV9mYl93 aXRoX2JvX3NpemUoc3JjLT5mZCwgc3JjLT53aWR0aCwgc3JjLT5oZWlnaHQsCi0JCQkJCSAgIGRz dF9mb3VyY2MsCi0JCQkJCSAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsICZsaW5lYXIsCi0J CQkJCSAgIDAsIGRzdF9zdHJpZGUpOworCWZiX2lkID0gaWd0X2NyZWF0ZV9mYl93aXRoX2JvX3Np emUoc3JjLT5mZCwgc3JjLT53aWR0aCwKKwkJCQkJICAgc3JjLT5oZWlnaHQsIGRzdF9mb3VyY2Ms CisJCQkJCSAgIGRzdF9tb2RpZmllciwgZHN0LCAwLAorCQkJCQkgICBkc3Rfc3RyaWRlKTsKIAlp Z3RfYXNzZXJ0KGZiX2lkID4gMCk7CiAKLQlzcmNfcHRyID0gaWd0X2ZiX21hcF9idWZmZXIoc3Jj LT5mZCwgc3JjKTsKLQlpZ3RfYXNzZXJ0KHNyY19wdHIpOwotCi0JZHN0X3B0ciA9IGlndF9mYl9t YXBfYnVmZmVyKGxpbmVhci5mZCwgJmxpbmVhcik7Ci0JaWd0X2Fzc2VydChkc3RfcHRyKTsKLQot CWN2dC5kc3QucHRyID0gZHN0X3B0cjsKLQljdnQuZHN0LmZiID0gJmxpbmVhcjsKLQljdnQuc3Jj LnB0ciA9IHNyY19wdHI7Ci0JY3Z0LnNyYy5mYiA9IHNyYzsKLQlmYl9jb252ZXJ0KCZjdnQpOwot Ci0JaWd0X2ZiX3VubWFwX2J1ZmZlcihkc3QsIGRzdF9wdHIpOwotCWlndF9mYl91bm1hcF9idWZm ZXIoc3JjLCBzcmNfcHRyKTsKLQotCXN3aXRjaCAoYmFzZV9tb2RpZmllcikgewotCWNhc2UgRFJN X0ZPUk1BVF9NT0RfQlJPQURDT01fVkM0X1RfVElMRUQ6Ci0JCWZiX2lkID0gaWd0X3ZjNF9mYl90 X3RpbGVkX2NvbnZlcnQoZHN0LCAmbGluZWFyKTsKLQkJYnJlYWs7Ci0JY2FzZSBEUk1fRk9STUFU X01PRF9CUk9BRENPTV9TQU5EMzI6Ci0JY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9TQU5E NjQ6Ci0JY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9TQU5EMTI4OgotCWNhc2UgRFJNX0ZP Uk1BVF9NT0RfQlJPQURDT01fU0FORDI1NjoKLQkJZmJfaWQgPSB2YzRfZmJfc2FuZF90aWxlZF9j b252ZXJ0KGRzdCwgJmxpbmVhciwgZHN0X21vZGlmaWVyKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoK LQkJaWd0X2Fzc2VydChkc3RfbW9kaWZpZXIgPT0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSk7 Ci0JfQotCi0JaWd0X2Fzc2VydChmYl9pZCA+IDApOworCWNyID0gaWd0X2dldF9jYWlyb19jdHgo ZHN0LT5mZCwgZHN0KTsKKwljYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmYsIDAsIDAp OworCWNhaXJvX3BhaW50KGNyKTsKKwlpZ3RfcHV0X2NhaXJvX2N0eChkc3QtPmZkLCBkc3QsIGNy KTsKIAotCWlmIChkc3RfbW9kaWZpZXIgPT0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSkKLQkJ KmRzdCA9IGxpbmVhcjsKLQllbHNlCi0JCWlndF9yZW1vdmVfZmIobGluZWFyLmZkLCAmbGluZWFy KTsKKwljYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZik7CiAKIAlyZXR1cm4gZmJfaWQ7CiB9CmRp ZmYgLS1naXQgYS9saWIvaWd0X3ZjNC5jIGIvbGliL2lndF92YzQuYwppbmRleCA5YTBiYTMwYjQ0 MjAuLjQ0MTVmYTMyMWNlYiAxMDA2NDQKLS0tIGEvbGliL2lndF92YzQuYworKysgYi9saWIvaWd0 X3ZjNC5jCkBAIC01Niw2ICs1NiwyMyBAQAogICogdGVzdHMuCiAgKi8KIAorYm9vbCBpZ3RfdmM0 X2lzX3RpbGVkKHVpbnQ2NF90IG1vZGlmaWVyKQoreworCWlmIChtb2RpZmllciA+PiA1NlVMTCAh PSBEUk1fRk9STUFUX01PRF9WRU5ET1JfQlJPQURDT00pCisJCXJldHVybiBmYWxzZTsKKworCXN3 aXRjaCAoZm91cmNjX21vZF9icm9hZGNvbV9tb2QobW9kaWZpZXIpKSB7CisJY2FzZSBEUk1fRk9S TUFUX01PRF9CUk9BRENPTV9TQU5EMzI6CisJY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9T QU5ENjQ6CisJY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9TQU5EMTI4OgorCWNhc2UgRFJN X0ZPUk1BVF9NT0RfQlJPQURDT01fU0FORDI1NjoKKwljYXNlIERSTV9GT1JNQVRfTU9EX0JST0FE Q09NX1ZDNF9UX1RJTEVEOgorCQlyZXR1cm4gdHJ1ZTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFs c2U7CisJfQorfQorCiAvKioKICAqIGlndF92YzRfZ2V0X2NsZWFyZWRfYm86CiAgKiBAZmQ6IGRl dmljZSBmaWxlIGRlc2NyaXB0b3IKQEAgLTE3OCw2MyArMTk1LDEyIEBAIGJvb2wgaWd0X3ZjNF9w dXJnZWFibGVfYm8oaW50IGZkLCBpbnQgaGFuZGxlLCBib29sIHB1cmdlYWJsZSkKIAlyZXR1cm4g YXJnLnJldGFpbmVkOwogfQogCi11bnNpZ25lZCBpbnQgaWd0X3ZjNF9mYl90X3RpbGVkX2NvbnZl cnQoc3RydWN0IGlndF9mYiAqZHN0LCBzdHJ1Y3QgaWd0X2ZiICpzcmMpCi17Ci0JdW5zaWduZWQg aW50IGZiX2lkOwotCXVuc2lnbmVkIGludCBpLCBqOwotCXZvaWQgKnNyY19idWY7Ci0Jdm9pZCAq ZHN0X2J1ZjsKLQlzaXplX3QgYnBwID0gc3JjLT5wbGFuZV9icHBbMF07Ci0Jc2l6ZV90IGRzdF9z dHJpZGUgPSBBTElHTihzcmMtPnN0cmlkZXNbMF0sIDEyOCk7Ci0KLQlmYl9pZCA9IGlndF9jcmVh dGVfZmJfd2l0aF9ib19zaXplKHNyYy0+ZmQsIHNyYy0+d2lkdGgsIHNyYy0+aGVpZ2h0LAotCQkJ CQkgICBzcmMtPmRybV9mb3JtYXQsCi0JCQkJCSAgIERSTV9GT1JNQVRfTU9EX0JST0FEQ09NX1ZD NF9UX1RJTEVELAotCQkJCQkgICBkc3QsIDAsIGRzdF9zdHJpZGUpOwotCWlndF9hc3NlcnQoZmJf aWQgPiAwKTsKLQotCWlndF9hc3NlcnQoYnBwID09IDE2IHx8IGJwcCA9PSAzMik7Ci0KLQlzcmNf YnVmID0gaWd0X2ZiX21hcF9idWZmZXIoc3JjLT5mZCwgc3JjKTsKLQlpZ3RfYXNzZXJ0KHNyY19i dWYpOwotCi0JZHN0X2J1ZiA9IGlndF9mYl9tYXBfYnVmZmVyKGRzdC0+ZmQsIGRzdCk7Ci0JaWd0 X2Fzc2VydChkc3RfYnVmKTsKLQotCWZvciAoaSA9IDA7IGkgPCBzcmMtPmhlaWdodDsgaSsrKSB7 Ci0JCWZvciAoaiA9IDA7IGogPCBzcmMtPndpZHRoOyBqKyspIHsKLQkJCXNpemVfdCBzcmNfb2Zm c2V0ID0gc3JjLT5vZmZzZXRzWzBdOwotCQkJc2l6ZV90IGRzdF9vZmZzZXQgPSBkc3QtPm9mZnNl dHNbMF07Ci0KLQkJCXNyY19vZmZzZXQgKz0gc3JjLT5zdHJpZGVzWzBdICogaSArIGogKiBicHAg LyA4OwotCQkJZHN0X29mZnNldCArPSBpZ3RfdmM0X3RfdGlsZWRfb2Zmc2V0KGRzdF9zdHJpZGUs Ci0JCQkJCQkJICAgICBzcmMtPmhlaWdodCwKLQkJCQkJCQkgICAgIGJwcCwgaiwgaSk7Ci0KLQkJ CXN3aXRjaCAoYnBwKSB7Ci0JCQljYXNlIDE2OgotCQkJCSoodWludDE2X3QgKikoZHN0X2J1ZiAr IGRzdF9vZmZzZXQpID0KLQkJCQkJKih1aW50MTZfdCAqKShzcmNfYnVmICsgc3JjX29mZnNldCk7 Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIDMyOgotCQkJCSoodWludDMyX3QgKikoZHN0X2J1ZiArIGRz dF9vZmZzZXQpID0KLQkJCQkJKih1aW50MzJfdCAqKShzcmNfYnVmICsgc3JjX29mZnNldCk7Ci0J CQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZ3RfZmJfdW5tYXBfYnVmZmVyKHNyYywgc3Jj X2J1Zik7Ci0JaWd0X2ZiX3VubWFwX2J1ZmZlcihkc3QsIGRzdF9idWYpOwotCi0JcmV0dXJuIGZi X2lkOwotfQogCiAvKiBDYWxjdWxhdGUgdGhlIHQtdGlsZSB3aWR0aCBzbyB0aGF0IHNpemUgPSB3 aWR0aCAqIGhlaWdodCAqIGJwcCAvIDguICovCiAjZGVmaW5lIFZDNF9UX1RJTEVfVyhzaXplLCBo ZWlnaHQsIGJwcCkgKChzaXplKSAvIChoZWlnaHQpIC8gKChicHApIC8gOCkpCiAKLXNpemVfdCBp Z3RfdmM0X3RfdGlsZWRfb2Zmc2V0KHNpemVfdCBzdHJpZGUsIHNpemVfdCBoZWlnaHQsIHNpemVf dCBicHAsCi0JCQkgICAgICBzaXplX3QgeCwgc2l6ZV90IHkpCitzdGF0aWMgc2l6ZV90IGlndF92 YzRfdF90aWxlZF9vZmZzZXQoc2l6ZV90IHN0cmlkZSwgc2l6ZV90IGhlaWdodCwgc2l6ZV90IGJw cCwKKwkJCQkgICAgIHNpemVfdCB4LCBzaXplX3QgeSkKIHsKIAljb25zdCBzaXplX3QgdDFrX21h cF9ldmVuW10gPSB7IDAsIDMsIDEsIDIgfTsKIAljb25zdCBzaXplX3QgdDFrX21hcF9vZGRbXSA9 IHsgMiwgMSwgMywgMCB9OwpAQCAtMzA4LDE4ICsyNzQsMTE2IEBAIHNpemVfdCBpZ3RfdmM0X3Rf dGlsZWRfb2Zmc2V0KHNpemVfdCBzdHJpZGUsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBicHAsCiAJ cmV0dXJuIG9mZnNldDsKIH0KIAotc3RhdGljIHZvaWQgdmM0X2ZiX3NhbmRfdGlsZWRfY29udmVy dF9wbGFuZShzdHJ1Y3QgaWd0X2ZiICpkc3QsIHZvaWQgKmRzdF9idWYsCitzdGF0aWMgdm9pZCB2 YzRfZmJfY29udmVydF9wbGFuZV90b190X3RpbGVkKHN0cnVjdCBpZ3RfZmIgKmRzdCwgdm9pZCAq ZHN0X2J1ZiwKIAkJCQkJICAgIHN0cnVjdCBpZ3RfZmIgKnNyYywgdm9pZCAqc3JjX2J1ZiwKLQkJ CQkJICAgIHNpemVfdCBjb2x1bW5fd2lkdGhfYnl0ZXMsCi0JCQkJCSAgICBzaXplX3QgY29sdW1u X2hlaWdodCwKIAkJCQkJICAgIHVuc2lnbmVkIGludCBwbGFuZSkKIHsKKwlzaXplX3QgYnBwID0g c3JjLT5wbGFuZV9icHBbcGxhbmVdOworCXVuc2lnbmVkIGludCBpLCBqOworCisJZm9yIChpID0g MDsgaSA8IHNyYy0+aGVpZ2h0OyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IHNyYy0+d2lkdGg7 IGorKykgeworCQkJc2l6ZV90IHNyY19vZmZzZXQgPSBzcmMtPm9mZnNldHNbcGxhbmVdOworCQkJ c2l6ZV90IGRzdF9vZmZzZXQgPSBkc3QtPm9mZnNldHNbcGxhbmVdOworCisJCQlzcmNfb2Zmc2V0 ICs9IHNyYy0+c3RyaWRlc1twbGFuZV0gKiBpICsgaiAqIGJwcCAvIDg7CisJCQlkc3Rfb2Zmc2V0 ICs9IGlndF92YzRfdF90aWxlZF9vZmZzZXQoZHN0LT5zdHJpZGVzW3BsYW5lXSwKKwkJCQkJCQkg ICAgIGRzdC0+aGVpZ2h0LAorCQkJCQkJCSAgICAgYnBwLCBqLCBpKTsKKworCQkJc3dpdGNoIChi cHApIHsKKwkJCWNhc2UgMTY6CisJCQkJKih1aW50MTZfdCAqKShkc3RfYnVmICsgZHN0X29mZnNl dCkgPQorCQkJCQkqKHVpbnQxNl90ICopKHNyY19idWYgKyBzcmNfb2Zmc2V0KTsKKwkJCQlicmVh azsKKwkJCWNhc2UgMzI6CisJCQkJKih1aW50MzJfdCAqKShkc3RfYnVmICsgZHN0X29mZnNldCkg PQorCQkJCQkqKHVpbnQzMl90ICopKHNyY19idWYgKyBzcmNfb2Zmc2V0KTsKKwkJCQlicmVhazsK KwkJCX0KKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgdmM0X2ZiX2NvbnZlcnRfcGxhbmVfZnJv bV90X3RpbGVkKHN0cnVjdCBpZ3RfZmIgKmRzdCwgdm9pZCAqZHN0X2J1ZiwKKwkJCQkJICAgICAg c3RydWN0IGlndF9mYiAqc3JjLCB2b2lkICpzcmNfYnVmLAorCQkJCQkgICAgICB1bnNpZ25lZCBp bnQgcGxhbmUpCit7CisJc2l6ZV90IGJwcCA9IHNyYy0+cGxhbmVfYnBwW3BsYW5lXTsKKwl1bnNp Z25lZCBpbnQgaSwgajsKKworCWZvciAoaSA9IDA7IGkgPCBzcmMtPmhlaWdodDsgaSsrKSB7CisJ CWZvciAoaiA9IDA7IGogPCBzcmMtPndpZHRoOyBqKyspIHsKKwkJCXNpemVfdCBzcmNfb2Zmc2V0 ID0gc3JjLT5vZmZzZXRzW3BsYW5lXTsKKwkJCXNpemVfdCBkc3Rfb2Zmc2V0ID0gZHN0LT5vZmZz ZXRzW3BsYW5lXTsKKworCQkJc3JjX29mZnNldCArPSBpZ3RfdmM0X3RfdGlsZWRfb2Zmc2V0KHNy Yy0+c3RyaWRlc1twbGFuZV0sCisJCQkJCQkJICAgICBzcmMtPmhlaWdodCwKKwkJCQkJCQkgICAg IGJwcCwgaiwgaSk7CisJCQlzcmNfb2Zmc2V0ICs9IGRzdC0+c3RyaWRlc1twbGFuZV0gKiBpICsg aiAqIGJwcCAvIDg7CisKKwkJCXN3aXRjaCAoYnBwKSB7CisJCQljYXNlIDE2OgorCQkJCSoodWlu dDE2X3QgKikoZHN0X2J1ZiArIGRzdF9vZmZzZXQpID0KKwkJCQkJKih1aW50MTZfdCAqKShzcmNf YnVmICsgc3JjX29mZnNldCk7CisJCQkJYnJlYWs7CisJCQljYXNlIDMyOgorCQkJCSoodWludDMy X3QgKikoZHN0X2J1ZiArIGRzdF9vZmZzZXQpID0KKwkJCQkJKih1aW50MzJfdCAqKShzcmNfYnVm ICsgc3JjX29mZnNldCk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9Cit9CisKK3N0YXRpYyBz aXplX3QgdmM0X3NhbmRfdGlsZWRfb2Zmc2V0KHNpemVfdCBjb2x1bW5fd2lkdGgsIHNpemVfdCBj b2x1bW5fc2l6ZSwgc2l6ZV90IHgsCisJCQkJICAgIHNpemVfdCB5LCBzaXplX3QgYnBwKQorewor CXNpemVfdCBvZmZzZXQgPSAwOworCXNpemVfdCBjb2xzX3g7CisJc2l6ZV90IHBpeF94OworCisJ LyogT2Zmc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJlbGV2YW50IGNvbHVtbi4gKi8KKwlj b2xzX3ggPSB4IC8gY29sdW1uX3dpZHRoOworCW9mZnNldCArPSBjb2xzX3ggKiBjb2x1bW5fc2l6 ZTsKKworCS8qIE9mZnNldCB0byB0aGUgcmVsZXZhbnQgcGl4ZWwuICovCisJcGl4X3ggPSB4ICUg Y29sdW1uX3dpZHRoOworCW9mZnNldCArPSAoY29sdW1uX3dpZHRoICogeSArIHBpeF94KSAqIGJw cCAvIDg7CisKKwlyZXR1cm4gb2Zmc2V0OworfQorCitzdGF0aWMgdm9pZCB2YzRfZmJfY29udmVy dF9wbGFuZV90b19zYW5kX3RpbGVkKHN0cnVjdCBpZ3RfZmIgKmRzdCwgdm9pZCAqZHN0X2J1ZiwK KwkJCQkJICAgICAgIHN0cnVjdCBpZ3RfZmIgKnNyYywgdm9pZCAqc3JjX2J1ZiwKKwkJCQkJICAg ICAgIHVuc2lnbmVkIGludCBwbGFuZSkKK3sKKwl1aW50NjRfdCBtb2RpZmllcl9iYXNlID0gZm91 cmNjX21vZF9icm9hZGNvbV9tb2QoZHN0LT5tb2RpZmllcik7CisJdWludDMyX3QgY29sdW1uX2hl aWdodCA9IGZvdXJjY19tb2RfYnJvYWRjb21fcGFyYW0oZHN0LT5tb2RpZmllcik7CisJdWludDMy X3QgY29sdW1uX3dpZHRoX2J5dGVzLCBjb2x1bW5fd2lkdGgsIGNvbHVtbl9zaXplOwogCXNpemVf dCBicHAgPSBkc3QtPnBsYW5lX2JwcFtwbGFuZV07Ci0Jc2l6ZV90IGNvbHVtbl93aWR0aCA9IGNv bHVtbl93aWR0aF9ieXRlcyAqIGRzdC0+cGxhbmVfd2lkdGhbcGxhbmVdIC8KLQkJCSAgICAgIGRz dC0+d2lkdGg7Ci0Jc2l6ZV90IGNvbHVtbl9zaXplID0gY29sdW1uX3dpZHRoX2J5dGVzICogY29s dW1uX2hlaWdodDsKIAl1bnNpZ25lZCBpbnQgaSwgajsKIAorCXN3aXRjaCAobW9kaWZpZXJfYmFz ZSkgeworCWNhc2UgRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01fU0FORDMyOgorCQljb2x1bW5fd2lk dGhfYnl0ZXMgPSAzMjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9T QU5ENjQ6CisJCWNvbHVtbl93aWR0aF9ieXRlcyA9IDY0OworCQlicmVhazsKKwljYXNlIERSTV9G T1JNQVRfTU9EX0JST0FEQ09NX1NBTkQxMjg6CisJCWNvbHVtbl93aWR0aF9ieXRlcyA9IDEyODsK KwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9TQU5EMjU2OgorCQljb2x1 bW5fd2lkdGhfYnl0ZXMgPSAyNTY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnQo ZmFsc2UpOworCX0KKworCWNvbHVtbl93aWR0aCA9IGNvbHVtbl93aWR0aF9ieXRlcyAqIGRzdC0+ cGxhbmVfd2lkdGhbcGxhbmVdIC8gZHN0LT53aWR0aDsKKwljb2x1bW5fc2l6ZSA9IGNvbHVtbl93 aWR0aF9ieXRlcyAqIGNvbHVtbl9oZWlnaHQ7CisKIAlmb3IgKGkgPSAwOyBpIDwgZHN0LT5wbGFu ZV9oZWlnaHRbcGxhbmVdOyBpKyspIHsKIAkJZm9yIChqID0gMDsgaiA8IHNyYy0+cGxhbmVfd2lk dGhbcGxhbmVdOyBqKyspIHsKIAkJCXNpemVfdCBzcmNfb2Zmc2V0ID0gc3JjLT5vZmZzZXRzW3Bs YW5lXTsKQEAgLTM0NiwxOSArNDEwLDE1IEBAIHN0YXRpYyB2b2lkIHZjNF9mYl9zYW5kX3RpbGVk X2NvbnZlcnRfcGxhbmUoc3RydWN0IGlndF9mYiAqZHN0LCB2b2lkICpkc3RfYnVmLAogCX0KIH0K IAotdW5zaWduZWQgaW50IHZjNF9mYl9zYW5kX3RpbGVkX2NvbnZlcnQoc3RydWN0IGlndF9mYiAq ZHN0LCBzdHJ1Y3QgaWd0X2ZiICpzcmMsCi0JCQkJICAgICAgIHVpbnQ2NF90IG1vZGlmaWVyKQor c3RhdGljIHZvaWQgdmM0X2ZiX2NvbnZlcnRfcGxhbmVfZnJvbV9zYW5kX3RpbGVkKHN0cnVjdCBp Z3RfZmIgKmRzdCwgdm9pZCAqZHN0X2J1ZiwKKwkJCQkJCSBzdHJ1Y3QgaWd0X2ZiICpzcmMsIHZv aWQgKnNyY19idWYsCisJCQkJCQkgdW5zaWduZWQgaW50IHBsYW5lKQogewotCXVpbnQ2NF90IG1v ZGlmaWVyX2Jhc2U7Ci0Jc2l6ZV90IGNvbHVtbl93aWR0aF9ieXRlczsKLQlzaXplX3QgY29sdW1u X2hlaWdodDsKLQl1bnNpZ25lZCBpbnQgZmJfaWQ7Ci0JdW5zaWduZWQgaW50IGk7Ci0Jdm9pZCAq c3JjX2J1ZjsKLQl2b2lkICpkc3RfYnVmOwotCi0JbW9kaWZpZXJfYmFzZSA9IGZvdXJjY19tb2Rf YnJvYWRjb21fbW9kKG1vZGlmaWVyKTsKLQljb2x1bW5faGVpZ2h0ID0gZm91cmNjX21vZF9icm9h ZGNvbV9wYXJhbShtb2RpZmllcik7CisJdWludDY0X3QgbW9kaWZpZXJfYmFzZSA9IGZvdXJjY19t b2RfYnJvYWRjb21fbW9kKHNyYy0+bW9kaWZpZXIpOworCXVpbnQzMl90IGNvbHVtbl9oZWlnaHQg PSBmb3VyY2NfbW9kX2Jyb2FkY29tX3BhcmFtKHNyYy0+bW9kaWZpZXIpOworCXVpbnQzMl90IGNv bHVtbl93aWR0aF9ieXRlcywgY29sdW1uX3dpZHRoLCBjb2x1bW5fc2l6ZTsKKwlzaXplX3QgYnBw ID0gc3JjLT5wbGFuZV9icHBbcGxhbmVdOworCXVuc2lnbmVkIGludCBpLCBqOwogCiAJc3dpdGNo IChtb2RpZmllcl9iYXNlKSB7CiAJY2FzZSBEUk1fRk9STUFUX01PRF9CUk9BRENPTV9TQU5EMzI6 CkBAIC0zNzcsNDEgKzQzNyw2MyBAQCB1bnNpZ25lZCBpbnQgdmM0X2ZiX3NhbmRfdGlsZWRfY29u dmVydChzdHJ1Y3QgaWd0X2ZiICpkc3QsIHN0cnVjdCBpZ3RfZmIgKnNyYywKIAkJaWd0X2Fzc2Vy dChmYWxzZSk7CiAJfQogCi0JZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKHNyYy0+ZmQsIHNyYy0+d2lk dGgsIHNyYy0+aGVpZ2h0LCBzcmMtPmRybV9mb3JtYXQsCi0JCQkgICAgICBtb2RpZmllciwgZHN0 KTsKLQlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7CisJY29sdW1uX3dpZHRoID0gY29sdW1uX3dpZHRo X2J5dGVzICogc3JjLT5wbGFuZV93aWR0aFtwbGFuZV0gLyBzcmMtPndpZHRoOworCWNvbHVtbl9z aXplID0gY29sdW1uX3dpZHRoX2J5dGVzICogY29sdW1uX2hlaWdodDsKKworCWZvciAoaSA9IDA7 IGkgPCBkc3QtPnBsYW5lX2hlaWdodFtwbGFuZV07IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwg c3JjLT5wbGFuZV93aWR0aFtwbGFuZV07IGorKykgeworCQkJc2l6ZV90IHNyY19vZmZzZXQgPSBz cmMtPm9mZnNldHNbcGxhbmVdOworCQkJc2l6ZV90IGRzdF9vZmZzZXQgPSBkc3QtPm9mZnNldHNb cGxhbmVdOwogCi0Jc3JjX2J1ZiA9IGlndF9mYl9tYXBfYnVmZmVyKHNyYy0+ZmQsIHNyYyk7Ci0J aWd0X2Fzc2VydChzcmNfYnVmKTsKKwkJCXNyY19vZmZzZXQgKz0gdmM0X3NhbmRfdGlsZWRfb2Zm c2V0KGNvbHVtbl93aWR0aCwKKwkJCQkJCQkgICAgY29sdW1uX3NpemUsIGosIGksCisJCQkJCQkJ ICAgIGJwcCk7CisJCQlkc3Rfb2Zmc2V0ICs9IGRzdC0+c3RyaWRlc1twbGFuZV0gKiBpICsgaiAq IGJwcCAvIDg7CiAKLQlkc3RfYnVmID0gaWd0X2ZiX21hcF9idWZmZXIoZHN0LT5mZCwgZHN0KTsK LQlpZ3RfYXNzZXJ0KGRzdF9idWYpOworCQkJc3dpdGNoIChicHApIHsKKwkJCWNhc2UgODoKKwkJ CQkqKHVpbnQ4X3QgKikoZHN0X2J1ZiArIGRzdF9vZmZzZXQpID0KKwkJCQkJKih1aW50OF90ICop KHNyY19idWYgKyBzcmNfb2Zmc2V0KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMTY6CisJCQkJKih1 aW50MTZfdCAqKShkc3RfYnVmICsgZHN0X29mZnNldCkgPQorCQkJCQkqKHVpbnQxNl90ICopKHNy Y19idWYgKyBzcmNfb2Zmc2V0KTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJaWd0X2Fz c2VydChmYWxzZSk7CisJCQl9CisJCX0KKwl9Cit9CiAKLQlmb3IgKGkgPSAwOyBpIDwgZHN0LT5u dW1fcGxhbmVzOyBpKyspCi0JCXZjNF9mYl9zYW5kX3RpbGVkX2NvbnZlcnRfcGxhbmUoZHN0LCBk c3RfYnVmLCBzcmMsIHNyY19idWYsCi0JCQkJCQljb2x1bW5fd2lkdGhfYnl0ZXMsCi0JCQkJCQlj b2x1bW5faGVpZ2h0LCBpKTsKK3ZvaWQgdmM0X2ZiX2NvbnZlcnRfcGxhbmVfdG9fdGlsZWQoc3Ry dWN0IGlndF9mYiAqZHN0LCB2b2lkICpkc3RfYnVmLAorCQkJCSAgICAgc3RydWN0IGlndF9mYiAq c3JjLCB2b2lkICpzcmNfYnVmKQoreworCXVuc2lnbmVkIGludCBwbGFuZTsKIAotCWlndF9mYl91 bm1hcF9idWZmZXIoc3JjLCBzcmNfYnVmKTsKLQlpZ3RfZmJfdW5tYXBfYnVmZmVyKGRzdCwgZHN0 X2J1Zik7CisJaWd0X2Fzc2VydChzcmMtPm1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVB Uik7CisJaWd0X2Fzc2VydChpZ3RfdmM0X2lzX3RpbGVkKGRzdC0+bW9kaWZpZXIpKTsKIAotCXJl dHVybiBmYl9pZDsKKwlmb3IgKHBsYW5lID0gMDsgcGxhbmUgPCBzcmMtPm51bV9wbGFuZXM7IHBs YW5lKyspIHsKKwkJaWYgKGRzdC0+bW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01f VkM0X1RfVElMRUQpCisJCQl2YzRfZmJfY29udmVydF9wbGFuZV90b190X3RpbGVkKGRzdCwgZHN0 X2J1Ziwgc3JjLCBzcmNfYnVmLCBwbGFuZSk7CisJCWVsc2UKKwkJCXZjNF9mYl9jb252ZXJ0X3Bs YW5lX3RvX3NhbmRfdGlsZWQoZHN0LCBkc3RfYnVmLCBzcmMsIHNyY19idWYsIHBsYW5lKTsKKwl9 CiB9CiAKLXNpemVfdCB2YzRfc2FuZF90aWxlZF9vZmZzZXQoc2l6ZV90IGNvbHVtbl93aWR0aCwg c2l6ZV90IGNvbHVtbl9zaXplLCBzaXplX3QgeCwKLQkJCSAgICAgc2l6ZV90IHksIHNpemVfdCBi cHApCit2b2lkIHZjNF9mYl9jb252ZXJ0X3BsYW5lX2Zyb21fdGlsZWQoc3RydWN0IGlndF9mYiAq ZHN0LCB2b2lkICpkc3RfYnVmLAorCQkJCSAgICAgICBzdHJ1Y3QgaWd0X2ZiICpzcmMsIHZvaWQg KnNyY19idWYpCiB7Ci0Jc2l6ZV90IG9mZnNldCA9IDA7Ci0Jc2l6ZV90IGNvbHNfeDsKLQlzaXpl X3QgcGl4X3g7Ci0KLQkvKiBPZmZzZXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmVsZXZhbnQg Y29sdW1uLiAqLwotCWNvbHNfeCA9IHggLyBjb2x1bW5fd2lkdGg7Ci0Jb2Zmc2V0ICs9IGNvbHNf eCAqIGNvbHVtbl9zaXplOworCXVuc2lnbmVkIGludCBwbGFuZTsKIAotCS8qIE9mZnNldCB0byB0 aGUgcmVsZXZhbnQgcGl4ZWwuICovCi0JcGl4X3ggPSB4ICUgY29sdW1uX3dpZHRoOwotCW9mZnNl dCArPSAoY29sdW1uX3dpZHRoICogeSArIHBpeF94KSAqIGJwcCAvIDg7CisJaWd0X2Fzc2VydChp Z3RfdmM0X2lzX3RpbGVkKHNyYy0+bW9kaWZpZXIpKTsKKwlpZ3RfYXNzZXJ0KGRzdC0+bW9kaWZp ZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSKTsKIAotCXJldHVybiBvZmZzZXQ7CisJZm9yIChw bGFuZSA9IDA7IHBsYW5lIDwgc3JjLT5udW1fcGxhbmVzOyBwbGFuZSsrKSB7CisJCWlmIChzcmMt Pm1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0JST0FEQ09NX1ZDNF9UX1RJTEVEKQorCQkJdmM0 X2ZiX2NvbnZlcnRfcGxhbmVfZnJvbV90X3RpbGVkKGRzdCwgZHN0X2J1Ziwgc3JjLCBzcmNfYnVm LCBwbGFuZSk7CisJCWVsc2UKKwkJCXZjNF9mYl9jb252ZXJ0X3BsYW5lX2Zyb21fc2FuZF90aWxl ZChkc3QsIGRzdF9idWYsIHNyYywgc3JjX2J1ZiwgcGxhbmUpOworCX0KIH0KZGlmZiAtLWdpdCBh L2xpYi9pZ3RfdmM0LmggYi9saWIvaWd0X3ZjNC5oCmluZGV4IGExNzgxMjY5OGZlNS4uZjMyYmYz OThiM2ViIDEwMDY0NAotLS0gYS9saWIvaWd0X3ZjNC5oCisrKyBiL2xpYi9pZ3RfdmM0LmgKQEAg LTI5LDE2ICsyOSwxNCBAQCBpbnQgaWd0X3ZjNF9jcmVhdGVfYm8oaW50IGZkLCBzaXplX3Qgc2l6 ZSk7CiB2b2lkICppZ3RfdmM0X21tYXBfYm8oaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQz Ml90IHNpemUsIHVuc2lnbmVkIHByb3QpOwogaW50IGlndF92YzRfZ2V0X3BhcmFtKGludCBmZCwg dWludDMyX3QgcGFyYW0sIHVpbnQ2NF90ICp2YWwpOwogYm9vbCBpZ3RfdmM0X3B1cmdlYWJsZV9i byhpbnQgZmQsIGludCBoYW5kbGUsIGJvb2wgcHVyZ2VhYmxlKTsKK2Jvb2wgaWd0X3ZjNF9pc190 aWxlZCh1aW50NjRfdCBtb2RpZmllcik7CiAKIHZvaWQgaWd0X3ZjNF9zZXRfdGlsaW5nKGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBtb2RpZmllcik7CiB1aW50NjRfdCBpZ3RfdmM0 X2dldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUpOwogCi11bnNpZ25lZCBpbnQgaWd0 X3ZjNF9mYl90X3RpbGVkX2NvbnZlcnQoc3RydWN0IGlndF9mYiAqZHN0LCBzdHJ1Y3QgaWd0X2Zi ICpzcmMpOwotc2l6ZV90IGlndF92YzRfdF90aWxlZF9vZmZzZXQoc2l6ZV90IHN0cmlkZSwgc2l6 ZV90IGhlaWdodCwgc2l6ZV90IGJwcCwKLQkJCSAgICAgIHNpemVfdCB4LCBzaXplX3QgeSk7Ci11 bnNpZ25lZCBpbnQgdmM0X2ZiX3NhbmRfdGlsZWRfY29udmVydChzdHJ1Y3QgaWd0X2ZiICpkc3Qs IHN0cnVjdCBpZ3RfZmIgKnNyYywKLQkJCQkgICAgICAgdWludDY0X3QgbW9kaWZpZXIpOwotc2l6 ZV90IHZjNF9zYW5kX3RpbGVkX29mZnNldChzaXplX3QgY29sdW1uX3dpZHRoLCBzaXplX3QgY29s dW1uX3NpemUsIHNpemVfdCB4LAotCQkJICAgICBzaXplX3QgeSwgc2l6ZV90IGJwcCk7Cit2b2lk IHZjNF9mYl9jb252ZXJ0X3BsYW5lX3RvX3RpbGVkKHN0cnVjdCBpZ3RfZmIgKmRzdCwgdm9pZCAq ZHN0X2J1ZiwKKwkJCQkgICAgIHN0cnVjdCBpZ3RfZmIgKnNyYywgdm9pZCAqc3JjX2J1Zik7Cit2 b2lkIHZjNF9mYl9jb252ZXJ0X3BsYW5lX2Zyb21fdGlsZWQoc3RydWN0IGlndF9mYiAqZHN0LCB2 b2lkICpkc3RfYnVmLAorCQkJCSAgICAgICBzdHJ1Y3QgaWd0X2ZiICpzcmMsIHZvaWQgKnNyY19i dWYpOwogCiAjZW5kaWYgLyogSUdUX1ZDNF9IICovCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=