From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [PATCH] drm/i915: Split out GTT fault handler to make it generic Date: Tue, 4 Jun 2019 13:37:23 +0300 Message-ID: <20190604103723.23041-1-abdiel.janulgue@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF406893EC for ; Tue, 4 Jun 2019 10:45:01 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Matthew Auld List-Id: intel-gfx@lists.freedesktop.org QWxsb3cgcmV1c2Ugb2YgdGhlIGZhdWx0LWhhbmRsaW5nIGNvZGUgaW4gcHJlcGFyYXRpb24gZm9y IGhhdmluZwptdWx0aXBsZSBmYXVsdCBoYW5kbGVycyBkZXBlbmRpbmcgb24gdGhlIG1tYXBpbmcg dHlwZSBhbmQgYmFja2luZwpzdG9yYWdlLgoKQ2M6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxk QGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpD YzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoKU2ln bmVkLW9mZi1ieTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMgfCAyMDgg KysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygr KSwgNzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFu LmMKaW5kZXggYzdiOWIzNGRlMDFiLi5lZDIwZmFiNjZkMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYwpAQCAtMTk3LDYgKzE5NywxMzMgQEAgY29tcHV0ZV9wYXJ0 aWFsX3ZpZXcoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlyZXR1cm4g dmlldzsKIH0KIAorc3RydWN0IGdlbV9vYmplY3RfZmF1bHQgeworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7CisJcGdvZmZfdCBwYWdlX29mZnNldDsKKwlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKKwlpbnQgc3JjdTsKKwlib29sIHBpbl92bWE7CisJdm1fZmF1bHRfdCBlcnJvcl9y ZXQ7Cit9OworCitzdGF0aWMgdm1fZmF1bHRfdCBfX3ZtX2ZhdWx0X2Zyb21fZXJyb3Ioc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJCWludCBmYXVsdF9yZXQpCit7CisJc3dpdGNo IChmYXVsdF9yZXQpIHsKKwljYXNlIC1FSU86CisJCS8qCisJCSAqIFdlIGVhdCBlcnJvcnMgd2hl biB0aGUgZ3B1IGlzIHRlcm1pbmFsbHkgd2VkZ2VkIHRvIGF2b2lkCisJCSAqIHVzZXJzcGFjZSB1 bmR1bHkgY3Jhc2hpbmcgKGdsIGhhcyBubyBwcm92aXNpb25zIGZvciBtbWFwcyB0bworCQkgKiBm YWlsKS4gQnV0IGFueSBvdGhlciAtRUlPIGlzbid0IG91cnMgKGUuZy4gc3dhcCBpbiBmYWlsdXJl KQorCQkgKiBhbmQgc28gbmVlZHMgdG8gYmUgcmVwb3J0ZWQuCisJCSAqLworCQlpZiAoIWk5MTVf dGVybWluYWxseV93ZWRnZWQoaTkxNSkpCisJCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCQkv KiBlbHNlOiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIC1FQUdBSU46CisJCS8qCisJCSAqIEVBR0FJ TiBtZWFucyB0aGUgZ3B1IGlzIGh1bmcgYW5kIHdlJ2xsIHdhaXQgZm9yIHRoZSBlcnJvcgorCQkg KiBoYW5kbGVyIHRvIHJlc2V0IGV2ZXJ5dGhpbmcgd2hlbiByZS1mYXVsdGluZyBpbgorCQkgKiBp OTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZS4KKwkJICovCisJY2FzZSAwOgorCWNhc2UgLUVS RVNUQVJUU1lTOgorCWNhc2UgLUVJTlRSOgorCWNhc2UgLUVCVVNZOgorCQkvKgorCQkgKiBFQlVT WSBpcyBvazogdGhpcyBqdXN0IG1lYW5zIHRoYXQgYW5vdGhlciB0aHJlYWQKKwkJICogYWxyZWFk eSBkaWQgdGhlIGpvYi4KKwkJICovCisJCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7CisJY2FzZSAt RU5PTUVNOgorCQlyZXR1cm4gVk1fRkFVTFRfT09NOworCWNhc2UgLUVOT1NQQzoKKwljYXNlIC1F RkFVTFQ6CisJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CisJZGVmYXVsdDoKKwkJV0FSTl9PTkNF KGZhdWx0X3JldCwgInVuaGFuZGxlZCBlcnJvciBpbiAlczogJWlcbiIsIF9fZnVuY19fLAorCQkJ ICBmYXVsdF9yZXQpOworCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCX0KK30KKworc3RhdGlj IGludCBfX3ByZXBhcmVfb2JqZWN0X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLAorCQkJCSAg Ym9vbCBwaW5fdm1hLAorCQkJCSAgc3RydWN0IGdlbV9vYmplY3RfZmF1bHQgKmYpCit7CisJc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICphcmVhID0gdm1mLT52bWE7CisJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IHRvX2ludGVsX2JvKGFyZWEtPnZtX3ByaXZhdGVfZGF0YSk7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCWJvb2wgd3JpdGUgPSBhcmVhLT52bV9m bGFncyAmIFZNX1dSSVRFOworCWludCByZXQ7CisKKwkvKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBh bGxvdyB3cml0aW5nIGludG8gdGhpcyBvYmplY3QgKi8KKwlpZiAoaTkxNV9nZW1fb2JqZWN0X2lz X3JlYWRvbmx5KG9iaikgJiYgd3JpdGUpIHsKKwkJZi0+ZXJyb3JfcmV0ID0gVk1fRkFVTFRfU0lH QlVTOworCQlyZXR1cm4gLUVBQ0NFUzsKKwl9CisKKwlmLT5vYmogPSBvYmo7CisJLyogV2UgZG9u J3QgdXNlIHZtZi0+cGdvZmYgc2luY2UgdGhhdCBoYXMgdGhlIGZha2Ugb2Zmc2V0ICovCisJZi0+ cGFnZV9vZmZzZXQgPSAodm1mLT5hZGRyZXNzIC0gYXJlYS0+dm1fc3RhcnQpID4+IFBBR0VfU0hJ RlQ7CisKKwl0cmFjZV9pOTE1X2dlbV9vYmplY3RfZmF1bHQob2JqLCBmLT5wYWdlX29mZnNldCwg dHJ1ZSwgd3JpdGUpOworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwor CWlmIChyZXQpCisJCWdvdG8gZXJyOworCisJZi0+d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKKworCWYtPnNyY3UgPSBpOTE1X3Jlc2V0X3RyeWxvY2soZGV2X3ByaXYp OworCWlmIChmLT5zcmN1IDwgMCkgeworCQlyZXQgPSBmLT5zcmN1OworCQlnb3RvIGVycl9ycG07 CisJfQorCisJZi0+cGluX3ZtYSA9IHBpbl92bWE7CisJaWYgKGYtPnBpbl92bWEpIHsKKwkJcmV0 ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKKwkJaWYgKHJldCkKKwkJCWdv dG8gZXJyX3Jlc2V0OworCX0KKworCS8qIEFjY2VzcyB0byBzbm9vcGFibGUgcGFnZXMgdGhyb3Vn aCB0aGUgR1RUIGlzIGluY29oZXJlbnQuICovCisJaWYgKG9iai0+Y2FjaGVfbGV2ZWwgIT0gSTkx NV9DQUNIRV9OT05FICYmICFIQVNfTExDKGRldl9wcml2KSkgeworCQlyZXQgPSAtRUZBVUxUOwor CQlnb3RvIGVycl91bmxvY2s7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl91bmxvY2s6CisJaWYg KGYtPnBpbl92bWEpCisJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworZXJyX3Jl c2V0OgorCWk5MTVfcmVzZXRfdW5sb2NrKGRldl9wcml2LCBmLT5zcmN1KTsKK2Vycl9ycG06CisJ aW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIGYtPndha2VyZWYpOworCWk5MTVfZ2VtX29i amVjdF91bnBpbl9wYWdlcyhvYmopOworZXJyOgorCWYtPmVycm9yX3JldCA9IF9fdm1fZmF1bHRf ZnJvbV9lcnJvcihkZXZfcHJpdiwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm1f ZmF1bHRfdCBfX29iamVjdF9mYXVsdF9maW5pKGludCBmYXVsdF9yZXQsIHN0cnVjdCBnZW1fb2Jq ZWN0X2ZhdWx0ICpmKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmLT5vYmotPmJhc2Uu ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK KworCWlmIChmLT5waW5fdm1hKQorCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK KwlpOTE1X3Jlc2V0X3VubG9jayhkZXZfcHJpdiwgZi0+c3JjdSk7CisJaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYsIGYtPndha2VyZWYpOworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdl cyhmLT5vYmopOworCisJcmV0dXJuIF9fdm1fZmF1bHRfZnJvbV9lcnJvcihkZXZfcHJpdiwgZmF1 bHRfcmV0KTsKK30KKwogLyoqCiAgKiBpOTE1X2dlbV9mYXVsdCAtIGZhdWx0IGEgcGFnZSBpbnRv IHRoZSBHVFQKICAqIEB2bWY6IGZhdWx0IGluZm8KQEAgLTIyMyw0MyArMzUwLDEzIEBAIHZtX2Zh dWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0 OwotCWJvb2wgd3JpdGUgPSBhcmVhLT52bV9mbGFncyAmIFZNX1dSSVRFOwotCWludGVsX3dha2Vy ZWZfdCB3YWtlcmVmOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXBnb2ZmX3QgcGFnZV9vZmZz ZXQ7Ci0JaW50IHNyY3U7CisJc3RydWN0IGdlbV9vYmplY3RfZmF1bHQgZmF1bHQ7CiAJaW50IHJl dDsKIAotCS8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGFsbG93IHdyaXRpbmcgaW50byB0aGlzIG9i amVjdCAqLwotCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkob2JqKSAmJiB3cml0ZSkK LQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQotCS8qIFdlIGRvbid0IHVzZSB2bWYtPnBnb2Zm IHNpbmNlIHRoYXQgaGFzIHRoZSBmYWtlIG9mZnNldCAqLwotCXBhZ2Vfb2Zmc2V0ID0gKHZtZi0+ YWRkcmVzcyAtIGFyZWEtPnZtX3N0YXJ0KSA+PiBQQUdFX1NISUZUOwotCi0JdHJhY2VfaTkxNV9n ZW1fb2JqZWN0X2ZhdWx0KG9iaiwgcGFnZV9vZmZzZXQsIHRydWUsIHdyaXRlKTsKLQotCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKLQlpZiAocmV0KQotCQlnb3RvIGVycjsK LQotCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKLQotCXNyY3UgPSBpOTE1 X3Jlc2V0X3RyeWxvY2soaTkxNSk7Ci0JaWYgKHNyY3UgPCAwKSB7Ci0JCXJldCA9IHNyY3U7Ci0J CWdvdG8gZXJyX3JwbTsKLQl9Ci0KLQlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJs ZShkZXYpOwotCWlmIChyZXQpCi0JCWdvdG8gZXJyX3Jlc2V0OwotCi0JLyogQWNjZXNzIHRvIHNu b29wYWJsZSBwYWdlcyB0aHJvdWdoIHRoZSBHVFQgaXMgaW5jb2hlcmVudC4gKi8KLQlpZiAob2Jq LT5jYWNoZV9sZXZlbCAhPSBJOTE1X0NBQ0hFX05PTkUgJiYgIUhBU19MTEMoaTkxNSkpIHsKLQkJ cmV0ID0gLUVGQVVMVDsKLQkJZ290byBlcnJfdW5sb2NrOwotCX0KKwlpZiAoX19wcmVwYXJlX29i amVjdF9mYXVsdCh2bWYsIHRydWUsICZmYXVsdCkpCisJCXJldHVybiBmYXVsdC5lcnJvcl9yZXQ7 CiAKIAkvKiBOb3cgcGluIGl0IGludG8gdGhlIEdUVCBhcyBuZWVkZWQgKi8KIAl2bWEgPSBpOTE1 X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLApAQCAtMjkxLDcgKzM4OCw3IEBA IHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJfQogCWlm IChJU19FUlIodm1hKSkgewogCQlyZXQgPSBQVFJfRVJSKHZtYSk7Ci0JCWdvdG8gZXJyX3VubG9j azsKKwkJZ290byBlcnI7CiAJfQogCiAJcmV0ID0gaTkxNV92bWFfcGluX2ZlbmNlKHZtYSk7CkBA IC0zMjIsNDkgKzQxOSw4IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2Zh dWx0ICp2bWYpCiAJaTkxNV92bWFfdW5waW5fZmVuY2Uodm1hKTsKIGVycl91bnBpbjoKIAlfX2k5 MTVfdm1hX3VucGluKHZtYSk7Ci1lcnJfdW5sb2NrOgotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwotZXJyX3Jlc2V0OgotCWk5MTVfcmVzZXRfdW5sb2NrKGk5MTUsIHNyY3UpOwot ZXJyX3JwbToKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKLQlpOTE1X2dl bV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIGVycjoKLQlzd2l0Y2ggKHJldCkgewotCWNhc2Ug LUVJTzoKLQkJLyoKLQkJICogV2UgZWF0IGVycm9ycyB3aGVuIHRoZSBncHUgaXMgdGVybWluYWxs eSB3ZWRnZWQgdG8gYXZvaWQKLQkJICogdXNlcnNwYWNlIHVuZHVseSBjcmFzaGluZyAoZ2wgaGFz IG5vIHByb3Zpc2lvbnMgZm9yIG1tYXBzIHRvCi0JCSAqIGZhaWwpLiBCdXQgYW55IG90aGVyIC1F SU8gaXNuJ3Qgb3VycyAoZS5nLiBzd2FwIGluIGZhaWx1cmUpCi0JCSAqIGFuZCBzbyBuZWVkcyB0 byBiZSByZXBvcnRlZC4KLQkJICovCi0JCWlmICghaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1 KSkKLQkJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7Ci0JCS8qIGVsc2U6IGZhbGwgdGhyb3VnaCAq LwotCWNhc2UgLUVBR0FJTjoKLQkJLyoKLQkJICogRUFHQUlOIG1lYW5zIHRoZSBncHUgaXMgaHVu ZyBhbmQgd2UnbGwgd2FpdCBmb3IgdGhlIGVycm9yCi0JCSAqIGhhbmRsZXIgdG8gcmVzZXQgZXZl cnl0aGluZyB3aGVuIHJlLWZhdWx0aW5nIGluCi0JCSAqIGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1 cHRpYmxlLgotCQkgKi8KLQljYXNlIDA6Ci0JY2FzZSAtRVJFU1RBUlRTWVM6Ci0JY2FzZSAtRUlO VFI6Ci0JY2FzZSAtRUJVU1k6Ci0JCS8qCi0JCSAqIEVCVVNZIGlzIG9rOiB0aGlzIGp1c3QgbWVh bnMgdGhhdCBhbm90aGVyIHRocmVhZAotCQkgKiBhbHJlYWR5IGRpZCB0aGUgam9iLgotCQkgKi8K LQkJcmV0dXJuIFZNX0ZBVUxUX05PUEFHRTsKLQljYXNlIC1FTk9NRU06Ci0JCXJldHVybiBWTV9G QVVMVF9PT007Ci0JY2FzZSAtRU5PU1BDOgotCWNhc2UgLUVGQVVMVDoKLQkJcmV0dXJuIFZNX0ZB VUxUX1NJR0JVUzsKLQlkZWZhdWx0OgotCQlXQVJOX09OQ0UocmV0LCAidW5oYW5kbGVkIGVycm9y IGluICVzOiAlaVxuIiwgX19mdW5jX18sIHJldCk7Ci0JCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7 Ci0JfQorCXJldHVybiBfX29iamVjdF9mYXVsdF9maW5pKHJldCwgJmZhdWx0KTsKIH0KIAogdm9p ZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4