From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v6 06/36] ARM: GICv3 ITS: introduce ITS command handling Date: Fri, 7 Apr 2017 18:32:37 +0100 Message-ID: <20170407173307.9788-7-andre.przywara@arm.com> References: <20170407173307.9788-1-andre.przywara@arm.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.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cwXjH-0005h2-De for xen-devel@lists.xenproject.org; Fri, 07 Apr 2017 17:31:23 +0000 In-Reply-To: <20170407173307.9788-1-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, Vijay Kilari , Shanker Donthineni List-Id: xen-devel@lists.xenproject.org VG8gYmUgYWJsZSB0byBlYXNpbHkgc2VuZCBjb21tYW5kcyB0byB0aGUgSVRTLCBjcmVhdGUgdGhl IHJlc3BlY3RpdmUKd3JhcHBlciBmdW5jdGlvbnMsIHdoaWNoIHRha2UgY2FyZSBvZiB0aGUgcmlu ZyBidWZmZXIuClRoZSBmaXJzdCB0d28gY29tbWFuZHMgd2UgaW1wbGVtZW50IHByb3ZpZGUgbWV0 aG9kcyB0byBtYXAgYSBjb2xsZWN0aW9uCnRvIGEgcmVkaXN0cmlidXRvciAoYWthIGhvc3QgY29y ZSkgYW5kIHRvIGZsdXNoIHRoZSBjb21tYW5kIHF1ZXVlIChTWU5DKS4KU3RhcnQgdXNpbmcgdGhl c2UgY29tbWFuZHMgZm9yIG1hcHBpbmcgb25lIGNvbGxlY3Rpb24gdG8gZWFjaCBob3N0IENQVS4K QXMgYW4gSVRTIG1pZ2h0IGNob29zZSBiZXR3ZWVuICp0d28qIHdheXMgb2YgYWRkcmVzc2luZyBh IHJlZGlzdHJpYnV0b3IsCndlIHN0b3JlIGJvdGggdGhlIE1NSU8gYmFzZSBhZGRyZXNzIGFzIHdl bGwgYXMgdGhlIHByb2Nlc3NvciBudW1iZXIgaW4KYSBwZXItQ1BVIHZhcmlhYmxlIHRvIGdpdmUg ZWFjaCBJVFMgd2hhdCBpdCB3YW50cy4KClNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxh bmRyZS5wcnp5d2FyYUBhcm0uY29tPgpSZXZpZXdlZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4u Z3JhbGxAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KLS0tCiB4ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jICAgICAgICAgfCAx OTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS9n aWMtdjMtbHBpLmMgICAgICAgICB8ICAyOCArKysrKysKIHhlbi9hcmNoL2FybS9naWMtdjMuYyAg ICAgICAgICAgICB8ICAyNiArKysrLQogeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5o IHwgICAyICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oICB8ICAzNyArKysrKysr CiA1IGZpbGVzIGNoYW5nZWQsIDI5MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYyBiL3hlbi9hcmNoL2FybS9naWMtdjMt aXRzLmMKaW5kZXggM2U4ZDhjZS4uMDE2NGI5NiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2dp Yy12My1pdHMuYworKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jCkBAIC0xOSwxMSArMTks MTQgQEAKICAqLwogCiAjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9kZWxheS5o PgogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPHhlbi9zaXplcy5oPgorI2luY2x1ZGUg PGFzbS9naWMuaD4KICNpbmNsdWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KICNpbmNsdWRlIDxhc20v Z2ljX3YzX2l0cy5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9wYWdlLmg+ CiAKICNkZWZpbmUgSVRTX0NNRF9RVUVVRV9TWiAgICAgICAgICAgICAgICBTWl8xTQogCkBAIC0z OCw2ICs0MSwxNjAgQEAgYm9vbCBnaWN2M19pdHNfaG9zdF9oYXNfaXRzKHZvaWQpCiAgICAgcmV0 dXJuICFsaXN0X2VtcHR5KCZob3N0X2l0c19saXN0KTsKIH0KIAorI2RlZmluZSBCVUZQVFJfTUFT SyAgICAgICAgICAgICAgICAgICAgIEdFTk1BU0soMTksIDUpCitzdGF0aWMgaW50IGl0c19zZW5k X2NvbW1hbmQoc3RydWN0IGhvc3RfaXRzICpod19pdHMsIGNvbnN0IHZvaWQgKml0c19jbWQpCit7 CisgICAgLyoKKyAgICAgKiBUaGUgY29tbWFuZCBxdWV1ZSBzaG91bGQgYWN0dWFsbHkgbmV2ZXIg YmVjb21lIGZ1bGwsIGlmIGl0IGRvZXMgYW55d2F5CisgICAgICogYW5kIHRoaXMgc2l0dWF0aW9u IGlzIG5vdCByZXNvbHZlZCBxdWlja2x5LCB0aGlzIHBvaW50cyB0byBhIG11Y2gKKyAgICAgKiBi aWdnZXIgcHJvYmxlbSwgcHJvYmFibHkgYW4gaGFyZHdhcmUgZXJyb3IuCisgICAgICogU28gdG8g Y292ZXIgdGhlIG9uZS1vZmYgY2FzZSB3aGVyZSB3ZSBhY3R1YWxseSBoaXQgYSBmdWxsIGNvbW1h bmQKKyAgICAgKiBxdWV1ZSwgd2UgaW50cm9kdWNlIGEgc21hbGwgZ3JhY2UgcGVyaW9kIHRvIG5v dCBnaXZlIHVwIHRvbyBxdWlja2x5LgorICAgICAqIEdpdmVuIHRoZSB1c3VhbCBtdWx0aS1odW5k cmVkIE1IeiBmcmVxdWVuY3kgdGhlIElUUyB1c3VhbGx5IHJ1bnMgd2l0aCwKKyAgICAgKiBvbmUg bWlsbGlzZWNvbmQgKGZvciBhIHNpbmdsZSBjb21tYW5kKSBzZWVtIHRvIGJlIG1vcmUgdGhhbiBl bm91Z2guCisgICAgICogQnV0IHRoaXMgdmFsdWUgaXMgcmF0aGVyIGFyYml0cmFyaWx5IGNob3Nl biBiYXNlZCBvbiB0aGVvcmV0aWNhbAorICAgICAqIGNvbnNpZGVyYXRpb25zLgorICAgICAqLwor ICAgIHNfdGltZV90IGRlYWRsaW5lID0gTk9XKCkgKyBNSUxMSVNFQ1MoMSk7CisgICAgdWludDY0 X3QgcmVhZHAsIHdyaXRlcDsKKyAgICBpbnQgcmV0ID0gLUVCVVNZOworCisgICAgLyogTm8gSVRT IGNvbW1hbmRzIGZyb20gYW4gaW50ZXJydXB0IGhhbmRsZXIgKGF0IHRoZSBtb21lbnQpLiAqLwor ICAgIEFTU0VSVCghaW5faXJxKCkpOworCisgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2Nr KTsKKworICAgIGRvIHsKKyAgICAgICAgcmVhZHAgPSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRz X2Jhc2UgKyBHSVRTX0NSRUFEUikgJiBCVUZQVFJfTUFTSzsKKyAgICAgICAgd3JpdGVwID0gcmVh ZHFfcmVsYXhlZChod19pdHMtPml0c19iYXNlICsgR0lUU19DV1JJVEVSKSAmIEJVRlBUUl9NQVNL OworCisgICAgICAgIGlmICggKCh3cml0ZXAgKyBJVFNfQ01EX1NJWkUpICUgSVRTX0NNRF9RVUVV RV9TWikgIT0gcmVhZHAgKQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSAwOworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBJZiB0aGUg Y29tbWFuZCBxdWV1ZSBpcyBmdWxsLCB3YWl0IGZvciBhIGJpdCBpbiB0aGUgaG9wZSBpdCBkcmFp bnMKKyAgICAgICAgICogYmVmb3JlIGdpdmluZyB1cC4KKyAgICAgICAgICovCisgICAgICAgIHNw aW5fdW5sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKKyAgICAgICAgY3B1X3JlbGF4KCk7CisgICAg ICAgIHVkZWxheSgxKTsKKyAgICAgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKKyAg ICB9IHdoaWxlICggTk9XKCkgPD0gZGVhZGxpbmUgKTsKKworICAgIGlmICggcmV0ICkKKyAgICB7 CisgICAgICAgIHNwaW5fdW5sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKKyAgICAgICAgaWYgKCBw cmludGtfcmF0ZWxpbWl0KCkgKQorICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJo b3N0IElUUzogY29tbWFuZCBxdWV1ZSBmdWxsLlxuIik7CisgICAgICAgIHJldHVybiByZXQ7Cisg ICAgfQorCisgICAgbWVtY3B5KGh3X2l0cy0+Y21kX2J1ZiArIHdyaXRlcCwgaXRzX2NtZCwgSVRT X0NNRF9TSVpFKTsKKyAgICBpZiAoIGh3X2l0cy0+ZmxhZ3MgJiBIT1NUX0lUU19GTFVTSF9DTURf UVVFVUUgKQorICAgICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2UoaHdf aXRzLT5jbWRfYnVmICsgd3JpdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSVRTX0NNRF9TSVpFKTsKKyAgICBlbHNlCisgICAgICAgIGRzYihpc2hzdCk7 CisKKyAgICB3cml0ZXAgPSAod3JpdGVwICsgSVRTX0NNRF9TSVpFKSAlIElUU19DTURfUVVFVUVf U1o7CisgICAgd3JpdGVxX3JlbGF4ZWQod3JpdGVwICYgQlVGUFRSX01BU0ssIGh3X2l0cy0+aXRz X2Jhc2UgKyBHSVRTX0NXUklURVIpOworCisgICAgc3Bpbl91bmxvY2soJmh3X2l0cy0+Y21kX2xv Y2spOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFdhaXQgZm9yIGFuIElUUyB0byBmaW5pc2gg cHJvY2Vzc2luZyBhbGwgY29tbWFuZHMuICovCitzdGF0aWMgaW50IGdpY3YzX2l0c193YWl0X2Nv bW1hbmRzKHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKQoreworICAgIC8qCisgICAgICogQXMgdGhl cmUgY291bGQgYmUgcXVpdGUgYSBudW1iZXIgb2YgY29tbWFuZHMgaW4gYSBxdWV1ZSwgd2Ugd2ls bAorICAgICAqIHdhaXQgYSBiaXQgbG9uZ2VyIHRoYW4gdGhlIG9uZSBtaWxsaXNlY29uZCBmb3Ig YSBzaW5nbGUgY29tbWFuZCBhYm92ZS4KKyAgICAgKiBBZ2FpbiB0aGlzIHZhbHVlIGlzIGJhc2Vk IG9uIHRoZW9yZXRpY2FsIGNvbnNpZGVyYXRpb25zLCBhY3R1YWxseSB0aGUKKyAgICAgKiBjb21t YW5kIHF1ZXVlIHNob3VsZCBkcmFpbiBtdWNoIGZhc3Rlci4KKyAgICAgKi8KKyAgICBzX3RpbWVf dCBkZWFkbGluZSA9IE5PVygpICsgTUlMTElTRUNTKDEwMCk7CisgICAgdWludDY0X3QgcmVhZHAs IHdyaXRlcDsKKworICAgIGRvIHsKKyAgICAgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2Nr KTsKKyAgICAgICAgcmVhZHAgPSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRT X0NSRUFEUikgJiBCVUZQVFJfTUFTSzsKKyAgICAgICAgd3JpdGVwID0gcmVhZHFfcmVsYXhlZCho d19pdHMtPml0c19iYXNlICsgR0lUU19DV1JJVEVSKSAmIEJVRlBUUl9NQVNLOworICAgICAgICBz cGluX3VubG9jaygmaHdfaXRzLT5jbWRfbG9jayk7CisKKyAgICAgICAgaWYgKCByZWFkcCA9PSB3 cml0ZXAgKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY3B1X3JlbGF4KCk7Cisg ICAgICAgIHVkZWxheSgxKTsKKyAgICB9IHdoaWxlICggTk9XKCkgPD0gZGVhZGxpbmUgKTsKKwor ICAgIHJldHVybiAtRVRJTUVET1VUOworfQorCitzdGF0aWMgdWludDY0X3QgZW5jb2RlX3JkYmFz ZShzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cywgdW5zaWduZWQgaW50IGNwdSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHJlZykKK3sKKyAgICByZWcgJj0gfkdFTk1BU0so NTEsIDE2KTsKKworICAgIHJlZyB8PSBnaWN2M19nZXRfcmVkaXN0X2FkZHJlc3MoY3B1LCBod19p dHMtPmZsYWdzICYgSE9TVF9JVFNfVVNFU19QVEEpOworCisgICAgcmV0dXJuIHJlZzsKK30KKwor c3RhdGljIGludCBpdHNfc2VuZF9jbWRfc3luYyhzdHJ1Y3QgaG9zdF9pdHMgKml0cywgdW5zaWdu ZWQgaW50IGNwdSkKK3sKKyAgICB1aW50NjRfdCBjbWRbNF07CisKKyAgICBjbWRbMF0gPSBHSVRT X0NNRF9TWU5DOworICAgIGNtZFsxXSA9IDB4MDA7CisgICAgY21kWzJdID0gZW5jb2RlX3JkYmFz ZShpdHMsIGNwdSwgMHgwKTsKKyAgICBjbWRbM10gPSAweDAwOworCisgICAgcmV0dXJuIGl0c19z ZW5kX2NvbW1hbmQoaXRzLCBjbWQpOworfQorCitzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9tYXBj KHN0cnVjdCBob3N0X2l0cyAqaXRzLCB1aW50MzJfdCBjb2xsZWN0aW9uX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHVpbnQ2NF90IGNt ZFs0XTsKKworICAgIGNtZFswXSA9IEdJVFNfQ01EX01BUEM7CisgICAgY21kWzFdID0gMHgwMDsK KyAgICBjbWRbMl0gPSBlbmNvZGVfcmRiYXNlKGl0cywgY3B1LCBjb2xsZWN0aW9uX2lkKTsKKyAg ICBjbWRbMl0gfD0gR0lUU19WQUxJRF9CSVQ7CisgICAgY21kWzNdID0gMHgwMDsKKworICAgIHJl dHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKK30KKworLyogU2V0IHVwIHRoZSAoMTox KSBjb2xsZWN0aW9uIG1hcHBpbmcgZm9yIHRoZSBnaXZlbiBob3N0IENQVS4gKi8KK2ludCBnaWN2 M19pdHNfc2V0dXBfY29sbGVjdGlvbih1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHN0cnVjdCBo b3N0X2l0cyAqaXRzOworICAgIGludCByZXQ7CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0 cywgJmhvc3RfaXRzX2xpc3QsIGVudHJ5KQorICAgIHsKKyAgICAgICAgcmV0ID0gaXRzX3NlbmRf Y21kX21hcGMoaXRzLCBjcHUsIGNwdSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAg IHJldHVybiByZXQ7CisKKyAgICAgICAgcmV0ID0gaXRzX3NlbmRfY21kX3N5bmMoaXRzLCBjcHUp OworICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAg IHJldCA9IGdpY3YzX2l0c193YWl0X2NvbW1hbmRzKGl0cyk7CisgICAgICAgIGlmICggcmV0ICkK KyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKICNk ZWZpbmUgQkFTRVJfQVRUUl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgKCgweDNVTCA8PCBHSVRTX0JBU0VSX1NIQVJFQUJJTElUWV9TSElG VCkgICAgICAgICAgICAgICB8IFwKICAgICAgICAgICgweDdVTCA8PCBHSVRTX0JBU0VSX09VVEVS X0NBQ0hFQUJJTElUWV9TSElGVCkgICAgICAgICB8IFwKQEAgLTE4Miw2ICszMzksNDEgQEAgcmV0 cnk6CiAgICAgcmV0dXJuIC1FSU5WQUw7CiB9CiAKKy8qCisgKiBCZWZvcmUgYW4gSVRTIGdldHMg aW5pdGlhbGl6ZWQsIGl0IHNob3VsZCBiZSBpbiBhIHF1aWVzY2VudCBzdGF0ZSwgd2hlcmUKKyAq IGFsbCBvdXRzdGFuZGluZyBjb21tYW5kcyBhbmQgdHJhbnNhY3Rpb25zIGhhdmUgZmluaXNoZWQu CisgKiBTbyBpZiB0aGUgSVRTIGlzIGFscmVhZHkgZW5hYmxlZCwgdHVybiBpdCBvZmYgYW5kIHdh aXQgZm9yIGFsbCBvdXRzdGFuZGluZworICogb3BlcmF0aW9ucyB0byBnZXQgcHJvY2Vzc2VkIGJ5 IHBvbGxpbmcgdGhlIFFVSUVTQ0VOVCBiaXQuCisgKi8KK3N0YXRpYyBpbnQgZ2ljdjNfZGlzYWJs ZV9pdHMoc3RydWN0IGhvc3RfaXRzICpod19pdHMpCit7CisgICAgdWludDMyX3QgcmVnOworICAg IC8qCisgICAgICogQXMgd2UgYWxzbyBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb21tYW5kIHF1ZXVl IHRvIGRyYWluLCB3ZSB1c2UgdGhlIHNhbWUKKyAgICAgKiAoYXJiaXRyYXJ5KSB0aW1lb3V0IHZh bHVlIGFzIGFib3ZlIGZvciBnaWN2M19pdHNfd2FpdF9jb21tYW5kcygpLgorICAgICAqLworICAg IHNfdGltZV90IGRlYWRsaW5lID0gTk9XKCkgKyBNSUxMSVNFQ1MoMTAwKTsKKworICAgIHJlZyA9 IHJlYWRsX3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1RMUik7CisgICAgaWYgKCAh KHJlZyAmIEdJVFNfQ1RMUl9FTkFCTEUpICYmIChyZWcgJiBHSVRTX0NUTFJfUVVJRVNDRU5UKSAp CisgICAgICAgIHJldHVybiAwOworCisgICAgd3JpdGVsX3JlbGF4ZWQocmVnICYgfkdJVFNfQ1RM Ul9FTkFCTEUsIGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX0NUTFIpOworCisgICAgZG8geworICAg ICAgICByZWcgPSByZWFkbF9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX0NUTFIpOwor ICAgICAgICBpZiAoIHJlZyAmIEdJVFNfQ1RMUl9RVUlFU0NFTlQgKQorICAgICAgICAgICAgcmV0 dXJuIDA7CisKKyAgICAgICAgY3B1X3JlbGF4KCk7CisgICAgICAgIHVkZWxheSgxKTsKKyAgICB9 IHdoaWxlICggTk9XKCkgPD0gZGVhZGxpbmUgKTsKKworICAgIHByaW50ayhYRU5MT0dfRVJSICJJ VFNAJWx4IG5vdCBxdWllc2NlbnQuXG4iLCBod19pdHMtPmFkZHIpOworCisgICAgcmV0dXJuIC1F VElNRURPVVQ7Cit9CisKIHN0YXRpYyBpbnQgZ2ljdjNfaXRzX2luaXRfc2luZ2xlX2l0cyhzdHJ1 Y3QgaG9zdF9pdHMgKmh3X2l0cykKIHsKICAgICB1aW50NjRfdCByZWc7CkBAIC0xOTEsMTAgKzM4 MywxNyBAQCBzdGF0aWMgaW50IGdpY3YzX2l0c19pbml0X3NpbmdsZV9pdHMoc3RydWN0IGhvc3Rf aXRzICpod19pdHMpCiAgICAgaWYgKCAhaHdfaXRzLT5pdHNfYmFzZSApCiAgICAgICAgIHJldHVy biAtRU5PTUVNOwogCisgICAgcmV0ID0gZ2ljdjNfZGlzYWJsZV9pdHMoaHdfaXRzKTsKKyAgICBp ZiAoIHJldCApCisgICAgICAgIHJldHVybiByZXQ7CisKICAgICByZWcgPSByZWFkcV9yZWxheGVk KGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX1RZUEVSKTsKICAgICBod19pdHMtPmRldmlkX2JpdHMg PSBHSVRTX1RZUEVSX0RFVklDRV9JRF9CSVRTKHJlZyk7CiAgICAgaHdfaXRzLT5ldmlkX2JpdHMg PSBHSVRTX1RZUEVSX0VWRU5UX0lEX0JJVFMocmVnKTsKICAgICBod19pdHMtPml0dGVfc2l6ZSA9 IEdJVFNfVFlQRVJfSVRUX1NJWkUocmVnKTsKKyAgICBpZiAoIHJlZyAmIEdJVFNfVFlQRVJfUFRB ICkKKyAgICAgICAgaHdfaXRzLT5mbGFncyB8PSBIT1NUX0lUU19VU0VTX1BUQTsKKyAgICBzcGlu X2xvY2tfaW5pdCgmaHdfaXRzLT5jbWRfbG9jayk7CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IEdJ VFNfQkFTRVJfTlJfUkVHUzsgaSsrICkKICAgICB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v Z2ljLXYzLWxwaS5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGkuYwppbmRleCAyN2U5YmY1Li5k OGE0ZjVhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5jCisrKyBiL3hlbi9h cmNoL2FybS9naWMtdjMtbHBpLmMKQEAgLTQ1LDYgKzQ1LDggQEAgc3RhdGljIHN0cnVjdCB7CiB9 IGxwaV9kYXRhOwogCiBzdHJ1Y3QgbHBpX3JlZGlzdF9kYXRhIHsKKyAgICBwYWRkcl90ICAgICAg ICAgICAgIHJlZGlzdF9hZGRyOworICAgIHVuc2lnbmVkIGludCAgICAgICAgcmVkaXN0X2lkOwog ICAgIHZvaWQgICAgICAgICAgICAgICAgKnBlbmRpbmdfdGFibGU7CiB9OwogCkBAIC01Miw2ICs1 NCwzMiBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGxwaV9yZWRpc3RfZGF0YSwgbHBp X3JlZGlzdCk7CiAKICNkZWZpbmUgTUFYX05SX0hPU1RfTFBJUyAgIChscGlfZGF0YS5tYXhfaG9z dF9scGlfaWRzIC0gTFBJX09GRlNFVCkKIAorLyoKKyAqIEFuIElUUyBjYW4gcmVmZXIgdG8gcmVk aXN0cmlidXRvcnMgaW4gdHdvIHdheXM6IGVpdGhlciBieSBhbiBJRCAocG9zc2libHkKKyAqIHRo ZSBDUFUgbnVtYmVyKSBvciBieSBpdHMgTU1JTyBhZGRyZXNzLiBUaGlzIGlzIGEgaGFyZHdhcmUg aW1wbGVtZW50YXRpb24KKyAqIGNob2ljZSwgc28gd2UgaGF2ZSB0byBjb3BlIHdpdGggYm90aCBh cHByb2FjaGVzLiBUaGUgR0lDdjMgY29kZSBjYWxjdWxhdGVzCisgKiBib3RoIHZhbHVlcyBhbmQg Y2FsbHMgdGhpcyBmdW5jdGlvbiB0byBsZXQgdGhlIElUUyBzdG9yZSB0aGVtIHdoZW4gaXQncwor ICogbGF0ZXIgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aGVtLiBUaGlzIGlzIGRvbmUgaW4gYSBwZXIt Q1BVIHZhcmlhYmxlLgorICovCit2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90 IGFkZHJlc3MsIHVuc2lnbmVkIGludCByZWRpc3RfaWQpCit7CisgICAgdGhpc19jcHUobHBpX3Jl ZGlzdCkucmVkaXN0X2FkZHIgPSBhZGRyZXNzOworICAgIHRoaXNfY3B1KGxwaV9yZWRpc3QpLnJl ZGlzdF9pZCA9IHJlZGlzdF9pZDsKK30KKworLyoKKyAqIFJldHVybnMgYSByZWRpc3RyaWJ1dG9y J3MgSUQgKGVpdGhlciBhcyBhbiBhZGRyZXNzIG9yIGFzIGFuIElEKS4KKyAqIFRoaXMgbXVzdCBi ZSAoYW5kIGlzKSBjYWxsZWQgb25seSBhZnRlciBpdCBoYXMgYmVlbiBzZXR1cCBieSB0aGUgYWJv dmUKKyAqIGZ1bmN0aW9uLgorICovCit1aW50NjRfdCBnaWN2M19nZXRfcmVkaXN0X2FkZHJlc3Mo dW5zaWduZWQgaW50IGNwdSwgYm9vbCB1c2VfcHRhKQoreworICAgIGlmICggdXNlX3B0YSApCisg ICAgICAgIHJldHVybiBwZXJfY3B1KGxwaV9yZWRpc3QsIGNwdSkucmVkaXN0X2FkZHIgJiBHRU5N QVNLKDUxLCAxNik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcGVyX2NwdShscGlfcmVkaXN0 LCBjcHUpLnJlZGlzdF9pZCA8PCAxNjsKK30KKwogc3RhdGljIGludCBnaWN2M19scGlfYWxsb2Nh dGVfcGVuZHRhYmxlKHVpbnQ2NF90ICpyZWcpCiB7CiAgICAgdWludDY0X3QgdmFsOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My5jIGIveGVuL2FyY2gvYXJtL2dpYy12My5jCmluZGV4 IDU0ZDIyMzUuLmE1NTllNWUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYworKysg Yi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKQEAgLTY2NSw4ICs2NjUsMjUgQEAgc3RhdGljIGludCBf X2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkKIAogICAgICAgICAgICAgICAgIGlmICgg dHlwZXIgJiBHSUNSX1RZUEVSX1BMUElTICkKICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgIHBhZGRyX3QgcmRpc3RfYWRkcjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHByb2NudW07CiAgICAgICAgICAgICAgICAgICAgIGludCByZXQ7CiAKKyAgICAgICAg ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICogVGhlIElUUyByZWZlcnMgdG8g cmVkaXN0cmlidXRvcnMgZWl0aGVyIGJ5IHRoZWlyIHBoeXNpY2FsCisgICAgICAgICAgICAgICAg ICAgICAqIGFkZHJlc3Mgb3IgYnkgdGhlaXIgSUQuIFdoaWNoIG9uZSB0byB1c2UgaXMgYW4gSVRT CisgICAgICAgICAgICAgICAgICAgICAqIGNob2ljZS4gU28gZGV0ZXJtaW5lIHRob3NlIHR3byB2 YWx1ZXMgaGVyZSAod2hpY2ggd2UKKyAgICAgICAgICAgICAgICAgICAgICogY2FuIGRvIG9ubHkg aGVyZSBpbiBHSUN2MyBjb2RlKSBhbmQgdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICog SVRTIGNvZGUgYWJvdXQgaXQsIHNvIGl0IGNhbiB1c2UgdGhlbSBsYXRlciB0byBiZSBhYmxlCisg ICAgICAgICAgICAgICAgICAgICAqIHRvIGFkZHJlc3MgdGhvc2UgcmVkaXN0cmlidXRvcnMgYWNj b3JkaW5nbHkuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBy ZGlzdF9hZGRyID0gZ2ljdjMucmRpc3RfcmVnaW9uc1tpXS5iYXNlOworICAgICAgICAgICAgICAg ICAgICByZGlzdF9hZGRyICs9IHB0ciAtIGdpY3YzLnJkaXN0X3JlZ2lvbnNbaV0ubWFwX2Jhc2U7 CisgICAgICAgICAgICAgICAgICAgIHByb2NudW0gPSAodHlwZXIgJiBHSUNSX1RZUEVSX1BST0Nf TlVNX01BU0spOworICAgICAgICAgICAgICAgICAgICBwcm9jbnVtID4+PSBHSUNSX1RZUEVSX1BS T0NfTlVNX1NISUZUOworCisgICAgICAgICAgICAgICAgICAgIGdpY3YzX3NldF9yZWRpc3RfYWRk cmVzcyhyZGlzdF9hZGRyLCBwcm9jbnVtKTsKKwogICAgICAgICAgICAgICAgICAgICByZXQgPSBn aWN2M19scGlfaW5pdF9yZGlzdChwdHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAm JiByZXQgIT0gLUVOT0RFViApCiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTcwNCw3ICs3MjEs NyBAQCBzdGF0aWMgaW50IF9faW5pdCBnaWN2M19wb3B1bGF0ZV9yZGlzdCh2b2lkKQogCiBzdGF0 aWMgaW50IGdpY3YzX2NwdV9pbml0KHZvaWQpCiB7Ci0gICAgaW50IGk7CisgICAgaW50IGksIHJl dDsKICAgICB1aW50MzJfdCBwcmlvcml0eTsKIAogICAgIC8qIFJlZ2lzdGVyIG91cnNlbHZlcyB3 aXRoIHRoZSByZXN0IG9mIHRoZSB3b3JsZCAqLwpAQCAtNzE0LDYgKzczMSwxMyBAQCBzdGF0aWMg aW50IGdpY3YzX2NwdV9pbml0KHZvaWQpCiAgICAgaWYgKCBnaWN2M19lbmFibGVfcmVkaXN0KCkg KQogICAgICAgICByZXR1cm4gLUVOT0RFVjsKIAorICAgIGlmICggZ2ljdjNfaXRzX2hvc3RfaGFz X2l0cygpICkKKyAgICB7CisgICAgICAgIHJldCA9IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9u KHNtcF9wcm9jZXNzb3JfaWQoKSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIHJl dHVybiByZXQ7CisgICAgfQorCiAgICAgLyogU2V0IHByaW9yaXR5IG9uIFBQSSBhbmQgU0dJIGlu dGVycnVwdHMgKi8KICAgICBwcmlvcml0eSA9IChHSUNfUFJJX0lQSSA8PCAyNCB8IEdJQ19QUklf SVBJIDw8IDE2IHwgR0lDX1BSSV9JUEkgPDwgOCB8CiAgICAgICAgICAgICAgICAgR0lDX1BSSV9J UEkpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIGIveGVu L2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oCmluZGV4IDI3OTJmZmQuLjY1YzlkYzQgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaAorKysgYi94ZW4vaW5j bHVkZS9hc20tYXJtL2dpY192M19kZWZzLmgKQEAgLTEwMyw2ICsxMDMsOCBAQAogI2RlZmluZSBH SUNSX1RZUEVSX1BMUElTICAgICAgICAgICAgICgxVSA8PCAwKQogI2RlZmluZSBHSUNSX1RZUEVS X1ZMUElTICAgICAgICAgICAgICgxVSA8PCAxKQogI2RlZmluZSBHSUNSX1RZUEVSX0xBU1QgICAg ICAgICAgICAgICgxVSA8PCA0KQorI2RlZmluZSBHSUNSX1RZUEVSX1BST0NfTlVNX1NISUZUICAg IDgKKyNkZWZpbmUgR0lDUl9UWVBFUl9QUk9DX05VTV9NQVNLICAgICAoMHhmZmZmIDw8IEdJQ1Jf VFlQRVJfUFJPQ19OVU1fU0hJRlQpCiAKIC8qIEZvciBzcGVjaWZ5aW5nIHRoZSBpbm5lciBjYWNo ZWFiaWxpdHkgdHlwZSBvbmx5ICovCiAjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9uQ25CICAgICAg ICAgMFVMTApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggYi94 ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAppbmRleCA1MmY3MzZkLi4xMzc5NGUwIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19pdHMuaAorKysgYi94ZW4vaW5j bHVkZS9hc20tYXJtL2dpY192M19pdHMuaApAQCAtNDIsNiArNDIsNyBAQAogI2RlZmluZSBHSVRT X0NUTFJfUVVJRVNDRU5UICAgICAgICAgICAgIEJJVCgzMSkKICNkZWZpbmUgR0lUU19DVExSX0VO QUJMRSAgICAgICAgICAgICAgICBCSVQoMCkKIAorI2RlZmluZSBHSVRTX1RZUEVSX1BUQSAgICAg ICAgICAgICAgICAgIEJJVCgxOSkKICNkZWZpbmUgR0lUU19UWVBFUl9ERVZJRFNfU0hJRlQgICAg ICAgICAxMwogI2RlZmluZSBHSVRTX1RZUEVSX0RFVklEU19NQVNLICAgICAgICAgICgweDFmVUwg PDwgR0lUU19UWVBFUl9ERVZJRFNfU0hJRlQpCiAjZGVmaW5lIEdJVFNfVFlQRVJfREVWSUNFX0lE X0JJVFMocikgICAgKCgociAmIEdJVFNfVFlQRVJfREVWSURTX01BU0spID4+IFwKQEAgLTgxLDkg KzgyLDI2IEBACiAKICNkZWZpbmUgR0lUU19DQkFTRVJfU0laRV9NQVNLICAgICAgICAgICAweGZm CiAKKy8qIElUUyBjb21tYW5kIGRlZmluaXRpb25zICovCisjZGVmaW5lIElUU19DTURfU0laRSAg ICAgICAgICAgICAgICAgICAgMzIKKworI2RlZmluZSBHSVRTX0NNRF9NT1ZJICAgICAgICAgICAg ICAgICAgIDB4MDEKKyNkZWZpbmUgR0lUU19DTURfSU5UICAgICAgICAgICAgICAgICAgICAweDAz CisjZGVmaW5lIEdJVFNfQ01EX0NMRUFSICAgICAgICAgICAgICAgICAgMHgwNAorI2RlZmluZSBH SVRTX0NNRF9TWU5DICAgICAgICAgICAgICAgICAgIDB4MDUKKyNkZWZpbmUgR0lUU19DTURfTUFQ RCAgICAgICAgICAgICAgICAgICAweDA4CisjZGVmaW5lIEdJVFNfQ01EX01BUEMgICAgICAgICAg ICAgICAgICAgMHgwOQorI2RlZmluZSBHSVRTX0NNRF9NQVBUSSAgICAgICAgICAgICAgICAgIDB4 MGEKKyNkZWZpbmUgR0lUU19DTURfTUFQSSAgICAgICAgICAgICAgICAgICAweDBiCisjZGVmaW5l IEdJVFNfQ01EX0lOViAgICAgICAgICAgICAgICAgICAgMHgwYworI2RlZmluZSBHSVRTX0NNRF9J TlZBTEwgICAgICAgICAgICAgICAgIDB4MGQKKyNkZWZpbmUgR0lUU19DTURfTU9WQUxMICAgICAg ICAgICAgICAgICAweDBlCisjZGVmaW5lIEdJVFNfQ01EX0RJU0NBUkQgICAgICAgICAgICAgICAg MHgwZgorCiAjaW5jbHVkZSA8eGVuL2RldmljZV90cmVlLmg+CiAKICNkZWZpbmUgSE9TVF9JVFNf RkxVU0hfQ01EX1FVRVVFICAgICAgICAoMVUgPDwgMCkKKyNkZWZpbmUgSE9TVF9JVFNfVVNFU19Q VEEgICAgICAgICAgICAgICAoMVUgPDwgMSkKIAogLyogZGF0YSBzdHJ1Y3R1cmUgZm9yIGVhY2gg aGFyZHdhcmUgSVRTICovCiBzdHJ1Y3QgaG9zdF9pdHMgewpAQCAtOTUsNiArMTEzLDcgQEAgc3Ry dWN0IGhvc3RfaXRzIHsKICAgICB1bnNpZ25lZCBpbnQgZGV2aWRfYml0czsKICAgICB1bnNpZ25l ZCBpbnQgZXZpZF9iaXRzOwogICAgIHVuc2lnbmVkIGludCBpdHRlX3NpemU7CisgICAgc3Bpbmxv Y2tfdCBjbWRfbG9jazsKICAgICB2b2lkICpjbWRfYnVmOwogICAgIHVuc2lnbmVkIGludCBmbGFn czsKIH07CkBAIC0xMTUsNiArMTM0LDEzIEBAIGludCBnaWN2M19scGlfaW5pdF9yZGlzdCh2b2lk IF9faW9tZW0gKiByZGlzdF9iYXNlKTsKIGludCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXModW5z aWduZWQgaW50IGhvc3RfbHBpX2JpdHMpOwogaW50IGdpY3YzX2l0c19pbml0KHZvaWQpOwogCisv KiBTdG9yZSB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQgSUQgZm9yIGVhY2ggcmVkaXN0cmlidXRv ciBhcyByZWFkIGZyb20gRFQuICovCit2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRk cl90IGFkZHJlc3MsIHVuc2lnbmVkIGludCByZWRpc3RfaWQpOwordWludDY0X3QgZ2ljdjNfZ2V0 X3JlZGlzdF9hZGRyZXNzKHVuc2lnbmVkIGludCBjcHUsIGJvb2wgdXNlX3B0YSk7CisKKy8qIE1h cCBhIGNvbGxlY3Rpb24gZm9yIHRoaXMgaG9zdCBDUFUgdG8gZWFjaCBob3N0IElUUy4gKi8KK2lu dCBnaWN2M19pdHNfc2V0dXBfY29sbGVjdGlvbih1bnNpZ25lZCBpbnQgY3B1KTsKKwogI2Vsc2UK IAogc3RhdGljIGlubGluZSB2b2lkIGdpY3YzX2l0c19kdF9pbml0KGNvbnN0IHN0cnVjdCBkdF9k ZXZpY2Vfbm9kZSAqbm9kZSkKQEAgLTE0MSw2ICsxNjcsMTcgQEAgc3RhdGljIGlubGluZSBpbnQg Z2ljdjNfaXRzX2luaXQodm9pZCkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGlubGluZSB2 b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90IGFkZHJlc3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWRpc3RfaWQp Cit7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHVu c2lnbmVkIGludCBjcHUpCit7CisgICAgLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIHdpdGhv dXQgYW4gSVRTLiAqLworICAgIEJVRygpOworfQorCiAjZW5kaWYgLyogQ09ORklHX0hBU19JVFMg Ki8KIAogI2VuZGlmCi0tIAoyLjkuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=