From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pawel Moll Subject: Re: [PATCH] virtio-mmio: Devices parameter parsing Date: Tue, 29 Nov 2011 17:36:30 +0000 Message-ID: <1322588190.3164.129.camel@hornet.cambridge.arm.com> References: <1321365185-2928-1-git-send-email-pawel.moll@arm.com> <87sjlooq3m.fsf@rustcorp.com.au> <1321467222.3137.417.camel@hornet.cambridge.arm.com> <87vcqe9ml9.fsf@rustcorp.com.au> <1321886688.3093.248.camel@hornet.cambridge.arm.com> <1321898210.3093.263.camel@hornet.cambridge.arm.com> <87fwhhx9is.fsf@rustcorp.com.au> <1322071732.3093.491.camel@hornet.cambridge.arm.com> <87zkfht7dp.fsf@rustcorp.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <87zkfht7dp.fsf@rustcorp.com.au> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Rusty Russell Cc: "linux-kernel@vger.kernel.org" , "virtualization@lists.linux-foundation.org" List-Id: virtualization@lists.linuxfoundation.org T24gTW9uLCAyMDExLTExLTI4IGF0IDAwOjMxICswMDAwLCBSdXN0eSBSdXNzZWxsIHdyb3RlOgo+ IE9mZiB0aGUgdG9wIG9mIG15IGhlYWQsIHRoaXMgbWFrZXMgbWUgdGhpbmsgb2YgdGhlIHdheSBp bml0Y2FsbHMgYXJlCj4gb3JkZXJlZC4gIFdlIGNvdWxkIHB1dCBhIHBhcmFtZXRlciBwYXJzaW5n IGluaXRjYWxsIGF0IHRoZSBzdGFydCBvZiBlYWNoCj4gaW5pdGNhbGwgbGV2ZWwgaW4gaW5jbHVk ZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oJ3MgSU5JVENBTExTIG1hY3JvLgo+IAo+IFRoZW4g d2Ugc3RlYWwgZm91ciBiaXRzIGZyb20gc3RydWN0IGtlcm5lbF9wYXJhbSdzIGZsYWdzIHRvIGlu ZGljYXRlIHRoZQo+IGxldmVsIG9mIHRoZSBpbml0Y2FsbCAoLTEgPT0gZXhpc3Rpbmcgb25lcywg b3RoZXJ3aXNlIE4gPT0gYmVmb3JlIGxldmVsCj4gTiBpbml0Y2FsbHMpLgoKWWVzLCB0aGlzIHdh cyBteSBpbml0aWFsIGlkZWEgYXMgd2VsbC4gVGhlIG9ubHkgcHJvYmxlbSBJIGZhY2VkIGlzIHRo ZQpmYWN0IHRoYXQgdGhlcmUgaXMgbm8gImJldHdlZW4gbGV2ZWxzIi4uLiBJdCdzIGVhc3kgdG8g YWRkIHBhcmFtZXRlcnMKcGFyc2luZyBfYXRfIGFueSBwYXJ0aWN1bGFyIGxldmVsLCBidXQgaGFy ZCB0byBkbyB0aGlzIF9hZnRlcl8gbGV2ZWwgQQphbmQgX2JlZm9yZV8gbGV2ZWwgQi4gVGhlIGlu aXRjYWxscyBzZWN0aW9uIHNpbXBseSBjb250YWlucyBhbGwgdGhlCmNhbGxzLCBvcmRlcmVkIGJ5 IHRoZSBsZXZlbCAtIHRoZSBvbmx5ICJzZXBhcmF0ZWQiIGxldmVsIGlzIHRoZSBwcmUtU01QCmVh cmx5IG9uZS4gQW5kIG9yZGVyIHdpdGhpbiBvbmUgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0aGUg bGluayBvcmRlciwKc28gSSBjYW4ndCBndWFyYW50ZWUgcGFyc2luZyB0aGUgcGFyYW1ldGVycyBh cyB0aGUgZmlyc3QgY2FsbCBvZiBhIGxldmVsCihub3IgYXMgdGhlIGxhc3QgY2FsbCBvZiB0aGUg cHJldmlvdXMgbGV2ZWwpLgoKSSd2ZSBjYW1lIHVwIHdpdGggYSBzaW1wbGUgcHJvdG90eXBlIChi ZWxvdywgb25seSByZWxldmFudCBmcmFnbWVudHMpLApkb2luZyBleGFjdGx5IHdoYXQgSSB3YW50 IGF0IHRoZSAibGF0ZSIgbGV2ZWwgKG1heWJlIHRoYXQncyBhbGwgd2UKYWN0dWFsbHkgbmVlZD8g Oy0pIE9mIGNvdXJzZSBhZGRpbmcgYWxsIG90aGVyIGxldmVscyBpcyBwb3NzaWJsZSwKcHJvYmFi bHkgc29tZSBjbGV2ZXIgImdlbmVyYWxpemF0aW9uIiB3aWxsIGJlIHVzZWZ1bC4gQW5kIG9mIGNv dXJzZSB0aGUKbGV2ZWwgd291bGQgYmUgc2ltcGx5IGEgbnVtYmVyIGluIHRoZSBmbGFncywgYnV0 IHdoYXQgdG8gZG8gd2l0aCAiX3N5bmMiCmxldmVscyAobGlrZSAiYXJjaF9pbml0Y2FsbF9zeW5j Iiwgd2hpY2ggaXMgIjNzIiBub3QganVzdCAiMyIpLgoKSWYgaXQgbWFrZXMgYW55IHNlbnNlIEkn bGwgY2Fycnkgb24sIGFueSBmZWVkYmFjayB3aWxsIGJlIHVzZWZ1bC4KCkNoZWVycyEKClBhd2XF ggoKLS0tCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jIGIvZHJpdmVy cy92aXJ0aW8vdmlydGlvX21taW8uYwppbmRleCA3MzE3ZGMyLi4yMmU2MTk2IDEwMDY0NAotLS0g YS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jCisrKyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRp b19tbWlvLmMKQEAgLTQ0Myw2ICs0ODksMTIyIEBAIHN0YXRpYyBpbnQgX19kZXZleGl0IHZpcnRp b19tbWlvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAKIAorLyogRGV2 aWNlcyBsaXN0IHBhcmFtZXRlciAqLworCisjaWYgZGVmaW5lZChDT05GSUdfVklSVElPX01NSU9f Q01ETElORV9ERVZJQ0VTKQorCitzdGF0aWMgc3RydWN0IGRldmljZSB2bV9jbWRsaW5lX3BhcmVu dCA9IHsKKwkuaW5pdF9uYW1lID0gInZpcnRpby1tbWlvLWNtZGxpbmUiLAorfTsKKworc3RhdGlj IGludCB2bV9jbWRsaW5lX3BhcmVudF9yZWdpc3RlcmVkOworc3RhdGljIGludCB2bV9jbWRsaW5l X2lkOworCitzdGF0aWMgaW50IHZtX2NtZGxpbmVfc2V0KGNvbnN0IGNoYXIgKmRldmljZSwKKwkJ Y29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCit7CisJaW50IGVycjsKKwlzdHJ1Y3QgcmVz b3VyY2UgcmVzb3VyY2VzWzJdID0ge307CisJY2hhciAqc3RyOworCWxvbmcgbG9uZyBpbnQgYmFz ZTsKKwlpbnQgcHJvY2Vzc2VkLCBjb25zdW1lZCA9IDA7CisJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldjsKKworCXJlc291cmNlc1swXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOworCXJlc291 cmNlc1sxXS5mbGFncyA9IElPUkVTT1VSQ0VfSVJROworCisJcmVzb3VyY2VzWzBdLmVuZCA9IG1l bXBhcnNlKGRldmljZSwgJnN0cikgLSAxOworCisJcHJvY2Vzc2VkID0gc3NjYW5mKHN0ciwgIkAl bGxpOiV1JW46JWQlbiIsCisJCQkmYmFzZSwgJnJlc291cmNlc1sxXS5zdGFydCwgJmNvbnN1bWVk LAorCQkJJnZtX2NtZGxpbmVfaWQsICZjb25zdW1lZCk7CisKKwlpZiAocHJvY2Vzc2VkIDwgMiB8 fCBwcm9jZXNzZWQgPiAzIHx8IHN0cltjb25zdW1lZF0pCisJCXJldHVybiAtRUlOVkFMOworCisJ cmVzb3VyY2VzWzBdLnN0YXJ0ID0gYmFzZTsKKwlyZXNvdXJjZXNbMF0uZW5kICs9IGJhc2U7CisJ cmVzb3VyY2VzWzFdLmVuZCA9IHJlc291cmNlc1sxXS5zdGFydDsKKworCWlmICghdm1fY21kbGlu ZV9wYXJlbnRfcmVnaXN0ZXJlZCkgeworCQllcnIgPSBkZXZpY2VfcmVnaXN0ZXIoJnZtX2NtZGxp bmVfcGFyZW50KTsKKwkJaWYgKGVycikgeworCQkJcHJfZXJyKCJGYWlsZWQgdG8gcmVnaXN0ZXIg cGFyZW50IGRldmljZSFcbiIpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCQl2bV9jbWRsaW5lX3Bh cmVudF9yZWdpc3RlcmVkID0gMTsKKwl9CisKKwlwcl9pbmZvKCJSZWdpc3RlcmluZyBkZXZpY2Ug dmlydGlvLW1taW8uJWQgYXQgMHglbGx4LTB4JWxseCwgSVJRICVkLlxuIiwKKwkJICAgICAgIHZt X2NtZGxpbmVfaWQrKywKKwkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpcmVzb3VyY2VzWzBd LnN0YXJ0LAorCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylyZXNvdXJjZXNbMF0uZW5kLAor CQkgICAgICAgKGludClyZXNvdXJjZXNbMV0uc3RhcnQpOworCisJcGRldiA9IHBsYXRmb3JtX2Rl dmljZV9yZWdpc3Rlcl9yZXNuZGF0YSgmdm1fY21kbGluZV9wYXJlbnQsCisJCQkidmlydGlvLW1t aW8iLCB2bV9jbWRsaW5lX2lkKyssCisJCQlyZXNvdXJjZXMsIEFSUkFZX1NJWkUocmVzb3VyY2Vz KSwgTlVMTCwgMCk7CisJaWYgKElTX0VSUihwZGV2KSkKKwkJcmV0dXJuIFBUUl9FUlIocGRldik7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2bV9jbWRsaW5lX2dldF9kZXZpY2Uoc3Ry dWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQoreworCWNoYXIgKmJ1ZmZlciA9IGRhdGE7CisJ dW5zaWduZWQgaW50IGxlbiA9IHN0cmxlbihidWZmZXIpOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKKworCXNucHJpbnRmKGJ1ZmZlciAr IGxlbiwgUEFHRV9TSVpFIC0gbGVuLCAiMHglbGx4QDB4JWxseDolbGx1OiVkXG4iLAorCQkJcGRl di0+cmVzb3VyY2VbMF0uZW5kIC0gcGRldi0+cmVzb3VyY2VbMF0uc3RhcnQgKyAxVUxMLAorCQkJ KHVuc2lnbmVkIGxvbmcgbG9uZylwZGV2LT5yZXNvdXJjZVswXS5zdGFydCwKKwkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpcGRldi0+cmVzb3VyY2VbMV0uc3RhcnQsCisJCQlwZGV2LT5pZCk7CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdm1fY21kbGluZV9nZXQoY2hhciAqYnVmZmVyLCBjb25z dCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcCkKK3sKKwlidWZmZXJbMF0gPSAnXDAnOworCWRldmlj ZV9mb3JfZWFjaF9jaGlsZCgmdm1fY21kbGluZV9wYXJlbnQsIGJ1ZmZlciwKKwkJCXZtX2NtZGxp bmVfZ2V0X2RldmljZSk7CisJcmV0dXJuIHN0cmxlbihidWZmZXIpICsgMTsKK30KKworc3RhdGlj IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIHZtX2NtZGxpbmVfcGFyYW1fb3BzID0geworCS5zZXQg PSB2bV9jbWRsaW5lX3NldCwKKwkuZ2V0ID0gdm1fY21kbGluZV9nZXQsCit9OworCittb2R1bGVf cGFyYW1fY2JfbGF0ZShkZXZpY2UsICZ2bV9jbWRsaW5lX3BhcmFtX29wcywgTlVMTCwgU19JUlVT Uik7CisKK3N0YXRpYyBpbnQgdm1fdW5yZWdpc3Rlcl9jbWRsaW5lX2RldmljZShzdHJ1Y3QgZGV2 aWNlICpkZXYsCisJCXZvaWQgKmRhdGEpCit7CisJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIo dG9fcGxhdGZvcm1fZGV2aWNlKGRldikpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IHZtX3VucmVnaXN0ZXJfY21kbGluZV9kZXZpY2VzKHZvaWQpCit7CisJaWYgKHZtX2NtZGxpbmVf cGFyZW50X3JlZ2lzdGVyZWQpIHsKKwkJZGV2aWNlX2Zvcl9lYWNoX2NoaWxkKCZ2bV9jbWRsaW5l X3BhcmVudCwgTlVMTCwKKwkJCQl2bV91bnJlZ2lzdGVyX2NtZGxpbmVfZGV2aWNlKTsKKwkJZGV2 aWNlX3VucmVnaXN0ZXIoJnZtX2NtZGxpbmVfcGFyZW50KTsKKwkJdm1fY21kbGluZV9wYXJlbnRf cmVnaXN0ZXJlZCA9IDA7CisJfQorfQorCisjZWxzZQorCitzdGF0aWMgdm9pZCB2aXJ0aW9fbW1p b191bnJlZ2lzdGVyX2NtZGxpbmVfZGV2aWNlcyh2b2lkKQoreworfQorCisjZW5kaWYKKwogLyog UGxhdGZvcm0gZHJpdmVyICovCiAKIHN0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHZpcnRpb19t bWlvX21hdGNoW10gPSB7CkBAIC00NjksNiArNjMxLDcgQEAgc3RhdGljIGludCBfX2luaXQgdmly dGlvX21taW9faW5pdCh2b2lkKQogc3RhdGljIHZvaWQgX19leGl0IHZpcnRpb19tbWlvX2V4aXQo dm9pZCkKIHsKIAlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdmlydGlvX21taW9fZHJpdmVy KTsKKwl2bV91bnJlZ2lzdGVyX2NtZGxpbmVfZGV2aWNlcygpOwogfQogCiBtb2R1bGVfaW5pdCh2 aXJ0aW9fbW1pb19pbml0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW9kdWxlcGFyYW0u aCBiL2luY2x1ZGUvbGludXgvbW9kdWxlcGFyYW0uaAppbmRleCA3OTM5ZjYzLi5mY2NmMGNiIDEw MDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21vZHVsZXBhcmFtLmgKKysrIGIvaW5jbHVkZS9saW51 eC9tb2R1bGVwYXJhbS5oCkBAIC00OCw3ICs0OCw4IEBAIHN0cnVjdCBrZXJuZWxfcGFyYW1fb3Bz IHsKIH07CiAKIC8qIEZsYWcgYml0cyBmb3Iga2VybmVsX3BhcmFtLmZsYWdzICovCi0jZGVmaW5l IEtQQVJBTV9JU0JPT0wJCTIKKyNkZWZpbmUgS1BBUkFNX0lTQk9PTAkJKDEgPDwgMSkKKyNkZWZp bmUgS1BBUkFNX0xBVEUJCSgxIDw8IDIpCiAKIHN0cnVjdCBrZXJuZWxfcGFyYW0gewogCWNvbnN0 IGNoYXIgKm5hbWU7CkBAIC0xMzIsNyArMTMzLDEzIEBAIHN0cnVjdCBrcGFyYW1fYXJyYXkKICAq LwogI2RlZmluZSBtb2R1bGVfcGFyYW1fY2IobmFtZSwgb3BzLCBhcmcsIHBlcm0pCQkJCSAgICAg IFwKIAlfX21vZHVsZV9wYXJhbV9jYWxsKE1PRFVMRV9QQVJBTV9QUkVGSVgsCQkJICAgICAgXAot CQkJICAgIG5hbWUsIG9wcywgYXJnLCBfX3NhbWVfdHlwZSgoYXJnKSwgYm9vbCAqKSwgcGVybSkK KwkJCSAgICBuYW1lLCBvcHMsIGFyZywgCQkJCSAgICAgIFwKKwkJCSAgICBfX3NhbWVfdHlwZSgo YXJnKSwgYm9vbCAqKSwgMCwgcGVybSkKKworI2RlZmluZSBtb2R1bGVfcGFyYW1fY2JfbGF0ZShu YW1lLCBvcHMsIGFyZywgcGVybSkJCQkgICAgICBcCisJX19tb2R1bGVfcGFyYW1fY2FsbChNT0RV TEVfUEFSQU1fUFJFRklYLAkJCSAgICAgIFwKKwkJCSAgICBuYW1lLCBvcHMsIGFyZywJCQkJICAg ICAgXAorCQkJICAgIF9fc2FtZV90eXBlKChhcmcpLCBib29sICopLCAxLCBwZXJtKQogCiAvKiBP biBhbHBoYSwgaWE2NCBhbmQgcHBjNjQgcmVsb2NhdGlvbnMgdG8gZ2xvYmFsIGRhdGEgY2Fubm90 IGdvIGludG8KICAgIHJlYWQtb25seSBzZWN0aW9ucyAod2hpY2ggaXMgcGFydCBvZiByZXNwZWN0 aXZlIFVOSVggQUJJIG9uIHRoZXNlCkBAIC0xNDYsNyArMTUzLDcgQEAgc3RydWN0IGtwYXJhbV9h cnJheQogCiAvKiBUaGlzIGlzIHRoZSBmdW5kYW1lbnRhbCBmdW5jdGlvbiBmb3IgcmVnaXN0ZXJp bmcgYm9vdC9tb2R1bGUKICAgIHBhcmFtZXRlcnMuICovCi0jZGVmaW5lIF9fbW9kdWxlX3BhcmFt X2NhbGwocHJlZml4LCBuYW1lLCBvcHMsIGFyZywgaXNib29sLCBwZXJtKQlcCisjZGVmaW5lIF9f bW9kdWxlX3BhcmFtX2NhbGwocHJlZml4LCBuYW1lLCBvcHMsIGFyZywgaXNib29sLCBsYXRlLCBw ZXJtKQlcCiAJLyogRGVmYXVsdCB2YWx1ZSBpbnN0ZWFkIG9mIHBlcm1pc3Npb25zPyAqLwkJCVwK IAlzdGF0aWMgaW50IF9fcGFyYW1fcGVybV9jaGVja18jI25hbWUgX19hdHRyaWJ1dGVfXygodW51 c2VkKSkgPQlcCiAJQlVJTERfQlVHX09OX1pFUk8oKHBlcm0pIDwgMCB8fCAocGVybSkgPiAwNzc3 IHx8ICgocGVybSkgJiAyKSkJXApAQCAtMTU1LDcgKzE2Miw4IEBAIHN0cnVjdCBrcGFyYW1fYXJy YXkKIAlzdGF0aWMgc3RydWN0IGtlcm5lbF9wYXJhbSBfX21vZHVsZXBhcmFtX2NvbnN0IF9fcGFy YW1fIyNuYW1lCVwKIAlfX3VzZWQJCQkJCQkJCVwKICAgICBfX2F0dHJpYnV0ZV9fICgodW51c2Vk LF9fc2VjdGlvbl9fICgiX19wYXJhbSIpLGFsaWduZWQoc2l6ZW9mKHZvaWQgKikpKSkgXAotCT0g eyBfX3BhcmFtX3N0cl8jI25hbWUsIG9wcywgcGVybSwgaXNib29sID8gS1BBUkFNX0lTQk9PTCA6 IDAsCVwKKwk9IHsgX19wYXJhbV9zdHJfIyNuYW1lLCBvcHMsIHBlcm0sIAkJCQlcCisJICAgIChp c2Jvb2wgPyBLUEFSQU1fSVNCT09MIDogMCkgfCAobGF0ZSA/IEtQQVJBTV9MQVRFIDogMCksCVwK IAkgICAgeyBhcmcgfSB9CiAKIC8qIE9ic29sZXRlIC0gdXNlIG1vZHVsZV9wYXJhbV9jYigpICov CkBAIC0xNjUsNiArMTczLDcgQEAgc3RydWN0IGtwYXJhbV9hcnJheQogCV9fbW9kdWxlX3BhcmFt X2NhbGwoTU9EVUxFX1BBUkFNX1BSRUZJWCwJCQlcCiAJCQkgICAgbmFtZSwgJl9fcGFyYW1fb3Bz XyMjbmFtZSwgYXJnLAkJXAogCQkJICAgIF9fc2FtZV90eXBlKGFyZywgYm9vbCAqKSwJCQlcCisJ CQkgICAgMCwJCQkJCVwKIAkJCSAgICAocGVybSkgKyBzaXplb2YoX19jaGVja19vbGRfc2V0X3Bh cmFtKHNldCkpKjApCiAKIC8qIFdlIGRvbid0IGdldCBvbGRnZXQ6IGl0J3Mgb2Z0ZW4gYSBuZXct c3R5bGUgcGFyYW1fZ2V0X3VpbnQsIGV0Yy4gKi8KQEAgLTI0Niw3ICsyNTUsNyBAQCBzdGF0aWMg aW5saW5lIHZvaWQgX19rZXJuZWxfcGFyYW1fdW5sb2NrKHZvaWQpCiAjZGVmaW5lIGNvcmVfcGFy YW0obmFtZSwgdmFyLCB0eXBlLCBwZXJtKQkJCQlcCiAJcGFyYW1fY2hlY2tfIyN0eXBlKG5hbWUs ICYodmFyKSk7CQkJCVwKIAlfX21vZHVsZV9wYXJhbV9jYWxsKCIiLCBuYW1lLCAmcGFyYW1fb3Bz XyMjdHlwZSwJCVwKLQkJCSAgICAmdmFyLCBfX3NhbWVfdHlwZSh2YXIsIGJvb2wpLCBwZXJtKQor CQkJICAgICZ2YXIsIF9fc2FtZV90eXBlKHZhciwgYm9vbCksIDAsIHBlcm0pCiAjZW5kaWYgLyog IU1PRFVMRSAqLwogCiAvKioKQEAgLTI2NCw3ICsyNzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg X19rZXJuZWxfcGFyYW1fdW5sb2NrKHZvaWQpCiAJCT0geyBsZW4sIHN0cmluZyB9OwkJCQkJXAog CV9fbW9kdWxlX3BhcmFtX2NhbGwoTU9EVUxFX1BBUkFNX1BSRUZJWCwgbmFtZSwJCQlcCiAJCQkg ICAgJnBhcmFtX29wc19zdHJpbmcsCQkJCVwKLQkJCSAgICAuc3RyID0gJl9fcGFyYW1fc3RyaW5n XyMjbmFtZSwgMCwgcGVybSk7CVwKKwkJCSAgICAuc3RyID0gJl9fcGFyYW1fc3RyaW5nXyMjbmFt ZSwgMCwgMCwgcGVybSk7CVwKIAlfX01PRFVMRV9QQVJNX1RZUEUobmFtZSwgInN0cmluZyIpCiAK IC8qKgpAQCAtMjkyLDYgKzMwMSw4IEBAIGV4dGVybiBpbnQgcGFyc2VfYXJncyhjb25zdCBjaGFy ICpuYW1lLAogCQkgICAgICBjaGFyICphcmdzLAogCQkgICAgICBjb25zdCBzdHJ1Y3Qga2VybmVs X3BhcmFtICpwYXJhbXMsCiAJCSAgICAgIHVuc2lnbmVkIG51bSwKKwkJICAgICAgdTE2IGZsYWdz X21hc2ssCisJCSAgICAgIHUxNiBmbGFncywKIAkJICAgICAgaW50ICgqdW5rbm93bikoY2hhciAq cGFyYW0sIGNoYXIgKnZhbCkpOwogCiAvKiBDYWxsZWQgYnkgbW9kdWxlIHJlbW92ZS4gKi8KQEAg LTQwMiw3ICs0MTMsNyBAQCBleHRlcm4gaW50IHBhcmFtX2dldF9pbnZib29sKGNoYXIgKmJ1ZmZl ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApOwogCV9fbW9kdWxlX3BhcmFtX2NhbGwo TU9EVUxFX1BBUkFNX1BSRUZJWCwgbmFtZSwJCQlcCiAJCQkgICAgJnBhcmFtX2FycmF5X29wcywJ CQkJXAogCQkJICAgIC5hcnIgPSAmX19wYXJhbV9hcnJfIyNuYW1lLAkJCVwKLQkJCSAgICBfX3Nh bWVfdHlwZShhcnJheVswXSwgYm9vbCksIHBlcm0pOwkJXAorCQkJICAgIF9fc2FtZV90eXBlKGFy cmF5WzBdLCBib29sKSwgMCwgcGVybSk7CVwKIAlfX01PRFVMRV9QQVJNX1RZUEUobmFtZSwgImFy cmF5IG9mICIgI3R5cGUpCiAKIGV4dGVybiBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBwYXJhbV9h cnJheV9vcHM7CmRpZmYgLS1naXQgYS9pbml0L21haW4uYyBiL2luaXQvbWFpbi5jCmluZGV4IDIx N2VkMjMuLmNlODlhNTMgMTAwNjQ0Ci0tLSBhL2luaXQvbWFpbi5jCisrKyBiL2luaXQvbWFpbi5j CkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIGludCBfX2luaXQgZG9fZWFybHlfcGFyYW0oY2hh ciAqcGFyYW0sIGNoYXIgKnZhbCkKIAogdm9pZCBfX2luaXQgcGFyc2VfZWFybHlfb3B0aW9ucyhj aGFyICpjbWRsaW5lKQogewotCXBhcnNlX2FyZ3MoImVhcmx5IG9wdGlvbnMiLCBjbWRsaW5lLCBO VUxMLCAwLCBkb19lYXJseV9wYXJhbSk7CisJcGFyc2VfYXJncygiZWFybHkgb3B0aW9ucyIsIGNt ZGxpbmUsIE5VTEwsIDAsIDAsIDAsIGRvX2Vhcmx5X3BhcmFtKTsKIH0KIAogLyogQXJjaCBjb2Rl IGNhbGxzIHRoaXMgZWFybHkgb24sIG9yIGlmIG5vdCwganVzdCBiZWZvcmUgb3RoZXIgcGFyc2lu Zy4gKi8KQEAgLTUxMSw3ICs1MTEsNyBAQCBhc21saW5rYWdlIHZvaWQgX19pbml0IHN0YXJ0X2tl cm5lbCh2b2lkKQogCXBhcnNlX2Vhcmx5X3BhcmFtKCk7CiAJcGFyc2VfYXJncygiQm9vdGluZyBr ZXJuZWwiLCBzdGF0aWNfY29tbWFuZF9saW5lLCBfX3N0YXJ0X19fcGFyYW0sCiAJCSAgIF9fc3Rv cF9fX3BhcmFtIC0gX19zdGFydF9fX3BhcmFtLAotCQkgICAmdW5rbm93bl9ib290b3B0aW9uKTsK KwkJICAgS1BBUkFNX0xBVEUsIDAsICZ1bmtub3duX2Jvb3RvcHRpb24pOwogCiAJanVtcF9sYWJl bF9pbml0KCk7CiAKQEAgLTczNyw2ICs3MzcsMjIgQEAgc3RhdGljIHZvaWQgX19pbml0IGRvX2Jh c2ljX3NldHVwKHZvaWQpCiAJZG9faW5pdGNhbGxzKCk7CiB9CiAKK3N0YXRpYyBpbnQgX19pbml0 IGlnbm9yZV91bmtub3duX2Jvb3RvcHRpb24oY2hhciAqcGFyYW0sIGNoYXIgKnZhbCkKK3sKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX2luaXQgcGFyc2VfbGF0ZV9hcmdzKHZvaWQpCit7 CisJZXh0ZXJuIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gX19zdGFydF9fX3BhcmFtW10sIF9f c3RvcF9fX3BhcmFtW107CisKKwlzdHJjcHkoc3RhdGljX2NvbW1hbmRfbGluZSwgc2F2ZWRfY29t bWFuZF9saW5lKTsKKwlwYXJzZV9hcmdzKCJMYXRlIHBhcmFtZXRlcnMiLCBzdGF0aWNfY29tbWFu ZF9saW5lLCBfX3N0YXJ0X19fcGFyYW0sCisJCSAgIF9fc3RvcF9fX3BhcmFtIC0gX19zdGFydF9f X3BhcmFtLAorCQkgICBLUEFSQU1fTEFURSwgS1BBUkFNX0xBVEUsIGlnbm9yZV91bmtub3duX2Jv b3RvcHRpb24pOworfQorbGF0ZV9pbml0Y2FsbChwYXJzZV9sYXRlX2FyZ3MpOworCiBzdGF0aWMg dm9pZCBfX2luaXQgZG9fcHJlX3NtcF9pbml0Y2FsbHModm9pZCkKIHsKIAlpbml0Y2FsbF90ICpm bjsKZGlmZiAtLWdpdCBhL2tlcm5lbC9tb2R1bGUuYyBiL2tlcm5lbC9tb2R1bGUuYwppbmRleCAx NzgzMzNjLi42NmQzZTc1IDEwMDY0NAotLS0gYS9rZXJuZWwvbW9kdWxlLmMKKysrIGIva2VybmVs L21vZHVsZS5jCkBAIC0yODkzLDcgKzI4OTMsOCBAQCBzdGF0aWMgc3RydWN0IG1vZHVsZSAqbG9h ZF9tb2R1bGUodm9pZCBfX3VzZXIgKnVtb2QsCiAJbXV0ZXhfdW5sb2NrKCZtb2R1bGVfbXV0ZXgp OwogCiAJLyogTW9kdWxlIGlzIHJlYWR5IHRvIGV4ZWN1dGU6IHBhcnNpbmcgYXJncyBtYXkgZG8g dGhhdC4gKi8KLQllcnIgPSBwYXJzZV9hcmdzKG1vZC0+bmFtZSwgbW9kLT5hcmdzLCBtb2QtPmtw LCBtb2QtPm51bV9rcCwgTlVMTCk7CisJZXJyID0gcGFyc2VfYXJncyhtb2QtPm5hbWUsIG1vZC0+ YXJncywgbW9kLT5rcCwgbW9kLT5udW1fa3AsCisJCQkgMCwgMCwgTlVMTCk7CiAJaWYgKGVyciA8 IDApCiAJCWdvdG8gdW5saW5rOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvcGFyYW1zLmMgYi9rZXJu ZWwvcGFyYW1zLmMKaW5kZXggNjVhYWUxMS4uNTYwMzQ1YyAxMDA2NDQKLS0tIGEva2VybmVsL3Bh cmFtcy5jCisrKyBiL2tlcm5lbC9wYXJhbXMuYwpAQCAtOTQsNiArOTQsOCBAQCBzdGF0aWMgaW50 IHBhcnNlX29uZShjaGFyICpwYXJhbSwKIAkJICAgICBjaGFyICp2YWwsCiAJCSAgICAgY29uc3Qg c3RydWN0IGtlcm5lbF9wYXJhbSAqcGFyYW1zLAogCQkgICAgIHVuc2lnbmVkIG51bV9wYXJhbXMs CisJCSAgICAgaW50IGZsYWdzX21hc2ssCisJCSAgICAgaW50IGZsYWdzLAogCQkgICAgIGludCAo KmhhbmRsZV91bmtub3duKShjaGFyICpwYXJhbSwgY2hhciAqdmFsKSkKIHsKIAl1bnNpZ25lZCBp bnQgaTsKQEAgLTEwMiw2ICsxMDQsOCBAQCBzdGF0aWMgaW50IHBhcnNlX29uZShjaGFyICpwYXJh bSwKIAkvKiBGaW5kIHBhcmFtZXRlciAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyYW1zOyBp KyspIHsKIAkJaWYgKHBhcmFtZXEocGFyYW0sIHBhcmFtc1tpXS5uYW1lKSkgeworCQkJaWYgKChw YXJhbXNbaV0uZmxhZ3MgJiBmbGFnc19tYXNrKSAhPSBmbGFncykKKwkJCQlyZXR1cm4gMDsKIAkJ CS8qIE5vIG9uZSBoYW5kbGVkIE5VTEwsIHNvIGRvIGl0IGhlcmUuICovCiAJCQlpZiAoIXZhbCAm JiBwYXJhbXNbaV0ub3BzLT5zZXQgIT0gcGFyYW1fc2V0X2Jvb2wpCiAJCQkJcmV0dXJuIC1FSU5W QUw7CkBAIC0xODAsNiArMTg0LDggQEAgaW50IHBhcnNlX2FyZ3MoY29uc3QgY2hhciAqbmFtZSwK IAkgICAgICAgY2hhciAqYXJncywKIAkgICAgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAq cGFyYW1zLAogCSAgICAgICB1bnNpZ25lZCBudW0sCisJICAgICAgIHUxNiBmbGFnc19tYXNrLAor CSAgICAgICB1MTYgZmxhZ3MsCiAJICAgICAgIGludCAoKnVua25vd24pKGNoYXIgKnBhcmFtLCBj aGFyICp2YWwpKQogewogCWNoYXIgKnBhcmFtLCAqdmFsOwpAQCAtMTk1LDcgKzIwMSw4IEBAIGlu dCBwYXJzZV9hcmdzKGNvbnN0IGNoYXIgKm5hbWUsCiAKIAkJYXJncyA9IG5leHRfYXJnKGFyZ3Ms ICZwYXJhbSwgJnZhbCk7CiAJCWlycV93YXNfZGlzYWJsZWQgPSBpcnFzX2Rpc2FibGVkKCk7Ci0J CXJldCA9IHBhcnNlX29uZShwYXJhbSwgdmFsLCBwYXJhbXMsIG51bSwgdW5rbm93bik7CisJCXJl dCA9IHBhcnNlX29uZShwYXJhbSwgdmFsLCBwYXJhbXMsIG51bSwKKwkJCSAgICAgICAgZmxhZ3Nf bWFzaywgZmxhZ3MsIHVua25vd24pOwogCQlpZiAoaXJxX3dhc19kaXNhYmxlZCAmJiAhaXJxc19k aXNhYmxlZCgpKSB7CiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJwYXJzZV9hcmdzKCk6IG9wdGlv biAnJXMnIGVuYWJsZWQgIgogCQkJCQkiaXJxJ3MhXG4iLCBwYXJhbSk7CgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxp bmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczov L2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlv bg==