From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: [PATCH 4.14 057/140] drm/i915/perf: fix perf stream opening lock Date: Tue, 13 Mar 2018 16:24:20 +0100 Message-ID: <20180313152502.103047885@linuxfoundation.org> References: <20180313152458.201155692@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id D42BB6E56B for ; Tue, 13 Mar 2018 15:37:39 +0000 (UTC) In-Reply-To: <20180313152458.201155692@linuxfoundation.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , intel-gfx@lists.freedesktop.org, Rodrigo Vivi , stable@vger.kernel.org, Matthew Auld List-Id: intel-gfx@lists.freedesktop.org NC4xNC1zdGFibGUgcmV2aWV3IHBhdGNoLiAgSWYgYW55b25lIGhhcyBhbnkgb2JqZWN0aW9ucywg cGxlYXNlIGxldCBtZSBrbm93LgoKLS0tLS0tLS0tLS0tLS0tLS0tCgpGcm9tOiBMaW9uZWwgTGFu ZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cgpjb21taXQgZjYxNmYyODMw YzFlZDc5MjQ1Y2ZlY2E5MDBmN2U4YTNiM2MwOGMwNiB1cHN0cmVhbS4KCldlJ3JlIHNlZWluZyBv biBDSSB0aGF0IHNvbWUgY29udGV4dHMgZG9uJ3QgaGF2ZSB0aGUgcHJvZ3JhbW1lZCBPQQpwZXJp b2QgdGltZXIgdGhhdCBkaXJlY3RzIHRoZSBPQSB1bml0IG9uIGhvdyBvZnRlbiB0byB3cml0ZSBy ZXBvcnRzLgoKVGhlIGlzc3VlIGlzIHRoYXQgd2UncmUgbm90IGhvbGRpbmcgdGhlIGRybSBsb2Nr IGZyb20gd2hlbiB3ZSBlZGl0IHRoZQpjb250ZXh0IGltYWdlcyBkb3duIHRvIHdoZW4gd2Ugc2V0 IHRoZSBleGNsdXNpdmVfc3RyZWFtIHZhcmlhYmxlLiBUaGlzCmxlYXZlcyBhIHdpbmRvdyBmb3Ig dGhlIGRlZmVycmVkIGNvbnRleHQgYWxsb2NhdGlvbiB0byBjYWxsCmk5MTVfb2FfaW5pdF9yZWdf c3RhdGUoKSB0aGF0IHdpbGwgbm90IHByb2dyYW0gdGhlIGV4cGVjdGVkIE9BIHRpbWVyCnZhbHVl LCBiZWNhdXNlIHdlIGhhdmVuJ3Qgc2V0IHRoZSBleGNsdXNpdmVfc3RyZWFtIHlldC4KCnYyOiBE cm9wIG5lZWRfbG9jayBmcm9tIGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cygpIChNYXR0KQoK U2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50 ZWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29t PgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkZp eGVzOiA3MDFmODIzMWEyZiAoImRybS9pOTE1L3BlcmY6IHBydW5lIE9BIGNvbmZpZ3MiKQpCdWd6 aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMjU0 CkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0x MDM3MTUKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dp P2lkPTEwMzc1NQpMaW5rOiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gv bXNnaWQvMjAxODAzMDExMTA2MTMuMTczNy0xLWxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29t CkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgpDYzogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUm9kcmlnbyBW aXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpDYzogPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+ICMgdjQuMTQrCihjaGVycnkgcGlj a2VkIGZyb20gY29tbWl0IDQxZDNmZGNkMTVkNWVjZjI5Y2M3M2U4Yjc5YzIzMjdlYmI1NGI5NjAp ClNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9y Zz4KCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgfCAgIDM4ICsrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0 aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMTMwMCw5 ICsxMzAwLDggQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShzdHJ1YwogCSAq LwogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAlkZXZfcHJpdi0+ cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtID0gTlVMTDsKLQltdXRleF91bmxvY2soJmRldl9wcml2 LT5kcm0uc3RydWN0X211dGV4KTsKLQogCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21l dHJpY19zZXQoZGV2X3ByaXYpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwogCiAJZnJlZV9vYV9idWZmZXIoZGV2X3ByaXYpOwogCkBAIC0xNzU0LDIyICsxNzUz LDEzIEBAIHN0YXRpYyBpbnQgZ2VuOF9zd2l0Y2hfdG9fdXBkYXRlZF9rZXJuZWwKICAqIE5vdGU6 IGl0J3Mgb25seSB0aGUgUkNTL1JlbmRlciBjb250ZXh0IHRoYXQgaGFzIGFueSBPQSBzdGF0ZS4K ICAqLwogc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9j b25maWcgKm9hX2NvbmZpZywKLQkJCQkgICAgICAgYm9vbCBpbnRlcnJ1cHRpYmxlKQorCQkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKIHsKIAlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4OwogCWludCByZXQ7CiAJdW5zaWduZWQgaW50IHdhaXRfZmxh Z3MgPSBJOTE1X1dBSVRfTE9DS0VEOwogCi0JaWYgKGludGVycnVwdGlibGUpIHsKLQkJcmV0ID0g aTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOwotCQlpZiAocmV0 KQotCQkJcmV0dXJuIHJldDsKLQotCQl3YWl0X2ZsYWdzIHw9IEk5MTVfV0FJVF9JTlRFUlJVUFRJ QkxFOwotCX0gZWxzZSB7Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKLQl9CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp OwogCiAJLyogU3dpdGNoIGF3YXkgZnJvbSBhbnkgdXNlciBjb250ZXh0LiAqLwogCXJldCA9IGdl bjhfc3dpdGNoX3RvX3VwZGF0ZWRfa2VybmVsX2NvbnRleHQoZGV2X3ByaXYsIG9hX2NvbmZpZyk7 CkBAIC0xODE3LDggKzE4MDcsNiBAQCBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250 ZXh0cyhzCiAJfQogCiAgb3V0OgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwotCiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTg2Miw3ICsxODUwLDcgQEAgc3RhdGlj IGludCBnZW44X2VuYWJsZV9tZXRyaWNfc2V0KHN0cnVjdAogCSAqIHRvIG1ha2Ugc3VyZSBhbGwg c2xpY2VzL3N1YnNsaWNlcyBhcmUgT04gYmVmb3JlIHdyaXRpbmcgdG8gTk9BCiAJICogcmVnaXN0 ZXJzLgogCSAqLwotCXJldCA9IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhkZXZfcHJpdiwg b2FfY29uZmlnLCB0cnVlKTsKKwlyZXQgPSBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoZGV2 X3ByaXYsIG9hX2NvbmZpZyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTg3Nyw3 ICsxODY1LDcgQEAgc3RhdGljIGludCBnZW44X2VuYWJsZV9tZXRyaWNfc2V0KHN0cnVjdAogc3Rh dGljIHZvaWQgZ2VuOF9kaXNhYmxlX21ldHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewogCS8qIFJlc2V0IGFsbCBjb250ZXh0cycgc2xpY2VzL3N1YnNsaWNlcyBj b25maWd1cmF0aW9ucy4gKi8KLQlnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoZGV2X3ByaXYs IE5VTEwsIGZhbHNlKTsKKwlnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoZGV2X3ByaXYsIE5V TEwpOwogCiAJSTkxNV9XUklURShHRFRfQ0hJQ0tFTl9CSVRTLCAoSTkxNV9SRUFEKEdEVF9DSElD S0VOX0JJVFMpICYKIAkJCQkgICAgICB+R1RfTk9BX0VOQUJMRSkpOwpAQCAtMjEyNyw2ICsyMTE1 LDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkKIAlpZiAocmV0 KQogCQlnb3RvIGVycl9vYV9idWZfYWxsb2M7CiAKKwlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmZGV2X3ByaXYtPmRybSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfbG9jazsK KwogCXJldCA9IGRldl9wcml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldChkZXZfcHJp diwKIAkJCQkJCSAgICAgIHN0cmVhbS0+b2FfY29uZmlnKTsKIAlpZiAocmV0KQpAQCAtMjEzNCwy MyArMjEyNiwxNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5CiAK IAlzdHJlYW0tPm9wcyA9ICZpOTE1X29hX3N0cmVhbV9vcHM7CiAKLQkvKiBMb2NrIGRldmljZSBm b3IgZXhjbHVzaXZlX3N0cmVhbSBhY2Nlc3MgbGF0ZSBiZWNhdXNlCi0JICogZW5hYmxlX21ldHJp Y19zZXQoKSBtaWdodCBsb2NrIGFzIHdlbGwgb24gZ2VuOCsuCi0JICovCi0JcmV0ID0gaTkxNV9t dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOwotCWlmIChyZXQpCi0JCWdv dG8gZXJyX2xvY2s7Ci0KIAlkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtID0gc3Ry ZWFtOwogCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAly ZXR1cm4gMDsKIAotZXJyX2xvY2s6CitlcnJfZW5hYmxlOgogCWRldl9wcml2LT5wZXJmLm9hLm9w cy5kaXNhYmxlX21ldHJpY19zZXQoZGV2X3ByaXYpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi1lcnJfZW5hYmxlOgorZXJyX2xvY2s6CiAJZnJlZV9vYV9i dWZmZXIoZGV2X3ByaXYpOwogCiBlcnJfb2FfYnVmX2FsbG9jOgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AG47ELtELzeCndkxenYdASrf/GA/R12Z/4b/HVzUsRSJmuvKVOBTeE0ayf4WorUuIjqonvwuUWyo ARC-Seal: i=1; a=rsa-sha256; t=1520955459; cv=none; d=google.com; s=arc-20160816; b=N0/Y+ZvE7F8WwPwlIwAFWJz9h/TVuTixVuD0w99z63wR8lgj+CbJaYrZiPGomKHmjo AOYStlreqOD7FNWYom34VUCR9JVSwN71dlzXWMAh5P9qaVX4WzZxXbPg/S2YF3Qtnw/Z 2Mu/pjz5v6sYHsJN/aQLjz3WRZCLb6OqlEg+7y/oHCcilvnFcROUbixY/thpmtPji0OH 55cdc9uDFHcSw8eNmD+erdbd0UfCAZ8Vy7Z2ROuNdASxafm41BGig5gYYadkGaKuEIdc TdNmQsIEGoLupHQPwYGqP8uwpKIYZYS0W0VbfgAjKhB7Z8XOxKUZfC8skQgPrB09uj4z CS+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=lYyOAotJRiYsUUsOiP2mucS+OeyF/Ax1W1Oq6LtefH4=; b=nUj/hAMqCpspN54zq54K5g84EOJ9+/KS3NuZ9fX3T7XNmSw6v1xrTxD86DMVI/eUlz wyYazSgfbS8W0nFOuAh0l4hlqXOICsa78tMR/OFY+43gc0cmnUzEJmheaGlWwtuCHuWb rRbmypr+MYQw+nG4o6hl5TqVqOY41hw7iM5FZeM5wvNgXGOwVz7n6uOGU8kvf/Oqs9WQ Eoryiyz8o23YCnAsdeGQ75i+NYYkg1ab6JTo2izwOjyQFWvMgh5vgn4rST+NeLe0rNsh L5G20BMxjZEC6qWF5ScvlPbqrNp/3gVMWl4K7u6tnVf4I/Nzic9Tv9/A4XrKIe8HFpbk qiKw== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lionel Landwerlin , Matthew Auld , Chris Wilson , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , intel-gfx@lists.freedesktop.org Subject: [PATCH 4.14 057/140] drm/i915/perf: fix perf stream opening lock Date: Tue, 13 Mar 2018 16:24:20 +0100 Message-Id: <20180313152502.103047885@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180313152458.201155692@linuxfoundation.org> References: <20180313152458.201155692@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-LABELS: =?utf-8?b?IlxcU2VudCI=?= X-GMAIL-THRID: =?utf-8?q?1594836876367995431?= X-GMAIL-MSGID: =?utf-8?q?1594837392273729673?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Lionel Landwerlin commit f616f2830c1ed79245cfeca900f7e8a3b3c08c06 upstream. We're seeing on CI that some contexts don't have the programmed OA period timer that directs the OA unit on how often to write reports. The issue is that we're not holding the drm lock from when we edit the context images down to when we set the exclusive_stream variable. This leaves a window for the deferred context allocation to call i915_oa_init_reg_state() that will not program the expected OA timer value, because we haven't set the exclusive_stream yet. v2: Drop need_lock from gen8_configure_all_contexts() (Matt) Signed-off-by: Lionel Landwerlin Reviewed-by: Matthew Auld Reviewed-by: Chris Wilson Fixes: 701f8231a2f ("drm/i915/perf: prune OA configs") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102254 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103715 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103755 Link: https://patchwork.freedesktop.org/patch/msgid/20180301110613.1737-1-lionel.g.landwerlin@intel.com Cc: Jani Nikula Cc: Joonas Lahtinen Cc: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org Cc: # v4.14+ (cherry picked from commit 41d3fdcd15d5ecf29cc73e8b79c2327ebb54b960) Signed-off-by: Rodrigo Vivi Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/i915_perf.c | 38 ++++++++++++-------------------------- 1 file changed, 12 insertions(+), 26 deletions(-) --- a/drivers/gpu/drm/i915/i915_perf.c +++ b/drivers/gpu/drm/i915/i915_perf.c @@ -1300,9 +1300,8 @@ static void i915_oa_stream_destroy(struc */ mutex_lock(&dev_priv->drm.struct_mutex); dev_priv->perf.oa.exclusive_stream = NULL; - mutex_unlock(&dev_priv->drm.struct_mutex); - dev_priv->perf.oa.ops.disable_metric_set(dev_priv); + mutex_unlock(&dev_priv->drm.struct_mutex); free_oa_buffer(dev_priv); @@ -1754,22 +1753,13 @@ static int gen8_switch_to_updated_kernel * Note: it's only the RCS/Render context that has any OA state. */ static int gen8_configure_all_contexts(struct drm_i915_private *dev_priv, - const struct i915_oa_config *oa_config, - bool interruptible) + const struct i915_oa_config *oa_config) { struct i915_gem_context *ctx; int ret; unsigned int wait_flags = I915_WAIT_LOCKED; - if (interruptible) { - ret = i915_mutex_lock_interruptible(&dev_priv->drm); - if (ret) - return ret; - - wait_flags |= I915_WAIT_INTERRUPTIBLE; - } else { - mutex_lock(&dev_priv->drm.struct_mutex); - } + lockdep_assert_held(&dev_priv->drm.struct_mutex); /* Switch away from any user context. */ ret = gen8_switch_to_updated_kernel_context(dev_priv, oa_config); @@ -1817,8 +1807,6 @@ static int gen8_configure_all_contexts(s } out: - mutex_unlock(&dev_priv->drm.struct_mutex); - return ret; } @@ -1862,7 +1850,7 @@ static int gen8_enable_metric_set(struct * to make sure all slices/subslices are ON before writing to NOA * registers. */ - ret = gen8_configure_all_contexts(dev_priv, oa_config, true); + ret = gen8_configure_all_contexts(dev_priv, oa_config); if (ret) return ret; @@ -1877,7 +1865,7 @@ static int gen8_enable_metric_set(struct static void gen8_disable_metric_set(struct drm_i915_private *dev_priv) { /* Reset all contexts' slices/subslices configurations. */ - gen8_configure_all_contexts(dev_priv, NULL, false); + gen8_configure_all_contexts(dev_priv, NULL); I915_WRITE(GDT_CHICKEN_BITS, (I915_READ(GDT_CHICKEN_BITS) & ~GT_NOA_ENABLE)); @@ -2127,6 +2115,10 @@ static int i915_oa_stream_init(struct i9 if (ret) goto err_oa_buf_alloc; + ret = i915_mutex_lock_interruptible(&dev_priv->drm); + if (ret) + goto err_lock; + ret = dev_priv->perf.oa.ops.enable_metric_set(dev_priv, stream->oa_config); if (ret) @@ -2134,23 +2126,17 @@ static int i915_oa_stream_init(struct i9 stream->ops = &i915_oa_stream_ops; - /* Lock device for exclusive_stream access late because - * enable_metric_set() might lock as well on gen8+. - */ - ret = i915_mutex_lock_interruptible(&dev_priv->drm); - if (ret) - goto err_lock; - dev_priv->perf.oa.exclusive_stream = stream; mutex_unlock(&dev_priv->drm.struct_mutex); return 0; -err_lock: +err_enable: dev_priv->perf.oa.ops.disable_metric_set(dev_priv); + mutex_unlock(&dev_priv->drm.struct_mutex); -err_enable: +err_lock: free_oa_buffer(dev_priv); err_oa_buf_alloc: