From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 22 Mar 2018 11:17:10 +0000 Message-Id: <20180322111712.9056-1-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t 1/3] lib/dummyload: Add pollable spin batch List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClBvbGxhYmxl IHNwaW4gYmF0Y2ggZXhwb3J0cyBhIHNwaW4tPnJ1bm5pbmcgcG9pbnRlciB3aGljaCBjYW4gYmUg Y2hlY2tlZApieSBkZXJlZmVyZW5jaW5nIGl0IHRvIHNlZSBpZiB0aGUgc3Bpbm5lciBpcyBhY3R1 YWxseSBleGVjdXRpbmcgb24gdGhlCkdQVS4KClRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0cyB3aGlj aCB3YW50IHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCBwcm9jZWVkIHdpdGgKdGhlaXIgbmV4dCBz dGVwIHdoaWxzdCB0aGUgc3Bpbm5lciBpcyBwb3RlbnRpYWxseSBvbmx5IGJlaW5nIHByb2Nlc3Nl ZCBieQp0aGUgZHJpdmVyIGFuZCBub3QgYWN0dWFsbHkgZXhlY3V0aW5nLgoKUG9sbGFibGUgc3Bp bm5lciBjYW4gYmUgY3JlYXRlZCB3aXRoIGlndF9zcGluX2JhdGNoX25ld19wb2xsIG9yCl9faWd0 X3NwaW5fYmF0Y2hfbmV3X3BvbGwsIGFmdGVyIHdoaWNoIGEgbG9vcCBzaW1pbGFyIHRvOgoKCXdo aWxlICghKih2b2xhdGlsZSBib29sICopc3Bpbi0+cnVubmluZykKCQk7CgpDYW4gYmUgdXNlZCB0 byB3YWl0IHVudGlsIHRoZSBzcGlubmVyIHN0YXJ0IGV4ZWN1dGlvbi4KClNpZ25lZC1vZmYtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogbGliL2lndF9k dW1teWxvYWQuYyAgfCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBsaWIvaWd0X2R1bW15bG9hZC5oICB8ICAxMSArKysKIGxpYi9pZ3RfZ3Qu YyAgICAgICAgIHwgICAyICstCiBsaWIvaW9jdGxfd3JhcHBlcnMuYyB8ICAgMiArLQogbGliL2lv Y3RsX3dyYXBwZXJzLmggfCAgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygr KSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuYyBiL2xp Yi9pZ3RfZHVtbXlsb2FkLmMKaW5kZXggZGJjOTJlOGYyOTUxLi45OGFiN2FjMmM2ZTkgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMKKysrIGIvbGliL2lndF9kdW1teWxvYWQuYwpAQCAt NzQsMzUgKzc0LDQ4IEBAIGZpbGxfcmVsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9u X2VudHJ5ICpyZWxvYywKIAlyZWxvYy0+d3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluczsKIH0K IAotc3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluLAotCQkJ CWludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsCi0JCQkJdWludDMyX3QgZGVw LCBib29sIG91dF9mZW5jZSkKKyNkZWZpbmUgT1VUX0ZFTkNFCSgxIDw8IDApCisjZGVmaW5lIFBP TExfUlVOCSgxIDw8IDEpCisKK3N0YXRpYyBpbnQKK2VtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9z cGluX3QgKnNwaW4sIGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsCisJCSAg ICAgdWludDMyX3QgZGVwLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAjZGVmaW5lIFNDUkFUQ0gg MAogI2RlZmluZSBCQVRDSCAxCiAJY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRf ZHJtX2RldmlkKGZkKSk7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJd OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY3NbMl07Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY3NbMl0sICpyOworCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgKmV4ZWNidWY7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg Km9iajsKIAl1bnNpZ25lZCBpbnQgZW5naW5lc1sxNl07CiAJdW5zaWduZWQgaW50IG5lbmdpbmU7 CiAJaW50IGZlbmNlX2ZkID0gLTE7Ci0JdWludDMyX3QgKmJhdGNoOworCXVpbnQzMl90ICpiYXRj aCwgKmJhdGNoX3N0YXJ0OwogCWludCBpOwogCiAJbmVuZ2luZSA9IDA7CiAJaWYgKGVuZ2luZSA9 PSBBTExfRU5HSU5FUykgewotCQlmb3JfZWFjaF9lbmdpbmUoZmQsIGVuZ2luZSkKLQkJCWlmIChl bmdpbmUpCisJCWZvcl9lYWNoX2VuZ2luZShmZCwgZW5naW5lKSB7CisJCQlpZiAoZW5naW5lKSB7 CisJCQlpZiAoZmxhZ3MgJiBQT0xMX1JVTikKKwkJCQlpZ3RfcmVxdWlyZSghKGZsYWdzICYgUE9M TF9SVU4pIHx8CisJCQkJCSAgICBnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBlbmdpbmUpKTsKKwog CQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsKKwkJCX0KKwkJfQogCX0gZWxzZSB7CiAJ CWdlbV9yZXF1aXJlX3JpbmcoZmQsIGVuZ2luZSk7CisJCWlndF9yZXF1aXJlKCEoZmxhZ3MgJiBQ T0xMX1JVTikgfHwKKwkJCSAgICBnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBlbmdpbmUpKTsKIAkJ ZW5naW5lc1tuZW5naW5lKytdID0gZW5naW5lOwogCX0KIAlpZ3RfcmVxdWlyZShuZW5naW5lKTsK IAotCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKLQltZW1zZXQob2JqLCAw LCBzaXplb2Yob2JqKSk7CisJbWVtc2V0KCZzcGluLT5leGVjYnVmLCAwLCBzaXplb2Yoc3Bpbi0+ ZXhlY2J1ZikpOworCWV4ZWNidWYgPSAmc3Bpbi0+ZXhlY2J1ZjsKKwltZW1zZXQoc3Bpbi0+b2Jq LCAwLCBzaXplb2Yoc3Bpbi0+b2JqKSk7CisJb2JqID0gc3Bpbi0+b2JqOwogCW1lbXNldChyZWxv Y3MsIDAsIHNpemVvZihyZWxvY3MpKTsKIAogCW9ialtCQVRDSF0uaGFuZGxlID0gZ2VtX2NyZWF0 ZShmZCwgQkFUQ0hfU0laRSk7CkBAIC0xMTMsMTkgKzEyNiw2NiBAQCBzdGF0aWMgaW50IGVtaXRf cmVjdXJzaXZlX2JhdGNoKGlndF9zcGluX3QgKnNwaW4sCiAJCQkJICAgICAgIAlCQVRDSF9TSVpF LCBQUk9UX1dSSVRFKTsKIAlnZW1fc2V0X2RvbWFpbihmZCwgb2JqW0JBVENIXS5oYW5kbGUsCiAJ CQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKLQlleGVjYnVmLmJ1 ZmZlcl9jb3VudCsrOworCWV4ZWNidWYtPmJ1ZmZlcl9jb3VudCsrOworCWJhdGNoX3N0YXJ0ID0g YmF0Y2g7CiAKIAlpZiAoZGVwKSB7CisJCWlndF9hc3NlcnQoIShmbGFncyAmIFBPTExfUlVOKSk7 CisKIAkJLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLwogCQlvYmpbU0NSQVRDSF0uaGFu ZGxlID0gZGVwOwogCQlmaWxsX3JlbG9jKCZyZWxvY3Nbb2JqW0JBVENIXS5yZWxvY2F0aW9uX2Nv dW50KytdLAogCQkJICAgZGVwLCAxMDIwLAogCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwK IAkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOwotCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCsr OworCQlleGVjYnVmLT5idWZmZXJfY291bnQrKzsKKwl9IGVsc2UgaWYgKGZsYWdzICYgUE9MTF9S VU4pIHsKKwkJdW5zaWduZWQgaW50IG9mZnNldDsKKworCQlpZ3RfYXNzZXJ0KCFkZXApOworCisJ CWlmIChnZW4gPT0gNCB8fCBnZW4gPT0gNSkKKwkJCWV4ZWNidWYtPmZsYWdzIHw9IEk5MTVfRVhF Q19TRUNVUkU7CisKKwkJc3Bpbi0+cG9sbF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KworCQlpZiAoX19nZW1fc2V0X2NhY2hpbmcoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCSAg ICAgIEk5MTVfQ0FDSElOR19DQUNIRUQpID09IDApCisJCQlzcGluLT5ydW5uaW5nID0gX19nZW1f bW1hcF9fY3B1KGZkLCBzcGluLT5wb2xsX2hhbmRsZSwKKwkJCQkJCQkwLCA0MDk2LAorCQkJCQkJ CVBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworCQllbHNlCisJCQlzcGluLT5ydW5uaW5nID0gX19n ZW1fbW1hcF9fd2MoZmQsIHNwaW4tPnBvbGxfaGFuZGxlLAorCQkJCQkJICAgICAgIDAsIDQwOTYs CisJCQkJCQkgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJCWlndF9hc3NlcnQoc3Bp bi0+cnVubmluZyk7CisJCWlndF9hc3NlcnRfZXEoKnNwaW4tPnJ1bm5pbmcsIDApOworCisJCSpi YXRjaCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7CisK KwkJaWYgKGdlbiA+PSA4KSB7CisJCQlvZmZzZXQgPSAxOworCQkJKmJhdGNoKysgPSAwOworCQkJ KmJhdGNoKysgPSAwOworCQl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7CisJCQlvZmZzZXQgPSAyOwor CQkJKmJhdGNoKysgPSAwOworCQkJKmJhdGNoKysgPSAwOworCQl9IGVsc2UgeworCQkJb2Zmc2V0 ID0gMTsKKwkJCWJhdGNoWy0xXS0tOworCQkJKmJhdGNoKysgPSAwOworCQl9CisKKwkJKmJhdGNo KysgPSAxOworCisJCW9ialtTQ1JBVENIXS5oYW5kbGUgPSBzcGluLT5wb2xsX2hhbmRsZTsKKwkJ ZmlsbF9yZWxvYygmcmVsb2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrXSwKKwkJCSAg IHNwaW4tPnBvbGxfaGFuZGxlLCBvZmZzZXQsIDAsIDApOworCQlleGVjYnVmLT5idWZmZXJfY291 bnQrKzsKIAl9CiAKLQlzcGluLT5iYXRjaCA9IGJhdGNoOworCXNwaW4tPmJhdGNoID0gYmF0Y2gg PSBiYXRjaF9zdGFydCArIDY0IC8gc2l6ZW9mKCpiYXRjaCk7CiAJc3Bpbi0+aGFuZGxlID0gb2Jq W0JBVENIXS5oYW5kbGU7CiAKIAkvKiBBbGxvdyBvdXJzZWx2ZXMgdG8gYmUgcHJlZW1wdGVkICov CkBAIC0xNDUsNDAgKzIwNSw0MiBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGln dF9zcGluX3QgKnNwaW4sCiAJYmF0Y2ggKz0gMTAwMDsKIAogCS8qIHJlY3Vyc2UgKi8KLQlmaWxs X3JlbG9jKCZyZWxvY3Nbb2JqW0JBVENIXS5yZWxvY2F0aW9uX2NvdW50XSwKLQkJICAgb2JqW0JB VENIXS5oYW5kbGUsIChiYXRjaCAtIHNwaW4tPmJhdGNoKSArIDEsCi0JCSAgIEk5MTVfR0VNX0RP TUFJTl9DT01NQU5ELCAwKTsKKwlyID0gJnJlbG9jc1tvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291 bnQrK107CisJci0+dGFyZ2V0X2hhbmRsZSA9IG9ialtCQVRDSF0uaGFuZGxlOworCXItPm9mZnNl dCA9IChiYXRjaCArIDEgLSBiYXRjaF9zdGFydCkgKiBzaXplb2YoKmJhdGNoKTsKKwlyLT5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKKwlyLT5kZWx0YSA9IDY0OwogCWlm IChnZW4gPj0gOCkgewogCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwg OCB8IDE7Ci0JCSpiYXRjaCsrID0gMDsKKwkJKmJhdGNoKysgPSByLT5kZWx0YTsKIAkJKmJhdGNo KysgPSAwOwogCX0gZWxzZSBpZiAoZ2VuID49IDYpIHsKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9C VUZGRVJfU1RBUlQgfCAxIDw8IDg7Ci0JCSpiYXRjaCsrID0gMDsKKwkJKmJhdGNoKysgPSByLT5k ZWx0YTsKIAl9IGVsc2UgewogCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDIg PDwgNjsKLQkJKmJhdGNoID0gMDsKLQkJaWYgKGdlbiA8IDQpIHsKLQkJCSpiYXRjaCB8PSAxOwot CQkJcmVsb2NzW29ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudF0uZGVsdGEgPSAxOwotCQl9CisJ CWlmIChnZW4gPCA0KQorCQkJci0+ZGVsdGEgfD0gMTsKKwkJKmJhdGNoID0gci0+ZGVsdGE7CiAJ CWJhdGNoKys7CiAJfQotCW9ialtCQVRDSF0ucmVsb2NhdGlvbl9jb3VudCsrOwogCW9ialtCQVRD SF0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxvY3MpOwogCi0JZXhlY2J1Zi5idWZm ZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmogKyAoMiAtIGV4ZWNidWYuYnVmZmVyX2NvdW50 KSk7Ci0JZXhlY2J1Zi5yc3ZkMSA9IGN0eDsKKwlleGVjYnVmLT5idWZmZXJzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcihvYmogKworCQkJCQkgICAgICAgKDIgLSBleGVjYnVmLT5idWZmZXJfY291bnQp KTsKKwlleGVjYnVmLT5yc3ZkMSA9IGN0eDsKIAotCWlmIChvdXRfZmVuY2UpCi0JCWV4ZWNidWYu ZmxhZ3MgfD0gSTkxNV9FWEVDX0ZFTkNFX09VVDsKKwlpZiAoZmxhZ3MgJiBPVVRfRkVOQ0UpCisJ CWV4ZWNidWYtPmZsYWdzIHw9IEk5MTVfRVhFQ19GRU5DRV9PVVQ7CiAKIAlmb3IgKGkgPSAwOyBp IDwgbmVuZ2luZTsgaSsrKSB7Ci0JCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwotCQll eGVjYnVmLmZsYWdzIHw9IGVuZ2luZXNbaV07Ci0JCWdlbV9leGVjYnVmX3dyKGZkLCAmZXhlY2J1 Zik7Ci0JCWlmIChvdXRfZmVuY2UpIHsKLQkJCWludCBfZmQgPSBleGVjYnVmLnJzdmQyID4+IDMy OworCQlleGVjYnVmLT5mbGFncyAmPSB+RU5HSU5FX01BU0s7CisJCWV4ZWNidWYtPmZsYWdzIHw9 IGVuZ2luZXNbaV07CisKKwkJZ2VtX2V4ZWNidWZfd3IoZmQsIGV4ZWNidWYpOworCisJCWlmIChm bGFncyAmIE9VVF9GRU5DRSkgeworCQkJaW50IF9mZCA9IGV4ZWNidWYtPnJzdmQyID4+IDMyOwog CiAJCQlpZ3RfYXNzZXJ0KF9mZCA+PSAwKTsKIAkJCWlmIChmZW5jZV9mZCA9PSAtMSkgewpAQCAt MTk0LDEyICsyNTYsMjAgQEAgc3RhdGljIGludCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpZ3Rfc3Bp bl90ICpzcGluLAogCQl9CiAJfQogCisJLyogTWFrZSBpdCBlYXNpZXIgZm9yIGNhbGxlcnMgdG8g cmVzdWJtaXQuICovCisKKwlvYmpbQkFUQ0hdLnJlbG9jYXRpb25fY291bnQgPSAwOworCW9ialtC QVRDSF0ucmVsb2NzX3B0ciA9IDA7CisKKwlvYmpbU0NSQVRDSF0uZmxhZ3MgPSBFWEVDX09CSkVD VF9QSU5ORUQ7CisJb2JqW0JBVENIXS5mbGFncyA9IEVYRUNfT0JKRUNUX1BJTk5FRDsKKwogCXJl dHVybiBmZW5jZV9mZDsKIH0KIAogc3RhdGljIGlndF9zcGluX3QgKgogX19faWd0X3NwaW5fYmF0 Y2hfbmV3KGludCBmZCwgdWludDMyX3QgY3R4LCB1bnNpZ25lZCBlbmdpbmUsIHVpbnQzMl90IGRl cCwKLQkJICAgICAgaW50IG91dF9mZW5jZSkKKwkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQog ewogCWlndF9zcGluX3QgKnNwaW47CiAKQEAgLTIwNyw3ICsyNzcsNyBAQCBfX19pZ3Rfc3Bpbl9i YXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMyX3Qg ZGVwLAogCWlndF9hc3NlcnQoc3Bpbik7CiAKIAlzcGluLT5vdXRfZmVuY2UgPSBlbWl0X3JlY3Vy c2l2ZV9iYXRjaChzcGluLCBmZCwgY3R4LCBlbmdpbmUsIGRlcCwKLQkJCQkJICAgICAgIG91dF9m ZW5jZSk7CisJCQkJCSAgICAgICBmbGFncyk7CiAKIAlwdGhyZWFkX211dGV4X2xvY2soJmxpc3Rf bG9jayk7CiAJaWd0X2xpc3RfYWRkKCZzcGluLT5saW5rLCAmc3Bpbl9saXN0KTsKQEAgLTIxOSw3 ICsyODksNyBAQCBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVu c2lnbmVkIGVuZ2luZSwgdWludDMyX3QgZGVwLAogaWd0X3NwaW5fdCAqCiBfX2lndF9zcGluX2Jh dGNoX25ldyhpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBk ZXApCiB7Ci0JcmV0dXJuIF9fX2lndF9zcGluX2JhdGNoX25ldyhmZCwgY3R4LCBlbmdpbmUsIGRl cCwgZmFsc2UpOworCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZW5naW5l LCBkZXAsIDApOwogfQogCiAvKioKQEAgLTI1Myw3ICszMjMsNyBAQCBpZ3Rfc3Bpbl9iYXRjaF9u ZXcoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSwgdWludDMyX3QgZGVwKQog aWd0X3NwaW5fdCAqCiBfX2lndF9zcGluX2JhdGNoX25ld19mZW5jZShpbnQgZmQsIHVpbnQzMl90 IGN0eCwgdW5zaWduZWQgZW5naW5lKQogewotCXJldHVybiBfX19pZ3Rfc3Bpbl9iYXRjaF9uZXco ZmQsIGN0eCwgZW5naW5lLCAwLCB0cnVlKTsKKwlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3 KGZkLCBjdHgsIGVuZ2luZSwgMCwgT1VUX0ZFTkNFKTsKIH0KIAogLyoqCkBAIC0yODYsNiArMzU2 LDQyIEBAIGlndF9zcGluX2JhdGNoX25ld19mZW5jZShpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5z aWduZWQgZW5naW5lKQogCXJldHVybiBzcGluOwogfQogCitpZ3Rfc3Bpbl90ICoKK19faWd0X3Nw aW5fYmF0Y2hfbmV3X3BvbGwoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGVuZ2luZSkK K3sKKwlyZXR1cm4gX19faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBjdHgsIGVuZ2luZSwgMCwgUE9M TF9SVU4pOworfQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX25ld19wb2xsOgorICogQGZkOiBv cGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGVuZ2luZTogUmluZyB0byBleGVjdXRl IGJhdGNoIE9SJ2Qgd2l0aCBleGVjYnVmIGZsYWdzLiBJZiB2YWx1ZSBpcyBsZXNzCisgKiAgICAg ICAgICB0aGFuIDAsIGV4ZWN1dGUgb24gYWxsIGF2YWlsYWJsZSByaW5ncy4KKyAqCisgKiBTdGFy dCBhIHJlY3Vyc2l2ZSBiYXRjaCBvbiBhIHJpbmcuIEltbWVkaWF0ZWx5IHJldHVybnMgYSAjaWd0 X3NwaW5fdCB0aGF0CisgKiBjb250YWlucyB0aGUgYmF0Y2gncyBoYW5kbGUgdGhhdCBjYW4gYmUg d2FpdGVkIHVwb24uIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUKKyAqIG11c3QgYmUgcGFzc2VkIHRv IGlndF9zcGluX2JhdGNoX2ZyZWUoKSBmb3IgcG9zdC1wcm9jZXNzaW5nLgorICoKKyAqIGlndF9z cGluX3QtPnJ1bm5pbmcgd2lsbCBjb250YWludCBhIHBvaW50ZXIgd2hpY2ggdGFyZ2V0IHdpbGwg Y2hhbmdlIGZyb20KKyAqIHplcm8gdG8gb25lIG9uY2UgdGhlIHNwaW5uZXIgYWN0dWFsbHkgc3Rh cnRzIGV4ZWN1dGluZyBvbiB0aGUgR1BVLgorICoKKyAqIFJldHVybnM6CisgKiBTdHJ1Y3R1cmUg d2l0aCBoZWxwZXIgaW50ZXJuYWwgc3RhdGUgZm9yIGlndF9zcGluX2JhdGNoX2ZyZWUoKS4KKyAq LworaWd0X3NwaW5fdCAqCitpZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQsIHVpbnQzMl90 IGN0eCwgdW5zaWduZWQgZW5naW5lKQoreworCWlndF9zcGluX3QgKnNwaW47CisKKwlpZ3RfcmVx dWlyZV9nZW0oZmQpOworCWlndF9yZXF1aXJlKGdlbV9tbWFwX19oYXNfd2MoZmQpKTsKKworCXNw aW4gPSBfX2lndF9zcGluX2JhdGNoX25ld19wb2xsKGZkLCBjdHgsIGVuZ2luZSk7CisJaWd0X2Fz c2VydChnZW1fYm9fYnVzeShmZCwgc3Bpbi0+aGFuZGxlKSk7CisKKwlyZXR1cm4gc3BpbjsKK30K Kwogc3RhdGljIHZvaWQgbm90aWZ5KHVuaW9uIHNpZ3ZhbCBhcmcpCiB7CiAJaWd0X3NwaW5fdCAq c3BpbiA9IGFyZy5zaXZhbF9wdHI7CkBAIC0zNDAsNiArNDQ2LDggQEAgdm9pZCBpZ3Rfc3Bpbl9i YXRjaF9lbmQoaWd0X3NwaW5fdCAqc3BpbikKIAlpZiAoIXNwaW4pCiAJCXJldHVybjsKIAorCWln dF9hc3NlcnQoKnNwaW4tPmJhdGNoID09IE1JX0FSQl9DSEsgfHwKKwkJICAgKnNwaW4tPmJhdGNo ID09IE1JX0JBVENIX0JVRkZFUl9FTkQpOwogCSpzcGluLT5iYXRjaCA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7CiAJX19zeW5jX3N5bmNocm9uaXplKCk7CiB9CkBAIC0zNjUsNyArNDczLDEzIEBAIHZv aWQgaWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCiAJCXRpbWVy X2RlbGV0ZShzcGluLT50aW1lcik7CiAKIAlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7Ci0JZ2Vt X211bm1hcChzcGluLT5iYXRjaCwgQkFUQ0hfU0laRSk7CisJZ2VtX211bm1hcCgodm9pZCAqKSgo dW5zaWduZWQgbG9uZylzcGluLT5iYXRjaCAmICh+NDA5NVVMKSksCisJCSAgIEJBVENIX1NJWkUp OworCisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJZ2VtX211bm1hcChzcGluLT5ydW5uaW5nLCA0 MDk2KTsKKwkJZ2VtX2Nsb3NlKGZkLCBzcGluLT5wb2xsX2hhbmRsZSk7CisJfQogCiAJZ2VtX2Ns b3NlKGZkLCBzcGluLT5oYW5kbGUpOwogCmRpZmYgLS1naXQgYS9saWIvaWd0X2R1bW15bG9hZC5o IGIvbGliL2lndF9kdW1teWxvYWQuaAppbmRleCA0MTAzZTRhYjllMzYuLjMxMDM5MzVhMzA5YiAx MDA2NDQKLS0tIGEvbGliL2lndF9kdW1teWxvYWQuaAorKysgYi9saWIvaWd0X2R1bW15bG9hZC5o CkBAIC0zNiw2ICszNiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBpZ3Rfc3BpbiB7CiAJc3RydWN0IGln dF9saXN0IGxpbms7CiAJdWludDMyX3QgKmJhdGNoOwogCWludCBvdXRfZmVuY2U7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOworCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwl1aW50MzJfdCBwb2xsX2hhbmRsZTsKKwlib29sICpydW5u aW5nOwogfSBpZ3Rfc3Bpbl90OwogCiBpZ3Rfc3Bpbl90ICpfX2lndF9zcGluX2JhdGNoX25ldyhp bnQgZmQsCkBAIC01NSw2ICs1OSwxMyBAQCBpZ3Rfc3Bpbl90ICppZ3Rfc3Bpbl9iYXRjaF9uZXdf ZmVuY2UoaW50IGZkLAogCQkJCSAgICAgdWludDMyX3QgY3R4LAogCQkJCSAgICAgdW5zaWduZWQg ZW5naW5lKTsKIAoraWd0X3NwaW5fdCAqX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChpbnQgZmQs CisJCQkJICAgICAgIHVpbnQzMl90IGN0eCwKKwkJCQkgICAgICAgdW5zaWduZWQgZW5naW5lKTsK K2lndF9zcGluX3QgKmlndF9zcGluX2JhdGNoX25ld19wb2xsKGludCBmZCwKKwkJCQkgICAgdWlu dDMyX3QgY3R4LAorCQkJCSAgICB1bnNpZ25lZCBlbmdpbmUpOworCiB2b2lkIGlndF9zcGluX2Jh dGNoX3NldF90aW1lb3V0KGlndF9zcGluX3QgKnNwaW4sIGludDY0X3QgbnMpOwogdm9pZCBpZ3Rf c3Bpbl9iYXRjaF9lbmQoaWd0X3NwaW5fdCAqc3Bpbik7CiB2b2lkIGlndF9zcGluX2JhdGNoX2Zy ZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZ3QuYyBi L2xpYi9pZ3RfZ3QuYwppbmRleCAwMWFlYmM2NzA4NjIuLjQ1NjlmZDM2YmQ4NSAxMDA2NDQKLS0t IGEvbGliL2lndF9ndC5jCisrKyBiL2xpYi9pZ3RfZ3QuYwpAQCAtNjA5LDcgKzYwOSw3IEBAIGJv b2wgZ2VtX2Nhbl9zdG9yZV9kd29yZChpbnQgZmQsIHVuc2lnbmVkIGludCBlbmdpbmUpCiAJaWYg KGdlbiA9PSAzICYmIChpbmZvLT5pc19ncmFudHNkYWxlIHx8IGluZm8tPmlzX2FsdmlzbykpCiAJ CXJldHVybiBmYWxzZTsgLyogb25seSBzdXBwb3J0cyBwaHlzaWNhbCBhZGRyZXNzZXMgKi8KIAot CWlmIChnZW4gPT0gNiAmJiAoZW5naW5lICYgfigzPDwxMykpID09IEk5MTVfRVhFQ19CU0QpCisJ aWYgKGdlbiA9PSA2ICYmICgoZW5naW5lICYgMHgzZikgPT0gSTkxNV9FWEVDX0JTRCkpCiAJCXJl dHVybiBmYWxzZTsgLyoga2lsbHMgdGhlIG1hY2hpbmUhICovCiAKIAlpZiAoaW5mby0+aXNfYnJv YWR3YXRlcikKZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5jIGIvbGliL2lvY3RsX3dy YXBwZXJzLmMKaW5kZXggODc0OGNmY2ZjMDRmLi40ZTFhMDhiZjA2YjQgMTAwNjQ0Ci0tLSBhL2xp Yi9pb2N0bF93cmFwcGVycy5jCisrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5jCkBAIC0xOTgsNyAr MTk4LDcgQEAgdm9pZCBnZW1fc2V0X3RpbGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWlu dDMyX3QgdGlsaW5nLCB1aW50MzJfdCBzdHJpZGUpCiAJaWd0X2Fzc2VydChfX2dlbV9zZXRfdGls aW5nKGZkLCBoYW5kbGUsIHRpbGluZywgc3RyaWRlKSA9PSAwKTsKIH0KIAotc3RhdGljIGludCBf X2dlbV9zZXRfY2FjaGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgY2FjaGlu ZykKK2ludCBfX2dlbV9zZXRfY2FjaGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMy X3QgY2FjaGluZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NhY2hpbmcgYXJnOwogCWludCBl cnI7CmRpZmYgLS1naXQgYS9saWIvaW9jdGxfd3JhcHBlcnMuaCBiL2xpYi9pb2N0bF93cmFwcGVy cy5oCmluZGV4IDEzZmJlM2MxMDNjMC4uYjk2NmY3MmM5MGE4IDEwMDY0NAotLS0gYS9saWIvaW9j dGxfd3JhcHBlcnMuaAorKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuaApAQCAtNjEsNiArNjEsNyBA QCBib29sIGdlbV9nZXRfdGlsaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCAq dGlsaW5nLCB1aW50MzJfdCAqc3dpenpsZQogdm9pZCBnZW1fc2V0X3RpbGluZyhpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSwgdWludDMyX3QgdGlsaW5nLCB1aW50MzJfdCBzdHJpZGUpOwogaW50IF9f Z2VtX3NldF90aWxpbmcoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHRpbGluZywg dWludDMyX3Qgc3RyaWRlKTsKIAoraW50IF9fZ2VtX3NldF9jYWNoaW5nKGludCBmZCwgdWludDMy X3QgaGFuZGxlLCB1aW50MzJfdCBjYWNoaW5nKTsKIHZvaWQgZ2VtX3NldF9jYWNoaW5nKGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBjYWNoaW5nKTsKIHVpbnQzMl90IGdlbV9nZXRf Y2FjaGluZyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSk7CiB1aW50MzJfdCBnZW1fZmxpbmsoaW50 IGZkLCB1aW50MzJfdCBoYW5kbGUpOwotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK