From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 04/11] drm/i915: Extend GET_APERTURE ioctl to report available map space Date: Wed, 28 Jan 2015 10:59:28 +0100 Message-ID: <20150128095928.GV4764@phenom.ffwll.local> References: <1422276205-8532-1-git-send-email-rodrigo.vivi@intel.com> <1422276205-8532-5-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTP id A90D66E582 for ; Wed, 28 Jan 2015 01:58:09 -0800 (PST) Received: by mail-wi0-f177.google.com with SMTP id r20so10614330wiv.4 for ; Wed, 28 Jan 2015 01:58:08 -0800 (PST) Content-Disposition: inline In-Reply-To: <1422276205-8532-5-git-send-email-rodrigo.vivi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKYW4gMjYsIDIwMTUgYXQgMDQ6NDM6MThBTSAtMDgwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IFdoZW4gY29uc3RydWN0aW5nIGEgYmF0Y2hidWZmZXIsIGl0IGlzIHNvbWV0aW1lcyBj cnVjaWFsIHRvIGtub3cgdGhlCj4gbGFyZ2VzdCBob2xlIGludG8gd2hpY2ggd2UgY2FuIGZpdCBh IGZlbmNlYWJsZSBidWZmZXIgKGZvciBleGFtcGxlIHdoZW4KPiBoYW5kbGluZyB2ZXJ5IGxhcmdl IG9iamVjdHMgb24gZ2VuMiBhbmQgZ2VuMykuIFRoaXMgZGVwZW5kcyBvbiB0aGUKPiBmcmFnbWVu dGF0aW9uIG9mIHBpbm5lZCBidWZmZXJzIGluc2lkZSB0aGUgYXBlcnR1cmUsIGEgcXVlc3Rpb24g b25seSB0aGUKPiBrZXJuZWwgY2FuIGVhc2lseSBhbnN3ZXIuCj4gCj4gVGhpcyBwYXRjaCBleHRl bmRzIHRoZSBjdXJyZW50IERSTV9JOTE1X0dFTV9HRVRfQVBFUlRVUkUgaW9jdGwgdG8KPiBpbmNs dWRlIGEgY291cGxlIG9mIG5ldyBmaWVsZHMgaW4gaXRzIHJlcGx5IHRvIHVzZXJzcGFjZSAtIHRo ZSB0b3RhbAo+IGFtb3VudCBvZiBzcGFjZSBhdmFpbGFibGUgaW4gdGhlIG1hcHBhYmxlIHJlZ2lv biBvZiB0aGUgYXBlcnR1cmUgYW5kCj4gYWxzbyB0aGUgc2luZ2xlIGxhcmdlc3QgYmxvY2sgYXZh aWxhYmxlLgo+IAo+IFRoaXMgaXMgbm90IHF1aXRlIHdoYXQgdXNlcnNwYWNlIHdhbnRzIHRvIGFu c3dlciB0aGUgcXVlc3Rpb24gb2Ygd2hldGhlcgo+IHRoaXMgYmF0Y2ggd2lsbCBmaXQgYXMgZmVu Y2VzIGFyZSBhbHNvIHJlcXVpcmVkIHRvIG1lZXQgc2V2ZXJlIGFsaWdubWVudAo+IGNvbnN0cmFp bnRzIHdpdGhpbiB0aGUgYmF0Y2guIEZvciB0aGlzIHB1cnBvc2UsIGEgdGhpcmQgY29uc2VydmF0 aXZlCj4gZXN0aW1hdGUgb2YgbGFyZ2VzdCBmZW5jZSBhdmFpbGFibGUgaXMgYWxzbyBwcm92aWRl ZC4gRm9yIHdoZW4gdXNlcnNwYWNlCj4gbmVlZHMgbW9yZSB0aGFuIG9uZSBiYXRjaCwgd2UgYWxz byBwcm92aWRlIHRoZSBjdWxtdWxhdGl2ZSBzcGFjZQo+IGF2YWlsYWJsZSBmb3IgZmVuY2VzIHN1 Y2ggdGhhdCBpdCBoYXMgc29tZSBhZGRpdGlvbmFsIGd1aWRhbmNlIHRvIGhvdwo+IG11Y2ggc3Bh Y2UgaXQgY291bGQgYWxsb2NhdGUgdG8gZmVuY2VzLiBDb25zZXJ2YXRpc20gc3RpbGwgd2lucy4K PiAKPiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgZGVidWdmcyBmaWxlIGZvciBjb252ZW5pZW50IHRl c3RpbmcgYW5kIHJlcG9ydGluZy4KPiAKPiB2MjogVGhlIGZpcnN0IG9iamVjdCBjYW5ub3QgZW5k IGF0IG9mZnNldCAwLCBzbyB3ZSBjYW4gdXNlIGxhc3Q9PTAgdG8KPiBkZXRlY3QgdGhlIGVtcHR5 IGxpc3QuCj4gCj4gdjM6IEV4cGFuZCBhbGwgdmFsdWVzIHRvIDY0Yml0LCBqdXN0IGluIGNhc2Uu Cj4gICAgIFJlcG9ydCB0b3RhbCBtYXBwYWJsZSBhcGVydHVyZSBzaXplIGZvciB1c2Vyc3BhY2Ug dGhhdCBjYW5ub3QgZWFzaWx5Cj4gICAgIGRldGVybWluZSBpdCBieSBpbnNwZWN0aW5nIHRoZSBQ Q0kgZGV2aWNlLgo+IAo+IHY0OiAoUm9kcmlnbykgRml4ZWQgcmViYXNlIGNvbmZsaWN0cy4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+CgpE byB3ZSBoYXZlIHRoZSBsaWJkcm0gcGF0Y2ggZm9yIHRoaXMgdG9vPyBJbW8gdGhlcmUncyBub3Qg bXVjaCB1c2UgaW4gdGhpcwppZiBtZXNhIHJlbWFpbnMgYnJva2VuLCBlc3BlY2lhbGx5IHNpbmNl IHRoaXMgaXMgZm9yIGdlbjIvMyAuLi4gbW9zdCBERQp1c2UgZ2wgbm93YWRheXMuCi1EYW5pZWwK Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIHwgIDI3ICsrKysr KysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICB8IDExNiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oICAgICAgICAgfCAgMjUgKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNjQgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+IGluZGV4IDBkMTFjYmUuLmYxYWVhODYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+IEBAIC00OTgsNiArNDk4LDMyIEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0 X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkKiBkYXRhKQo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gK3N0YXRpYyBpbnQgaTkxNV9nZW1fYXBlcnR1cmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+ cHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZ2V0X2FwZXJ0dXJlIGFyZzsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkxNV9nZW1fZ2V0X2FwZXJ0dXJlX2lvY3RsKG5vZGUtPm1p bm9yLT5kZXYsICZhcmcsIE5VTEwpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCXNlcV9wcmludGYobSwgIlRvdGFsIHNpemUgb2YgdGhlIEdUVDogJWxsdSBieXRlc1xuIiwK PiArCQkgICBhcmcuYXBlcl9zaXplKTsKPiArCXNlcV9wcmludGYobSwgIkF2YWlsYWJsZSBzcGFj ZSBpbiB0aGUgR1RUOiAlbGx1IGJ5dGVzXG4iLAo+ICsJCSAgIGFyZy5hcGVyX2F2YWlsYWJsZV9z aXplKTsKPiArCXNlcV9wcmludGYobSwgIkF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgbWFwcGFibGUg YXBlcnR1cmU6ICVsbHUgYnl0ZXNcbiIsCj4gKwkJICAgYXJnLm1hcF9hdmFpbGFibGVfc2l6ZSk7 Cj4gKwlzZXFfcHJpbnRmKG0sICJTaW5nbGUgbGFyZ2VzdCBzcGFjZSBpbiB0aGUgbWFwcGFibGUg YXBlcnR1cmU6ICVsbHUgYnl0ZXNcbiIsCj4gKwkJICAgYXJnLm1hcF9sYXJnZXN0X3NpemUpOwo+ ICsJc2VxX3ByaW50ZihtLCAiQXZhaWxhYmxlIHNwYWNlIGZvciBmZW5jZXM6ICVsbHUgYnl0ZXNc biIsCj4gKwkJICAgYXJnLmZlbmNlX2F2YWlsYWJsZV9zaXplKTsKPiArCXNlcV9wcmludGYobSwg IlNpbmdsZSBsYXJnZXN0IGZlbmNlIGF2YWlsYWJsZTogJWxsdSBieXRlc1xuIiwKPiArCQkgICBh cmcuZmVuY2VfbGFyZ2VzdF9zaXplKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3Rh dGljIGludCBpOTE1X2dlbV9ndHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKPiBAQCAt NDM5OCw2ICs0NDI0LDcgQEAgc3RhdGljIGludCBpOTE1X2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBk ZW50cnkgKnJvb3QsCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2luZm9fbGlzdCBpOTE1X2Rl YnVnZnNfbGlzdFtdID0gewo+ICAJeyJpOTE1X2NhcGFiaWxpdGllcyIsIGk5MTVfY2FwYWJpbGl0 aWVzLCAwfSwKPiAgCXsiaTkxNV9nZW1fb2JqZWN0cyIsIGk5MTVfZ2VtX29iamVjdF9pbmZvLCAw fSwKPiArCXsiaTkxNV9nZW1fYXBlcnR1cmUiLCBpOTE1X2dlbV9hcGVydHVyZV9pbmZvLCAwfSwK PiAgCXsiaTkxNV9nZW1fZ3R0IiwgaTkxNV9nZW1fZ3R0X2luZm8sIDB9LAo+ICAJeyJpOTE1X2dl bV9waW5uZWQiLCBpOTE1X2dlbV9ndHRfaW5mbywgMCwgKHZvaWQgKikgUElOTkVEX0xJU1R9LAo+ ICAJeyJpOTE1X2dlbV9hY3RpdmUiLCBpOTE1X2dlbV9vYmplY3RfbGlzdF9pbmZvLCAwLCAodm9p ZCAqKSBBQ1RJVkVfTElTVH0sCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggMTIzY2Uz NC4uMGEwNzRiYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0zMSw2ICszMSw3 IEBACj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+ ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKyNpbmNsdWRlIDxsaW51eC9saXN0X3NvcnQuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L29vbS5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiBAQCAtMTUzLDYgKzE1NCw1NSBAQCBpbnQgaTkx NV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiAraTkxNV9nZW1fb2JqZWN0 X2lzX2luYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCXJl dHVybiBpOTE1X2dlbV9vYmpfYm91bmRfYW55KG9iaikgJiYgIW9iai0+YWN0aXZlOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IG9ial9yYW5rX2J5X2dndHQodm9pZCAqcHJpdiwKPiArCQkJICAgIHN0 cnVjdCBsaXN0X2hlYWQgKkEsCj4gKwkJCSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpCKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYSA9IGxpc3RfZW50cnkoQSx0eXBlb2YoKmEp LCBvYmpfZXhlY19saW5rKTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiID0gbGlz dF9lbnRyeShCLHR5cGVvZigqYiksIG9ial9leGVjX2xpbmspOwo+ICsKPiArCXJldHVybiBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQoYSkgLSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoYik7Cj4g K30KPiArCj4gK3N0YXRpYyB1MzIgX19mZW5jZV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHN0YXJ0LCB1MzIgZW5kKQo+ICt7Cj4gKwl1MzIgc2l6ZSA9IGVuZCAt IHN0YXJ0Owo+ICsJdTMyIGZlbmNlX3NpemU7Cj4gKwo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPCA0KSB7Cj4gKwkJdTMyIGZlbmNlX21heDsKPiArCQl1MzIgZmVuY2VfbmV4dDsK PiArCj4gKwkJaWYgKElTX0dFTjMoZGV2X3ByaXYpKSB7Cj4gKwkJCWZlbmNlX21heCA9IEk4MzBf RkVOQ0VfTUFYX1NJWkVfVkFMIDw8IDIwOwo+ICsJCQlmZW5jZV9uZXh0ID0gMTAyNCoxMDI0Owo+ ICsJCX0gZWxzZSB7Cj4gKwkJCWZlbmNlX21heCA9IEk4MzBfRkVOQ0VfTUFYX1NJWkVfVkFMIDw8 IDE5Owo+ICsJCQlmZW5jZV9uZXh0ID0gNTEyKjEwMjQ7Cj4gKwkJfQo+ICsKPiArCQlmZW5jZV9t YXggPSBtaW4oZmVuY2VfbWF4LCBzaXplKTsKPiArCQlmZW5jZV9zaXplID0gMDsKPiArCQl3aGls ZSAoZmVuY2VfbmV4dCA8PSBmZW5jZV9tYXgpIHsKPiArCQkJdTMyIGJhc2UgPSBBTElHTihzdGFy dCwgZmVuY2VfbmV4dCk7Cj4gKwkJCWlmIChiYXNlICsgZmVuY2VfbmV4dCA+IGVuZCkKPiArCQkJ CWJyZWFrOwo+ICsKPiArCQkJZmVuY2Vfc2l6ZSA9IGZlbmNlX25leHQ7Cj4gKwkJCWZlbmNlX25l eHQgPDw9IDE7Cj4gKwkJfQo+ICsJfSBlbHNlCj4gKwkJZmVuY2Vfc2l6ZSA9IHNpemU7Cj4gKwo+ ICsJcmV0dXJuIGZlbmNlX3NpemU7Cj4gK30KPiArCj4gIGludAo+ICBpOTE1X2dlbV9nZXRfYXBl cnR1cmVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJICAg IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiBAQCAtMTYwLDE3ICsyMTAsNzUgQEAgaTkxNV9nZW1f Z2V0X2FwZXJ0dXJlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICAJc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfYXBlcnR1cmUgKmFyZ3MgPSBkYXRhOwo+ICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCXNpemVfdCBwaW5uZWQ7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIG1hcF9saXN0Owo+ICsJY29uc3QgdTMyIG1hcF9saW1pdCA9IGRldl9wcml2 LT5ndHQubWFwcGFibGVfZW5kOwo+ICsJc2l6ZV90IHBpbm5lZCwgbWFwX3NwYWNlLCBtYXBfbGFy Z2VzdCwgZmVuY2Vfc3BhY2UsIGZlbmNlX2xhcmdlc3Q7Cj4gKwl1MzIgbGFzdCwgc2l6ZTsKPiAr Cj4gKwlJTklUX0xJU1RfSEVBRCgmbWFwX2xpc3QpOwo+ICAKPiAgCXBpbm5lZCA9IDA7Cj4gKwlt YXBfc3BhY2UgPSBtYXBfbGFyZ2VzdCA9IDA7Cj4gKwlmZW5jZV9zcGFjZSA9IGZlbmNlX2xhcmdl c3QgPSAwOwo+ICsKPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWxpc3Rf Zm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QsIGdsb2JhbF9saXN0 KQo+IC0JCWlmIChpOTE1X2dlbV9vYmpfaXNfcGlubmVkKG9iaikpCj4gLQkJCXBpbm5lZCArPSBp OTE1X2dlbV9vYmpfZ2d0dF9zaXplKG9iaik7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwg JmRldl9wcml2LT5tbS5ib3VuZF9saXN0LCBnbG9iYWxfbGlzdCkgewo+ICsJCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQob2JqKTsKPiArCj4gKwkJaWYgKHZtYSA9 PSBOVUxMIHx8ICF2bWEtPnBpbl9jb3VudCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXBpbm5l ZCArPSB2bWEtPm5vZGUuc2l6ZTsKPiArCj4gKwkJaWYgKHZtYS0+bm9kZS5zdGFydCA8IG1hcF9s aW1pdCkKPiArCQkJbGlzdF9hZGQoJm9iai0+b2JqX2V4ZWNfbGluaywgJm1hcF9saXN0KTsKPiAr CX0KPiArCj4gKwlsYXN0ID0gMDsKPiArCWxpc3Rfc29ydChOVUxMLCAmbWFwX2xpc3QsIG9ial9y YW5rX2J5X2dndHQpOwo+ICsJd2hpbGUgKCFsaXN0X2VtcHR5KCZtYXBfbGlzdCkpIHsKPiArCQlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCj4gKwkJb2JqID0gbGlzdF9maXJzdF9lbnRyeSgmbWFw X2xpc3QsIHR5cGVvZigqb2JqKSwgb2JqX2V4ZWNfbGluayk7Cj4gKwkJbGlzdF9kZWxfaW5pdCgm b2JqLT5vYmpfZXhlY19saW5rKTsKPiArCj4gKwkJdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQo b2JqKTsKPiArCQlpZiAobGFzdCA9PSAwKQo+ICsJCQlnb3RvIHNraXBfZmlyc3Q7Cj4gKwo+ICsJ CXNpemUgPSB2bWEtPm5vZGUuc3RhcnQgLSBsYXN0Owo+ICsJCWlmIChzaXplID4gbWFwX2xhcmdl c3QpCj4gKwkJCW1hcF9sYXJnZXN0ID0gc2l6ZTsKPiArCQltYXBfc3BhY2UgKz0gc2l6ZTsKPiAr Cj4gKwkJc2l6ZSA9IF9fZmVuY2Vfc2l6ZShkZXZfcHJpdiwgbGFzdCwgdm1hLT5ub2RlLnN0YXJ0 KTsKPiArCQlpZiAoc2l6ZSA+IGZlbmNlX2xhcmdlc3QpCj4gKwkJCWZlbmNlX2xhcmdlc3QgPSBz aXplOwo+ICsJCWZlbmNlX3NwYWNlICs9IHNpemU7Cj4gKwo+ICtza2lwX2ZpcnN0Ogo+ICsJCWxh c3QgPSB2bWEtPm5vZGUuc3RhcnQgKyB2bWEtPm5vZGUuc2l6ZTsKPiArCX0KPiArCWlmIChsYXN0 IDwgbWFwX2xpbWl0KSB7Cj4gKwkJc2l6ZSA9IG1hcF9saW1pdCAtIGxhc3Q7Cj4gKwkJaWYgKHNp emUgPiBtYXBfbGFyZ2VzdCkKPiArCQkJbWFwX2xhcmdlc3QgPSBzaXplOwo+ICsJCW1hcF9zcGFj ZSArPSBzaXplOwo+ICsKPiArCQlzaXplID0gX19mZW5jZV9zaXplKGRldl9wcml2LCBsYXN0LCBt YXBfbGltaXQpOwo+ICsJCWlmIChzaXplID4gZmVuY2VfbGFyZ2VzdCkKPiArCQkJZmVuY2VfbGFy Z2VzdCA9IHNpemU7Cj4gKwkJZmVuY2Vfc3BhY2UgKz0gc2l6ZTsKPiArCX0KPiAgCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCWFyZ3MtPmFwZXJfc2l6ZSA9IGRldl9w cml2LT5ndHQuYmFzZS50b3RhbDsKPiAgCWFyZ3MtPmFwZXJfYXZhaWxhYmxlX3NpemUgPSBhcmdz LT5hcGVyX3NpemUgLSBwaW5uZWQ7Cj4gKwlhcmdzLT5tYXBfYXZhaWxhYmxlX3NpemUgPSBtYXBf c3BhY2U7Cj4gKwlhcmdzLT5tYXBfbGFyZ2VzdF9zaXplID0gbWFwX2xhcmdlc3Q7Cj4gKwlhcmdz LT5tYXBfdG90YWxfc2l6ZSA9IGRldl9wcml2LT5ndHQubWFwcGFibGVfZW5kOwo+ICsJYXJncy0+ ZmVuY2VfYXZhaWxhYmxlX3NpemUgPSBmZW5jZV9zcGFjZTsKPiArCWFyZ3MtPmZlbmNlX2xhcmdl c3Rfc2l6ZSA9IGZlbmNlX2xhcmdlc3Q7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCj4gaW5kZXggMmU1NTlmNmUuLjI4ZjYxNGQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4g QEAgLTkwNyw2ICs5MDcsMzEgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfYXBlcnR1cmUgewo+ ICAJICogYnl0ZXMKPiAgCSAqLwo+ICAJX191NjQgYXBlcl9hdmFpbGFibGVfc2l6ZTsKPiArCj4g KwkvKioKPiArCSAqIFRvdGFsIHNwYWNlIGluIHRoZSBtYXBwYWJsZSByZWdpb24gb2YgdGhlIGFw ZXJ0dXJlLCBpbiBieXRlcwo+ICsJICovCj4gKwlfX3U2NCBtYXBfdG90YWxfc2l6ZTsKPiArCj4g KwkvKioKPiArCSAqIEF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgbWFwcGFibGUgcmVnaW9uIG9mIHRo ZSBhcGVydHVyZSwgaW4gYnl0ZXMKPiArCSAqLwo+ICsJX191NjQgbWFwX2F2YWlsYWJsZV9zaXpl Owo+ICsKPiArCS8qKgo+ICsJICogU2luZ2xlIGxhcmdlc3QgYXZhaWxhYmxlIHJlZ2lvbiBpbnNp ZGUgdGhlIG1hcHBhYmxlIHJlZ2lvbiwgaW4gYnl0ZXMuCj4gKwkgKi8KPiArCV9fdTY0IG1hcF9s YXJnZXN0X3NpemU7Cj4gKwo+ICsJLyoqCj4gKwkgKiBDdWxtdWxhdGl2ZSBzcGFjZSBhdmFpbGFi bGUgZm9yIGZlbmNlcywgaW4gYnl0ZXMKPiArCSAqLwo+ICsJX191NjQgZmVuY2VfYXZhaWxhYmxl X3NpemU7Cj4gKwo+ICsJLyoqCj4gKwkgKiBTaW5nbGUgbGFyZ2VzdCBmZW5jZWFibGUgcmVnaW9u LCBpbiBieXRlcy4KPiArCSAqLwo+ICsJX191NjQgZmVuY2VfbGFyZ2VzdF9zaXplOwo+ICB9Owo+ ICAKPiAgc3RydWN0IGRybV9pOTE1X2dldF9waXBlX2Zyb21fY3J0Y19pZCB7Cj4gLS0gCj4gMS45 LjMKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK