From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v1 12/12] libxl: add device backend listener in order to launch backends Date: Wed, 2 Oct 2013 11:24:34 +0200 Message-ID: <1380705874-58491-13-git-send-email-roger.pau@citrix.com> References: <1380705874-58491-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1VRIq1-0001CB-58 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2013 09:35:21 +0000 In-Reply-To: <1380705874-58491-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QWRkIHRoZSBuZWNlc3NhcnkgbG9naWMgaW4gbGlieGwgdG8gYWxsb3cgaXQgdG8gYWN0IGFzIGEg bGlzdGVuZXIgZm9yCmxhdW5jaGluZyBiYWNrZW5kcyBpbiBhIGRyaXZlciBkb21haW4sIHJlcGxh Y2luZyB1ZGV2IChsaWtlIHdlIGFscmVhZHkKZG8gb24gRG9tMCkuIFRoaXMgbmV3IGZ1bmN0aW9u YWxpdHkgaXMgYWNvbXBsaXNoZWQgYnkgd2F0Y2hpbmcgdGhlCmRvbWFpbiBiYWNrZW5kIHBhdGgg KC9sb2NhbC9kb21haW4vPGRvbWlkPi9iYWNrZW5kKSBhbmQgcmVhY3RpbmcgdG8KZGV2aWNlIGNy ZWF0aW9uL2Rlc3RydWN0aW9uLgoKVGhlIHdheSB0byBsYXVuY2ggdGhpcyBsaXN0ZW5lciBkYWVt b24gaXMgZnJvbSB4bCwgdXNpbmcgdGhlIG5ld2x5CmludHJvZHVjZWQgImRldmQiIGNvbW1hbmQu IFRoZSBjb21tYW5kIHdpbGwgZGFlbW9uaXplIGJ5IGRlZmF1bHQsCnVzaW5nICJ4bGRldmQubG9n IiBhcyBpdCdzIGxvZ2ZpbGUuIE9wdGlvbmFsbHkgdGhlIHVzZXIgY2FuIGZvcmNlIHRoZQpleGVj dXRpb24gb2YgdGhlIGxpc3RlbmVyIGluIHRoZSBmb3JlZ3JvdW5kIGJ5IHBhc3NpbmcgdGhlICIt RiIKb3B0aW9uIHRvIHRoZSBkZXZkIGNvbW1hbmQuCgpDdXJyZW50IGJhY2tlbmRzIGhhbmRsZWQg YnkgdGhpcyBkYWVtb24gaW5jbHVkZSBRZGlzaywgdmJkIGFuZCB2aWYKZGV2aWNlIHR5cGVzLgoK U2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNj OiBJYW4gSmFja3NvbiA8SWFuLkphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBDYW1wYmVs bCA8aWFuLmNhbXBiZWxsQGNpdHJpeC5jb20+Ci0tLQpJbiBvcmRlciB0byB1c2UgUWRpc2sgb24g YSBkcml2ZXIgZG9tYWluIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaGFzIHRvIGJlCmFwcGxpZWQgdG8g UWVtdToKCmh0dHA6Ly9tYXJjLmluZm8vP2w9cWVtdS1kZXZlbCZtPTEzNzk1MzM5MDYwODcyNyZ3 PTIKLS0tCkknbSBxdWl0ZSBzdXJlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIG5vdCBkb25lIGNvcnJl Y3RseSwgYWZ0ZXIgZWFjaApjYWxsIHRvIGJhY2tlbmRfd2F0Y2hfY2FsbGJhY2sgdGhlIGdhcmJh Z2UgY29sbGVjdG9yIHNob3VsZCBmcmVlIGFsbAp0aGUgcmVmZXJlbmNlcywgYnV0IEkgdGhpbmsg dGhpcyBpcyBub3QgaGFwcGVuaW5nLCBhbmQgSSB3b3VsZApsaWtlIHNvbWVvbmUgd2l0aCBleHBl cmllbmNlIG9uIGxpYnhsIG1lbW9yeSBtYW5hZ2VtZW50IChJYW5KKSB0bwpjb21tZW50IG9uIHBv c3NpYmxlIHdheXMgdG8gZGVhbCB3aXRoIHRoYXQuCi0tLQogdG9vbHMvbGlieGwvbGlieGwuYyAg ICAgICB8ICAzMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiB0b29scy9saWJ4bC9saWJ4bC5oICAgICAgIHwgICAgOCArKwogdG9vbHMvbGlieGwveGwuaCAg ICAgICAgICB8ICAgIDEgKwogdG9vbHMvbGlieGwveGxfY21kaW1wbC5jICB8ICAgMjQgKysrKwog dG9vbHMvbGlieGwveGxfY21kdGFibGUuYyB8ICAgIDYgKwogNSBmaWxlcyBjaGFuZ2VkLCAzNDgg aW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bC5jIGIvdG9vbHMvbGlieGwvbGlieGwuYwppbmRleCAzMzM3NTE4Li5kZDljYWI2IDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKQEAg LTM1MTcsNiArMzUxNywzMTUgQEAgREVGSU5FX0RFVklDRV9BREQodnRwbSkKIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KIAorLyoKKyAqIERhdGEgc3RydWN0dXJlcyB1c2VkIHRvIHRyYWNrIGRl dmljZXMgaGFuZGxlZCBieSBkcml2ZXIgZG9tYWlucworICovCisKKy8qCisgKiBTdHJ1Y3R1cmUg dGhhdCBkZXNjcmliZXMgYSBkZXZpY2UgaGFuZGxlZCBieSBhIGRyaXZlciBkb21haW4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgbGlieGxfX2Rkb21haW5fZGV2aWNlIHsKKyAgICBsaWJ4bF9fZGV2aWNl ICpkZXY7CisgICAgTElCWExfU0xJU1RfRU5UUlkoc3RydWN0IGxpYnhsX19kZG9tYWluX2Rldmlj ZSkgbmV4dDsKK30gbGlieGxfX2Rkb21haW5fZGV2aWNlOworCisvKgorICogU3RydWN0dXJlIHRo YXQgZGVzY3JpYmVzIGEgZG9tYWluIGFuZCBpdCdzIGFzc29jaWF0ZWQgZGV2aWNlcworICovCit0 eXBlZGVmIHN0cnVjdCBsaWJ4bF9fZGRvbWFpbl9ndWVzdCB7CisgICAgdWludDMyX3QgZG9taWQ7 CisgICAgaW50IG51bV92aWZzLCBudW1fdmJkcywgbnVtX3FkaXNrczsKKyAgICBMSUJYTF9TTElT VF9IRUFEKCwgc3RydWN0IGxpYnhsX19kZG9tYWluX2RldmljZSkgZGV2aWNlczsKKyAgICBMSUJY TF9TTElTVF9FTlRSWShzdHJ1Y3QgbGlieGxfX2Rkb21haW5fZ3Vlc3QpIG5leHQ7Cit9IGxpYnhs X19kZG9tYWluX2d1ZXN0OworCisvKgorICogTWFpbiBzdHJ1Y3R1cmUgdXNlZCBieSBhIGRyaXZl ciBkb21haW4gdG8ga2VlcCB0cmFjayBvZiBkZXZpY2VzCisgKiBjdXJyZW50bHkgaW4gdXNlCisg Ki8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBsaWJ4bF9fYW8gKmFvOworICAgIGxpYnhsX19ldl94 c3dhdGNoIHdhdGNoOworICAgIExJQlhMX1NMSVNUX0hFQUQoLCBzdHJ1Y3QgbGlieGxfX2Rkb21h aW5fZ3Vlc3QpIGd1ZXN0czsKK30gbGlieGxfX2Rkb21haW47CisKK3N0YXRpYyBsaWJ4bF9fZGRv bWFpbl9ndWVzdCAqc2VhcmNoX2Zvcl9ndWVzdChsaWJ4bF9fZGRvbWFpbiAqZGRvbWFpbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9t aWQpCit7CisgICAgbGlieGxfX2Rkb21haW5fZ3Vlc3QgKmRndWVzdDsKKworICAgIExJQlhMX1NM SVNUX0ZPUkVBQ0goZGd1ZXN0LCAmZGRvbWFpbi0+Z3Vlc3RzLCBuZXh0KSB7CisgICAgICAgIGlm IChkZ3Vlc3QtPmRvbWlkID09IGRvbWlkKQorICAgICAgICAgICAgcmV0dXJuIGRndWVzdDsKKyAg ICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBsaWJ4bF9fZGRvbWFpbl9kZXZpY2Ug KnNlYXJjaF9mb3JfZGV2aWNlKGxpYnhsX19kZG9tYWluX2d1ZXN0ICpkZ3Vlc3QsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZGV2aWNlICpk ZXYpCit7CisgICAgbGlieGxfX2Rkb21haW5fZGV2aWNlICpkZGV2OworCisgICAgTElCWExfU0xJ U1RfRk9SRUFDSChkZGV2LCAmZGd1ZXN0LT5kZXZpY2VzLCBuZXh0KSB7CisgICAgICAgIGlmICht ZW1jbXAoZGRldi0+ZGV2LCBkZXYsIHNpemVvZigqZGV2KSkgPT0gMCkKKyAgICAgICAgICAgIHJl dHVybiBkZGV2OworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgZGV2 aWNlX2NvbXBsZXRlKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2FvX2RldmljZSAqYW9kZXYpCit7 CisgICAgU1RBVEVfQU9fR0MoYW9kZXYtPmFvKTsKKworICAgIGlmIChhb2Rldi0+YWN0aW9uID09 IExJQlhMX19ERVZJQ0VfQUNUSU9OX1JFTU9WRSkKKyAgICAgICAgZnJlZShhb2Rldi0+ZGV2KTsK KworICAgIExPRyhERUJVRywgImRldmljZSAlcyAlcyAlcyIsCisgICAgICAgICAgICAgICBsaWJ4 bF9fZGV2aWNlX2JhY2tlbmRfcGF0aChnYywgYW9kZXYtPmRldiksCisgICAgICAgICAgICAgICBs aWJ4bF9fZGV2aWNlX2FjdGlvbl90b19zdHJpbmcoYW9kZXYtPmFjdGlvbiksCisgICAgICAgICAg ICAgICBhb2Rldi0+cmMgPyAiZmFpbGVkIiA6ICJzdWNjZWVkIik7CisKKyAgICByZXR1cm47Cit9 CisKK3N0YXRpYyB2b2lkIHFkaXNrX3NwYXduX291dGNvbWUobGlieGxfX2VnYyAqZWdjLCBsaWJ4 bF9fc3Bhd25fcWRpc2tfc3RhdGUgKnNxcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHJjKQoreworICAgIFNUQVRFX0FPX0dDKHNxcy0+c3Bhd24uYW8pOworCisgICAgTE9H KERFQlVHLCAicWRpc2sgYmFja2VuZCBzcGF3biBmb3IgZG9tYWluICV1ICVzIiwgc3FzLT5ndWVz dF9kb21pZCwKKyAgICAgICAgICAgICAgIHJjID8gImZhaWxlZCIgOiAic3VjY2VlZCIpOworfQor CitzdGF0aWMgaW50IGFkZF9kZXZpY2UobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZGRvbWFpbiAq ZGRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZGRvbWFpbl9ndWVzdCAqZGd1 ZXN0LAorICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19kZG9tYWluX2RldmljZSAqZGRldikK K3sKKyAgICBTVEFURV9BT19HQyhkZG9tYWluLT5hbyk7CisgICAgbGlieGxfX2RldmljZSAqZGV2 ID0gZGRldi0+ZGV2OworICAgIGxpYnhsX19hb19kZXZpY2UgKmFvZGV2OworICAgIGxpYnhsX19z cGF3bl9xZGlza19zdGF0ZSAqc3FzOworCisgICAgc3dpdGNoKGRldi0+YmFja2VuZF9raW5kKSB7 CisgICAgY2FzZSBMSUJYTF9fREVWSUNFX0tJTkRfVkJEOgorICAgIGNhc2UgTElCWExfX0RFVklD RV9LSU5EX1ZJRjoKKyAgICAgICAgaWYgKGRldi0+YmFja2VuZF9raW5kID09IExJQlhMX19ERVZJ Q0VfS0lORF9WQkQpIGRndWVzdC0+bnVtX3ZiZHMrKzsKKyAgICAgICAgaWYgKGRldi0+YmFja2Vu ZF9raW5kID09IExJQlhMX19ERVZJQ0VfS0lORF9WSUYpIGRndWVzdC0+bnVtX3ZpZnMrKzsKKwor ICAgICAgICBHQ05FVyhhb2Rldik7CisgICAgICAgIGxpYnhsX19wcmVwYXJlX2FvX2RldmljZShh bywgYW9kZXYpOworICAgICAgICBhb2Rldi0+ZGV2ID0gZGV2OworICAgICAgICBhb2Rldi0+YWN0 aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fQUREOworICAgICAgICBhb2Rldi0+Y2FsbGJhY2sg PSBkZXZpY2VfY29tcGxldGU7CisgICAgICAgIGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9u KGVnYywgYW9kZXYpOworCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTElCWExfX0RFVklDRV9L SU5EX1FESVNLOgorICAgICAgICBpZiAoZGd1ZXN0LT5udW1fcWRpc2tzID09IDApIHsKKyAgICAg ICAgICAgIEdDTkVXKHNxcyk7CisgICAgICAgICAgICBzcXMtPmd1ZXN0X2RvbWlkID0gZGV2LT5k b21pZDsKKyAgICAgICAgICAgIHNxcy0+c3Bhd24uYW8gPSBhbzsKKyAgICAgICAgICAgIHNxcy0+ Y2FsbGJhY2sgPSBxZGlza19zcGF3bl9vdXRjb21lOworCisgICAgICAgICAgICBsaWJ4bF9fc3Bh d25fcWRpc2tfYmFja2VuZChlZ2MsIHNxcyk7CisgICAgICAgIH0KKyAgICAgICAgZGd1ZXN0LT5u dW1fcWRpc2tzKys7CisKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl YWs7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVtb3ZlX2Rldmlj ZShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kZG9tYWluICpkZG9tYWluLAorICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX19kZG9tYWluX2d1ZXN0ICpkZ3Vlc3QsCisgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfX2Rkb21haW5fZGV2aWNlICpkZGV2KQoreworICAgIFNUQVRFX0FP X0dDKGRkb21haW4tPmFvKTsKKyAgICBsaWJ4bF9fZGV2aWNlICpkZXYgPSBkZGV2LT5kZXY7Cisg ICAgbGlieGxfX2FvX2RldmljZSAqYW9kZXY7CisgICAgaW50IHJjOworCisgICAgc3dpdGNoKGRk ZXYtPmRldi0+YmFja2VuZF9raW5kKSB7CisgICAgY2FzZSBMSUJYTF9fREVWSUNFX0tJTkRfVkJE OgorICAgIGNhc2UgTElCWExfX0RFVklDRV9LSU5EX1ZJRjoKKyAgICAgICAgaWYgKGRldi0+YmFj a2VuZF9raW5kID09IExJQlhMX19ERVZJQ0VfS0lORF9WQkQpIGRndWVzdC0+bnVtX3ZiZHMtLTsK KyAgICAgICAgaWYgKGRldi0+YmFja2VuZF9raW5kID09IExJQlhMX19ERVZJQ0VfS0lORF9WSUYp IGRndWVzdC0+bnVtX3ZpZnMtLTsKKworICAgICAgICBHQ05FVyhhb2Rldik7CisgICAgICAgIGxp YnhsX19wcmVwYXJlX2FvX2RldmljZShhbywgYW9kZXYpOworICAgICAgICBhb2Rldi0+ZGV2ID0g ZGV2OworICAgICAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RFVklDRV9BQ1RJT05fUkVNT1ZF OworICAgICAgICBhb2Rldi0+Y2FsbGJhY2sgPSBkZXZpY2VfY29tcGxldGU7CisgICAgICAgIGxp YnhsX19pbml0aWF0ZV9kZXZpY2VfcmVtb3ZlKGVnYywgYW9kZXYpOworICAgICAgICBicmVhazsK KyAgICBjYXNlIExJQlhMX19ERVZJQ0VfS0lORF9RRElTSzoKKyAgICAgICAgaWYgKC0tZGd1ZXN0 LT5udW1fcWRpc2tzID09IDApIHsKKyAgICAgICAgICAgIHJjID0gbGlieGxfX2Rlc3Ryb3lfcWRp c2tfYmFja2VuZChnYywgZGV2LT5kb21pZCk7CisgICAgICAgICAgICBpZiAocmMpCisgICAgICAg ICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgbGlieGxfX2RldmljZV9kZXN0 cm95KGdjLCBkZXYpOworICAgICAgICBmcmVlKGRldik7CisgICAgICAgIGJyZWFrOworICAgIGRl ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworb3V0OgorICAgIHJldHVybiByYzsKK30K Kworc3RhdGljIHZvaWQgYmFja2VuZF93YXRjaF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxp YnhsX19ldl94c3dhdGNoICp3YXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqd2F0Y2hfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqZXZlbnRfcGF0aCkKK3sKKyAgICBsaWJ4bF9fZGRvbWFpbiAqZGRv bWFpbiA9IENPTlRBSU5FUl9PRih3YXRjaCwgKmRkb21haW4sIHdhdGNoKTsKKyAgICBTVEFURV9B T19HQyhkZG9tYWluLT5hbyk7CisgICAgY2hhciAqcCwgKnBhdGg7CisgICAgY29uc3QgY2hhciAq c3N0YXRlOworICAgIGludCBzdGF0ZSwgcmMsIG51bV9kZXZzOworICAgIGxpYnhsX19kZXZpY2Ug KmRldiA9IE5VTEw7CisgICAgbGlieGxfX2Rkb21haW5fZGV2aWNlICpkZGV2ID0gTlVMTDsKKyAg ICBsaWJ4bF9fZGRvbWFpbl9ndWVzdCAqZGd1ZXN0ID0gTlVMTDsKKworICAgIC8qIENoZWNrIGlm IGV2ZW50X3BhdGggZW5kcyB3aXRoICJzdGF0ZSIgYW5kIHRydW5jYXRlIGl0ICovCisgICAgaWYg KHN0cmxlbihldmVudF9wYXRoKSA8IHN0cmxlbigic3RhdGUiKSkKKyAgICAgICAgZ290byBza2lw OworCisgICAgcGF0aCA9IGxpYnhsX19zdHJkdXAoZ2MsIGV2ZW50X3BhdGgpOworICAgIHAgPSBw YXRoICsgc3RybGVuKHBhdGgpIC0gc3RybGVuKCJzdGF0ZSIpIC0gMTsKKyAgICBpZiAoKnAgIT0g Jy8nKQorICAgICAgICBnb3RvIHNraXA7CisgICAgKnAgPSAnXDAnOworICAgIHArKzsKKyAgICBp ZiAoc3RyY21wKHAsICJzdGF0ZSIpICE9IDApCisgICAgICAgIGdvdG8gc2tpcDsKKworICAgIC8q IENoZWNrIGlmIHRoZSBzdGF0ZSBpcyAxIChYZW5idXNTdGF0ZUluaXRpYWxpc2luZykgb3IgZ3Jl YXRlciAqLworICAgIHJjID0gbGlieGxfX3hzX3JlYWRfY2hlY2tlZChnYywgWEJUX05VTEwsIGV2 ZW50X3BhdGgsICZzc3RhdGUpOworICAgIGlmIChyYyB8fCAhc3N0YXRlKQorICAgICAgICBnb3Rv IHNraXA7CisgICAgc3RhdGUgPSBhdG9pKHNzdGF0ZSk7CisKKyAgICBkZXYgPSBsaWJ4bF9femFs bG9jKE5PR0MsIHNpemVvZigqZGV2KSk7CisgICAgcmMgPSBsaWJ4bF9fcGFyc2VfYmFja2VuZF9w YXRoKGdjLCBwYXRoLCBkZXYpOworICAgIGlmIChyYykKKyAgICAgICAgZ290byBza2lwOworCisg ICAgZGd1ZXN0ID0gc2VhcmNoX2Zvcl9ndWVzdChkZG9tYWluLCBkZXYtPmRvbWlkKTsKKyAgICBp ZiAoZGd1ZXN0ID09IE5VTEwgJiYgc3RhdGUgPT0gWGVuYnVzU3RhdGVDbG9zZWQpIHsKKyAgICAg ICAgLyoKKyAgICAgICAgICogU3B1cmlvdXMgc3RhdGUgY2hhbmdlLCBkZXZpY2UgaGFzIGFscmVh ZHkgYmVlbiBkaXNjb25uZWN0ZWQKKyAgICAgICAgICogb3IgbmV2ZXIgYXR0YWNoZWQuCisgICAg ICAgICAqLworICAgICAgICBnb3RvIHNraXA7CisgICAgfQorICAgIGlmIChkZ3Vlc3QgPT0gTlVM TCkgeworICAgICAgICAvKiBDcmVhdGUgYSBuZXcgZ3Vlc3Qgc3RydWN0IGFuZCBpbml0aWFsaXpl IGl0ICovCisgICAgICAgIGRndWVzdCA9IGxpYnhsX196YWxsb2MoTk9HQywgc2l6ZW9mKCpkZ3Vl c3QpKTsKKyAgICAgICAgZGd1ZXN0LT5kb21pZCA9IGRldi0+ZG9taWQ7CisgICAgICAgIExJQlhM X1NMSVNUX0lOSVQoJmRndWVzdC0+ZGV2aWNlcyk7CisgICAgICAgIExJQlhMX1NMSVNUX0lOU0VS VF9IRUFEKCZkZG9tYWluLT5ndWVzdHMsIGRndWVzdCwgbmV4dCk7CisgICAgICAgIExPRyhERUJV RywgImFkZGVkIGRvbWFpbiAldSB0byB0aGUgbGlzdCBvZiBhY3RpdmUgZ3Vlc3RzIiwKKyAgICAg ICAgICAgICAgICAgICBkZ3Vlc3QtPmRvbWlkKTsKKyAgICB9CisgICAgZGRldiA9IHNlYXJjaF9m b3JfZGV2aWNlKGRndWVzdCwgZGV2KTsKKyAgICBpZiAoZGRldiA9PSBOVUxMICYmIHN0YXRlID09 IFhlbmJ1c1N0YXRlQ2xvc2VkKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFNwdXJpb3VzIHN0 YXRlIGNoYW5nZSwgZGV2aWNlIGhhcyBhbHJlYWR5IGJlZW4gZGlzY29ubmVjdGVkCisgICAgICAg ICAqIG9yIG5ldmVyIGF0dGFjaGVkLgorICAgICAgICAgKi8KKyAgICAgICAgZ290byBza2lwOwor ICAgIH0gZWxzZSBpZiAoZGRldiA9PSBOVUxMKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIE5l dyBkZXZpY2UgYWRkaXRpb24sIGFsbG9jYXRlIGEgc3RydWN0IHRvIGhvbGQgaXQgYW5kIGFkZCBp dAorICAgICAgICAgKiB0byB0aGUgbGlzdCBvZiBhY3RpdmUgZGV2aWNlcyBmb3IgYSBnaXZlbiBn dWVzdC4KKyAgICAgICAgICovCisgICAgICAgIGRkZXYgPSBsaWJ4bF9femFsbG9jKE5PR0MsIHNp emVvZigqZGRldikpOworICAgICAgICBkZGV2LT5kZXYgPSBkZXY7CisgICAgICAgIExJQlhMX1NM SVNUX0lOU0VSVF9IRUFEKCZkZ3Vlc3QtPmRldmljZXMsIGRkZXYsIG5leHQpOworICAgICAgICBM T0coREVCVUcsICJhZGRlZCBkZXZpY2UgJXMgdG8gdGhlIGxpc3Qgb2YgYWN0aXZlIGRldmljZXMi LCBwYXRoKTsKKyAgICAgICAgYWRkX2RldmljZShlZ2MsIGRkb21haW4sIGRndWVzdCwgZGRldik7 CisgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBYZW5idXNTdGF0ZUNsb3NlZCkgeworICAgICAgICAv KgorICAgICAgICAgKiBSZW1vdmFsIG9mIGFuIGFjdGl2ZSBkZXZpY2UsIHJlbW92ZSBpdCBmcm9t IHRoZSBsaXN0IGFuZAorICAgICAgICAgKiBmcmVlIGl0J3MgZGF0YSBzdHJ1Y3R1cmVzIGlmIHRo ZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICAqCisgICAgICAgICAqIFRoZSBmcmVl IG9mIHRoZSBhc3NvY2lhdGVkIGxpYnhsX19kZXZpY2UgaXMgbGVmdCB0byB0aGUKKyAgICAgICAg ICogaGVscGVyIHJlbW92ZV9kZXZpY2UgZnVuY3Rpb24uCisgICAgICAgICAqLworICAgICAgICBM SUJYTF9TTElTVF9SRU1PVkUoJmRndWVzdC0+ZGV2aWNlcywgZGRldiwgbGlieGxfX2Rkb21haW5f ZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCk7CisgICAgICAgIExPRyhE RUJVRywgInJlbW92ZWQgZGV2aWNlICVzIGZyb20gdGhlIGxpc3Qgb2YgYWN0aXZlIGRldmljZXMi LCBwYXRoKTsKKyAgICAgICAgcmVtb3ZlX2RldmljZShlZ2MsIGRkb21haW4sIGRndWVzdCwgZGRl dik7CisKKyAgICAgICAgZnJlZShkZGV2KTsKKyAgICAgICAgLyogSWYgdGhpcyB3YXMgdGhlIGxh c3QgZGV2aWNlIGluIHRoZSBkb21haW4sIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0ICovCisgICAg ICAgIG51bV9kZXZzID0gZGd1ZXN0LT5udW1fdmlmcyArIGRndWVzdC0+bnVtX3ZiZHMgKyBkZ3Vl c3QtPm51bV9xZGlza3M7CisgICAgICAgIGlmIChudW1fZGV2cyA9PSAwKSB7CisgICAgICAgICAg ICBMSUJYTF9TTElTVF9SRU1PVkUoJmRkb21haW4tPmd1ZXN0cywgZGd1ZXN0LCBsaWJ4bF9fZGRv bWFpbl9ndWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KTsKKyAgICAg ICAgICAgIExPRyhERUJVRywgInJlbW92ZWQgZG9tYWluICV1IGZyb20gdGhlIGxpc3Qgb2YgYWN0 aXZlIGd1ZXN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgIGRndWVzdC0+ZG9taWQpOworICAg ICAgICAgICAgLyogQ2xlYXIgYW55IGxlZnRvdmVycyBpbiBsaWJ4bC88ZG9taWQ+ICovCisgICAg ICAgICAgICBsaWJ4bF9feHNfcm1fY2hlY2tlZChnYywgWEJUX05VTEwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHQ1NQUklOVEYoImxpYnhsLyV1IiwgZGd1ZXN0LT5kb21pZCkp OworICAgICAgICAgICAgZnJlZShkZ3Vlc3QpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0 dXJuOworCitza2lwOgorICAgIGZyZWUoZGV2KTsKKyAgICBmcmVlKGRkZXYpOworICAgIGZyZWUo ZGd1ZXN0KTsKKyAgICByZXR1cm47Cit9CisKKy8qIEhhbmRsZXIgb2YgZXZlbnRzIGZvciBkZXZp Y2UgZHJpdmVyIGRvbWFpbnMgKi8KK2ludCBsaWJ4bF9kZXZpY2VfZXZlbnRzX2hhbmRsZXIobGli eGxfY3R4ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhs X2FzeW5jb3BfaG93ICphb19ob3cpCit7CisgICAgQU9fQ1JFQVRFKGN0eCwgMCwgYW9faG93KTsK KyAgICBpbnQgcmM7CisgICAgdWludDMyX3QgZG9taWQ7CisgICAgbGlieGxfX2Rkb21haW4gZGRv bWFpbjsKKyAgICBjaGFyICpiZV9wYXRoOworCisgICAgZGRvbWFpbi5hbyA9IGFvOworICAgIExJ QlhMX1NMSVNUX0lOSVQoJmRkb21haW4uZ3Vlc3RzKTsKKworICAgIHJjID0gbGlieGxfX2dldF9k b21pZChnYywgJmRvbWlkKTsKKyAgICBpZiAocmMpIHsKKyAgICAgICAgTE9HKEVSUk9SLCAidW5h YmxlIHRvIGdldCBkb21haW4gaWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAg cmMgPSBsaWJ4bF9feHNfd3JpdGVfY2hlY2tlZChnYywgWEJUX05VTEwsIERJU0FCTEVfVURFVl9Q QVRILCAiMSIpOworICAgIGlmIChyYykgeworICAgICAgICBMT0dFKEVSUk9SLCAidW5hYmxlIHRv IHdyaXRlICVzID0gMSIsIERJU0FCTEVfVURFVl9QQVRIKTsKKyAgICAgICAgZ290byBvdXQ7Cisg ICAgfQorCisgICAgLyoKKyAgICAgKiBXZSB1c2UgYWJzb2x1dGUgcGF0aHMgYmVjYXVzZSB3ZSB3 YW50IHhzd2F0Y2ggdG8gYWxzbyByZXR1cm4KKyAgICAgKiBhYnNvbHV0ZSBwYXRocyB0aGF0IGNh biBiZSBwYXJzZWQgYnkgbGlieGxfX3BhcnNlX2JhY2tlbmRfcGF0aC4KKyAgICAgKi8KKyAgICBi ZV9wYXRoID0gR0NTUFJJTlRGKCIvbG9jYWwvZG9tYWluLyV1L2JhY2tlbmQiLCBkb21pZCk7Cisg ICAgcmMgPSBsaWJ4bF9fZXZfeHN3YXRjaF9yZWdpc3RlcihnYywgJmRkb21haW4ud2F0Y2gsIGJh Y2tlbmRfd2F0Y2hfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiZV9wYXRoKTsKKworb3V0OgorICAgIEdDX0ZSRUU7CisgICAgcmV0dXJuIHJjID8gOiBBT19J TlBST0dSRVNTOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiBpbnQgbGlieGxfZG9t YWluX3NldG1heG1lbShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIHVpbnQzMl90IG1h eF9tZW1rYikKIHsKICAgICBHQ19JTklUKGN0eCk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRleCBiZTE5YmY1Li45MzNiYjk0IDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKQEAg LTg2Nyw2ICs4NjcsMTQgQEAgbGlieGxfZGV2aWNlX3BjaSAqbGlieGxfZGV2aWNlX3BjaV9saXN0 KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKm51bSk7CiAKIC8qCisgKiBGdW5jdGlvbiB0aGF0IGRyaXZl cyB0aGUgbWFpbiBsb29wIHRoYXQgY2hlY2tzIGZvciBkZXZpY2UgYWN0aW9ucyBhbmQKKyAqIGxh dW5jaGVzIHRoZSBjYWxsYmFja3MgcGFzc2VkIGJ5IHRoZSB1c2VyLgorICovCitpbnQgbGlieGxf ZGV2aWNlX2V2ZW50c19oYW5kbGVyKGxpYnhsX2N0eCAqY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9hc3luY29wX2hvdyAqYW9faG93KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFk7CisKKy8q CiAgKiBGdW5jdGlvbnMgcmVsYXRlZCB0byBtYWtpbmcgZGV2aWNlcyBhc3NpZ25hYmxlIC0tIHRo YXQgaXMsIGJvdW5kIHRvCiAgKiB0aGUgcGNpYmFjayBkcml2ZXIsIHJlYWR5IHRvIGJlIGdpdmVu IHRvIGEgZ3Vlc3QgdmlhCiAgKiBsaWJ4bF9wY2lfZGV2aWNlX2FkZC4KZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhsL3hsLmggYi90b29scy9saWJ4bC94bC5oCmluZGV4IGU3MmE3ZDIuLjJkZmNmMTkg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsLmgKKysrIGIvdG9vbHMvbGlieGwveGwuaApAQCAt MTA1LDYgKzEwNSw3IEBAIGludCBtYWluX2dldGVuZm9yY2UoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KTsKIGludCBtYWluX3NldGVuZm9yY2UoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWlu X2xvYWRwb2xpY3koaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3JlbXVzKGludCBh cmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl9kZXZkKGludCBhcmdjLCBjaGFyICoqYXJndik7 CiAKIHZvaWQgaGVscChjb25zdCBjaGFyICpjb21tYW5kKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGwveGxfY21kaW1wbC5jIGIvdG9vbHMvbGlieGwveGxfY21kaW1wbC5jCmluZGV4IDU1M2Jh NzAuLmNlYmZlM2EgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYworKysgYi90 b29scy9saWJ4bC94bF9jbWRpbXBsLmMKQEAgLTcxNTgsNiArNzE1OCwzMCBAQCBpbnQgbWFpbl9y ZW11cyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgcmV0dXJuIC1FUlJPUl9GQUlMOwogfQog CitpbnQgbWFpbl9kZXZkKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBpbnQgcmV0ID0g MCwgb3B0ID0gMCwgZGFlbW9uaXplID0gMTsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQs ICJGIiwgTlVMTCwgImRldmQiLCAwKSB7CisgICAgY2FzZSAnRic6CisgICAgICAgIGRhZW1vbml6 ZSA9IDA7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChkYWVtb25pemUpIHsKKyAg ICAgICAgcmV0ID0gZG9fZGFlbW9uaXplKCJ4bGRldmQiKTsKKyAgICAgICAgaWYgKHJldCkgewor ICAgICAgICAgICAgcmV0ID0gKHJldCA9PSAxKSA/IDAgOiByZXQ7CisgICAgICAgICAgICBnb3Rv IG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxpYnhsX2RldmljZV9ldmVudHNfaGFuZGxl cihjdHgsIDApOworCitvdXQ6CisgICAgcmV0dXJuIHJldDsKK30KKwogLyoKICAqIExvY2FsIHZh cmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxl LmMgYi90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCmluZGV4IDMyNmE2NjAuLjc3MDkyMDYgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMvbGlieGwveGxf Y21kdGFibGUuYwpAQCAtNDg4LDYgKzQ4OCwxMiBAQCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxl W10gPSB7CiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGRvbWFpbi4iCiAK ICAgICB9LAorICAgIHsgImRldmQiLAorICAgICAgJm1haW5fZGV2ZCwgMCwgMSwKKyAgICAgICJE YWVtb24gdGhhdCBsaXN0ZW5zIGZvciBkZXZpY2VzIGFuZCBsYXVuY2hlcyBiYWNrZW5kcyIsCisg ICAgICAiW29wdGlvbnNdIiwKKyAgICAgICItRiAgICAgICAgICAgICAgICAgICAgICBSdW4gaW4g dGhlIGZvcmVncm91bmQiLAorICAgIH0sCiB9OwogCiBpbnQgY21kdGFibGVfbGVuID0gc2l6ZW9m KGNtZF90YWJsZSkvc2l6ZW9mKHN0cnVjdCBjbWRfc3BlYyk7Ci0tIAoxLjcuNy41IChBcHBsZSBH aXQtMjYpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK