[Intel-xe] [PATCH 2/2] drm/xe: Fail xe_device_create() if wq allocation fails
Rodrigo Vivi
rodrigo.vivi at kernel.org
Fri May 19 14:49:07 UTC 2023
On Thu, May 18, 2023 at 06:56:51PM -0300, Gustavo Sousa wrote:
> Let's make sure we give the driver a valid workqueue.
>
> While at it, also make sure to call destroy_workqueue() only if the
> workqueue is a valid one. That is necessary because xe_device_destroy()
> is indirectly called as part of the cleanup process of a failed
> xe_device_create().
>
> Signed-off-by: Gustavo Sousa <gustavo.sousa at intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 4614bb791fb0..dd4a4a6e0b94 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -10,6 +10,7 @@
> #include <drm/drm_gem_ttm_helper.h>
> #include <drm/drm_ioctl.h>
> #include <drm/drm_managed.h>
> +#include <drm/drm_print.h>
> #include <drm/xe_drm.h>
>
> #include "regs/xe_regs.h"
> @@ -161,7 +162,9 @@ static void xe_device_destroy(struct drm_device *dev, void *dummy)
> {
> struct xe_device *xe = to_xe_device(dev);
>
> - destroy_workqueue(xe->ordered_wq);
> + if (xe->ordered_wq)
> + destroy_workqueue(xe->ordered_wq);
> +
> ttm_device_fini(&xe->ttm);
> }
>
> @@ -211,6 +214,11 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
> INIT_LIST_HEAD(&xe->pinned.evicted);
>
> xe->ordered_wq = alloc_ordered_workqueue("xe-ordered-wq", 0);
> + if (!xe->ordered_wq) {
> + drm_err(&xe->drm, "Failed to allocate xe-ordered-wq\n");
> + err = -ENOMEM;
> + goto err_put;
> + }
>
> err = xe_display_create(xe);
> if (WARN_ON(err))
> --
> 2.40.1
>
More information about the Intel-xe
mailing list