Messages in this thread | | | Date | Wed, 15 Dec 2021 09:31:06 +0100 | Subject | Re: [PATCH 00/60] drm: Make all drivers to honour the nomodeset parameter | From | Thomas Zimmermann <> |
| |
Hi Javier,
nothing wrong with your patches, but I'd like to propose slightly differnt solution.
For many USB drivers, you put the drm_firmware_drivers_only() call into the probe function. For registering, these drivers use module_usb_driver(), which expands to generic device-register functions.
I'd like to propose a similar macro for DRM drivers that includes the test for drm_firmware_drivers_only().
In drm_drv.h :
#if defined(USB) static int drm_usb_register(struct usb_driver *usb) { if (drm_firmware_drivers_only()) return -ENODEV; return usb_register_driver(usb); } #define drm_module_usb_driver(__usb) module_driver(drm_usb_register, usb_deregister) #endif
In each of the USB-based DRM drivers, replace module_usb_driver with drm_module_usb_driver.
And then there's PCI [3] and platform drivers, [4] which can be handled similarly. Many PCI drivers open-code the module init and device registering with the driver-specific enable parameter. Maybe adding a driver-specific register function would make sense.
Best regards Thomas
[1] https://elixir.bootlin.com/linux/v5.15.8/source/include/linux/usb.h#L1306 [2] https://elixir.bootlin.com/linux/v5.15.8/source/include/linux/device/driver.h#L258 [3] https://elixir.bootlin.com/linux/v5.15.8/source/include/linux/pci.h#L1453 [4] https://elixir.bootlin.com/linux/v5.15.8/source/include/linux/platform_device.h#L251
Am 15.12.21 um 01:59 schrieb Javier Martinez Canillas: > The nomodeset kernel command line parameter is used to prevent the KMS/DRM > drivers to be registered/probed. But only a few drivers implement support > for this parameter and most DRM drivers would just ignore it. > > This (huge) patch series makes all DRM drivers to honour this parameter. It > is posted as separate patches to make easier for drivers maintainers to ack > or pick them independently at their own pace. > > Patches are quite trivial and just add an if (drm_firmware_drivers_only()) > check and return -ENODEV if that's true. The condition is checked as early > as possible, that is in the module_init handler for drivers that have one > or in the probe function for drivers that are using the module_*_driver() > macros and don't have their own module init function. > > I included all the DRM drivers that think makes sense. I only left the vc4 > and v3d drivers, that Maxime is already handling in another patch series > and the vgem, vkms and simpledrm drivers that should ignore the param IMO. > > I've built tested with 'make allmodconfig && make M=drivers/gpu/drm/', but > only booted in a few devices with and without nomodeset in the cmdline. So > testing and reviewing for all the drivers would be highly appreciated. > > Best regards, > Javier > > > Javier Martinez Canillas (60): > drm/komeda: Add support for the nomodeset kernel parameter > drm/arm/hdlcd: Add support for the nomodeset kernel parameter > drm/malidp: Add support for the nomodeset kernel parameter > drm/armada: Add support for the nomodeset kernel parameter > drm/aspeed: Add support for the nomodeset kernel parameter > drm/atmel-hlcdc: Add support for the nomodeset kernel parameter > drm/etnaviv: Add support for the nomodeset kernel parameter > drm/exynos: Add support for the nomodeset kernel parameter > drm/fsl-dcu: Add support for the nomodeset kernel parameter > drm/gma500: Add support for the nomodeset kernel parameter > drm/gud: Add support for the nomodeset kernel parameter > drm/hisilicon/hibmc: Add support for the nomodeset kernel parameter > drm/hisilicon/kirin: Add support for the nomodeset kernel parameter > drm/hyperv: Add support for the nomodeset kernel parameter > drm/i810: Add support for the nomodeset kernel parameter > drm/imx/dcss: Add support for the nomodeset kernel parameter > drm/imx: Add support for the nomodeset kernel parameter > drm/ingenic: Add support for the nomodeset kernel parameter > drm/kmb: Add support for the nomodeset kernel parameter > drm/lima: Add support for the nomodeset kernel parameter > drm/mcde: Add support for the nomodeset kernel parameter > drm/mediatek: Add support for the nomodeset kernel parameter > drm/meson: Add support for the nomodeset kernel parameter > drm/mga: Add support for the nomodeset kernel parameter > drm/msm: Add support for the nomodeset kernel parameter > drm: mxsfb: Add support for the nomodeset kernel parameter > drm/omap: Add support for the nomodeset kernel parameter > drm/panel: ilitek-ili9341: Add support for the nomodeset kernel > parameter > drm/panfrost: Add support for the nomodeset kernel parameter > drm/pl111: Add support for the nomodeset kernel parameter > drm/r128: Add support for the nomodeset kernel parameter > drm: rcar-du: Add support for the nomodeset kernel parameter > drm/rockchip: Add support for the nomodeset kernel parameter > drm/savage: Add support for the nomodeset kernel parameter > drm/shmobile: Add support for the nomodeset kernel parameter > drm/sis: Add support for the nomodeset kernel parameter > drm/sprd: Add support for the nomodeset kernel parameter > drm/sti: Add support for the nomodeset kernel parameter > drm/stm: Add support for the nomodeset kernel parameter > drm/sun4i: Add support for the nomodeset kernel parameter > drm/tdfx: Add support for the nomodeset kernel parameter > drm/tegra: Add support for the nomodeset kernel parameter > drm/tidss: Add support for the nomodeset kernel parameter > drm/tilcdc: Add support for the nomodeset kernel parameter > drm/arc: Add support for the nomodeset kernel parameter > drm/gm12u320: Add support for the nomodeset kernel parameter > drm/hx8357d: Add support for the nomodeset kernel parameter > drm/ili9163: Add support for the nomodeset kernel parameter > drm/ili9225: Add support for the nomodeset kernel parameter > drm/ili9341: Add support for the nomodeset kernel parameter > drm/ili9486: Add support for the nomodeset kernel parameter > drm/mi0283qt: Add support for the nomodeset kernel parameter > drm/repaper: Add support for the nomodeset kernel parameter > drm/st7586: Add support for the nomodeset kernel parameter > drm/st7735r: Add support for the nomodeset kernel parameter > drm/tve200: Add support for the nomodeset kernel parameter > drm/udl: Add support for the nomodeset kernel parameter > drm/via: Add support for the nomodeset kernel parameter > drm/xen: Add support for the nomodeset kernel parameter > drm/xlnx: Add support for the nomodeset kernel parameter > > drivers/gpu/drm/arm/display/komeda/komeda_drv.c | 4 ++++ > drivers/gpu/drm/arm/hdlcd_drv.c | 3 +++ > drivers/gpu/drm/arm/malidp_drv.c | 3 +++ > drivers/gpu/drm/armada/armada_drv.c | 3 +++ > drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 3 +++ > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 3 +++ > drivers/gpu/drm/etnaviv/etnaviv_drv.c | 3 +++ > drivers/gpu/drm/exynos/exynos_drm_drv.c | 3 +++ > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 3 +++ > drivers/gpu/drm/gma500/psb_drv.c | 3 +++ > drivers/gpu/drm/gud/gud_drv.c | 3 +++ > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 3 +++ > drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 3 +++ > drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 3 +++ > drivers/gpu/drm/i810/i810_drv.c | 3 +++ > drivers/gpu/drm/imx/dcss/dcss-drv.c | 3 +++ > drivers/gpu/drm/imx/imx-drm-core.c | 3 +++ > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 3 +++ > drivers/gpu/drm/kmb/kmb_drv.c | 3 +++ > drivers/gpu/drm/lima/lima_drv.c | 3 +++ > drivers/gpu/drm/mcde/mcde_drv.c | 3 +++ > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 3 +++ > drivers/gpu/drm/meson/meson_drv.c | 3 +++ > drivers/gpu/drm/mga/mga_drv.c | 3 +++ > drivers/gpu/drm/msm/msm_drv.c | 3 +++ > drivers/gpu/drm/mxsfb/mxsfb_drv.c | 3 +++ > drivers/gpu/drm/omapdrm/omap_drv.c | 3 +++ > drivers/gpu/drm/panel/panel-ilitek-ili9341.c | 3 +++ > drivers/gpu/drm/panfrost/panfrost_drv.c | 3 +++ > drivers/gpu/drm/pl111/pl111_drv.c | 3 +++ > drivers/gpu/drm/r128/r128_drv.c | 3 +++ > drivers/gpu/drm/rcar-du/rcar_du_drv.c | 3 +++ > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 3 +++ > drivers/gpu/drm/savage/savage_drv.c | 3 +++ > drivers/gpu/drm/shmobile/shmob_drm_drv.c | 3 +++ > drivers/gpu/drm/sis/sis_drv.c | 3 +++ > drivers/gpu/drm/sprd/sprd_drm.c | 3 +++ > drivers/gpu/drm/sti/sti_drv.c | 3 +++ > drivers/gpu/drm/stm/drv.c | 3 +++ > drivers/gpu/drm/sun4i/sun4i_drv.c | 3 +++ > drivers/gpu/drm/tdfx/tdfx_drv.c | 3 +++ > drivers/gpu/drm/tegra/drm.c | 3 +++ > drivers/gpu/drm/tidss/tidss_drv.c | 3 +++ > drivers/gpu/drm/tilcdc/tilcdc_drv.c | 3 +++ > drivers/gpu/drm/tiny/arcpgu.c | 3 +++ > drivers/gpu/drm/tiny/gm12u320.c | 3 +++ > drivers/gpu/drm/tiny/hx8357d.c | 3 +++ > drivers/gpu/drm/tiny/ili9163.c | 3 +++ > drivers/gpu/drm/tiny/ili9225.c | 3 +++ > drivers/gpu/drm/tiny/ili9341.c | 3 +++ > drivers/gpu/drm/tiny/ili9486.c | 3 +++ > drivers/gpu/drm/tiny/mi0283qt.c | 3 +++ > drivers/gpu/drm/tiny/repaper.c | 3 +++ > drivers/gpu/drm/tiny/st7586.c | 3 +++ > drivers/gpu/drm/tiny/st7735r.c | 3 +++ > drivers/gpu/drm/tve200/tve200_drv.c | 3 +++ > drivers/gpu/drm/udl/udl_drv.c | 3 +++ > drivers/gpu/drm/via/via_drv.c | 3 +++ > drivers/gpu/drm/xen/xen_drm_front.c | 3 +++ > drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 3 +++ > 60 files changed, 181 insertions(+) >
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Ivo Totev [unhandled content-type:application/pgp-signature] | |