From mboxrd@z Thu Jan 1 00:00:00 1970 From: manish.jaggi@linaro.org Subject: [RFC 03/11] acpi: arm: Code to generate Hardware Domains IORT Date: Tue, 2 Jan 2018 14:58:01 +0530 Message-ID: <20180102092809.1841-4-manish.jaggi@linaro.org> References: <20180102092809.1841-1-manish.jaggi@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eWIsC-0002Rl-VQ for xen-devel@lists.xenproject.org; Tue, 02 Jan 2018 09:28:41 +0000 Received: by mail-pf0-x242.google.com with SMTP id c204so25455901pfc.13 for ; Tue, 02 Jan 2018 01:28:39 -0800 (PST) In-Reply-To: <20180102092809.1841-1-manish.jaggi@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, julien.grall@linaro.org, sameer.goel@linaro.org, andre.przywara@linaro.org Cc: Manish Jaggi , manish.jaggi@cavium.com List-Id: xen-devel@lists.xenproject.org RnJvbTogTWFuaXNoIEphZ2dpIDxtYW5pc2guamFnZ2lAbGluYXJvLm9yZz4KClNpbmdlZC1vZmYt Ynk6IE1hbmlzaCBKYWdnaSA8bWFuaXNoLmphZ2dpQGxpbmFyby5vcmc+Ci0tLQogeGVuL2FyY2gv YXJtL2RvbWFpbl9idWlsZC5jICAgICB8ICAyOCArKysrKwogeGVuL2RyaXZlcnMvYWNwaS9hcm0v Z2VuLWlvcnQuYyB8IDI1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vaW5jbHVkZS9hY3BpL2dlbi1pb3J0LmggICAgIHwgICAxICsKIHhlbi9pbmNsdWRlL2Fz bS1hcm0vYWNwaS5oICAgICAgfCAgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAyODIgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVp bGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwppbmRleCBmNWQ1ZTNkMjcxLi45ODMx OTQzMTQ3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysrIGIveGVu L2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0xNjU0LDYgKzE2NTQsOCBAQCBzdGF0aWMgaW50 IGFjcGlfY3JlYXRlX3hzZHQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IG1lbWJhbmsgdGJsX2Fk ZFtdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNQSV9TSUdfRkFEVCwgdGJsX2FkZFtU QkxfRkFEVF0uc3RhcnQpOwogICAgIGFjcGlfeHNkdF9tb2RpZnlfZW50cnkoeHNkdC0+dGFibGVf b2Zmc2V0X2VudHJ5LCBlbnRyeV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFD UElfU0lHX01BRFQsIHRibF9hZGRbVEJMX01BRFRdLnN0YXJ0KTsKKyAgICBhY3BpX3hzZHRfbW9k aWZ5X2VudHJ5KHhzZHQtPnRhYmxlX29mZnNldF9lbnRyeSwgZW50cnlfY291bnQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBBQ1BJX1NJR19JT1JULCB0YmxfYWRkW1RCTF9JT1JUXS5zdGFy dCk7CiAgICAgeHNkdC0+dGFibGVfb2Zmc2V0X2VudHJ5W2VudHJ5X2NvdW50XSA9IHRibF9hZGRb VEJMX1NUQU9dLnN0YXJ0OwogCiAgICAgeHNkdC0+aGVhZGVyLmxlbmd0aCA9IHRhYmxlX3NpemU7 CkBAIC0xNzA0LDYgKzE3MDYsMjggQEAgc3RhdGljIGludCBhY3BpX2NyZWF0ZV9zdGFvKHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCBtZW1iYW5rIHRibF9hZGRbXSkKICAgICByZXR1cm4gMDsKIH0K IAorc3RhdGljIGludCBhY3BpX2NyZWF0ZV9pb3J0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBt ZW1iYW5rIHRibF9hZGRbXSkKK3sKKyAgICBzdHJ1Y3QgYWNwaV90YWJsZV9pb3J0ICpod2RvbV90 YWJsZTsKKyAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IDA7CisKKyAgICB0YmxfYWRkW1RCTF9JT1JU XS5zdGFydCA9IGQtPmFyY2guZWZpX2FjcGlfZ3BhCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArIGFjcGlfZ2V0X3RhYmxlX29mZnNldCh0YmxfYWRkLCBUQkxfSU9SVCk7CisgICAgaHdk b21fdGFibGUgPSBkLT5hcmNoLmVmaV9hY3BpX3RhYmxlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArIGFjcGlfZ2V0X3RhYmxlX29mZnNldCh0YmxfYWRkLCBUQkxfSU9SVCk7CisKKyAg ICBpZiAoIHByZXBhcmVfaW9ydChod2RvbV90YWJsZSwgJnNpemUpICkKKyAgICB7CisgICAgICAg IHByaW50aygiRmFpbGVkIHRvIHdyaXRlIElPUlQgdGFibGVcbiIpOworICAgICAgICByZXR1cm4g LUVJTlZBTDsKKyAgICB9CisgICAgcHJpbnRrKCIlcyAlZCAlZCBcclxuIiwgX19mdW5jX18sIF9f TElORV9fLCBzaXplKTsKKworICAgIHRibF9hZGRbVEJMX0lPUlRdLnNpemUgPSBzaXplOworICAg IHByaW50aygiJXMgJWQgJWQgXHJcbiIsIF9fZnVuY19fLCBfX0xJTkVfXywgc2l6ZSk7CisgICAg cmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgYWNwaV9jcmVhdGVfbWFkdChzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgbWVtYmFuayB0YmxfYWRkW10pCiB7CiAgICAgc3RydWN0IGFjcGlfdGFibGVf aGVhZGVyICp0YWJsZSA9IE5VTEw7CkBAIC0xODk5LDYgKzE5MjMsMTAgQEAgc3RhdGljIGludCBw cmVwYXJlX2FjcGkoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykK ICAgICBpZiAoIHJjICE9IDAgKQogICAgICAgICByZXR1cm4gcmM7CiAKKyAgICByYyA9IGFjcGlf Y3JlYXRlX2lvcnQoZCwgdGJsX2FkZCk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAgcmV0 dXJuIHJjOworCiAgICAgcmMgPSBhY3BpX2NyZWF0ZV94c2R0KGQsIHRibF9hZGQpOwogICAgIGlm ICggcmMgIT0gMCApCiAgICAgICAgIHJldHVybiByYzsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L2FjcGkvYXJtL2dlbi1pb3J0LmMgYi94ZW4vZHJpdmVycy9hY3BpL2FybS9nZW4taW9ydC5jCmlu ZGV4IDNmYzMyOTU5YzYuLmYzNjgwMDA3NTMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkv YXJtL2dlbi1pb3J0LmMKKysrIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vZ2VuLWlvcnQuYwpAQCAt MjEsNiArMjEsMjU3IEBACiAjaW5jbHVkZSA8YWNwaS9yaWRtYXAuaD4KICNpbmNsdWRlIDx4ZW4v YWNwaS5oPgogCisvKgorICogU3RydWN0dXJlIG9mIEhhcmR3YXJlIGRvbWFpbidzIElPUlQKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogQmVsb3cgaXMgdGhl IHN0cnVjdHVyZSBvZiB0aGUgSU9SVCB3aGljaCB0aGlzIGNvZGUgZ2VuZXJhdGVzLgorICoKKyAq IFtJT1JUIEhlYWRlcl0KKyAqIFtJVFMgR3JvdXAgMSBdCisgKiBbSVRTIEdyb3VwIE4gXQorICog W1BDSVJDIE5vZGUgMV0KKyAqIFtQQ0lSQyBJRE1BUCBlbnRyeSAxXQorICogW1BDSVJDIElETUFQ IGVudHJ5IE5dCisgKiBbUENJUkMgTm9kZSBOXQorICoKKyAqIHJlcXVlc3RlcklkLSBkZXZpY2VJ ZCBtYXBwaW5nIGxpc3QgcG9wbGF0ZWQgYnkgcGFyc2luZyBJT1JUIGlzIHVzZWQKKyAqIHRvIGNy ZWF0ZSBub2RlcyBhbmQgaWRtYXBzLgorICogV2UgaGF2ZSBvbmUgc21hbGwgcHJvYmxlbSwgaG93 IHRvIHJlc29sdmUgdGhlIGl0cyBncm9vdXAgbm9kZSBvZmZzZXQgZnJvbQorICogdGhlIGZpcm13 YXJlIGlvcnQgdG8gdGhlIG9uZXMgaW4gaGFyZHdhcmUgZG9tYWlucyBJT1JULgorICoKKyAqIFNp bmNlIHRoZSBJVFMgZ3JvdXAgbm9kZSBwb2ludGVyIHN0b3JlZCB3aXRoIHRoZSByaWQtZGV2aWQg bWFwIGlzIHVzZWQKKyAqIHRvIHBvcHVsYXRlIHRoZSBJVFMgR3JvdXAgbm9kZXMgaW4gdGhlIGhh cmR3YXJlIGRvbWFpbnMnIElPUlQuCisgKiBXZSBjcmVhdGUgYW5vdGhlciBtYXAgdG8gc2F2ZSB0 aGUgb2Zmc2V0IG9mIHRoZSBJVFMgZ3JvdXAgbm9kZSB3cml0dGVuCisgKiBpbiB0aGUgaGFyZHdh cmUgZG9tYWluIElPUlQgd2l0aCB0aGUgSVRTIG5vZGUgcG9pbnRlciBpbiB0aGUgZmlybXdhcmUg SU9SVC4KKyAqCisgKiBUaGlzIG9mZnNldCBpcyBsYXRlciB1c2VkIHdoZW4gd3JpdGluZyBwY2ly YyBpZG1hcHMgb3V0cHV0X3JlZmVyZW5jZS4KKyAqLworc3RydWN0IGl0c19ub2RlX29mZnNldF9t YXAKK3sKKyAgICBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKml0c19ub2RlOworICAgIHVuc2lnbmVk IGludCBvZmZzZXQ7CisgICAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKK307CitzdHJ1Y3QgbGlz dF9oZWFkIGl0c19tYXBfbGlzdDsKKworaW50IHNldF9pdHNfbm9kZV9vZmZzZXQoc3RydWN0IGFj cGlfaW9ydF9ub2RlICppdHNfbm9kZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBzdHJ1 Y3QgaXRzX25vZGVfb2Zmc2V0X21hcCAqaXRzX21hcDsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 KGl0c19tYXAsICZpdHNfbWFwX2xpc3QsIGVudHJ5KQorICAgIHsKKyAgICAgICAgaWYgKCBpdHNf bWFwLT5pdHNfbm9kZSA9PSBpdHNfbm9kZSApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9 CisKKyAgICBpdHNfbWFwID0geHphbGxvYyhzdHJ1Y3QgaXRzX25vZGVfb2Zmc2V0X21hcCk7Cisg ICAgaWYgKCAhaXRzX21hcCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgaXRzX21h cC0+aXRzX25vZGUgPSBpdHNfbm9kZTsKKyAgICBpdHNfbWFwLT5vZmZzZXQgPSBvZmZzZXQ7Cisg ICAgbGlzdF9hZGRfdGFpbCgmaXRzX21hcC0+ZW50cnksICZpdHNfbWFwX2xpc3QpOworCisgICAg cmV0dXJuIDA7Cit9CisvKgorICogVGhpcyBtZXRob2Qgd291bGQgYmUgdXNlZCBpbiB3cml0ZV9w Y2lyY19ub2RlcyB3aGVuIHdyaXRpbmcgaWRtYXBzCisgKi8KK3Vuc2lnbmVkIGludCBnZXRfaXRz X25vZGVfb2Zmc2V0KHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqaXRzX25vZGUpCit7CisgICAgc3Ry dWN0IGl0c19ub2RlX29mZnNldF9tYXAgKml0c19tYXA7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRy eShpdHNfbWFwLCAmaXRzX21hcF9saXN0LCBlbnRyeSkKKyAgICB7CisgICAgICAgIGlmICggaXRz X21hcC0+aXRzX25vZGUgPT0gaXRzX25vZGUgKQorICAgICAgICAgICAgcmV0dXJuIGl0c19tYXAt Pm9mZnNldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBmcmVlX2l0c19ub2Rl X29mZnNldF9saXN0KHZvaWQpCit7CisKKyAgICBzdHJ1Y3QgaXRzX25vZGVfb2Zmc2V0X21hcCAq aXRzX21hcDsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0c19tYXAsICZpdHNfbWFwX2xpc3Qs IGVudHJ5KQorICAgICAgICB4ZnJlZShpdHNfbWFwKTsKKworICAgIGxpc3RfZGVsKCZpdHNfbWFw X2xpc3QpOworfQorCit2b2lkIHdyaXRlX2l0c19ncm91cCh1OCAqaW9ydCwgdW5zaWduZWQgaW50 ICpvZmZzZXQsIHVuc2lnbmVkIGludCAqbnVtX25vZGVzKQoreworICAgIHN0cnVjdCByaWRfZGV2 aWNlaWRfbWFwICpybWFwOworICAgIHVuc2lnbmVkIGludCBvZiA9ICpvZmZzZXQ7CisgICAgaW50 IG49MDsKKyAgICBJTklUX0xJU1RfSEVBRCgmaXRzX21hcF9saXN0KTsKKyAgICAvKgorICAgICAq IHJpZF9kZXZpY2VpZF9tYXBfbGlzdCBpcyBpdGVyYXRlZCB0byBnZXQgdW5pcXVlIGl0cyBncm91 cCBub2RlcworICAgICAqIEVhY2ggdW5pcXVlIElUUyBncm91cCBub2RlIGlzIHdyaXR0ZW4gaW4g aGFyZHdhcmUgZG9tYWlucyBJT1JUCisgICAgICogYnkgdXNpbmcgc29tZSB2YWx1ZXMgZnJvbSB0 aGUgZmlybXdhcmUgSVRTIGdyb3VwIG5vZGUuCisgICAgICovCisgICAgbGlzdF9mb3JfZWFjaF9l bnRyeShybWFwLCAmcmlkX2RldmljZWlkX21hcF9saXN0LCBlbnRyeSkKKyAgICB7CisgICAgICAg IHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZTsKKyAgICAgICAgc3RydWN0IGFjcGlfaW9ydF9p dHNfZ3JvdXAgKmdycDsKKyAgICAgICAgc3RydWN0IGFjcGlfaW9ydF9pdHNfZ3JvdXAgKmZ3X2dy cDsKKworICAgICAgICAvKiBzYXZlIGl0c19ub2RlX29mZnNldF9tYXAgaW4gYSBsaXN0IHVuaXF1 ZWx5ICovCisgICAgICAgIGlmICggIXNldF9pdHNfbm9kZV9vZmZzZXQocm1hcC0+aXRzX25vZGUs IG9mKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIG5vZGUgPSAoc3RydWN0IGFjcGlfaW9ydF9u b2RlICopICZpb3J0W29mXTsKKyAgICAgICAgICAgIGdycCA9IChzdHJ1Y3QgYWNwaV9pb3J0X2l0 c19ncm91cCAqKSgmbm9kZS0+bm9kZV9kYXRhKTsKKworICAgICAgICAgICAgbm9kZS0+dHlwZSA9 IEFDUElfSU9SVF9OT0RFX0lUU19HUk9VUDsKKyAgICAgICAgICAgIG5vZGUtPmxlbmd0aCA9IHNp emVvZihzdHJ1Y3QgYWNwaV9pb3J0X25vZGUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVvZihzdHJ1Y3QgYWNwaV9pb3J0X2l0c19ncm91cCkgLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKG5vZGUtPm5vZGVfZGF0YSk7CisKKyAgICAgICAgICAgIG5vZGUtPnJl dmlzaW9uID0gcm1hcC0+aXRzX25vZGUtPnJldmlzaW9uOworICAgICAgICAgICAgbm9kZS0+cmVz ZXJ2ZWQgPSAwOworICAgICAgICAgICAgbm9kZS0+bWFwcGluZ19jb3VudCA9IDA7CisgICAgICAg ICAgICBub2RlLT5tYXBwaW5nX29mZnNldD0gMDsKKworICAgICAgICAgICAgZndfZ3JwID0gKHN0 cnVjdCBhY3BpX2lvcnRfaXRzX2dyb3VwICopKCZybWFwLT5pdHNfbm9kZS0+bm9kZV9kYXRhKTsK KworICAgICAgICAgICAgZ3JwLT5pdHNfY291bnQgPSBmd19ncnAtPml0c19jb3VudDsKKyAgICAg ICAgICAgIGdycC0+aWRlbnRpZmllcnNbMF0gPSBmd19ncnAtPmlkZW50aWZpZXJzWzBdOworCisg ICAgICAgICAgICBvZiArPSBub2RlLT5sZW5ndGg7CisgICAgICAgICAgICBuKys7CisgICAgICAg IH0KKyAgICB9CisgICAgKm9mZnNldCA9IG9mOworICAgICpudW1fbm9kZXMgPSBuOworfQorCisv KiBJdCBpcyBhc3N1bWVkIHRoYXQgcmlkX21hcF9kZXZpZCBpcyBzb3J0ZWQgYnkgcGNpcmNfbm9k ZXMgKi8KK3ZvaWQgd3JpdGVfcGNpcmNfbm9kZXModTggKmlvcnQsIHVuc2lnbmVkIGludCAqcG9z LCB1bnNpZ25lZCBpbnQgKm51bV9ub2RlcykKK3sKKyAgICBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUg Km9wY2lyY19ub2RlLCAqcGNpcmNfbm9kZTsKKyAgICBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmh3 ZG9tX3BjaXJjX25vZGUgPSBOVUxMOworICAgIHN0cnVjdCByaWRfZGV2aWNlaWRfbWFwICpybWFw OworICAgIHN0cnVjdCBhY3BpX2lvcnRfaWRfbWFwcGluZyAqaWRtYXA7CisgICAgaW50IG51bV9p ZG1hcCA9IDAsIG4gPSAwOworICAgIHVuc2lnbmVkIGludCBvbGRfcG9zID0gKnBvczsKKworICAg IG9wY2lyY19ub2RlID0gTlVMTDsKKyAgICAvKiBJdGVyYXRlIHJpZF9tYXBfZGV2aWQgbGlzdCAq LworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocm1hcCwgJnJpZF9kZXZpY2VpZF9tYXBfbGlzdCwg ZW50cnkpCisgICAgeworICAgICAgICBzdHJ1Y3QgYWNwaV9pb3J0X3Jvb3RfY29tcGxleCAqcmM7 CisgICAgICAgIHN0cnVjdCBhY3BpX2lvcnRfcm9vdF9jb21wbGV4ICpyY19mdzsKKyAgICAgICAg aW50IGFkZF9ub2RlID0gMDsKKyAgICAgICAgcGNpcmNfbm9kZSA9IHJtYXAtPnBjaXJjX25vZGU7 CisKKyAgICAgICAgaWYgKCBvcGNpcmNfbm9kZSA9PSBOVUxMICkgLyogRmlyc3QgZW50cnkgKi8K KyAgICAgICAgeworICAgICAgICAgICAgYWRkX25vZGUgPSAxOworICAgICAgICB9CisgICAgICAg IGVsc2UgaWYgKCBvcGNpcmNfbm9kZSAhPSBwY2lyY19ub2RlICkgLyogYW5vdGhlciBwY2lfcmNf bm9kZSBmb3VuZCovCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEFsbCB0aGUgaWRtYXBzIG9m IGEgcGNpcmMgYXJlIHdyaXR0ZW4sIG5vdyB1cGRhdGUgbm9kZSBpbmZvKi8KKyAgICAgICAgICAg IGh3ZG9tX3BjaXJjX25vZGUtPmxlbmd0aCA9IG51bV9pZG1hcCAqCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGFjcGlfaW9ydF9pZF9tYXBwaW5n KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0 IGFjcGlfaW9ydF9ub2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2Yoc3RydWN0IGFjcGlfaW9ydF9yb290X2NvbXBsZXgpIC0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwY2lyY19ub2RlLT5ub2RlX2RhdGEpOwor CisgICAgICAgICAgICBod2RvbV9wY2lyY19ub2RlLT5tYXBwaW5nX2NvdW50ID0gbnVtX2lkbWFw OworICAgICAgICAgICAgaHdkb21fcGNpcmNfbm9kZS0+bWFwcGluZ19vZmZzZXQgPSBzaXplb2Yo c3RydWN0IGFjcGlfaW9ydF9ub2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWNwaV9pb3J0X3Jvb3RfY29tcGxleCkgLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YocGNp cmNfbm9kZS0+bm9kZV9kYXRhKTsKKyAgICAgICAgICAgIG9sZF9wb3MgKz0gaHdkb21fcGNpcmNf bm9kZS0+bGVuZ3RoOworICAgICAgICAgICAgYWRkX25vZGUgPSAxOworICAgICAgICB9CisKKyAg ICAgICAgaWYgKCBhZGRfbm9kZSApIC8qIGNyZWF0ZSB0aGUgcGNpcmMgbm9kZSAqLworICAgICAg ICB7CisgICAgICAgICAgICBvcGNpcmNfbm9kZSA9IHBjaXJjX25vZGU7CisgICAgICAgICAgICBo d2RvbV9wY2lyY19ub2RlID0gKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqKSZpb3J0W29sZF9wb3Nd OworICAgICAgICAgICAgaHdkb21fcGNpcmNfbm9kZS0+dHlwZSA9IEFDUElfSU9SVF9OT0RFX1BD SV9ST09UX0NPTVBMRVg7CisgICAgICAgICAgICBod2RvbV9wY2lyY19ub2RlLT5tYXBwaW5nX29m ZnNldCA9IHNpemVvZihzdHJ1Y3QgYWNwaV9pb3J0X25vZGUpICsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY3BpX2lvcnRfcm9v dF9jb21wbGV4KSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihod2RvbV9wY2lyY19ub2RlLT5ub2RlX2RhdGEpOworCisgICAgICAgICAgICBy YyA9IChzdHJ1Y3QgYWNwaV9pb3J0X3Jvb3RfY29tcGxleCAqKQorICAgICAgICAgICAgICAgICAg Jmh3ZG9tX3BjaXJjX25vZGUtPm5vZGVfZGF0YTsKKworICAgICAgICAgICAgcmNfZncgPSAoc3Ry dWN0IGFjcGlfaW9ydF9yb290X2NvbXBsZXggKikKKyAgICAgICAgICAgICAgICAgICAgICZwY2ly Y19ub2RlLT5ub2RlX2RhdGE7CisKKyAgICAgICAgICAgIHJjLT5wY2lfc2VnbWVudF9udW1iZXIg PSByY19mdy0+cGNpX3NlZ21lbnRfbnVtYmVyOworICAgICAgICAgICAgcmMtPmF0c19hdHRyaWJ1 dGUgPSByY19mdy0+YXRzX2F0dHJpYnV0ZTsKKyAgICAgICAgICAgIHJjLT5tZW1vcnlfcHJvcGVy dGllcyA9IHJjX2Z3LT5tZW1vcnlfcHJvcGVydGllczsKKworICAgICAgICAgICAgaWRtYXAgPSBB Q1BJX0FERF9QVFIoc3RydWN0IGFjcGlfaW9ydF9pZF9tYXBwaW5nLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaHdkb21fcGNpcmNfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGh3ZG9tX3BjaXJjX25vZGUtPm1hcHBpbmdfb2Zmc2V0KTsKKyAgICAgICAg ICAgIG4rKzsKKyAgICAgICAgICAgIG51bV9pZG1hcCA9IDA7CisgICAgICAgIH0KKworICAgICAg ICBpZG1hcC0+aW5wdXRfYmFzZSA9IHJtYXAtPmlkbWFwLmlucHV0X2Jhc2U7CisgICAgICAgIGlk bWFwLT5pZF9jb3VudCA9IHJtYXAtPmlkbWFwLmlkX2NvdW50OworICAgICAgICBpZG1hcC0+b3V0 cHV0X2Jhc2UgPSBybWFwLT5pZG1hcC5vdXRwdXRfYmFzZTsKKyAgICAgICAgaWRtYXAtPm91dHB1 dF9yZWZlcmVuY2UgPSBnZXRfaXRzX25vZGVfb2Zmc2V0KHJtYXAtPml0c19ub2RlKTsKKyAgICAg ICAgaWRtYXAtPmZsYWdzID0gMDsKKworICAgICAgICBpZG1hcCsrOworICAgICAgICBudW1faWRt YXArKzsKKyAgICB9CisKKyAgICBpZiAoIGh3ZG9tX3BjaXJjX25vZGUgKSAvKiBpZiBubyBmdXJ0 aGVyIFBDSVJDIG5vZGVzIGZvdW5kICovCisgICAgeworICAgICAgICAvKiBBbGwgdGhlIGlkbWFw cyBvZiBhIHBjaXJjIGFyZSB3cml0dGVuLCBub3cgdXBkYXRlIG5vZGUgaW5mbyovCisgICAgICAg IGh3ZG9tX3BjaXJjX25vZGUtPmxlbmd0aCA9IG51bV9pZG1hcCAqCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWNwaV9pb3J0X2lkX21hcHBpbmcpICsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY3BpX2lv cnRfbm9kZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3Ry dWN0IGFjcGlfaW9ydF9yb290X2NvbXBsZXgpIC0xOworCisgICAgICAgIGh3ZG9tX3BjaXJjX25v ZGUtPm1hcHBpbmdfY291bnQgPSBudW1faWRtYXA7CisgICAgICAgIG9sZF9wb3MgKz0gaHdkb21f cGNpcmNfbm9kZS0+bGVuZ3RoOworICAgIH0KKworICAgICpwb3MgPSBvbGRfcG9zOworICAgICpu dW1fbm9kZXMgPSBuOworfQorCitpbnQgcHJlcGFyZV9pb3J0KHN0cnVjdCBhY3BpX3RhYmxlX2lv cnQgKmh3ZG9tX2lvcnQsIHVuc2lnbmVkIGludCAqaW9ydF9zaXplKQoreworICAgIHN0cnVjdCBh Y3BpX3RhYmxlX2lvcnQgKmZ3X2lvcnQ7CisgICAgdW5zaWduZWQgaW50IG51bV9ub2RlcyA9IDA7 CisgICAgdW5zaWduZWQgaW50IHBvczsKKworICAgIHBvcyA9IHNpemVvZihzdHJ1Y3QgYWNwaV90 YWJsZV9pb3J0KTsKKworICAgIGlmICggYWNwaV9nZXRfdGFibGUoQUNQSV9TSUdfSU9SVCwgMCwK KyAgICAgICAgIChzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKiopJmZ3X2lvcnQpICkKKyAgICB7 CisgICAgICAgIHByaW50aygiRmFpbGVkIHRvIGdldCBJT1JUIHRhYmxlXG4iKTsKKyAgICAgICAg cmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAgLyogV3JpdGUgSU9SVCBoZWFkZXIgKi8KKyAg ICBBQ1BJX01FTUNQWShod2RvbV9pb3J0LCBmd19pb3J0LCBzaXplb2Yoc3RydWN0IGFjcGlfdGFi bGVfaW9ydCkpOworICAgIGh3ZG9tX2lvcnQtPm5vZGVfb2Zmc2V0ID0gcG9zOworICAgIGh3ZG9t X2lvcnQtPm5vZGVfY291bnQgPSAwOworCisgICAgLyogV3JpdGUgaXRzIGdyb3VwIG5vZGVzICov CisgICAgd3JpdGVfaXRzX2dyb3VwKCh1OCopaHdkb21faW9ydCwgJnBvcywgJm51bV9ub2Rlcyk7 CisgICAgaHdkb21faW9ydC0+bm9kZV9jb3VudCA9IG51bV9ub2RlczsKKyAgICAvKiBXcml0ZSBw Y2lyY19ub2RlcyovCisgICAgd3JpdGVfcGNpcmNfbm9kZXMoKHU4Kilod2RvbV9pb3J0LCAmcG9z LCAmbnVtX25vZGVzKTsKKyAgICAvKiBVcGRhdGUgSU9SVCBTaXplIGluIElPUlQgaGVhZGVyICov CisgICAgaHdkb21faW9ydC0+bm9kZV9jb3VudCArPSBudW1fbm9kZXM7CisgICAgaHdkb21faW9y dC0+aGVhZGVyLmxlbmd0aCA9IHBvczsKKyAgICBod2RvbV9pb3J0LT5oZWFkZXIuY2hlY2tzdW0g PSAwOyAvKiBUT0RPICovCisKKyAgICAqaW9ydF9zaXplID0gaHdkb21faW9ydC0+aGVhZGVyLmxl bmd0aDsKKworICAgIHJldHVybiAwOworfQorCiAvKgogICogU2l6ZSBvZiBoYXJkd2FyZSBkb21h aW5zIGlvcnQgaXMgY2FsdWxjYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mCiAgKiBtYXBwaW5n cyBpbiB0aGUgcmVxdWVzdGVySWQgLSBkZXZpY2VJZCBtYXBwaW5nIGxpc3QuCkBAIC00OSw3ICsz MDAsNyBAQCBpbnQgZXN0aW1hdGVfaW9ydF9zaXplKHNpemVfdCAqaW9ydF9zaXplKQogICAgIHsK ICAgICAgICAgaW50IGkgPSAwOwogCi0gICAgICAgIGZvciAoaT0wOyBpIDw9IHBjaXJjX2NvdW50 OyBpKyspCisgICAgICAgIGZvciAoIGk9MDsgaSA8PSBwY2lyY19jb3VudDsgaSsrICkKICAgICAg ICAgewogICAgICAgICAgICAgaWYgKCBwY2lyY19hcnJheVtpXSA9PSAodWludDY0X3Qpcm1hcC0+ cGNpcmNfbm9kZSApCiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hY3BpL2dlbi1pb3J0LmggYi94ZW4vaW5jbHVkZS9hY3BpL2dlbi1pb3J0LmgKaW5kZXgg NjhlNjY2ZmRjZS4uNGRlMzFiN2I5ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYWNwaS9nZW4t aW9ydC5oCisrKyBiL3hlbi9pbmNsdWRlL2FjcGkvZ2VuLWlvcnQuaApAQCAtMiw1ICsyLDYgQEAK ICNkZWZpbmUgX0dFTl9JT1JUX0gKIAogaW50IGVzdGltYXRlX2lvcnRfc2l6ZShzaXplX3QgKmlv cnRfc2l6ZSk7CitpbnQgcHJlcGFyZV9pb3J0KHN0cnVjdCBhY3BpX3RhYmxlX2lvcnQgKmh3ZG9t X2lvcnQsIHVuc2lnbmVkIGludCAqaW9ydF9zaXplKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20tYXJtL2FjcGkuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vYWNwaS5oCmlu ZGV4IGMxODNiNmJiNmUuLmY4YjUyNTQ2MjEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vYWNwaS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vYWNwaS5oCkBAIC0zNiw2ICszNiw3 IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgVEJMX0ZBRFQsCiAgICAgVEJMX01BRFQsCiAgICAgVEJM X1NUQU8sCisgICAgVEJMX0lPUlQsCiAgICAgVEJMX1hTRFQsCiAgICAgVEJMX1JTRFAsCiAgICAg VEJMX0VGSVQsCi0tIAoyLjE0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs