Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp3378640ybp; Sun, 6 Oct 2019 10:37:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqy3hekB1utd2BaxLQzsOt6yei7yhTvZ5UwTaE/SabNyL2Es74Z9hZhoG+zzUXePjHZp+3UA X-Received: by 2002:a17:906:6084:: with SMTP id t4mr20489163ejj.164.1570383447526; Sun, 06 Oct 2019 10:37:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570383447; cv=none; d=google.com; s=arc-20160816; b=dwuYQQJsc6f65pKkrYnZQkS2ImgKLqOroHqvWdeC8bHRs9/bJuj7UUwSMO98pf5Xlo e1Of9qxE85MRVVbmbnXSt5TlsnV3X9pc9Lr4aEUMLejr3p8fR/faTtdv5ODJ463vHmR6 xfgafuvtCBuZwLEmOMMIk5Ynw244/FBgbgIwP58iqPurI81CfvLSzTu5kwiSohfg5XDZ 3N+TYXwsuyGKgXpIx3Xw2B62gED4T+91dTVK/3Ay4F6+UEbT6W2f/D++/CxmCWEm9q/w 46NSzsWO3LG6LzfsWi1lv1oXOYAWfAs1qimjKJ/rr80JO2UvB4F/T54kaMM/scNxqTej r2Bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nlJqQitmrhq19nyQu0zPPZRwQTPWamrRoav1lp5bPhQ=; b=MCqIvoc+LHx6JlN5+9gLLYm9NIRhT9sX+8mnT/3+4KfmPTzUJrU47NiRLtmsKFrtZ1 VgRlkwHKl04CXVCOVJDnaniYX2FmtIdwBM8AZ5kh0nAYzqcu+vtDspvtkN2nkCRN5k7U lkR2GoZVHc9SCtIicJtEH65EF2G5AxO97mHxSGME43f76cWykT+XNFtDi5Q2CQnMTG21 /VQuyAci2M6xJzNy6f3a0KB73Xaiq301QVhIH6v4eV35bJwYuIy2ZtEDnFJbwB8Y1BNN jxYE+P538Zt0Th0bf5vTBlnC5Cn+hh/zy31vAJ+Szd4h6ICwZHGHrxWqUBf+AfqUXMAJ O1wQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Q5bexHOx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p23si4720867eju.423.2019.10.06.10.37.03; Sun, 06 Oct 2019 10:37:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Q5bexHOx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729854AbfJFRd5 (ORCPT + 99 others); Sun, 6 Oct 2019 13:33:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:60556 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729840AbfJFRdx (ORCPT ); Sun, 6 Oct 2019 13:33:53 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 349B42133F; Sun, 6 Oct 2019 17:33:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570383232; bh=I/gA4q9CIaxKXPKZAn9zp6oLBe04zM00DICPM9pXiPE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q5bexHOxXc3qRii735hUhaM4CzUIBdurvhZBttkmcYcpPDaO6Saf1fxyoiQNlfD1n ePehTv8ynXpMN89Rh1XvHYMTC3u/fM7ozYqD6l4+A2rjU48kwZlJvEG92ztsIvA175 gdtvQg5L5nX/yT5tzw9S+StCi2UiOXuuMIJkoPUg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rodrigo Siqueira , Daniel Vetter , Sasha Levin Subject: [PATCH 5.2 028/137] drm/vkms: Avoid assigning 0 for possible_crtc Date: Sun, 6 Oct 2019 19:20:12 +0200 Message-Id: <20191006171211.482805173@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191006171209.403038733@linuxfoundation.org> References: <20191006171209.403038733@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rodrigo Siqueira [ Upstream commit e9d85f731de06a35d2ae6cdcf7d0e037c98ef41a ] When vkms invoke drm_universal_plane_init(), it sets 0 for possible_crtcs parameter which means that planes can't be attached to any CRTC. It currently works due to some safeguard in the drm_crtc file; however, it is possible to identify the problem by trying to append a second connector. This patch fixes this issue by modifying vkms_plane_init() to accept an index parameter which makes the code a little bit more flexible and avoid set zero to possible_crtcs. Signed-off-by: Rodrigo Siqueira Reviewed-by: Daniel Vetter Link: https://patchwork.freedesktop.org/patch/msgid/d67849c62a8d8ace1a0af455998b588798a4c45f.1561491964.git.rodrigosiqueiramelo@gmail.com Signed-off-by: Sasha Levin --- drivers/gpu/drm/vkms/vkms_drv.c | 2 +- drivers/gpu/drm/vkms/vkms_drv.h | 4 ++-- drivers/gpu/drm/vkms/vkms_output.c | 6 +++--- drivers/gpu/drm/vkms/vkms_plane.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c index 738dd6206d85b..92296bd8f6233 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.c +++ b/drivers/gpu/drm/vkms/vkms_drv.c @@ -92,7 +92,7 @@ static int vkms_modeset_init(struct vkms_device *vkmsdev) dev->mode_config.max_height = YRES_MAX; dev->mode_config.preferred_depth = 24; - return vkms_output_init(vkmsdev); + return vkms_output_init(vkmsdev, 0); } static int __init vkms_init(void) diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h index 3c7e06b19efd5..a0adcc86079f5 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.h +++ b/drivers/gpu/drm/vkms/vkms_drv.h @@ -115,10 +115,10 @@ bool vkms_get_vblank_timestamp(struct drm_device *dev, unsigned int pipe, int *max_error, ktime_t *vblank_time, bool in_vblank_irq); -int vkms_output_init(struct vkms_device *vkmsdev); +int vkms_output_init(struct vkms_device *vkmsdev, int index); struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev, - enum drm_plane_type type); + enum drm_plane_type type, int index); /* Gem stuff */ struct drm_gem_object *vkms_gem_create(struct drm_device *dev, diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c index 3b162b25312ec..1442b447c7070 100644 --- a/drivers/gpu/drm/vkms/vkms_output.c +++ b/drivers/gpu/drm/vkms/vkms_output.c @@ -36,7 +36,7 @@ static const struct drm_connector_helper_funcs vkms_conn_helper_funcs = { .get_modes = vkms_conn_get_modes, }; -int vkms_output_init(struct vkms_device *vkmsdev) +int vkms_output_init(struct vkms_device *vkmsdev, int index) { struct vkms_output *output = &vkmsdev->output; struct drm_device *dev = &vkmsdev->drm; @@ -46,12 +46,12 @@ int vkms_output_init(struct vkms_device *vkmsdev) struct drm_plane *primary, *cursor = NULL; int ret; - primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY); + primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY, index); if (IS_ERR(primary)) return PTR_ERR(primary); if (enable_cursor) { - cursor = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_CURSOR); + cursor = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_CURSOR, index); if (IS_ERR(cursor)) { ret = PTR_ERR(cursor); goto err_cursor; diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c index 0e67d2d42f0cc..20ffc52f91940 100644 --- a/drivers/gpu/drm/vkms/vkms_plane.c +++ b/drivers/gpu/drm/vkms/vkms_plane.c @@ -168,7 +168,7 @@ static const struct drm_plane_helper_funcs vkms_primary_helper_funcs = { }; struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev, - enum drm_plane_type type) + enum drm_plane_type type, int index) { struct drm_device *dev = &vkmsdev->drm; const struct drm_plane_helper_funcs *funcs; @@ -190,7 +190,7 @@ struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev, funcs = &vkms_primary_helper_funcs; } - ret = drm_universal_plane_init(dev, plane, 0, + ret = drm_universal_plane_init(dev, plane, 1 << index, &vkms_plane_funcs, formats, nformats, NULL, type, NULL); -- 2.20.1