Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp386755pxb; Wed, 3 Nov 2021 05:59:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwkUbFExb/GrD1psO6W1C09bkXDTHc8tapyZ8Nj7sn2hjpoGOmHK3bQkZ21tNcNAVOX2IQm X-Received: by 2002:a05:6402:10c5:: with SMTP id p5mr59760049edu.150.1635944375521; Wed, 03 Nov 2021 05:59:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635944375; cv=none; d=google.com; s=arc-20160816; b=GwpS7L0P4UUtQkdeY+n0g1zEHcntdHTj4Sbo4XtKvUE5Tr6UlGMvXswW9FLImXR+7/ LZekXiKpB/a8qHsqMGj/AgFmM331FKIpQCw3kXpqv+tSR6LUAMAvWJ6zyc/idhFq/mHn CR///9v5jE6GBQsI6nynuIJawNOhM038ZkFoxngvZ8zwQe9ulP+7RShr7VLCKZvYD4LT ocdE4UdW7iBcbvdTpb5FbJU9eBJUNW6NwXDsdt7eeu0SGw6LrlNQ3WddwkB0hBTWj9ud xLh5lfBiHkLvZ7Op2TAf1uOiVA53c7epEYbWHQH1F6/wRakrZs4Cqo5Zz4zBY9rV5vtf 2oCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:references:organization:in-reply-to:subject:cc:to :from; bh=hPrCpJ0wyrQy9vfE6qlTlGmkGj45xDw03UX2187wyrQ=; b=E5jbptBXSSZQzJ4eFPWoUnk683N4ANV+FFsrGjVliYOKIQTNNmWQFyXglzMYGY7HSY ln56Ct8W6PV9tixkmfCxdvxL0ZM9TSZg0Jhe8QQlHGgM98OJuEtknOUeEgXKQ4LMPt6d P3NpEvhpRmr80BJGeotIRxlEc4eErjMv+0E513HJ2D2D5bVHQf1UWFz+Pw1xU4uRvFsw 37pClF8ZzUQ4opsLRsDm5eNdbmO95AyY3kawzpyJQiQN+P0/A0hu7zsI2k7OCipcFqLN MbVTBUhUTGWNneR2pW1HT7Jz3NgvtJDB8eWbT6EIxKkgrRoXvvCQhqYGg5sFaWt1BCa6 nA0A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s7si3910881edd.286.2021.11.03.05.59.11; Wed, 03 Nov 2021 05:59:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231131AbhKCM7Y convert rfc822-to-8bit (ORCPT + 99 others); Wed, 3 Nov 2021 08:59:24 -0400 Received: from mga17.intel.com ([192.55.52.151]:47805 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230152AbhKCM7X (ORCPT ); Wed, 3 Nov 2021 08:59:23 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10156"; a="212239588" X-IronPort-AV: E=Sophos;i="5.87,205,1631602800"; d="scan'208";a="212239588" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2021 05:56:46 -0700 X-IronPort-AV: E=Sophos;i="5.87,205,1631602800"; d="scan'208";a="501045631" Received: from bmagdala-mobl.ger.corp.intel.com (HELO localhost) ([10.251.215.42]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Nov 2021 05:56:38 -0700 From: Jani Nikula To: Javier Martinez Canillas , linux-kernel@vger.kernel.org Cc: Peter Robinson , Michel =?utf-8?Q?D=C3=A4nzer?= , Thomas Zimmermann , Pekka Paalanen , Daniel Vetter , Neal Gompa , Javier Martinez Canillas , Alex Deucher , Ben Skeggs , Chia-I Wu , Christian =?utf-8?Q?K=C3=B6nig?= , Daniel Vetter , Dave Airlie , David Airlie , Gerd Hoffmann , Greg Kroah-Hartman , Gurchetan Singh , Hans de Goede , Joonas Lahtinen , Maarten Lankhorst , Maxime Ripard , "Pan\, Xinhui" , Rodrigo Vivi , VMware Graphics , Zack Rusin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-fbdev@vger.kernel.org, nouveau@lists.freedesktop.org, spice-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org Subject: Re: [RESEND PATCH 2/5] drm: Move nomodeset kernel parameter handler to the DRM subsystem In-Reply-To: <20211103122809.1040754-3-javierm@redhat.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20211103122809.1040754-1-javierm@redhat.com> <20211103122809.1040754-3-javierm@redhat.com> Date: Wed, 03 Nov 2021 14:56:36 +0200 Message-ID: <87tugtbdob.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 03 Nov 2021, Javier Martinez Canillas wrote: > The "nomodeset" kernel cmdline parameter is handled by the vgacon driver > but the exported vgacon_text_force() symbol is only used by DRM drivers. > > It makes much more sense for the parameter logic to be in the subsystem > of the drivers that are making use of it. Let's move that to DRM. > > Suggested-by: Daniel Vetter > Signed-off-by: Javier Martinez Canillas > --- > > drivers/gpu/drm/Makefile | 2 ++ > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 +-- > drivers/gpu/drm/ast/ast_drv.c | 1 - > drivers/gpu/drm/drm_nomodeset.c | 26 +++++++++++++++++++++++++ > drivers/gpu/drm/i915/i915_module.c | 2 -- > drivers/gpu/drm/mgag200/mgag200_drv.c | 1 - > drivers/gpu/drm/nouveau/nouveau_drm.c | 1 - > drivers/gpu/drm/qxl/qxl_drv.c | 1 - > drivers/gpu/drm/radeon/radeon_drv.c | 1 - > drivers/gpu/drm/tiny/bochs.c | 1 - > drivers/gpu/drm/tiny/cirrus.c | 1 - > drivers/gpu/drm/vboxvideo/vbox_drv.c | 1 - > drivers/gpu/drm/virtio/virtgpu_drv.c | 1 - > drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 1 - > drivers/video/console/vgacon.c | 21 -------------------- > include/drm/drm_mode_config.h | 6 ++++++ > include/linux/console.h | 6 ------ > 17 files changed, 35 insertions(+), 41 deletions(-) > create mode 100644 drivers/gpu/drm/drm_nomodeset.c > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile > index 1c41156deb5f..0e2d60ea93ca 100644 > --- a/drivers/gpu/drm/Makefile > +++ b/drivers/gpu/drm/Makefile > @@ -33,6 +33,8 @@ drm-$(CONFIG_DRM_PRIVACY_SCREEN) += drm_privacy_screen.o drm_privacy_screen_x86. > > obj-$(CONFIG_DRM_DP_AUX_BUS) += drm_dp_aux_bus.o > > +obj-y += drm_nomodeset.o This is a subtle functional change. With this, you'll always have __setup("nomodeset", text_mode) builtin and the parameter available. And using nomodeset will print out the pr_warn() splat from text_mode(). But removing nomodeset will have no impact if CONFIG_VGA_CONSOLE=n as that leads to vgacon_text_force() always returning false. To not make functional changes, this should be: obj-$(CONFIG_VGA_CONSOLE) += drm_nomodeset.o Now, going with the cleanup in this series, maybe we should make the functional change, and break the connection to CONFIG_VGA_CONSOLE altogether, also in the header? (Maybe we'll also need a proxy drm kconfig option to only have drm_modeset.o builtin when CONFIG_DRM != n.) > + > drm_cma_helper-y := drm_gem_cma_helper.o > obj-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_cma_helper.o > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index c718fb5f3f8a..2680a2aaa877 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -31,7 +31,6 @@ > #include "amdgpu_drv.h" > > #include > -#include > #include > #include > #include > @@ -2515,7 +2514,7 @@ static int __init amdgpu_init(void) > int r; > > if (vgacon_text_force()) { > - DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n"); > + DRM_ERROR("amdgpu kernel modesetting disabled.\n"); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c > index 86d5cd7b6318..048be607b182 100644 > --- a/drivers/gpu/drm/ast/ast_drv.c > +++ b/drivers/gpu/drm/ast/ast_drv.c > @@ -26,7 +26,6 @@ > * Authors: Dave Airlie > */ > > -#include > #include > #include > > diff --git a/drivers/gpu/drm/drm_nomodeset.c b/drivers/gpu/drm/drm_nomodeset.c > new file mode 100644 > index 000000000000..1ac9a8d5a8fe > --- /dev/null > +++ b/drivers/gpu/drm/drm_nomodeset.c > @@ -0,0 +1,26 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +#include > +#include > + > +static bool vgacon_text_mode_force; > + > +bool vgacon_text_force(void) > +{ > + return vgacon_text_mode_force; > +} > +EXPORT_SYMBOL(vgacon_text_force); > + > +static int __init text_mode(char *str) > +{ > + vgacon_text_mode_force = true; > + > + pr_warn("You have booted with nomodeset. This means your GPU drivers are DISABLED\n"); > + pr_warn("Any video related functionality will be severely degraded, and you may not even be able to suspend the system properly\n"); > + pr_warn("Unless you actually understand what nomodeset does, you should reboot without enabling it\n"); > + > + return 1; > +} > + > +/* force text mode - used by kernel modesetting */ > +__setup("nomodeset", text_mode); > diff --git a/drivers/gpu/drm/i915/i915_module.c b/drivers/gpu/drm/i915/i915_module.c > index c7507266aa83..14a59226519d 100644 > --- a/drivers/gpu/drm/i915/i915_module.c > +++ b/drivers/gpu/drm/i915/i915_module.c > @@ -4,8 +4,6 @@ > * Copyright © 2021 Intel Corporation > */ > > -#include > - > #include "gem/i915_gem_context.h" > #include "gem/i915_gem_object.h" > #include "i915_active.h" > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c > index 6b9243713b3c..685e766db6a4 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c > @@ -6,7 +6,6 @@ > * Dave Airlie > */ > > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c > index 1f828c9f691c..029997f50d1a 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -22,7 +22,6 @@ > * Authors: Ben Skeggs > */ > > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c > index fc47b0deb021..3cd6bd9f059d 100644 > --- a/drivers/gpu/drm/qxl/qxl_drv.c > +++ b/drivers/gpu/drm/qxl/qxl_drv.c > @@ -29,7 +29,6 @@ > > #include "qxl_drv.h" > > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index b74cebca1f89..9b606c1b11ec 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -31,7 +31,6 @@ > > > #include > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c > index 2ce3bd903b70..04333f78be55 100644 > --- a/drivers/gpu/drm/tiny/bochs.c > +++ b/drivers/gpu/drm/tiny/bochs.c > @@ -1,6 +1,5 @@ > // SPDX-License-Identifier: GPL-2.0-or-later > > -#include > #include > > #include > diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c > index 4611ec408506..8bd674f0d682 100644 > --- a/drivers/gpu/drm/tiny/cirrus.c > +++ b/drivers/gpu/drm/tiny/cirrus.c > @@ -16,7 +16,6 @@ > * Copyright 1999-2001 Jeff Garzik > */ > > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c > index a6c81af37345..e6d983121d0b 100644 > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c > @@ -7,7 +7,6 @@ > * Michael Thayer * Hans de Goede > */ > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c > index 749db18dcfa2..cd4c170236f1 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c > @@ -27,7 +27,6 @@ > */ > > #include > -#include > #include > #include > #include > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c > index ab9a1750e1df..fcc4b5a7f639 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c > @@ -25,7 +25,6 @@ > * > **************************************************************************/ > > -#include > #include > #include > #include > diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c > index ef9c57ce0906..d4320b147956 100644 > --- a/drivers/video/console/vgacon.c > +++ b/drivers/video/console/vgacon.c > @@ -97,30 +97,9 @@ static int vga_video_font_height; > static int vga_scan_lines __read_mostly; > static unsigned int vga_rolled_over; /* last vc_origin offset before wrap */ > > -static bool vgacon_text_mode_force; > static bool vga_hardscroll_enabled; > static bool vga_hardscroll_user_enable = true; > > -bool vgacon_text_force(void) > -{ > - return vgacon_text_mode_force; > -} > -EXPORT_SYMBOL(vgacon_text_force); > - > -static int __init text_mode(char *str) > -{ > - vgacon_text_mode_force = true; > - > - pr_warn("You have booted with nomodeset. This means your GPU drivers are DISABLED\n"); > - pr_warn("Any video related functionality will be severely degraded, and you may not even be able to suspend the system properly\n"); > - pr_warn("Unless you actually understand what nomodeset does, you should reboot without enabling it\n"); > - > - return 1; > -} > - > -/* force text mode - used by kernel modesetting */ > -__setup("nomodeset", text_mode); > - > static int __init no_scroll(char *str) > { > /* > diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h > index 48b7de80daf5..e1d2042a7b77 100644 > --- a/include/drm/drm_mode_config.h > +++ b/include/drm/drm_mode_config.h > @@ -969,4 +969,10 @@ static inline int drm_mode_config_init(struct drm_device *dev) > void drm_mode_config_reset(struct drm_device *dev); > void drm_mode_config_cleanup(struct drm_device *dev); > > +#ifdef CONFIG_VGA_CONSOLE > +extern bool vgacon_text_force(void); > +#else > +static inline bool vgacon_text_force(void) { return false; } > +#endif > + As said, maybe the CONFIG_VGA_CONSOLE ifdef should be dropped. Also, this seems like a completely arbitrary choice of header to place this. BR, Jani. > #endif > diff --git a/include/linux/console.h b/include/linux/console.h > index 20874db50bc8..d4dd8384898b 100644 > --- a/include/linux/console.h > +++ b/include/linux/console.h > @@ -217,12 +217,6 @@ extern atomic_t ignore_console_lock_warning; > #define VESA_HSYNC_SUSPEND 2 > #define VESA_POWERDOWN 3 > > -#ifdef CONFIG_VGA_CONSOLE > -extern bool vgacon_text_force(void); > -#else > -static inline bool vgacon_text_force(void) { return false; } > -#endif > - > extern void console_init(void); > > /* For deferred console takeover */ -- Jani Nikula, Intel Open Source Graphics Center