From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v5 11/30] ARM: GICv3 ITS: introduce device mapping Date: Thu, 6 Apr 2017 00:19:03 +0100 Message-ID: <1491434362-30310-12-git-send-email-andre.przywara@arm.com> References: <1491434362-30310-1-git-send-email-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvuES-0004aS-5w for xen-devel@lists.xenproject.org; Wed, 05 Apr 2017 23:20:56 +0000 In-Reply-To: <1491434362-30310-1-git-send-email-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini , Julien Grall Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org VGhlIElUUyB1c2VzIGRldmljZSBJRHMgdG8gbWFwIExQSXMgdG8gYSBkZXZpY2UuIERvbTAgd2ls bCBsYXRlciB1c2UKdGhvc2UgSURzLCB3aGljaCB3ZSBkaXJlY3RseSBwYXNzIG9uIHRvIHRoZSBo b3N0LgpGb3IgdGhpcyB3ZSBoYXZlIHRvIG1hcCBlYWNoIGRldmljZSB0aGF0IERvbTAgbWF5IHJl cXVlc3QgdG8gYSBob3N0CklUUyBkZXZpY2Ugd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyLgpBbGxv Y2F0ZSB0aGUgcmVzcGVjdGl2ZSBtZW1vcnkgYW5kIGVudGVyIGVhY2ggZGV2aWNlIGludG8gYW4g cmJ0cmVlIHRvCmxhdGVyIGJlIGFibGUgdG8gaXRlcmF0ZSBvdmVyIGl0IG9yIHRvIGVhc2lseSB0 ZWFyZG93biBndWVzdHMuCkJlY2F1c2UgZGV2aWNlIElEcyBhcmUgcGVyIElUUywgd2UgbmVlZCB0 byBpZGVudGlmeSBhIHZpcnR1YWwgSVRTLiBXZQp1c2UgdGhlIGRvb3JiZWxsIGFkZHJlc3MgZm9y IHRoYXQgcHVycG9zZSwgYXMgaXQgaXMgYSBuaWNlIGFyY2hpdGVjdHVyYWwKTVNJIHByb3BlcnR5 IGFuZCBzcGFyZXMgdXMgaGFuZGxpbmcgd2l0aCBvcGFxdWUgcG9pbnRlciBvciBicmVhawp0aGUg VkdJQyBhYnN0cmFjdGlvbi4KClNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5w cnp5d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMgICAgICAgIHwg MjYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJt L3ZnaWMtdjMtaXRzLmMgICAgICAgfCAgIDMgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aCAgICAgfCAgIDMgKwogeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggfCAgMTMgKysK IDQgZmlsZXMgY2hhbmdlZCwgMjgyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vZ2ljLXYzLWl0cy5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwppbmRleCBlYjQ3 YzlkLi40NWJiZmE3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jCisrKyBi L3hlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlIDx4 ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL2RlbGF5Lmg+CiAjaW5jbHVkZSA8eGVuL21tLmg+Cisj aW5jbHVkZSA8eGVuL3JidHJlZS5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUg PHhlbi9zaXplcy5oPgogI2luY2x1ZGUgPGFzbS9naWMuaD4KICNpbmNsdWRlIDxhc20vZ2ljX3Yz X2RlZnMuaD4KQEAgLTM2LDYgKzM4LDI2IEBACiAgKi8KIExJU1RfSEVBRChob3N0X2l0c19saXN0 KTsKIAorLyoKKyAqIERlc2NyaWJlcyBhIGRldmljZSB3aGljaCBpcyB1c2luZyB0aGUgSVRTIGFu ZCBpcyB1c2VkIGJ5IGEgZ3Vlc3QuCisgKiBTaW5jZSBkZXZpY2UgSURzIGFyZSBwZXIgSVRTIChp biBjb250cmFzdCB0byB2TFBJcywgd2hpY2ggYXJlIHBlcgorICogZ3Vlc3QpLCB3ZSBoYXZlIHRv IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBkaWZmZXJlbnQgdmlydHVhbCBJVFNlcy4KKyAqIFdlIHVz ZSB0aGUgZG9vcmJlbGwgYWRkcmVzcyBoZXJlLCBzaW5jZSB0aGlzIGlzIGEgbmljZSBhcmNoaXRl Y3R1cmFsCisgKiBwcm9wZXJ0eSBvZiBNU0lzIGluIGdlbmVyYWwgYW5kIHdlIGNhbiBlYXNpbHkg Z2V0IHRvIHRoZSBiYXNlIGFkZHJlc3MKKyAqIG9mIHRoZSBJVFMgYW5kIGxvb2sgdGhhdCB1cC4K KyAqLworc3RydWN0IGl0c19kZXZpY2VzIHsKKyAgICBzdHJ1Y3QgcmJfbm9kZSByYm5vZGU7Cisg ICAgc3RydWN0IGhvc3RfaXRzICpod19pdHM7CisgICAgdm9pZCAqaXR0X2FkZHI7CisgICAgcGFk ZHJfdCBndWVzdF9kb29yYmVsbDsgICAgICAgICAgICAgLyogSWRlbnRpZmllcyB0aGUgdmlydHVh bCBJVFMgKi8KKyAgICB1aW50MzJfdCBob3N0X2RldmlkOworICAgIHVpbnQzMl90IGd1ZXN0X2Rl dmlkOworICAgIHVpbnQzMl90IGV2ZW50aWRzOyAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBv ZiBldmVudCBJRHMgKE1TSXMpICovCisgICAgdWludDMyX3QgKmhvc3RfbHBpX2Jsb2NrczsgICAg ICAgICAgLyogV2hpY2ggTFBJcyBhcmUgdXNlZCBvbiB0aGUgaG9zdCAqLworICAgIHN0cnVjdCBw ZW5kaW5nX2lycSAqcGVuZF9pcnFzOyAgICAgIC8qIE9uZSBzdHJ1Y3QgcGVyIGV2ZW50ICovCit9 OworCiBib29sIGdpY3YzX2l0c19ob3N0X2hhc19pdHModm9pZCkKIHsKICAgICByZXR1cm4gIWxp c3RfZW1wdHkoJmhvc3RfaXRzX2xpc3QpOwpAQCAtMTg1LDYgKzIwNywzMCBAQCBzdGF0aWMgaW50 IGl0c19zZW5kX2NtZF9tYXBjKHN0cnVjdCBob3N0X2l0cyAqaXRzLCB1aW50MzJfdCBjb2xsZWN0 aW9uX2lkLAogICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKIH0KIAorc3Rh dGljIGludCBpdHNfc2VuZF9jbWRfbWFwZChzdHJ1Y3QgaG9zdF9pdHMgKml0cywgdWludDMyX3Qg ZGV2aWNlaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc2l6ZV9iaXRz LCBwYWRkcl90IGl0dF9hZGRyLCBib29sIHZhbGlkKQoreworICAgIHVpbnQ2NF90IGNtZFs0XTsK KworICAgIGlmICggdmFsaWQgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNpemVfYml0cyA8PSBp dHMtPmV2aWRfYml0cyk7CisgICAgICAgIEFTU0VSVChzaXplX2JpdHMgPiAwKTsKKyAgICAgICAg QVNTRVJUKCEoaXR0X2FkZHIgJiB+R0VOTUFTS19VTEwoNTEsIDgpKSk7CisKKyAgICAgICAgLyog VGhlIG51bWJlciBvZiBldmVudHMgaXMgZW5jb2RlZCBhcyAibnVtYmVyIG9mIGJpdHMgbWludXMg b25lIi4gKi8KKyAgICAgICAgc2l6ZV9iaXRzLS07CisgICAgfQorICAgIGNtZFswXSA9IEdJVFNf Q01EX01BUEQgfCAoKHVpbnQ2NF90KWRldmljZWlkIDw8IDMyKTsKKyAgICBjbWRbMV0gPSBzaXpl X2JpdHM7CisgICAgY21kWzJdID0gaXR0X2FkZHI7CisgICAgaWYgKCB2YWxpZCApCisgICAgICAg IGNtZFsyXSB8PSBHSVRTX1ZBTElEX0JJVDsKKyAgICBjbWRbM10gPSAweDAwOworCisgICAgcmV0 dXJuIGl0c19zZW5kX2NvbW1hbmQoaXRzLCBjbWQpOworfQorCiBzdGF0aWMgaW50IGl0c19zZW5k X2NtZF9pbnYoc3RydWN0IGhvc3RfaXRzICppdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgZGV2aWNlaWQsIHVpbnQzMl90IGV2ZW50aWQpCiB7CkBAIC00NzcsNiArNTIz LDY2IEBAIGludCBnaWN2M19pdHNfaW5pdCh2b2lkKQogICAgIHJldHVybiAwOwogfQogCitzdGF0 aWMgaW50IHJlbW92ZV9tYXBwZWRfZ3Vlc3RfZGV2aWNlKHN0cnVjdCBpdHNfZGV2aWNlcyAqZGV2 KQoreworICAgIGludCByZXQgPSAwOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgaWYgKCBk ZXYtPmh3X2l0cyApCisgICAgICAgIC8qIE1BUEQgYWxzbyBkaXNjYXJkcyBhbGwgZXZlbnRzIHdp dGggdGhpcyBkZXZpY2UgSUQuICovCisgICAgICAgIHJldCA9IGl0c19zZW5kX2NtZF9tYXBkKGRl di0+aHdfaXRzLCBkZXYtPmhvc3RfZGV2aWQsIDAsIDAsIGZhbHNlKTsKKworICAgIGZvciAoIGkg PSAwOyBpIDwgZGV2LT5ldmVudGlkcyAvIExQSV9CTE9DSzsgaSsrICkKKyAgICAgICAgZ2ljdjNf ZnJlZV9ob3N0X2xwaV9ibG9jayhkZXYtPmhvc3RfbHBpX2Jsb2Nrc1tpXSk7CisKKyAgICAvKiBN YWtlIHN1cmUgdGhlIE1BUEQgY29tbWFuZCBhYm92ZSBpcyByZWFsbHkgZXhlY3V0ZWQuICovCisg ICAgaWYgKCAhcmV0ICkKKyAgICAgICAgcmV0ID0gZ2ljdjNfaXRzX3dhaXRfY29tbWFuZHMoZGV2 LT5od19pdHMpOworCisgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQganVzdCBp biBjYXNlIC4uLiAqLworICAgIGlmICggcmV0ICkKKyAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJO SU5HICJDYW4ndCB1bm1hcCBob3N0IElUUyBkZXZpY2UgMHgleFxuIiwKKyAgICAgICAgICAgICAg IGRldi0+aG9zdF9kZXZpZCk7CisKKyAgICB4ZnJlZShkZXYtPml0dF9hZGRyKTsKKyAgICB4ZnJl ZShkZXYtPnBlbmRfaXJxcyk7CisgICAgeGZyZWUoZGV2LT5ob3N0X2xwaV9ibG9ja3MpOworICAg IHhmcmVlKGRldik7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBob3N0X2l0 cyAqZ2ljdjNfaXRzX2ZpbmRfYnlfZG9vcmJlbGwocGFkZHJfdCBkb29yYmVsbF9hZGRyZXNzKQor eworICAgIHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzOworCisgICAgbGlzdF9mb3JfZWFjaF9lbnRy eShod19pdHMsICZob3N0X2l0c19saXN0LCBlbnRyeSkKKyAgICB7CisgICAgICAgIGlmICggaHdf aXRzLT5hZGRyICsgSVRTX0RPT1JCRUxMX09GRlNFVCA9PSBkb29yYmVsbF9hZGRyZXNzICkKKyAg ICAgICAgICAgIHJldHVybiBod19pdHM7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisK K3N0YXRpYyBpbnQgY29tcGFyZV9pdHNfZ3Vlc3RfZGV2aWNlcyhzdHJ1Y3QgaXRzX2RldmljZXMg KmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IHZkb29y YmVsbCwgdWludDMyX3QgdmRldmlkKQoreworICAgIGlmICggZGV2LT5ndWVzdF9kb29yYmVsbCA8 IHZkb29yYmVsbCApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICggZGV2LT5ndWVzdF9k b29yYmVsbCA+IHZkb29yYmVsbCApCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCBkZXYt Pmd1ZXN0X2RldmlkIDwgdmRldmlkICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCBk ZXYtPmd1ZXN0X2RldmlkID4gdmRldmlkICkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1 cm4gMDsKK30KKwogLyoKICAqIE9uIHRoZSBob3N0IElUUyBAaXRzLCBtYXAgQG5yX2V2ZW50cyBj b25zZWN1dGl2ZSBMUElzLgogICogVGhlIG1hcHBpbmcgY29ubmVjdHMgYSBkZXZpY2UgQGRldmlk IGFuZCBldmVudCBAZXZlbnRpZCBwYWlyIHRvIExQSSBAbHBpLApAQCAtNTEwLDYgKzYxNiwxNjMg QEAgc3RhdGljIGludCBnaWN2M19pdHNfbWFwX2hvc3RfZXZlbnRzKHN0cnVjdCBob3N0X2l0cyAq aXRzLAogICAgIHJldHVybiBnaWN2M19pdHNfd2FpdF9jb21tYW5kcyhpdHMpOwogfQogCisvKgor ICogTWFwIGEgaGFyZHdhcmUgZGV2aWNlLCBpZGVudGlmaWVkIGJ5IGEgY2VydGFpbiBob3N0IElU UyBhbmQgaXRzIGRldmljZSBJRAorICogdG8gZG9tYWluIGQsIGEgZ3Vlc3QgSVRTIChpZGVudGlm aWVkIGJ5IGl0cyBkb29yYmVsbCBhZGRyZXNzKSBhbmQgZGV2aWNlIElELgorICogQWxzbyBwcm92 aWRlIHRoZSBudW1iZXIgb2YgZXZlbnRzIChNU0lzKSBuZWVkZWQgZm9yIHRoYXQgZGV2aWNlLgor ICogVGhpcyBkb2VzIG5vdCBjaGVjayBpZiB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUgZGV2aWNl IGlzIGFscmVhZHkgbWFwcGVkCisgKiBhdCBhbm90aGVyIGRvbWFpbiwgaXQgaXMgZXhwZWN0ZWQg dGhhdCB0aGlzIHdvdWxkIGJlIGRvbmUgYnkgdGhlIGNhbGxlci4KKyAqLworaW50IGdpY3YzX2l0 c19tYXBfZ3Vlc3RfZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFkZHJfdCBob3N0X2Rvb3JiZWxsLCB1aW50MzJfdCBob3N0X2RldmlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgZ3Vlc3RfZG9vcmJlbGwsIHVp bnQzMl90IGd1ZXN0X2RldmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IG5yX2V2ZW50cywgYm9vbCB2YWxpZCkKK3sKKyAgICB2b2lkICppdHRfYWRkciA9IE5VTEw7 CisgICAgc3RydWN0IGhvc3RfaXRzICpod19pdHM7CisgICAgc3RydWN0IGl0c19kZXZpY2VzICpk ZXYgPSBOVUxMOworICAgIHN0cnVjdCByYl9ub2RlICoqbmV3ID0gJmQtPmFyY2gudmdpYy5pdHNf ZGV2aWNlcy5yYl9ub2RlLCAqcGFyZW50ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAg ICBpbnQgcmV0ID0gLUVOT0VOVDsKKworICAgIGh3X2l0cyA9IGdpY3YzX2l0c19maW5kX2J5X2Rv b3JiZWxsKGhvc3RfZG9vcmJlbGwpOworICAgIGlmICggIWh3X2l0cyApCisgICAgICAgIHJldHVy biByZXQ7CisKKyAgICAvKiBTYW5pdGlzZSB0aGUgcHJvdmlkZWQgaGFyZHdhcmUgdmFsdWVzIGFn YWluc3QgdGhlIGhvc3QgSVRTLiAqLworICAgIGlmICggaG9zdF9kZXZpZCA+PSBCSVQoaHdfaXRz LT5kZXZpZF9iaXRzKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgLyogV2UgYWxs b2NhdGUgZXZlbnRzIGFuZCBMUElzIGluIGNodW5rcyBvZiBMUElfQkxPQ0sgKD0zMikuICovCisg ICAgbnJfZXZlbnRzID0gUk9VTkRVUChucl9ldmVudHMsIExQSV9CTE9DSyk7CisgICAgaWYgKCBu cl9ldmVudHMgPj0gQklUKGh3X2l0cy0+ZXZpZF9iaXRzKSApCisgICAgICAgIHJldHVybiAtRUlO VkFMOworCisgICAgLyogY2hlY2sgZm9yIGFscmVhZHkgZXhpc3RpbmcgbWFwcGluZ3MgKi8KKyAg ICBzcGluX2xvY2soJmQtPmFyY2gudmdpYy5pdHNfZGV2aWNlc19sb2NrKTsKKyAgICB3aGlsZSAo ICpuZXcgKQorICAgIHsKKyAgICAgICAgc3RydWN0IGl0c19kZXZpY2VzICp0ZW1wOworICAgICAg ICBpbnQgY21wOworCisgICAgICAgIHRlbXAgPSByYl9lbnRyeSgqbmV3LCBzdHJ1Y3QgaXRzX2Rl dmljZXMsIHJibm9kZSk7CisKKyAgICAgICAgcGFyZW50ID0gKm5ldzsKKyAgICAgICAgY21wID0g Y29tcGFyZV9pdHNfZ3Vlc3RfZGV2aWNlcyh0ZW1wLCBndWVzdF9kb29yYmVsbCwgZ3Vlc3RfZGV2 aWQpOworICAgICAgICBpZiAoICFjbXAgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoICF2 YWxpZCApCisgICAgICAgICAgICAgICAgcmJfZXJhc2UoJnRlbXAtPnJibm9kZSwgJmQtPmFyY2gu dmdpYy5pdHNfZGV2aWNlcyk7CisKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLnZn aWMuaXRzX2RldmljZXNfbG9jayk7CisKKyAgICAgICAgICAgIGlmICggdmFsaWQgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICJkJWQgdHJp ZWQgdG8gcmVtYXAgZ3Vlc3QgSVRTIGRldmljZSAweCV4IHRvIGhvc3QgZGV2aWNlIDB4JXhcbiIs CisgICAgICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGd1ZXN0X2RldmlkLCBob3N0 X2RldmlkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVCVVNZOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICByZXR1cm4gcmVtb3ZlX21hcHBlZF9ndWVzdF9kZXZpY2UodGVtcCk7Cisg ICAgICAgIH0KKworICAgICAgICBpZiAoIGNtcCA+IDAgKQorICAgICAgICAgICAgbmV3ID0gJigo Km5ldyktPnJiX2xlZnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXcgPSAmKCgqbmV3 KS0+cmJfcmlnaHQpOworICAgIH0KKworICAgIGlmICggIXZhbGlkICkKKyAgICAgICAgZ290byBv dXRfdW5sb2NrOworCisgICAgcmV0ID0gLUVOT01FTTsKKworICAgIC8qIEFuIEludGVycnVwdCBU cmFuc2xhdGlvbiBUYWJsZSBuZWVkcyB0byBiZSAyNTYtYnl0ZSBhbGlnbmVkLiAqLworICAgIGl0 dF9hZGRyID0gX3h6YWxsb2MobnJfZXZlbnRzICogaHdfaXRzLT5pdHRlX3NpemUsIDI1Nik7Cisg ICAgaWYgKCAhaXR0X2FkZHIgKQorICAgICAgICBnb3RvIG91dF91bmxvY2s7CisKKyAgICBkZXYg PSB4emFsbG9jKHN0cnVjdCBpdHNfZGV2aWNlcyk7CisgICAgaWYgKCAhZGV2ICkKKyAgICAgICAg Z290byBvdXRfdW5sb2NrOworCisgICAgLyoKKyAgICAgKiBBbGxvY2F0ZSB0aGUgcGVuZGluZ19p cnFzIGZvciBlYWNoIHZpcnR1YWwgTFBJLiBUaGV5IHdpbGwgYmUgcHV0CisgICAgICogaW50byB0 aGUgZG9tYWluJ3MgcmFkaXggdHJlZSB1cG9uIHRoZSBndWVzdCdzIE1BUFRJIGNvbW1hbmQuCisg ICAgICovCisgICAgZGV2LT5wZW5kX2lycXMgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBwZW5kaW5n X2lycSwgbnJfZXZlbnRzKTsKKyAgICBpZiAoICFkZXYtPnBlbmRfaXJxcyApCisgICAgICAgIGdv dG8gb3V0X3VubG9jazsKKworICAgIGRldi0+aG9zdF9scGlfYmxvY2tzID0geHphbGxvY19hcnJh eSh1aW50MzJfdCwgbnJfZXZlbnRzKTsKKyAgICBpZiAoICFkZXYtPmhvc3RfbHBpX2Jsb2NrcyAp CisgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKworICAgIHJldCA9IGl0c19zZW5kX2NtZF9tYXBk KGh3X2l0cywgaG9zdF9kZXZpZCwgZmxzKG5yX2V2ZW50cyAtIDEpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZpcnRfdG9fbWFkZHIoaXR0X2FkZHIpLCB0cnVlKTsKKyAgICBpZiAoIHJl dCApCisgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKworICAgIGRldi0+aXR0X2FkZHIgPSBpdHRf YWRkcjsKKyAgICBkZXYtPmh3X2l0cyA9IGh3X2l0czsKKyAgICBkZXYtPmd1ZXN0X2Rvb3JiZWxs ID0gZ3Vlc3RfZG9vcmJlbGw7CisgICAgZGV2LT5ndWVzdF9kZXZpZCA9IGd1ZXN0X2RldmlkOwor ICAgIGRldi0+aG9zdF9kZXZpZCA9IGhvc3RfZGV2aWQ7CisgICAgZGV2LT5ldmVudGlkcyA9IG5y X2V2ZW50czsKKworICAgIHJiX2xpbmtfbm9kZSgmZGV2LT5yYm5vZGUsIHBhcmVudCwgbmV3KTsK KyAgICByYl9pbnNlcnRfY29sb3IoJmRldi0+cmJub2RlLCAmZC0+YXJjaC52Z2ljLml0c19kZXZp Y2VzKTsKKworICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLnZnaWMuaXRzX2RldmljZXNfbG9jayk7 CisKKyAgICAvKgorICAgICAqIE1hcCBhbGwgaG9zdCBMUElzIHdpdGhpbiB0aGlzIGRldmljZSBh bHJlYWR5LiBXZSBjYW4ndCBhZmZvcmQgdG8gcXVldWUKKyAgICAgKiBhbnkgaG9zdCBJVFMgY29t bWFuZHMgbGF0ZXIgb24gZHVyaW5nIHRoZSBndWVzdCdzIHJ1bnRpbWUuCisgICAgICovCisgICAg Zm9yICggaSA9IDA7IGkgPCBucl9ldmVudHMgLyBMUElfQkxPQ0s7IGkrKyApCisgICAgeworICAg ICAgICByZXQgPSBnaWN2M19hbGxvY2F0ZV9ob3N0X2xwaV9ibG9jayhkLCAmZGV2LT5ob3N0X2xw aV9ibG9ja3NbaV0pOworICAgICAgICBpZiAoIHJldCA8IDAgKQorICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgcmV0ID0gZ2ljdjNfaXRzX21hcF9ob3N0X2V2ZW50cyhod19pdHMsIGhvc3Rf ZGV2aWQsIGkgKiBMUElfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGV2LT5ob3N0X2xwaV9ibG9ja3NbaV0sIExQSV9CTE9DSyk7CisgICAgICAgIGlmICgg cmV0IDwgMCApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIHJldCApCisg ICAgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBnaWN2M19m cmVlX2hvc3RfbHBpX2Jsb2NrKGRldi0+aG9zdF9scGlfYmxvY2tzW2ldKTsKKyAgICAgICAgICAg IGlmICggaSA9PSAwICkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSB3aGlsZSAo MSk7CisKKyAgICAgICAgLyogVW5tYXBwaW5nIHRoZSBkZXZpY2Ugd2lsbCBkaXNjYXJkIGFsbCBM UElzIG1hcHBlZCBzbyBmYXIuICovCisgICAgICAgIGl0c19zZW5kX2NtZF9tYXBkKGh3X2l0cywg aG9zdF9kZXZpZCwgMSwgMCwgZmFsc2UpOworCisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKwor ICAgIHJldHVybiAwOworCitvdXRfdW5sb2NrOgorICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLnZn aWMuaXRzX2RldmljZXNfbG9jayk7CisKK291dDoKKyAgICBpZiAoIGRldiApCisgICAgeworICAg ICAgICB4ZnJlZShkZXYtPnBlbmRfaXJxcyk7CisgICAgICAgIHhmcmVlKGRldi0+aG9zdF9scGlf YmxvY2tzKTsKKyAgICB9CisgICAgeGZyZWUoaXR0X2FkZHIpOworICAgIHhmcmVlKGRldik7CisK KyAgICByZXR1cm4gcmV0OworfQorCiAvKiBTY2FuIHRoZSBEVCBmb3IgYW55IElUUyBub2RlcyBh bmQgY3JlYXRlIGEgbGlzdCBvZiBob3N0IElUU2VzIG91dCBvZiBpdC4gKi8KIHZvaWQgZ2ljdjNf aXRzX2R0X2luaXQoY29uc3Qgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlKQogewpkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMtdjMtaXRzLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy12My1p dHMuYwppbmRleCA5NGMzYzQ0Li45ZGZkYTU5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdp Yy12My1pdHMuYworKysgYi94ZW4vYXJjaC9hcm0vdmdpYy12My1pdHMuYwpAQCAtNjksMTAgKzY5 LDEzIEBAIHN0cnVjdCB2aXRzX2l0dGUKIAogdm9pZCB2Z2ljX3YzX2l0c19pbml0X2RvbWFpbihz dHJ1Y3QgZG9tYWluICpkKQogeworICAgIHNwaW5fbG9ja19pbml0KCZkLT5hcmNoLnZnaWMuaXRz X2RldmljZXNfbG9jayk7CisgICAgZC0+YXJjaC52Z2ljLml0c19kZXZpY2VzID0gUkJfUk9PVDsK IH0KIAogdm9pZCB2Z2ljX3YzX2l0c19mcmVlX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogewor ICAgIEFTU0VSVChSQl9FTVBUWV9ST09UKCZkLT5hcmNoLnZnaWMuaXRzX2RldmljZXMpKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5j bHVkZS9hc20tYXJtL2RvbWFpbi5oCmluZGV4IDA5ZmU1MDIuLjUwM2EzY2YgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9k b21haW4uaApAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgPGFzbS9naWMuaD4KICNpbmNsdWRl IDxwdWJsaWMvaHZtL3BhcmFtcy5oPgogI2luY2x1ZGUgPHhlbi9zZXJpYWwuaD4KKyNpbmNsdWRl IDx4ZW4vcmJ0cmVlLmg+CiAKIHN0cnVjdCBodm1fZG9tYWluCiB7CkBAIC0xMDgsNiArMTA5LDgg QEAgc3RydWN0IGFyY2hfZG9tYWluCiAgICAgICAgIH0gKnJkaXN0X3JlZ2lvbnM7CiAgICAgICAg IGludCBucl9yZWdpb25zOyAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiByZGlzdCBy ZWdpb25zICovCiAgICAgICAgIHVpbnQzMl90IHJkaXN0X3N0cmlkZTsgICAgICAgICAgICAgIC8q IFJlLURpc3RyaWJ1dG9yIHN0cmlkZSAqLworICAgICAgICBzdHJ1Y3QgcmJfcm9vdCBpdHNfZGV2 aWNlczsgICAgICAgICAvKiBEZXZpY2VzIG1hcHBlZCB0byBhbiBJVFMgKi8KKyAgICAgICAgc3Bp bmxvY2tfdCBpdHNfZGV2aWNlc19sb2NrOyAgICAgICAgLyogUHJvdGVjdHMgdGhlIGl0c19kZXZp Y2VzIHRyZWUgKi8KICNlbmRpZgogICAgIH0gdmdpYzsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMu aAppbmRleCA5YjBjMGVjLi4zYjdjNzI0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJt L2dpY192M19pdHMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaApAQCAt MTAzLDcgKzEwMywxMCBAQAogI2RlZmluZSBHSVRTX0NNRF9NT1ZBTEwgICAgICAgICAgICAgICAg IDB4MGUKICNkZWZpbmUgR0lUU19DTURfRElTQ0FSRCAgICAgICAgICAgICAgICAweDBmCiAKKyNk ZWZpbmUgSVRTX0RPT1JCRUxMX09GRlNFVCAgICAgICAgICAgICAweDEwMDQwCisKICNpbmNsdWRl IDx4ZW4vZGV2aWNlX3RyZWUuaD4KKyNpbmNsdWRlIDx4ZW4vcmJ0cmVlLmg+CiAKICNkZWZpbmUg SE9TVF9JVFNfRkxVU0hfQ01EX1FVRVVFICAgICAgICAoMVUgPDwgMCkKICNkZWZpbmUgSE9TVF9J VFNfVVNFU19QVEEgICAgICAgICAgICAgICAoMVUgPDwgMSkKQEAgLTE1Myw2ICsxNTYsMTYgQEAg aW50IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHVuc2lnbmVkIGludCBjcHUpOwogdm9pZCB2 Z2ljX3YzX2l0c19pbml0X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKTsKIHZvaWQgdmdpY192M19p dHNfZnJlZV9kb21haW4oc3RydWN0IGRvbWFpbiAqZCk7CiAKKy8qCisgKiBNYXAgYSBkZXZpY2Ug b24gdGhlIGhvc3QgYnkgYWxsb2NhdGluZyBhbiBJVFQgb24gdGhlIGhvc3QgKElUUykuCisgKiAi bnJfZXZlbnQiIHNwZWNpZmllcyBob3cgbWFueSBldmVudHMgKGludGVycnVwdHMpIHRoaXMgZGV2 aWNlIHdpbGwgbmVlZC4KKyAqIFNldHRpbmcgInZhbGlkIiB0byBmYWxzZSBkZWFsbG9jYXRlcyB0 aGUgZGV2aWNlLgorICovCitpbnQgZ2ljdjNfaXRzX21hcF9ndWVzdF9kZXZpY2Uoc3RydWN0IGRv bWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IGhvc3RfZG9v cmJlbGwsIHVpbnQzMl90IGhvc3RfZGV2aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFkZHJfdCBndWVzdF9kb29yYmVsbCwgdWludDMyX3QgZ3Vlc3RfZGV2aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnJfZXZlbnRzLCBib29sIHZhbGlkKTsK KwogaW50IGdpY3YzX2FsbG9jYXRlX2hvc3RfbHBpX2Jsb2NrKHN0cnVjdCBkb21haW4gKmQsIHVp bnQzMl90ICpmaXJzdF9scGkpOwogdm9pZCBnaWN2M19mcmVlX2hvc3RfbHBpX2Jsb2NrKHVpbnQz Ml90IGZpcnN0X2xwaSk7CiAKLS0gCjIuOC4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==