From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v4 36/38] drm: Use drm_mm_insert_node_in_range_generic() for everyone Date: Thu, 22 Dec 2016 08:36:39 +0000 Message-ID: <20161222083641.2691-37-chris@chris-wilson.co.uk> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161222083641.2691-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org UmVtb3ZlIGEgc3VwZXJmbHVvdXMgaGVscGVyIGFzIGRybV9tbV9pbnNlcnRfbm9kZSBpcyBlcXVp dmFsZW50IHRvCmluc2VydF9ub2RlX2luX3JhbmdlIHdpdGggYSByYW5nZSBvZiBbMCwgVTY0X01B WF0uCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4Lmlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMgfCAxNjYgKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvZHJtL2RybV9tbS5o ICAgICB8ICA5MCArKysrKysrKysrKysrKystLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDY3 IGluc2VydGlvbnMoKyksIDE4OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKaW5kZXggZTI3OWFjN2M3 YWFmLi41OGE3ZTNiYmUxMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKQEAgLTkyLDExICs5Miw2IEBACiAgKiBzb21l IGJhc2ljIGFsbG9jYXRvciBkdW1wZXJzIGZvciBkZWJ1Z2dpbmcuCiAgKi8KIAotc3RhdGljIHN0 cnVjdCBkcm1fbW1fbm9kZSAqZHJtX21tX3NlYXJjaF9mcmVlX2dlbmVyaWMoY29uc3Qgc3RydWN0 IGRybV9tbSAqbW0sCi0JCQkJCQl1NjQgc2l6ZSwKLQkJCQkJCXU2NCBhbGlnbm1lbnQsCi0JCQkJ CQl1bnNpZ25lZCBsb25nIGNvbG9yLAotCQkJCQkJZW51bSBkcm1fbW1fc2VhcmNoX2ZsYWdzIGZs YWdzKTsKIHN0YXRpYyBzdHJ1Y3QgZHJtX21tX25vZGUgKmRybV9tbV9zZWFyY2hfZnJlZV9pbl9y YW5nZV9nZW5lcmljKGNvbnN0IHN0cnVjdCBkcm1fbW0gKm1tLAogCQkJCQkJdTY0IHNpemUsCiAJ CQkJCQl1NjQgYWxpZ25tZW50LApAQCAtMjMwLDYgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIGRybV9t bV9pbnNlcnRfaGVscGVyKHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlLAogCQkJCSBzdHJ1 Y3QgZHJtX21tX25vZGUgKm5vZGUsCiAJCQkJIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LAogCQkJ CSB1bnNpZ25lZCBsb25nIGNvbG9yLAorCQkJCSB1NjQgcmFuZ2Vfc3RhcnQsIHU2NCByYW5nZV9l bmQsCiAJCQkJIGVudW0gZHJtX21tX2FsbG9jYXRvcl9mbGFncyBmbGFncykKIHsKIAlzdHJ1Y3Qg ZHJtX21tICptbSA9IGhvbGVfbm9kZS0+bW07CkBAIC0yMzgsMTEgKzIzNCwxNCBAQCBzdGF0aWMg dm9pZCBkcm1fbW1faW5zZXJ0X2hlbHBlcihzdHJ1Y3QgZHJtX21tX25vZGUgKmhvbGVfbm9kZSwK IAl1NjQgYWRqX3N0YXJ0ID0gaG9sZV9zdGFydDsKIAl1NjQgYWRqX2VuZCA9IGhvbGVfZW5kOwog Ci0JRFJNX01NX0JVR19PTihub2RlLT5hbGxvY2F0ZWQpOworCURSTV9NTV9CVUdfT04oIWRybV9t bV9ob2xlX2ZvbGxvd3MoaG9sZV9ub2RlKSB8fCBub2RlLT5hbGxvY2F0ZWQpOwogCiAJaWYgKG1t LT5jb2xvcl9hZGp1c3QpCiAJCW1tLT5jb2xvcl9hZGp1c3QoaG9sZV9ub2RlLCBjb2xvciwgJmFk al9zdGFydCwgJmFkal9lbmQpOwogCisJYWRqX3N0YXJ0ID0gbWF4KGFkal9zdGFydCwgcmFuZ2Vf c3RhcnQpOworCWFkal9lbmQgPSBtaW4oYWRqX2VuZCwgcmFuZ2VfZW5kKTsKKwogCWlmIChmbGFn cyAmIERSTV9NTV9DUkVBVEVfVE9QKQogCQlhZGpfc3RhcnQgPSBhZGpfZW5kIC0gc2l6ZTsKIApA QCAtMjU4LDkgKzI1Nyw2IEBAIHN0YXRpYyB2b2lkIGRybV9tbV9pbnNlcnRfaGVscGVyKHN0cnVj dCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlLAogCQl9CiAJfQogCi0JRFJNX01NX0JVR19PTihhZGpf c3RhcnQgPCBob2xlX3N0YXJ0KTsKLQlEUk1fTU1fQlVHX09OKGFkal9lbmQgPiBob2xlX2VuZCk7 Ci0KIAlpZiAoYWRqX3N0YXJ0ID09IGhvbGVfc3RhcnQpIHsKIAkJaG9sZV9ub2RlLT5ob2xlX2Zv bGxvd3MgPSAwOwogCQlsaXN0X2RlbCgmaG9sZV9ub2RlLT5ob2xlX3N0YWNrKTsKQEAgLTI3Niw3 ICsyNzIsMTAgQEAgc3RhdGljIHZvaWQgZHJtX21tX2luc2VydF9oZWxwZXIoc3RydWN0IGRybV9t bV9ub2RlICpob2xlX25vZGUsCiAKIAlkcm1fbW1faW50ZXJ2YWxfdHJlZV9hZGRfbm9kZShob2xl X25vZGUsIG5vZGUpOwogCisJRFJNX01NX0JVR19PTihub2RlLT5zdGFydCA8IHJhbmdlX3N0YXJ0 KTsKKwlEUk1fTU1fQlVHX09OKG5vZGUtPnN0YXJ0IDwgYWRqX3N0YXJ0KTsKIAlEUk1fTU1fQlVH X09OKG5vZGUtPnN0YXJ0ICsgbm9kZS0+c2l6ZSA+IGFkal9lbmQpOworCURSTV9NTV9CVUdfT04o bm9kZS0+c3RhcnQgKyBub2RlLT5zaXplID4gcmFuZ2VfZW5kKTsKIAogCW5vZGUtPmhvbGVfZm9s bG93cyA9IDA7CiAJaWYgKF9fZHJtX21tX2hvbGVfbm9kZV9zdGFydChub2RlKSA8IGhvbGVfZW5k KSB7CkBAIC0zNjAsMTA3ICszNTksNiBAQCBpbnQgZHJtX21tX3Jlc2VydmVfbm9kZShzdHJ1Y3Qg ZHJtX21tICptbSwgc3RydWN0IGRybV9tbV9ub2RlICpub2RlKQogRVhQT1JUX1NZTUJPTChkcm1f bW1fcmVzZXJ2ZV9ub2RlKTsKIAogLyoqCi0gKiBkcm1fbW1faW5zZXJ0X25vZGVfZ2VuZXJpYyAt IHNlYXJjaCBmb3Igc3BhY2UgYW5kIGluc2VydCBAbm9kZQotICogQG1tOiBkcm1fbW0gdG8gYWxs b2NhdGUgZnJvbQotICogQG5vZGU6IHByZWFsbG9jYXRlIG5vZGUgdG8gaW5zZXJ0Ci0gKiBAc2l6 ZTogc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbgotICogQGFsaWdubWVudDogYWxpZ25tZW50IG9mIHRo ZSBhbGxvY2F0aW9uCi0gKiBAY29sb3I6IG9wYXF1ZSB0YWcgdmFsdWUgdG8gdXNlIGZvciB0aGlz IG5vZGUKLSAqIEBzZmxhZ3M6IGZsYWdzIHRvIGZpbmUtdHVuZSB0aGUgYWxsb2NhdGlvbiBzZWFy Y2gKLSAqIEBhZmxhZ3M6IGZsYWdzIHRvIGZpbmUtdHVuZSB0aGUgYWxsb2NhdGlvbiBiZWhhdmlv cgotICoKLSAqIFRoZSBwcmVhbGxvY2F0ZWQgbm9kZSBtdXN0IGJlIGNsZWFyZWQgdG8gMC4KLSAq Ci0gKiBSZXR1cm5zOgotICogMCBvbiBzdWNjZXNzLCAtRU5PU1BDIGlmIHRoZXJlJ3Mgbm8gc3Vp dGFibGUgaG9sZS4KLSAqLwotaW50IGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKHN0cnVjdCBk cm1fbW0gKm1tLCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCi0JCQkgICAgICAgdTY0IHNpemUs IHU2NCBhbGlnbm1lbnQsCi0JCQkgICAgICAgdW5zaWduZWQgbG9uZyBjb2xvciwKLQkJCSAgICAg ICBlbnVtIGRybV9tbV9zZWFyY2hfZmxhZ3Mgc2ZsYWdzLAotCQkJICAgICAgIGVudW0gZHJtX21t X2FsbG9jYXRvcl9mbGFncyBhZmxhZ3MpCi17Ci0Jc3RydWN0IGRybV9tbV9ub2RlICpob2xlX25v ZGU7Ci0KLQlpZiAoV0FSTl9PTihzaXplID09IDApKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWhv bGVfbm9kZSA9IGRybV9tbV9zZWFyY2hfZnJlZV9nZW5lcmljKG1tLCBzaXplLCBhbGlnbm1lbnQs Ci0JCQkJCSAgICAgICBjb2xvciwgc2ZsYWdzKTsKLQlpZiAoIWhvbGVfbm9kZSkKLQkJcmV0dXJu IC1FTk9TUEM7Ci0KLQlkcm1fbW1faW5zZXJ0X2hlbHBlcihob2xlX25vZGUsIG5vZGUsIHNpemUs IGFsaWdubWVudCwgY29sb3IsIGFmbGFncyk7Ci0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9M KGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKTsKLQotc3RhdGljIHZvaWQgZHJtX21tX2luc2Vy dF9oZWxwZXJfcmFuZ2Uoc3RydWN0IGRybV9tbV9ub2RlICpob2xlX25vZGUsCi0JCQkJICAgICAg IHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKLQkJCQkgICAgICAgdTY0IHNpemUsIHU2NCBhbGln bm1lbnQsCi0JCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgY29sb3IsCi0JCQkJICAgICAgIHU2NCBz dGFydCwgdTY0IGVuZCwKLQkJCQkgICAgICAgZW51bSBkcm1fbW1fYWxsb2NhdG9yX2ZsYWdzIGZs YWdzKQotewotCXN0cnVjdCBkcm1fbW0gKm1tID0gaG9sZV9ub2RlLT5tbTsKLQl1NjQgaG9sZV9z dGFydCA9IGRybV9tbV9ob2xlX25vZGVfc3RhcnQoaG9sZV9ub2RlKTsKLQl1NjQgaG9sZV9lbmQg PSBkcm1fbW1faG9sZV9ub2RlX2VuZChob2xlX25vZGUpOwotCXU2NCBhZGpfc3RhcnQgPSBob2xl X3N0YXJ0OwotCXU2NCBhZGpfZW5kID0gaG9sZV9lbmQ7Ci0KLQlEUk1fTU1fQlVHX09OKCFkcm1f bW1faG9sZV9mb2xsb3dzKGhvbGVfbm9kZSkgfHwgbm9kZS0+YWxsb2NhdGVkKTsKLQotCWlmICht bS0+Y29sb3JfYWRqdXN0KQotCQltbS0+Y29sb3JfYWRqdXN0KGhvbGVfbm9kZSwgY29sb3IsICZh ZGpfc3RhcnQsICZhZGpfZW5kKTsKLQotCWFkal9zdGFydCA9IG1heChhZGpfc3RhcnQsIHN0YXJ0 KTsKLQlhZGpfZW5kID0gbWluKGFkal9lbmQsIGVuZCk7Ci0KLQlpZiAoZmxhZ3MgJiBEUk1fTU1f Q1JFQVRFX1RPUCkKLQkJYWRqX3N0YXJ0ID0gYWRqX2VuZCAtIHNpemU7Ci0KLQlpZiAoYWxpZ25t ZW50KSB7Ci0JCXU2NCByZW07Ci0KLQkJZGl2NjRfdTY0X3JlbShhZGpfc3RhcnQsIGFsaWdubWVu dCwgJnJlbSk7Ci0JCWlmIChyZW0pIHsKLQkJCWlmIChmbGFncyAmIERSTV9NTV9DUkVBVEVfVE9Q KQotCQkJCWFkal9zdGFydCAtPSByZW07Ci0JCQllbHNlCi0JCQkJYWRqX3N0YXJ0ICs9IGFsaWdu bWVudCAtIHJlbTsKLQkJfQotCX0KLQotCWlmIChhZGpfc3RhcnQgPT0gaG9sZV9zdGFydCkgewot CQlob2xlX25vZGUtPmhvbGVfZm9sbG93cyA9IDA7Ci0JCWxpc3RfZGVsKCZob2xlX25vZGUtPmhv bGVfc3RhY2spOwotCX0KLQotCW5vZGUtPnN0YXJ0ID0gYWRqX3N0YXJ0OwotCW5vZGUtPnNpemUg PSBzaXplOwotCW5vZGUtPm1tID0gbW07Ci0Jbm9kZS0+Y29sb3IgPSBjb2xvcjsKLQlub2RlLT5h bGxvY2F0ZWQgPSAxOwotCi0JbGlzdF9hZGQoJm5vZGUtPm5vZGVfbGlzdCwgJmhvbGVfbm9kZS0+ bm9kZV9saXN0KTsKLQotCWRybV9tbV9pbnRlcnZhbF90cmVlX2FkZF9ub2RlKGhvbGVfbm9kZSwg bm9kZSk7Ci0KLQlEUk1fTU1fQlVHX09OKG5vZGUtPnN0YXJ0IDwgc3RhcnQpOwotCURSTV9NTV9C VUdfT04obm9kZS0+c3RhcnQgPCBhZGpfc3RhcnQpOwotCURSTV9NTV9CVUdfT04obm9kZS0+c3Rh cnQgKyBub2RlLT5zaXplID4gYWRqX2VuZCk7Ci0JRFJNX01NX0JVR19PTihub2RlLT5zdGFydCAr IG5vZGUtPnNpemUgPiBlbmQpOwotCi0Jbm9kZS0+aG9sZV9mb2xsb3dzID0gMDsKLQlpZiAoX19k cm1fbW1faG9sZV9ub2RlX3N0YXJ0KG5vZGUpIDwgaG9sZV9lbmQpIHsKLQkJbGlzdF9hZGQoJm5v ZGUtPmhvbGVfc3RhY2ssICZtbS0+aG9sZV9zdGFjayk7Ci0JCW5vZGUtPmhvbGVfZm9sbG93cyA9 IDE7Ci0JfQotCi0Jc2F2ZV9zdGFjayhub2RlKTsKLX0KLQotLyoqCiAgKiBkcm1fbW1faW5zZXJ0 X25vZGVfaW5fcmFuZ2VfZ2VuZXJpYyAtIHJhbmdlZCBzZWFyY2ggZm9yIHNwYWNlIGFuZCBpbnNl cnQgQG5vZGUKICAqIEBtbTogZHJtX21tIHRvIGFsbG9jYXRlIGZyb20KICAqIEBub2RlOiBwcmVh bGxvY2F0ZSBub2RlIHRvIGluc2VydApAQCAtNDk1LDkgKzM5Myw5IEBAIGludCBkcm1fbW1faW5z ZXJ0X25vZGVfaW5fcmFuZ2VfZ2VuZXJpYyhzdHJ1Y3QgZHJtX21tICptbSwgc3RydWN0IGRybV9t bV9ub2RlICpuCiAJaWYgKCFob2xlX25vZGUpCiAJCXJldHVybiAtRU5PU1BDOwogCi0JZHJtX21t X2luc2VydF9oZWxwZXJfcmFuZ2UoaG9sZV9ub2RlLCBub2RlLAotCQkJCSAgIHNpemUsIGFsaWdu bWVudCwgY29sb3IsCi0JCQkJICAgc3RhcnQsIGVuZCwgYWZsYWdzKTsKKwlkcm1fbW1faW5zZXJ0 X2hlbHBlcihob2xlX25vZGUsIG5vZGUsCisJCQkgICAgIHNpemUsIGFsaWdubWVudCwgY29sb3Is CisJCQkgICAgIHN0YXJ0LCBlbmQsIGFmbGFncyk7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lN Qk9MKGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKTsKQEAgLTU1OCw0OCArNDU2 LDYgQEAgc3RhdGljIGludCBjaGVja19mcmVlX2hvbGUodTY0IHN0YXJ0LCB1NjQgZW5kLCB1NjQg c2l6ZSwgdTY0IGFsaWdubWVudCkKIAlyZXR1cm4gZW5kID49IHN0YXJ0ICsgc2l6ZTsKIH0KIAot c3RhdGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqZHJtX21tX3NlYXJjaF9mcmVlX2dlbmVyaWMoY29u c3Qgc3RydWN0IGRybV9tbSAqbW0sCi0JCQkJCQkgICAgICB1NjQgc2l6ZSwKLQkJCQkJCSAgICAg IHU2NCBhbGlnbm1lbnQsCi0JCQkJCQkgICAgICB1bnNpZ25lZCBsb25nIGNvbG9yLAotCQkJCQkJ ICAgICAgZW51bSBkcm1fbW1fc2VhcmNoX2ZsYWdzIGZsYWdzKQotewotCXN0cnVjdCBkcm1fbW1f bm9kZSAqZW50cnk7Ci0Jc3RydWN0IGRybV9tbV9ub2RlICpiZXN0OwotCXU2NCBhZGpfc3RhcnQ7 Ci0JdTY0IGFkal9lbmQ7Ci0JdTY0IGJlc3Rfc2l6ZTsKLQotCURSTV9NTV9CVUdfT04obW0tPnNj YW5fYWN0aXZlKTsKLQotCWJlc3QgPSBOVUxMOwotCWJlc3Rfc2l6ZSA9IH4wVUw7Ci0KLQlfX2Ry bV9tbV9mb3JfZWFjaF9ob2xlKGVudHJ5LCBtbSwgYWRqX3N0YXJ0LCBhZGpfZW5kLAotCQkJICAg ICAgIGZsYWdzICYgRFJNX01NX1NFQVJDSF9CRUxPVykgewotCQl1NjQgaG9sZV9zaXplID0gYWRq X2VuZCAtIGFkal9zdGFydDsKLQotCQlpZiAobW0tPmNvbG9yX2FkanVzdCkgewotCQkJbW0tPmNv bG9yX2FkanVzdChlbnRyeSwgY29sb3IsICZhZGpfc3RhcnQsICZhZGpfZW5kKTsKLQkJCWlmIChh ZGpfZW5kIDw9IGFkal9zdGFydCkKLQkJCQljb250aW51ZTsKLQkJfQotCi0JCWlmICghY2hlY2tf ZnJlZV9ob2xlKGFkal9zdGFydCwgYWRqX2VuZCwgc2l6ZSwgYWxpZ25tZW50KSkKLQkJCWNvbnRp bnVlOwotCi0JCWlmICghKGZsYWdzICYgRFJNX01NX1NFQVJDSF9CRVNUKSkKLQkJCXJldHVybiBl bnRyeTsKLQotCQlpZiAoaG9sZV9zaXplIDwgYmVzdF9zaXplKSB7Ci0JCQliZXN0ID0gZW50cnk7 Ci0JCQliZXN0X3NpemUgPSBob2xlX3NpemU7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gYmVzdDsKLX0K LQogc3RhdGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqZHJtX21tX3NlYXJjaF9mcmVlX2luX3Jhbmdl X2dlbmVyaWMoY29uc3Qgc3RydWN0IGRybV9tbSAqbW0sCiAJCQkJCQkJdTY0IHNpemUsCiAJCQkJ CQkJdTY0IGFsaWdubWVudCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9tbS5oIGIvaW5j bHVkZS9kcm0vZHJtX21tLmgKaW5kZXggN2RhN2ExNzFkNmQ1Li45MmVjNTc1OWNhYWUgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9tbS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9tbS5oCkBA IC0yODUsNDAgKzI4NSw2IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGRybV9tbV9ob2xlX25vZGVfZW5k KGNvbnN0IHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlKQogICogQmFzaWMgcmFuZ2UgbWFu YWdlciBzdXBwb3J0IChkcm1fbW0uYykKICAqLwogaW50IGRybV9tbV9yZXNlcnZlX25vZGUoc3Ry dWN0IGRybV9tbSAqbW0sIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSk7Ci0KLWludCBkcm1fbW1f aW5zZXJ0X25vZGVfZ2VuZXJpYyhzdHJ1Y3QgZHJtX21tICptbSwKLQkJCSAgICAgICBzdHJ1Y3Qg ZHJtX21tX25vZGUgKm5vZGUsCi0JCQkgICAgICAgdTY0IHNpemUsCi0JCQkgICAgICAgdTY0IGFs aWdubWVudCwKLQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGNvbG9yLAotCQkJICAgICAgIGVudW0g ZHJtX21tX3NlYXJjaF9mbGFncyBzZmxhZ3MsCi0JCQkgICAgICAgZW51bSBkcm1fbW1fYWxsb2Nh dG9yX2ZsYWdzIGFmbGFncyk7Ci0vKioKLSAqIGRybV9tbV9pbnNlcnRfbm9kZSAtIHNlYXJjaCBm b3Igc3BhY2UgYW5kIGluc2VydCBAbm9kZQotICogQG1tOiBkcm1fbW0gdG8gYWxsb2NhdGUgZnJv bQotICogQG5vZGU6IHByZWFsbG9jYXRlIG5vZGUgdG8gaW5zZXJ0Ci0gKiBAc2l6ZTogc2l6ZSBv ZiB0aGUgYWxsb2NhdGlvbgotICogQGFsaWdubWVudDogYWxpZ25tZW50IG9mIHRoZSBhbGxvY2F0 aW9uCi0gKiBAZmxhZ3M6IGZsYWdzIHRvIGZpbmUtdHVuZSB0aGUgYWxsb2NhdGlvbgotICoKLSAq IFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgZHJtX21tX2luc2VydF9ub2RlX2dlbmVy aWMoKSB3aXRoIEBjb2xvciBzZXQKLSAqIHRvIDAuCi0gKgotICogVGhlIHByZWFsbG9jYXRlZCBu b2RlIG11c3QgYmUgY2xlYXJlZCB0byAwLgotICoKLSAqIFJldHVybnM6Ci0gKiAwIG9uIHN1Y2Nl c3MsIC1FTk9TUEMgaWYgdGhlcmUncyBubyBzdWl0YWJsZSBob2xlLgotICovCi1zdGF0aWMgaW5s aW5lIGludCBkcm1fbW1faW5zZXJ0X25vZGUoc3RydWN0IGRybV9tbSAqbW0sCi0JCQkJICAgICBz dHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCi0JCQkJICAgICB1NjQgc2l6ZSwKLQkJCQkgICAgIHU2 NCBhbGlnbm1lbnQsCi0JCQkJICAgICBlbnVtIGRybV9tbV9zZWFyY2hfZmxhZ3MgZmxhZ3MpCi17 Ci0JcmV0dXJuIGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKG1tLCBub2RlLCBzaXplLCBhbGln bm1lbnQsIDAsIGZsYWdzLAotCQkJCQkgIERSTV9NTV9DUkVBVEVfREVGQVVMVCk7Ci19Ci0KIGlu dCBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2VfZ2VuZXJpYyhzdHJ1Y3QgZHJtX21tICptbSwK IAkJCQkJc3RydWN0IGRybV9tbV9ub2RlICpub2RlLAogCQkJCQl1NjQgc2l6ZSwKQEAgLTMyOCw2 ICsyOTQsNyBAQCBpbnQgZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoc3RydWN0 IGRybV9tbSAqbW0sCiAJCQkJCXU2NCBlbmQsCiAJCQkJCWVudW0gZHJtX21tX3NlYXJjaF9mbGFn cyBzZmxhZ3MsCiAJCQkJCWVudW0gZHJtX21tX2FsbG9jYXRvcl9mbGFncyBhZmxhZ3MpOworCiAv KioKICAqIGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZSAtIHJhbmdlZCBzZWFyY2ggZm9yIHNw YWNlIGFuZCBpbnNlcnQgQG5vZGUKICAqIEBtbTogZHJtX21tIHRvIGFsbG9jYXRlIGZyb20KQEAg LTM1OSw2ICszMjYsNjEgQEAgc3RhdGljIGlubGluZSBpbnQgZHJtX21tX2luc2VydF9ub2RlX2lu X3JhbmdlKHN0cnVjdCBkcm1fbW0gKm1tLAogCQkJCQkJICAgRFJNX01NX0NSRUFURV9ERUZBVUxU KTsKIH0KIAorLyoqCisgKiBkcm1fbW1faW5zZXJ0X25vZGVfZ2VuZXJpYyAtIHNlYXJjaCBmb3Ig c3BhY2UgYW5kIGluc2VydCBAbm9kZQorICogQG1tOiBkcm1fbW0gdG8gYWxsb2NhdGUgZnJvbQor ICogQG5vZGU6IHByZWFsbG9jYXRlIG5vZGUgdG8gaW5zZXJ0CisgKiBAc2l6ZTogc2l6ZSBvZiB0 aGUgYWxsb2NhdGlvbgorICogQGFsaWdubWVudDogYWxpZ25tZW50IG9mIHRoZSBhbGxvY2F0aW9u CisgKiBAY29sb3I6IG9wYXF1ZSB0YWcgdmFsdWUgdG8gdXNlIGZvciB0aGlzIG5vZGUKKyAqIEBz ZmxhZ3M6IGZsYWdzIHRvIGZpbmUtdHVuZSB0aGUgYWxsb2NhdGlvbiBzZWFyY2gKKyAqIEBhZmxh Z3M6IGZsYWdzIHRvIGZpbmUtdHVuZSB0aGUgYWxsb2NhdGlvbiBiZWhhdmlvcgorICoKKyAqIFRo ZSBwcmVhbGxvY2F0ZWQgbm9kZSBtdXN0IGJlIGNsZWFyZWQgdG8gMC4KKyAqCisgKiBSZXR1cm5z OgorICogMCBvbiBzdWNjZXNzLCAtRU5PU1BDIGlmIHRoZXJlJ3Mgbm8gc3VpdGFibGUgaG9sZS4K KyAqLworc3RhdGljIGlubGluZSBpbnQKK2RybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKHN0cnVj dCBkcm1fbW0gKm1tLCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCisJCQkgICB1NjQgc2l6ZSwg dTY0IGFsaWdubWVudCwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgY29sb3IsCisJCQkgICBlbnVtIGRy bV9tbV9zZWFyY2hfZmxhZ3Mgc2ZsYWdzLAorCQkJICAgZW51bSBkcm1fbW1fYWxsb2NhdG9yX2Zs YWdzIGFmbGFncykKK3sKKwlyZXR1cm4gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVy aWMobW0sIG5vZGUsCisJCQkJCQkgICBzaXplLCBhbGlnbm1lbnQsIDAsCisJCQkJCQkgICAwLCBV NjRfTUFYLAorCQkJCQkJICAgc2ZsYWdzLCBhZmxhZ3MpOworfQorCisvKioKKyAqIGRybV9tbV9p bnNlcnRfbm9kZSAtIHNlYXJjaCBmb3Igc3BhY2UgYW5kIGluc2VydCBAbm9kZQorICogQG1tOiBk cm1fbW0gdG8gYWxsb2NhdGUgZnJvbQorICogQG5vZGU6IHByZWFsbG9jYXRlIG5vZGUgdG8gaW5z ZXJ0CisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbgorICogQGFsaWdubWVudDogYWxp Z25tZW50IG9mIHRoZSBhbGxvY2F0aW9uCisgKiBAZmxhZ3M6IGZsYWdzIHRvIGZpbmUtdHVuZSB0 aGUgYWxsb2NhdGlvbgorICoKKyAqIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgZHJt X21tX2luc2VydF9ub2RlX2dlbmVyaWMoKSB3aXRoIEBjb2xvciBzZXQKKyAqIHRvIDAuCisgKgor ICogVGhlIHByZWFsbG9jYXRlZCBub2RlIG11c3QgYmUgY2xlYXJlZCB0byAwLgorICoKKyAqIFJl dHVybnM6CisgKiAwIG9uIHN1Y2Nlc3MsIC1FTk9TUEMgaWYgdGhlcmUncyBubyBzdWl0YWJsZSBo b2xlLgorICovCitzdGF0aWMgaW5saW5lIGludCBkcm1fbW1faW5zZXJ0X25vZGUoc3RydWN0IGRy bV9tbSAqbW0sCisJCQkJICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCisJCQkJICAgICB1 NjQgc2l6ZSwKKwkJCQkgICAgIHU2NCBhbGlnbm1lbnQsCisJCQkJICAgICBlbnVtIGRybV9tbV9z ZWFyY2hfZmxhZ3MgZmxhZ3MpCit7CisJcmV0dXJuIGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmlj KG1tLCBub2RlLAorCQkJCQkgIHNpemUsIGFsaWdubWVudCwgMCwKKwkJCQkJICBmbGFncywgRFJN X01NX0NSRUFURV9ERUZBVUxUKTsKK30KKwogdm9pZCBkcm1fbW1fcmVtb3ZlX25vZGUoc3RydWN0 IGRybV9tbV9ub2RlICpub2RlKTsKIHZvaWQgZHJtX21tX3JlcGxhY2Vfbm9kZShzdHJ1Y3QgZHJt X21tX25vZGUgKm9sZCwgc3RydWN0IGRybV9tbV9ub2RlICpuZXcpOwogdm9pZCBkcm1fbW1faW5p dChzdHJ1Y3QgZHJtX21tICptbSwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSk7Ci0tIAoyLjExLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=