From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: [PATCH libdrm v3] tests/modetest: Add atomic support Date: Wed, 25 Jul 2018 16:00:16 +0200 Message-ID: <20180725140016.12921-1-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id C881F6E6C8 for ; Wed, 25 Jul 2018 14:00:23 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id h14-v6so7511273wrw.13 for ; Wed, 25 Jul 2018 07:00:23 -0700 (PDT) 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, eric.engestrom@intel.com, robclark@freedesktop.org, daniels@collabora.com, philippe.cornu@st.com, emil.l.velikov@gmail.com List-Id: dri-devel@lists.freedesktop.org SWYgIi1hIiBvcHRpb24gaXMgc2V0IHRoaXMgbWFrZSBtb2RldGVzdCB1c2UgYXRvbWljIEFQSSBp bnN0ZWFkCm9mIGxlZ2FjeSBBUEkuCgpUZXN0IHRoZSBmcmFtZSByYXRlICgiLXYiKSBpdCBkb2Vz IGEgbG9vcCBhbmQgc3dhcCBiZXR3ZWVuIHR3bwpmcmFtZWJ1ZmZlciBmb3IgZWFjaCBhY3RpdmUg cGxhbmVzLgoKU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWdu YXJkQGxpbmFyby5vcmc+Ci0tLQoKdmVyc2lvbiAzOgotIG1lcmdlIGF0b21pYyBjb2RlIGludG8g bW9kZXRlc3QgaXRzZWxmCi0gZG8gbm90IGNoYW5nZSBidWlsZCBzeXN0ZW1zCgp2ZXJzaW9uIDIg OgotIG1ha2UgbW9kZXRlc3RfYXRvbWljIGNvbXBpbGUgd2l0aCBtZXNvbiBhbmQgQW5kcm9pZAoK dmVyc2lvbiAxOgotIGFkZCBkZWRpY2F0ZWQgbW9kZXRlc3RfYXRvbWljIHRvb2wgdG8gdGVzdCBh dG9taWMgQVBJCgogdGVzdHMvbW9kZXRlc3QvbW9kZXRlc3QuYyB8IDM0OSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzIxIGlu c2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL21vZGV0ZXN0 L21vZGV0ZXN0LmMgYi90ZXN0cy9tb2RldGVzdC9tb2RldGVzdC5jCmluZGV4IDYyOTU3ZDg0Li45 NzVkY2JjZCAxMDA2NDQKLS0tIGEvdGVzdHMvbW9kZXRlc3QvbW9kZXRlc3QuYworKysgYi90ZXN0 cy9tb2RldGVzdC9tb2RldGVzdC5jCkBAIC0xMTksNiArMTE5LDkgQEAgc3RydWN0IGRldmljZSB7 CiAJCXN0cnVjdCBibyAqYm87CiAJCXN0cnVjdCBibyAqY3Vyc29yX2JvOwogCX0gbW9kZTsKKwor CWludCB1c2VfYXRvbWljOworCWRybU1vZGVBdG9taWNSZXEgKnJlcTsKIH07CiAKIHN0YXRpYyBp bmxpbmUgaW50NjRfdCBVNjQySTY0KHVpbnQ2NF90IHZhbCkKQEAgLTgwNSw3ICs4MDgsOSBAQCBz dHJ1Y3QgcGxhbmVfYXJnIHsKIAl1aW50MzJfdCB3LCBoOwogCWRvdWJsZSBzY2FsZTsKIAl1bnNp Z25lZCBpbnQgZmJfaWQ7CisJdW5zaWduZWQgaW50IG9sZF9mYl9pZDsKIAlzdHJ1Y3QgYm8gKmJv OworCXN0cnVjdCBibyAqb2xkX2JvOwogCWNoYXIgZm9ybWF0X3N0cls1XTsgLyogbmVlZCB0byBs ZWF2ZSByb29tIGZvciB0ZXJtaW5hdGluZyBcMCAqLwogCXVuc2lnbmVkIGludCBmb3VyY2M7CiB9 OwpAQCAtOTk5LDggKzEwMDQsMTIgQEAgc3RhdGljIHZvaWQgc2V0X3Byb3BlcnR5KHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IHByb3BlcnR5X2FyZyAqcCkKIAogCXAtPnByb3BfaWQgPSBwcm9w cy0+cHJvcHNbaV07CiAKLQlyZXQgPSBkcm1Nb2RlT2JqZWN0U2V0UHJvcGVydHkoZGV2LT5mZCwg cC0+b2JqX2lkLCBwLT5vYmpfdHlwZSwKLQkJCQkgICAgICAgcC0+cHJvcF9pZCwgcC0+dmFsdWUp OworCWlmICghZGV2LT51c2VfYXRvbWljKQorCQlyZXQgPSBkcm1Nb2RlT2JqZWN0U2V0UHJvcGVy dHkoZGV2LT5mZCwgcC0+b2JqX2lkLCBwLT5vYmpfdHlwZSwKKwkJCQkJCQkJCSAgIHAtPnByb3Bf aWQsIHAtPnZhbHVlKTsKKwllbHNlCisJCXJldCA9IGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShk ZXYtPnJlcSwgcC0+b2JqX2lkLCBwLT5wcm9wX2lkLCBwLT52YWx1ZSk7CisKIAlpZiAocmV0IDwg MCkKIAkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gc2V0ICVzICVpIHByb3BlcnR5ICVzIHRv ICUiIFBSSXU2NCAiOiAlc1xuIiwKIAkJCW9ial90eXBlLCBwLT5vYmpfaWQsIHAtPm5hbWUsIHAt PnZhbHVlLCBzdHJlcnJvcihlcnJubykpOwpAQCAtMTA0OSw2ICsxMDU4LDk0IEBAIHN0YXRpYyBi b29sIGZvcm1hdF9zdXBwb3J0KGNvbnN0IGRybU1vZGVQbGFuZVB0ciBvdnIsIHVpbnQzMl90IGZt dCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lkIGFkZF9wcm9wZXJ0eShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHVpbnQzMl90IG9ial9pZCwKKwkJCSAgICAgICBjb25zdCBjaGFyICpuYW1l LCB1aW50NjRfdCB2YWx1ZSkKK3sKKwlzdHJ1Y3QgcHJvcGVydHlfYXJnIHA7CisKKwlwLm9ial9p ZCA9IG9ial9pZDsKKwlzdHJjcHkocC5uYW1lLCBuYW1lKTsKKwlwLnZhbHVlID0gdmFsdWU7CisK KwlzZXRfcHJvcGVydHkoZGV2LCAmcCk7Cit9CisKK3N0YXRpYyBpbnQgYXRvbWljX3NldF9wbGFu ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGFuZV9hcmcgKnAsCisJCQkJCQkJaW50IHBh dHRlcm4sIGJvb2wgdXBkYXRlKQoreworCXVpbnQzMl90IGhhbmRsZXNbNF0gPSB7MH0sIHBpdGNo ZXNbNF0gPSB7MH0sIG9mZnNldHNbNF0gPSB7MH07CisJc3RydWN0IGJvICpwbGFuZV9ibzsKKwlp bnQgY3J0Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oOworCXN0cnVjdCBjcnRjICpjcnRjID0g TlVMTDsKKwl1bnNpZ25lZCBpbnQgaTsKKwl1bnNpZ25lZCBpbnQgb2xkX2ZiX2lkOworCisJLyog RmluZCBhbiB1bnVzZWQgcGxhbmUgd2hpY2ggY2FuIGJlIGNvbm5lY3RlZCB0byBvdXIgQ1JUQy4g RmluZCB0aGUKKwkgKiBDUlRDIGluZGV4IGZpcnN0LCB0aGVuIGl0ZXJhdGUgb3ZlciBhdmFpbGFi bGUgcGxhbmVzLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCAodW5zaWduZWQgaW50KWRldi0+cmVz b3VyY2VzLT5yZXMtPmNvdW50X2NydGNzOyBpKyspIHsKKwkJaWYgKHAtPmNydGNfaWQgPT0gZGV2 LT5yZXNvdXJjZXMtPnJlcy0+Y3J0Y3NbaV0pIHsKKwkJCWNydGMgPSAmZGV2LT5yZXNvdXJjZXMt PmNydGNzW2ldOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoIWNydGMpIHsKKwkJZnByaW50 ZihzdGRlcnIsICJDUlRDICV1IG5vdCBmb3VuZFxuIiwgcC0+Y3J0Y19pZCk7CisJCXJldHVybiAt MTsKKwl9CisKKwlpZiAoIXVwZGF0ZSkKKwkJZnByaW50ZihzdGRlcnIsICJ0ZXN0aW5nICVkeCVk QCVzIG9uIHBsYW5lICV1LCBjcnRjICV1XG4iLAorCQkJcC0+dywgcC0+aCwgcC0+Zm9ybWF0X3N0 ciwgcC0+cGxhbmVfaWQsIHAtPmNydGNfaWQpOworCisJcGxhbmVfYm8gPSBwLT5vbGRfYm87CisJ cC0+b2xkX2JvID0gcC0+Ym87CisKKwlpZiAoIXBsYW5lX2JvKSB7CisJCXBsYW5lX2JvID0gYm9f Y3JlYXRlKGRldi0+ZmQsIHAtPmZvdXJjYywgcC0+dywgcC0+aCwKKwkJCQkgICAgIGhhbmRsZXMs IHBpdGNoZXMsIG9mZnNldHMsIHBhdHRlcm4pOworCisJCWlmIChwbGFuZV9ibyA9PSBOVUxMKQor CQkJcmV0dXJuIC0xOworCisJCWlmIChkcm1Nb2RlQWRkRkIyKGRldi0+ZmQsIHAtPncsIHAtPmgs IHAtPmZvdXJjYywKKwkJCWhhbmRsZXMsIHBpdGNoZXMsIG9mZnNldHMsICZwLT5mYl9pZCwgMCkp IHsKKwkJCWZwcmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIGFkZCBmYjogJXNcbiIsIHN0cmVycm9y KGVycm5vKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlwLT5ibyA9IHBsYW5lX2JvOwor CisJb2xkX2ZiX2lkID0gcC0+ZmJfaWQ7CisJcC0+b2xkX2ZiX2lkID0gb2xkX2ZiX2lkOworCisJ Y3J0Y193ID0gcC0+dyAqIHAtPnNjYWxlOworCWNydGNfaCA9IHAtPmggKiBwLT5zY2FsZTsKKwlp ZiAoIXAtPmhhc19wb3NpdGlvbikgeworCQkvKiBEZWZhdWx0IHRvIHRoZSBtaWRkbGUgb2YgdGhl IHNjcmVlbiAqLworCQljcnRjX3ggPSAoY3J0Yy0+bW9kZS0+aGRpc3BsYXkgLSBjcnRjX3cpIC8g MjsKKwkJY3J0Y195ID0gKGNydGMtPm1vZGUtPnZkaXNwbGF5IC0gY3J0Y19oKSAvIDI7CisJfSBl bHNlIHsKKwkJY3J0Y194ID0gcC0+eDsKKwkJY3J0Y195ID0gcC0+eTsKKwl9CisKKwlhZGRfcHJv cGVydHkoZGV2LCBwLT5wbGFuZV9pZCwgIkZCX0lEIiwgcC0+ZmJfaWQpOworCWFkZF9wcm9wZXJ0 eShkZXYsIHAtPnBsYW5lX2lkLCAiQ1JUQ19JRCIsIHAtPmNydGNfaWQpOworCWFkZF9wcm9wZXJ0 eShkZXYsIHAtPnBsYW5lX2lkLCAiU1JDX1giLCAwKTsKKwlhZGRfcHJvcGVydHkoZGV2LCBwLT5w bGFuZV9pZCwgIlNSQ19ZIiwgMCk7CisJYWRkX3Byb3BlcnR5KGRldiwgcC0+cGxhbmVfaWQsICJT UkNfVyIsIHAtPncgPDwgMTYpOworCWFkZF9wcm9wZXJ0eShkZXYsIHAtPnBsYW5lX2lkLCAiU1JD X0giLCBwLT5oIDw8IDE2KTsKKwlhZGRfcHJvcGVydHkoZGV2LCBwLT5wbGFuZV9pZCwgIkNSVENf WCIsIGNydGNfeCk7CisJYWRkX3Byb3BlcnR5KGRldiwgcC0+cGxhbmVfaWQsICJDUlRDX1kiLCBj cnRjX3kpOworCWFkZF9wcm9wZXJ0eShkZXYsIHAtPnBsYW5lX2lkLCAiQ1JUQ19XIiwgY3J0Y193 KTsKKwlhZGRfcHJvcGVydHkoZGV2LCBwLT5wbGFuZV9pZCwgIkNSVENfSCIsIGNydGNfaCk7CisK KwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBzZXRfcGxhbmUoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgcGxhbmVfYXJnICpwKQogewogCWRybU1vZGVQbGFuZSAqb3ZyOwpAQCAtMTE0NSw2 ICsxMjQyLDY0IEBAIHN0YXRpYyBpbnQgc2V0X3BsYW5lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IHBsYW5lX2FyZyAqcCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgYXRvbWljX3Nl dF9wbGFuZXMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhbmVfYXJnICpwLAorCQkJICAg ICAgdW5zaWduZWQgaW50IGNvdW50LCBib29sIHVwZGF0ZSkKK3sKKwl1bnNpZ25lZCBpbnQgaSwg cGF0dGVybiA9IFVUSUxfUEFUVEVSTl9TTVBURTsKKworCS8qIHNldCB1cCBwbGFuZXMgKi8KKwlm b3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCQlpZiAoaSA+IDApCisJCQlwYXR0ZXJuID0g VVRJTF9QQVRURVJOX1RJTEVTOworCisJCWlmIChhdG9taWNfc2V0X3BsYW5lKGRldiwgJnBbaV0s IHBhdHRlcm4sIHVwZGF0ZSkpCisJCQlyZXR1cm47CisJfQorfQorCitzdGF0aWMgdm9pZCBhdG9t aWNfY2xlYXJfcGxhbmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYW5lX2FyZyAqcCwg dW5zaWduZWQgaW50IGNvdW50KQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsg aSA8IGNvdW50OyBpKyspIHsKKwkJYWRkX3Byb3BlcnR5KGRldiwgcFtpXS5wbGFuZV9pZCwgIkZC X0lEIiwgMCk7CisJCWFkZF9wcm9wZXJ0eShkZXYsIHBbaV0ucGxhbmVfaWQsICJDUlRDX0lEIiwg MCk7CisJCWFkZF9wcm9wZXJ0eShkZXYsIHBbaV0ucGxhbmVfaWQsICJTUkNfWCIsIDApOworCQlh ZGRfcHJvcGVydHkoZGV2LCBwW2ldLnBsYW5lX2lkLCAiU1JDX1kiLCAwKTsKKwkJYWRkX3Byb3Bl cnR5KGRldiwgcFtpXS5wbGFuZV9pZCwgIlNSQ19XIiwgMCk7CisJCWFkZF9wcm9wZXJ0eShkZXYs IHBbaV0ucGxhbmVfaWQsICJTUkNfSCIsIDApOworCQlhZGRfcHJvcGVydHkoZGV2LCBwW2ldLnBs YW5lX2lkLCAiQ1JUQ19YIiwgMCk7CisJCWFkZF9wcm9wZXJ0eShkZXYsIHBbaV0ucGxhbmVfaWQs ICJDUlRDX1kiLCAwKTsKKwkJYWRkX3Byb3BlcnR5KGRldiwgcFtpXS5wbGFuZV9pZCwgIkNSVENf VyIsIDApOworCQlhZGRfcHJvcGVydHkoZGV2LCBwW2ldLnBsYW5lX2lkLCAiQ1JUQ19IIiwgMCk7 CisJfQorfQorCitzdGF0aWMgdm9pZCBhdG9taWNfY2xlYXJfRkIoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgcGxhbmVfYXJnICpwLCB1bnNpZ25lZCBpbnQgY291bnQpCit7CisJdW5zaWduZWQg aW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCQlpZiAocFtpXS5mYl9p ZCkgeworCQkJZHJtTW9kZVJtRkIoZGV2LT5mZCwgcFtpXS5mYl9pZCk7CisJCQlwW2ldLmZiX2lk ID0gMDsKKwkJfQorCQlpZiAocFtpXS5vbGRfZmJfaWQpIHsKKwkJCWRybU1vZGVSbUZCKGRldi0+ ZmQsIHBbaV0ub2xkX2ZiX2lkKTsKKwkJCXBbaV0ub2xkX2ZiX2lkID0gMDsKKwkJfQorCQlpZiAo cFtpXS5ibykgeworCQkJYm9fZGVzdHJveShwW2ldLmJvKTsKKwkJCXBbaV0uYm8gPSBOVUxMOwor CQl9CisJCWlmIChwW2ldLm9sZF9ibykgeworCQkJYm9fZGVzdHJveShwW2ldLm9sZF9ibyk7CisJ CQlwW2ldLm9sZF9ibyA9IE5VTEw7CisJCX0KKworCX0KK30KKwogc3RhdGljIHZvaWQgY2xlYXJf cGxhbmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYW5lX2FyZyAqcCwgdW5zaWduZWQg aW50IGNvdW50KQogewogCXVuc2lnbmVkIGludCBpOwpAQCAtMTE1Nyw2ICsxMzEyLDU5IEBAIHN0 YXRpYyB2b2lkIGNsZWFyX3BsYW5lcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGFuZV9h cmcgKnAsIHVuc2lnbmVkIGludCBjCiAJfQogfQogCitzdGF0aWMgdm9pZCBhdG9taWNfc2V0X21v ZGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGlwZV9hcmcgKnBpcGVzLCB1bnNpZ25lZCBp bnQgY291bnQpCit7CisJdW5zaWduZWQgaW50IGk7CisJdW5zaWduZWQgaW50IGo7CisJaW50IHJl dDsKKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXN0cnVjdCBwaXBlX2FyZyAq cGlwZSA9ICZwaXBlc1tpXTsKKworCQlyZXQgPSBwaXBlX2ZpbmRfY3J0Y19hbmRfbW9kZShkZXYs IHBpcGUpOworCQlpZiAocmV0IDwgMCkKKwkJCWNvbnRpbnVlOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBjb3VudDsgaSsrKSB7CisJCXN0cnVjdCBwaXBlX2FyZyAqcGlwZSA9ICZwaXBlc1tpXTsK KwkJdWludDMyX3QgYmxvYl9pZDsKKworCQlpZiAocGlwZS0+bW9kZSA9PSBOVUxMKQorCQkJY29u dGludWU7CisKKwkJcHJpbnRmKCJzZXR0aW5nIG1vZGUgJXMtJWRIekAlcyBvbiBjb25uZWN0b3Jz ICIsCisJCSAgICAgICBwaXBlLT5tb2RlX3N0ciwgcGlwZS0+bW9kZS0+dnJlZnJlc2gsIHBpcGUt PmZvcm1hdF9zdHIpOworCQlmb3IgKGogPSAwOyBqIDwgcGlwZS0+bnVtX2NvbnM7ICsraikgewor CQkJcHJpbnRmKCIlcywgIiwgcGlwZS0+Y29uc1tqXSk7CisJCQlhZGRfcHJvcGVydHkoZGV2LCBw aXBlLT5jb25faWRzW2pdLCAiQ1JUQ19JRCIsIHBpcGUtPmNydGMtPmNydGMtPmNydGNfaWQpOwor CQl9CisJCXByaW50ZigiY3J0YyAlZFxuIiwgcGlwZS0+Y3J0Yy0+Y3J0Yy0+Y3J0Y19pZCk7CisK KwkJZHJtTW9kZUNyZWF0ZVByb3BlcnR5QmxvYihkZXYtPmZkLCBwaXBlLT5tb2RlLCBzaXplb2Yo KnBpcGUtPm1vZGUpLCAmYmxvYl9pZCk7CisJCWFkZF9wcm9wZXJ0eShkZXYsIHBpcGUtPmNydGMt PmNydGMtPmNydGNfaWQsICJNT0RFX0lEIiwgYmxvYl9pZCk7CisJCWFkZF9wcm9wZXJ0eShkZXYs IHBpcGUtPmNydGMtPmNydGMtPmNydGNfaWQsICJBQ1RJVkUiLCAxKTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIGF0b21pY19jbGVhcl9tb2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBpcGVf YXJnICpwaXBlcywgdW5zaWduZWQgaW50IGNvdW50KQoreworCXVuc2lnbmVkIGludCBpOworCXVu c2lnbmVkIGludCBqOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJc3RydWN0 IHBpcGVfYXJnICpwaXBlID0gJnBpcGVzW2ldOworCisJCWlmIChwaXBlLT5tb2RlID09IE5VTEwp CisJCQljb250aW51ZTsKKworCQlmb3IgKGogPSAwOyBqIDwgcGlwZS0+bnVtX2NvbnM7ICsraikK KwkJCWFkZF9wcm9wZXJ0eShkZXYsIHBpcGUtPmNvbl9pZHNbal0sICJDUlRDX0lEIiwwKTsKKwor CQlhZGRfcHJvcGVydHkoZGV2LCBwaXBlLT5jcnRjLT5jcnRjLT5jcnRjX2lkLCAiTU9ERV9JRCIs IDApOworCQlhZGRfcHJvcGVydHkoZGV2LCBwaXBlLT5jcnRjLT5jcnRjLT5jcnRjX2lkLCAiQUNU SVZFIiwgMCk7CisJfQorfQogCiBzdGF0aWMgdm9pZCBzZXRfbW9kZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBwaXBlX2FyZyAqcGlwZXMsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKQEAgLTE1 MzIsNyArMTc0MCw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfcHJvcGVydHkoc3RydWN0IHByb3BlcnR5 X2FyZyAqcCwgY29uc3QgY2hhciAqYXJnKQogCiBzdGF0aWMgdm9pZCB1c2FnZShjaGFyICpuYW1l KQogewotCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIFstY0RkZWZNUHBzQ3Z3XVxuIiwgbmFt ZSk7CisJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgWy1hY0RkZWZNUHBzQ3Z3XVxuIiwgbmFt ZSk7CiAKIAlmcHJpbnRmKHN0ZGVyciwgIlxuIFF1ZXJ5IG9wdGlvbnM6XG5cbiIpOwogCWZwcmlu dGYoc3RkZXJyLCAiXHQtY1x0bGlzdCBjb25uZWN0b3JzXG4iKTsKQEAgLTE1NDYsNiArMTc1NCw3 IEBAIHN0YXRpYyB2b2lkIHVzYWdlKGNoYXIgKm5hbWUpCiAJZnByaW50ZihzdGRlcnIsICJcdC1D XHR0ZXN0IGh3IGN1cnNvclxuIik7CiAJZnByaW50ZihzdGRlcnIsICJcdC12XHR0ZXN0IHZzeW5j ZWQgcGFnZSBmbGlwcGluZ1xuIik7CiAJZnByaW50ZihzdGRlcnIsICJcdC13IDxvYmpfaWQ+Ojxw cm9wX25hbWU+Ojx2YWx1ZT5cdHNldCBwcm9wZXJ0eVxuIik7CisJZnByaW50ZihzdGRlcnIsICJc dC1hIFx0dXNlIGF0b21pYyBBUElcbiIpOwogCiAJZnByaW50ZihzdGRlcnIsICJcbiBHZW5lcmlj IG9wdGlvbnM6XG5cbiIpOwogCWZwcmludGYoc3RkZXJyLCAiXHQtZFx0ZHJvcCBtYXN0ZXIgYWZ0 ZXIgbW9kZSBzZXRcbiIpOwpAQCAtMTYwOSw3ICsxODE4LDcgQEAgc3RhdGljIGludCBwaXBlX3Jl c29sdmVfY29ubmVjdG9ycyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwaXBlX2FyZyAqcGlw ZSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgb3B0c3RyW10gPSAiY2REOmVmTTpQOnBz OkN2dzoiOworc3RhdGljIGNoYXIgb3B0c3RyW10gPSAiYWNkRDplZk06UDpwczpDdnc6IjsKIAog aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewpAQCAtMTYyMCw2ICsxODI5LDcgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWludCBkcm9wX21hc3RlciA9IDA7CiAJ aW50IHRlc3RfdnN5bmMgPSAwOwogCWludCB0ZXN0X2N1cnNvciA9IDA7CisJaW50IHVzZV9hdG9t aWMgPSAwOwogCWNoYXIgKmRldmljZSA9IE5VTEw7CiAJY2hhciAqbW9kdWxlID0gTlVMTDsKIAl1 bnNpZ25lZCBpbnQgaTsKQEAgLTE2MzgsNiArMTg0OCw5IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJYXJncysrOwogCiAJCXN3aXRjaCAoYykgeworCQljYXNlICdhJzoKKwkJ CXVzZV9hdG9taWMgPSAxOworCQkJYnJlYWs7CiAJCWNhc2UgJ2MnOgogCQkJY29ubmVjdG9ycyA9 IDE7CiAJCQlicmVhazsKQEAgLTE3MTcsMTMgKzE5MzAsMjIgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCQl9CiAJfQogCi0JaWYgKCFhcmdzKQorCWlmICghYXJncyB8fCAoYXJn cyA9PSAxICYmIHVzZV9hdG9taWMpKQogCQllbmNvZGVycyA9IGNvbm5lY3RvcnMgPSBjcnRjcyA9 IHBsYW5lcyA9IGZyYW1lYnVmZmVycyA9IDE7CiAKIAlkZXYuZmQgPSB1dGlsX29wZW4oZGV2aWNl LCBtb2R1bGUpOwogCWlmIChkZXYuZmQgPCAwKQogCQlyZXR1cm4gLTE7CiAKKwlyZXQgPSBkcm1T ZXRDbGllbnRDYXAoZGV2LmZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMsIDEpOworCWlmIChyZXQg JiYgdXNlX2F0b21pYykgeworCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGF0b21pYyBtb2Rlc2V0dGlu ZyBzdXBwb3J0OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZHJtQ2xvc2UoZGV2LmZkKTsK KwkJcmV0dXJuIC0xOworCX0KKworCWRldi51c2VfYXRvbWljID0gdXNlX2F0b21pYzsKKwogCWlm ICh0ZXN0X3ZzeW5jICYmICFwYWdlX2ZsaXBwaW5nX3N1cHBvcnRlZCgpKSB7CiAJCWZwcmludGYo c3RkZXJyLCAicGFnZSBmbGlwcGluZyBub3Qgc3VwcG9ydGVkIGJ5IGRybS5cbiIpOwogCQlyZXR1 cm4gLTE7CkBAIC0xNzY0LDQwICsxOTg2LDExMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJZm9yIChpID0gMDsgaSA8IHByb3BfY291bnQ7ICsraSkKIAkJc2V0X3Byb3BlcnR5 KCZkZXYsICZwcm9wX2FyZ3NbaV0pOwogCi0JaWYgKGNvdW50IHx8IHBsYW5lX2NvdW50KSB7Ci0J CXVpbnQ2NF90IGNhcCA9IDA7CisJaWYgKGRldi51c2VfYXRvbWljKSB7CisJCWRldi5yZXEgPSBk cm1Nb2RlQXRvbWljQWxsb2MoKTsKIAotCQlyZXQgPSBkcm1HZXRDYXAoZGV2LmZkLCBEUk1fQ0FQ X0RVTUJfQlVGRkVSLCAmY2FwKTsKLQkJaWYgKHJldCB8fCBjYXAgPT0gMCkgewotCQkJZnByaW50 ZihzdGRlcnIsICJkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHRoZSBkdW1iIGJ1ZmZlciBBUElcbiIp OwotCQkJcmV0dXJuIDE7CisJCWlmIChjb3VudCAmJiBwbGFuZV9jb3VudCkgeworCQkJdWludDY0 X3QgY2FwID0gMDsKKworCQkJcmV0ID0gZHJtR2V0Q2FwKGRldi5mZCwgRFJNX0NBUF9EVU1CX0JV RkZFUiwgJmNhcCk7CisJCQlpZiAocmV0IHx8IGNhcCA9PSAwKSB7CisJCQkJZnByaW50ZihzdGRl cnIsICJkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHRoZSBkdW1iIGJ1ZmZlciBBUElcbiIpOworCQkJ CXJldHVybiAxOworCQkJfQorCisJCQlhdG9taWNfc2V0X21vZGUoJmRldiwgcGlwZV9hcmdzLCBj b3VudCk7CisJCQlhdG9taWNfc2V0X3BsYW5lcygmZGV2LCBwbGFuZV9hcmdzLCBwbGFuZV9jb3Vu dCwgZmFsc2UpOworCisJCQlyZXQgPSBkcm1Nb2RlQXRvbWljQ29tbWl0KGRldi5mZCwgZGV2LnJl cSwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOworCQkJaWYgKHJldCkgewor CQkJCWZwcmludGYoc3RkZXJyLCAiQXRvbWljIENvbW1pdCBmYWlsZWQgWzFdXG4iKTsKKwkJCQly ZXR1cm4gMTsKKwkJCX0KKworCQkJZ2V0dGltZW9mZGF5KCZwaXBlX2FyZ3MtPnN0YXJ0LCBOVUxM KTsKKwkJCXBpcGVfYXJncy0+c3dhcF9jb3VudCA9IDA7CisKKwkJCXdoaWxlICh0ZXN0X3ZzeW5j KSB7CisJCQkJZHJtTW9kZUF0b21pY0ZyZWUoZGV2LnJlcSk7CisJCQkJZGV2LnJlcSA9IGRybU1v ZGVBdG9taWNBbGxvYygpOworCQkJCWF0b21pY19zZXRfcGxhbmVzKCZkZXYsIHBsYW5lX2FyZ3Ms IHBsYW5lX2NvdW50LCB0cnVlKTsKKworCQkJCXJldCA9IGRybU1vZGVBdG9taWNDb21taXQoZGV2 LmZkLCBkZXYucmVxLCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7CisJCQkJ aWYgKHJldCkgeworCQkJCQlmcHJpbnRmKHN0ZGVyciwgIkF0b21pYyBDb21taXQgZmFpbGVkIFsy XVxuIik7CisJCQkJCXJldHVybiAxOworCQkJCX0KKworCQkJCXBpcGVfYXJncy0+c3dhcF9jb3Vu dCsrOworCQkJCWlmIChwaXBlX2FyZ3MtPnN3YXBfY291bnQgPT0gNjApIHsKKwkJCQkJc3RydWN0 IHRpbWV2YWwgZW5kOworCQkJCQlkb3VibGUgdDsKKworCQkJCQlnZXR0aW1lb2ZkYXkoJmVuZCwg TlVMTCk7CisJCQkJCXQgPSBlbmQudHZfc2VjICsgZW5kLnR2X3VzZWMgKiAxZS02IC0KKwkJCQkg ICAgKHBpcGVfYXJncy0+c3RhcnQudHZfc2VjICsgcGlwZV9hcmdzLT5zdGFydC50dl91c2VjICog MWUtNik7CisJCQkJCWZwcmludGYoc3RkZXJyLCAiZnJlcTogJS4wMmZIelxuIiwgcGlwZV9hcmdz LT5zd2FwX2NvdW50IC8gdCk7CisJCQkJCXBpcGVfYXJncy0+c3dhcF9jb3VudCA9IDA7CisJCQkJ CXBpcGVfYXJncy0+c3RhcnQgPSBlbmQ7CisJCQkJfQorCQkJfQorCisJCQlpZiAoZHJvcF9tYXN0 ZXIpCisJCQkJZHJtRHJvcE1hc3RlcihkZXYuZmQpOworCisJCQlnZXRjaGFyKCk7CisKKwkJCWRy bU1vZGVBdG9taWNGcmVlKGRldi5yZXEpOworCQkJZGV2LnJlcSA9IGRybU1vZGVBdG9taWNBbGxv YygpOworCisJCQlhdG9taWNfY2xlYXJfbW9kZSgmZGV2LCBwaXBlX2FyZ3MsIGNvdW50KTsKKwkJ CWF0b21pY19jbGVhcl9wbGFuZXMoJmRldiwgcGxhbmVfYXJncywgcGxhbmVfY291bnQpOworCQkJ cmV0ID0gZHJtTW9kZUF0b21pY0NvbW1pdChkZXYuZmQsIGRldi5yZXEsIERSTV9NT0RFX0FUT01J Q19BTExPV19NT0RFU0VULCBOVUxMKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlmcHJpbnRmKHN0ZGVy ciwgIkF0b21pYyBDb21taXQgZmFpbGVkXG4iKTsKKwkJCQlyZXR1cm4gMTsKKwkJCX0KKworCQkJ YXRvbWljX2NsZWFyX0ZCKCZkZXYsIHBsYW5lX2FyZ3MsIHBsYW5lX2NvdW50KTsKIAkJfQogCi0J CWlmIChjb3VudCkKLQkJCXNldF9tb2RlKCZkZXYsIHBpcGVfYXJncywgY291bnQpOworCQlkcm1N b2RlQXRvbWljRnJlZShkZXYucmVxKTsKKwl9IGVsc2UgeworCQlpZiAoY291bnQgfHwgcGxhbmVf Y291bnQpIHsKKwkJCXVpbnQ2NF90IGNhcCA9IDA7CiAKLQkJaWYgKHBsYW5lX2NvdW50KQotCQkJ c2V0X3BsYW5lcygmZGV2LCBwbGFuZV9hcmdzLCBwbGFuZV9jb3VudCk7CisJCQlyZXQgPSBkcm1H ZXRDYXAoZGV2LmZkLCBEUk1fQ0FQX0RVTUJfQlVGRkVSLCAmY2FwKTsKKwkJCWlmIChyZXQgfHwg Y2FwID09IDApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgImRyaXZlciBkb2Vzbid0IHN1cHBvcnQg dGhlIGR1bWIgYnVmZmVyIEFQSVxuIik7CisJCQkJcmV0dXJuIDE7CisJCQl9CisKKwkJCWlmIChj b3VudCkKKwkJCQlzZXRfbW9kZSgmZGV2LCBwaXBlX2FyZ3MsIGNvdW50KTsKIAotCQlpZiAodGVz dF9jdXJzb3IpCi0JCQlzZXRfY3Vyc29ycygmZGV2LCBwaXBlX2FyZ3MsIGNvdW50KTsKKwkJCWlm IChwbGFuZV9jb3VudCkKKwkJCQlzZXRfcGxhbmVzKCZkZXYsIHBsYW5lX2FyZ3MsIHBsYW5lX2Nv dW50KTsKIAotCQlpZiAodGVzdF92c3luYykKLQkJCXRlc3RfcGFnZV9mbGlwKCZkZXYsIHBpcGVf YXJncywgY291bnQpOworCQkJaWYgKHRlc3RfY3Vyc29yKQorCQkJCXNldF9jdXJzb3JzKCZkZXYs IHBpcGVfYXJncywgY291bnQpOwogCi0JCWlmIChkcm9wX21hc3RlcikKLQkJCWRybURyb3BNYXN0 ZXIoZGV2LmZkKTsKKwkJCWlmICh0ZXN0X3ZzeW5jKQorCQkJCXRlc3RfcGFnZV9mbGlwKCZkZXYs IHBpcGVfYXJncywgY291bnQpOwogCi0JCWdldGNoYXIoKTsKKwkJCWlmIChkcm9wX21hc3RlcikK KwkJCQlkcm1Ecm9wTWFzdGVyKGRldi5mZCk7CiAKLQkJaWYgKHRlc3RfY3Vyc29yKQotCQkJY2xl YXJfY3Vyc29ycygmZGV2KTsKKwkJCWdldGNoYXIoKTsKIAotCQlpZiAocGxhbmVfY291bnQpCi0J CQljbGVhcl9wbGFuZXMoJmRldiwgcGxhbmVfYXJncywgcGxhbmVfY291bnQpOworCQkJaWYgKHRl c3RfY3Vyc29yKQorCQkJCWNsZWFyX2N1cnNvcnMoJmRldik7CiAKLQkJaWYgKGNvdW50KQotCQkJ Y2xlYXJfbW9kZSgmZGV2KTsKKwkJCWlmIChwbGFuZV9jb3VudCkKKwkJCQljbGVhcl9wbGFuZXMo JmRldiwgcGxhbmVfYXJncywgcGxhbmVfY291bnQpOworCisJCQlpZiAoY291bnQpCisJCQkJY2xl YXJfbW9kZSgmZGV2KTsKKwkJfQogCX0KIAogCWZyZWVfcmVzb3VyY2VzKGRldi5yZXNvdXJjZXMp OwotLSAKMi4xNS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK