From patchwork Fri Jul 16 22:47:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Ekstrand X-Patchwork-Id: 12382973 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=-13.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED,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 44C88C12002 for ; Fri, 16 Jul 2021 22:48:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0ED05613E8 for ; Fri, 16 Jul 2021 22:48:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0ED05613E8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jlekstrand.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3A67B6E952; Fri, 16 Jul 2021 22:48:07 +0000 (UTC) Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 87CCC6E8C8 for ; Fri, 16 Jul 2021 22:48:05 +0000 (UTC) Received: by mail-pj1-x102e.google.com with SMTP id cu14so7287668pjb.0 for ; Fri, 16 Jul 2021 15:48:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jlekstrand-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=26BfJp5P7eFvEwspn0bZn+OrsVxNX++BisccW8Z+Oe4=; b=MjEi3RoRlDVK7ZRGa/CCM4Z2uU9RTRIixNhcNRPaxUKU3mvJLwjqnAnaBgsuYD32hv CrBhgnPd9SUkOt4sAzOZC3zmHSlKpY6J2coyo5+zB9AA5cT+5Gu2tinASllQhq4dj8Da Gq3QpIZUC0RWEaySkfFgbEHUjTwly2ESsZS/voQUZ1wd5nm4FwMlmu6yBORhWG3Oxi4w +6H5CIKr7dQyvIOK1SvSdLn7NuOLoLtC1lpp/3CUEOGa7wS0gZif4KVwL4Wb0QNDx2Ih OcKztb4Ul+OUxJ20mVJ26v05LUXrl2bc8hP6FH+1EfNoaYLwlFW7RTfj7BVj7PNjgfXR 4hwQ== 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:mime-version :content-transfer-encoding; bh=26BfJp5P7eFvEwspn0bZn+OrsVxNX++BisccW8Z+Oe4=; b=ik2cNp92cnJa5PLG3AWA9gjlu1NonhxU5Y0KbAY0W+Yd3+aIaE+B7RnJVfzQbYcuQu IFt/P57o7P9Gj07ZmphQwY4gQmG39Ha5xkI7fBLFoTRkm+s1nIPtLt9El+ZOis2Vq9/1 fij9EB2QP/vY67THF5eVOEcJYX0hI6OEhr0J5dDF77S6Xzjsk9BVZnB/iizCf3gaS2mA kTfViwJ7be5sLv5lhlW03WgiXyf67qfY3RkOdOs5ygHm3JtXC7mQdFffSBZcTDFE2CZO uSE5jv1KHmGpV128xmhFdz679uekjMYUdRqbEw7D0q314TZCk6P7DukU+nYzg+rzaw3U BECw== X-Gm-Message-State: AOAM532HgWMrfFJYJZ3aUgdra4TPcrdb9kwwz/bssZVACuq0Li6JCs5E kuKaLYozD+nfGHAvckYOxWBuU8/nrAVCxQ== X-Google-Smtp-Source: ABdhPJy1BDHpLHZlEZ+6VefSJXtTPuOJHs1y9CP2sGSyRPut6NuK1h3srvyxGQVhkZ0Cl5cciva4dg== X-Received: by 2002:a17:90a:a6e:: with SMTP id o101mr12037103pjo.208.1626475684933; Fri, 16 Jul 2021 15:48:04 -0700 (PDT) Received: from omlet.com ([134.134.139.84]) by smtp.gmail.com with ESMTPSA id u24sm11991993pfm.141.2021.07.16.15.48.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Jul 2021 15:48:04 -0700 (PDT) From: Jason Ekstrand To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH 1/2] drm/i915: Call i915_globals_exit() after i915_pmu_exit() Date: Fri, 16 Jul 2021 17:47:57 -0500 Message-Id: <20210716224758.2162003-1-jason@jlekstrand.net> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Ekstrand Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" We should tear down in the opposite order we set up. Signed-off-by: Jason Ekstrand Fixes: 537f9c84a427 ("drm/i915/pmu: Fix CPU hotplug with multiple GPUs") Cc: Daniel Vetter Reviewed-by: Daniel Vetter Reviewed-by: Tvrtko Ursulin --- drivers/gpu/drm/i915/i915_pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index 67696d7522718..50ed93b03e582 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -1244,8 +1244,8 @@ static void __exit i915_exit(void) i915_perf_sysctl_unregister(); pci_unregister_driver(&i915_pci_driver); - i915_globals_exit(); i915_pmu_exit(); + i915_globals_exit(); } module_init(i915_init); From patchwork Fri Jul 16 22:47:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Ekstrand X-Patchwork-Id: 12382975 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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 195EEC636CB for ; Fri, 16 Jul 2021 22:48:15 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C6061613E8 for ; Fri, 16 Jul 2021 22:48:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C6061613E8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jlekstrand.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 065B26E9E4; Fri, 16 Jul 2021 22:48:10 +0000 (UTC) Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by gabe.freedesktop.org (Postfix) with ESMTPS id E178F6E952 for ; Fri, 16 Jul 2021 22:48:06 +0000 (UTC) Received: by mail-pj1-x1030.google.com with SMTP id jx7-20020a17090b46c7b02901757deaf2c8so7649538pjb.0 for ; Fri, 16 Jul 2021 15:48:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jlekstrand-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wIkYJWAJaTrGItMh1rW+qwg69uMn+qusOczMLNDUoLk=; b=qRSgDjvuZKjOlJEz+OMFf8Br5oEEZNTjY0o8D8tkQPAqy/1miv6me8dfOAT60T2UQ5 HDD9CT7V5rSfojZ+/zf1O/02640kif6NgFm27ArGoHZTLrlogNbJ+SBjO0hsV2OgRUHn M0Ubc/U6/wnoG+rOiRflR2zzNkAOztvEQcqGB/jizWZuFM9AWcAJ0p9BbSAWeHze4kHQ KPnj2DYp/98V8Bu6rRDCA5u+9AI9zrNXh8cai5PN4+7boenTups2Zd4pxBv90NgK7cfh xBTy72S1JiYACuFrRYaIyTb6JY2zMiQQKNYJIRAgTlDTxgxSqafX1bm9gb0Ujxcja3p2 Jlcw== 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=wIkYJWAJaTrGItMh1rW+qwg69uMn+qusOczMLNDUoLk=; b=KyrCNpbKKqjagDpSwuWx/6rg88JscX7GqMArp2CJd7Uhqu6SCgv84vPdJCiiGa/hj1 FqIC6Mt1XGNtJ4MRMRFvjH0mXz3ZKEnocjIymKYCWUMj0k73CTQIOTiJByWei2DMfAfX UsjQF4Cc77TUxbxbyRxB4l6A/KDNcVkgbxUWyLMtFbAJWCEiinjkOAm5A07RslAZq4WK e0ycT3ss2EfND1yg1q4cjMrFvSSqatxJ9vZZhANUKdioPL54roB/Sx6sC0rDGDmTmD5l Cz1iHnh82cLgEZy3bi9VQYFXTOPXBoW2x8edQ3DqWDuxxLKI0wmg43nfAV9aAkAMzfyM Ttkw== X-Gm-Message-State: AOAM531zRfK65ZQZfWiIgnohoiU98nnhFPyZJ4FsmdbybQ4WxDs6HhXZ X4sSYX0swzCW8+sPY05O6MTdFzSJeZmy3A== X-Google-Smtp-Source: ABdhPJx0IAjPDqH78QY7/YkshC+8w5LUkmqdWig1CEhSbkJ/posJBn85u7k5UjdUrhnJtFpR7Bn+rQ== X-Received: by 2002:a17:90a:de16:: with SMTP id m22mr5704185pjv.54.1626475686484; Fri, 16 Jul 2021 15:48:06 -0700 (PDT) Received: from omlet.com ([134.134.139.84]) by smtp.gmail.com with ESMTPSA id u24sm11991993pfm.141.2021.07.16.15.48.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Jul 2021 15:48:06 -0700 (PDT) From: Jason Ekstrand To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH 2/2] drm/i915: Tear down properly on early i915_init exit Date: Fri, 16 Jul 2021 17:47:58 -0500 Message-Id: <20210716224758.2162003-2-jason@jlekstrand.net> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210716224758.2162003-1-jason@jlekstrand.net> References: <20210716224758.2162003-1-jason@jlekstrand.net> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Ekstrand Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" In i915_exit(), we check i915_pci_driver.driver.owner to detect if i915_init exited early and don't tear anything down. However, we didn't have proper tear-down paths for early exits in i915_init(). Most of the time, you would never notice this as driver init failures are extremely rare and generally the sign of a bigger bug. However, when the mock self-tests are run, they run as part of i915_init() and exit early once they complete. They run after i915_globals_init() and before we set up anything else. The IGT test then unloads the module, invoking i915_exit() which, thanks to our i915_pci_driver.driver.owner check, doesn't actually tear anything down. Importantly, this means i915_globals_exit() never gets called even though i915_globals_init() was and we leak the globals. The most annoying part is that you don't actually notice the failure as part of the self-tests since leaking a bit of memory, while bad, doesn't result in anything observable from userspace. Instead, the next time we load the driver (usually for next IGT test), i915_globals_init() gets invoked again, we go to allocate a bunch of new memory slabs, those implicitly create debugfs entries, and debugfs warns that we're trying to create directories and files that already exist. Since this all happens as part of the next driver load, it shows up in the dmesg-warn of whatever IGT test ran after the mock selftests. Signed-off-by: Jason Ekstrand Fixes: 32eb6bcfdda9 ("drm/i915: Make request allocation caches global") Cc: Daniel Vetter --- drivers/gpu/drm/i915/i915_globals.c | 4 ++-- drivers/gpu/drm/i915/i915_pci.c | 23 +++++++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_globals.c b/drivers/gpu/drm/i915/i915_globals.c index 77f1911c463b8..87267e1d2ad92 100644 --- a/drivers/gpu/drm/i915/i915_globals.c +++ b/drivers/gpu/drm/i915/i915_globals.c @@ -138,7 +138,7 @@ void i915_globals_unpark(void) atomic_inc(&active); } -static void __exit __i915_globals_flush(void) +static void __i915_globals_flush(void) { atomic_inc(&active); /* skip shrinking */ @@ -148,7 +148,7 @@ static void __exit __i915_globals_flush(void) atomic_dec(&active); } -void __exit i915_globals_exit(void) +void i915_globals_exit(void) { GEM_BUG_ON(atomic_read(&active)); diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c index 50ed93b03e582..783f547be0990 100644 --- a/drivers/gpu/drm/i915/i915_pci.c +++ b/drivers/gpu/drm/i915/i915_pci.c @@ -1199,13 +1199,20 @@ static int __init i915_init(void) bool use_kms = true; int err; + /* We use this to detect early returns from i915_init() so we don't + * tear anything down in i915_exit() + */ + i915_pci_driver.driver.owner = NULL; + err = i915_globals_init(); if (err) return err; err = i915_mock_selftests(); - if (err) - return err > 0 ? 0 : err; + if (err) { + err = err > 0 ? 0 : err; + goto globals_exit; + } /* * Enable KMS by default, unless explicitly overriden by @@ -1228,13 +1235,17 @@ static int __init i915_init(void) i915_pmu_init(); err = pci_register_driver(&i915_pci_driver); - if (err) { - i915_pmu_exit(); - return err; - } + if (err) + goto pmu_exit; i915_perf_sysctl_register(); return 0; + +pmu_exit: + i915_pmu_exit(); +globals_exit: + i915_globals_exit(); + return err; } static void __exit i915_exit(void)