From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Chen Subject: [PATCH 6/7] xen/arm: SMMU: Support generic IOMMU bindings Date: Fri, 30 Jun 2017 11:15:10 +0800 Message-ID: <1498792511-25149-7-git-send-email-Wei.Chen@arm.com> References: <1498792511-25149-1-git-send-email-Wei.Chen@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1498792511-25149-1-git-send-email-Wei.Chen@arm.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: sstabellini@kernel.org, wei.chen@arm.com, steve.capper@arm.com, Kaly.Xin@arm.com, julien.grall@arm.com, nd@arm.com List-Id: xen-devel@lists.xenproject.org VGhlIFNNTVUgTWFzdGVySURzIGFyZSBwbGFjZWQgYXQgdGhlIG1hc3RlciBkZXZpY2VzJyBEVCBu b2RlIHdoaWxlCnVzaW5nIHRoZSBnZW5lcmljIGJpbmRpbmdzLiBJbiB0aGlzIGNhc2UsIGl0J3Mg dmVyeSBoYXJkIGZvciB1cyB0bwpyZWdpc3RlciBTTU1VIG1hc3RlcnMgd2hpbGUgcHJvYmluZyBT TU1VIGFzIHdlIGhhZCBkb25lIGZvciBsZWdhY3kKYmluZGluZ3MuIEJlY2F1c2Ugd2UgaGF2ZSB0 byBnbyB0aHJvdWdoIHdob2xlIGRldmljZSB0cmVlIGZvciBhbGwKU01NVSBkZXZpY2VzIHRvIGZp bmQgdGhlaXIgbWFzdGVyIGRldmljZXMuCgpJdCdzIGJldHRlciB0byByZWdpc3RlciBTTU1VIG1h c3RlciBmb3IgZ2VuZXJpYyBiaW5kaW5ncyBpbiBhZGRfZGV2aWNlCmNhbGxiYWNrLiBUaGlzIGNh bGxiYWNrIHdpbGwgb25seSBiZSBjYWxsZWQgd2hpbGUgY29uc3RydWN0aW5nIERvbTAuCgpTaWdu ZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8V2VpLkNoZW5AYXJtLmNvbT4KLS0tCiB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hcm0vc21tdS5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IDg5NTAyNGMuLjI1ZjIyMDcgMTAw NjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKKysrIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAtMjYyMSw4ICsyNjIxLDE1MCBAQCBzdGF0 aWMgdm9pZCBhcm1fc21tdV9kZXN0cm95X2lvbW11X2RvbWFpbihzdHJ1Y3QgaW9tbXVfZG9tYWlu ICpkb21haW4pCiAJeGZyZWUoZG9tYWluKTsKIH0KIAorc3RhdGljIGludCBhcm1fc21tdV9hZGRf Z2VuZXJpY19tYXN0ZXJfaWQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSwKKwkJCQlzdHJ1 Y3QgZGV2aWNlICptYXN0ZXJfZGV2LCB1MTYgZndpZCkKK3sKKwlzdHJ1Y3QgYXJtX3NtbXVfbWFz dGVyICptYXN0ZXI7CisJc3RydWN0IGRldmljZV9ub2RlICptYXN0ZXJfbnAgPSBtYXN0ZXJfZGV2 LT5vZl9ub2RlOworCisJbWFzdGVyID0gZmluZF9zbW11X21hc3RlcihzbW11LCBtYXN0ZXJfbnAp OworCWlmICghbWFzdGVyKSB7CisJCWRldl9ub3RpY2Uoc21tdS0+ZGV2LAorCQkJIlRoaXMgc21t dSBtYXN0ZXIgWyVzXSBoYXNuJ3QgYmVlbiByZWdpc3RlcmVkLCBjcmVhdGluZyBub3chXG4iLAor CQkJbWFzdGVyX25wLT5mdWxsX25hbWUpOworCQltYXN0ZXIgPSBkZXZtX2t6YWxsb2Moc21tdS0+ ZGV2LCBzaXplb2YoKm1hc3RlciksIEdGUF9LRVJORUwpOworCQlpZiAoIW1hc3RlcikKKwkJCXJl dHVybiAtRU5PTUVNOworCisJCW1hc3Rlci0+b2Zfbm9kZSA9IG1hc3Rlcl9ucDsKKwkJbWFzdGVy LT5jZmcubnVtX3N0cmVhbWlkcyA9IDA7CisKKwkJLyoKKwkJICogWGVuOiBMZXQgWGVuIGtub3cg dGhhdCB0aGUgZGV2aWNlIGlzIHByb3RlY3RlZCBieSBhIFNNTVUuCisJCSAqIE9ubHkgZG8gd2hp bGUgcmVnaXN0ZXJpbmcgdGhlIG1hc3Rlci4KKwkJICovCisJCWR0X2RldmljZV9zZXRfcHJvdGVj dGVkKG1hc3Rlcl9ucCk7CisJfQorCisJLyoKKwkgKiBJZiB0aGUgc21tdSBpcyB1c2luZyB0aGUg c3RyZWFtIGluZGV4IG1vZGUsIGNoZWNrIHdoZXRoZXIKKwkgKiB0aGUgc3RyZWFtaWQgZXhjZWVk cyB0aGUgbWF4IGFsbG93ZWQgaWQsCisJICovCisJaWYgKCEoc21tdS0+ZmVhdHVyZXMgJiBBUk1f U01NVV9GRUFUX1NUUkVBTV9NQVRDSCkgJiYKKwkJKGZ3aWQgPj0gc21tdS0+bnVtX21hcHBpbmdf Z3JvdXBzKSkgeworCQlkZXZfZXJyKHNtbXUtPmRldiwKKwkJCSJTdHJlYW0gSUQgZm9yIG1hc3Rl ciBkZXZpY2UgJXMgZ3JlYXRlciB0aGFuIG1heGltdW0gYWxsb3dlZCAoJWQpXG4iLAorCQkJbWFz dGVyX25wLT5uYW1lLCBzbW11LT5udW1fbWFwcGluZ19ncm91cHMpOworCQlyZXR1cm4gLUVSQU5H RTsKKwl9CisKKwlpZiAobWFzdGVyLT5jZmcubnVtX3N0cmVhbWlkcyA+PSBNQVhfTUFTVEVSX1NU UkVBTUlEUykgeworCQlkZXZfZXJyKHNtbXUtPmRldiwKKwkJCSJSZWFjaGVkIG1heGltdW0gbnVt YmVyICglZCkgb2Ygc3RyZWFtIElEcyBmb3IgbWFzdGVyIGRldmljZSAlc1xuIiwKKwkJCU1BWF9N QVNURVJfU1RSRUFNSURTLCBtYXN0ZXJfbnAtPm5hbWUpOworCQlyZXR1cm4gLUVOT1NQQzsKKwl9 CisKKwkvKgorCSAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UgYWRkIGlkIHRvIHRoaXMg bWFzdGVyLAorCSAqIHdlIGhhdmUgdG8gcmVnaXN0ZXIgdGhpcyBtYXN0ZXIgdG8gcmIgdHJlZS4K KwkgKi8KKwlpZiAoIW1hc3Rlci0+Y2ZnLm51bV9zdHJlYW1pZHMpIHsKKwkJaW50IHJldDsKKwkJ cmV0ID0gaW5zZXJ0X3NtbXVfbWFzdGVyKHNtbXUsIG1hc3Rlcik7CisJCWlmICggcmV0ICYmIHJl dCAhPSAtRUVYSVNUICkgeworCQkJZGV2X2VycihzbW11LT5kZXYsCisJCQkJIkluc2VydCAlcyB0 byBzbW11J3MgbWFzdGVyIHJiIHRyZWUgZmFpbGVkXG4iLCBtYXN0ZXJfbnAtPm5hbWUpOworCQkJ cmV0dXJuIHJldDsKKwkJfQorCX0KKworCW1hc3Rlci0+Y2ZnLnN0cmVhbWlkc1ttYXN0ZXItPmNm Zy5udW1fc3RyZWFtaWRzXSA9IGZ3aWQ7CisJbWFzdGVyLT5jZmcubnVtX3N0cmVhbWlkcysrOwor CWRldl9kYmcoc21tdS0+ZGV2LAorCQkiQWRkIG5ldyBzdHJlYW1pZCBbJWRdIHRvIHNtbXUgWyVz XSBmb3IgbWFzdGVyIFslc10hXG4iLAorCQlmd2lkLCBzbW11LT5kZXYtPm9mX25vZGUtPm5hbWUs IG1hc3Rlcl9ucC0+bmFtZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBhcm1f c21tdV9kZXZpY2UgKmZpbmRfc21tdShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpOworCitzdGF0 aWMgaW50IGFybV9zbW11X29mX3hsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9mX3Bo YW5kbGVfYXJncyAqYXJncykKK3sKKwlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11OworCXUz MiBtYXNrID0gMCwgZndpZCA9IDA7CisKKwlzbW11ID0gZmluZF9zbW11KGR0X3RvX2Rldihhcmdz LT5ucCkpOworCWlmICghc21tdSkgeworCQlkZXZfZXJyKGRldiwgIkNvdWxkIG5vdCBmaW5kIHNt bXUgZGV2aWNlIVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWlmIChhcmdzLT5hcmdz X2NvdW50ID4gMCkKKwkJZndpZCB8PSAodTE2KWFyZ3MtPmFyZ3NbMF07CisKKwlpZiAoYXJncy0+ YXJnc19jb3VudCA+IDEpCisJCWZ3aWQgfD0gKHUxNilhcmdzLT5hcmdzWzFdIDw8IFNNUl9NQVNL X1NISUZUOworCWVsc2UgaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihhcmdzLT5ucCwgInN0cmVh bS1tYXRjaC1tYXNrIiwgJm1hc2spKQorCQlmd2lkIHw9ICh1MTYpbWFzayA8PCBTTVJfTUFTS19T SElGVDsKKworCWRldl9kYmcoZGV2LCAiJXMgZndpZDolMDh4IG1hc2s6JTA4eCBhcmdzX2NvdW50 OiVkXG4iLAorCQkJICAgYXJncy0+bnAtPmZ1bGxfbmFtZSwgZndpZCwKKwkJCSAgIG1hc2ssIGFy Z3MtPmFyZ3NfY291bnQpOworCisJcmV0dXJuIGFybV9zbW11X2FkZF9nZW5lcmljX21hc3Rlcl9p ZChzbW11LCBkZXYsICh1MTYpZndpZCk7Cit9CisKKy8qCisgKiBQYXJzZSAiaW9tbXVzIiBpbmZv cm1hdGlvbiBmcm9tIGdlbmVyaWMgYmluZGluZ3Mgb2YgcGxhdGZvbXIgbWFzdGVyCisgKiBkZXZp Y2UsIGFuZCB0aGVuIHhsYXRlIHRvIG1hc3RlciBJRHMgYW5kIHJlZ2lzdGVyIHRvIFNNTVUgZGV2 aWNlLgorICovCitzdGF0aWMgaW50IGFybV9zbW11X3BsYXRmb3JtX2lvbW11X2luaXQoc3RydWN0 IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgaW9tbXVfc3BlYzsKKwlp bnQgaWR4ID0gMCwgcmV0OworCisJLyoKKwkgKiBXZSBkb24ndCBjdXJyZW50bHkgd2FsayB1cCB0 aGUgdHJlZSBsb29raW5nIGZvciBhIHBhcmVudCBJT01NVS4KKwkgKiBTZWUgdGhlIGBOb3Rlczon IHNlY3Rpb24gb2YKKwkgKiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUv aW9tbXUudHh0CisJICovCisJd2hpbGUgKCFvZl9wYXJzZV9waGFuZGxlX3dpdGhfYXJncyhkZXYt Pm9mX25vZGUsICJpb21tdXMiLAorCQkJCSIjaW9tbXUtY2VsbHMiLAorCQkJCWlkeCwgJmlvbW11 X3NwZWMpKSB7CisJCXJldCA9IGFybV9zbW11X29mX3hsYXRlKGRldiwgJmlvbW11X3NwZWMpOwor CQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKGRldiwKKwkJCQkiRG8gb2ZfeGxhdGUgZm9yIHBsYXRm b3JtIGRldmljZSBmYWlsZWQsIGVycj0lZFxuIiwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0K KworCQlpZHgrKzsKKwl9CisKKwkvKgorCSAqIFJldHVybiAwIGlmIHRoZSBkZXZpY2UgaXMgbm90 IHByb3RlY3RlZCB0byBmb2xsb3cgdGhlIGJlaGF2aW9yCisJICogb2YgUENJIGFkZCBkZXZpY2Uu CisJICovCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgYXJtX3NtbXVfeGVuX2FkZF9kZXZp Y2UodTggZGV2Zm4sIHN0cnVjdCBkZXZpY2UqZGV2KQogeworCWludCByZXQ7CisKKwkvKgorCSAq IGlvbW11X2FkZF9kdF9kZXZpY2UoKSBpcyBvbmx5IGNhbGxlZCBmb3IgdGhlIGhhcmR3YXJlIGRv bWFpbi4KKwkgKiBJZiB0aGUgU01NVSBpcyB1c2luZyBnZW5lcmljIGJpbmRpbmdzLCB3ZSBzaG91 bGQgcGFyc2UgYW5kCisJICogcmVnaXN0ZXIgTWFzdGVyIElEcyB3aGlsZSB0aGlzIGZ1bmN0aW9u IGhhZCBiZWVuIGludm9rZWQuCisJICovCisJaWYgKHVzaW5nX2dlbmVyaWNfYmluZGluZykgewor CQlyZXQgPSBhcm1fc21tdV9wbGF0Zm9ybV9pb21tdV9pbml0KGRldik7CisJCWlmIChyZXQpCisJ CQlyZXR1cm4gcmV0OworCX0KKwogCWlmIChkdF9kZXZpY2VfaXNfcHJvdGVjdGVkKGRldi0+b2Zf bm9kZSkpIHsKIAkJaWYgKCFkZXYtPmFyY2hkYXRhLmlvbW11KSB7CiAJCQlkZXYtPmFyY2hkYXRh LmlvbW11ID0geHphbGxvYyhzdHJ1Y3QgYXJtX3NtbXVfeGVuX2RldmljZSk7CkBAIC0yODMyLDcg KzI5NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9v cHMgPSB7CiAgICAgLnVubWFwX3BhZ2UgPSBhcm1fc21tdV91bm1hcF9wYWdlLAogfTsKIAotc3Rh dGljIF9faW5pdCBjb25zdCBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpmaW5kX3NtbXUoY29uc3Qg c3RydWN0IGRldmljZSAqZGV2KQorc3RhdGljIHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKmZpbmRf c21tdShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGFybV9zbW11X2Rldmlj ZSAqc21tdTsKIAlib29sIGZvdW5kID0gZmFsc2U7Ci0tIAoyLjcuNAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=