From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
patches@lists.linux.dev,
"Michał Winiarski" <michal.winiarski@intel.com>,
"James Zhu" <James.Zhu@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Sasha Levin" <sashal@kernel.org>
Subject: [PATCH 6.11 03/12] drm: Expand max DRM device number to full MINORBITS
Date: Fri, 27 Sep 2024 14:24:06 +0200 [thread overview]
Message-ID: <20240927121715.363220876@linuxfoundation.org> (raw)
In-Reply-To: <20240927121715.213013166@linuxfoundation.org>
6.11-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michał Winiarski <michal.winiarski@intel.com>
[ Upstream commit 071d583e01c88272f6ff216d4f867f8f35e94d7d ]
Having a limit of 64 DRM devices is not good enough for modern world
where we have multi-GPU servers, SR-IOV virtual functions and virtual
devices used for testing.
Let's utilize full minor range for DRM devices.
To avoid regressing the existing userspace, we're still maintaining the
numbering scheme where 0-63 is used for primary, 64-127 is reserved
(formerly for control) and 128-191 is used for render.
For minors >= 192, we're allocating minors dynamically on a first-come,
first-served basis.
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240823163048.2676257-4-michal.winiarski@intel.com
Acked-by: James Zhu <James.Zhu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/drm_drv.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 7e0fa5a2a3182..c734e6a1c4ce2 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -121,10 +121,19 @@ static void drm_minor_alloc_release(struct drm_device *dev, void *data)
xa_erase(drm_minor_get_xa(minor->type), minor->index);
}
+/*
+ * DRM used to support 64 devices, for backwards compatibility we need to maintain the
+ * minor allocation scheme where minors 0-63 are primary nodes, 64-127 are control nodes,
+ * and 128-191 are render nodes.
+ * After reaching the limit, we're allocating minors dynamically - first-come, first-serve.
+ * Accel nodes are using a distinct major, so the minors are allocated in continuous 0-MAX
+ * range.
+ */
#define DRM_MINOR_LIMIT(t) ({ \
typeof(t) _t = (t); \
_t == DRM_MINOR_ACCEL ? XA_LIMIT(0, ACCEL_MAX_MINORS) : XA_LIMIT(64 * _t, 64 * _t + 63); \
})
+#define DRM_EXTENDED_MINOR_LIMIT XA_LIMIT(192, (1 << MINORBITS) - 1)
static int drm_minor_alloc(struct drm_device *dev, enum drm_minor_type type)
{
@@ -140,6 +149,9 @@ static int drm_minor_alloc(struct drm_device *dev, enum drm_minor_type type)
r = xa_alloc(drm_minor_get_xa(type), &minor->index,
NULL, DRM_MINOR_LIMIT(type), GFP_KERNEL);
+ if (r == -EBUSY && (type == DRM_MINOR_PRIMARY || type == DRM_MINOR_RENDER))
+ r = xa_alloc(&drm_minors_xa, &minor->index,
+ NULL, DRM_EXTENDED_MINOR_LIMIT, GFP_KERNEL);
if (r < 0)
return r;
--
2.43.0
next prev parent reply other threads:[~2024-09-27 12:30 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-27 12:24 [PATCH 6.11 00/12] 6.11.1-rc1 review Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 01/12] drm: Use XArray instead of IDR for minors Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 02/12] accel: " Greg Kroah-Hartman
2024-09-27 12:24 ` Greg Kroah-Hartman [this message]
2024-09-27 12:24 ` [PATCH 6.11 04/12] powercap/intel_rapl: Add support for AMD family 1Ah Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 05/12] powercap/intel_rapl: Fix the energy-pkg event for AMD CPUs Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 06/12] cpufreq/amd-pstate: Add the missing cpufreq_cpu_put() Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 07/12] netfilter: nft_socket: Fix a NULL vs IS_ERR() bug in nft_socket_cgroup_subtree_level() Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 08/12] Bluetooth: btintel_pcie: Allocate memory for driver private data Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 09/12] ASoC: amd: acp: add ZSC control register programming sequence Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 10/12] nvme-pci: qdepth 1 quirk Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 11/12] USB: serial: pl2303: add device id for Macrosilicon MS3020 Greg Kroah-Hartman
2024-09-27 12:24 ` [PATCH 6.11 12/12] USB: usbtmc: prevent kernel-usb-infoleak Greg Kroah-Hartman
2024-09-27 17:46 ` [PATCH 6.11 00/12] 6.11.1-rc1 review Peter Schneider
2024-09-27 18:36 ` Jon Hunter
2024-09-27 18:51 ` Justin Forbes
2024-09-27 19:38 ` Christian Heusel
2024-09-27 19:53 ` Florian Fainelli
2024-09-28 13:42 ` Naresh Kamboju
2024-09-28 15:06 ` Allen
2024-09-28 17:15 ` Shuah Khan
2024-09-29 8:20 ` Ron Economos
2024-09-29 10:58 ` Kexy Biscuit
2024-09-29 11:32 ` Muhammad Usama Anjum
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240927121715.363220876@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=James.Zhu@amd.com \
--cc=christian.koenig@amd.com \
--cc=michal.winiarski@intel.com \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.