From nobody Mon Apr 6 03:11:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2072DC6FA83 for ; Sun, 11 Sep 2022 21:17:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229539AbiIKVRh (ORCPT ); Sun, 11 Sep 2022 17:17:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229697AbiIKVRb (ORCPT ); Sun, 11 Sep 2022 17:17:31 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F98826AC4 for ; Sun, 11 Sep 2022 14:17:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662931050; x=1694467050; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=bPLXSt1pm/aLYOUXA2rtyWyj09IwpOs2VhXPRdNLwRU=; b=YwM7Oeg8UnKWg5KjNf1OPrAEQqzL4leZoHUINYUwmzQ1b2D8z0OHjhaK N20ghdqjQBQpm4ibSLcpm/Fb/3xlCfPrsLC9o9lEhCwGmWgyzmwbA0vgI R7HcrLvkDCTQaMg73hAvy1flvICI8b6dNu8wJFxn8P1matRLWABgalPPK DGPZMLOinHIXoPyNWSEotROQ2AotGKmpyMeEK+wRAQFemE4k1VyORFplr qSY8CssF6Bw69o0z/Kh3bBlyAm7ThiQE276mYnB5O3EGd2DwzJ0K792Zb otzRPph9criN35fquQLqHlHFCaIA0IxxMWlhMs+VMTYcEIeRMDlYpsZdG g==; X-IronPort-AV: E=McAfee;i="6500,9779,10467"; a="295337257" X-IronPort-AV: E=Sophos;i="5.93,307,1654585200"; d="scan'208";a="295337257" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Sep 2022 14:17:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,307,1654585200"; d="scan'208";a="791356686" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga005.jf.intel.com with ESMTP; 11 Sep 2022 14:17:29 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:29 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:28 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sun, 11 Sep 2022 14:17:28 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N9meTzF2RFyc2cElWbSRkdvdoS04F9Tz8/hY6u//PVpKTvhVcptcztgSMDZWtrQ2IujLr3hdRg/LNZUZAVt2AurHn1pw1puFiSRC3ejf9UONoT0hned+y9N41HSrrga5cGg2nPDwU2jluLHZL2cE1N4e2vmF8fcwgftgu5mnyq9wYOyEsrfeIx7v8nR76/tlbjCRdqriY0u4zQv2SjCZI4XEeuOaXPxHFks+WXHipbEUoPpQNxkQUm0ti1fDqJzOdGVtBFkqnKeT4H5aRtfdnJ70eHXfbll7HGrHCheeEiP6+X+dWvZ35Pcnn+OfZ8IcvIKicfBqPOJj2tb/C/iiFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fx9UFjBAsMM9Poo6R8mBv0u71VD2XvTy4QafzcE70Nw=; b=Q6FwgBAhnByyHSygiEIYjUhdHpc9PhlBleGSkTVng24YAhRcEpe6x86l/7doDCCmPRH8SnV9aFogul+W56c4+Lgq6AgoohVMdmYjtvkAmIyKGN+mF4ncKijoILdtuBBsVTziT3e9F7zaUGQkPf3XssmVWwFIWqBioriBKexj1ehXOwyWEMfxnCkPn9EYRg0m+n233W8em27fEJdySuy0QkydQ5uwzVyCSJtKD/hu2gWQ4RkUNemz4XDdDOjDZAeR91REpprD6VnAYRoeks8Hnxt32CAGiAfcTTXUOKFgMJNA/MiK88NqNh3cweE8J+3wOvy2GTLJOTQQhuf2H9TzyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB6065.namprd11.prod.outlook.com (2603:10b6:8:60::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.20; Sun, 11 Sep 2022 21:17:13 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::5145:64b6:db32:b424]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::5145:64b6:db32:b424%5]) with mapi id 15.20.5612.022; Sun, 11 Sep 2022 21:17:13 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: , , CC: David Airlie , Daniel Vetter , "Maarten Lankhorst" , Maxime Ripard , Thomas Zimmermann , Simon Ser , Matthew Wilcox , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v5 1/3] drm: Use XArray instead of IDR for minors Date: Sun, 11 Sep 2022 23:14:41 +0200 Message-ID: <20220911211443.581481-2-michal.winiarski@intel.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220911211443.581481-1-michal.winiarski@intel.com> References: <20220911211443.581481-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR3P281CA0004.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1d::23) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB6065:EE_ X-MS-Office365-Filtering-Correlation-Id: 76301df8-9415-4a71-e135-08da943aff27 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uzU4OoR4SYOTaN4e2IqfIyLFufuPnOT3b+WiCvArtt2QAvJnQp2T8nbs7Ac3331CA9ioGtwGMPuH71V5G0CRAfMNWbJHKJEfNnb7qZvERvPjOlvBvWQ897vHEvnJ/mobpiUCxWJHwnRett+TuHpYoF/oN0naumocEww9JU2D+MZO/8h4elsa5SD9kM5q2AfHNI0YbnDzdnsdy0L3nStG1xRyJRtPG/OvrXFU6QgfggTagsgdY39LUdZs9qpUE5QVemTdeNl7ad7XeZcJcPh9a4tNAlEnbPVEhzNSC5DF9tpUJkoCLzka1L1SG/UJ+cWO6ClcCVE9Hv+K8ld/k/dNvxSQFHOdOwSYfVPBNTYtgt3VWXyMMqPH0S1vmGII9xdMuovN+oLw9kvG0ndijvNOV48Y/GwCKKz1Mhkd6Sjb0xGuvq5XdcAnhwffSyF9h4HrF8unhdNlD59HLttpM2uraM60DbiiQ8eq5ujcqltIP36+bvDQWbuwPz77MSgONyudqAugMQcC9Ey9AJXE11VwQ3bXPYZSUAPKfIYm2Vlt9jJweahq8+wSEoPoJCtnDVVwiRqnFERV7nJ1e7daEXTZLnJBQl3ArXGbO0m98vaJ2wlBFX5zYf9rEKrebo8wSwCzRGiSDm7HjY1YRQ/u3bbc1xynW7M73EnPx6tc5aYfj8IzJJOS0dS+nRiPiGS9uXYrdYoKX77GV4Hqli4sKIlFnQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(366004)(396003)(136003)(376002)(39860400002)(186003)(6512007)(26005)(41300700001)(6506007)(83380400001)(6486002)(1076003)(478600001)(2616005)(6666004)(316002)(4326008)(8936002)(8676002)(7416002)(2906002)(82960400001)(5660300002)(38100700002)(86362001)(66556008)(66476007)(54906003)(66946007)(36756003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q215V2NqS2w4b3BJVGpDYmhSZnp2Vklra0RxeWdjN25YL1VtcVRLVFR1RmxS?= =?utf-8?B?TER1Sm5QcmxHQzZXODUvSmc2eXdIei9uTVA2UnVKT0ZVWVlhbEJ2bHNYc1Jo?= =?utf-8?B?TXZROUltbElUMFNwbjd1MUpNTG1kRitaSmh1bDBxOWhzcHlQNHp5b2tUZ3Bm?= =?utf-8?B?NXhwMU9QVVdQcXlEMTJFOE9YQU0xcWxFOUtoazJBZDE3WE93SCtPTHFPWklB?= =?utf-8?B?REREakFuK0lYTFJPdXdlSlBXSDJObktWWGthYTZuQkZheTNwU3c2WkhNMG1m?= =?utf-8?B?bnlFWVdwU0hvWXo1RUYvaE1zUTVxVk1RWnlqa1Jja24raldHblEyTmNicnF4?= =?utf-8?B?MjFxQjlSK0U4VjFzZ3dISFEzVnVuN25XN2J2MitSdks5akRiU3BKNHg5M1Z3?= =?utf-8?B?VmtvSlJmM3lWeXQvaVYwYW11aEMvRjFUY1NxejZYczNJanFpdlBJODBXM05p?= =?utf-8?B?dW1ZOGlLckVZTnZlY1hWMFNwOUVOb2J6MzBTVWVvSXJZNnhSS0RpTDMrd1hx?= =?utf-8?B?Mkh6NEFGY0FRM0dhVzZvYlQwWFAveVI1U1RsS2hteWs1RWVyZ21FSGtHSWd3?= =?utf-8?B?bGRWOWxPcWFRdHhDTUtvLzRIUmYweW1EYjhlckFYOVFVRkFzNjlRVlZUd3Vz?= =?utf-8?B?QWZmZlpBL3dvNmJzd28zRjRiZnFGb0I1b2pNTE5YN3hyTWtESXpJL3VUWGJp?= =?utf-8?B?ZlRGalhxQTNIYXZET0IrMXVGM0ttMS9sRFoxMFV3Ukl1eS9KbkwrU3JoSmlm?= =?utf-8?B?eUtMMXZzaTRaZGF1SmhucTVINVlnUnY5R094WU1mSjdUWVNGZmZYOEJyL3Fy?= =?utf-8?B?cENvUUcwaTNKZzR3cHBsSmd5blY5cFcyMWFuc0lTS0E1Nnp4K3ZlVjRaajVh?= =?utf-8?B?TC9Wa3ROUnVweUtOK2dVVzZEWWJ3Yzg1ZXRJVWhRYmpNZEJQNVNxb01TYStj?= =?utf-8?B?MmY0S1YvOFRRQ1N5c0p2N241N3FBejFrWU1XRS9ad0g5NkdsSDdkQ3k1ODJi?= =?utf-8?B?VE8xbFoyU293OEtuUjdCWkx6K1hHaERiSXdYbWtEMThPQTRXMXhMNDNERjI2?= =?utf-8?B?WGxwdXJqMndHU0kwU2JLTm9NSDJDVzhRRmVaOXpxSDBiUW5iWnoycVdNSEx0?= =?utf-8?B?N2dzQUVFd3dmMEFXTG5Ub0JVRXlERVBPekxOdU1VaEI0U2EzaE15M3JZZXFX?= =?utf-8?B?VmtjSnhFaW44YTUrNnNzUTZrZHJqa2oxUTNweEdxZW5NRDlsYnJWdE0yTE5o?= =?utf-8?B?RU1nK0F5UG1Qb0NRMGdXQ0h6WjNvbjd4QWpVK0tCbUNER3o1eUY4eGZzcU50?= =?utf-8?B?TXo1eUFtMlEvV0dYdlEwRW1lVFNyYlNXRkFINVBTUUJVWWVBelVNdzh3SmFn?= =?utf-8?B?THZDaTU1ME9KeExnajdRUUJqMzRpY2RVamx0L3RKOGFIenNHcDFOWTBlS0Zy?= =?utf-8?B?OXluamZPMEVjZEdhMG5uTXM2V1kwWmIwbENsYjVnbmNhMWc3MFBYeEJ2c2E4?= =?utf-8?B?ZU9kcndWdkFLTzVGN1dkQmRha1pnWFM2WjA5YnZNajV5MWFUQ2dNcVNZeW16?= =?utf-8?B?RjluRmo3TEVzTFR5bEVBdGtsTTBZMXpacGxoUDdLbkJqTDhXanBpeFFlRDkv?= =?utf-8?B?cWRjZ1ZKMUxNSnpsaEZyaVJYc0RHdG5FeGtEcW85SFpFMFoyRXMxbVAwYnFR?= =?utf-8?B?YlFiTUtWTU5LclZlY2YrUzZ0VUMrYURkZEVrN0xxOXVxN2VZYlRYaGVSVFJ1?= =?utf-8?B?bWpscitqWForSGVmVzRkc2VUMGFRNVpHZVNmSnlUVi9Yb0JsNGUvNXBORW1B?= =?utf-8?B?b3Yrb1BLTWR4RVZ2YTdINFZnQ2dDM3F6Ym9tbXJzUzRFU1ZWdnJLNVdqNlZQ?= =?utf-8?B?N1NYeXpsd2N0dS8yd01XMjNsb2lnZUhjcWxPRlNUaTMrNVNreUZDQzdDOG9y?= =?utf-8?B?dXJIV2t0T3Myc2RWaEtMcFphRFBzeTlIZ0JRVmlJUkFPay9vYU9GR0tGbVFU?= =?utf-8?B?d0pVMmVPSlVubVI0WHZDcnhyRXNsVTNMSDF6WVFtVzcwZnl5VVlkZGhJYy9B?= =?utf-8?B?WTBneHZjbmdsZzFhNWdzQmRIYWgvT05nOFNBWDE1elIyazhsQmZFNjZTaFhw?= =?utf-8?B?dG82NGViN1ZrWWJLWFFkOG9lRjA3dDNlT1V5c1hPL2o2bkIxenorSk1mTjY5?= =?utf-8?B?cHc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 76301df8-9415-4a71-e135-08da943aff27 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2022 21:17:13.7101 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cEtUsDVqkIZHemli3VY03qJdtjUYkl2ANR4l4s7jLZATOWb/ZIY5b/mF2hzNRCmXPqGda8IJfAsuiokC0sLS03lfDp9Juc1jUwyRyQfleWY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6065 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org IDR is deprecated, and since XArray manages its own state with internal locking, it simplifies the locking on DRM side. Additionally, don't use the IRQ-safe variant, since operating on drm minor is not done in IRQ context. Signed-off-by: Micha=C5=82 Winiarski Suggested-by: Matthew Wilcox Reviewed-by: Jeffrey Hugo --- drivers/gpu/drm/drm_drv.c | 51 ++++++++++++++------------------------- 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 8214a0b1ab7f..61d24cdcd0f8 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -34,6 +34,7 @@ #include #include #include +#include =20 #include #include @@ -53,8 +54,7 @@ MODULE_AUTHOR("Gareth Hughes, Leif Delgass, Jos=C3=A9 Fon= seca, Jon Smirl"); MODULE_DESCRIPTION("DRM shared core routines"); MODULE_LICENSE("GPL and additional rights"); =20 -static DEFINE_SPINLOCK(drm_minor_lock); -static struct idr drm_minors_idr; +static DEFINE_XARRAY_ALLOC(drm_minors_xa); =20 /* * If the drm core fails to init for whatever reason, @@ -98,21 +98,19 @@ static struct drm_minor **drm_minor_get_slot(struct drm= _device *dev, static void drm_minor_alloc_release(struct drm_device *dev, void *data) { struct drm_minor *minor =3D data; - unsigned long flags; =20 WARN_ON(dev !=3D minor->dev); =20 put_device(minor->kdev); =20 - spin_lock_irqsave(&drm_minor_lock, flags); - idr_remove(&drm_minors_idr, minor->index); - spin_unlock_irqrestore(&drm_minor_lock, flags); + xa_erase(&drm_minors_xa, minor->index); } =20 +#define DRM_MINOR_LIMIT(t) ({ typeof(t) _t =3D (t); XA_LIMIT(64 * _t, 64 *= _t + 63); }) + static int drm_minor_alloc(struct drm_device *dev, unsigned int type) { struct drm_minor *minor; - unsigned long flags; int r; =20 minor =3D drmm_kzalloc(dev, sizeof(*minor), GFP_KERNEL); @@ -122,21 +120,10 @@ static int drm_minor_alloc(struct drm_device *dev, un= signed int type) minor->type =3D type; minor->dev =3D dev; =20 - idr_preload(GFP_KERNEL); - spin_lock_irqsave(&drm_minor_lock, flags); - r =3D idr_alloc(&drm_minors_idr, - NULL, - 64 * type, - 64 * (type + 1), - GFP_NOWAIT); - spin_unlock_irqrestore(&drm_minor_lock, flags); - idr_preload_end(); - + r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_MINOR_LIMIT(type)= , GFP_KERNEL); if (r < 0) return r; =20 - minor->index =3D r; - r =3D drmm_add_action_or_reset(dev, drm_minor_alloc_release, minor); if (r) return r; @@ -152,7 +139,7 @@ static int drm_minor_alloc(struct drm_device *dev, unsi= gned int type) static int drm_minor_register(struct drm_device *dev, unsigned int type) { struct drm_minor *minor; - unsigned long flags; + void *entry; int ret; =20 DRM_DEBUG("\n"); @@ -172,9 +159,12 @@ static int drm_minor_register(struct drm_device *dev, = unsigned int type) goto err_debugfs; =20 /* replace NULL with @minor so lookups will succeed from now on */ - spin_lock_irqsave(&drm_minor_lock, flags); - idr_replace(&drm_minors_idr, minor, minor->index); - spin_unlock_irqrestore(&drm_minor_lock, flags); + entry =3D xa_cmpxchg(&drm_minors_xa, minor->index, NULL, &minor, GFP_KERN= EL); + if (xa_is_err(entry)) { + ret =3D xa_err(entry); + goto err_debugfs; + } + WARN_ON(entry); =20 DRM_DEBUG("new minor registered %d\n", minor->index); return 0; @@ -187,16 +177,13 @@ static int drm_minor_register(struct drm_device *dev,= unsigned int type) static void drm_minor_unregister(struct drm_device *dev, unsigned int type) { struct drm_minor *minor; - unsigned long flags; =20 minor =3D *drm_minor_get_slot(dev, type); if (!minor || !device_is_registered(minor->kdev)) return; =20 /* replace @minor with NULL so lookups will fail from now on */ - spin_lock_irqsave(&drm_minor_lock, flags); - idr_replace(&drm_minors_idr, NULL, minor->index); - spin_unlock_irqrestore(&drm_minor_lock, flags); + xa_store(&drm_minors_xa, minor->index, NULL, GFP_KERNEL); =20 device_del(minor->kdev); dev_set_drvdata(minor->kdev, NULL); /* safety belt */ @@ -215,13 +202,12 @@ static void drm_minor_unregister(struct drm_device *d= ev, unsigned int type) struct drm_minor *drm_minor_acquire(unsigned int minor_id) { struct drm_minor *minor; - unsigned long flags; =20 - spin_lock_irqsave(&drm_minor_lock, flags); - minor =3D idr_find(&drm_minors_idr, minor_id); + xa_lock(&drm_minors_xa); + minor =3D xa_load(&drm_minors_xa, minor_id); if (minor) drm_dev_get(minor->dev); - spin_unlock_irqrestore(&drm_minor_lock, flags); + xa_unlock(&drm_minors_xa); =20 if (!minor) { return ERR_PTR(-ENODEV); @@ -1037,7 +1023,7 @@ static void drm_core_exit(void) unregister_chrdev(DRM_MAJOR, "drm"); debugfs_remove(drm_debugfs_root); drm_sysfs_destroy(); - idr_destroy(&drm_minors_idr); + WARN_ON(!xa_empty(&drm_minors_xa)); drm_connector_ida_destroy(); } =20 @@ -1046,7 +1032,6 @@ static int __init drm_core_init(void) int ret; =20 drm_connector_ida_init(); - idr_init(&drm_minors_idr); drm_memcpy_init_early(); =20 ret =3D drm_sysfs_init(); --=20 2.37.3 From nobody Mon Apr 6 03:11:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A194C6FA83 for ; Sun, 11 Sep 2022 21:17:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229643AbiIKVRe (ORCPT ); Sun, 11 Sep 2022 17:17:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37282 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229696AbiIKVRa (ORCPT ); Sun, 11 Sep 2022 17:17:30 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7B8F26AE7 for ; Sun, 11 Sep 2022 14:17:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662931049; x=1694467049; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=jywupnv9VhdgAsr31Sg4CcaOa3sOFttqYpz4TqJ9Xco=; b=lDpbpLm6WQu2qL1ZOsBZdjnW0P1Gthl1pYi5SndrR2EjG+wD5NeVItLm uGVkXn0RhWdIr+hs9HfDJYnDXoVPujhJZW6VNMJj82Vy2tHBGV/Nmnj3r WZBImf7EHbth+bXFdyrF69rDQ/Z4BQNTCTSQ63wOw2A65jCODvOSIEigW sfcPxG+aE3/JyLq6HEXlG8AFPcwXCpmxLbdPy0UvwjIdpoD7l3z4AuPFX rBy7/kqGg7QYMrPvYnKsvj+QugI+eu9MAHaj/AKH3rlWc2BUykknIxIGD 3+xsfh4y5hR0fpD42K+KOf8QNgHtBoSrjrLFrFPdKlC3d1OzDou9vJEM+ g==; X-IronPort-AV: E=McAfee;i="6500,9779,10467"; a="299092203" X-IronPort-AV: E=Sophos;i="5.93,307,1654585200"; d="scan'208";a="299092203" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Sep 2022 14:17:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,307,1654585200"; d="scan'208";a="615853524" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga002.jf.intel.com with ESMTP; 11 Sep 2022 14:17:29 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:29 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sun, 11 Sep 2022 14:17:29 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P3IJnw05UvyF6b1z7rlNFjV86DGMVGF6bCKzQscip6CFuhlJ3O0bT7uQIa7nsveZuFSg0xqK6ZMaX2tTJaoBj07rwpV6O6BvnvXX54r0dV5pLxnaScCezO5eL7orOo13++8B0KlwMxADg2BRykrhKAHNzEia8HCUyB+wNq+sOLGf0NkD+43iI2rB4Do1rXPQYnFhxw2N1Twe9dyYE7dhDSqcRarfDWZRh+brvHobngs/7rzD1Ejhu+QFOzZh84f4GJEKYiK0I7cw4iA76p6v+j0DYoxbMb1HRi/qinq+UR16dt0L/6+YnT0v5CU/stmfqRIctLJbuat+cQk0wQDUPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nWTLd9MTRbWNzjDin6e2/uKyO3adhW5rfCcTQM9KbY8=; b=dFqlCUVC/jztsAQWiLFKtnCjt9ymLW6tMT4bBY+aW+jOSO5rb7HqSZl1LwiKJFHvPdmTJEjawVSGQNHW+2Zm800/EeOIx15dm3feGafElM8E4b1TeeOlbQo0SX3NDdD8yYL999zKHXfAyeWM93vDFktnJFsUwW5hZ25OSB3ZDSLKDnkCTOAyfv1vuIJeXuwD66+caJ2gTR0YktkAMvtLdpf9Ki86/LM78NPbbAQ2vSLEg9FS8sV8WnT0fZTAhovWMu8KXFI4f2u36z1UxCgID3VU9xFydsa4/N2ejorSoBFDzn8r1AIT0DzpmEGcnwjirwxHottiaUwZj8KhXplKzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB6065.namprd11.prod.outlook.com (2603:10b6:8:60::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.20; Sun, 11 Sep 2022 21:17:18 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::5145:64b6:db32:b424]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::5145:64b6:db32:b424%5]) with mapi id 15.20.5612.022; Sun, 11 Sep 2022 21:17:18 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: , , CC: David Airlie , Daniel Vetter , "Maarten Lankhorst" , Maxime Ripard , Thomas Zimmermann , Simon Ser , Matthew Wilcox , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v5 2/3] drm: Expand max DRM device number to full MINORBITS Date: Sun, 11 Sep 2022 23:14:42 +0200 Message-ID: <20220911211443.581481-3-michal.winiarski@intel.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220911211443.581481-1-michal.winiarski@intel.com> References: <20220911211443.581481-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P191CA0083.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::24) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB6065:EE_ X-MS-Office365-Filtering-Correlation-Id: 9324ec8c-1bae-4626-ea4d-08da943b01e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5ynywRp5uHUFGYNil3RpV8p5+x20/mOjQ2lEOIZDZMHFIUwKTrF25d88QvP7HvH18d8jMV1mH5784QFTyCdi2KpuctFRXFS0nJaTHr9HHs6ZW4JbKqTkaTqgqdrnmp+lux8wOGL9LJApRpPd7YxeZ0JxeSN/HfiSJjPYiIGBD1PNVPj+ZSdfcP49UoQmi1eBpkhOUh6jezgByviYyk/mzjjrgJXNZjCgI6EF04CzoOuXt6ZSo8nsU2XzFyxUl7QSzD88SO2qfuhB4bkQTiztgqdCvdd6I0LXRciXqUT3Dc6FWYq/gKYpaWc5RJYeSy8c3d0Oi/Kn4Cm5bAoE6cFKUUbYSL1djNb3WFI00Iall+/ON4dImHUgdIFSvlNzvrAlEeUOvu1a7Rau4My0I5GzKeybjLoLLwc6U1UZFgqfnEMVpNhikopyBPWfkskXA0hy0WIx9ePArxduCds4Bhyk00x7WJLNWGiv4Xi7EShn8hbu3ThawnhChqPtsm3tLLWcB/pel47SgW+i8DUDp3fvziebIQ9pm3UwRw/yEil91wAPCn/x3mc7N658rueDWBl7emvlA3WrQdPqiPxGqUC/7S80ZVfTyvwCax8vVwBS4FA4W7dkbVq36IfMxBTqjUuL+xawBbHhXuLMYox8kEx32o6Bs3BAq63mpHl12MlOi7RLGwJLTUYWhz6d6615jLIO21Pck8FhhFYkDxqg7K8nOA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(366004)(396003)(136003)(376002)(39860400002)(186003)(6512007)(26005)(41300700001)(6506007)(83380400001)(6486002)(1076003)(478600001)(2616005)(6666004)(316002)(4326008)(8936002)(8676002)(7416002)(2906002)(82960400001)(5660300002)(38100700002)(86362001)(66556008)(66476007)(54906003)(66946007)(36756003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QUpNa0lqTDAwNVQzVnFwZmlxclBoZ1ZiZmhQc2ZqdDhMTDFKWjJtNXBTclNY?= =?utf-8?B?K1NtUG1ZQ0tpN1hENWd0WTVVSFE1RXAwSEpLWDhIaE50NEdDUDBseWlkZFJa?= =?utf-8?B?aUY2cUZ6RDIzbldFS0EyK0d6dzhIWTROMzhvRG9MemNPWVlLL2RVQXJqcEV3?= =?utf-8?B?TUkvSWlnK0F1R2JrUTE2VjVpMlBkbkdtNy9CQlJKcU5QaktHVldqcVN4Q3R0?= =?utf-8?B?by9Xb2tyQkx6VDZYZTlUR21BT0wzeUVDR2xad0oxZlRUdmUrWmNjUkhzOFN4?= =?utf-8?B?bitCbko2K0hJVG5FRWF0OE8veUxvT3hwcVF1Yzhsd2h2dEhFTklUQ3YzUFRl?= =?utf-8?B?NGlEdjAyMysrL0FBQndrQVNxZW5SdVF2MXVIcUxkU3Vwb0JNYWtjUGkybnZa?= =?utf-8?B?c0ZjNFczZUpSTWd6YmpQUUdBYU1wakNoUkZjTkplSkh6M2FNaGp3Q1RqUjRt?= =?utf-8?B?N2JSQVE3LzFERG50cXJWTmdTd3RCU1M3WVpjQWkxRDNIZG92UmsyZE1XMEJp?= =?utf-8?B?VU5KVzhPM01La1Z2NWtGMEhaZXNuenN6UTFsVVFnWmdjc0ZVREY3NjE3K2Fr?= =?utf-8?B?MWxqMFZ6UFRZRVVpVVFTczlwZmMyS3M3eGxpYXRjYzM0K2NyZUJHMTlPZ2JH?= =?utf-8?B?THlBVXhlUThwMGZxYUVJSG12Mm9VUi9IcVFYN1NtNlo4RGJuQ3lyalVvWDk5?= =?utf-8?B?MkRZR2lPK0dyeXdJYnVIVzk5YXFuT0dwS1BLREJVbGNXdmNnZ0FJTjN4NUQ0?= =?utf-8?B?bVBuZ2F0V29xVnZqS05BMkxjdGNqdExtVmg5Q0s2Wm90azVWNGFseFNmWU9l?= =?utf-8?B?SlM1R0pOQ1JkdWtYOWo0UnhObHZ4SXk2WlZZRWRLYThROXJNSWNza2I0VkF0?= =?utf-8?B?UEcxamtqZG1ZZFVSZU5vc0VZYnlWK055QWlBUVlwcG5rNDlXS2E5b2hNOE1Q?= =?utf-8?B?N1F6UmROOGpXUGtHTEtRR0liU1FaZG4zZFAxSnRsOWduT2ZpWXpOeUxvb1J0?= =?utf-8?B?aEgrTVRRQmVIaDVJUE1td2FLemNVL3I3M1czK01RNzFVak9NRG82MitrWUgx?= =?utf-8?B?M3B2UHYvTHNOTG9vWlhwV05Bamc5NGZoV3JBRnMwaEJLYlRDTDRqQTIzQ29u?= =?utf-8?B?ZHBwcm5WY0FhREZzTmVZQzRnRmorZDIycG1FcVVzamdRMnpoSGcvdzJWQzYz?= =?utf-8?B?UVR0Mm15ZjYzRWlndC9pbU85ZmR0WVZZQmxDN0RENGtpQ0lEakIzdWFrSy9E?= =?utf-8?B?YUVIdnFmSFlYMmhWcDZLVnNreFQzbklKaDh4UzNrcVZtYnNBS1pVTVlFMmRz?= =?utf-8?B?MDczU2FITGo3RGJaWVp0YWVnRFFqWnBya3RlZi9rbUhNdnJiSWJJTFZSeEtY?= =?utf-8?B?OXZCUGJramo0NTVobHQ1cWcxbUxVMXhsTVA2N1hvR2JsRkl3OXBKMEhCNFhL?= =?utf-8?B?QVFzSmdTR2ZwQ0FrUnBMZWIvc21VNnNveHVSY3ZUUDVoTWQrMnk2blUvbVNY?= =?utf-8?B?TzlNSkxjMDNGalRyTTZ1WVJtditTNVVLSHNnVkcyQUFZWjcrRjhCUnJ2N3Vq?= =?utf-8?B?U28zVGlqZ25qL3JVQnJlaElHREt6WmgzUTlZMkcranMrOEVnc1FseGNOQmQ4?= =?utf-8?B?aUh6TTAzekRSalk4cXlyamtqRUU5UmNmSlU3ZGZpRmFGajQwcFZTNlNvNXBk?= =?utf-8?B?SVp0dE9iVVdyRWlOajhyT1JZV2Qxb04xOU1KMktBdGRrN21xOCtTQ2VxbXVh?= =?utf-8?B?MDRVT1F4YlBvUklXUmNmWWU4OHZybTlWWG9mS2FRb25SNFplZm1iQ0xXRy83?= =?utf-8?B?SloyVjZKNlBNQ2x5cUY0RWVpQ1NGMExVVm1UWkh4OEFMWUtYdXZJWldEWWF2?= =?utf-8?B?UmFUTVRTN0dXbEhCUklIMEFOd0NnaTA4K3Vzbjg5VXBBSlpsb0FSK09reEZ2?= =?utf-8?B?eUhLc0tObnRaSFZ1U3o0THRXNW9idHpXc2NjSTB2bzVPTEVUU3BrcEp4VWpR?= =?utf-8?B?WGNEck13M29qblBjOXFQbWV3bC8zcndEQ21IaXZ1ZVRKWnN5WWpMTmNCQk9v?= =?utf-8?B?R1dhYTRPWFdmWUoxR2NPNndVY0RRRmYxMGpBVHQ4ZGFtZlBnbUc1eVppWjZ2?= =?utf-8?B?UGhvcWx4YmE2YTVWYWFqRlFZVHV0Y05BNzN1TW90Wkh2bi9CSThvb0wxVTZh?= =?utf-8?B?UGc9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 9324ec8c-1bae-4626-ea4d-08da943b01e4 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2022 21:17:18.3044 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /p+2gu7tO/gOmcWpzcjrAwBNZfIAcozEUB179dWLw3BQOB66jRj54/pF9AGHXKXFBe41OXc3amiAS9Htu4CP1WGnOX4Bd/Bst1y8/5wcn10= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6065 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 >=3D 192, we're allocating minors dynamically on a first-come, first-served basis. Signed-off-by: Micha=C5=82 Winiarski --- drivers/gpu/drm/drm_drv.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 61d24cdcd0f8..3718bd6bbef6 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -106,7 +106,8 @@ static void drm_minor_alloc_release(struct drm_device *= dev, void *data) xa_erase(&drm_minors_xa, minor->index); } =20 -#define DRM_MINOR_LIMIT(t) ({ typeof(t) _t =3D (t); XA_LIMIT(64 * _t, 64 *= _t + 63); }) +#define DRM_LEGACY_MINOR_LIMIT(t) ({ typeof(t) _t =3D (t); XA_LIMIT(64 * _= t, 64 * _t + 63); }) +#define DRM_MINOR_LIMIT XA_LIMIT(192, (1 << MINORBITS) - 1) =20 static int drm_minor_alloc(struct drm_device *dev, unsigned int type) { @@ -120,7 +121,15 @@ static int drm_minor_alloc(struct drm_device *dev, uns= igned int type) minor->type =3D type; minor->dev =3D dev; =20 - r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_MINOR_LIMIT(type)= , GFP_KERNEL); + /* + * 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 ar= e control nodes, + * and 128-191 are render nodes. + * After reaching the limit, we're allocating minors dynamically - first-= come, first-serve. + */ + r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_LEGACY_MINOR_LIMI= T(type), GFP_KERNEL); + if (r =3D=3D -EBUSY) + r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_MINOR_LIMIT, GFP= _KERNEL); if (r < 0) return r; =20 --=20 2.37.3 From nobody Mon Apr 6 03:11:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1EABEC6FA8A for ; Sun, 11 Sep 2022 21:17:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229738AbiIKVRm (ORCPT ); Sun, 11 Sep 2022 17:17:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229479AbiIKVRb (ORCPT ); Sun, 11 Sep 2022 17:17:31 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41F8D26AEA for ; Sun, 11 Sep 2022 14:17:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662931051; x=1694467051; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=Eni6pit1misnqHqlJtjektfnPpxUovniHQMbrNEZkCI=; b=ehnec3ECTB1eoAfw07YQFyhEQqMIo/RIFxp4hP3ywORSoEVxkkwcKpFN hHY6EJdmkDQGxJZp1LyjTqT7wHNLZdQe4dHK2bgeHg7omukiSB+e5Xets Xt1Ku8JVInbEZYNRfewIaAlg5m0njBSlhB8CV4+oAL1EldDH0AjFa5/+c i0I/TwD3uj9pLCkhQaxUTmlXqt+0YoLQOdbBcVI2pPGhheS4kZ8Y9A9Q0 OCbOxx0Fb0cHYzRS3RauVvj63otwyeCCiPPvgayonWtUkip5m0Ani/QWz lc3NvAs3F5s6e5CJGACNw5BBDL4V5HD+9zsRpb09mm/aX5Jkg4rAjgQaD w==; X-IronPort-AV: E=McAfee;i="6500,9779,10467"; a="295337259" X-IronPort-AV: E=Sophos;i="5.93,307,1654585200"; d="scan'208";a="295337259" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Sep 2022 14:17:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,307,1654585200"; d="scan'208";a="791356689" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga005.jf.intel.com with ESMTP; 11 Sep 2022 14:17:30 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:30 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:29 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Sun, 11 Sep 2022 14:17:29 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Sun, 11 Sep 2022 14:17:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=exgtPUFVWCBaRTKnXWxN3Z0W7nCfMxdlxnYATJ/5H/2zNr1p/U0qn04P2GZ61tuo5HbHp3DyV7jczwhaMT83GQoxCEZ0o3yTPvqgxEWnzBc7Ay87jVHIAGqNh+XnojUMNun53xRqwj3y3+aYf/8NsTdvFGMFnXeVd+z624BOVnmS35jjiO3ysrvTv3Y4h0vvYb4TpeLTU3Q2mgKfByh2FfhdE0eMcbDFuuvt8u9lqaTaD5mWITdGlz6NZum/BY9USmlfsJGROLwWrtTuaMyVw4kRTIIGCtU0OiRTZqEfMecM3PXIS2p2d3mhvTfC+tIon1uUZEwocHt2/a2w+so9Ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BURZsTUp8t4+hgi3/wRuiapcI4tA1G2tUY+fOYCxK7w=; b=fvASL/vE52tLMvfVGpi41mAO8Ly4w5BrNAo1lW8FW2FG1U8T7p2uYmkqWQPCWM7LLR8IXcNlvXYizafFD55Kg2ZMQiPRXnY+khwchFJKeA7Su9uD5UtbrF7TD3lTlCvJHN8sSvsDcYgtU9gAmtWmXDC787amtpqyeVbG6E5myQ3vj7LPzp1KyPIFrjUaozgGx9JF6HFRLHhK1BAUu9LFG8clKgSoREoib6qKMvIwnNvsHH4QFx7F3fBdl0GxzQze0lZlwlVVU3KLDaGdvkjEjGxTNxNXXCb3WG9Au9kl6eUnecj3OdEw53tsTUqyuS8h2yfr0B7uVbzyAP8s5CGULg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by DM4PR11MB6065.namprd11.prod.outlook.com (2603:10b6:8:60::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.20; Sun, 11 Sep 2022 21:17:23 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::5145:64b6:db32:b424]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::5145:64b6:db32:b424%5]) with mapi id 15.20.5612.022; Sun, 11 Sep 2022 21:17:23 +0000 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= To: , , CC: David Airlie , Daniel Vetter , "Maarten Lankhorst" , Maxime Ripard , Thomas Zimmermann , Simon Ser , Matthew Wilcox , =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v5 3/3] drm: Introduce skip_legacy_minors modparam Date: Sun, 11 Sep 2022 23:14:43 +0200 Message-ID: <20220911211443.581481-4-michal.winiarski@intel.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220911211443.581481-1-michal.winiarski@intel.com> References: <20220911211443.581481-1-michal.winiarski@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR3P281CA0111.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::14) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|DM4PR11MB6065:EE_ X-MS-Office365-Filtering-Correlation-Id: 10a2f41a-644d-4cb3-4a88-08da943b04a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1ufxRGNyPea//rp/OTtiLb2TfdPosKT8gGX7yeSKabRKJD9V/ishLR12w1sBck2FqpWefKddwbHEzDYrty7HN4beOUd38gMkae3HlTIlxICnawSJHnfVSB6MpoWsOzqWjTGbjs7xQKRDBLBuKH2k2vqMfHA2EDtelks+myVtn2zalDQNDrRuDwhFIbFVODqvuGDHEBXVA4VLtWZsbOMXfiilGNeOy7wg35jWE4Dr2f9slfsf02J6/9yc5o8DKjuYe/o+6weqy/rP5Z0SyFqPfXq9kKtC6FPtgtogAfKWTrTSWZn8MkxXY2XxJlGh1IUaX2u6dCoygX6546Os5vKPfKyxLej1tLwJ7q1ttC6IIBs/sAhrDCkmx/Zgw0F2B+tlG69Pp4X/7bEr/Lq+DXCD9gx5bO5TILxDorU2boa3hiQNM6O1OKAfj+Zq+2+bsPDJwyG8QRwJhtva+9YX4Pxxc+6yhLoChemwAxl3ywgscZ2GgtNuXcVpuwQfaouAl6yhCIsAAd4wNTgxoItOm6JSdzOOqjQmlUdXsdp0mUwMwUJW/b3iUcw8ibc/+smt4JOYyelOUSDQ5yVYijCaPTUuomfCp2alDsEgKMJdG3UGk3yb7uYRQ6PzOircekW21P34uxXu8Fp4nwz8dH26OXe3fzKfeMyOh+xtSqa60Iep1o6IbvGHLjEzpTRisabhA9qNrprN95qyovBQVmf30cqzYg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(366004)(396003)(136003)(376002)(39860400002)(186003)(6512007)(26005)(41300700001)(6506007)(83380400001)(6486002)(1076003)(478600001)(2616005)(6666004)(316002)(4326008)(8936002)(8676002)(7416002)(2906002)(82960400001)(5660300002)(38100700002)(86362001)(66556008)(66476007)(54906003)(66946007)(36756003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bFZuakEyZG9NN0VhdlhVdjFQWURrd2UzbWVzdGFRQWJtVDMxK3JwQ3BTVGdI?= =?utf-8?B?WDFWanJJVFp2L3VLNFFRRWxlV2ZER3RtY0dTMGdsc0dGS2paR0FjSkZ0YUFC?= =?utf-8?B?djV1Mlp1VnV0L1IySC9PYlpKbFN6VHlJZ1ZtUjVVU2VJQW5MeUEwdU5iTEpu?= =?utf-8?B?WmRZT0s1aC82MlkydmRoMktrMGN5UkRabEk2cDVqcTFRYmhxZlVhSUp5bzla?= =?utf-8?B?OVZqSlprcXk4dnJTZmpBNGFLaTBJK3Z0OEhrODc0aWZFUTU5T3p2bVNKR29J?= =?utf-8?B?YmdWcjZFZDlkM1VsNXVRL3ZiQndxUzZIYW1uckJMcXlWd1NhMVM4cUpPSm04?= =?utf-8?B?ZEpLdFk4TXdDL1VLVkZQZjRFWXNrTTFQZ0NGS0Izd1pyT1pRcGQ0OUNCS1pi?= =?utf-8?B?czd5dm55aXJtMkR2c2c4WG16TmxjeXN1U3llaWV0SEhoYy9hSkFkNXgrOUxG?= =?utf-8?B?RmljOWxZclhUS1BlZ0Z0SythSm9wK0I5eUdBYTVPdG1FcFplaGdzOEUrRlNY?= =?utf-8?B?VVdFMHAwc25ScGhiTHRqdmg1bjNva29hVjlyUnlDRFd4WC9qTVZzVlIxRmJC?= =?utf-8?B?Tlk0aHNTZDR3UC9vbEJGaGpUMWQ0M2FFc2xUbHQ2NmN1bmswTXZ2ZnhsekVi?= =?utf-8?B?b1NaNXo3Sk40RUhRVzZQUXJrdjhiS1N1RnRJdUpHWkJaZ1RJV3ZsQ3F0UVhL?= =?utf-8?B?OWNlb296cDU2UzM2b0R1Rnd2U0h3QXdiRVh6WlZaTUVCNUVEUk9IVC9kQTlr?= =?utf-8?B?b1Y5NHFYMmtGUVc2Rk93anhRZldzWHgvMjdwV2pCODY2YlpLcDRxdzBkVUtr?= =?utf-8?B?RGFZUnJ5bDdQYy91eXBKVnNTVjRFaWlWNkVvWXZQSnJ2R0tucm1zTFV3TnNR?= =?utf-8?B?SytkeXdFNXg3VkhUZC9kaitaYVZKTWpWcUhoVU1KOTl0ZWhCS0NZSXJzNDQy?= =?utf-8?B?SmV4aGNjbXY3a1BqRlU3MFg2N3UwTEdCWVZJQ2tybG95bkUxM1N6bVN0aVpv?= =?utf-8?B?WDBFT2FsN0NSOEVHMWtvY2dVeW8wR0NMTklPcmdXWjJMVFF3dXVQclY4OUxu?= =?utf-8?B?ZktMZ0orSDZ3Tkt0VTRCckRTNUlpNFgyaGgvYktiM3h1WFN6VExBRlBRNlJl?= =?utf-8?B?ZHFQNXNSUUlUNkMxakVZanlrUS9UNkFFNnRXVkJsMWQvbEY5L2F5Nk9WWTc3?= =?utf-8?B?QWZndVptWVFicE56UVl1enc3bCtsMmRTb3JoVk90M0N1Tk42b21BWEl2SFBh?= =?utf-8?B?cnZ2SHBYM3BxUkV2M0VlYSt0dnNkRW5RZkZGOWpCelJJTVN2N1FCaitUekRn?= =?utf-8?B?SjNKYWwrSklDN0dUT1Nsa3pwRFIrdEswbEFORW9KNUJLblFTZ2VTV3Y2dEl0?= =?utf-8?B?a2RZdlIxQVVBakNNbWFjeU14ZHZPc25yNjhXSWt0RURIWElkZkh6YlRRZVdk?= =?utf-8?B?L2NzZzRieVVDUjNROXg3bUVKRWJKNktvaFNDbS91RmRBeXZjZmRYTFpCMmUy?= =?utf-8?B?TjlKQ1lGdXRYKzNINjVIUHRGYy84ZG4razVMRkNkRXZkQ1l5RTNrY3NwcStQ?= =?utf-8?B?bldXMy9rTnA5dmE0R0gyaitlY21nWnc3cVl3eS9xL2UzWVM3SDRWSk4yYlRo?= =?utf-8?B?SmEyY2hwcGlkUGI3MjlMK2NyRDU1OHFEeDVNYWtBSlpseE1seVZFdkkzb2xI?= =?utf-8?B?RGhhZGFpMkozMkhmRStydWZuc2E4Wm0zakE2TnZoVkxtRUpRNWhwSjE0SGsy?= =?utf-8?B?eXdITElHMHVtMHIzKzBIQ2I3ZlEya1ZGTHNUVGM1NmxkUVI2aXRDQ0d6Wll6?= =?utf-8?B?T01pRFAyOHM5WDhSNGxybXVhTjJXNlEyUS9SNFZFVWRsMmNpd0xoRDhFT1R4?= =?utf-8?B?Wi9hTEVYeUJ0NGxlTndEQS91WE0yQmpXWllPOStMMjdxdjZhN09ibGthSGNW?= =?utf-8?B?N2hQblRRck84R2R6WC8ydHFDRkluQUZBaTlxOXM2UGs4RGxRdlJRQUNXZmV4?= =?utf-8?B?WHJGOFhGVzBBZTl2S0tRODVYdENHYzlYTS9lTFBpWm93RnBxMEhWVTZKYm9i?= =?utf-8?B?bkVka1J0UncvUGhsODRVWk5jdTJQbk1lbkVyc2tLeG9mU1dwSlQwbThDWk03?= =?utf-8?B?TzY5YjYvTk1oNGpPWHdLWHY0Ty90ZkdueEo0aHBaTlRNVEpTRHdkMVpTeGF5?= =?utf-8?B?d0E9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 10a2f41a-644d-4cb3-4a88-08da943b04a9 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2022 21:17:22.9468 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tOXhJsMdUogiZMFfGmOlcPou/Nen73LTq+OSbEpGcWyP7Mgl9a2J/VUa3K6yPt0zGkWU6XcLjtrMt/x9Ral/DRrW76k7VTjbebrB4mXUPYc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6065 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While there is support for >64 DRM devices on kernel side, existing userspace may still have some hardcoded assumptions and it's possible that it will require changes to be able to use more than 64 devices. Add a modparam to simplify testing and development of >64 devices support on userspace side by allocating minors from the >=3D192 range (without the need of having >64 physical devices connected). Signed-off-by: Micha=C5=82 Winiarski --- drivers/gpu/drm/drm_drv.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 3718bd6bbef6..368408997fed 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -56,6 +56,11 @@ MODULE_LICENSE("GPL and additional rights"); =20 static DEFINE_XARRAY_ALLOC(drm_minors_xa); =20 +static bool skip_legacy_minors; +module_param_unsafe(skip_legacy_minors, bool, 0400); +MODULE_PARM_DESC(skip_legacy_minors, + "Don't allocate minors in 0-192 range. This can be used for testing use= rspace support for >64 drm devices (default: false)"); + /* * If the drm core fails to init for whatever reason, * we should prevent any drivers from registering with it. @@ -112,7 +117,7 @@ static void drm_minor_alloc_release(struct drm_device *= dev, void *data) static int drm_minor_alloc(struct drm_device *dev, unsigned int type) { struct drm_minor *minor; - int r; + int r =3D -EBUSY; =20 minor =3D drmm_kzalloc(dev, sizeof(*minor), GFP_KERNEL); if (!minor) @@ -127,7 +132,8 @@ static int drm_minor_alloc(struct drm_device *dev, unsi= gned int type) * and 128-191 are render nodes. * After reaching the limit, we're allocating minors dynamically - first-= come, first-serve. */ - r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_LEGACY_MINOR_LIMI= T(type), GFP_KERNEL); + if (!skip_legacy_minors) + r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_LEGACY_MINOR_LIM= IT(type), GFP_KERNEL); if (r =3D=3D -EBUSY) r =3D xa_alloc(&drm_minors_xa, &minor->index, NULL, DRM_MINOR_LIMIT, GFP= _KERNEL); if (r < 0) --=20 2.37.3