From patchwork Fri Apr 3 22:31:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 11473867 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3B00B81 for ; Fri, 3 Apr 2020 22:31:49 +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 193B62076E for ; Fri, 3 Apr 2020 22:31:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="c3XlMHea" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 193B62076E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 B999E6ECC2; Fri, 3 Apr 2020 22:31:47 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id 82DC16ECC0 for ; Fri, 3 Apr 2020 22:31:46 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id j19so9455913wmi.2 for ; Fri, 03 Apr 2020 15:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9xEJ+5fdwmKWhbWNGYV2Df4Wf3BUc+qjyALcX6vzrhI=; b=c3XlMHeatnG0bGKTIE5ROzMJQAisLvolsMGPoTlS2OCHb9SmkGvseEFIVetQU6uGjc 0PTleZ7zS0GyqMpTcrfatPBiVSFZXh/068ZfeQcE44OSaPWQl/cg2YLdV1sRQ9+chPYo SPmmr2jgr4NzAtaLBH1XOTQBH5wvIjDkRDVUk= 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=9xEJ+5fdwmKWhbWNGYV2Df4Wf3BUc+qjyALcX6vzrhI=; b=cw/jfupz1k333OkLbxCqwha2ns9JsA5c/zsjsiwbFTMFXWcHm/U8xAb9lQHbkXrIta dhV43c8jP81k+h3aHw6cufEXusjXYcpf5pVOXaw6i61nMKL37jZd3gbuRM0D7e17TAaC HT7gMoM038crlbAP5UtPcHmqbePx8cGq8u6AnuePiR4vkOh9MMPsc9PWxLKS06QnHsmZ 7RqIzfHUfZaL9PzN47POQsyDeicxOQRtSTnLOdycijw5jm0HO+KshqgFajK5X5EeiUxu m7Rkn88XRn+Td010MhhbBTxB8o4OmkWSxlFZJhBLkaX6fuQ1fNlAy4d42yH1xn+amBzs xcfA== X-Gm-Message-State: AGi0PuZf2QVs8DxLm7fTtpeEU0iKq5DeHbpMj3pPbbRXZWNe8IUuV4l+ HehLI0lsx+Vfoeo1RUQDIrQR2OoHyffG3w== X-Google-Smtp-Source: APiQypII1ztrIMUEy2w1gOLwxDOYNWRj6tGzZiPo34upHdFdMlApedPwOUUSrsShcep8+GlFHeYiTg== X-Received: by 2002:a1c:a553:: with SMTP id o80mr10474186wme.159.1585953104902; Fri, 03 Apr 2020 15:31:44 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u6sm7930811wrm.65.2020.04.03.15.31.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2020 15:31:44 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH] drm/i915/selftests: align more to real device lifetimes Date: Sat, 4 Apr 2020 00:31:39 +0200 Message-Id: <20200403223139.2729900-1-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200403135828.2542770-44-daniel.vetter@ffwll.ch> References: <20200403135828.2542770-44-daniel.vetter@ffwll.ch> 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: Daniel Vetter , Intel Graphics Development , Daniel Vetter Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The big change is device_add so that device_del can auto-cleanup devres resources. This allows us to use devm_drm_dev_alloc, which removes the last user of drm_dev_init. v2: Rebased Signed-off-by: Daniel Vetter --- .../gpu/drm/i915/selftests/mock_gem_device.c | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c index 41afc357f4d0..1ab97fa55929 100644 --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c @@ -123,12 +123,6 @@ struct drm_i915_private *mock_gem_device(void) pdev = kzalloc(sizeof(*pdev), GFP_KERNEL); if (!pdev) return NULL; - i915 = kzalloc(sizeof(*i915), GFP_KERNEL); - if (!i915) { - kfree(pdev); - return NULL; - } - device_initialize(&pdev->dev); pdev->class = PCI_BASE_CLASS_DISPLAY << 16; pdev->dev.release = release_dev; @@ -139,8 +133,23 @@ struct drm_i915_private *mock_gem_device(void) /* hack to disable iommu for the fake device; force identity mapping */ pdev->dev.archdata.iommu = (void *)-1; #endif + err = device_add(&pdev->dev); + if (err) { + kfree(pdev); + return NULL; + } + + i915 = devm_drm_dev_alloc(&pdev->dev, &mock_driver, + struct drm_i915_private, drm); + if (err) { + pr_err("Failed to allocate mock GEM device: err=%d\n", err); + put_device(&pdev->dev); + + return NULL; + } pci_set_drvdata(pdev, i915); + i915->drm.pdev = pdev; dev_pm_domain_set(&pdev->dev, &pm_domain); pm_runtime_enable(&pdev->dev); @@ -148,16 +157,6 @@ struct drm_i915_private *mock_gem_device(void) if (pm_runtime_enabled(&pdev->dev)) WARN_ON(pm_runtime_get_sync(&pdev->dev)); - err = drm_dev_init(&i915->drm, &mock_driver, &pdev->dev); - if (err) { - pr_err("Failed to initialise mock GEM device: err=%d\n", err); - put_device(&pdev->dev); - kfree(i915); - - return NULL; - } - i915->drm.pdev = pdev; - drmm_add_final_kfree(&i915->drm, i915); intel_runtime_pm_init_early(&i915->runtime_pm); @@ -221,5 +220,5 @@ struct drm_i915_private *mock_gem_device(void) void mock_destroy_device(struct drm_i915_private *i915) { - drm_dev_put(&i915->drm); + device_del(i915->drm.dev); }