From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Patterson Subject: [PATCH 6/6] xen/arm: platforms/tegra: Ensure the hwdom can only affect its own interrupts Date: Thu, 6 Apr 2017 15:47:54 -0400 Message-ID: <1491508074-31647-7-git-send-email-cjp256@gmail.com> References: <1491508074-31647-1-git-send-email-cjp256@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1491508074-31647-1-git-send-email-cjp256@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Chris Patterson , julien.grall@arm.com, sstabellini@kernel.org, temkink@ainfosec.com List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hyaXMgUGF0dGVyc29uIDxwYXR0ZXJzb25jQGFpbmZvc2VjLmNvbT4KClNldmVyYWwg VGVncmEgaGFyZHdhcmUgZGV2aWNlcywgYW5kIHRoZSBUZWdyYSBkZXZpY2UgdHJlZSwgZXhwZWN0 CnRoZSBwcmVzZW5jZSBvZiBhIFRlZ3JhIExlZ2FjeSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoTElD KSBpbiB0aGUgaGFyZHdhcmUKZG9tYWluLiBBY2NvcmRpbmdseSwgd2UnbGwgbmVlZCB0byBleHBv c2UgKG1vc3Qgb2YpIHRoZSBMSUMncyByZWdpc3RlcnMKdG8gdGhlIGhhcmR3YXJlIGRvbWFpbi4K CkFzIHRoZSBUZWdyYSBMSUMgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gbW9kaWZ5IGludGVycnVw dCBkZWxpdmVyeSAoZS5nLgpieSBtYXNraW5nIGludGVycnVwdHMsIGZvcmNpbmcgYXNzZXJ0aW5n L2NsZWFyaW5nIHRoZW0sIG9yIGFkanVzdGluZwp0aGVpciBwcm9yaXR5KSwgaXQncyBpbXBvcnRh bnQgdGhhdCB0aGUgaGFyZHdhcmUgZG9tYWluJ3MgYWNjZXNzIGJlCm1lZGlhdGVkLiBUaGlzIGNv bW1pdCBhZGRzIHJlYWQvd3JpdGUgaGFuZGxlcnMgdGhhdCBwcm9oaWJpdAptb2RpZmljYXRpb24g b2YgcmVnaXN0ZXIgc2VjdGlvbnMgY29ycmVzcG9uZGluZyB0byBpbnRlcnJ1cHRzIG5vdCBvd25l ZApieSB0aGUgaGFyZHdhcmUgZG9tYWluLgoKTm90ZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiB0byBi ZSBkb21haW4gYWdub3N0aWM7IHRoaXMgYWxsb3dzIHRoZQpwb3RlbnRpYWwgdG8gZS5nLiBtYXAg dGhlIGljdGxyIGludG8gbXVsdGlwbGUgZG9tYWlucyBpZiB0aGlzIGlzIGRlc2lyZWQKZm9yIHBh c3N0aHJvdWdoIGluIHRoZSBmdXR1cmUuCgpBdXRob3JlZC1ieTogS3lsZSBUZW1raW4gPHRlbWtp bmtAYWluZm9zZWMuY29tPgpTaWduZWQtb2ZmLWJ5OiBLeWxlIFRlbWtpbiA8dGVta2lua0BhaW5m b3NlYy5jb20+ClNpZ25lZC1vZmYtYnk6IENocmlzIFBhdHRlcnNvbiA8cGF0dGVyc29uY0BhaW5m b3NlYy5jb20+Ci0tLQoKY2hhbmdlcyBzaW5jZSByZmM6Ci0gZG9jdW1lbnRhdGlvbiwgZm9ybWF0 dGluZyAmIGNvZGUgc3R5bGUgY2xlYW51cAotIGRyb3AgdGVncmFfaW5pdCBjaGFuZ2VzIChmb2xk ZWQgaW50byBwYXRjaCA0KQoKLS0tCiB4ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL01ha2VmaWxlICAg ICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90ZWdyYS1tbGljLmMgICAg ICAgIHwgMjYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9hcm0vcGxh dGZvcm1zL3RlZ3JhLmMgICAgICAgICAgICAgfCAgMTMgKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0v cGxhdGZvcm1zL3RlZ3JhLW1saWMuaCB8ICAzNCArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDMxMCBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90 ZWdyYS1tbGljLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20tYXJtL3BsYXRm b3Jtcy90ZWdyYS1tbGljLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL01h a2VmaWxlIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9NYWtlZmlsZQppbmRleCBkNzAzM2QyLi41 NzAxZTYyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL01ha2VmaWxlCisrKyBi L3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvTWFrZWZpbGUKQEAgLTcsNiArNyw4IEBAIG9iai0kKENP TkZJR19BUk1fMzIpICs9IHJjYXIyLm8KIG9iai0kKENPTkZJR19BUk1fNjQpICs9IHNlYXR0bGUu bwogb2JqLSQoQ09ORklHX0FSTV8zMikgKz0gc3VueGkubwogb2JqLSQoQ09ORklHX0FSTV8zMikg Kz0gdGVncmEubworb2JqLSQoQ09ORklHX0FSTV8zMikgKz0gdGVncmEtbWxpYy5vCiBvYmotJChD T05GSUdfQVJNXzY0KSArPSB0ZWdyYS5vCitvYmotJChDT05GSUdfQVJNXzY0KSArPSB0ZWdyYS1t bGljLm8KIG9iai0kKENPTkZJR19BUk1fNjQpICs9IHhnZW5lLXN0b3JtLm8KIG9iai0kKENPTkZJ R19BUk1fNjQpICs9IHhpbGlueC16eW5xbXAubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Bs YXRmb3Jtcy90ZWdyYS1tbGljLmMgYi94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL3RlZ3JhLW1saWMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDc3NzY2Ci0tLSAvZGV2L251 bGwKKysrIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90ZWdyYS1tbGljLmMKQEAgLTAsMCArMSwy NjAgQEAKKy8qCisgKiB4ZW4vYXJjaC9hcm0vdGVncmFfbWxpYy5jCisgKgorICogTWVkaWF0b3Ig Zm9yIFRlZ3JhIExlZ2FjeSBJbnRlcnJ1cHQgQ29udHJvbGxlcgorICoKKyAqIFRoaXMgbW9kdWxl IGFsbG93IHRoZSBoYXJkd2FyZSBkb21haW4gdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlY3Rpb25z IG9mCisgKiB0aGUgbGVnYWN5IGludGVycnVwdCBjb250cm9sbGVyIHRoYXQgY29ycmVzcG9uZCB0 byBpdHMgZGV2aWNlcywKKyAqIGJ1dCBkaXNhbGxvdyBhY2Nlc3MgdG8gdGhlIHNlY3Rpb25zIGNv bnRyb2xsZWQgYnkgb3RoZXIgZG9tYWlucworICogb3IgYnkgWGVuLgorICoKKyAqIEt5bGUgVGVt a2luOyBDb3B5cmlnaHQgKGMpIDIwMTYgQXNzdXJlZCBJbmZvcm1hdGlvbiBTZWN1cml0eSwgSW5j LgorICogQ2hyaXMgUGF0dGVyc29uOyBDb3B5cmlnaHQgKGMpIDIwMTYgQXNzdXJlZCBJbmZvcm1h dGlvbiBTZWN1cml0eSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1 ZGUgPHhlbi9zdGRib29sLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVu L3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4vaW9jYXAuaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgor I2luY2x1ZGUgPGFzbS9naWMuaD4KKyNpbmNsdWRlIDxhc20vcGxhdGZvcm0uaD4KKyNpbmNsdWRl IDxhc20vcGxhdGZvcm1zL3RlZ3JhLmg+CisjaW5jbHVkZSA8YXNtL3BsYXRmb3Jtcy90ZWdyYS1t bGljLmg+CisjaW5jbHVkZSA8YXNtL21taW8uaD4KKyNpbmNsdWRlIDx4ZW4vcGVyZmMuaD4KKwor c3RhdGljIGludCB0ZWdyYV9tbGljX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZv X3QgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICpyLCB2b2lk ICpwcml2KTsKK3N0YXRpYyBpbnQgdGVncmFfbWxpY19tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2 LCBtbWlvX2luZm9fdCAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rl cl90IHIsIHZvaWQgKnByaXYpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1taW9faGFuZGxlcl9v cHMgdGVncmFfbWxpY19tbWlvX2hhbmRsZXIgPSB7CisgICAgLnJlYWQgID0gdGVncmFfbWxpY19t bWlvX3JlYWQsCisgICAgLndyaXRlID0gdGVncmFfbWxpY19tbWlvX3dyaXRlLAorfTsKKworLyoK KyAqIFBhcnNlcyBhIExJQyBNTUlPIHJlYWQgb3Igd3JpdGUsIGFuZCBleHRyYWN0cyB0aGUgaW5m b3JtYXRpb24gbmVlZGVkIHRvCisgKiBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKyAqCisgKiBpbmZv OiBJbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBNTUlPIHJlYWQvd3JpdGUgYmVpbmcgcGVyZm9y bWVkCisgKiBpY3Rscl9pbmRleDogVGhlIGludGVycnVwdCBjb250cm9sbGVyIG51bWJlciBpbiB0 aGUgaWN0bHIgKGUuZy4gMC01KQorICogcmVnaXN0ZXJfb2Zmc2V0OiBUaGUgcmVnaXN0ZXIgb2Zm c2V0IGludG8gdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICogICAgICAgIChl LmcuIFRFR1JBX0lDVExSX0NQVV9JRVJfU0VUKQorICogaXJxX2Jhc2U6IFRoZSBudW1iZXIgb2Yg dGhlIGZpcnN0IElSUSByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gaWN0bHIuCisgKi8KK3N0YXRp YyB2b2lkIHRlZ3JhX21saWNfcGFyc2VfbW1pb19yZXF1ZXN0KG1taW9faW5mb190ICppbmZvLAor ICAgIHVpbnQzMl90ICppY3Rscl9pbmRleCwgdWludDMyX3QgKnJlZ2lzdGVyX29mZnNldCwgdWlu dDMyX3QgKmlycV9iYXNlKQoreworICAgIC8qIERldGVybWluZSB0aGUgb2Zmc2V0IG9mIHRoZSBh Y2Nlc3MgaW50byB0aGUgSUNUTFIgcmVnaW9uLiAqLworICAgIHVpbnQzMl90IG9mZnNldCA9IGlu Zm8tPmdwYSAtIFRFR1JBX0lDVExSX0JBU0U7CisgICAgdWludDMyX3QgaWN0bHIgPSBvZmZzZXQg LyBURUdSQV9JQ1RMUl9TSVpFOworICAgIHVpbnQzMl90IHJlZyA9IG9mZnNldCAlIFRFR1JBX0lD VExSX1NJWkU7CisKKyAgICBpZiAoIGljdGxyX2luZGV4ICkKKyAgICAgICAgKmljdGxyX2luZGV4 ID0gaWN0bHI7CisKKyAgICBpZiAoIHJlZ2lzdGVyX29mZnNldCApCisgICAgICAgICpyZWdpc3Rl cl9vZmZzZXQgPSByZWc7CisKKyAgICBpZiAoIGlycV9iYXNlICkKKyAgICAgICAgKmlycV9iYXNl ID0gKGljdGxyICogVEVHUkFfSVJRU19QRVJfSUNUTFIpICsgTlJfTE9DQUxfSVJRUzsKKworICAg IC8qIEVuc3VyZSB0aGF0IHdlJ3ZlIG9ubHkgYmVlbiBoYW5kZWQgYSB2YWxpZCBvZmZzZXQgd2l0 aGluIG91ciByZWdpb24uICovCisgICAgQlVHX09OKGljdGxyID49IFRFR1JBX0lDVExSX0NPVU5U KTsKKyAgICBCVUdfT04ob2Zmc2V0ID49IChURUdSQV9JQ1RMUl9DT1VOVCAqIFRFR1JBX0lDVExS X1NJWkUpKTsKKyAgICBCVUdfT04oKGljdGxyICogVEVHUkFfSUNUTFJfU0laRSArIHJlZykgIT0g b2Zmc2V0KTsKK30KKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIElSUSBpcyBj dXJyZW50bHkgcm91dGVkIHRvIHRoZSBnaXZlbiBkb21haW4uCisgKi8KK3N0YXRpYyBib29sIGly cV9vd25lZF9ieV9kb21haW4oaW50IGlycSwgc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1 Y3QgaXJxX2Rlc2MgKmRlc2MgPSBpcnFfdG9fZGVzYyhpcnEpOworICAgIGRvbWlkX3QgZG9taWQ7 CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgIEJVR19PTighZGVzYyk7CisKKyAgICBz cGluX2xvY2tfaXJxc2F2ZSgmZGVzYy0+bG9jaywgZmxhZ3MpOworICAgIGRvbWlkID0gaXJxX2dl dF9kb21haW5faWQoZGVzYyk7CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGVzYy0+bG9j aywgZmxhZ3MpOworCisgICAgcmV0dXJuIChkLT5kb21haW5faWQgPT0gZG9taWQpOworfQorCisv KgorICogTWVkaWF0ZXMgYW4gTU1JTy1yZWFkIHRvIHRoZSBUZWdyYSBsZWdhY3kgaW50ZXJydXB0 IGNvbnRyb2xsZXIuCisgKiBFbnN1cmVzIHRoYXQgZWFjaCBkb21haW4gb25seSBpcyBwYXNzZWQg aW50ZXJydXB0IHN0YXRlIGZvciBpdHMKKyAqIG93biBpbnRlcnVwdHMuCisgKi8KK3N0YXRpYyBp bnQgdGVncmFfbWxpY19tbWlvX3JlYWQoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICp0YXJnZXRfcmVn aXN0ZXIsIHZvaWQgKnByaXYpCit7CisgICAgcmVnaXN0ZXJfdCByYXdfdmFsdWU7CisgICAgdW5z aWduZWQgaW50IGljdGxyX2luZGV4OworICAgIHVuc2lnbmVkIGludCByZWdpc3Rlcl9vZmZzZXQ7 CisgICAgdW5zaWduZWQgaW50IGlycV9iYXNlOworICAgIGludCBpOworCisgICAgcGVyZmNfaW5j cih0ZWdyYV9tbGljX3JlYWRzKTsKKworICAgIHRlZ3JhX21saWNfcGFyc2VfbW1pb19yZXF1ZXN0 KGluZm8sICZpY3Rscl9pbmRleCwgJnJlZ2lzdGVyX29mZnNldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZpcnFfYmFzZSk7CisKKyAgICAvKiBTYW5pdHkgY2hlY2sg dGhlIHJlYWQuICovCisgICAgaWYgKCByZWdpc3Rlcl9vZmZzZXQgJiAweDMgKQorICAgIHsKKyAg ICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiZCV1OiBUZWdyYSBMSUM6IEF0dGVtcHQgdG8gcmVh ZCB1bmFsaWduZWQgaWN0bHIgYWRkciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCUi IFBSSXBhZGRyICIpXG4iLCBjdXJyZW50LT5kb21haW4tPmRvbWFpbl9pZCwgaW5mby0+Z3BhKTsK KyAgICAgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7CisgICAgfQorCisgICAgaWYgKCBp bmZvLT5kYWJ0LnNpemUgIT0gREFCVF9XT1JEICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5M T0dfR19FUlIgImQldTogVGVncmEgTElDOiBOb24td29yZCByZWFkIGZyb20gaWN0bHIgYWRkciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSIgUFJJcGFkZHIgIlxuIiwgY3VycmVudC0+ ZG9tYWluLT5kb21haW5faWQsIGluZm8tPmdwYSk7CisgICAgICAgIGRvbWFpbl9jcmFzaF9zeW5j aHJvbm91cygpOworICAgIH0KKworCisgICAgLyogUGVyZm9ybSB0aGUgY29yZSBpY3RsciByZWFk LiAqLworICAgIHJhd192YWx1ZSA9IHRlZ3JhX2xpY19yZWFkbChpY3Rscl9pbmRleCwgcmVnaXN0 ZXJfb2Zmc2V0KTsKKworICAgIC8qCisgICAgICogV2UgZG9uJ3Qgd2FudCB0byBsZWFrIGluZm9y bWF0aW9uIGFib3V0IGludGVycnVwdHMgbm90IGNvbnRyb2xsZWQKKyAgICAgKiBieSB0aGUgYWN0 aXZlIGRvbWFpbi4gVGh1cywgd2UnbGwgemVybyBvdXQgYW55IGljdGxyIHNsb3RzIGZvcgorICAg ICAqIElSUXMgbm90IG93bmVkIGJ5IHRoZSBnaXZlbiBkb21haW4uCisgICAgICovCisgICAgZm9y ICggaSA9IDA7IGkgPCBURUdSQV9JUlFTX1BFUl9JQ1RMUjsgKytpICkgeworICAgICAgICBpbnQg aXJxID0gaXJxX2Jhc2UgKyBpOworCisgICAgICAgIGlmICggIWlycV9vd25lZF9ieV9kb21haW4o aXJxLCBjdXJyZW50LT5kb21haW4pICkKKyAgICAgICAgICAgIHJhd192YWx1ZSAmPSB+KCAxIDw8 IGkgKTsKKyAgICB9CisKKyAgICAvKiBGaW5hbGx5LCBzZXQgdGhlIHRhcmdldCByZWdpc3RlciB0 byBvdXIgcmVhZCB2YWx1ZSAqLworICAgICp0YXJnZXRfcmVnaXN0ZXIgPSByYXdfdmFsdWU7Cisg ICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBNZWRpYXRlcyBhbiBNTUlPLXJlYWQgdG8gdGhlIFRl Z3JhIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAqIEVuc3VyZXMgdGhhdCBlYWNoIGRv bWFpbiBvbmx5IGNhbiBvbmx5IGNvbnRyb2wgaXMgb3duIGludGVycnVwdHMuCisgKi8KK3N0YXRp YyBpbnQgdGVncmFfbWxpY19tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAq aW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfdCBuZXdf dmFsdWUsIHZvaWQgKnByaXYpCit7CisgICAgcmVnaXN0ZXJfdCB3cml0ZV9tYXNrID0gMDsKKyAg ICByZWdpc3Rlcl90IHJhd192YWx1ZTsKKyAgICB1bnNpZ25lZCBpbnQgaWN0bHJfaW5kZXg7Cisg ICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyX29mZnNldDsKKyAgICB1bnNpZ25lZCBpbnQgaXJxX2Jh c2U7CisgICAgaW50IGk7CisKKyAgICBwZXJmY19pbmNyKHRlZ3JhX21saWNfd3JpdGVzKTsKKwor ICAgIHRlZ3JhX21saWNfcGFyc2VfbW1pb19yZXF1ZXN0KGluZm8sICZpY3Rscl9pbmRleCwgJnJl Z2lzdGVyX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXJxX2Jh c2UpOworCisgICAgLyogU2FuaXR5IGNoZWNrIHRoZSByZWFkLiAqLworICAgIGlmICggcmVnaXN0 ZXJfb2Zmc2V0ICYgMHgzICkgeworICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJkJXU6IFRl Z3JhIExJQzogQXR0ZW1wdCB0byB3cml0ZSB1bmFsaWduZWQgaWN0bHIgYWRkciIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiKCUiIFBSSXBhZGRyICIpXG4iLCBjdXJyZW50LT5kb21haW4t PmRvbWFpbl9pZCwgaW5mby0+Z3BhKTsKKyAgICAgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3Vz KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICggaW5mby0+ZGFidC5zaXpl ICE9IERBQlRfV09SRCApIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiZCV1OiBUZWdy YSBMSUM6IE5vbi13b3JkIHdyaXRlIHRvIGljdGxyIGFkZHIiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiUiIFBSSXBhZGRyICJcbiIsIGN1cnJlbnQtPmRvbWFpbi0+ZG9tYWluX2lkLCBp bmZvLT5ncGEpOworICAgICAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKKyAgICAgICAg cmV0dXJuIDA7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXZSBvbmx5IHdhbnQgdG8gd3JpdGUg dG8gYml0cyB0aGF0IGNvcnJlc3BvbmQgdG8gaW50ZXJydXB0cyB0aGF0IHRoZQorICAgICAqIGN1 cnJlbnQgZG9tYWluIGNvbnRyb2xzLiBBY2NvcmRpbmdseSwgd2UnbGwgY3JlYXRlIGEgbWFzayB0 aGF0IGhhcyBhCisgICAgICogc2luZ2xlIGJpdCBzZXQgZm9yIGVhY2ggd3JpdGFibGUgYml0Lgor ICAgICAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgVEVHUkFfSVJRU19QRVJfSUNUTFI7ICsraSAp IHsKKyAgICAgICAgaW50IGlycSA9IGlycV9iYXNlICsgaTsKKworICAgICAgICBpZiAoIGlycV9v d25lZF9ieV9kb21haW4oaXJxLCBjdXJyZW50LT5kb21haW4pICkKKyAgICAgICAgICAgIHdyaXRl X21hc2sgfD0gKCAxIDw8IGkgKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlYWQgaW4gdGhl IG9yaWdpbmFsIHZhbHVlLiBXZSdsbCB1c2UgdGhpcyB0byBlbnN1cmUgdGhhdCB3ZSBtYWludGFp bgorICAgICAqIHRoZSBiaXQgdmFsdWVzIGZvciBhbnkgYml0cyBub3QgYWN0aXZlbHkgY29udHJv bGxlZCBieSB0aGlzIGRvbWFpbi4gTm90ZQorICAgICAqIHRoYXQgd2UgY2FuIHBlcmZvcm0gdGhp cyByZWFkIHdpdGhvdXQgc2lkZSBlZmZlY3RzLCBzbyB0aGlzIHNob3VsZG4ndAorICAgICAqIGNo YW5nZSB0aGUgYWN0dWFsIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQuCisgICAgICovCisgICAg cmF3X3ZhbHVlID0gdGVncmFfbGljX3JlYWRsKGljdGxyX2luZGV4LCByZWdpc3Rlcl9vZmZzZXQp OworCisgICAgLyogUmVtb3ZlIGJpdHMgdGhhdCB0aGUgZ3Vlc3QgaXMgbm90IGFsbG93ZWQgdG8g d3JpdGUuICovCisgICAgcmF3X3ZhbHVlICY9IH53cml0ZV9tYXNrOworICAgIHJhd192YWx1ZSB8 PSAod3JpdGVfbWFzayAmIG5ld192YWx1ZSk7CisKKyAgICAvKiBGaW5hbGx5IHBlcmZvcm0gdGhl IHdyaXRlLiAqLworICAgIHRlZ3JhX2xpY193cml0ZWwoaWN0bHJfaW5kZXgsIHJlZ2lzdGVyX29m ZnNldCwgcmF3X3ZhbHVlKTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFNldCB1cCB0aGUg aGFyZHdhcmUgZG9tYWluIGZvciB0aGUgVGVncmEsIGdpdmluZyBpdCBtZWRpYXRlZCBhY2Nlc3Mg dG8gdGhlCisgKiBwbGF0Zm9ybSdzIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAqLwor aW50IGRvbWFpbl90ZWdyYV9tbGljX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpbnQg cmM7CisgICAgdW5zaWduZWQgbG9uZyBwZm5fc3RhcnQsIHBmbl9lbmQ7CisKKyAgICBBU1NFUlQo IGlzX2hhcmR3YXJlX2RvbWFpbihkKSApOworCisgICAgcGZuX3N0YXJ0ID0gcGFkZHJfdG9fcGZu KFRFR1JBX0lDVExSX0JBU0UpOworICAgIHBmbl9lbmQgPSBESVZfUk9VTkRfVVAoVEVHUkFfSUNU TFJfQkFTRSArIChURUdSQV9JQ1RMUl9TSVpFICogVEVHUkFfSUNUTFJfQ09VTlQpLCBQQUdFX1NJ WkUpOworCisgICAgLyogRm9yY2UgYWxsIGFjY2VzcyB0byB0aGUgaWN0bHIgdG8gZ28gdGhyb3Vn aCBvdXIgbWVkaWF0b3IuICovCisgICAgcmMgPSBpb21lbV9kZW55X2FjY2VzcyhkLCBwZm5fc3Rh cnQsIHBmbl9lbmQpOworCisgICAgaWYgKCByYyApCisgICAgICAgIHBhbmljKCJGYWlsZWQgdG8g ZGVueSBhY2Nlc3MgdG8gdGhlIFRlZ3JhIExJQyBpb21lbSIpOworCisgICAgcmMgPSB1bm1hcF9t bWlvX3JlZ2lvbnMoZCwgX2dmbihwZm5fc3RhcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBmbl9lbmQgLSBwZm5fc3RhcnQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9tZm4ocGZuX3N0YXJ0KSk7CisKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcGFuaWMoIkZhaWxl ZCB0byBkZW55IGFjY2VzcyB0byB0aGUgVGVncmEgTElDIik7CisKKyAgICByZWdpc3Rlcl9tbWlv X2hhbmRsZXIoZCwgJnRlZ3JhX21saWNfbW1pb19oYW5kbGVyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICBURUdSQV9JQ1RMUl9CQVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICBURUdS QV9JQ1RMUl9TSVpFICogVEVHUkFfSUNUTFJfQ09VTlQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS9wbGF0Zm9ybXMvdGVncmEuYyBiL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvdGVn cmEuYwppbmRleCBiZGQ5OTY2Li5lZTYyNzA4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vcGxh dGZvcm1zL3RlZ3JhLmMKKysrIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90ZWdyYS5jCkBAIC0y MCwxMSArMjAsMTQgQEAKICNpbmNsdWRlIDx4ZW4vc3RkYm9vbC5oPgogI2luY2x1ZGUgPHhlbi9z Y2hlZC5oPgogI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVuL2lvY2FwLmg+CiAK ICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vZ2ljLmg+CiAjaW5jbHVkZSA8YXNt L3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8YXNtL3BsYXRmb3Jtcy90ZWdyYS5oPgorI2luY2x1ZGUg PGFzbS9wbGF0Zm9ybXMvdGVncmEtbWxpYy5oPgorI2luY2x1ZGUgPGFzbS9tbWlvLmg+CiAKIC8q IFBlcm1hbmVudCBtYXBwaW5nIHRvIHRoZSBUZWdyYSBsZWdhY3kgaW50ZXJydXB0IGNvbnRyb2xs ZXIuICovCiBzdGF0aWMgdm9pZCBfX2lvbWVtICp0ZWdyYV9pY3Rscl9iYXNlOwpAQCAtMjExLDYg KzIxNCwxNSBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9yb3V0ZV9pcnFfdG9feGVuKHN0cnVjdCBpcnFf ZGVzYyAqZGVzYywgdW5zaWduZWQgaW50IHByaW9yaXR5KQogfQogCiAvKgorICogVXNlIHBsYXRm b3JtIHNwZWNpZmljIG1hcHBpbmcgZm9yIGhvb2sgdG8gaW5pdGlhbGl6ZSBtZWRpYXRlZCBsZWdh Y3kKKyAqIGludGVycnVwdCBjb250cm9sbGVyIGZvciBoYXJkd2FyZSBkb21haW4uCisgKi8KK3N0 YXRpYyBpbnQgdGVncmFfc3BlY2lmaWNfbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKQoreworICAg IHJldHVybiBkb21haW5fdGVncmFfbWxpY19pbml0KGQpOworfQorCisvKgogICogUmVhZCByZWdp c3RlciBmcm9tIHNwZWNpZmllZCBsZWdhY3kgaW50ZXJydXB0IGludGVycnVwdCBjb250cm9sbGVy LgogICovCiB1aW50MzJfdCB0ZWdyYV9saWNfcmVhZGwodW5zaWduZWQgaW50IGljdGxyX2luZGV4 LCB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJfb2Zmc2V0KQpAQCAtMzAwLDYgKzMxMiw3IEBAIFBMQVRG T1JNX1NUQVJUKHRlZ3JhLCAiVGVncmEiKQogICAgIC5pcnFfaXNfcm91dGFibGUgPSB0ZWdyYV9p cnFfaXNfcm91dGFibGUsCiAgICAgLnJvdXRlX2lycV90b194ZW4gPSB0ZWdyYV9yb3V0ZV9pcnFf dG9feGVuLAogICAgIC5yb3V0ZV9pcnFfdG9fZ3Vlc3QgPSB0ZWdyYV9yb3V0ZV9pcnFfdG9fZ3Vl c3QsCisgICAgLnNwZWNpZmljX21hcHBpbmcgPSB0ZWdyYV9zcGVjaWZpY19tYXBwaW5nLAogUExB VEZPUk1fRU5ECiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BsYXRmb3Jt cy90ZWdyYS1tbGljLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BsYXRmb3Jtcy90ZWdyYS1tbGlj LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlMTBjNAotLS0gL2Rldi9u dWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGxhdGZvcm1zL3RlZ3JhLW1saWMuaApAQCAt MCwwICsxLDM0IEBACisvKgorICogeGVuL2FyY2gvYXJtL3Z1YXJ0LmgKKyAqCisgKiBNZWRpYXRl ZCBUZWdyYSBMZWdhY3kgSW50ZXJydXB0IENvbnRyb2xsZXIKKyAqCisgKiBLeWxlIFRlbWtpbjsg Q29weXJpZ2h0IChjKSAyMDE2IEFzc3VyZWQgSW5mb3JtYXRpb24gU2VjdXJpdHksIEluYy4KKyAq IENocmlzIFBhdHRlcnNvbjsgQ29weXJpZ2h0IChjKSAyMDE2IEFzc3VyZWQgSW5mb3JtYXRpb24g U2VjdXJpdHksIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fUExBVEZPUk1TX1RFR1JB X01MSUNfSAorI2RlZmluZSBfX0FTTV9BUk1fUExBVEZPUk1TX1RFR1JBX01MSUNfSAorCitpbnQg ZG9tYWluX3RlZ3JhX21saWNfaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKKworI2VuZGlmIC8qIF9f QVNNX0FSTV9QTEFURk9STVNfVEVHUkFfTUxJQ19IICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJs ZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNl dDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0gCjIuMS40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==