From nobody Fri Oct 3 19:11:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEB5136CDFC for ; Tue, 26 Aug 2025 15:49:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223360; cv=none; b=RrdouDlcMXBgMyKYUB8WRMYKOU2UH/70HPJZA7YnL6aZrPfKmfopZ3PHj/yIDmROGOA4XXeVLCYxfIyKwlWuO260I7fED3yYyVo4MRNQmA2OndodEX4zC9bwsS9htt3UW6ZQ50P5cdwcnnEDowE8rCMMYCH5+cafVbMhc+LAQ1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223360; c=relaxed/simple; bh=GRLIw++HXYPYzEg5bup3HIK8/atQ3BKC54yZ8PXsnOM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b/pujSqGOqVUKsdyB9PBFTQnULlSYynCP7S1qUVCbjs7hPpuPMGmWHJmhyYTwGoVaHdIHgZy3tpymYWZDsXTRommNaDGkru24+cYqgQaUxrihX5o05mPcQ1M1mI2Wdc8uZ01SAbe7t1iy0O491RNo/7xOA5mruTnv98WD/Slbjo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=b4t3jOSJ; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="b4t3jOSJ" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFC50C005030; Tue, 26 Aug 2025 15:49:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2025-04-25; bh=3sarT GpZXc47YJNelk3lJobSSOUhn3KH00A7S/whZ6c=; b=b4t3jOSJU13m1630m6Yt4 htfENrJpCE6zJv5+YcinsYF65Nn2RTOkDohkD2+8lV7ZcgfgdWDwGyhrZl6YOePV 8H87h8dlk3CTb7H0Fu5IIY443559mRqpJAGkeDYuCZIboQK/iz4yArWFs2cX0qiH 9sg8sjGr4SD3Zc2s8tFRPjTsHIuc+aXIWt0YASXG+oJtPci6U/t7DPGRec3Q6lQR ZgNsBJ2l2s4IJuS4cxOm1X2fc6zMm0qYme2IA8xUupL3+AOU3gbvUDj8vms6Moxh 8QDR5vkkQGyu4W1S995h0jRvNv4vf7W4lceUE592AenpNpi5atkvfXhrrCOaNqjU A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48q678vrq1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:06 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 57QEhpqo014573; Tue, 26 Aug 2025 15:49:05 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 48q439pn1h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:05 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 57QFn4EJ020762; Tue, 26 Aug 2025 15:49:04 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 48q439pn0g-2; Tue, 26 Aug 2025 15:49:04 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, willy@infradead.org, sidhartha.kumar@oracle.com, jani.nikula@linux.intel.com Subject: [PATCH v3 1/6] drm: Convert aux_idr to XArray Date: Tue, 26 Aug 2025 15:48:55 +0000 Message-ID: <20250826154900.405480-2-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250826154900.405480-1-sidhartha.kumar@oracle.com> References: <20250826154900.405480-1-sidhartha.kumar@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-26_02,2025-08-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2508260139 X-Proofpoint-GUID: hzisO9SJgDKI5xZAYV2Ij-zNR9bgvOLN X-Proofpoint-ORIG-GUID: hzisO9SJgDKI5xZAYV2Ij-zNR9bgvOLN X-Authority-Analysis: v=2.4 cv=NrLRc9dJ c=1 sm=1 tr=0 ts=68add772 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=2OwXVqhp2XgA:10 a=JfrnYn6hAAAA:8 a=yPCof4ZbAAAA:8 a=bhnSk7d9TMSBOys-tl0A:9 a=1CNFftbPRP8L7MoqJWF3:22 cc=ntf awl=host:13602 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDAzNSBTYWx0ZWRfXzfmLh8wFUAtU Ue/rtoX2F0eBE/GrlcJEKdpoIbkoZOdEakNNOVhLjNtUGZQJSYcnkgvLCJpocu3+sCDroNjx3Xb +7RGch9c16K7SfaTNHdJ/9C+rbupROCzofoMBI7hM976QQ/j2dx5Jf5qyvmnr4v6AapOi0Hvdnb 2Pjwv7Mus2UL8EAuYgVg2hVDYbah2HbKSKtqcbqGWfbAyfC5QlRpdldWYbnj4f1QhXhrFywGYJB jwgsXlN4W6vjfrNDFHHGhFdrQFYb9VZF3gzITXx/h3HR8zPWsOlKNPlWSCBXfIZzuOa/md5TdHr JcoVXzZJe3AC7vpkIK0gDJ5p6HIAc9PfLYOzpIJoUcFRR+59vGSRrlL+SaxHh57BmxOTfvZRIO5 dxxqTidEMhT2TraG0xY5LePc4x7XwA== Content-Type: text/plain; charset="utf-8" From: Matthew Wilcox From: Matthew Wilcox Remove aux_idr_mutex by converting aux_idr to an XArray. aux_xa->index and aux_dev is not modified so the indentifier value is unchanged. Signed-off-by: Matthew Wilcox Signed-off-by: Sidhartha Kumar --- drivers/gpu/drm/display/drm_dp_aux_dev.c | 38 ++++++++++-------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_aux_dev.c b/drivers/gpu/drm/dis= play/drm_dp_aux_dev.c index 29555b9f03c8..2a29d4b2cda0 100644 --- a/drivers/gpu/drm/display/drm_dp_aux_dev.c +++ b/drivers/gpu/drm/display/drm_dp_aux_dev.c @@ -52,8 +52,7 @@ struct drm_dp_aux_dev { =20 #define DRM_AUX_MINORS 256 #define AUX_MAX_OFFSET (1 << 20) -static DEFINE_IDR(aux_idr); -static DEFINE_MUTEX(aux_idr_mutex); +static DEFINE_XARRAY_ALLOC(aux_xa); static struct class *drm_dp_aux_dev_class; static int drm_dev_major =3D -1; =20 @@ -61,11 +60,11 @@ static struct drm_dp_aux_dev *drm_dp_aux_dev_get_by_min= or(unsigned index) { struct drm_dp_aux_dev *aux_dev =3D NULL; =20 - mutex_lock(&aux_idr_mutex); - aux_dev =3D idr_find(&aux_idr, index); + xa_lock(&aux_xa); + aux_dev =3D xa_load(&aux_xa, index); if (aux_dev && !kref_get_unless_zero(&aux_dev->refcount)) aux_dev =3D NULL; - mutex_unlock(&aux_idr_mutex); + xa_unlock(&aux_xa); =20 return aux_dev; } @@ -73,7 +72,7 @@ static struct drm_dp_aux_dev *drm_dp_aux_dev_get_by_minor= (unsigned index) static struct drm_dp_aux_dev *alloc_drm_dp_aux_dev(struct drm_dp_aux *aux) { struct drm_dp_aux_dev *aux_dev; - int index; + int err; =20 aux_dev =3D kzalloc(sizeof(*aux_dev), GFP_KERNEL); if (!aux_dev) @@ -82,14 +81,12 @@ static struct drm_dp_aux_dev *alloc_drm_dp_aux_dev(stru= ct drm_dp_aux *aux) atomic_set(&aux_dev->usecount, 1); kref_init(&aux_dev->refcount); =20 - mutex_lock(&aux_idr_mutex); - index =3D idr_alloc(&aux_idr, aux_dev, 0, DRM_AUX_MINORS, GFP_KERNEL); - mutex_unlock(&aux_idr_mutex); - if (index < 0) { + err =3D xa_alloc(&aux_xa, &aux_dev->index, aux_dev, + XA_LIMIT(0, DRM_AUX_MINORS - 1), GFP_KERNEL); + if (err < 0) { kfree(aux_dev); - return ERR_PTR(index); + return ERR_PTR(err); } - aux_dev->index =3D index; =20 return aux_dev; } @@ -250,22 +247,19 @@ static const struct file_operations auxdev_fops =3D { =20 static struct drm_dp_aux_dev *drm_dp_aux_dev_get_by_aux(struct drm_dp_aux = *aux) { - struct drm_dp_aux_dev *iter, *aux_dev =3D NULL; - int id; + struct drm_dp_aux_dev *aux_dev; + unsigned long id; =20 /* don't increase kref count here because this function should only be * used by drm_dp_aux_unregister_devnode. Thus, it will always have at * least one reference - the one that drm_dp_aux_register_devnode * created */ - mutex_lock(&aux_idr_mutex); - idr_for_each_entry(&aux_idr, iter, id) { - if (iter->aux =3D=3D aux) { - aux_dev =3D iter; + xa_for_each(&aux_xa, id, aux_dev) { + if (aux_dev->aux =3D=3D aux) break; - } } - mutex_unlock(&aux_idr_mutex); + return aux_dev; } =20 @@ -284,9 +278,7 @@ void drm_dp_aux_unregister_devnode(struct drm_dp_aux *a= ux) */ aux->drm_dev =3D NULL; =20 - mutex_lock(&aux_idr_mutex); - idr_remove(&aux_idr, aux_dev->index); - mutex_unlock(&aux_idr_mutex); + xa_erase(&aux_xa, aux_dev->index); =20 atomic_dec(&aux_dev->usecount); wait_var_event(&aux_dev->usecount, !atomic_read(&aux_dev->usecount)); --=20 2.43.0 From nobody Fri Oct 3 19:11:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24E0536CC9D for ; Tue, 26 Aug 2025 15:49:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223358; cv=none; b=ctm7QmgjJDqbB0DUZJKcB+7Kh34009PvCwWRp2VQv1QZssr3jmrQYUtAhcbZjtiSabVWZht9XEx7nT+ZTFlKAKzmQdl1z+AHBd6FjeOVBhIWXkdqJRiSkGK9pnIHFRw2ALx91FLQci9qj9e1u6kld1hKH/r6uAxzE53Y5n50Vp4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223358; c=relaxed/simple; bh=UupRcB6KUt1GHL486o0IBajaAHMWB28U+QfxjkoiYnY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ixhTBBu5DhH6IZfa1iGRnQj9iG+fkkVALY/2oGkyKlLmxmHxmNWwqUrgTIXbZ364qVb11ZqPpyAqbXWF8SMIS3atoFjR00jfS6XhVVyJ7tI513eYvXqMoN5SAHVWz5UwZUxC/Ux23rWaRbG0ThelmhZKkj0sFY9CZQu9RxK3+uE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=lovcWmXU; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="lovcWmXU" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFDDRP019292; Tue, 26 Aug 2025 15:49:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2025-04-25; bh=nCbt7 TS8/hbAOYDRRl6Jn1HXdbKA/WSEYy5d+Ymz4DY=; b=lovcWmXUwB0wti1EjUckN Y5fh5XAXtQv53zGPgDfzcnEUENP6bEiZAaJz+PvFdc0efF1lIoz6+hvc1y6W9XTF EB6v4TxX84MIr4P6MKuFKb+JZoZdFgr5SMn/AZG2TndROFE5jBL+RbuDnISh4FxB bFXlvwq1X7e4pF/PFKS41Myem6glAagYY29reFq39opc+ODsima9UXUWWWSLFuqU glSMUa++ZzVgJuntqSM4RSFgM/fNs0vkOOX3aVG1ATNhqjDa+8zCyeDX5mtcJidG je2FLB8l/LHwPxO37Wnz2qh0uRs94eO4nUNBz8srNcLpBZuXCH3hS5onwV9QYsG2 w== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48r8twbh0v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:07 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 57QF51On014662; Tue, 26 Aug 2025 15:49:06 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 48q439pn1v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:05 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 57QFn4EL020762; Tue, 26 Aug 2025 15:49:05 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 48q439pn0g-3; Tue, 26 Aug 2025 15:49:05 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, willy@infradead.org, sidhartha.kumar@oracle.com, jani.nikula@linux.intel.com Subject: [PATCH v3 2/6] drm: Convert object_name_idr to XArray Date: Tue, 26 Aug 2025 15:48:56 +0000 Message-ID: <20250826154900.405480-3-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250826154900.405480-1-sidhartha.kumar@oracle.com> References: <20250826154900.405480-1-sidhartha.kumar@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-26_02,2025-08-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2508260139 X-Proofpoint-ORIG-GUID: lURWdUPMT_LxaX6uYt3Qcr3enYji_NOz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODI0MDE4NCBTYWx0ZWRfX7RSRs8OM02+p VS3t8OXbd/+s+8XsHRVYAbHpMxhVfTRti8FhT4v3qfcDfTVwlFiv4EFkysxsiYFY4QtP+Dx7xTl RCbvfE8gbZ9QU+vyXGIYrS9qcpodf7kDpxQ9LBH+wfoERfzJ26os6Ef/HXY1U83rPrTQwPTy9Bi cuQBAs4nWrE0OPRdcasv1w/FIPmcaT3vWG+jELJszC0WHgzZZWr4Cul/Isqggi6eduAvp6PdseV I14WLgRe3U59JwNTVDte19xIqu3wqGNVIbCRzk87NRvaJKX1skN9fOzSjsqH/VgT9hCuzXVUMzP qQVfkS/p2e7VUOwORU01pOP/M5MfFpEyvBMlfzpBh4GO+StqRjaIdnPyHPyDlh5ifgBXnHtBhBD +3RVWxGqN8q+ZWjJvt5UMZhFv+YtWw== X-Proofpoint-GUID: lURWdUPMT_LxaX6uYt3Qcr3enYji_NOz X-Authority-Analysis: v=2.4 cv=IciHWXqa c=1 sm=1 tr=0 ts=68add773 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=2OwXVqhp2XgA:10 a=JfrnYn6hAAAA:8 a=yPCof4ZbAAAA:8 a=DK_Tli1e-HrAiUtdIdsA:9 a=1CNFftbPRP8L7MoqJWF3:22 cc=ntf awl=host:13602 Content-Type: text/plain; charset="utf-8" From: Matthew Wilcox From: Matthew Wilcox It's not possible to replace object_name_lock as it protects more code than should be reasonably be run under a spinlock, so the xa_lock is nested under the object_name_lock. obj->name and obj is not modified so the indentifier value is unchanged after this change. Signed-off-by: Matthew Wilcox Signed-off-by: Sidhartha Kumar --- drivers/gpu/drm/drm_debugfs.c | 19 ++++++------------- drivers/gpu/drm/drm_gem.c | 11 +++++------ include/drm/drm_device.h | 4 ++-- 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index 365cf337529f..3e57e3da5115 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -122,27 +122,20 @@ static int drm_clients_info(struct seq_file *m, void = *data) return 0; } =20 -static int drm_gem_one_name_info(int id, void *ptr, void *data) -{ - struct drm_gem_object *obj =3D ptr; - struct seq_file *m =3D data; - - seq_printf(m, "%6d %8zd %7d %8d\n", - obj->name, obj->size, - obj->handle_count, - kref_read(&obj->refcount)); - return 0; -} - static int drm_gem_name_info(struct seq_file *m, void *data) { struct drm_debugfs_entry *entry =3D m->private; struct drm_device *dev =3D entry->dev; + struct drm_gem_object *obj; + unsigned long index; =20 seq_printf(m, " name size handles refcount\n"); =20 mutex_lock(&dev->object_name_lock); - idr_for_each(&dev->object_name_idr, drm_gem_one_name_info, m); + xa_for_each(&dev->object_names, index, obj) { + seq_printf(m, "%6d %8zd %7d %8d\n", obj->name, obj->size, + obj->handle_count, kref_read(&obj->refcount)); + } mutex_unlock(&dev->object_name_lock); =20 return 0; diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 6a44351e58b7..cef0c5935798 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -97,7 +97,7 @@ drm_gem_init(struct drm_device *dev) struct drm_vma_offset_manager *vma_offset_manager; =20 mutex_init(&dev->object_name_lock); - idr_init_base(&dev->object_name_idr, 1); + xa_init_flags(&dev->object_names, XA_FLAGS_ALLOC1); =20 vma_offset_manager =3D drmm_kzalloc(dev, sizeof(*vma_offset_manager), GFP_KERNEL); @@ -269,7 +269,7 @@ static void drm_gem_object_handle_free(struct drm_gem_o= bject *obj) =20 /* Remove any name for this object */ if (obj->name) { - idr_remove(&dev->object_name_idr, obj->name); + xa_erase(&dev->object_names, obj->name); obj->name =3D 0; } } @@ -927,11 +927,10 @@ drm_gem_flink_ioctl(struct drm_device *dev, void *dat= a, } =20 if (!obj->name) { - ret =3D idr_alloc(&dev->object_name_idr, obj, 1, 0, GFP_KERNEL); + ret =3D xa_alloc(&dev->object_names, &obj->name, obj, + xa_limit_32b, GFP_KERNEL); if (ret < 0) goto err; - - obj->name =3D ret; } =20 args->name =3D (uint64_t) obj->name; @@ -967,7 +966,7 @@ drm_gem_open_ioctl(struct drm_device *dev, void *data, return -EOPNOTSUPP; =20 mutex_lock(&dev->object_name_lock); - obj =3D idr_find(&dev->object_name_idr, (int) args->name); + obj =3D xa_load(&dev->object_names, (int) args->name); if (obj) { drm_gem_object_get(obj); } else { diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h index a33aedd5e9ec..6a28a9b134dd 100644 --- a/include/drm/drm_device.h +++ b/include/drm/drm_device.h @@ -325,8 +325,8 @@ struct drm_device { /** @object_name_lock: GEM information */ struct mutex object_name_lock; =20 - /** @object_name_idr: GEM information */ - struct idr object_name_idr; + /** @object_names: GEM information */ + struct xarray object_names; =20 /** @vma_offset_manager: GEM information */ struct drm_vma_offset_manager *vma_offset_manager; --=20 2.43.0 From nobody Fri Oct 3 19:11:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEBFF36CE0B for ; Tue, 26 Aug 2025 15:49:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223360; cv=none; b=cgqc26mkaeSHcTTxXTDnV1bRidZWTKaau/C0cKrnN4SC1aaa+HnaVY7AMiXZlEe13rHuYt6fgp6V44OgcnY8B+l1noUzYozvWKjwvtUpZs2mK0LucHw/we1C8NEPyYwWm57WE2wb12N4Q6IdWo/rp1vYDpIuKf2a+1Um896GflQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223360; c=relaxed/simple; bh=qMPmWBQfwdwsj/YmDdca2wIZXgDMcobiHaM/QV5Mf+k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hJGzCwmU9z662QeubHrI6/zBVinfN8y1vT45OSnMe3PBr6j5coGowaa0j9f5zedCByoC/lp4yvkSqox4cu41OWaC0whLEnAjk682a/NfoYyNlKzJ3LyvW7jYQld4agVoPh56VJQXSHOmKLPCvaf+8c9H25XhGfiezOb5QfmxKtw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=kjs/dMGz; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="kjs/dMGz" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFCBWP005225; Tue, 26 Aug 2025 15:49:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2025-04-25; bh=VovS7 oIzZ0FP/NCTclA2FR6ftANOeezAkICyLh5RAhA=; b=kjs/dMGz1jmR+xhZstjsw ZvTQcC9kixr0EvX3nuLX3IlOL1VxI4rd89Df7JtQoR6mUDu9IwjEFVq8qgpfKWPz rfasgvRtqIbekndNc76eYllYP66k+YvNm8mBNVCUGEFCXYLZcaMyx7d/XuoScG3s yYbybnu6n4z3eBffosS5wxmhxP0nxJcX5YiDtJM5nmkjqXxISHhTCPug5vPMDKFC vNnXkhiR79/rpYH+KA4vYwpXNoeUixxh4/y6llF3l/af5N+S3khuXLFZOcdlEK3S x1YuN2yo1qlofrcYifFBGxI/UtdMJQbIz8yXOmaPI4rJh8b2sJLZwOcce3VkjABU g== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48q678vrq5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:07 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFZXK7014625; Tue, 26 Aug 2025 15:49:06 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 48q439pn26-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:06 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 57QFn4EN020762; Tue, 26 Aug 2025 15:49:05 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 48q439pn0g-4; Tue, 26 Aug 2025 15:49:05 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, willy@infradead.org, sidhartha.kumar@oracle.com, jani.nikula@linux.intel.com Subject: [PATCH v3 3/6] drm: Convert syncobj_idr to XArray Date: Tue, 26 Aug 2025 15:48:57 +0000 Message-ID: <20250826154900.405480-4-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250826154900.405480-1-sidhartha.kumar@oracle.com> References: <20250826154900.405480-1-sidhartha.kumar@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-26_02,2025-08-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2508260139 X-Proofpoint-GUID: kax5dvk4zpCiQS6AvvmlfOxjXzG42sya X-Proofpoint-ORIG-GUID: kax5dvk4zpCiQS6AvvmlfOxjXzG42sya X-Authority-Analysis: v=2.4 cv=NrLRc9dJ c=1 sm=1 tr=0 ts=68add773 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=2OwXVqhp2XgA:10 a=JfrnYn6hAAAA:8 a=yPCof4ZbAAAA:8 a=2SHY49DYBmSurWS0lVIA:9 a=1CNFftbPRP8L7MoqJWF3:22 cc=ntf awl=host:13602 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDAzNSBTYWx0ZWRfX/7X/GH8BcqMx f24jxfI3/4/ln4YHSl5D9wz/MLsSdRPAtFERDLfLbKAxq32GLNC8XGKkyYjFTtkyqjEm6CbAcsJ VGs6GnbFkGgQ7ZK9dIExVUhTR1Lr/7c/uEOJxtiNWAIPapogf9hkFFzMtyBQb/D6BCsxhIto+1w IOXaZ1Aj0s6IbSyrqttlAj2x0ThM2puH9785vzV1jw0aOTKZNRyYLeMijkWwyspNe573WFnJ4g/ vl5EAv0JlofFI5yiLhZQMhKiURqEQ+8ZvaEwyMr1dpfl6FtjXLAj5wC5xz/Zr5xorEt5ZidimhY 0eTY7qdfcihV+ePKEjqmnilpB7j2q8mk26WzMCTAhvHw4xyjnuoA2OM+tAtznCbxAal/ZUV2nzj 6jIHx/ibwaWUaw7Po6Txk67uk1eCyg== Content-Type: text/plain; charset="utf-8" From: Matthew Wilcox From: Matthew Wilcox Remove syncobj_table_lock by converting the syncobj_idr to an XArray. handle and syncobj is not modified in this change so the indentifier value remains the same. Signed-off-by: Matthew Wilcox Signed-off-by: Sidhartha Kumar --- drivers/gpu/drm/drm_syncobj.c | 64 +++++++++++------------------------ include/drm/drm_file.h | 6 ++-- 2 files changed, 22 insertions(+), 48 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index e1b0fa4000cd..091f43cf11ba 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -250,14 +250,12 @@ struct drm_syncobj *drm_syncobj_find(struct drm_file = *file_private, { struct drm_syncobj *syncobj; =20 - spin_lock(&file_private->syncobj_table_lock); - - /* Check if we currently have a reference on the object */ - syncobj =3D idr_find(&file_private->syncobj_idr, handle); + /* Get a reference on the object */ + xa_lock(&file_private->syncobjs); + syncobj =3D xa_load(&file_private->syncobjs, handle); if (syncobj) drm_syncobj_get(syncobj); - - spin_unlock(&file_private->syncobj_table_lock); + xa_unlock(&file_private->syncobjs); =20 return syncobj; } @@ -598,23 +596,16 @@ int drm_syncobj_get_handle(struct drm_file *file_priv= ate, { int ret; =20 - /* take a reference to put in the idr */ + /* take a reference to put in the XArray */ drm_syncobj_get(syncobj); =20 - idr_preload(GFP_KERNEL); - spin_lock(&file_private->syncobj_table_lock); - ret =3D idr_alloc(&file_private->syncobj_idr, syncobj, 1, 0, GFP_NOWAIT); - spin_unlock(&file_private->syncobj_table_lock); + ret =3D xa_alloc(&file_private->syncobjs, handle, syncobj, xa_limit_31b, + GFP_KERNEL); =20 - idr_preload_end(); - - if (ret < 0) { + if (ret < 0) drm_syncobj_put(syncobj); - return ret; - } =20 - *handle =3D ret; - return 0; + return ret; } EXPORT_SYMBOL(drm_syncobj_get_handle); =20 @@ -638,9 +629,7 @@ static int drm_syncobj_destroy(struct drm_file *file_pr= ivate, { struct drm_syncobj *syncobj; =20 - spin_lock(&file_private->syncobj_table_lock); - syncobj =3D idr_remove(&file_private->syncobj_idr, handle); - spin_unlock(&file_private->syncobj_table_lock); + syncobj =3D xa_erase(&file_private->syncobjs, handle); =20 if (!syncobj) return -EINVAL; @@ -726,16 +715,10 @@ static int drm_syncobj_fd_to_handle(struct drm_file *= file_private, syncobj =3D fd_file(f)->private_data; drm_syncobj_get(syncobj); =20 - idr_preload(GFP_KERNEL); - spin_lock(&file_private->syncobj_table_lock); - ret =3D idr_alloc(&file_private->syncobj_idr, syncobj, 1, 0, GFP_NOWAIT); - spin_unlock(&file_private->syncobj_table_lock); - idr_preload_end(); + ret =3D xa_alloc(&file_private->syncobjs, handle, syncobj, xa_limit_31b, + GFP_KERNEL); =20 - if (ret > 0) { - *handle =3D ret; - ret =3D 0; - } else + if (ret < 0) drm_syncobj_put(syncobj); =20 return ret; @@ -814,17 +797,7 @@ static int drm_syncobj_export_sync_file(struct drm_fil= e *file_private, void drm_syncobj_open(struct drm_file *file_private) { - idr_init_base(&file_private->syncobj_idr, 1); - spin_lock_init(&file_private->syncobj_table_lock); -} - -static int -drm_syncobj_release_handle(int id, void *ptr, void *data) -{ - struct drm_syncobj *syncobj =3D ptr; - - drm_syncobj_put(syncobj); - return 0; + xa_init_flags(&file_private->syncobjs, XA_FLAGS_ALLOC1); } =20 /** @@ -838,9 +811,12 @@ drm_syncobj_release_handle(int id, void *ptr, void *da= ta) void drm_syncobj_release(struct drm_file *file_private) { - idr_for_each(&file_private->syncobj_idr, - &drm_syncobj_release_handle, file_private); - idr_destroy(&file_private->syncobj_idr); + struct drm_syncobj *syncobj; + unsigned long index; + + xa_for_each(&file_private->syncobjs, index, syncobj) + drm_syncobj_put(syncobj); + xa_destroy(&file_private->syncobjs); } =20 int diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index 115763799625..ee5a16338c86 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -309,10 +309,8 @@ struct drm_file { /** @table_lock: Protects @object_idr. */ spinlock_t table_lock; =20 - /** @syncobj_idr: Mapping of sync object handles to object pointers. */ - struct idr syncobj_idr; - /** @syncobj_table_lock: Protects @syncobj_idr. */ - spinlock_t syncobj_table_lock; + /** @syncobjs: Mapping of sync object handles to object pointers. */ + struct xarray syncobjs; =20 /** @filp: Pointer to the core file structure. */ struct file *filp; --=20 2.43.0 From nobody Fri Oct 3 19:11:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24CF136CC96 for ; Tue, 26 Aug 2025 15:49:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223358; cv=none; b=AmpzhP7Zm1bq5mg0qQH/P02ON15rk6wstl0bfzCFPvjSKVqYbiYdYTYUggI9j3Rl5jobuxZn/ycGvDt70M6ZSC/3uk4evmbUbH5aAn4/lfSSXmAtQsiPLjHlNzkzl0Hobv1snxNM3AW66+dav4r3dBEavYZfbEC7dUE3GsDaswk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223358; c=relaxed/simple; bh=/6egTAUKqDcH+IAHLljH6wDVr3KtJWe+zgsHitcHDkk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nXvC8IpGpeEf1Zuwe/doDxFORBLoOXCdo7PlIv0JXe9P6mjRLVC/xlXhLtGLtdsX7RiNPdzaM7OuQlLlvvuB3VNRZZ3Ckw+L5FhI9yGGRiB/jlRjkS5V4Q7HROKC4oGQJTO7UP6rw0xuKkxAHsHd1x7CZxHpJhTtdCzwIJBwvOU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=LMXoOvUC; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="LMXoOvUC" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFC8dU012119; Tue, 26 Aug 2025 15:49:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2025-04-25; bh=k16C3 P8aqJI7IXthNKPo8RJJ52RrODS+VY1r4Vjr708=; b=LMXoOvUCgSP2A/QkyH3qi dbi9rZwg/btrf7Hx3gVqRtvn8WHKNCNtPYR7dePLKADAkmiLN5KTMcwfRqV9Ii5M p7eM92OQaIp7x2zmp6p4KuIPQII16jnqttYla9NGctg59yZFEvWZ2hg8foYVx7a8 cWWvv2xOyZ64ogx7hyzF71cK7h0KOQOXobpy4y9A0CQM/I6NDQk3zDWFZuKKg5eO a0B8quskOHfRjr4nkqu8jCi+AFtaGeumSoUoVjo7o9WGL+aPghKZ5fDp1Y581xsr IR5MrCC83Uwt3bChJYbO0FWEDNjTTzAbCwoGuLAN+7/XeWBuQPdGwRAZs0jN31xR w== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48q4jamqqu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:08 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 57QEaOHv014571; Tue, 26 Aug 2025 15:49:07 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 48q439pn2m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:06 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 57QFn4EP020762; Tue, 26 Aug 2025 15:49:06 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 48q439pn0g-5; Tue, 26 Aug 2025 15:49:06 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, willy@infradead.org, sidhartha.kumar@oracle.com, jani.nikula@linux.intel.com Subject: [PATCH v3 4/6] drm: Convert magic_map to XArray Date: Tue, 26 Aug 2025 15:48:58 +0000 Message-ID: <20250826154900.405480-5-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250826154900.405480-1-sidhartha.kumar@oracle.com> References: <20250826154900.405480-1-sidhartha.kumar@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-26_02,2025-08-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2508260139 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDAxOCBTYWx0ZWRfX9+o1DegDWi6y gm0NPWtxjU1EOv99xOpuE55UlXGCho+w4xeJQZlAtUnlQB/4t+ANT/iFP0XD3fSztlevFJNZKeX Gp2xPEDS2MPWDWkk/f5ImW83uspyoAIOLooPhTcHL62xCHlOReK34fUgsmDtGeAq7E6iHucZoHF h7sLtHZOGJ5I2kYoPWb/gSONMMq60FdXkv0MgC5mij6odZiC9ILj3PQmXkrwP0OYa1onT5zzgMk SZDgO7KfyzAnSmlCgL/vP1jAX5UKFgWvKMpdHZnKV3QqjNgEdb5sqLH5U7tb628aA+SySWlPXU0 Ma7yNOGNiWqRZn/Ow0ePR6H3BuHZ/o+rVzF7ZTStT+ZG9r0ET3hpOp3nvmLVJJ7cbglsj206uhj WHNjC1dIFMEw7cUWh4jOmp+MY19Tag== X-Proofpoint-GUID: auVsG37P0evKN8Y3psnod54M32W12GDJ X-Authority-Analysis: v=2.4 cv=IZWHWXqa c=1 sm=1 tr=0 ts=68add774 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=2OwXVqhp2XgA:10 a=JfrnYn6hAAAA:8 a=yPCof4ZbAAAA:8 a=9b9-1ReQUuPN9d1JgaQA:9 a=1CNFftbPRP8L7MoqJWF3:22 cc=ntf awl=host:13602 X-Proofpoint-ORIG-GUID: auVsG37P0evKN8Y3psnod54M32W12GDJ Content-Type: text/plain; charset="utf-8" From: Matthew Wilcox From: Matthew Wilcox Part of the mass conversion of IDR users to the XArray API. file_priv->master->magic_map, auth->magic, and file_priv->magic so the indentifiers are unchanged. Signed-off-by: Matthew Wilcox Signed-off-by: Sidhartha Kumar --- drivers/gpu/drm/drm_auth.c | 18 ++++++++---------- include/drm/drm_auth.h | 5 ++--- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c index a2556d16bed6..66a672384367 100644 --- a/drivers/gpu/drm/drm_auth.c +++ b/drivers/gpu/drm/drm_auth.c @@ -98,16 +98,15 @@ int drm_getmagic(struct drm_device *dev, void *data, st= ruct drm_file *file_priv) =20 guard(mutex)(&dev->master_mutex); if (!file_priv->magic) { - ret =3D idr_alloc(&file_priv->master->magic_map, file_priv, - 1, 0, GFP_KERNEL); - if (ret >=3D 0) - file_priv->magic =3D ret; + ret =3D xa_alloc(&file_priv->master->magic_map, + &file_priv->magic, file_priv, + xa_limit_31b, GFP_KERNEL); } auth->magic =3D file_priv->magic; =20 drm_dbg_core(dev, "%u\n", auth->magic); =20 - return ret < 0 ? ret : 0; + return ret; } =20 int drm_authmagic(struct drm_device *dev, void *data, @@ -119,10 +118,10 @@ int drm_authmagic(struct drm_device *dev, void *data, drm_dbg_core(dev, "%u\n", auth->magic); =20 guard(mutex)(&dev->master_mutex); - file =3D idr_find(&file_priv->master->magic_map, auth->magic); + file =3D xa_load(&file_priv->master->magic_map, auth->magic); if (file) { file->authenticated =3D 1; - idr_replace(&file_priv->master->magic_map, NULL, auth->magic); + xa_store(&file_priv->master->magic_map, auth->magic, NULL, 0); } =20 return file ? 0 : -EINVAL; @@ -137,7 +136,7 @@ struct drm_master *drm_master_create(struct drm_device = *dev) return NULL; =20 kref_init(&master->refcount); - idr_init_base(&master->magic_map, 1); + xa_init_flags(&master->magic_map, XA_FLAGS_ALLOC1); master->dev =3D dev; =20 /* initialize the tree of output resource lessees */ @@ -342,7 +341,7 @@ void drm_master_release(struct drm_file *file_priv) guard(mutex)(&dev->master_mutex); master =3D file_priv->master; if (file_priv->magic) - idr_remove(&file_priv->master->magic_map, file_priv->magic); + xa_erase(&file_priv->master->magic_map, file_priv->magic); =20 if (!drm_is_current_master_locked(file_priv)) goto out; @@ -408,7 +407,6 @@ static void drm_master_destroy(struct kref *kref) if (drm_core_check_feature(dev, DRIVER_MODESET)) drm_lease_destroy(master); =20 - idr_destroy(&master->magic_map); idr_destroy(&master->leases); idr_destroy(&master->lessee_idr); =20 diff --git a/include/drm/drm_auth.h b/include/drm/drm_auth.h index 50131383ed81..3026aedbc205 100644 --- a/include/drm/drm_auth.h +++ b/include/drm/drm_auth.h @@ -58,10 +58,9 @@ struct drm_master { */ int unique_len; /** - * @magic_map: Map of used authentication tokens. Protected by - * &drm_device.master_mutex. + * @magic_map: Map of used authentication tokens. */ - struct idr magic_map; + struct xarray magic_map; void *driver_priv; =20 /** --=20 2.43.0 From nobody Fri Oct 3 19:11:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEAC536CDF4 for ; Tue, 26 Aug 2025 15:49:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223359; cv=none; b=a2XBBj+wlQkOgomH4q2rW4xoFirQZrIkiKkh63se2dRtV9WNXTA9W4caYTcji0fmDXizdThkbbpC4vvb9rJhykEi32JQgiOWTc49rxSW4ueBDTESex4vLfC96dCXlgMM4LC2e7Ee2lN8QNr/OcEOahaai3fY3DAcHeRBS2Jh7iY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223359; c=relaxed/simple; bh=ZSp5aH5euevalqTpXnUK+cBdxLtbEU2rVxPGpS8BCHs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IDVwgkDJY6SAMhhr2y8tZPgPePUmHIsNNnHSpfv0E8qeaV/Y+3NwE61jdyAd4z3BULhDxVKOm9FqE6jxRI2zyu+DRbF4nXihP30fVQipf+SzDnFR2ZeEU2Nb5Rrh/74QkKRWuUHxVh4ZtL3dgPAhBZLr9R0TL6/D6EKn88IFc7U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=a892MNXr; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="a892MNXr" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFC5ls005041; Tue, 26 Aug 2025 15:49:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2025-04-25; bh=m2kdE ZhnjwvmKpmJgI1tkEE9qCfQrhXmJNj51PQlkZg=; b=a892MNXruqeMFAIBCHIPU wZifL8uekAQ6ZZdS7+jKqnI7hzx0ILf5DQvRUUf31Ogm2Aq27PsroB1EVnYedErM ojiUf0DVJeFN9esGM6r37qnnV+c7f3pOX/dm9RQXa4lXLtM6Q8HsBoVUTusl3hyf nrg6trxF3VVOVCn7YtrUIg0sk3q+muySJoXMRFuRoWJIShBLyjciSLFoxmkFhZE4 RKjhRHualsKPXn8u1/NDDkzJYEZbOI4jzmuu9VtRhNPgRNbpsEzz17Kh9HD2oxSk sk0jrYnC1miOfxm/oW2w2tphIt/dZi7RtxSKr0nS8OeA/eN1x4mGZrEnlO8QJhFz g== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48q678vrq6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:08 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFO54j014788; Tue, 26 Aug 2025 15:49:07 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 48q439pn2x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:07 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 57QFn4ER020762; Tue, 26 Aug 2025 15:49:06 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 48q439pn0g-6; Tue, 26 Aug 2025 15:49:06 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, willy@infradead.org, sidhartha.kumar@oracle.com, jani.nikula@linux.intel.com Subject: [PATCH v3 5/6] drm: Convert lessee_idr to XArray Date: Tue, 26 Aug 2025 15:48:59 +0000 Message-ID: <20250826154900.405480-6-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250826154900.405480-1-sidhartha.kumar@oracle.com> References: <20250826154900.405480-1-sidhartha.kumar@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-26_02,2025-08-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2508260139 X-Proofpoint-GUID: smSzIqe5Jfz8t-y_2iyXHrZj6v9U5OlI X-Proofpoint-ORIG-GUID: smSzIqe5Jfz8t-y_2iyXHrZj6v9U5OlI X-Authority-Analysis: v=2.4 cv=NrLRc9dJ c=1 sm=1 tr=0 ts=68add774 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=2OwXVqhp2XgA:10 a=JfrnYn6hAAAA:8 a=yPCof4ZbAAAA:8 a=8R3Qa1oyU1R4MiRUWy8A:9 a=1CNFftbPRP8L7MoqJWF3:22 cc=ntf awl=host:13602 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDAzNSBTYWx0ZWRfX0BW0i/Yp0R9Z JnQkJRxE+GgOVoprQmYagvJyvMsiNkmF54qAwvo0o4DROIqwS9DrftXusmmXen3s8XxVHTaOX6s czbZv5iL6fAnA5JZXrXDIQJybsp1Q+hkKydNfSnjlHKy9zH8ixOQyI5yQIX2jJQmxIvMLt1fgZz MNGJqzQw2J61LaVDL8pV8t1wJERedYyeekSeBxW6YfntuSIhz7UpAx8TtZi02Z/rTfn3LFpWjcQ eyqRFZjwKo77pry1rdc1aFGKPGmOGw/M51o4waxYhwS3G7hktpjgBUXwJ1cpFwbI1xZNlY8Dnut qw6sY9RzRdl8qjAtXswYoMJcvql7Be9Esp7Gyh20KGr3+PQ9qMogfhmzToNkqJgMzZEjzXnzxjn TVqGsoUE02/Kme5epn9S4w4cPZM8jQ== Content-Type: text/plain; charset="utf-8" From: Matthew Wilcox From: Matthew Wilcox Part of the mass conversion of IDR users to the XArray API. lessee_id and lessee are not modified so the indentifiers are unchanged. Signed-off-by: Matthew Wilcox Signed-off-by: Sidhartha Kumar --- drivers/gpu/drm/drm_auth.c | 4 +--- drivers/gpu/drm/drm_lease.c | 15 ++++++--------- include/drm/drm_auth.h | 4 ++-- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c index 66a672384367..0605a649b27f 100644 --- a/drivers/gpu/drm/drm_auth.c +++ b/drivers/gpu/drm/drm_auth.c @@ -142,8 +142,7 @@ struct drm_master *drm_master_create(struct drm_device = *dev) /* initialize the tree of output resource lessees */ INIT_LIST_HEAD(&master->lessees); INIT_LIST_HEAD(&master->lessee_list); - idr_init(&master->leases); - idr_init_base(&master->lessee_idr, 1); + xa_init_flags(&master->lessee_xa, XA_FLAGS_ALLOC1); =20 return master; } @@ -408,7 +407,6 @@ static void drm_master_destroy(struct kref *kref) drm_lease_destroy(master); =20 idr_destroy(&master->leases); - idr_destroy(&master->lessee_idr); =20 kfree(master->unique); kfree(master); diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c index 94375c6a5425..a9d5b8a48b24 100644 --- a/drivers/gpu/drm/drm_lease.c +++ b/drivers/gpu/drm/drm_lease.c @@ -82,7 +82,7 @@ static struct drm_master* _drm_find_lessee(struct drm_master *master, int lessee_id) { lockdep_assert_held(&master->dev->mode_config.idr_mutex); - return idr_find(&drm_lease_owner(master)->lessee_idr, lessee_id); + return xa_load(&drm_lease_owner(master)->lessee_xa, lessee_id); } =20 static int _drm_lease_held_master(struct drm_master *master, int id) @@ -210,7 +210,6 @@ static struct drm_master *drm_lease_create(struct drm_m= aster *lessor, struct idr int error; struct drm_master *lessee; int object; - int id; void *entry; =20 drm_dbg_lease(dev, "lessor %d\n", lessor->lessee_id); @@ -237,13 +236,11 @@ static struct drm_master *drm_lease_create(struct drm= _master *lessor, struct idr } =20 /* Insert the new lessee into the tree */ - id =3D idr_alloc(&(drm_lease_owner(lessor)->lessee_idr), lessee, 1, 0, GF= P_KERNEL); - if (id < 0) { - error =3D id; + error =3D xa_alloc(&drm_lease_owner(lessor)->lessee_xa, + &lessee->lessee_id, lessee, xa_limit_32b, GFP_KERNEL); + if (error < 0) goto out_lessee; - } =20 - lessee->lessee_id =3D id; lessee->lessor =3D drm_master_get(lessor); list_add_tail(&lessee->lessee_list, &lessor->lessees); =20 @@ -276,11 +273,11 @@ void drm_lease_destroy(struct drm_master *master) */ WARN_ON(!list_empty(&master->lessees)); =20 - /* Remove this master from the lessee idr in the owner */ + /* Remove this master from the lessee array in the owner */ if (master->lessee_id !=3D 0) { drm_dbg_lease(dev, "remove master %d from device list of lessees\n", master->lessee_id); - idr_remove(&(drm_lease_owner(master)->lessee_idr), master->lessee_id); + xa_erase(&drm_lease_owner(master)->lessee_xa, master->lessee_id); } =20 /* Remove this master from any lessee list it may be on */ diff --git a/include/drm/drm_auth.h b/include/drm/drm_auth.h index 3026aedbc205..1b6064afc8b0 100644 --- a/include/drm/drm_auth.h +++ b/include/drm/drm_auth.h @@ -120,12 +120,12 @@ struct drm_master { struct idr leases; =20 /** - * @lessee_idr: + * @lessee_xa: * * All lessees under this owner (only used where @lessor is NULL). * Protected by &drm_device.mode_config's &drm_mode_config.idr_mutex. */ - struct idr lessee_idr; + struct xarray lessee_xa; }; =20 struct drm_master *drm_master_get(struct drm_master *master); --=20 2.43.0 From nobody Fri Oct 3 19:11:44 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3998D36CE11 for ; Tue, 26 Aug 2025 15:49:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223360; cv=none; b=Cpz65yZ87m8wpkqM67HE4Jurl3+UfB//czZpC3o0x3ZbAoP0HOd2fy+O0QOPSIvi0ZDE9/xmF57pOUk4Hli2ut/CnKhUh0w9Lb6BLBbrsrsFlkg1coCNEJD2X7dfpqNu4MYqBrZ6fCf28uludxgKkb56d7hiTUruVnKjvza+WO8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756223360; c=relaxed/simple; bh=RIjUSIwG/uIpA5EV9aElbVGmyMLQsr6kA3pUCRyqlAk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DnfV4D+zdYRjrfMV3vikGtF2rliCJcrXUkOeBeqqf2w+IMU8Hj24vJwXnDUQEEu6jAI4UlSP2DFhd3OFLWgoNSAMB92foxonMLn8HiMiGGpIIl4Ic34PKfbertVlkkk34d6v0kzePLZ698m2C/peDgtMqyLNZ9GUdbfmTj7QD9Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=kcY2ezjQ; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="kcY2ezjQ" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFC6F6012242; Tue, 26 Aug 2025 15:49:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=corp-2025-04-25; bh=b+tGX nO+yUqjA0bAwDOtEXN0GyA6M2rDHzv64O8PnCE=; b=kcY2ezjQsCRKmhzZkMIvX cUPBweqqVdkHac55sieHy3IRF6gA1Wqzy+/YH4Fw97UuTtUQYJDPm05GMZXwyMBm 3iY8zL+6vzZJxtXqSg6TN+cn4D/+UcWvLdL/DMiKE9m1HVkvVOnYnfgvtDpU5gf0 331ip1+3SGdZeuwwbD8YYKp+A1Nj2gstEpmIzF+vz/7x7WNyyPQaXRxvnoFqzQFN wJw6RqFXF2/Szx0jl9SshQowzY9ZbOd0d0LQJbAgCp+U26133vKqLGisAapDcQUv 7VHCCODE/WvSsc4uPZa1i4hK09FQ6v7Yj6TBRyQa7KcP6Qou9+ovzZaThRdK/O4s A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 48q48emthd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:09 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 57QFOWje014743; Tue, 26 Aug 2025 15:49:07 GMT Received: from pps.reinject (localhost [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 48q439pn3a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 Aug 2025 15:49:07 +0000 Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 57QFn4ET020762; Tue, 26 Aug 2025 15:49:07 GMT Received: from sidhakum-ubuntu.osdevelopmeniad.oraclevcn.com (sidhakum-ubuntu.allregionaliads.osdevelopmeniad.oraclevcn.com [100.100.250.108]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 48q439pn0g-7; Tue, 26 Aug 2025 15:49:07 +0000 From: Sidhartha Kumar To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, willy@infradead.org, sidhartha.kumar@oracle.com, jani.nikula@linux.intel.com Subject: [PATCH v3 6/6] drm: Convert tile_idr to XArray Date: Tue, 26 Aug 2025 15:49:00 +0000 Message-ID: <20250826154900.405480-7-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250826154900.405480-1-sidhartha.kumar@oracle.com> References: <20250826154900.405480-1-sidhartha.kumar@oracle.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-26_02,2025-08-26_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2508110000 definitions=main-2508260139 X-Proofpoint-GUID: HSCIh1lc47MP5uh4RxT2ii1U6v2eIbxg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDAxNCBTYWx0ZWRfX54PKjP6nIVHv XLIM9/t0PK3yibvQqtEUszwqq3ofD3BwltbP1bU2n+LLrYMf5JXYqHJmHm+eygnuKRArTOwKi/D uEijlEZU9mWO31YYfBuUxYIVederWE9T3cM7XQve4zaw1ncFbqN/Dbo0Fa/IZ2zamTX0NMywqL7 hMgaREc5M8Z9emyvC+fRHQIUmmrVVDBqAihzlpLB+OE49gvFQGxzf4fEHvzS5FJR5sTeke2Gdhi GC7zwlaKxXQu8uvlUjU4GVveii7fwv7njQnWYu0Zd96qctyXD4huPqCD0q7kJ5BztsQXRzzd4NW s0YSTKurXek0qKp2pEs8EyhQk8wmhh4wlKlJpp9ApNcZWGLpo/iN+EVbWOx1F6VOYZwFjSB/MVG mtCuvEOBdme3zs0zRyHVhl4adcwCkA== X-Authority-Analysis: v=2.4 cv=FtgF/3rq c=1 sm=1 tr=0 ts=68add775 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=2OwXVqhp2XgA:10 a=JfrnYn6hAAAA:8 a=yPCof4ZbAAAA:8 a=Kp7_PmMn9Y2_fy4brQkA:9 a=1CNFftbPRP8L7MoqJWF3:22 cc=ntf awl=host:13602 X-Proofpoint-ORIG-GUID: HSCIh1lc47MP5uh4RxT2ii1U6v2eIbxg Content-Type: text/plain; charset="utf-8" From: Matthew Wilcox From: Matthew Wilcox Convert tile_idr to an Xarray. tg->id and tg are not modified so the indentifiers are unchanged. Signed-off-by: Matthew Wilcox Signed-off-by: Sidhartha Kumar --- drivers/gpu/drm/drm_connector.c | 26 ++++++++++---------------- drivers/gpu/drm/drm_mode_config.c | 3 +-- include/drm/drm_mode_config.h | 12 ++++++------ 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connecto= r.c index 272d6254ea47..6a64e20d730a 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -3531,9 +3531,7 @@ static void drm_tile_group_free(struct kref *kref) struct drm_tile_group *tg =3D container_of(kref, struct drm_tile_group, r= efcount); struct drm_device *dev =3D tg->dev; =20 - mutex_lock(&dev->mode_config.idr_mutex); - idr_remove(&dev->mode_config.tile_idr, tg->id); - mutex_unlock(&dev->mode_config.idr_mutex); + xa_erase(&dev->mode_config.tiles, tg->id); kfree(tg); } =20 @@ -3565,19 +3563,18 @@ struct drm_tile_group *drm_mode_get_tile_group(stru= ct drm_device *dev, const char topology[8]) { struct drm_tile_group *tg; - int id; + unsigned long id; =20 - mutex_lock(&dev->mode_config.idr_mutex); - idr_for_each_entry(&dev->mode_config.tile_idr, tg, id) { + xa_lock(&dev->mode_config.tiles); + xa_for_each(&dev->mode_config.tiles, id, tg) { if (!memcmp(tg->group_data, topology, 8)) { if (!kref_get_unless_zero(&tg->refcount)) tg =3D NULL; - mutex_unlock(&dev->mode_config.idr_mutex); - return tg; + break; } } - mutex_unlock(&dev->mode_config.idr_mutex); - return NULL; + xa_unlock(&dev->mode_config.tiles); + return tg; } EXPORT_SYMBOL(drm_mode_get_tile_group); =20 @@ -3606,16 +3603,13 @@ struct drm_tile_group *drm_mode_create_tile_group(s= truct drm_device *dev, memcpy(tg->group_data, topology, 8); tg->dev =3D dev; =20 - mutex_lock(&dev->mode_config.idr_mutex); - ret =3D idr_alloc(&dev->mode_config.tile_idr, tg, 1, 0, GFP_KERNEL); - if (ret >=3D 0) { - tg->id =3D ret; - } else { + ret =3D xa_alloc(&dev->mode_config.tiles, &tg->id, tg, xa_limit_32b, + GFP_KERNEL); + if (ret < 0) { kfree(tg); tg =3D NULL; } =20 - mutex_unlock(&dev->mode_config.idr_mutex); return tg; } EXPORT_SYMBOL(drm_mode_create_tile_group); diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_c= onfig.c index 25f376869b3a..680b97ab58ec 100644 --- a/drivers/gpu/drm/drm_mode_config.c +++ b/drivers/gpu/drm/drm_mode_config.c @@ -439,7 +439,7 @@ int drmm_mode_config_init(struct drm_device *dev) INIT_LIST_HEAD(&dev->mode_config.plane_list); INIT_LIST_HEAD(&dev->mode_config.privobj_list); idr_init_base(&dev->mode_config.object_idr, 1); - idr_init_base(&dev->mode_config.tile_idr, 1); + xa_init_flags(&dev->mode_config.tiles, XA_FLAGS_ALLOC1); ida_init(&dev->mode_config.connector_ida); spin_lock_init(&dev->mode_config.connector_list_lock); =20 @@ -578,7 +578,6 @@ void drm_mode_config_cleanup(struct drm_device *dev) } =20 ida_destroy(&dev->mode_config.connector_ida); - idr_destroy(&dev->mode_config.tile_idr); idr_destroy(&dev->mode_config.object_idr); drm_modeset_lock_fini(&dev->mode_config.connection_mutex); } diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h index 2e848b816218..9e3914119587 100644 --- a/include/drm/drm_mode_config.h +++ b/include/drm/drm_mode_config.h @@ -393,8 +393,8 @@ struct drm_mode_config { /** * @idr_mutex: * - * Mutex for KMS ID allocation and management. Protects both @object_idr - * and @tile_idr. + * Mutex for KMS ID allocation and management. Protects the + * objects in @object_idr. */ struct mutex idr_mutex; =20 @@ -407,12 +407,12 @@ struct drm_mode_config { struct idr object_idr; =20 /** - * @tile_idr: + * @tiles: * - * Use this idr for allocating new IDs for tiled sinks like use in some - * high-res DP MST screens. + * Use this for allocating new IDs for tiled sinks like those + * used in some high-res DP MST screens. */ - struct idr tile_idr; + struct xarray tiles; =20 /** @fb_lock: Mutex to protect fb the global @fb_list and @num_fb. */ struct mutex fb_lock; --=20 2.43.0