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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 9F62AC43331 for ; Fri, 3 Apr 2020 13:58:57 +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 760232073B for ; Fri, 3 Apr 2020 13:58:57 +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="MYPbGqDz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 760232073B 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 2AF916EBA4; Fri, 3 Apr 2020 13:58:44 +0000 (UTC) Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by gabe.freedesktop.org (Postfix) with ESMTPS id D97286EBA1 for ; Fri, 3 Apr 2020 13:58:42 +0000 (UTC) Received: by mail-wm1-x344.google.com with SMTP id a81so7788829wmf.5 for ; Fri, 03 Apr 2020 06:58:42 -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=+mGUGjh0CC/t1SDZZ+GcG+/m/QQrU/8AC3hihxvKjN8=; b=MYPbGqDziGGVYpN2BAyCrBd/Db34zb8iOF6oohmrVHjPhgAoeDZZasOS1zFA4rtm4H YcuSB8EZ6rh3J5Kb92c8x8VCTx+FQWWDP0X2AwzgartAWbl+63wOOcBgfXuVPfp8IP9B kLBOeCrZlfaXO9PzEsS/l1kFt2wZ598fzr6FI= 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=+mGUGjh0CC/t1SDZZ+GcG+/m/QQrU/8AC3hihxvKjN8=; b=ehr5+NbfI+Hbc8H+J2Qwi+7pQVfokUZdlN1IBJQA4PksL7l0hSvtwIOpOJyOHmu0hX xLk7BXWj1uBnner1wLS5to7Pe7/0/OWsCLofaZixnglfkmQbtHy1sjR8aphchjiV2+Xb xyU7s6NpYC21EKtST/8fwPRsDskDTSY0JpFZSlrERThFfKD7mUV3sAuRGWqTIMgO/Hzm 6puaTINiyj0FsyBPVlHseqBnDcUsO10t/ZpCtDl8z5S3cmbLZXfOViyUcSlHLgkGlmQM UkXOqCSQeqXYjAWV9/Ny01i2+coQXYTKcfM3HaknydvlzYlSWXuHtokz9W3ubGccOtHf C2fQ== X-Gm-Message-State: AGi0PuZsGpF8lF+u5PS/i43p1xVF0KiQ78Aa2OOaXoTowu5uqEVPOXTL AOw5pZl2TD+pkrkCht9IcUGZRhwMSsCY9A== X-Google-Smtp-Source: APiQypJR4spXw2fqh++sMcnd2tLbyzL7JRTPPWoJCJMNjbShLnhvSc/4dSesdr4KcmeNlrI82oHcnQ== X-Received: by 2002:a1c:e203:: with SMTP id z3mr9099593wmg.71.1585922320980; Fri, 03 Apr 2020 06:58:40 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id f141sm11783919wmf.3.2020.04.03.06.58.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2020 06:58:40 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH 05/44] drm/vkms: Use devm_drm_dev_alloc Date: Fri, 3 Apr 2020 15:57:49 +0200 Message-Id: <20200403135828.2542770-6-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200403135828.2542770-1-daniel.vetter@ffwll.ch> References: <20200403135828.2542770-1-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: Haneen Mohammed , Rodrigo Siqueira , Daniel Vetter , Intel Graphics Development , Daniel Vetter Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This means we also need to slightly restructure the exit code, so that final cleanup of the drm_device is triggered by unregistering the platform device. Note that devres is both clean up when the driver is unbound (not the case for vkms, we don't bind), and also when unregistering the device (very much the case for vkms). Therefore we can rely on devres even though vkms isn't a proper platform device driver. This also somewhat untangles the load code, since the drm and platform device setup are no longer interleaved, but two distinct steps. Signed-off-by: Daniel Vetter Cc: Rodrigo Siqueira Cc: Haneen Mohammed Cc: Daniel Vetter --- drivers/gpu/drm/vkms/vkms_drv.c | 48 +++++++++++---------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c index eef85f1a0ce5..fec2a4b91c4d 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.c +++ b/drivers/gpu/drm/vkms/vkms_drv.c @@ -61,9 +61,6 @@ static void vkms_release(struct drm_device *dev) { struct vkms_device *vkms = container_of(dev, struct vkms_device, drm); - platform_device_unregister(vkms->platform); - drm_atomic_helper_shutdown(&vkms->drm); - drm_mode_config_cleanup(&vkms->drm); destroy_workqueue(vkms->output.composer_workq); } @@ -142,30 +139,26 @@ static int vkms_modeset_init(struct vkms_device *vkmsdev) static int __init vkms_init(void) { int ret; + struct platform_device *pdev; - vkms_device = kzalloc(sizeof(*vkms_device), GFP_KERNEL); - if (!vkms_device) - return -ENOMEM; + pdev = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); + if (IS_ERR(pdev)) + return PTR_ERR(pdev); - vkms_device->platform = - platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); - if (IS_ERR(vkms_device->platform)) { - ret = PTR_ERR(vkms_device->platform); - goto out_free; + vkms_device = devm_drm_dev_alloc(&pdev->dev, &vkms_driver, + struct vkms_device, drm); + if (IS_ERR(vkms_device)) { + platform_device_unregister(pdev); + return PTR_ERR(vkms_device); } - - ret = drm_dev_init(&vkms_device->drm, &vkms_driver, - &vkms_device->platform->dev); - if (ret) - goto out_unregister; - drmm_add_final_kfree(&vkms_device->drm, vkms_device); + vkms_device->platform = pdev; ret = dma_coerce_mask_and_coherent(vkms_device->drm.dev, DMA_BIT_MASK(64)); if (ret) { DRM_ERROR("Could not initialize DMA support\n"); - goto out_put; + return ret; } vkms_device->drm.irq_enabled = true; @@ -173,28 +166,18 @@ static int __init vkms_init(void) ret = drm_vblank_init(&vkms_device->drm, 1); if (ret) { DRM_ERROR("Failed to vblank\n"); - goto out_put; + return ret; } ret = vkms_modeset_init(vkms_device); if (ret) - goto out_put; + return ret; ret = drm_dev_register(&vkms_device->drm, 0); if (ret) - goto out_put; + return ret; return 0; - -out_put: - drm_dev_put(&vkms_device->drm); - return ret; - -out_unregister: - platform_device_unregister(vkms_device->platform); -out_free: - kfree(vkms_device); - return ret; } static void __exit vkms_exit(void) @@ -205,7 +188,8 @@ static void __exit vkms_exit(void) } drm_dev_unregister(&vkms_device->drm); - drm_dev_put(&vkms_device->drm); + drm_atomic_helper_shutdown(&vkms_device->drm); + platform_device_unregister(vkms_device->platform); } module_init(vkms_init); -- 2.25.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel 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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,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 74C50C2BA12 for ; Fri, 3 Apr 2020 13:58:54 +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 4BD682073B for ; Fri, 3 Apr 2020 13:58:54 +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="MYPbGqDz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4BD682073B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C910F6EBA2; Fri, 3 Apr 2020 13:58:42 +0000 (UTC) Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4DE976EB9F for ; Fri, 3 Apr 2020 13:58:42 +0000 (UTC) Received: by mail-wm1-x342.google.com with SMTP id d202so7847732wmd.1 for ; Fri, 03 Apr 2020 06:58:42 -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=+mGUGjh0CC/t1SDZZ+GcG+/m/QQrU/8AC3hihxvKjN8=; b=MYPbGqDziGGVYpN2BAyCrBd/Db34zb8iOF6oohmrVHjPhgAoeDZZasOS1zFA4rtm4H YcuSB8EZ6rh3J5Kb92c8x8VCTx+FQWWDP0X2AwzgartAWbl+63wOOcBgfXuVPfp8IP9B kLBOeCrZlfaXO9PzEsS/l1kFt2wZ598fzr6FI= 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=+mGUGjh0CC/t1SDZZ+GcG+/m/QQrU/8AC3hihxvKjN8=; b=c/+wsX95PL54EWxlKEaRwVZxcW7JiiQCQIkNNuXt5urbGkn8+TuiLLiHPZALS+/JAJ GQU2Q9abNQugBOr6yS2v71DAymJ35Rj+U/FMXmkXUz5d2k72lfJpva4JOItMqnllzIbP OPpZoAx3OflbWG9Br+mY+ruqnB95w/yKWwFBXHJoVsT9l0YQQkh/LjoVP3yw72o2g8NC kHvhc4YWmmAajGmXh11sqvUFasYWutx9wxYli9kmGeDHm2yxfWFWbc2U0ouNBG6Kxnpq qTodw9V7xTExnAbFS3u+cR2YLpPgBddQyvjmiJx/TaureyPNH6j2u8T/j1ESLDyUoQFY Bdmw== X-Gm-Message-State: AGi0PubtMwa0lqiZHyz+T2lN8L83OnXFcNrS5eyEsjcxTLzQx3jCFVl+ VMHel/87U/sFsakIWyUfDzACzg== X-Google-Smtp-Source: APiQypJR4spXw2fqh++sMcnd2tLbyzL7JRTPPWoJCJMNjbShLnhvSc/4dSesdr4KcmeNlrI82oHcnQ== X-Received: by 2002:a1c:e203:: with SMTP id z3mr9099593wmg.71.1585922320980; Fri, 03 Apr 2020 06:58:40 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id f141sm11783919wmf.3.2020.04.03.06.58.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2020 06:58:40 -0700 (PDT) From: Daniel Vetter To: DRI Development Date: Fri, 3 Apr 2020 15:57:49 +0200 Message-Id: <20200403135828.2542770-6-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200403135828.2542770-1-daniel.vetter@ffwll.ch> References: <20200403135828.2542770-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 05/44] drm/vkms: Use devm_drm_dev_alloc X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Haneen Mohammed , Rodrigo Siqueira , Daniel Vetter , Intel Graphics Development , Daniel Vetter Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" This means we also need to slightly restructure the exit code, so that final cleanup of the drm_device is triggered by unregistering the platform device. Note that devres is both clean up when the driver is unbound (not the case for vkms, we don't bind), and also when unregistering the device (very much the case for vkms). Therefore we can rely on devres even though vkms isn't a proper platform device driver. This also somewhat untangles the load code, since the drm and platform device setup are no longer interleaved, but two distinct steps. Signed-off-by: Daniel Vetter Cc: Rodrigo Siqueira Cc: Haneen Mohammed Cc: Daniel Vetter --- drivers/gpu/drm/vkms/vkms_drv.c | 48 +++++++++++---------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c index eef85f1a0ce5..fec2a4b91c4d 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.c +++ b/drivers/gpu/drm/vkms/vkms_drv.c @@ -61,9 +61,6 @@ static void vkms_release(struct drm_device *dev) { struct vkms_device *vkms = container_of(dev, struct vkms_device, drm); - platform_device_unregister(vkms->platform); - drm_atomic_helper_shutdown(&vkms->drm); - drm_mode_config_cleanup(&vkms->drm); destroy_workqueue(vkms->output.composer_workq); } @@ -142,30 +139,26 @@ static int vkms_modeset_init(struct vkms_device *vkmsdev) static int __init vkms_init(void) { int ret; + struct platform_device *pdev; - vkms_device = kzalloc(sizeof(*vkms_device), GFP_KERNEL); - if (!vkms_device) - return -ENOMEM; + pdev = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); + if (IS_ERR(pdev)) + return PTR_ERR(pdev); - vkms_device->platform = - platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); - if (IS_ERR(vkms_device->platform)) { - ret = PTR_ERR(vkms_device->platform); - goto out_free; + vkms_device = devm_drm_dev_alloc(&pdev->dev, &vkms_driver, + struct vkms_device, drm); + if (IS_ERR(vkms_device)) { + platform_device_unregister(pdev); + return PTR_ERR(vkms_device); } - - ret = drm_dev_init(&vkms_device->drm, &vkms_driver, - &vkms_device->platform->dev); - if (ret) - goto out_unregister; - drmm_add_final_kfree(&vkms_device->drm, vkms_device); + vkms_device->platform = pdev; ret = dma_coerce_mask_and_coherent(vkms_device->drm.dev, DMA_BIT_MASK(64)); if (ret) { DRM_ERROR("Could not initialize DMA support\n"); - goto out_put; + return ret; } vkms_device->drm.irq_enabled = true; @@ -173,28 +166,18 @@ static int __init vkms_init(void) ret = drm_vblank_init(&vkms_device->drm, 1); if (ret) { DRM_ERROR("Failed to vblank\n"); - goto out_put; + return ret; } ret = vkms_modeset_init(vkms_device); if (ret) - goto out_put; + return ret; ret = drm_dev_register(&vkms_device->drm, 0); if (ret) - goto out_put; + return ret; return 0; - -out_put: - drm_dev_put(&vkms_device->drm); - return ret; - -out_unregister: - platform_device_unregister(vkms_device->platform); -out_free: - kfree(vkms_device); - return ret; } static void __exit vkms_exit(void) @@ -205,7 +188,8 @@ static void __exit vkms_exit(void) } drm_dev_unregister(&vkms_device->drm); - drm_dev_put(&vkms_device->drm); + drm_atomic_helper_shutdown(&vkms_device->drm); + platform_device_unregister(vkms_device->platform); } module_init(vkms_init); -- 2.25.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx