From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 3/3] drm/msm/gpu: Add submit queue queries Date: Tue, 16 Apr 2019 18:30:26 -0700 Message-ID: <20190417013031.555-4-robdclark@gmail.com> References: <20190417013031.555-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190417013031.555-1-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Rob Clark , linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org RnJvbTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KCkFkZCB0aGUgY2Fw YWJpbGl0eSB0byBxdWVyeSBpbmZvcm1hdGlvbiBmcm9tIGEgc3VibWl0IHF1ZXVlLgpUaGUgZmly c3QgYXZhaWxhYmxlIHBhcmFtZXRlciBpcyBmb3IgcXVlcnlpbmcgdGhlIG51bWJlciBvZiBHUFUg ZmF1bHRzCihoYW5ncykgdGhhdCBjYW4gYmUgYXR0cmlidXRlZCB0byB0aGUgcXVldWUuCgpUaGlz IGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIGNvbnRleHQgcm9idXN0bmVzcy4gQSB1c2VyIGNv bnRleHQgY2FuCnJlZ3VsYXJseSBxdWVyeSB0aGUgbnVtYmVyIG9mIGZhdWx0cyB0byBzZWUgaWYg aXQgaXMgcmVzcG9uc2libGUgZm9yIGFueQphbmQgaWYgc28gaXQgY2FuIGludmFsaWRhdGUgaXRz ZWxmLgoKVGhpcyBpcyBhbHNvIGhlbHBmdWwgZm9yIHRlc3RpbmcgYnkgY29uZmlybWluZyB0byB0 aGUgdXNlciAgZHJpdmVyIGlmIGEKcGFydGljdWxhciBjb21tYW5kIHN0cmVhbSBjYXVzZWQgYSBm YXVsdCAob3Igbm90IGFzIHRoZSBjYXNlIG1heSBiZSkuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4g Q3JvdXNlIDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgpTaWduZWQtb2ZmLWJ5OiBSb2IgQ2xhcmsg PHJvYmRjbGFya0BjaHJvbWl1bS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmMgICAgICAgICB8ICA5ICsrKysrLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAg ICAgICB8ICAyICsrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYyAgICAgICAgIHwgIDMg Ky0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVlLmMgfCA0MSArKysrKysrKysr KysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oICAgICAgICAgICAg fCAxMiArKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggOTA2YjJiYjc5ZjZhLi5iODY3MWJkYzEy YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCkBAIC0zOSw5ICszOSwxMCBAQAogICogICAgICAgICAg IE1TTV9HRU1fSU5GTyBpb2N0bC4KICAqIC0gMS40LjAgLSBzb2Z0cGluLCBNU01fUkVMT0NfQk9f RFVNUCwgYW5kIEdFTV9JTkZPIHN1cHBvcnQgdG8gc2V0L2dldAogICogICAgICAgICAgIEdFTSBv YmplY3QncyBkZWJ1ZyBuYW1lCisgKiAtIDEuNS4wIC0gQWRkIFNVQk1JVFFVRVJZX1FVRVJZIGlv Y3RsCiAgKi8KICNkZWZpbmUgTVNNX1ZFUlNJT05fTUFKT1IJMQotI2RlZmluZSBNU01fVkVSU0lP Tl9NSU5PUgk0CisjZGVmaW5lIE1TTV9WRVJTSU9OX01JTk9SCTUKICNkZWZpbmUgTVNNX1ZFUlNJ T05fUEFUQ0hMRVZFTAkwCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1 bmNzIG1vZGVfY29uZmlnX2Z1bmNzID0gewpAQCAtOTY0LDYgKzk2NSwxMSBAQCBzdGF0aWMgaW50 IG1zbV9pb2N0bF9zdWJtaXRxdWV1ZV9uZXcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJYXJncy0+ZmxhZ3MsICZhcmdzLT5pZCk7CiB9CiAKK3N0YXRpYyBpbnQgbXNtX2lv Y3RsX3N1Ym1pdHF1ZXVlX3F1ZXJ5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlyZXR1cm4gbXNtX3N1Ym1pdHF1ZXVlX3F1 ZXJ5KGRldiwgZmlsZS0+ZHJpdmVyX3ByaXYsIGRhdGEpOworfQogCiBzdGF0aWMgaW50IG1zbV9p b2N0bF9zdWJtaXRxdWV1ZV9jbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCkBAIC05ODQsNiArOTkwLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBtc21faW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RF Rl9EUlYoTVNNX0dFTV9NQURWSVNFLCAgbXNtX2lvY3RsX2dlbV9tYWR2aXNlLCAgRFJNX0FVVEh8 RFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoTVNNX1NVQk1JVFFVRVVFX05F VywgICBtc21faW9jdGxfc3VibWl0cXVldWVfbmV3LCAgIERSTV9BVVRIfERSTV9SRU5ERVJfQUxM T1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKE1TTV9TVUJNSVRRVUVVRV9DTE9TRSwgbXNtX2lvY3Rs X3N1Ym1pdHF1ZXVlX2Nsb3NlLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9D VExfREVGX0RSVihNU01fU1VCTUlUUVVFVUVfUVVFUlksIG1zbV9pb2N0bF9zdWJtaXRxdWV1ZV9x dWVyeSwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCiB9OwogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IHZtX29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKaW5k ZXggY2I2NDJmZWZiZDJmLi5hZmI5MTcxMmFjZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC00 MjAsNiArNDIwLDggQEAgc3RydWN0IG1zbV9ncHVfc3VibWl0cXVldWUgKm1zbV9zdWJtaXRxdWV1 ZV9nZXQoc3RydWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCwKIAkJdTMyIGlkKTsKIGludCBtc21f c3VibWl0cXVldWVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBtc21fZmls ZV9wcml2YXRlICpjdHgsCiAJCXUzMiBwcmlvLCB1MzIgZmxhZ3MsIHUzMiAqaWQpOworaW50IG1z bV9zdWJtaXRxdWV1ZV9xdWVyeShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2Zp bGVfcHJpdmF0ZSAqY3R4LAorCQlzdHJ1Y3QgZHJtX21zbV9zdWJtaXRxdWV1ZV9xdWVyeSAqYXJn cyk7CiBpbnQgbXNtX3N1Ym1pdHF1ZXVlX3JlbW92ZShzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAq Y3R4LCB1MzIgaWQpOwogdm9pZCBtc21fc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IG1zbV9maWxl X3ByaXZhdGUgKmN0eCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dw dS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMKaW5kZXggMTk0ODQ3YTIyMGI2Li4y Yjc2NjU3YmFkZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCkBAIC00NDMsOCArNDQzLDkgQEAgc3Rh dGljIHZvaWQgcmVjb3Zlcl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWlmIChz dWJtaXQpIHsKIAkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwogCi0JCS8qIEluY3JlbWVudCB0 aGUgZmF1bHQgY291bnQgKi8KKwkJLyogSW5jcmVtZW50IHRoZSBmYXVsdCBjb3VudHMgKi8KIAkJ Z3B1LT5nbG9iYWxfZmF1bHRzKys7CisJCXN1Ym1pdC0+cXVldWUtPmZhdWx0cysrOwogCiAJCXRh c2sgPSBnZXRfcGlkX3Rhc2soc3VibWl0LT5waWQsIFBJRFRZUEVfUElEKTsKIAkJaWYgKHRhc2sp IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVlLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jCmluZGV4IDUxMTVmNzViNWI3Zi4u ZjE2MGVjNDBhMzliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zdWJtaXRx dWV1ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVlLmMKQEAgLTEy MCw2ICsxMjAsNDcgQEAgaW50IG1zbV9zdWJtaXRxdWV1ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0sIHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHgpCiAJcmV0dXJuIG1zbV9zdWJtaXRx dWV1ZV9jcmVhdGUoZHJtLCBjdHgsIGRlZmF1bHRfcHJpbywgMCwgTlVMTCk7CiB9CiAKK3N0YXRp YyBpbnQgbXNtX3N1Ym1pdHF1ZXVlX3F1ZXJ5X2ZhdWx0cyhzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRx dWV1ZSAqcXVldWUsCisJCXN0cnVjdCBkcm1fbXNtX3N1Ym1pdHF1ZXVlX3F1ZXJ5ICphcmdzKQor eworCXNpemVfdCBzaXplID0gbWluX3Qoc2l6ZV90LCBhcmdzLT5sZW4sIHNpemVvZihxdWV1ZS0+ ZmF1bHRzKSk7CisJaW50IHJldDsKKworCS8qIElmIGEgemVybyBsZW5ndGggd2FzIHBhc3NlZCBp biwgcmV0dXJuIHRoZSBkYXRhIHNpemUgd2UgZXhwZWN0ICovCisJaWYgKCFhcmdzLT5sZW4pIHsK KwkJYXJncy0+bGVuID0gc2l6ZW9mKHF1ZXVlLT5mYXVsdHMpOworCQlyZXR1cm4gMDsKKwl9CisK KwkvKiBTZXQgdGhlIGxlbmd0aCB0byB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGRhdGEgKi8KKwlh cmdzLT5sZW4gPSBzaXplOworCisJcmV0ID0gY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihh cmdzLT5kYXRhKSwgJnF1ZXVlLT5mYXVsdHMsIHNpemUpOworCisJcmV0dXJuIHJldCA/IC1FRkFV TFQgOiAwOworfQorCitpbnQgbXNtX3N1Ym1pdHF1ZXVlX3F1ZXJ5KHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0sIHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHgsCisJCXN0cnVjdCBkcm1fbXNtX3N1 Ym1pdHF1ZXVlX3F1ZXJ5ICphcmdzKQoreworCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpx dWV1ZTsKKwlpbnQgcmV0ID0gLUVJTlZBTDsKKworCWlmIChhcmdzLT5wYWQpCisJCXJldHVybiAt RUlOVkFMOworCisJcXVldWUgPSBtc21fc3VibWl0cXVldWVfZ2V0KGN0eCwgYXJncy0+aWQpOwor CWlmICghcXVldWUpCisJCXJldHVybiAtRU5PRU5UOworCisJaWYgKGFyZ3MtPnBhcmFtID09IE1T TV9TVUJNSVRRVUVVRV9QQVJBTV9GQVVMVFMpCisJCXJldCA9IG1zbV9zdWJtaXRxdWV1ZV9xdWVy eV9mYXVsdHMocXVldWUsIGFyZ3MpOworCisJbXNtX3N1Ym1pdHF1ZXVlX3B1dChxdWV1ZSk7CisK KwlyZXR1cm4gcmV0OworfQorCiBpbnQgbXNtX3N1Ym1pdHF1ZXVlX3JlbW92ZShzdHJ1Y3QgbXNt X2ZpbGVfcHJpdmF0ZSAqY3R4LCB1MzIgaWQpCiB7CiAJc3RydWN0IG1zbV9ncHVfc3VibWl0cXVl dWUgKmVudHJ5OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmggYi9pbmNs dWRlL3VhcGkvZHJtL21zbV9kcm0uaAppbmRleCAxNzhkN2I0MDdmM2EuLjBiODVlZDZhMzcxMCAx MDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmgKKysrIGIvaW5jbHVkZS91YXBp L2RybS9tc21fZHJtLmgKQEAgLTI4OCw2ICsyODgsMTYgQEAgc3RydWN0IGRybV9tc21fc3VibWl0 cXVldWUgewogCV9fdTMyIGlkOyAgICAgIC8qIG91dCwgaWRlbnRpZmllciAqLwogfTsKIAorI2Rl ZmluZSBNU01fU1VCTUlUUVVFVUVfUEFSQU1fRkFVTFRTICAgMAorCitzdHJ1Y3QgZHJtX21zbV9z dWJtaXRxdWV1ZV9xdWVyeSB7CisJX191NjQgZGF0YTsKKwlfX3UzMiBpZDsKKwlfX3UzMiBwYXJh bTsKKwlfX3UzMiBsZW47CisJX191MzIgcGFkOworfTsKKwogI2RlZmluZSBEUk1fTVNNX0dFVF9Q QVJBTSAgICAgICAgICAgICAgMHgwMAogLyogcGxhY2Vob2xkZXI6CiAjZGVmaW5lIERSTV9NU01f U0VUX1BBUkFNICAgICAgICAgICAgICAweDAxCkBAIC0zMDQsNiArMzE0LDcgQEAgc3RydWN0IGRy bV9tc21fc3VibWl0cXVldWUgewogICovCiAjZGVmaW5lIERSTV9NU01fU1VCTUlUUVVFVUVfTkVX ICAgICAgICAweDBBCiAjZGVmaW5lIERSTV9NU01fU1VCTUlUUVVFVUVfQ0xPU0UgICAgICAweDBC CisjZGVmaW5lIERSTV9NU01fU1VCTUlUUVVFVUVfUVVFUlkgICAgICAweDBDCiAKICNkZWZpbmUg RFJNX0lPQ1RMX01TTV9HRVRfUEFSQU0gICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fTVNNX0dFVF9QQVJBTSwgc3RydWN0IGRybV9tc21fcGFyYW0pCiAjZGVmaW5lIERSTV9J T0NUTF9NU01fR0VNX05FVyAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJN X01TTV9HRU1fTkVXLCBzdHJ1Y3QgZHJtX21zbV9nZW1fbmV3KQpAQCAtMzE1LDYgKzMyNiw3IEBA IHN0cnVjdCBkcm1fbXNtX3N1Ym1pdHF1ZXVlIHsKICNkZWZpbmUgRFJNX0lPQ1RMX01TTV9HRU1f TUFEVklTRSAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTVNNX0dFTV9NQURW SVNFLCBzdHJ1Y3QgZHJtX21zbV9nZW1fbWFkdmlzZSkKICNkZWZpbmUgRFJNX0lPQ1RMX01TTV9T VUJNSVRRVUVVRV9ORVcgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9NU01fU1VC TUlUUVVFVUVfTkVXLCBzdHJ1Y3QgZHJtX21zbV9zdWJtaXRxdWV1ZSkKICNkZWZpbmUgRFJNX0lP Q1RMX01TTV9TVUJNSVRRVUVVRV9DTE9TRSAgRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERS TV9NU01fU1VCTUlUUVVFVUVfQ0xPU0UsIF9fdTMyKQorI2RlZmluZSBEUk1fSU9DVExfTVNNX1NV Qk1JVFFVRVVFX1FVRVJZICBEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX01TTV9TVUJN SVRRVUVVRV9RVUVSWSwgc3RydWN0IGRybV9tc21fc3VibWl0cXVldWVfcXVlcnkpCiAKICNpZiBk ZWZpbmVkKF9fY3BsdXNwbHVzKQogfQotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D7ADC10F14 for ; Wed, 17 Apr 2019 01:31:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C4C8620821 for ; Wed, 17 Apr 2019 01:31:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Hy6eZ1jB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728720AbfDQBbX (ORCPT ); Tue, 16 Apr 2019 21:31:23 -0400 Received: from mail-pf1-f193.google.com ([209.85.210.193]:40800 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728486AbfDQBbX (ORCPT ); Tue, 16 Apr 2019 21:31:23 -0400 Received: by mail-pf1-f193.google.com with SMTP id c207so11279764pfc.7 for ; Tue, 16 Apr 2019 18:31:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Id2/13yLlx+eS+aAX5lw+qGhYmZ8VMNbK3bBIfgxkrw=; b=Hy6eZ1jBkOM6yJ2ZLjsp4XlB//8STG7ddoEgIfP4gVGC1Zm9BTQg6A4eeB5ISb1OAV EmYPXDdKPbHu70FMvCmdBzg8Pd7OcRopt6CzHDNpOsMCoDYVhbCKPa8elQhVqXcK+/DU HHyRwaNdnWl1ACFvLyQ1kF3R94yVFEr5EJQqiNzPm2wHL1yCMcuCZrEkKH2i6VlI08ER 5bqH7dWmjHgRpgvhJqcoazJ+vbpjNvnwd83j8ZY+6eHm/Bkn0DFX7S8hwESsgpyMUIM6 xuwntezbloIXUjqS8IRynJ9weQ00xUt4a1upB3/+1u3AJ/+3Dh7NMba1ca4vzLvjVZfJ UoTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Id2/13yLlx+eS+aAX5lw+qGhYmZ8VMNbK3bBIfgxkrw=; b=fb0qDKGPjZICKUKBM8U/mIPWHaXC5//r2ewUFjpczrN83zQJePrwsJF8jobhIBeExi RH00hgTo6LgdGqz7lmCMaiwrx36Rnhumsjhmvao36+yVplqrNQj4wSvk69S27UF8qTge pltG7u2xYHknFUpaqMsdJbQYdwXDyuR5H4eJuMHgx+/AvqCrEpdW71Hjz5jlN5zTwdez 9CaYAA+ZpgghPB8YEsUqNVgjusrN8ycU6v0tszTTh/16AJjXpKpoA2DTqlKkN859rGTz VLEoEMiSFbL/Uegahe8OLH34lkcBXjsinZWKV304rVNavLKz6ZZG9g8hhNZFOWnzmEVe CwXw== X-Gm-Message-State: APjAAAVL1qBszYxSviwo4UZWyAr5PJiAD1GRmgzL9hM5SnC5Ks2JCNBJ yk05a3Tg2Yb2SXMgsAIyWBSEnVCbOMY= X-Google-Smtp-Source: APXvYqyN+5sqWpLm81qh8YVfAb5hzNwAp0OyW2kWcTqJGD5tH1kAwqejNMB6JvXKqDIjE0xQ+AXS1Q== X-Received: by 2002:a63:fc5a:: with SMTP id r26mr76294458pgk.97.1555464682281; Tue, 16 Apr 2019 18:31:22 -0700 (PDT) Received: from localhost ([2601:1c0:4501:a35a:719a:233b:28ab:5ad5]) by smtp.gmail.com with ESMTPSA id n3sm91515453pfa.99.2019.04.16.18.31.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 16 Apr 2019 18:31:21 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, Jordan Crouse , Rob Clark Subject: [PATCH 3/3] drm/msm/gpu: Add submit queue queries Date: Tue, 16 Apr 2019 18:30:26 -0700 Message-Id: <20190417013031.555-4-robdclark@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190417013031.555-1-robdclark@gmail.com> References: <20190417013031.555-1-robdclark@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Message-ID: <20190417013026.bir4Y7zXqxcPzGsx2XlfoR0cCXH3JKRYwUG4rYAskt4@z> From: Jordan Crouse Add the capability to query information from a submit queue. The first available parameter is for querying the number of GPU faults (hangs) that can be attributed to the queue. This is useful for implementing context robustness. A user context can regularly query the number of faults to see if it is responsible for any and if so it can invalidate itself. This is also helpful for testing by confirming to the user driver if a particular command stream caused a fault (or not as the case may be). Signed-off-by: Jordan Crouse Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_drv.c | 9 +++++- drivers/gpu/drm/msm/msm_drv.h | 2 ++ drivers/gpu/drm/msm/msm_gpu.c | 3 +- drivers/gpu/drm/msm/msm_submitqueue.c | 41 +++++++++++++++++++++++++++ include/uapi/drm/msm_drm.h | 12 ++++++++ 5 files changed, 65 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 906b2bb79f6a..b8671bdc12ab 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -39,9 +39,10 @@ * MSM_GEM_INFO ioctl. * - 1.4.0 - softpin, MSM_RELOC_BO_DUMP, and GEM_INFO support to set/get * GEM object's debug name + * - 1.5.0 - Add SUBMITQUERY_QUERY ioctl */ #define MSM_VERSION_MAJOR 1 -#define MSM_VERSION_MINOR 4 +#define MSM_VERSION_MINOR 5 #define MSM_VERSION_PATCHLEVEL 0 static const struct drm_mode_config_funcs mode_config_funcs = { @@ -964,6 +965,11 @@ static int msm_ioctl_submitqueue_new(struct drm_device *dev, void *data, args->flags, &args->id); } +static int msm_ioctl_submitqueue_query(struct drm_device *dev, void *data, + struct drm_file *file) +{ + return msm_submitqueue_query(dev, file->driver_priv, data); +} static int msm_ioctl_submitqueue_close(struct drm_device *dev, void *data, struct drm_file *file) @@ -984,6 +990,7 @@ static const struct drm_ioctl_desc msm_ioctls[] = { DRM_IOCTL_DEF_DRV(MSM_GEM_MADVISE, msm_ioctl_gem_madvise, DRM_AUTH|DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_NEW, msm_ioctl_submitqueue_new, DRM_AUTH|DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_CLOSE, msm_ioctl_submitqueue_close, DRM_AUTH|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_QUERY, msm_ioctl_submitqueue_query, DRM_AUTH|DRM_RENDER_ALLOW), }; static const struct vm_operations_struct vm_ops = { diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index cb642fefbd2f..afb91712acd6 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -420,6 +420,8 @@ struct msm_gpu_submitqueue *msm_submitqueue_get(struct msm_file_private *ctx, u32 id); int msm_submitqueue_create(struct drm_device *drm, struct msm_file_private *ctx, u32 prio, u32 flags, u32 *id); +int msm_submitqueue_query(struct drm_device *drm, struct msm_file_private *ctx, + struct drm_msm_submitqueue_query *args); int msm_submitqueue_remove(struct msm_file_private *ctx, u32 id); void msm_submitqueue_close(struct msm_file_private *ctx); diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index 194847a220b6..2b76657badd5 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -443,8 +443,9 @@ static void recover_worker(struct work_struct *work) if (submit) { struct task_struct *task; - /* Increment the fault count */ + /* Increment the fault counts */ gpu->global_faults++; + submit->queue->faults++; task = get_pid_task(submit->pid, PIDTYPE_PID); if (task) { diff --git a/drivers/gpu/drm/msm/msm_submitqueue.c b/drivers/gpu/drm/msm/msm_submitqueue.c index 5115f75b5b7f..f160ec40a39b 100644 --- a/drivers/gpu/drm/msm/msm_submitqueue.c +++ b/drivers/gpu/drm/msm/msm_submitqueue.c @@ -120,6 +120,47 @@ int msm_submitqueue_init(struct drm_device *drm, struct msm_file_private *ctx) return msm_submitqueue_create(drm, ctx, default_prio, 0, NULL); } +static int msm_submitqueue_query_faults(struct msm_gpu_submitqueue *queue, + struct drm_msm_submitqueue_query *args) +{ + size_t size = min_t(size_t, args->len, sizeof(queue->faults)); + int ret; + + /* If a zero length was passed in, return the data size we expect */ + if (!args->len) { + args->len = sizeof(queue->faults); + return 0; + } + + /* Set the length to the actual size of the data */ + args->len = size; + + ret = copy_to_user(u64_to_user_ptr(args->data), &queue->faults, size); + + return ret ? -EFAULT : 0; +} + +int msm_submitqueue_query(struct drm_device *drm, struct msm_file_private *ctx, + struct drm_msm_submitqueue_query *args) +{ + struct msm_gpu_submitqueue *queue; + int ret = -EINVAL; + + if (args->pad) + return -EINVAL; + + queue = msm_submitqueue_get(ctx, args->id); + if (!queue) + return -ENOENT; + + if (args->param == MSM_SUBMITQUEUE_PARAM_FAULTS) + ret = msm_submitqueue_query_faults(queue, args); + + msm_submitqueue_put(queue); + + return ret; +} + int msm_submitqueue_remove(struct msm_file_private *ctx, u32 id) { struct msm_gpu_submitqueue *entry; diff --git a/include/uapi/drm/msm_drm.h b/include/uapi/drm/msm_drm.h index 178d7b407f3a..0b85ed6a3710 100644 --- a/include/uapi/drm/msm_drm.h +++ b/include/uapi/drm/msm_drm.h @@ -288,6 +288,16 @@ struct drm_msm_submitqueue { __u32 id; /* out, identifier */ }; +#define MSM_SUBMITQUEUE_PARAM_FAULTS 0 + +struct drm_msm_submitqueue_query { + __u64 data; + __u32 id; + __u32 param; + __u32 len; + __u32 pad; +}; + #define DRM_MSM_GET_PARAM 0x00 /* placeholder: #define DRM_MSM_SET_PARAM 0x01 @@ -304,6 +314,7 @@ struct drm_msm_submitqueue { */ #define DRM_MSM_SUBMITQUEUE_NEW 0x0A #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B +#define DRM_MSM_SUBMITQUEUE_QUERY 0x0C #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param) #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new) @@ -315,6 +326,7 @@ struct drm_msm_submitqueue { #define DRM_IOCTL_MSM_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_MADVISE, struct drm_msm_gem_madvise) #define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue) #define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32) +#define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query) #if defined(__cplusplus) } -- 2.20.1