From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shanker Donthineni Subject: [PATCH V3 09/10] xen/arm: io: Use binary search for mmio handler lookup Date: Mon, 27 Jun 2016 15:33:41 -0500 Message-ID: <1467059622-14786-9-git-send-email-shankerd@codeaurora.org> References: <1467059622-14786-1-git-send-email-shankerd@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467059622-14786-1-git-send-email-shankerd@codeaurora.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel , Julien Grall , Stefano Stabellini Cc: Philip Elcan , Shanker Donthineni , Vikram Sethi List-Id: xen-devel@lists.xenproject.org QXMgdGhlIG51bWJlciBvZiBJL08gaGFuZGxlcnMgaW5jcmVhc2UsIHRoZSBvdmVyaGVhZCBhc3Nv Y2lhdGVkIHdpdGgKbGluZWFyIGxvb2t1cCBhbHNvIGluY3JlYXNlcy4gVGhlIHN5c3RlbSBtaWdo dCBoYXZlIG1heGltdW0gb2YgMTQ0Cihhc3N1bWluZyBDT05GSUdfTlJfQ1BVUz0xMjgpIG1taW8g aGFuZGxlcnMuIEluIHdvcnN0IGNhc2Ugc2NlbmFyaW8sCml0IHdvdWxkIHJlcXVpcmUgMTQ0IGl0 ZXJhdGlvbnMgZm9yIGZpbmRpbmcgYSBtYXRjaGluZyBoYW5kbGVyLiBOb3cKaXQgaXMgdGltZSBm b3IgdXMgdG8gY2hhbmdlIGZyb20gbGluZWFyIChjb21wbGV4aXR5IE8obikpIHRvIGEgYmluYXJ5 CnNlYXJjaCAoY29tcGxleGl0eSBPKGxvZyBuKSBmb3IgcmVkdWNpbmcgbW1pbyBoYW5kbGVyIGxv b2t1cCBvdmVyaGVhZC4KClNpZ25lZC1vZmYtYnk6IFNoYW5rZXIgRG9udGhpbmVuaSA8c2hhbmtl cmRAY29kZWF1cm9yYS5vcmc+Ci0tLQpDaGFuZ2VzIHNpbmNlIHYyOgogIENvbnZlcnRlZCBtbWlv IGxvb2t1cCBjb2RlIHRvIGEgY3JpdGljYWwgc2VjdGlvbi4KICBDb3BpZWQgdGhlIGZ1bmN0aW9u IGJzcmVhY2goKSBmcm9tIExpbnV4IGtlcm5lbC4KCiB4ZW4vYXJjaC9hcm0vaW8uYyB8IDk3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vaW8uYyBiL3hlbi9hcmNoL2FybS9pby5jCmluZGV4IGE1YjJjMmQu LmMzMWZkZjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9pby5jCisrKyBiL3hlbi9hcmNoL2Fy bS9pby5jCkBAIC0yMCw5ICsyMCw1MCBAQAogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNpbmNsdWRl IDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4v c29ydC5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVkZSA8YXNtL21taW8uaD4K IAorLyoKKyAqIGJzZWFyY2ggLSBiaW5hcnkgc2VhcmNoIGFuIGFycmF5IG9mIGVsZW1lbnRzCisg KiBAa2V5OiBwb2ludGVyIHRvIGl0ZW0gYmVpbmcgc2VhcmNoZWQgZm9yCisgKiBAYmFzZTogcG9p bnRlciB0byBmaXJzdCBlbGVtZW50IHRvIHNlYXJjaAorICogQG51bTogbnVtYmVyIG9mIGVsZW1l bnRzCisgKiBAc2l6ZTogc2l6ZSBvZiBlYWNoIGVsZW1lbnQKKyAqIEBjbXA6IHBvaW50ZXIgdG8g Y29tcGFyaXNvbiBmdW5jdGlvbgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZG9lcyBhIGJpbmFyeSBz ZWFyY2ggb24gdGhlIGdpdmVuIGFycmF5LiAgVGhlCisgKiBjb250ZW50cyBvZiB0aGUgYXJyYXkg c2hvdWxkIGFscmVhZHkgYmUgaW4gYXNjZW5kaW5nIHNvcnRlZCBvcmRlcgorICogdW5kZXIgdGhl IHByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24uCisgKgorICogTm90ZSB0aGF0IHRoZSBrZXkg bmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBlbGVtZW50cyBpbgorICogdGhlIGFy cmF5LCBlLmcuIGtleSBjb3VsZCBiZSBhIHN0cmluZyBhbmQgdGhlIGNvbXBhcmlzb24gZnVuY3Rp b24KKyAqIGNvdWxkIGNvbXBhcmUgdGhlIHN0cmluZyB3aXRoIHRoZSBzdHJ1Y3QncyBuYW1lIGZp ZWxkLiAgSG93ZXZlciwgaWYKKyAqIHRoZSBrZXkgYW5kIGVsZW1lbnRzIGluIHRoZSBhcnJheSBh cmUgb2YgdGhlIHNhbWUgdHlwZSwgeW91IGNhbiB1c2UKKyAqIHRoZSBzYW1lIGNvbXBhcmlzb24g ZnVuY3Rpb24gZm9yIGJvdGggc29ydCgpIGFuZCBic2VhcmNoKCkuCisgKi8KK3N0YXRpYyB2b2lk ICpic2VhcmNoKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG51bSwg c2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgKCpjbXApKGNvbnN0IHZvaWQg KmtleSwgY29uc3Qgdm9pZCAqZWx0KSkKK3sKKyAgICBzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBu dW07CisgICAgaW50IHJlc3VsdDsKKworICAgIHdoaWxlICggc3RhcnQgPCBlbmQgKQorICAgIHsK KyAgICAgICAgc2l6ZV90IG1pZCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CisKKyAgICAg ICAgcmVzdWx0ID0gY21wKGtleSwgYmFzZSArIG1pZCAqIHNpemUpOworICAgICAgICBpZiAoIHJl c3VsdCA8IDAgKQorICAgICAgICAgICAgZW5kID0gbWlkOworICAgICAgICBlbHNlIGlmICggcmVz dWx0ID4gMCApCisgICAgICAgICAgICBzdGFydCA9IG1pZCArIDE7CisgICAgICAgIGVsc2UKKyAg ICAgICAgICAgIHJldHVybiAodm9pZCAqKWJhc2UgKyBtaWQgKiBzaXplOworICAgIH0KKworICAg IHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgaW50IGhhbmRsZV9yZWFkKGNvbnN0IHN0cnVjdCBt bWlvX2hhbmRsZXIgKmhhbmRsZXIsIHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAgICAgICAgICAg ICAgICBtbWlvX2luZm9fdCAqaW5mbykKIHsKQEAgLTcwLDIzICsxMTEsNDEgQEAgc3RhdGljIGlu dCBoYW5kbGVfd3JpdGUoY29uc3Qgc3RydWN0IG1taW9faGFuZGxlciAqaGFuZGxlciwgc3RydWN0 IHZjcHUgKnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci0+cHJpdik7 CiB9CiAKLWludCBoYW5kbGVfbW1pbyhtbWlvX2luZm9fdCAqaW5mbykKK3N0YXRpYyBpbnQgbWF0 Y2hfbW1pb19oYW5kbGVyKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqZWxlbSkKIHsKLSAg ICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7Ci0gICAgaW50IGk7Ci0gICAgY29uc3Qgc3RydWN0 IG1taW9faGFuZGxlciAqaGFuZGxlciA9IE5VTEw7Ci0gICAgY29uc3Qgc3RydWN0IHZtbWlvICp2 bW1pbyA9ICZ2LT5kb21haW4tPmFyY2gudm1taW87CisgICAgY29uc3Qgc3RydWN0IG1taW9faGFu ZGxlciAqaGFuZGxlciA9IGVsZW07CisgICAgcGFkZHJfdCBhZGRyID0gKHBhZGRyX3Qpa2V5Owog Ci0gICAgZm9yICggaSA9IDA7IGkgPCB2bW1pby0+bnVtX2VudHJpZXM7IGkrKyApCi0gICAgewot ICAgICAgICBoYW5kbGVyID0gJnZtbWlvLT5oYW5kbGVyc1tpXTsKKyAgICBpZiAoIGFkZHIgPCBo YW5kbGVyLT5hZGRyICkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgIGlmICggKGluZm8t PmdwYSA+PSBoYW5kbGVyLT5hZGRyKSAmJgotICAgICAgICAgICAgIChpbmZvLT5ncGEgPCAoaGFu ZGxlci0+YWRkciArIGhhbmRsZXItPnNpemUpKSApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9 CisgICAgaWYgKCBhZGRyID4gKGhhbmRsZXItPmFkZHIgKyBoYW5kbGVyLT5zaXplKSApCisgICAg ICAgIHJldHVybiAxOworCisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBpZiAoIGkgPT0gdm1taW8t Pm51bV9lbnRyaWVzICkKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyICoKK2ZpbmRf bW1pb19oYW5kbGVyKHN0cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGFkZHIpCit7CisgICAgc3RydWN0 IHZtbWlvICp2bW1pbyA9ICZ2LT5kb21haW4tPmFyY2gudm1taW87CisgICAgY29uc3Qgc3RydWN0 IG1taW9faGFuZGxlciAqaGFuZGxlcjsKKworICAgIHNwaW5fbG9jaygmdm1taW8tPmxvY2spOwor ICAgIGhhbmRsZXIgPSBic2VhcmNoKChjb25zdCB2b2lkICopYWRkciwgdm1taW8tPmhhbmRsZXJz LCB2bW1pby0+bnVtX2VudHJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpoYW5k bGVyKSwgbWF0Y2hfbW1pb19oYW5kbGVyKTsKKyAgICBzcGluX3VubG9jaygmdm1taW8tPmxvY2sp OworCisgICAgcmV0dXJuIGhhbmRsZXI7Cit9CisKK2ludCBoYW5kbGVfbW1pbyhtbWlvX2luZm9f dCAqaW5mbykKK3sKKyAgICBjb25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyICpoYW5kbGVyOworICAg IHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKKworICAgIGhhbmRsZXIgPSBmaW5kX21taW9faGFu ZGxlcih2LCBpbmZvLT5ncGEpOworICAgIGlmICggIWhhbmRsZXIgKQogICAgICAgICByZXR1cm4g MDsKIAogICAgIGlmICggaW5mby0+ZGFidC53cml0ZSApCkBAIC05NSw2ICsxNTQsMTQgQEAgaW50 IGhhbmRsZV9tbWlvKG1taW9faW5mb190ICppbmZvKQogICAgICAgICByZXR1cm4gaGFuZGxlX3Jl YWQoaGFuZGxlciwgdiwgaW5mbyk7CiB9CiAKK3N0YXRpYyBpbnQgY21wX21taW9faGFuZGxlcihj b25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmVsZW0pCit7CisgICAgY29uc3Qgc3RydWN0IG1t aW9faGFuZGxlciAqaGFuZGxlcjAgPSBrZXk7CisgICAgY29uc3Qgc3RydWN0IG1taW9faGFuZGxl ciAqaGFuZGxlcjEgPSBlbGVtOworCisgICAgcmV0dXJuIChoYW5kbGVyMC0+YWRkciA8IGhhbmRs ZXIxLT5hZGRyKSA/IC0xIDogMDsKK30KKwogdm9pZCByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoc3Ry dWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBt bWlvX2hhbmRsZXJfb3BzICpvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90 IGFkZHIsIHBhZGRyX3Qgc2l6ZSwgdm9pZCAqcHJpdikKQEAgLTEyMiw2ICsxODksMTAgQEAgdm9p ZCByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCwKIAogICAgIHZtbWlvLT5u dW1fZW50cmllcysrOwogCisgICAgLyogU29ydCBtbWlvIGhhbmRsZXJzIGluIGFzY2VuZGluZyBv cmRlciBiYXNlZCBvbiBiYXNlIGFkZHJlc3MgKi8KKyAgICBzb3J0KHZtbWlvLT5oYW5kbGVycywg dm1taW8tPm51bV9lbnRyaWVzLCBzaXplb2Yoc3RydWN0IG1taW9faGFuZGxlciksCisgICAgICAg ICBjbXBfbW1pb19oYW5kbGVyLCBOVUxMKTsKKwogICAgIHNwaW5fdW5sb2NrKCZ2bW1pby0+bG9j ayk7CiB9CiAKLS0gClF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBvbiBiZWhhbGYgb2YgUXVh bGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gClF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLCAKYSBMaW51eCBGb3VuZGF0 aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==