From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 14/15] drm/i915: Async GPU relocation processing Date: Thu, 16 Mar 2017 13:20:05 +0000 Message-ID: <20170316132006.7976-15-chris@chris-wilson.co.uk> References: <20170316132006.7976-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C9A76EAEF for ; Thu, 16 Mar 2017 13:20:26 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id l37so5882735wrc.3 for ; Thu, 16 Mar 2017 06:20:26 -0700 (PDT) In-Reply-To: <20170316132006.7976-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SWYgdGhlIHVzZXIgcmVxdWlyZXMgcGF0Y2hpbmcgb2YgdGhlaXIgYmF0Y2ggb3IgYXV4aWxpYXJ5 IGJ1ZmZlcnMsIHdlCmN1cnJlbnRseSBtYWtlIHRoZSBhbHRlcmF0aW9ucyBvbiB0aGUgY3B1LiBJ ZiB0aGV5IGFyZSBhY3RpdmUgb24gdGhlIEdQVQphdCB0aGUgdGltZSwgd2Ugd2FpdCB1bmRlciB0 aGUgc3RydWN0X211dGV4IGZvciB0aGVtIHRvIGZpbmlzaCBleGVjdXRpbmcKYmVmb3JlIHdlIHJl d3JpdGUgdGhlIGNvbnRlbnRzLiBUaGlzIGhhcHBlbnMgaWYgc2hhcmVkIHJlbG9jYXRpb24gdHJl ZXMKYXJlIHVzZWQgYmV0d2VlbiBkaWZmZXJlbnQgY29udGV4dHMgd2l0aCBzZXBhcmF0ZSBhZGRy ZXNzIHNwYWNlIChhbmQgdGhlCmJ1ZmZlcnMgdGhlbiBoYXZlIGRpZmZlcmVudCBhZGRyZXNzZXMg aW4gZWFjaCksIHRoZSAzRCBzdGF0ZSB3aWxsIG5lZWQKdG8gYmUgYWRqdXN0ZWQgYmV0d2VlbiBl eGVjdXRpb24gb24gZWFjaCBjb250ZXh0LiBIb3dldmVyLCB3ZSBkb24ndCBuZWVkCnRvIHVzZSB0 aGUgQ1BVIHRvIGRvIHRoZSByZWxvY2F0aW9uIHBhdGNoaW5nLCBhcyB3ZSBjb3VsZCBxdWV1ZSBj b21tYW5kcwp0byB0aGUgR1BVIHRvIHBlcmZvcm0gaXQgYW5kIHVzZSBmZW5jZXMgdG8gc2VyaWFs aXNlIHRoZSBvcGVyYXRpb24gd2l0aAp0aGUgY3VycmVudCBhY3Rpdml0eSBhbmQgZnV0dXJlIC0g c28gdGhlIG9wZXJhdGlvbiBvbiB0aGUgR1BVIGFwcGVhcnMKanVzdCBhcyBhdG9taWMgYXMgcGVy Zm9ybWluZyBpdCBpbW1lZGlhdGVseS4gUGVyZm9ybWluZyB0aGUgcmVsb2NhdGlvbgpyZXdyaXRl cyBvbiB0aGUgR1BVIGlzIG5vdCBmcmVlLCBpbiB0ZXJtcyBvZiBwdXJlIHRocm91Z2hwdXQsIHRo ZSBudW1iZXIKb2YgcmVsb2NhdGlvbnMvcyBpcyBhYm91dCBoYWx2ZWQgLSBidXQgbW9yZSBpbXBv cnRhbnRseSBzbyBpcyB0aGUgdGltZQp1bmRlciB0aGUgc3RydWN0X211dGV4LgoKU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8IDIxNyArKysrKysrKysrKysrKysrKysr KysrKysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggYzYwNzdlYmEzZDNjLi4xNWNhMGRl YTBhMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtNDE5Miw3ICs0MTkyLDYgQEAgc3Rh dGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShvYmopKTsKIAkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sCiAJCQkJCSAmb2JqLT52bWFfbGlzdCwg b2JqX2xpbmspIHsKLQkJCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX2dndHQodm1hKSk7CiAJCQlH RU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKIAkJCXZtYS0+ZmxhZ3MgJj0gfkk5 MTVfVk1BX1BJTl9NQVNLOwogCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBkMzllYTJiYTIwZmYuLjg5ZDIyMThh ZTllYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAt NDAsNyArNDAsMTIgQEAKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKICNpbmNsdWRlICJpbnRlbF9m cm9udGJ1ZmZlci5oIgogCi0jZGVmaW5lIERCR19VU0VfQ1BVX1JFTE9DIDAgLyogLTEgZm9yY2Ug R1RUIHJlbG9jczsgMSBmb3JjZSBDUFUgcmVsb2NzICovCitlbnVtIHsKKwlGT1JDRV9DUFVfUkVM T0MgPSAxLAorCUZPUkNFX0dUVF9SRUxPQywKKwlGT1JDRV9HUFVfUkVMT0MsCisjZGVmaW5lIERC R19GT1JDRV9SRUxPQyAwIC8qIGNob29zZSBvbmUgb2YgdGhlIGFib3ZlISAqLworfTsKIAogI2Rl ZmluZSAgX19FWEVDX09CSkVDVF9IQVNfUElOCQlCSVQoMzEpCiAjZGVmaW5lICBfX0VYRUNfT0JK RUNUX0hBU19GRU5DRQlCSVQoMzApCkBAIC0xODcsOSArMTkyLDE0IEBAIHN0cnVjdCBpOTE1X2V4 ZWNidWZmZXIgewogCQlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKIAkJdW5zaWduZWQgbG9uZyB2 YWRkcjsKIAkJdW5zaWduZWQgaW50IHBhZ2U7Ci0JCWJvb2wgdXNlXzY0Yml0X3JlbG9jOwotCQli b29sIGhhc19sbGM7Ci0JCWJvb2wgaGFzX2ZlbmNlOworCQl1bnNpZ25lZCBpbnQgZ2VuOworCQli b29sIHVzZV82NGJpdF9yZWxvYyA6IDE7CisJCWJvb2wgaGFzX2xsYyA6IDE7CisJCWJvb2wgaGFz X2ZlbmNlIDogMTsKKworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxOworCQl1MzIg KnJxX2NtZDsKKwkJdW5zaWduZWQgaW50IHJxX3NpemU7CiAJfSByZWxvY19jYWNoZTsKIAl1NjQg aW52YWxpZF9mbGFnczsKIAl1MzIgY29udGV4dF9mbGFnczsKQEAgLTQzNCw4ICs0NDQsMTEgQEAg c3RhdGljIGlubGluZSBpbnQgdXNlX2NwdV9yZWxvYyhjb25zdCBzdHJ1Y3QgcmVsb2NfY2FjaGUg KmNhY2hlLAogCWlmICghaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopKQogCQly ZXR1cm4gZmFsc2U7CiAKLQlpZiAoREJHX1VTRV9DUFVfUkVMT0MpCi0JCXJldHVybiBEQkdfVVNF X0NQVV9SRUxPQyA+IDA7CisJaWYgKERCR19GT1JDRV9SRUxPQyA9PSBGT1JDRV9DUFVfUkVMT0Mp CisJCXJldHVybiB0cnVlOworCisJaWYgKERCR19GT1JDRV9SRUxPQyA9PSBGT1JDRV9HVFRfUkVM T0MpCisJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiAoY2FjaGUtPmhhc19sbGMgfHwKIAkJb2Jq LT5iYXNlLndyaXRlX2RvbWFpbiA9PSBJOTE1X0dFTV9ET01BSU5fQ1BVIHx8CkBAIC04MDcsMTAg KzgyMCwxMyBAQCBzdGF0aWMgdm9pZCByZWxvY19jYWNoZV9pbml0KHN0cnVjdCByZWxvY19jYWNo ZSAqY2FjaGUsCiAJY2FjaGUtPnBhZ2UgPSAtMTsKIAljYWNoZS0+dmFkZHIgPSAwOwogCS8qIE11 c3QgYmUgYSB2YXJpYWJsZSBpbiB0aGUgc3RydWN0IHRvIGFsbG93IEdDQyB0byB1bnJvbGwuICov CisJY2FjaGUtPmdlbiA9IElOVEVMX0dFTihpOTE1KTsKIAljYWNoZS0+aGFzX2xsYyA9IEhBU19M TEMoaTkxNSk7Ci0JY2FjaGUtPmhhc19mZW5jZSA9IElOVEVMX0dFTihpOTE1KSA8IDQ7Ci0JY2Fj aGUtPnVzZV82NGJpdF9yZWxvYyA9IEhBU182NEJJVF9SRUxPQyhpOTE1KTsKKwljYWNoZS0+aGFz X2ZlbmNlID0gY2FjaGUtPmdlbiA8IDQ7CisJY2FjaGUtPnVzZV82NGJpdF9yZWxvYyA9IGNhY2hl LT5nZW4gPj0gODsKIAljYWNoZS0+bm9kZS5hbGxvY2F0ZWQgPSBmYWxzZTsKKwljYWNoZS0+cnEg PSBOVUxMOworCWNhY2hlLT5ycV9zaXplID0gMDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkICp1 bm1hc2tfcGFnZSh1bnNpZ25lZCBsb25nIHApCkBAIC04MzIsMTAgKzg0OCwyNCBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBpOTE1X2dndHQgKmNhY2hlX3RvX2dndHQoc3RydWN0IHJlbG9jX2NhY2hl ICpjYWNoZSkKIAlyZXR1cm4gJmk5MTUtPmdndHQ7CiB9CiAKK3N0YXRpYyB2b2lkIHJlbG9jX2dw dV9mbHVzaChzdHJ1Y3QgcmVsb2NfY2FjaGUgKmNhY2hlKQoreworCUdFTV9CVUdfT04oY2FjaGUt PnJxX3NpemUgPj0gY2FjaGUtPnJxLT5iYXRjaC0+b2JqLT5iYXNlLnNpemUgLyBzaXplb2YodTMy KSk7CisJY2FjaGUtPnJxX2NtZFtjYWNoZS0+cnFfc2l6ZV0gPSBNSV9CQVRDSF9CVUZGRVJfRU5E OworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2FjaGUtPnJxLT5iYXRjaC0+b2JqKTsKKwlp OTE1X2dlbV9jaGlwc2V0X2ZsdXNoKGNhY2hlLT5ycS0+aTkxNSk7CisKKwlfX2k5MTVfYWRkX3Jl cXVlc3QoY2FjaGUtPnJxLCB0cnVlKTsKKwljYWNoZS0+cnEgPSBOVUxMOworfQorCiBzdGF0aWMg dm9pZCByZWxvY19jYWNoZV9yZXNldChzdHJ1Y3QgcmVsb2NfY2FjaGUgKmNhY2hlKQogewogCXZv aWQgKnZhZGRyOwogCisJaWYgKGNhY2hlLT5ycSkKKwkJcmVsb2NfZ3B1X2ZsdXNoKGNhY2hlKTsK KwogCWlmICghY2FjaGUtPnZhZGRyKQogCQlyZXR1cm47CiAKQEAgLTEwMDAsNiArMTAzMCwxMTIg QEAgc3RhdGljIHZvaWQgY2xmbHVzaF93cml0ZTMyKHUzMiAqYWRkciwgdTMyIHZhbHVlLCB1bnNp Z25lZCBpbnQgZmx1c2hlcykKIAkJKmFkZHIgPSB2YWx1ZTsKIH0KIAorc3RhdGljIHUzMiAqcmVs b2NfZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAorCQkgICAgICBzdHJ1Y3QgaTkxNV92 bWEgKnZtYSwKKwkJICAgICAgdW5zaWduZWQgaW50IGxlbikKK3sKKwlzdHJ1Y3QgcmVsb2NfY2Fj aGUgKmNhY2hlID0gJmViLT5yZWxvY19jYWNoZTsKKwl1MzIgKmNtZDsKKworCWlmIChjYWNoZS0+ cnFfc2l6ZSA+IFBBR0VfU0laRS9zaXplb2YodTMyKSAtIChsZW4gKyAxKSkKKwkJcmVsb2NfZ3B1 X2ZsdXNoKGNhY2hlKTsKKworCWlmICghY2FjaGUtPnJxKSB7CisJCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7CisJCXN0 cnVjdCBpOTE1X3ZtYSAqYmF0Y2g7CisJCWludCBlcnI7CisKKwkJR0VNX0JVR19PTih2bWEtPm9i ai0+YmFzZS53cml0ZV9kb21haW4gJiBJOTE1X0dFTV9ET01BSU5fQ1BVKTsKKworCQlvYmogPSBp OTE1X2dlbV9iYXRjaF9wb29sX2dldCgmZWItPmVuZ2luZS0+YmF0Y2hfcG9vbCwKKwkJCQkJICAg ICAgUEFHRV9TSVpFKTsKKwkJaWYgKElTX0VSUihvYmopKQorCQkJcmV0dXJuIEVSUl9DQVNUKG9i aik7CisKKwkJY21kID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLAorCQkJCQkgICAgICBj YWNoZS0+aGFzX2xsYyA/IEk5MTVfTUFQX1dCIDogSTkxNV9NQVBfV0MpOworCQlpOTE1X2dlbV9v YmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwkJaWYgKElTX0VSUihjbWQpKQorCQkJcmV0dXJuIEVS Ul9DQVNUKGNtZCk7CisKKwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KG9iaiwgZmFsc2UpOworCQlpZiAoZXJyKSB7CitlcnJfdW5tYXA6CisJCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fbWFwKG9iaik7CisJCQlyZXR1cm4gRVJSX1BUUihlcnIpOworCQl9CisKKwkJYmF0 Y2ggPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtYS0+dm0sIE5VTEwpOworCQlpZiAoSVNfRVJS KGJhdGNoKSkgeworCQkJZXJyID0gUFRSX0VSUihiYXRjaCk7CisJCQlnb3RvIGVycl91bm1hcDsK KwkJfQorCisJCWVyciA9IGk5MTVfdm1hX3BpbihiYXRjaCwgMCwgMCwgUElOX1VTRVIgfCBQSU5f Tk9OQkxPQ0spOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJfdW5tYXA7CisKKwkJcnEgPSBpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKGViLT5lbmdpbmUsIGViLT5jdHgpOworCQlpZiAoSVNfRVJSKHJx KSkgeworCQkJZXJyID0gUFRSX0VSUihycSk7CitlcnJfdW5waW46CisJCQlpOTE1X3ZtYV91bnBp bihiYXRjaCk7CisJCQlnb3RvIGVycl91bm1hcDsKKwkJfQorCisJCWVyciA9IGk5MTVfZ2VtX3Jl cXVlc3RfYXdhaXRfb2JqZWN0KHJxLAorCQkJCQkJICAgIHZtYS0+b2JqLAorCQkJCQkJICAgIEVY RUNfT0JKRUNUX1dSSVRFKTsKKwkJaWYgKGVycikgeworZXJyX3JlcXVlc3Q6CisJCQlpOTE1X2Fk ZF9yZXF1ZXN0KHJxKTsKKwkJCWdvdG8gZXJyX3VucGluOworCQl9CisKKwkJZXJyID0gZWItPmVu Z2luZS0+ZW1pdF9mbHVzaChycSwgRU1JVF9JTlZBTElEQVRFKTsKKwkJaWYgKGVycikKKwkJCWdv dG8gZXJyX3JlcXVlc3Q7CisKKwkJZXJyID0gaTkxNV9zd2l0Y2hfY29udGV4dChycSk7CisJCWlm IChlcnIpCisJCQlnb3RvIGVycl9yZXF1ZXN0OworCisJCWVyciA9IGViLT5lbmdpbmUtPmVtaXRf YmJfc3RhcnQocnEsCisJCQkJCQliYXRjaC0+bm9kZS5zdGFydCwgUEFHRV9TSVpFLAorCQkJCQkJ Y2FjaGUtPmdlbiA+IDUgPyAwIDogSTkxNV9ESVNQQVRDSF9TRUNVUkUpOworCQlpZiAoZXJyKQor CQkJZ290byBlcnJfcmVxdWVzdDsKKworCQlHRU1fQlVHX09OKCFyZXNlcnZhdGlvbl9vYmplY3Rf dGVzdF9zaWduYWxlZF9yY3Uob2JqLT5yZXN2LAorCQkJCQkJCQkgdHJ1ZSkpOworCQlpOTE1X3Zt YV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEsIDApOworCQlyZXNlcnZhdGlvbl9vYmplY3RfbG9j ayhvYmotPnJlc3YsIE5VTEwpOworCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2Uo b2JqLT5yZXN2LCAmcnEtPmZlbmNlKTsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhvYmot PnJlc3YpOworCQlpOTE1X3ZtYV91bnBpbihiYXRjaCk7CisKKwkJaTkxNV92bWFfbW92ZV90b19h Y3RpdmUodm1hLCBycSwgdHJ1ZSk7CisJCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKHZtYS0+b2Jq LT5yZXN2LCBOVUxMKTsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2ZlbmNlKHZtYS0+ b2JqLT5yZXN2LCAmcnEtPmZlbmNlKTsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayh2bWEt Pm9iai0+cmVzdik7CisKKwkJdm1hLT5vYmotPmJhc2Uud3JpdGVfZG9tYWluID0gMDsKKwkJdm1h LT5vYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fR1BVX0RPTUFJTlM7CisKKwkJcnEt PmJhdGNoID0gYmF0Y2g7CisKKwkJY2FjaGUtPnJxID0gcnE7CisJCWNhY2hlLT5ycV9jbWQgPSBj bWQ7CisJCWNhY2hlLT5ycV9zaXplID0gMDsKKwl9CisKKwljbWQgPSBjYWNoZS0+cnFfY21kICsg Y2FjaGUtPnJxX3NpemU7CisJY2FjaGUtPnJxX3NpemUgKz0gbGVuOworCisJcmV0dXJuIGNtZDsK K30KKwogc3RhdGljIHU2NAogcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJ ICAgICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2Ms CkBAIC0xMDEyLDYgKzExNDgsNjcgQEAgcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfdm1hICp2 bWEsCiAJYm9vbCB3aWRlID0gZWItPnJlbG9jX2NhY2hlLnVzZV82NGJpdF9yZWxvYzsKIAl2b2lk ICp2YWRkcjsKIAorCWlmICghZWItPnJlbG9jX2NhY2hlLnZhZGRyICYmCisJICAgIChEQkdfRk9S Q0VfUkVMT0MgPT0gRk9SQ0VfR1BVX1JFTE9DIHx8CisJICAgICAhcmVzZXJ2YXRpb25fb2JqZWN0 X3Rlc3Rfc2lnbmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSkpKSB7CisJCWNvbnN0IHVuc2lnbmVk IGludCBnZW4gPSBlYi0+cmVsb2NfY2FjaGUuZ2VuOworCQl1bnNpZ25lZCBpbnQgbGVuOworCQl1 MzIgKmJhdGNoOworCQl1NjQgYWRkcjsKKworCQlpZiAod2lkZSkKKwkJCWxlbiA9IG9mZnNldCAm IDcgPyA4IDogNTsKKwkJZWxzZSBpZiAoZ2VuID49IDQpCisJCQlsZW4gPSA0OworCQllbHNlIGlm IChnZW4gPj0gMykKKwkJCWxlbiA9IDM7CisJCWVsc2UgLyogT24gZ2VuMiBNSV9TVE9SRV9EV09S RF9JTU0gdXNlcyBhIHBoeXNpY2FsIGFkZHJlc3MgKi8KKwkJCWdvdG8gcmVwZWF0OworCisJCWJh dGNoID0gcmVsb2NfZ3B1KGViLCB2bWEsIGxlbik7CisJCWlmIChJU19FUlIoYmF0Y2gpKQorCQkJ Z290byByZXBlYXQ7CisKKwkJYWRkciA9IGdlbjhfY2Fub25pY2FsX2FkZHIodm1hLT5ub2RlLnN0 YXJ0ICsgb2Zmc2V0KTsKKwkJaWYgKHdpZGUpIHsKKwkJCWlmIChvZmZzZXQgJiA3KSB7CisJCQkJ KmJhdGNoKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKKwkJCQkqYmF0Y2grKyA9IGxvd2Vy XzMyX2JpdHMoYWRkcik7CisJCQkJKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKGFkZHIpOworCQkJ CSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyh0YXJnZXRfb2Zmc2V0KTsKKworCQkJCWFkZHIgPSBn ZW44X2Nhbm9uaWNhbF9hZGRyKGFkZHIgKyA0KTsKKworCQkJCSpiYXRjaCsrID0gTUlfU1RPUkVf RFdPUkRfSU1NX0dFTjQ7CisJCQkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKGFkZHIpOworCQkJ CSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyhhZGRyKTsKKwkJCQkqYmF0Y2grKyA9IHVwcGVyXzMy X2JpdHModGFyZ2V0X29mZnNldCk7CisJCQl9IGVsc2UgeworCQkJCSpiYXRjaCsrID0gKE1JX1NU T1JFX0RXT1JEX0lNTV9HRU40IHwgKDEgPDwgMjEpKSArIDE7CisJCQkJKmJhdGNoKysgPSBsb3dl cl8zMl9iaXRzKGFkZHIpOworCQkJCSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyhhZGRyKTsKKwkJ CQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHModGFyZ2V0X29mZnNldCk7CisJCQkJKmJhdGNoKysg PSB1cHBlcl8zMl9iaXRzKHRhcmdldF9vZmZzZXQpOworCQkJfQorCQl9IGVsc2UgaWYgKGdlbiA+ PSA2KSB7CisJCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40OworCQkJKmJhdGNo KysgPSAwOworCQkJKmJhdGNoKysgPSBhZGRyOworCQkJKmJhdGNoKysgPSB0YXJnZXRfb2Zmc2V0 OworCQl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7CisJCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JE X0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CisJCQkqYmF0Y2grKyA9IDA7CisJCQkqYmF0Y2grKyA9 IGFkZHI7CisJCQkqYmF0Y2grKyA9IHRhcmdldF9vZmZzZXQ7CisJCX0gZWxzZSB7CisJCQkqYmF0 Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTSB8IE1JX01FTV9WSVJUVUFMOworCQkJKmJhdGNoKysg PSBhZGRyOworCQkJKmJhdGNoKysgPSB0YXJnZXRfb2Zmc2V0OworCQl9CisKKwkJZ290byBvdXQ7 CisJfQorCiByZXBlYXQ6CiAJdmFkZHIgPSByZWxvY192YWRkcihvYmosICZlYi0+cmVsb2NfY2Fj aGUsIG9mZnNldCA+PiBQQUdFX1NISUZUKTsKIAlpZiAoSVNfRVJSKHZhZGRyKSkKQEAgLTEwMjgs NiArMTIyNSw3IEBAIHJlbG9jYXRlX2VudHJ5KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQlnb3Rv IHJlcGVhdDsKIAl9CiAKK291dDoKIAlyZXR1cm4gZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQt Pm5vZGUuc3RhcnQpIHwgMTsKIH0KIApAQCAtMTA4OCw3ICsxMjg2LDggQEAgZWJfcmVsb2NhdGVf ZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJLyogSWYgdGhlIHJlbG9jYXRpb24g YWxyZWFkeSBoYXMgdGhlIHJpZ2h0IHZhbHVlIGluIGl0LCBubwogCSAqIG1vcmUgd29yayBuZWVk cyB0byBiZSBkb25lLgogCSAqLwotCWlmIChnZW44X2Nhbm9uaWNhbF9hZGRyKHRhcmdldC0+bm9k ZS5zdGFydCkgPT0gcmVsb2MtPnByZXN1bWVkX29mZnNldCkKKwlpZiAoIURCR19GT1JDRV9SRUxP QyAmJgorCSAgICBnZW44X2Nhbm9uaWNhbF9hZGRyKHRhcmdldC0+bm9kZS5zdGFydCkgPT0gcmVs b2MtPnByZXN1bWVkX29mZnNldCkKIAkJcmV0dXJuIDA7CiAKIAkvKiBDaGVjayB0aGF0IHRoZSBy ZWxvY2F0aW9uIGFkZHJlc3MgaXMgdmFsaWQuLi4gKi8KLS0gCjIuMTEuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==