From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3 14/16] drm/i915/gen9: Calculate watermarks during atomic 'check' Date: Mon, 25 Apr 2016 19:31:41 +0300 Message-ID: <87k2jlk5ua.fsf@intel.com> References: <1461280630-7477-1-git-send-email-matthew.d.roper@intel.com> <1461280630-7477-15-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 53C146E00A for ; Mon, 25 Apr 2016 16:33:01 +0000 (UTC) In-Reply-To: <1461280630-7477-15-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMiBBcHIgMjAxNiwgTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4gd3JvdGU6Cj4gTW92aW5nIHdhdGVybWFyayBjYWxjdWxhdGlvbiBpbnRvIHRoZSBjaGVjayBw aGFzZSB3aWxsIGFsbG93IHVzIHRvIHRvCj4gcmVqZWN0IGRpc3BsYXkgY29uZmlndXJhdGlvbnMg Zm9yIHdoaWNoIHRoZXJlIGFyZSBubyB2YWxpZCB3YXRlcm1hcmsKPiB2YWx1ZXMgYmVmb3JlIHdl IHN0YXJ0IHRyeWluZyB0byBwcm9ncmFtIHRoZSBoYXJkd2FyZSAoYWx0aG91Z2ggdGhvc2UKPiB0 ZXN0cyB3aWxsIGNvbWUgaW4gYSBzdWJzZXF1ZW50IHBhdGNoKS4KPgo+IEFub3RoZXIgYWR2YW50 YWdlIG9mIG1vdmluZyB0aGlzIGNhbGN1bGF0aW9uIHRvIHRoZSBjaGVjayBwaGFzZSBpcyB0aGF0 Cj4gd2UgY2FuIGNhbGN1bGF0ZSB0aGUgd2F0ZXJtYXJrcyBpbiBhIHNpbmdsZSBzaG90IGFzIHBh cnQgb2YgdGhlIGF0b21pYwo+IHRyYW5zYWN0aW9uLiAgVGhlIHdhdGVybWFyayBpbnRlcmZhY2Vz IHdlIGluaGVyaXRlZCBmcm9tIG91ciBsZWdhY3kKPiBtb2Rlc2V0dGluZyBkYXlzIGFyZSBhIGJp dCBicm9rZW4gaW4gdGhlIGF0b21pYyBkZXNpZ24gYmVjYXVzZSB0aGV5IHVzZQo+IHBlci1jcnRj IGVudHJ5IHBvaW50cyBidXQgYWN0dWFsbHkgcmUtY2FsY3VsYXRlIGFuZCByZS1wcm9ncmFtIHNv bWV0aGluZwo+IHRoYXQgaXMgcmVhbGx5IG1vcmUgb2YgYSBnbG9iYWwgc3RhdGUuICBUaGF0IHdv cmtlZCBva2F5IGluIHRoZSBsZWdhY3kKPiBtb2Rlc2V0dGluZyB3b3JsZCBiZWNhdXNlIG9wZXJh dGlvbnMgb25seSBldmVyIHVwZGF0ZWQgYSBzaW5nbGUgQ1JUQyBhdAo+IGEgdGltZS4gIEhvd2V2 ZXIgaW4gdGhlIGF0b21pYyB3b3JsZCwgYSB0cmFuc2FjdGlvbiBjYW4gaW52b2x2ZSBtdWx0aXBs ZQo+IENSVEMncywgd2hpY2ggbWVhbnMgd2Ugd2luZCB1cCBjb21wdXRpbmcgYW5kIHByb2dyYW1t aW5nIHRoZSB3YXRlcm1hcmtzCj4gTnhOIHRpbWVzICh3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2Yg Q1JUQydzIGludm9sdmVkKS4gIFdpdGggdGhpcyBwYXRjaAo+IHdlIGVsaW1pbmF0ZSB0aGUgcmVk dW5kYW50IHJlLWNhbGN1bGF0aW9uIG9mIHdhdGVybWFyayBkYXRhIGZvciBhdG9taWMKPiBzdGF0 ZXMgKHdoaWNoIHdhcyB0aGUgY2F1c2Ugb2YgdGhlIFdBUk5fT04oIXdtX2NoYW5nZWQpIHByb2Js ZW1zIHRoYXQKPiBoYXZlIHBsYWd1ZWQgdXMgZm9yIGEgd2hpbGUpLgo+Cj4gV2Ugc3RpbGwgbmVl ZCB0byB3b3JrIG9uIHRoZSAnY29tbWl0JyBzaWRlIG9mIHdhdGVybWFyayBoYW5kbGluZyBzbyB0 aGF0Cj4gd2UgYXJlbid0IGRvaW5nIHJlZHVuZGFudCBOeE4gcHJvZ3JhbW1pbmcgb2Ygd2F0ZXJt YXJrcywgYnV0IHRoYXQncwo+IGNvbnRlbnQgZm9yIGZ1dHVyZSBwYXRjaGVzLgo+Cj4gQnVnemls bGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MDU1CgpG cm9tIHRoZSBidWcsCgpUZXN0ZWQtYnk6IENlemFyIEJ1cmxhY3UgPGNlemFyLmJ1cmxhY3VAaW50 ZWwuY29tPgoKPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9OTIxODEKPiBTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9w ZXJAaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8 IDEzOCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5n ZWQsIDUyIGluc2VydGlvbnMoKyksIDkwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDdlOGZhODguLjhiZWRmMTIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEzNTk5LDcgKzEzNTk5LDcgQEAgc3RhdGlj IGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJ ZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShkZXYsIHN0YXRlKTsKPiAgCWRldl9wcml2LT53 bS5jb25maWcgPSBpbnRlbF9zdGF0ZS0+d21fY29uZmlnOwo+IC0JZGV2X3ByaXYtPndtLnNrbF9y ZXN1bHRzLmRkYiA9IGludGVsX3N0YXRlLT5kZGI7Cj4gKwlkZXZfcHJpdi0+d20uc2tsX3Jlc3Vs dHMgPSBpbnRlbF9zdGF0ZS0+d21fcmVzdWx0czsKPiAgCWludGVsX3NoYXJlZF9kcGxsX2NvbW1p dChzdGF0ZSk7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAyMjgyNDk0Li42MzE2MjE1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzEzLDcgKzMxMyw3IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgewo+ICAJYm9vbCBza2lwX2ludGVybWVkaWF0ZV93bTsKPiAgCj4gIAkvKiBHZW45KyBv bmx5ICovCj4gLQlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIGRkYjsKPiArCXN0cnVjdCBza2xf d21fdmFsdWVzIHdtX3Jlc3VsdHM7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDYyNjA5YWIuLmZlNWFkY2QgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMzIyMSwyMyArMzIyMSw2IEBAIHN0YXRp YyB1aW50MzJfdCBza2xfd21fbWV0aG9kMih1aW50MzJfdCBwaXhlbF9yYXRlLCB1aW50MzJfdCBw aXBlX2h0b3RhbCwKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIHNrbF9k ZGJfYWxsb2NhdGlvbl9jaGFuZ2VkKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5l d19kZGIsCj4gLQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMp Cj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gLQljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJfZGRiID0gJmRldl9wcml2 LT53bS5za2xfaHcuZGRiOwo+IC0KPiAtCS8qCj4gLQkgKiBJZiBkZGIgYWxsb2NhdGlvbiBvZiBw aXBlcyBjaGFuZ2VkLCBpdCBtYXkgcmVxdWlyZSByZWNhbGN1bGF0aW9uIG9mCj4gLQkgKiB3YXRl cm1hcmtzCj4gLQkgKi8KPiAtCWlmIChtZW1jbXAobmV3X2RkYi0+cGlwZSwgY3VyX2RkYi0+cGlw ZSwgc2l6ZW9mKG5ld19kZGItPnBpcGUpKSkKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCj4gLQlyZXR1 cm4gZmFsc2U7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50 ZWxfcHN0YXRlLAo+IEBAIC0zNzE2LDY2ICszNjk5LDkgQEAgc3RhdGljIGludCBza2xfdXBkYXRl X3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAllbHNlCj4gIAkJKmNo YW5nZWQgPSB0cnVlOwo+ICAKPiAtCWludGVsX2NydGMtPndtLmFjdGl2ZS5za2wgPSAqcGlwZV93 bTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9v dGhlcl9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgICAgIHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAtCQkJCSAgICAgc3RydWN0IHNrbF93bV92YWx1ZXMgKnIpCj4gLXsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+IC0Jc3RydWN0IGludGVsX2NydGMg KnRoaXNfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQo+IC0JLyoKPiAtCSAqIElmIHRo ZSBXTSB1cGRhdGUgaGFzbid0IGNoYW5nZWQgdGhlIGFsbG9jYXRpb24gZm9yIHRoaXNfY3J0YyAo dGhlCj4gLQkgKiBjcnRjIHdlIGFyZSBjdXJyZW50bHkgY29tcHV0aW5nIHRoZSBuZXcgV00gdmFs dWVzIGZvciksIG90aGVyCj4gLQkgKiBlbmFibGVkIGNydGNzIHdpbGwga2VlcCB0aGUgc2FtZSBh bGxvY2F0aW9uIGFuZCB3ZSBkb24ndCBuZWVkIHRvCj4gLQkgKiByZWNvbXB1dGUgYW55dGhpbmcg Zm9yIHRoZW0uCj4gLQkgKi8KPiAtCWlmICghc2tsX2RkYl9hbGxvY2F0aW9uX2NoYW5nZWQoJnIt PmRkYiwgdGhpc19jcnRjKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JLyoKPiAtCSAqIE90aGVyd2lz ZSwgYmVjYXVzZSBvZiB0aGlzX2NydGMgYmVpbmcgZnJlc2hseSBlbmFibGVkL2Rpc2FibGVkLCB0 aGUKPiAtCSAqIG90aGVyIGFjdGl2ZSBwaXBlcyBuZWVkIG5ldyBEREIgYWxsb2NhdGlvbiBhbmQg V00gdmFsdWVzLgo+IC0JICovCj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0 Yykgewo+IC0JCXN0cnVjdCBza2xfcGlwZV93bSBwaXBlX3dtID0ge307Cj4gLQkJYm9vbCB3bV9j aGFuZ2VkOwo+IC0KPiAtCQlpZiAodGhpc19jcnRjLT5waXBlID09IGludGVsX2NydGMtPnBpcGUp Cj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkKPiAtCQkJ Y29udGludWU7Cj4gLQo+IC0JCXNrbF91cGRhdGVfcGlwZV93bShpbnRlbF9jcnRjLT5iYXNlLnN0 YXRlLAo+IC0JCQkJICAgJnItPmRkYiwgJnBpcGVfd20sICZ3bV9jaGFuZ2VkKTsKPiAtCj4gLQkJ LyoKPiAtCQkgKiBJZiB3ZSBlbmQgdXAgcmUtY29tcHV0aW5nIHRoZSBvdGhlciBwaXBlIFdNIHZh bHVlcywgaXQncwo+IC0JCSAqIGJlY2F1c2UgaXQgd2FzIHJlYWxseSBuZWVkZWQsIHNvIHdlIGV4 cGVjdCB0aGUgV00gdmFsdWVzIHRvCj4gLQkJICogYmUgZGlmZmVyZW50Lgo+IC0JCSAqLwo+IC0J CVdBUk5fT04oIXdtX2NoYW5nZWQpOwo+IC0KPiAtCQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRl diwgJnBpcGVfd20sIHIsIGludGVsX2NydGMpOwo+IC0JCXItPmRpcnR5X3BpcGVzIHw9IGRybV9j cnRjX21hc2soJmludGVsX2NydGMtPmJhc2UpOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9p ZCBza2xfY2xlYXJfd20oc3RydWN0IHNrbF93bV92YWx1ZXMgKndhdGVybWFya3MsIGVudW0gcGlw ZSBwaXBlKQo+IC17Cj4gLQl3YXRlcm1hcmtzLT53bV9saW5ldGltZVtwaXBlXSA9IDA7Cj4gLQlt ZW1zZXQod2F0ZXJtYXJrcy0+cGxhbmVbcGlwZV0sIDAsCj4gLQkgICAgICAgc2l6ZW9mKHVpbnQz Ml90KSAqIDggKiBJOTE1X01BWF9QTEFORVMpOwo+IC0JbWVtc2V0KHdhdGVybWFya3MtPnBsYW5l X3RyYW5zW3BpcGVdLAo+IC0JICAgICAgIDAsIHNpemVvZih1aW50MzJfdCkgKiBJOTE1X01BWF9Q TEFORVMpOwo+IC0Jd2F0ZXJtYXJrcy0+cGxhbmVfdHJhbnNbcGlwZV1bUExBTkVfQ1VSU09SXSA9 IDA7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbnQKPiAgc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IEBAIC0zNzgzLDYgKzM3MDksNyBAQCBza2xfY29t cHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpkZGIgPSAmaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiOwo+ICAJdW5zaWduZWQg cmVhbGxvY19waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfY3J0Y3M7Cj4gIAlpbnQgcmV0Owo+ICAK PiBAQCAtMzc5OSw4ICszNzI2LDEwIEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAkgKiBhbnkgb3RoZXIgZGlzcGxheSB1cGRhdGVzIHJhY2Ugd2l0 aCB0aGlzIHRyYW5zYWN0aW9uLCBzbyB3ZSBuZWVkCj4gIAkgKiB0byBncmFiIHRoZSBsb2NrIG9u ICphbGwqIENSVEMncy4KPiAgCSAqLwo+IC0JaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9j aGFuZ2VzKQo+ICsJaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKSB7Cj4gIAkJ cmVhbGxvY19waXBlcyA9IH4wOwo+ICsJCWludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5X3Bp cGVzID0gfjA7Cj4gKwl9Cj4gIAo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRldiwgaW50 ZWxfY3J0YywgcmVhbGxvY19waXBlcykgewo+ICAJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGU7Cj4gQEAgLTM4MDksNyArMzczOCw3IEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJaWYgKElTX0VSUihjc3RhdGUpKQo+ICAJCQlyZXR1 cm4gUFRSX0VSUihjc3RhdGUpOwo+ICAKPiAtCQlyZXQgPSBza2xfYWxsb2NhdGVfcGlwZV9kZGIo Y3N0YXRlLCAmaW50ZWxfc3RhdGUtPmRkYik7Cj4gKwkJcmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVf ZGRiKGNzdGF0ZSwgZGRiKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJfQo+ IEBAIC0zODIyLDggKzM3NTEsMTEgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gIAlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAtCWludCByZXQsIGk7Cj4gKwlzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7 Cj4gKwlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZpbnRlbF9zdGF0ZS0+d21fcmVz dWx0czsKPiArCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bTsKPiAgCWJvb2wgY2hhbmdlZCA9 IGZhbHNlOwo+ICsJaW50IHJldCwgaTsKPiAgCj4gIAkvKgo+ICAJICogSWYgdGhpcyB0cmFuc2Fj dGlvbiBpc24ndCBhY3R1YWxseSB0b3VjaGluZyBhbnkgQ1JUQydzLCBkb24ndAo+IEBAIC0zODM4 LDEwICszNzcwLDQ1IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCWlmICghY2hhbmdlZCkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gKwkvKiBDbGVhciBh bGwgZGlydHkgZmxhZ3MgKi8KPiArCXJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKPiArCj4gIAly ZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0 Owo+ICAKPiArCS8qCj4gKwkgKiBDYWxjdWxhdGUgV00ncyBmb3IgYWxsIHBpcGVzIHRoYXQgYXJl IHBhcnQgb2YgdGhpcyB0cmFuc2FjdGlvbi4KPiArCSAqIE5vdGUgdGhhdCB0aGUgRERCIGFsbG9j YXRpb24gYWJvdmUgbWF5IGhhdmUgYWRkZWQgbW9yZSBDUlRDJ3MgdGhhdAo+ICsJICogd2VyZW4n dCBvdGhlcndpc2UgYmVpbmcgbW9kaWZpZWQgKGFuZCBzZXQgYml0cyBpbiBkaXJ0eV9waXBlcykg aWYKPiArCSAqIHBpcGUgYWxsb2NhdGlvbnMgaGFkIHRvIGNoYW5nZS4KPiArCSAqCj4gKwkgKiBG SVhNRTogIE5vdyB0aGF0IHdlJ3JlIGRvaW5nIHRoaXMgaW4gdGhlIGF0b21pYyBjaGVjayBwaGFz ZSwgd2UKPiArCSAqIHNob3VsZCBhbGxvdyBza2xfdXBkYXRlX3BpcGVfd20oKSB0byByZXR1cm4g ZmFpbHVyZSBpbiBjYXNlcyB3aGVyZQo+ICsJICogbm8gc3VpdGFibGUgd2F0ZXJtYXJrIHZhbHVl cyBjYW4gYmUgZm91bmQuCj4gKwkgKi8KPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIGNzdGF0ZSwgaSkgewo+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxf Y3N0YXRlID0KPiArCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOwo+ICsKPiArCQlwaXBl X3dtID0gJmludGVsX2NzdGF0ZS0+d20uc2tsLm9wdGltYWw7Cj4gKwkJcmV0ID0gc2tsX3VwZGF0 ZV9waXBlX3dtKGNzdGF0ZSwgJnJlc3VsdHMtPmRkYiwgcGlwZV93bSwKPiArCQkJCQkgJmNoYW5n ZWQpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCWlmIChjaGFuZ2Vk KQo+ICsJCQlyZXN1bHRzLT5kaXJ0eV9waXBlcyB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOwo+ICsK PiArCQlpZiAoKHJlc3VsdHMtPmRpcnR5X3BpcGVzICYgZHJtX2NydGNfbWFzayhjcnRjKSkgPT0g MCkKPiArCQkJLyogVGhpcyBwaXBlJ3MgV00ncyBkaWQgbm90IGNoYW5nZSAqLwo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJaW50ZWxfY3N0YXRlLT51cGRhdGVfd21fcHJlID0gdHJ1ZTsKPiArCQlz a2xfY29tcHV0ZV93bV9yZXN1bHRzKGNydGMtPmRldiwgcGlwZV93bSwgcmVzdWx0cywgaW50ZWxf Y3J0Yyk7Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTM4NTMsMjYgKzM4 MjAsMjEgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIAlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZkZXZfcHJpdi0+d20uc2tsX3Jl c3VsdHM7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20gPSAm Y3N0YXRlLT53bS5za2wub3B0aW1hbDsKPiAtCWJvb2wgd21fY2hhbmdlZDsKPiAgCj4gLQkvKiBD bGVhciBhbGwgZGlydHkgZmxhZ3MgKi8KPiAtCXJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKPiAt Cj4gLQlza2xfY2xlYXJfd20ocmVzdWx0cywgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gLQo+IC0Jc2ts X3VwZGF0ZV9waXBlX3dtKGNydGMtPnN0YXRlLCAmcmVzdWx0cy0+ZGRiLCBwaXBlX3dtLCAmd21f Y2hhbmdlZCk7Cj4gLQlpZiAoIXdtX2NoYW5nZWQpCj4gKwlpZiAoKHJlc3VsdHMtPmRpcnR5X3Bp cGVzICYgZHJtX2NydGNfbWFzayhjcnRjKSkgPT0gMCkKPiAgCQlyZXR1cm47Cj4gIAo+IC0Jc2ts X2NvbXB1dGVfd21fcmVzdWx0cyhkZXYsIHBpcGVfd20sIHJlc3VsdHMsIGludGVsX2NydGMpOwo+ IC0JcmVzdWx0cy0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzaygmaW50ZWxfY3J0Yy0+YmFz ZSk7Cj4gKwlpbnRlbF9jcnRjLT53bS5hY3RpdmUuc2tsID0gKnBpcGVfd207Cj4gKwo+ICsJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiAgCj4gLQlza2xfdXBkYXRlX290aGVy X3BpcGVfd20oZGV2LCBjcnRjLCByZXN1bHRzKTsKPiAgCXNrbF93cml0ZV93bV92YWx1ZXMoZGV2 X3ByaXYsIHJlc3VsdHMpOwo+ICAJc2tsX2ZsdXNoX3dtX3ZhbHVlcyhkZXZfcHJpdiwgcmVzdWx0 cyk7Cj4gIAo+ICAJLyogc3RvcmUgdGhlIG5ldyBjb25maWd1cmF0aW9uICovCj4gIAlkZXZfcHJp di0+d20uc2tsX2h3ID0gKnJlc3VsdHM7Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ d20ud21fbXV0ZXgpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9jb25m aWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBT b3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==