From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH] drm/vc4: Fix races when the CS reads from render targets. Date: Wed, 28 Sep 2016 08:42:42 -0700 Message-ID: <20160928154242.19151-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id EE9266E7CF for ; Wed, 28 Sep 2016 15:42:43 +0000 (UTC) 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: linux-kernel@vger.kernel.org, stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org V2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGJpbi9yZW5kZXIgcGlwZWxpbmluZywgdGhlIHByZXZp b3VzIGpvYiBtYXkKbm90IGJlIGNvbXBsZXRlZCB3aGVuIHdlIHN0YXJ0IGJpbm5pbmcgdGhlIG5l eHQgb25lLiAgSWYgdGhlIHByZXZpb3VzCmpvYiB3cm90ZSBvdXIgVkJPLCBJQiwgb3IgQ1MgdGV4 dHVyZXMsIHRoZW4gdGhlIGJpbm5pbmcgc3RhZ2UgbWlnaHQKZ2V0IHN0YWxlIG9yIHVuaW5pdGlh bGl6ZWQgcmVzdWx0cy4KCkZpeGVzIHRoZSBtYWpvciByZW5kZXJpbmcgZmFpbHVyZSBpbiBnbG1h cmsyIC1iIHRlcnJhaW4uCgpTaWduZWQtb2ZmLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQu bmV0PgpGaXhlczogY2EyNmQyOGJiYWEzICgiZHJtL3ZjNDogaW1wcm92ZSB0aHJvdWdocHV0IGJ5 IHBpcGVsaW5pbmcgYmlubmluZyBhbmQgcmVuZGVyaW5nIGpvYnMiKQpDYzogc3RhYmxlQHZnZXIu a2VybmVsLm9yZwotLS0KIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oICAgICAgIHwgMTkg KysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMgICAgICAg fCAxMyArKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZW5kZXJfY2wuYyB8 IDIxICsrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmFsaWRh dGUuYyAgfCAxNyArKysrKysrKysrKysrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQv dmM0X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKaW5kZXggNDI4ZTI0OTE5 ZWYxLi5mNjk2Yjc1Mjg4NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCkBAIC0xMjIsOSArMTIyLDE2 IEBAIHRvX3ZjNF9kZXYoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHN0cnVjdCB2YzRfYm8gewog CXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgYmFzZTsKIAotCS8qIHNlcW5vIG9mIHRoZSBsYXN0 IGpvYiB0byByZW5kZXIgdG8gdGhpcyBCTy4gKi8KKwkvKiBzZXFubyBvZiB0aGUgbGFzdCBqb2Ig dG8gcmVuZGVyIHVzaW5nIHRoaXMgQk8uICovCiAJdWludDY0X3Qgc2Vxbm87CiAKKwkvKiBzZXFu byBvZiB0aGUgbGFzdCBqb2IgdG8gdXNlIHRoZSBSQ0wgdG8gd3JpdGUgdG8gdGhpcyBCTy4KKwkg KgorCSAqIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgaW5jbHVkZSBiaW5uZXIgb3ZlcmZsb3cgbWVt b3J5CisJICogd3JpdGVzLgorCSAqLworCXVpbnQ2NF90IHdyaXRlX3NlcW5vOworCiAJLyogTGlz dCBlbnRyeSBmb3IgdGhlIEJPJ3MgcG9zaXRpb24gaW4gZWl0aGVyCiAJICogdmM0X2V4ZWNfaW5m by0+dW5yZWZfbGlzdCBvciB2YzRfZGV2LT5ib19jYWNoZS50aW1lX2xpc3QKIAkgKi8KQEAgLTIx Niw2ICsyMjMsOSBAQCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyB7CiAJLyogU2VxdWVuY2UgbnVtYmVy IGZvciB0aGlzIGJpbi9yZW5kZXIgam9iLiAqLwogCXVpbnQ2NF90IHNlcW5vOwogCisJLyogTGF0 ZXN0IHdyaXRlX3NlcW5vIG9mIGFueSBCTyB0aGF0IGJpbm5pbmcgZGVwZW5kcyBvbi4gKi8KKwl1 aW50NjRfdCBiaW5fZGVwX3NlcW5vOworCiAJLyogTGFzdCBjdXJyZW50IGFkZHJlc3NlcyB0aGUg aGFyZHdhcmUgd2FzIHByb2Nlc3Npbmcgd2hlbiB0aGUKIAkgKiBoYW5nY2hlY2sgdGltZXIgY2hl Y2tlZCBvbiB1cy4KIAkgKi8KQEAgLTIzMCw2ICsyNDAsMTMgQEAgc3RydWN0IHZjNF9leGVjX2lu Zm8gewogCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKipibzsKIAl1aW50MzJfdCBib19jb3Vu dDsKIAorCS8qIExpc3Qgb2YgQk9zIHRoYXQgYXJlIGJlaW5nIHdyaXR0ZW4gYnkgdGhlIFJDTC4g IE90aGVyIHRoYW4KKwkgKiB0aGUgYmlubmVyIHRlbXBvcmFyeSBzdG9yYWdlLCB0aGlzIGlzIGFs bCB0aGUgQk9zIHdyaXR0ZW4KKwkgKiBieSB0aGUgam9iLgorCSAqLworCXN0cnVjdCBkcm1fZ2Vt X2NtYV9vYmplY3QgKnJjbF93cml0ZV9ib1s0XTsKKwl1aW50MzJfdCByY2xfd3JpdGVfYm9fY291 bnQ7CisKIAkvKiBQb2ludGVycyBmb3Igb3VyIHBvc2l0aW9uIGluIHZjNC0+am9iX2xpc3QgKi8K IAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMKaW5kZXggYjI2MmM1 YzI2ZjEwLi5hZTE2MDllNzM5ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0 X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2dlbS5jCkBAIC00NzEsNiArNDcx LDExIEBAIHZjNF91cGRhdGVfYm9fc2Vxbm9zKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLCB1 aW50NjRfdCBzZXFubykKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmZXhlYy0+dW5yZWZfbGlz dCwgdW5yZWZfaGVhZCkgewogCQliby0+c2Vxbm8gPSBzZXFubzsKIAl9CisKKwlmb3IgKGkgPSAw OyBpIDwgZXhlYy0+cmNsX3dyaXRlX2JvX2NvdW50OyBpKyspIHsKKwkJYm8gPSB0b192YzRfYm8o JmV4ZWMtPnJjbF93cml0ZV9ib1tpXS0+YmFzZSk7CisJCWJvLT53cml0ZV9zZXFubyA9IHNlcW5v OworCX0KIH0KIAogLyogUXVldWVzIGEgc3RydWN0IHZjNF9leGVjX2luZm8gZm9yIGV4ZWN1dGlv bi4gIElmIG5vIGpvYiBpcwpAQCAtNjczLDYgKzY3OCwxNCBAQCB2YzRfZ2V0X2JjbChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYykKIAkJZ290byBmYWls OwogCiAJcmV0ID0gdmM0X3ZhbGlkYXRlX3NoYWRlcl9yZWNzKGRldiwgZXhlYyk7CisJaWYgKHJl dCkKKwkJZ290byBmYWlsOworCisJLyogQmxvY2sgd2FpdGluZyBvbiBhbnkgcHJldmlvdXMgcmVu ZGVyaW5nIGludG8gdGhlIENTJ3MgVkJPLAorCSAqIElCLCBvciB0ZXh0dXJlcywgc28gdGhhdCBw aXhlbHMgYXJlIGFjdHVhbGx5IHdyaXR0ZW4gYnkgdGhlCisJICogdGltZSB3ZSB0cnkgdG8gcmVh ZCB0aGVtLgorCSAqLworCXJldCA9IHZjNF93YWl0X2Zvcl9zZXFubyhkZXYsIGV4ZWMtPmJpbl9k ZXBfc2Vxbm8sIH4wdWxsLCB0cnVlKTsKIAogZmFpbDoKIAlkcm1fZnJlZV9sYXJnZSh0ZW1wKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlbmRlcl9jbC5jIGIvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfcmVuZGVyX2NsLmMKaW5kZXggMGYxMjQxODcyNWU1Li4wODg4NmEz MDk3NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlbmRlcl9jbC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlbmRlcl9jbC5jCkBAIC00NSw2ICs0NSw4IEBA IHN0cnVjdCB2YzRfcmNsX3NldHVwIHsKIAogCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKnJj bDsKIAl1MzIgbmV4dF9vZmZzZXQ7CisKKwl1MzIgbmV4dF93cml0ZV9ib19pbmRleDsKIH07CiAK IHN0YXRpYyBpbmxpbmUgdm9pZCByY2xfdTgoc3RydWN0IHZjNF9yY2xfc2V0dXAgKnNldHVwLCB1 OCB2YWwpCkBAIC00MDcsNiArNDA5LDggQEAgc3RhdGljIGludCB2YzRfcmNsX21zYWFfc3VyZmFj ZV9zZXR1cChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKIAlpZiAoISpvYmopCiAJCXJldHVy biAtRUlOVkFMOwogCisJZXhlYy0+cmNsX3dyaXRlX2JvW2V4ZWMtPnJjbF93cml0ZV9ib19jb3Vu dCsrXSA9ICpvYmo7CisKIAlpZiAoc3VyZi0+b2Zmc2V0ICYgMHhmKSB7CiAJCURSTV9FUlJPUigi TVNBQSB3cml0ZSBtdXN0IGJlIDE2YiBhbGlnbmVkLlxuIik7CiAJCXJldHVybiAtRUlOVkFMOwpA QCAtNDE3LDcgKzQyMSw4IEBAIHN0YXRpYyBpbnQgdmM0X3JjbF9tc2FhX3N1cmZhY2Vfc2V0dXAo c3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsCiAKIHN0YXRpYyBpbnQgdmM0X3JjbF9zdXJmYWNl X3NldHVwKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAogCQkJCSBzdHJ1Y3QgZHJtX2dlbV9j bWFfb2JqZWN0ICoqb2JqLAotCQkJCSBzdHJ1Y3QgZHJtX3ZjNF9zdWJtaXRfcmNsX3N1cmZhY2Ug KnN1cmYpCisJCQkJIHN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9yY2xfc3VyZmFjZSAqc3VyZiwKKwkJ CQkgYm9vbCBpc193cml0ZSkKIHsKIAl1aW50OF90IHRpbGluZyA9IFZDNF9HRVRfRklFTEQoc3Vy Zi0+Yml0cywKIAkJCQkgICAgICAgVkM0X0xPQURTVE9SRV9USUxFX0JVRkZFUl9USUxJTkcpOwpA QCAtNDQwLDYgKzQ0NSw5IEBAIHN0YXRpYyBpbnQgdmM0X3JjbF9zdXJmYWNlX3NldHVwKHN0cnVj dCB2YzRfZXhlY19pbmZvICpleGVjLAogCWlmICghKm9iaikKIAkJcmV0dXJuIC1FSU5WQUw7CiAK KwlpZiAoaXNfd3JpdGUpCisJCWV4ZWMtPnJjbF93cml0ZV9ib1tleGVjLT5yY2xfd3JpdGVfYm9f Y291bnQrK10gPSAqb2JqOworCiAJaWYgKHN1cmYtPmZsYWdzICYgVkM0X1NVQk1JVF9SQ0xfU1VS RkFDRV9SRUFEX0lTX0ZVTExfUkVTKSB7CiAJCWlmIChzdXJmID09ICZleGVjLT5hcmdzLT56c193 cml0ZSkgewogCQkJRFJNX0VSUk9SKCJnZW5lcmFsIHpzIHdyaXRlIG1heSBub3QgYmUgYSBmdWxs LXJlcy5cbiIpOwpAQCAtNTQyLDYgKzU1MCw4IEBAIHZjNF9yY2xfcmVuZGVyX2NvbmZpZ19zdXJm YWNlX3NldHVwKHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAogCWlmICghKm9iaikKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKKwlleGVjLT5yY2xfd3JpdGVfYm9bZXhlYy0+cmNsX3dyaXRlX2JvX2Nv dW50KytdID0gKm9iajsKKwogCWlmICh0aWxpbmcgPiBWQzRfVElMSU5HX0ZPUk1BVF9MVCkgewog CQlEUk1fRVJST1IoIkJhZCB0aWxpbmcgZm9ybWF0XG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBA IC01OTksMTUgKzYwOSwxOCBAQCBpbnQgdmM0X2dldF9yY2woc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCXJldCA9IHZjNF9yY2xfc3VyZmFjZV9zZXR1cChleGVjLCAmc2V0dXAuY29sb3JfcmVhZCwg JmFyZ3MtPmNvbG9yX3JlYWQpOworCXJldCA9IHZjNF9yY2xfc3VyZmFjZV9zZXR1cChleGVjLCAm c2V0dXAuY29sb3JfcmVhZCwgJmFyZ3MtPmNvbG9yX3JlYWQsCisJCQkJICAgIGZhbHNlKTsKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gdmM0X3JjbF9zdXJmYWNlX3NldHVwKGV4 ZWMsICZzZXR1cC56c19yZWFkLCAmYXJncy0+enNfcmVhZCk7CisJcmV0ID0gdmM0X3JjbF9zdXJm YWNlX3NldHVwKGV4ZWMsICZzZXR1cC56c19yZWFkLCAmYXJncy0+enNfcmVhZCwKKwkJCQkgICAg ZmFsc2UpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSB2YzRfcmNsX3N1cmZh Y2Vfc2V0dXAoZXhlYywgJnNldHVwLnpzX3dyaXRlLCAmYXJncy0+enNfd3JpdGUpOworCXJldCA9 IHZjNF9yY2xfc3VyZmFjZV9zZXR1cChleGVjLCAmc2V0dXAuenNfd3JpdGUsICZhcmdzLT56c193 cml0ZSwKKwkJCQkgICAgdHJ1ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmFsaWRhdGUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X3ZhbGlkYXRlLmMKaW5kZXggOWNlMWQwYWRmODgyLi4yNjUwM2UzMDc0MzggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3ZhbGlkYXRlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfdmFsaWRhdGUuYwpAQCAtMjY3LDYgKzI2Nyw5IEBAIHZhbGlkYXRl X2luZGV4ZWRfcHJpbV9saXN0KFZBTElEQVRFX0FSR1MpCiAJaWYgKCFpYikKIAkJcmV0dXJuIC1F SU5WQUw7CiAKKwlleGVjLT5iaW5fZGVwX3NlcW5vID0gbWF4KGV4ZWMtPmJpbl9kZXBfc2Vxbm8s CisJCQkJICB0b192YzRfYm8oJmliLT5iYXNlKS0+d3JpdGVfc2Vxbm8pOworCiAJaWYgKG9mZnNl dCA+IGliLT5iYXNlLnNpemUgfHwKIAkgICAgKGliLT5iYXNlLnNpemUgLSBvZmZzZXQpIC8gaW5k ZXhfc2l6ZSA8IGxlbmd0aCkgewogCQlEUk1fRVJST1IoIklCIGFjY2VzcyBvdmVyZmxvdyAoJWQg KyAlZColZCA+ICV6ZClcbiIsCkBAIC01NTUsOCArNTU4LDcgQEAgc3RhdGljIGJvb2wKIHJlbG9j X3RleChzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKIAkgIHZvaWQgKnVuaWZvcm1fZGF0YV91 LAogCSAgc3RydWN0IHZjNF90ZXh0dXJlX3NhbXBsZV9pbmZvICpzYW1wbGUsCi0JICB1aW50MzJf dCB0ZXh0dXJlX2hhbmRsZV9pbmRleCkKLQorCSAgdWludDMyX3QgdGV4dHVyZV9oYW5kbGVfaW5k ZXgsIGJvb2wgaXNfY3MpCiB7CiAJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqdGV4OwogCXVp bnQzMl90IHAwID0gKih1aW50MzJfdCAqKSh1bmlmb3JtX2RhdGFfdSArIHNhbXBsZS0+cF9vZmZz ZXRbMF0pOwpAQCAtNzE0LDYgKzcxNiwxMSBAQCByZWxvY190ZXgoc3RydWN0IHZjNF9leGVjX2lu Zm8gKmV4ZWMsCiAKIAkqdmFsaWRhdGVkX3AwID0gdGV4LT5wYWRkciArIHAwOwogCisJaWYgKGlz X2NzKSB7CisJCWV4ZWMtPmJpbl9kZXBfc2Vxbm8gPSBtYXgoZXhlYy0+YmluX2RlcF9zZXFubywK KwkJCQkJICB0b192YzRfYm8oJnRleC0+YmFzZSktPndyaXRlX3NlcW5vKTsKKwl9CisKIAlyZXR1 cm4gdHJ1ZTsKICBmYWlsOgogCURSTV9JTkZPKCJUZXh0dXJlIHAwIGF0ICVkOiAweCUwOHhcbiIs IHNhbXBsZS0+cF9vZmZzZXRbMF0sIHAwKTsKQEAgLTgzNSw3ICs4NDIsOCBAQCB2YWxpZGF0ZV9n bF9zaGFkZXJfcmVjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlpZiAoIXJlbG9jX3RleChl eGVjLAogCQkJCSAgICAgICB1bmlmb3JtX2RhdGFfdSwKIAkJCQkgICAgICAgJnZhbGlkYXRlZF9z aGFkZXItPnRleHR1cmVfc2FtcGxlc1t0ZXhdLAotCQkJCSAgICAgICB0ZXh0dXJlX2hhbmRsZXNf dVt0ZXhdKSkgeworCQkJCSAgICAgICB0ZXh0dXJlX2hhbmRsZXNfdVt0ZXhdLAorCQkJCSAgICAg ICBpID09IDIpKSB7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiAJCX0KQEAgLTg2Nyw2ICs4 NzUsOSBAQCB2YWxpZGF0ZV9nbF9zaGFkZXJfcmVjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CXVpbnQzMl90IHN0cmlkZSA9ICoodWludDhfdCAqKShwa3RfdSArIG8gKyA1KTsKIAkJdWludDMy X3QgbWF4X2luZGV4OwogCisJCWV4ZWMtPmJpbl9kZXBfc2Vxbm8gPSBtYXgoZXhlYy0+YmluX2Rl cF9zZXFubywKKwkJCQkJICB0b192YzRfYm8oJnZiby0+YmFzZSktPndyaXRlX3NlcW5vKTsKKwog CQlpZiAoc3RhdGUtPmFkZHIgJiAweDgpCiAJCQlzdHJpZGUgfD0gKCoodWludDMyX3QgKikocGt0 X3UgKyAxMDAgKyBpICogNCkpICYgfjB4ZmY7CiAKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK