From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH v4] dma-buf: Add ioctls to allow userspace to flush Date: Wed, 26 Aug 2015 08:49:00 +0200 Message-ID: <55DD615C.4090307@vmware.com> References: <55DC947F.8040806@intel.com> <1440547375-15046-1-git-send-email-tiago.vignatti@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1440547375-15046-1-git-send-email-tiago.vignatti@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tiago Vignatti Cc: daniel.thompson@linaro.org, daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, thellstrom@vmware.com, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org SGksIFRpYWdvLgoKT24gMDgvMjYvMjAxNSAwMjowMiBBTSwgVGlhZ28gVmlnbmF0dGkgd3JvdGU6 Cj4gRnJvbTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPgo+IFRoZSB1 c2Vyc3BhY2UgbWlnaHQgbmVlZCBzb21lIHNvcnQgb2YgY2FjaGUgY29oZXJlbmN5IG1hbmFnZW1l bnQgZS5nLiB3aGVuIENQVQo+IGFuZCBHUFUgZG9tYWlucyBhcmUgYmVpbmcgYWNjZXNzZWQgdGhy b3VnaCBkbWEtYnVmIGF0IHRoZSBzYW1lIHRpbWUuIFRvCj4gY2lyY3VtdmVudCB0aGlzIHByb2Js ZW0gdGhlcmUgYXJlIGJlZ2luL2VuZCBjb2hlcmVuY3kgbWFya2VycywgdGhhdCBmb3J3YXJkCj4g ZGlyZWN0bHkgdG8gZXhpc3RpbmcgZG1hLWJ1ZiBkZXZpY2UgZHJpdmVycyB2ZnVuYyBob29rcy4g VXNlcnNwYWNlIGNhbiBtYWtlIHVzZQo+IG9mIHRob3NlIG1hcmtlcnMgdGhyb3VnaCB0aGUgRE1B X0JVRl9JT0NUTF9TWU5DIGlvY3RsLiBUaGUgc2VxdWVuY2Ugd291bGQgYmUKPiB1c2VkIGxpa2Ug Zm9sbG93aW5nOgo+Cj4gICAtIG1tYXAgZG1hLWJ1ZiBmZAo+ICAgLSBmb3IgZWFjaCBkcmF3aW5n L3VwbG9hZCBjeWNsZSBpbiBDUFUKPiAgICAgMS4gU1lOQ19TVEFSVCBpb2N0bAo+ICAgICAyLiBy ZWFkL3dyaXRlIHRvIG1tYXAgYXJlYSBvciBhIDJkIHN1Yi1yZWdpb24gb2YgaXQKPiAgICAgMy4g U1lOQ19FTkQgaW9jdGwuCj4gICAtIG11bmFtcCBvbmNlIHlvdSBkb24ndCBuZWVkIHRoZSBidWZm ZXIgYW55IG1vcmUKPgo+IHYyIChUaWFnbyk6IEZpeCBoZWFkZXIgZmlsZSB0eXBlIG5hbWVzICh1 NjQgLT4gX191NjQpCj4gdjMgKFRpYWdvKTogQWRkIGRvY3VtZW50YXRpb24uIFVzZSBlbnVtIGRt YV9idWZfc3luY19mbGFncyB0byB0aGUgYmVnaW4vZW5kCj4gZG1hLWJ1ZiBmdW5jdGlvbnMuIENo ZWNrIGZvciBvdmVyZmxvd3MgaW4gc3RhcnQvbGVuZ3RoLgo+IHY0IChUaWFnbyk6IHVzZSAyZCBy ZWdpb25zIGZvciBzeW5jLgoKRGFuaWVsIFYgaGFkIGlzc3VlcyB3aXRoIHRoZSBzeW5jIGFyZ3Vt ZW50IHByb3Bvc2VkIGJ5IERhbmllbCBTLiBJJ20KZmluZSB3aXRoIHRoYXQgYXJndW1lbnQgb3Ig YW4gYXJndW1lbnQgY29udGFpbmluZyBvbmx5IGEgc2luZ2xlIHN5bmMKcmVjdC4gSSdtIG5vdCBz dXJlIHdoZXRoZXIgRGFuaWVsIFYgd2lsbCBmaW5kIGl0IGVhc2llciB0byBhY2NlcHQgb25seSBh CnNpbmdsZSBzeW5jIHJlY3QuLi4KCkFsc28gcGxlYXNlIHNlZSBiZWxvdy4KCj4KPiBDYzogU3Vt aXQgU2Vtd2FsIDxzdW1pdC5zZW13YWxAbGluYXJvLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBUaWFn byBWaWduYXR0aSA8dGlhZ28udmlnbmF0dGlAaW50ZWwuY29tPgo+IC0tLQo+Cj4gSSdtIHVuYWJs ZSB0byB0ZXN0IHRoZSAyZCBzeW5jIHByb3Blcmx5LCBiZWNhdXNlIGJlZ2luL2VuZCBhY2Nlc3Mg aW4gaTkxNQo+IGRvbid0IHRyYWNrIG1hcHBlZCByYW5nZSBmb3Igbm90aGluZy4KPgo+ICBEb2N1 bWVudGF0aW9uL2RtYS1idWYtc2hhcmluZy50eHQgICAgICB8IDEzICsrKysrKwo+ICBkcml2ZXJz L2RtYS1idWYvZG1hLWJ1Zi5jICAgICAgICAgICAgICB8IDc3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMg fCAgNiArKy0KPiAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmggICAgICAgICAgICAgICAgfCAyMCAr KysrKy0tLS0KPiAgaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYuaCAgICAgICAgICAgfCA1NyAr KysrKysrKysrKysrKysrKysrKysrKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlv bnMoKyksIDIzIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBp L2xpbnV4L2RtYS1idWYuaAo+Cj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi1z aGFyaW5nLnR4dCBiL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4dAo+IGluZGV4IDQ4 MGM4ZGUuLjgwNjFhYzAgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJp bmcudHh0Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0Cj4gQEAgLTM1 NSw2ICszNTUsMTkgQEAgQmVpbmcgYWJsZSB0byBtbWFwIGFuIGV4cG9ydCBkbWEtYnVmIGJ1ZmZl ciBvYmplY3QgaGFzIDIgbWFpbiB1c2UtY2FzZXM6Cj4gIAo+ICAgICBObyBzcGVjaWFsIGludGVy ZmFjZXMsIHVzZXJzcGFjZSBzaW1wbHkgY2FsbHMgbW1hcCBvbiB0aGUgZG1hLWJ1ZiBmZC4KPiAg Cj4gKyAgIEFsc28sIHRoZSB1c2Vyc3BhY2UgbWlnaHQgbmVlZCBzb21lIHNvcnQgb2YgY2FjaGUg Y29oZXJlbmN5IG1hbmFnZW1lbnQgZS5nLgo+ICsgICB3aGVuIENQVSBhbmQgR1BVIGRvbWFpbnMg YXJlIGJlaW5nIGFjY2Vzc2VkIHRocm91Z2ggZG1hLWJ1ZiBhdCB0aGUgc2FtZQo+ICsgICB0aW1l LiBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSB0aGVyZSBhcmUgYmVnaW4vZW5kIGNvaGVyZW5j eSBtYXJrZXJzLCB0aGF0Cj4gKyAgIGZvcndhcmQgZGlyZWN0bHkgdG8gZXhpc3RpbmcgZG1hLWJ1 ZiBkZXZpY2UgZHJpdmVycyB2ZnVuYyBob29rcy4gVXNlcnNwYWNlCj4gKyAgIGNhbiBtYWtlIHVz ZSBvZiB0aG9zZSBtYXJrZXJzIHRocm91Z2ggdGhlIERNQV9CVUZfSU9DVExfU1lOQyBpb2N0bC4g VGhlCj4gKyAgIHNlcXVlbmNlIHdvdWxkIGJlIHVzZWQgbGlrZSBmb2xsb3dpbmc6Cj4gKyAgICAg LSBtbWFwIGRtYS1idWYgZmQKPiArICAgICAtIGZvciBlYWNoIGRyYXdpbmcvdXBsb2FkIGN5Y2xl IGluIENQVQo+ICsgICAgICAgMS4gU1lOQ19TVEFSVCBpb2N0bAo+ICsgICAgICAgMi4gcmVhZC93 cml0ZSB0byBtbWFwIGFyZWEgb3IgYSAyZCBzdWItcmVnaW9uIG9mIGl0Cj4gKyAgICAgICAzLiBT WU5DX0VORCBpb2N0bC4KPiArICAgICAtIG11bmFtcCBvbmNlIHlvdSBkb24ndCBuZWVkIHRoZSBi dWZmZXIgYW55IG1vcmUKPiArCj4gIDIuIFN1cHBvcnRpbmcgZXhpc3RpbmcgbW1hcCBpbnRlcmZh Y2VzIGluIGltcG9ydGVycwo+ICAKPiAgICAgU2ltaWxhciB0byB0aGUgbW90aXZhdGlvbiBmb3Ig a2VybmVsIGNwdSBhY2Nlc3MgaXQgaXMgYWdhaW4gaW1wb3J0YW50IHRoYXQKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMK PiBpbmRleCAxNTVjMTQ2Li5iNmE0YTA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gQEAgLTI1MSwxMSAr MjUxLDU1IEBAIG91dDoKPiAgCXJldHVybiBldmVudHM7Cj4gIH0KPiAgCj4gK3N0YXRpYyBsb25n IGRtYV9idWZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsCj4gKwkJCSAgdW5zaWduZWQgaW50IGNt ZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gK3sKPiArCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7Cj4g KwlzdHJ1Y3QgZG1hX2J1Zl9zeW5jIHN5bmM7Cj4gKwllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXJlY3Rpb247Cj4gKwo+ICsJZG1hYnVmID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICsKPiArCWlm ICghaXNfZG1hX2J1Zl9maWxlKGZpbGUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlm IChjbWQgIT0gRE1BX0JVRl9JT0NUTF9TWU5DKQo+ICsJCXJldHVybiAtRU5PVFRZOwo+ICsKPiAr CWlmIChjb3B5X2Zyb21fdXNlcigmc3luYywgKHZvaWQgX191c2VyICopIGFyZywgc2l6ZW9mKHN5 bmMpKSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKCkRvIHdlIGFjdHVhbGx5IGNvcHkgYWxsIHN5bmMg cmVnaW9ucyBoZXJlPwoKPiArCj4gKwlpZiAoc3luYy5mbGFncyAmIERNQV9CVUZfU1lOQ19SVykK PiArCQlkaXJlY3Rpb24gPSBETUFfQklESVJFQ1RJT05BTDsKPiArCWVsc2UgaWYgKHN5bmMuZmxh Z3MgJiBETUFfQlVGX1NZTkNfUkVBRCkKPiArCQlkaXJlY3Rpb24gPSBETUFfRlJPTV9ERVZJQ0U7 Cj4gKwllbHNlIGlmIChzeW5jLmZsYWdzICYgRE1BX0JVRl9TWU5DX1dSSVRFKQo+ICsJCWRpcmVj dGlvbiA9IERNQV9UT19ERVZJQ0U7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ ICsJaWYgKHN5bmMuZmxhZ3MgJiB+RE1BX0JVRl9TWU5DX1ZBTElEX0ZMQUdTX01BU0spCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogVE9ETzogY2hlY2sgZm9yIG92ZXJmbG93aW5nIHRo ZSBidWZmZXIncyBzaXplIC0gaG93IHNvLCBjaGVja2luZyByZWdpb24gYnkKPiArCSAqIHJlZ2lv biBoZXJlPyBNYXliZSBuZWVkIHRvIGNoZWNrIGZvciB0aGUgb3RoZXIgcGFyYW1ldGVycyBhcyB3 ZWxsLiAqLwo+ICsKPiArCWlmIChzeW5jLmZsYWdzICYgRE1BX0JVRl9TWU5DX0VORCkKPiArCQlk bWFfYnVmX2VuZF9jcHVfYWNjZXNzKGRtYWJ1Ziwgc3luYy5zdHJpZGVfYnl0ZXMsIHN5bmMuYnl0 ZXNfcGVyX3BpeGVsLAo+ICsJCQkJc3luYy5udW1fcmVnaW9ucywgc3luYy5yZWdpb25zLCBkaXJl Y3Rpb24pOwo+ICsJZWxzZQo+ICsJCWRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhkbWFidWYsIHN5 bmMuc3RyaWRlX2J5dGVzLCBzeW5jLmJ5dGVzX3Blcl9waXhlbCwKPiArCQkJCXN5bmMubnVtX3Jl Z2lvbnMsIHN5bmMucmVnaW9ucywgZGlyZWN0aW9uKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZG1hX2J1Zl9mb3BzID0g ewo+ICAJLnJlbGVhc2UJPSBkbWFfYnVmX3JlbGVhc2UsCj4gIAkubW1hcAkJPSBkbWFfYnVmX21t YXBfaW50ZXJuYWwsCj4gIAkubGxzZWVrCQk9IGRtYV9idWZfbGxzZWVrLAo+ICAJLnBvbGwJCT0g ZG1hX2J1Zl9wb2xsLAo+ICsJLnVubG9ja2VkX2lvY3RsCT0gZG1hX2J1Zl9pb2N0bCwKPiAgfTsK PiAgCj4gIC8qCj4gQEAgLTUzOSwxNCArNTgzLDE3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9i dWZfdW5tYXBfYXR0YWNobWVudCk7Cj4gICAqIHByZXBhcmF0aW9ucy4gQ29oZXJlbmN5IGlzIG9u bHkgZ3VhcmFudGVlZCBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIGZvciB0aGUKPiAgICogc3BlY2lm aWVkIGFjY2VzcyBkaXJlY3Rpb24uCj4gICAqIEBkbWFidWY6CVtpbl0JYnVmZmVyIHRvIHByZXBh cmUgY3B1IGFjY2VzcyBmb3IuCj4gLSAqIEBzdGFydDoJW2luXQlzdGFydCBvZiByYW5nZSBmb3Ig Y3B1IGFjY2Vzcy4KPiAtICogQGxlbjoJW2luXQlsZW5ndGggb2YgcmFuZ2UgZm9yIGNwdSBhY2Nl c3MuCj4gLSAqIEBkaXJlY3Rpb246CVtpbl0JbGVuZ3RoIG9mIHJhbmdlIGZvciBjcHUgYWNjZXNz Lgo+ICsgKiBAc3RyaWRlX2J5dGVzOglbaW5dCXN0cmlkZSBpbiBieXRlcyBmb3IgY3B1IGFjY2Vz cy4KPiArICogQGJ5dGVzX3Blcl9waXhlbDoJW2luXQlieXRlcyBwZXIgcGl4ZWwgb2YgdGhlIHJl Z2lvbiBmb3IgY3B1IGFjY2Vzcy4KPiArICogQG51bV9yZWdpb25zOiAgIFtpbl0gIG51bWJlciBv ZiByZWdpb25zLgo+ICsgKiBAcmVnaW9uOiAgIFtpbl0gdmVjdG9yIG9mIDItZGltZW5zaW9uYWwg cmVnaW9ucyBmb3IgY3B1IGFjY2Vzcy4KPiArICogQGRpcmVjdGlvbjoJW2luXQlkaXJlY3Rpb24g b2YgcmFuZ2UgZm9yIGNwdSBhY2Nlc3MuCj4gICAqCj4gICAqIENhbiByZXR1cm4gbmVnYXRpdmUg ZXJyb3IgdmFsdWVzLCByZXR1cm5zIDAgb24gc3VjY2Vzcy4KPiAgICovCj4gLWludCBkbWFfYnVm X2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc2l6ZV90IHN0YXJ0LCBz aXplX3QgbGVuLAo+IC0JCQkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikK PiAraW50IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBz aXplX3Qgc3RyaWRlX2J5dGVzLAo+ICsJc2l6ZV90IGJ5dGVzX3Blcl9waXhlbCwgc2l6ZV90IG51 bV9yZWdpb25zLCBzdHJ1Y3QgZG1hX2J1Zl9zeW5jX3JlZ2lvbiByZWdpb25zW10sCj4gKwllbnVt IGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCj4gIHsKPiAgCWludCByZXQgPSAwOwo+ICAK PiBAQCAtNTU0LDggKzYwMSw4IEBAIGludCBkbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0 IGRtYV9idWYgKmRtYWJ1Ziwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuLAo+ICAJCXJldHVybiAt RUlOVkFMOwo+ICAKPiAgCWlmIChkbWFidWYtPm9wcy0+YmVnaW5fY3B1X2FjY2VzcykKPiAtCQly ZXQgPSBkbWFidWYtPm9wcy0+YmVnaW5fY3B1X2FjY2VzcyhkbWFidWYsIHN0YXJ0LAo+IC0JCQkJ CQkJbGVuLCBkaXJlY3Rpb24pOwo+ICsJCXJldCA9IGRtYWJ1Zi0+b3BzLT5iZWdpbl9jcHVfYWNj ZXNzKGRtYWJ1Ziwgc3RyaWRlX2J5dGVzLCBieXRlc19wZXJfcGl4ZWwsCj4gKwkJCQkJCQludW1f cmVnaW9ucywgcmVnaW9ucywgZGlyZWN0aW9uKTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4g QEAgLTU2NywxOSArNjE0LDIzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfYmVnaW5fY3B1 X2FjY2Vzcyk7Cj4gICAqIGFjdGlvbnMuIENvaGVyZW5jeSBpcyBvbmx5IGd1YXJhbnRlZWQgaW4g dGhlIHNwZWNpZmllZCByYW5nZSBmb3IgdGhlCj4gICAqIHNwZWNpZmllZCBhY2Nlc3MgZGlyZWN0 aW9uLgo+ICAgKiBAZG1hYnVmOglbaW5dCWJ1ZmZlciB0byBjb21wbGV0ZSBjcHUgYWNjZXNzIGZv ci4KPiAtICogQHN0YXJ0OglbaW5dCXN0YXJ0IG9mIHJhbmdlIGZvciBjcHUgYWNjZXNzLgo+IC0g KiBAbGVuOglbaW5dCWxlbmd0aCBvZiByYW5nZSBmb3IgY3B1IGFjY2Vzcy4KPiAtICogQGRpcmVj dGlvbjoJW2luXQlsZW5ndGggb2YgcmFuZ2UgZm9yIGNwdSBhY2Nlc3MuCj4gKyAqIEBzdHJpZGVf Ynl0ZXM6CVtpbl0Jc3RyaWRlIGluIGJ5dGVzIGZvciBjcHUgYWNjZXNzLgo+ICsgKiBAYnl0ZXNf cGVyX3BpeGVsOglbaW5dCWJ5dGVzIHBlciBwaXhlbCBvZiB0aGUgcmVnaW9uIGZvciBjcHUgYWNj ZXNzLgo+ICsgKiBAbnVtX3JlZ2lvbnM6ICAgW2luXSAgbnVtYmVyIG9mIHJlZ2lvbnMuCj4gKyAq IEByZWdpb25zOiAgIFtpbl0gIHZlY3RvciBvZiAyLWRpbWVuc2lvbmFsIHJlZ2lvbnMgZm9yIGNw dSBhY2Nlc3MuCj4gKyAqIEBkaXJlY3Rpb246CVtpbl0JZGlyZWN0aW9uIG9mIHJhbmdlIGZvciBj cHUgYWNjZXNzLgo+ICAgKgo+ICAgKiBUaGlzIGNhbGwgbXVzdCBhbHdheXMgc3VjY2VlZC4KPiAg ICovCj4gLXZvaWQgZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVm LCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW4sCj4gLQkJCSAgICBlbnVtIGRtYV9kYXRhX2RpcmVj dGlvbiBkaXJlY3Rpb24pCj4gK3ZvaWQgZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmLCBzaXplX3Qgc3RyaWRlX2J5dGVzLAo+ICsJc2l6ZV90IGJ5dGVzX3Blcl9w aXhlbCwgc2l6ZV90IG51bV9yZWdpb25zLCBzdHJ1Y3QgZG1hX2J1Zl9zeW5jX3JlZ2lvbiByZWdp b25zW10sCj4gKwllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCj4gIHsKPiAgCVdB Uk5fT04oIWRtYWJ1Zik7Cj4gIAo+ICAJaWYgKGRtYWJ1Zi0+b3BzLT5lbmRfY3B1X2FjY2VzcykK PiAtCQlkbWFidWYtPm9wcy0+ZW5kX2NwdV9hY2Nlc3MoZG1hYnVmLCBzdGFydCwgbGVuLCBkaXJl Y3Rpb24pOwo+ICsJCWRtYWJ1Zi0+b3BzLT5lbmRfY3B1X2FjY2VzcyhkbWFidWYsIHN0cmlkZV9i eXRlcywgYnl0ZXNfcGVyX3BpeGVsLAo+ICsJCQludW1fcmVnaW9ucywgcmVnaW9ucywgZGlyZWN0 aW9uKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX2VuZF9jcHVfYWNjZXNzKTsK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiBpbmRleCA5NWNiZmZm Li5lNWJiN2EzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Rt YWJ1Zi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiBA QCAtMjEyLDcgKzIxMiw4IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fZG1hYnVmX21tYXAoc3RydWN0 IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICAKPiAtc3RhdGljIGludCBpOTE1X2dlbV9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBk bWFfYnVmICpkbWFfYnVmLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgsIGVudW0gZG1hX2Rh dGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKPiArc3RhdGljIGludCBpOTE1X2dlbV9iZWdpbl9jcHVf YWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzaXplX3Qgc3RyaWRlX2J5dGVzLCBzaXpl X3QgYnl0ZXNfcGVyX3BpeGVsLAo+ICsJCXNpemVfdCBudW1fcmVnaW9ucywgc3RydWN0IGRtYV9i dWZfc3luY19yZWdpb24gcmVnaW9uc1tdLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rp b24pCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3Rv X29iaihkbWFfYnVmKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2 Owo+IEBAIC0yMjgsNyArMjI5LDggQEAgc3RhdGljIGludCBpOTE1X2dlbV9iZWdpbl9jcHVfYWNj ZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzaXplX3Qgc3RhcnQsIHNpemUKPiAgCXJldHVy biByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX2VuZF9jcHVfYWNjZXNzKHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgsIGVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fZW5k X2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHNpemVfdCBzdHJpZGVfYnl0ZXMs IHNpemVfdCBieXRlc19wZXJfcGl4ZWwsCj4gKwkJc2l6ZV90IG51bV9yZWdpb25zLCBzdHJ1Y3Qg ZG1hX2J1Zl9zeW5jX3JlZ2lvbiByZWdpb25zW10sIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRp cmVjdGlvbikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGRtYV9i dWZfdG9fb2JqKGRtYV9idWYpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFz ZS5kZXY7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVkZS9s aW51eC9kbWEtYnVmLmgKPiBpbmRleCBmOThiZDcwLi5lZDQ1N2NiIDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiBA QCAtMzMsNiArMzMsOCBAQAo+ICAjaW5jbHVkZSA8bGludXgvZmVuY2UuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L3dhaXQuaD4KPiAgCj4gKyNpbmNsdWRlIDx1YXBpL2xpbnV4L2RtYS1idWYuaD4KPiAr Cj4gIHN0cnVjdCBkZXZpY2U7Cj4gIHN0cnVjdCBkbWFfYnVmOwo+ICBzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50Owo+IEBAIC05MywxMCArOTUsMTAgQEAgc3RydWN0IGRtYV9idWZfb3BzIHsKPiAg CS8qIGFmdGVyIGZpbmFsIGRtYV9idWZfcHV0KCkgKi8KPiAgCXZvaWQgKCpyZWxlYXNlKShzdHJ1 Y3QgZG1hX2J1ZiAqKTsKPiAgCj4gLQlpbnQgKCpiZWdpbl9jcHVfYWNjZXNzKShzdHJ1Y3QgZG1h X2J1ZiAqLCBzaXplX3QsIHNpemVfdCwKPiAtCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uKTsK PiAtCXZvaWQgKCplbmRfY3B1X2FjY2Vzcykoc3RydWN0IGRtYV9idWYgKiwgc2l6ZV90LCBzaXpl X3QsCj4gLQkJCSAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4gKwlpbnQgKCpiZWdp bl9jcHVfYWNjZXNzKShzdHJ1Y3QgZG1hX2J1ZiAqLCBzaXplX3QsIHNpemVfdCwgc2l6ZV90LAo+ ICsJCQkJc3RydWN0IGRtYV9idWZfc3luY19yZWdpb24gW10sIGVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uKTsKPiArCXZvaWQgKCplbmRfY3B1X2FjY2Vzcykoc3RydWN0IGRtYV9idWYgKiwgc2l6ZV90 LCBzaXplX3QsIHNpemVfdCwKPiArCQkJICAgICAgIHN0cnVjdCBkbWFfYnVmX3N5bmNfcmVnaW9u IFtdLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4gIAl2b2lkICooKmttYXBfYXRvbWljKShz dHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nKTsKPiAgCXZvaWQgKCprdW5tYXBfYXRvbWlj KShzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwo+ICAJdm9pZCAqKCpr bWFwKShzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nKTsKPiBAQCAtMjI0LDEwICsyMjYs MTIgQEAgc3RydWN0IHNnX3RhYmxlICpkbWFfYnVmX21hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKiwKPiAgCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4gIHZv aWQgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwg c3RydWN0IHNnX3RhYmxlICosCj4gIAkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4gLWlu dCBkbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHNpemVf dCBzdGFydCwgc2l6ZV90IGxlbiwKPiAtCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXIpOwo+IC12b2lkIGRtYV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9i dWYsIHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbiwKPiAtCQkJICAgIGVudW0gZG1hX2RhdGFfZGly ZWN0aW9uIGRpcik7Cj4gK2ludCBkbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9i dWYgKmRtYV9idWYsIHNpemVfdCBzdHJpZGVfYnl0ZXMsCj4gKwkJCSAgICAgc2l6ZV90IGJ5dGVz X3Blcl9waXhlbCwgc2l6ZV90IG51bV9yZWdpb25zLAo+ICsJCQkgICAgIHN0cnVjdCBkbWFfYnVm X3N5bmNfcmVnaW9uIHJlZ2lvbnNbXSwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKTsKPiAr dm9pZCBkbWFfYnVmX2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzaXpl X3Qgc3RyaWRlX2J5dGVzLAo+ICsJCQkgICAgIHNpemVfdCBieXRlc19wZXJfcGl4ZWwsIHNpemVf dCBudW1fcmVnaW9ucywKPiArCQkJICAgICBzdHJ1Y3QgZG1hX2J1Zl9zeW5jX3JlZ2lvbiByZWdp b25zW10sIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4gIHZvaWQgKmRtYV9idWZfa21h cF9hdG9taWMoc3RydWN0IGRtYV9idWYgKiwgdW5zaWduZWQgbG9uZyk7Cj4gIHZvaWQgZG1hX2J1 Zl9rdW5tYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7 Cj4gIHZvaWQgKmRtYV9idWZfa21hcChzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nKTsK PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYuaCBiL2luY2x1ZGUvdWFw aS9saW51eC9kbWEtYnVmLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LmM2M2I1NzgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1i dWYuaAo+IEBAIC0wLDAgKzEsNTcgQEAKPiArLyoKPiArICogRnJhbWV3b3JrIGZvciBidWZmZXIg b2JqZWN0cyB0aGF0IGNhbiBiZSBzaGFyZWQgYWNyb3NzIGRldmljZXMvc3Vic3lzdGVtcy4KPiAr ICoKPiArICogQ29weXJpZ2h0KEMpIDIwMTUgSW50ZWwgTHRkCj4gKyAqCj4gKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhbG9uZyB3aXRoCj4gKyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9ETUFf QlVGX1VBUElfSF8KPiArI2RlZmluZSBfRE1BX0JVRl9VQVBJX0hfCj4gKwo+ICtlbnVtIGRtYV9i dWZfc3luY19mbGFncyB7Cj4gKwlETUFfQlVGX1NZTkNfUkVBRCA9ICgxIDw8IDApLAo+ICsJRE1B X0JVRl9TWU5DX1dSSVRFID0gKDIgPDwgMCksCj4gKwlETUFfQlVGX1NZTkNfUlcgPSAoMyA8PCAw KSwKPiArCURNQV9CVUZfU1lOQ19TVEFSVCA9ICgwIDw8IDIpLAo+ICsJRE1BX0JVRl9TWU5DX0VO RCA9ICgxIDw8IDIpLAo+ICsKPiArCURNQV9CVUZfU1lOQ19WQUxJRF9GTEFHU19NQVNLID0gRE1B X0JVRl9TWU5DX1JXIHwKPiArCQlETUFfQlVGX1NZTkNfRU5ECj4gK307Cj4gKwo+ICsvKiAyLWRp bWVuc2lvbmFsIHJlZ2lvbiwgdXNlZCBmb3IgbXVsdGktcmFuZ2UgZmx1c2guIFRoaXMgY2FuIGJl IHVzZWQgdG8KPiArICogc3luY2hyb25pemUgdGhlIENQVSBieSBiYXRjaGluZyBzZXZlcmFsIHN1 Yi1yZWdpb25zLCBzbWFsbGVyIHRoYW4gdGhlCj4gKyAqIG1hcHBlZCBkbWEtYnVmLCBhbGwgYXQg b25jZS4gKi8KPiArc3RydWN0IGRtYV9idWZfc3luY19yZWdpb24gewo+ICsJX191NjQgeDsKPiAr CV9fdTY0IHk7Cj4gKwlfX3U2NCB3aWR0aDsKPiArCV9fdTY0IGhlaWdodDsKPiArfTsKPiArCj4g Ky8qIGJlZ2luL2VuZCBkbWEtYnVmIGZ1bmN0aW9ucyB1c2VkIGZvciB1c2Vyc3BhY2UgbW1hcC4g Ki8KPiArc3RydWN0IGRtYV9idWZfc3luYyB7Cj4gKwllbnVtIGRtYV9idWZfc3luY19mbGFncyBm bGFnczsKPiArCj4gKwlfX3U2NCBzdHJpZGVfYnl0ZXM7Cj4gKwlfX3UzMiBieXRlc19wZXJfcGl4 ZWw7Cj4gKwlfX3UzMiBudW1fcmVnaW9uczsKPiArCj4gKwlzdHJ1Y3QgZG1hX2J1Zl9zeW5jX3Jl Z2lvbiByZWdpb25zW107Cj4gK307Cj4gKwo+ICsjZGVmaW5lIERNQV9CVUZfQkFTRQkJJ2InCj4g KyNkZWZpbmUgRE1BX0JVRl9JT0NUTF9TWU5DCV9JT1dSKERNQV9CVUZfQkFTRSwgMCwgc3RydWN0 IGRtYV9idWZfc3luYykKClNob3VsZCBiZSBfSU9XKCAgPwoKCj4gKwo+ICsjZW5kaWYKClRob21h cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=