From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v7 17/25] xen/arm: generate a simple device tree for domUs Date: Mon, 12 Nov 2018 14:59:50 -0800 Message-ID: <1542063598-23767-17-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: julien.grall@arm.com Cc: Stefano Stabellini , Achin.Gupta@arm.com, sstabellini@kernel.org, andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIGZ1bmN0aW9ucyB0byBnZW5lcmF0ZSBhIGJhc2ljIGRvbVUgZGV2aWNlIHRyZWUs IHNpbWlsYXIgdG8gdGhlCmV4aXN0aW5nIGZ1bmN0aW9ucyBpbiB0b29scy9saWJ4bC9saWJ4bF9h cm0uYy4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub3NAeGlsaW54 LmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Ci0tLQpD aGFuZ2VzIGluIHY1OgotIHVzZSBkLT5hcmNoLnZnaWMudmVyc2lvbgoKQ2hhbmdlcyBpbiB2NDoK LSBjb2RlIHN0eWxlCi0gdHdvIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZ2ljdjIgYW5kIGdpY3Yz Ci0gcmVtb3ZlIHVzZWxlc3MgbG9jYWwgdmFyaWFibGVzCi0gZml4IHR5cG9zCi0gZG8gbm90IHVz ZSBob3N0IGFkZHJlc3MgYW5kIHNpemUgY2VsbHMgZm9yIHRoZSBndWVzdCBEVAotIHVzZSAjZGVm aW5lIGZvciBhZGRyY2VsbHMgYW5kIHNpemVjZWxscwoKQ2hhbmdlcyBpbiB2MzoKLSByZW1vdmUg Q09ORklHX0FDUEkgZm9yIG1ha2VfY2hvc2VuX25vZGUKLSByZW1vdmUgbWFrZV9oeXBlcnZpc29y X25vZGUgdW50aWwgYWxsIFhlbiByZWxhdGVkIGZ1bmN0aW9uYWxpdGllcwogIChldnRjaG5zLCBn cmFudCB0YWJsZSwgZXRjLikgd29yayBjb3JyZWN0bHkKCkNoYW5nZXMgaW4gdjI6Ci0gbW92ZSBw cmVwYXJlX2R0YiByZW5hbWUgdG8gcHJldmlvdXMgcGF0Y2gKLSB1c2Ugc3dpdGNoIGZvciB0aGUg Z2ljIHZlcnNpb24KLSB1c2UgYXJtLGdpYy00MDAgaW5zdGVhZCBvZiBhcm0sY29ydGV4LWExNS1n aWMKLSBhZGQgQHVuaXQtYWRkcmVzcyBpbiB0aGUgZ2ljIG5vZGUgbmFtZQotIGFkZCBjb21tZW50 IG9uIERPTVVfRFRCX1NJWkUKLS0tCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgfCAyMzUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFu Z2VkLCAyMzMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKaW5k ZXggOGQ3OTgzYS4uM2QzM2QxZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWls ZC5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwpAQCAtMTAzNCw3ICsxMDM0LDYg QEAgc3RhdGljIGludCBfX2luaXQgbWFrZV90aW1lcl9ub2RlKGNvbnN0IHN0cnVjdCBkb21haW4g KmQsIHZvaWQgKmZkdCwKICAgICByZXR1cm4gcmVzOwogfQogCi0jaWZkZWYgQ09ORklHX0FDUEkK IC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgZGV2aWNlIHRyZWUg Z2VuZXJhdGlvbiBmb3IgRG9tMAogICogb24gQUNQSSBzeXN0ZW1zLCBhbmQgRG9tVXMgc3RhcnRl ZCBkaXJlY3RseSBmcm9tIFhlbiBiYXNlZCBvbiBkZXZpY2UKQEAgLTEwODAsNyArMTA3OSw2IEBA IHN0YXRpYyBpbnQgX19pbml0IG1ha2VfY2hvc2VuX25vZGUoY29uc3Qgc3RydWN0IGtlcm5lbF9p bmZvICpraW5mbykKIAogICAgIHJldHVybiByZXM7CiB9Ci0jZW5kaWYKIAogc3RhdGljIGludCBf X2luaXQgbWFwX2lycV90b19kb21haW4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGly cSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbmVlZF9tYXBwaW5n LCBjb25zdCBjaGFyICpkZXZuYW1lKQpAQCAtMTQ3Miw2ICsxNDcwLDIzNSBAQCBzdGF0aWMgaW50 IF9faW5pdCBoYW5kbGVfbm9kZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8g KmtpbmZvLAogICAgIHJldHVybiByZXM7CiB9CiAKK3N0YXRpYyBpbnQgX19pbml0IG1ha2VfZ2lj djJfZG9tVV9ub2RlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHZvaWQgKmZkdCkKK3sKKyAgICBp bnQgcmVzID0gMDsKKyAgICBfX2JlMzIgcmVnWyhHVUVTVF9ST09UX0FERFJFU1NfQ0VMTFMgKyBH VUVTVF9ST09UX1NJWkVfQ0VMTFMpICogMl07CisgICAgX19iZTMyICpjZWxsczsKKworICAgIHJl cyA9IGZkdF9iZWdpbl9ub2RlKGZkdCwgImludGVycnVwdC1jb250cm9sbGVyQCJfX3N0cmluZ2lm eShHVUVTVF9HSUNEX0JBU0UpKTsKKyAgICBpZiAoIHJlcyApCisgICAgICAgIHJldHVybiByZXM7 CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHlfY2VsbChmZHQsICIjYWRkcmVzcy1jZWxscyIsIDAp OworICAgIGlmICggcmVzICkKKyAgICAgICAgcmV0dXJuIHJlczsKKworICAgIHJlcyA9IGZkdF9w cm9wZXJ0eV9jZWxsKGZkdCwgIiNpbnRlcnJ1cHQtY2VsbHMiLCAzKTsKKyAgICBpZiAoIHJlcyAp CisgICAgICAgIHJldHVybiByZXM7CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHkoZmR0LCAiaW50 ZXJydXB0LWNvbnRyb2xsZXIiLCBOVUxMLCAwKTsKKyAgICBpZiAoIHJlcyApCisgICAgICAgIHJl dHVybiByZXM7CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHlfc3RyaW5nKGZkdCwgImNvbXBhdGli bGUiLCAiYXJtLGdpYy00MDAiKTsKKyAgICBpZiAoIHJlcyApCisgICAgICAgIHJldHVybiByZXM7 CisKKyAgICBjZWxscyA9ICZyZWdbMF07CisgICAgZHRfY2hpbGRfc2V0X3JhbmdlKCZjZWxscywg R1VFU1RfUk9PVF9BRERSRVNTX0NFTExTLCBHVUVTVF9ST09UX1NJWkVfQ0VMTFMsCisgICAgICAg ICAgICAgICAgICAgICAgIEdVRVNUX0dJQ0RfQkFTRSwgR1VFU1RfR0lDRF9TSVpFKTsKKyAgICBk dF9jaGlsZF9zZXRfcmFuZ2UoJmNlbGxzLCBHVUVTVF9ST09UX0FERFJFU1NfQ0VMTFMsIEdVRVNU X1JPT1RfU0laRV9DRUxMUywKKyAgICAgICAgICAgICAgICAgICAgICAgR1VFU1RfR0lDQ19CQVNF LCBHVUVTVF9HSUNDX1NJWkUpOworCisgICAgcmVzID0gZmR0X3Byb3BlcnR5KGZkdCwgInJlZyIs IHJlZywgc2l6ZW9mKHJlZykpOworICAgIGlmIChyZXMpCisgICAgICAgIHJldHVybiByZXM7CisK KyAgICByZXMgPSBmZHRfcHJvcGVydHlfY2VsbChmZHQsICJsaW51eCxwaGFuZGxlIiwgR1VFU1Rf UEhBTkRMRV9HSUMpOworICAgIGlmIChyZXMpCisgICAgICAgIHJldHVybiByZXM7CisKKyAgICBy ZXMgPSBmZHRfcHJvcGVydHlfY2VsbChmZHQsICJwaGFuZGxlIiwgR1VFU1RfUEhBTkRMRV9HSUMp OworICAgIGlmIChyZXMpCisgICAgICAgIHJldHVybiByZXM7CisKKyAgICByZXMgPSBmZHRfZW5k X25vZGUoZmR0KTsKKworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IG1h a2VfZ2ljdjNfZG9tVV9ub2RlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHZvaWQgKmZkdCkKK3sK KyAgICBpbnQgcmVzID0gMDsKKyAgICBfX2JlMzIgcmVnWyhHVUVTVF9ST09UX0FERFJFU1NfQ0VM TFMgKyBHVUVTVF9ST09UX1NJWkVfQ0VMTFMpICogMl07CisgICAgX19iZTMyICpjZWxsczsKKwor ICAgIHJlcyA9IGZkdF9iZWdpbl9ub2RlKGZkdCwgImludGVycnVwdC1jb250cm9sbGVyQCJfX3N0 cmluZ2lmeShHVUVTVF9HSUNWM19HSUNEX0JBU0UpKTsKKyAgICBpZiAoIHJlcyApCisgICAgICAg IHJldHVybiByZXM7CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHlfY2VsbChmZHQsICIjYWRkcmVz cy1jZWxscyIsIDApOworICAgIGlmICggcmVzICkKKyAgICAgICAgcmV0dXJuIHJlczsKKworICAg IHJlcyA9IGZkdF9wcm9wZXJ0eV9jZWxsKGZkdCwgIiNpbnRlcnJ1cHQtY2VsbHMiLCAzKTsKKyAg ICBpZiAoIHJlcyApCisgICAgICAgIHJldHVybiByZXM7CisKKyAgICByZXMgPSBmZHRfcHJvcGVy dHkoZmR0LCAiaW50ZXJydXB0LWNvbnRyb2xsZXIiLCBOVUxMLCAwKTsKKyAgICBpZiAoIHJlcyAp CisgICAgICAgIHJldHVybiByZXM7CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHlfc3RyaW5nKGZk dCwgImNvbXBhdGlibGUiLCAiYXJtLGdpYy12MyIpOworICAgIGlmICggcmVzICkKKyAgICAgICAg cmV0dXJuIHJlczsKKworICAgIGNlbGxzID0gJnJlZ1swXTsKKyAgICBkdF9jaGlsZF9zZXRfcmFu Z2UoJmNlbGxzLCBHVUVTVF9ST09UX0FERFJFU1NfQ0VMTFMsIEdVRVNUX1JPT1RfU0laRV9DRUxM UywKKyAgICAgICAgICAgICAgICAgICAgICAgR1VFU1RfR0lDVjNfR0lDRF9CQVNFLCBHVUVTVF9H SUNWM19HSUNEX1NJWkUpOworICAgIGR0X2NoaWxkX3NldF9yYW5nZSgmY2VsbHMsIEdVRVNUX1JP T1RfQUREUkVTU19DRUxMUywgR1VFU1RfUk9PVF9TSVpFX0NFTExTLAorICAgICAgICAgICAgICAg ICAgICAgICBHVUVTVF9HSUNWM19HSUNSMF9CQVNFLCBHVUVTVF9HSUNWM19HSUNSMF9TSVpFKTsK KworICAgIHJlcyA9IGZkdF9wcm9wZXJ0eShmZHQsICJyZWciLCByZWcsIHNpemVvZihyZWcpKTsK KyAgICBpZiAocmVzKQorICAgICAgICByZXR1cm4gcmVzOworCisgICAgcmVzID0gZmR0X3Byb3Bl cnR5X2NlbGwoZmR0LCAibGludXgscGhhbmRsZSIsIEdVRVNUX1BIQU5ETEVfR0lDKTsKKyAgICBp ZiAocmVzKQorICAgICAgICByZXR1cm4gcmVzOworCisgICAgcmVzID0gZmR0X3Byb3BlcnR5X2Nl bGwoZmR0LCAicGhhbmRsZSIsIEdVRVNUX1BIQU5ETEVfR0lDKTsKKyAgICBpZiAocmVzKQorICAg ICAgICByZXR1cm4gcmVzOworCisgICAgcmVzID0gZmR0X2VuZF9ub2RlKGZkdCk7CisKKyAgICBy ZXR1cm4gcmVzOworfQorCitzdGF0aWMgaW50IF9faW5pdCBtYWtlX2dpY19kb21VX25vZGUoY29u c3Qgc3RydWN0IGRvbWFpbiAqZCwgdm9pZCAqZmR0KQoreworICAgIHN3aXRjaCAoIGQtPmFyY2gu dmdpYy52ZXJzaW9uICkKKyAgICB7CisgICAgY2FzZSBHSUNfVjM6CisgICAgICAgIHJldHVybiBt YWtlX2dpY3YzX2RvbVVfbm9kZShkLCBmZHQpOworICAgIGNhc2UgR0lDX1YyOgorICAgICAgICBy ZXR1cm4gbWFrZV9naWN2Ml9kb21VX25vZGUoZCwgZmR0KTsKKyAgICBkZWZhdWx0OgorICAgICAg ICBwYW5pYygiVW5zdXBwb3J0ZWQgR0lDIHZlcnNpb24iKTsKKyAgICB9Cit9CisKK3N0YXRpYyBp bnQgX19pbml0IG1ha2VfdGltZXJfZG9tVV9ub2RlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHZv aWQgKmZkdCkKK3sKKyAgICBpbnQgcmVzOworICAgIGdpY19pbnRlcnJ1cHRfdCBpbnRyc1szXTsK KworICAgIHJlcyA9IGZkdF9iZWdpbl9ub2RlKGZkdCwgInRpbWVyIik7CisgICAgaWYgKCByZXMg KQorICAgICAgICByZXR1cm4gcmVzOworCisgICAgaWYgKCAhaXNfNjRiaXRfZG9tYWluKGQpICkK KyAgICB7CisgICAgICAgIHJlcyA9IGZkdF9wcm9wZXJ0eV9zdHJpbmcoZmR0LCAiY29tcGF0aWJs ZSIsICJhcm0sYXJtdjctdGltZXIiKTsKKyAgICAgICAgaWYgKCByZXMgKQorICAgICAgICAgICAg cmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmVzID0gZmR0X3By b3BlcnR5X3N0cmluZyhmZHQsICJjb21wYXRpYmxlIiwgImFybSxhcm12OC10aW1lciIpOworICAg ICAgICBpZiAoIHJlcyApCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIHNl dF9pbnRlcnJ1cHRfcHBpKGludHJzWzBdLCBHVUVTVF9USU1FUl9QSFlTX1NfUFBJLCAweGYsIERU X0lSUV9UWVBFX0xFVkVMX0xPVyk7CisgICAgc2V0X2ludGVycnVwdF9wcGkoaW50cnNbMV0sIEdV RVNUX1RJTUVSX1BIWVNfTlNfUFBJLCAweGYsIERUX0lSUV9UWVBFX0xFVkVMX0xPVyk7CisgICAg c2V0X2ludGVycnVwdF9wcGkoaW50cnNbMl0sIEdVRVNUX1RJTUVSX1ZJUlRfUFBJLCAweGYsIERU X0lSUV9UWVBFX0xFVkVMX0xPVyk7CisKKyAgICByZXMgPSBmZHRfcHJvcGVydHkoZmR0LCAiaW50 ZXJydXB0cyIsIGludHJzLCBzaXplb2YgKGludHJzWzBdKSAqIDMpOworICAgIGlmICggcmVzICkK KyAgICAgICAgcmV0dXJuIHJlczsKKworICAgIHJlcyA9IGZkdF9wcm9wZXJ0eV9jZWxsKGZkdCwg ImludGVycnVwdC1wYXJlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdVRVNUX1BI QU5ETEVfR0lDKTsKKyAgICBpZiAocmVzKQorICAgICAgICByZXR1cm4gcmVzOworCisgICAgcmVz ID0gZmR0X2VuZF9ub2RlKGZkdCk7CisKKyAgICByZXR1cm4gcmVzOworfQorCisvKgorICogVGhl IG1heCBzaXplIGZvciBEVCBpcyAyTUIuIEhvd2V2ZXIsIHRoZSBnZW5lcmF0ZWQgRFQgaXMgc21h bGwsIDRLQgorICogYXJlIGVub3VnaCBmb3Igbm93LCBidXQgd2UgbWlnaHQgaGF2ZSB0byBpbmNy ZWFzZSBpdCBpbiB0aGUgZnV0dXJlLgorICovCisjZGVmaW5lIERPTVVfRFRCX1NJWkUgNDA5Ngor c3RhdGljIGludCBfX2luaXQgcHJlcGFyZV9kdGJfZG9tVShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3Qga2VybmVsX2luZm8gKmtpbmZvKQoreworICAgIGludCBhZGRyY2VsbHMsIHNpemVjZWxsczsK KyAgICBpbnQgcmV0OworCisgICAgYWRkcmNlbGxzID0gR1VFU1RfUk9PVF9BRERSRVNTX0NFTExT OworICAgIHNpemVjZWxscyA9IEdVRVNUX1JPT1RfU0laRV9DRUxMUzsKKworICAgIGtpbmZvLT5m ZHQgPSB4bWFsbG9jX2J5dGVzKERPTVVfRFRCX1NJWkUpOworICAgIGlmICgga2luZm8tPmZkdCA9 PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICByZXQgPSBmZHRfY3JlYXRl KGtpbmZvLT5mZHQsIERPTVVfRFRCX1NJWkUpOworICAgIGlmICggcmV0IDwgMCApCisgICAgICAg IGdvdG8gZXJyOworCisgICAgcmV0ID0gZmR0X2ZpbmlzaF9yZXNlcnZlbWFwKGtpbmZvLT5mZHQp OworICAgIGlmICggcmV0IDwgMCApCisgICAgICAgIGdvdG8gZXJyOworCisgICAgcmV0ID0gZmR0 X2JlZ2luX25vZGUoa2luZm8tPmZkdCwgIi8iKTsKKyAgICBpZiAoIHJldCA8IDAgKQorICAgICAg ICBnb3RvIGVycjsKKworICAgIHJldCA9IGZkdF9wcm9wZXJ0eV9jZWxsKGtpbmZvLT5mZHQsICIj YWRkcmVzcy1jZWxscyIsIGFkZHJjZWxscyk7CisgICAgaWYgKCByZXQgKQorICAgICAgICBnb3Rv IGVycjsKKworICAgIHJldCA9IGZkdF9wcm9wZXJ0eV9jZWxsKGtpbmZvLT5mZHQsICIjc2l6ZS1j ZWxscyIsIHNpemVjZWxscyk7CisgICAgaWYgKCByZXQgKQorICAgICAgICBnb3RvIGVycjsKKwor ICAgIHJldCA9IG1ha2VfY2hvc2VuX25vZGUoa2luZm8pOworICAgIGlmICggcmV0ICkKKyAgICAg ICAgZ290byBlcnI7CisKKyAgICByZXQgPSBtYWtlX3BzY2lfbm9kZShraW5mby0+ZmR0LCBOVUxM KTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8gZXJyOworCisgICAgcmV0ID0gbWFrZV9j cHVzX25vZGUoZCwga2luZm8tPmZkdCwgTlVMTCk7CisgICAgaWYgKCByZXQgKQorICAgICAgICBn b3RvIGVycjsKKworICAgIHJldCA9IG1ha2VfbWVtb3J5X25vZGUoZCwga2luZm8tPmZkdCwgYWRk cmNlbGxzLCBzaXplY2VsbHMsIGtpbmZvKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8g ZXJyOworCisgICAgcmV0ID0gbWFrZV9naWNfZG9tVV9ub2RlKGQsIGtpbmZvLT5mZHQpOworICAg IGlmICggcmV0ICkKKyAgICAgICAgZ290byBlcnI7CisKKyAgICByZXQgPSBtYWtlX3RpbWVyX2Rv bVVfbm9kZShkLCBraW5mby0+ZmR0KTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8gZXJy OworCisgICAgcmV0ID0gZmR0X2VuZF9ub2RlKGtpbmZvLT5mZHQpOworICAgIGlmICggcmV0IDwg MCApCisgICAgICAgIGdvdG8gZXJyOworCisgICAgcmV0ID0gZmR0X2ZpbmlzaChraW5mby0+ZmR0 KTsKKyAgICBpZiAoIHJldCA8IDAgKQorICAgICAgICBnb3RvIGVycjsKKworICAgIHJldHVybiAw OworCisgIGVycjoKKyAgICBwcmludGsoIkRldmljZSB0cmVlIGdlbmVyYXRpb24gZmFpbGVkICgl ZCkuXG4iLCByZXQpOworICAgIHhmcmVlKGtpbmZvLT5mZHQpOworCisgICAgcmV0dXJuIC1FSU5W QUw7Cit9CisKIHN0YXRpYyBpbnQgX19pbml0IHByZXBhcmVfZHRiX2h3ZG9tKHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8pCiB7CiAgICAgY29uc3QgcDJtX3R5cGVf dCBkZWZhdWx0X3AybXQgPSBwMm1fbW1pb19kaXJlY3RfYzsKQEAgLTIzMzksNiArMjU2NiwxMCBA QCBzdGF0aWMgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tVShzdHJ1Y3QgZG9tYWluICpkLAogI2Vu ZGlmCiAgICAgYWxsb2NhdGVfbWVtb3J5KGQsICZraW5mbyk7CiAKKyAgICByYyA9IHByZXBhcmVf ZHRiX2RvbVUoZCwgJmtpbmZvKTsKKyAgICBpZiAoIHJjIDwgMCApCisgICAgICAgIHJldHVybiBy YzsKKwogICAgIHJldHVybiBjb25zdHJ1Y3RfZG9tYWluKGQsICZraW5mbyk7CiB9CiAKLS0gCjEu OS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==