lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <58d00cac-dbf1-9704-3c0b-16fd837a5b6b@suse.de>
Date:   Wed, 15 Dec 2021 09:31:06 +0100
From:   Thomas Zimmermann <tzimmermann@...e.de>
To:     Javier Martinez Canillas <javierm@...hat.com>,
        linux-kernel@...r.kernel.org, dri-devel@...ts.freedesktop.org
Cc:     Heiko Stübner <heiko@...ech.de>,
        "James (Qian) Wang" <james.qian.wang@....com>,
        Noralf Trønnes <noralf@...nnes.org>,
        Alexey Brodkin <abrodkin@...opsys.com>,
        Alison Wang <alison.wang@....com>,
        Anitha Chrisanthus <anitha.chrisanthus@...el.com>,
        Benjamin Gaignard <benjamin.gaignard@...aro.org>,
        Boris Brezillon <bbrezillon@...nel.org>,
        Brian Starkey <brian.starkey@....com>,
        Chen-Yu Tsai <wens@...e.org>,
        Chun-Kuang Hu <chunkuang.hu@...nel.org>,
        David Lechner <david@...hnology.com>,
        Deepak Rawat <drawat.floss@...il.com>,
        Edmund Dea <edmund.j.dea@...el.com>,
        Emma Anholt <emma@...olt.net>,
        Erico Nunes <nunes.erico@...il.com>,
        Hans de Goede <hdegoede@...hat.com>,
        Hyun Kwon <hyun.kwon@...inx.com>,
        Inki Dae <inki.dae@...sung.com>, Joel Stanley <joel@....id.au>,
        Joonyoung Shim <jy0922.shim@...sung.com>,
        Jyri Sarha <jyri.sarha@....fi>,
        Kamlesh Gurudasani <kamlesh.gurudasani@...il.com>,
        Kieran Bingham <kieran.bingham+renesas@...asonboard.com>,
        Laurent Pinchart <laurent.pinchart@...asonboard.com>,
        Laurentiu Palcu <laurentiu.palcu@....nxp.com>,
        Linus Walleij <linus.walleij@...aro.org>,
        Liviu Dudau <liviu.dudau@....com>,
        Lucas Stach <l.stach@...gutronix.de>,
        Marek Vasut <marex@...x.de>,
        Maxime Ripard <mripard@...nel.org>,
        Neil Armstrong <narmstrong@...libre.com>,
        Oleksandr Andrushchenko <oleksandr_andrushchenko@...m.com>,
        Patrik Jakobsson <patrik.r.jakobsson@...il.com>,
        Paul Cercueil <paul@...pouillou.net>,
        Philipp Zabel <p.zabel@...gutronix.de>,
        Philippe Cornu <philippe.cornu@...s.st.com>,
        Qiang Yu <yuq825@...il.com>, Rob Clark <robdclark@...il.com>,
        Rob Herring <robh@...nel.org>,
        Russell King <linux+etnaviv@...linux.org.uk>,
        Russell King <linux@...linux.org.uk>,
        Sam Ravnborg <sam@...nborg.org>,
        Sandy Huang <hjc@...k-chips.com>, Sean Paul <sean@...rly.run>,
        Stefan Agner <stefan@...er.ch>,
        Thierry Reding <thierry.reding@...il.com>,
        Tian Tao <tiantao6@...ilicon.com>,
        Tomeu Vizoso <tomeu.vizoso@...labora.com>,
        Tomi Valkeinen <tomba@...nel.org>,
        Xinliang Liu <xinliang.liu@...aro.org>,
        Yannick Fertre <yannick.fertre@...s.st.com>
Subject: Re: [PATCH 00/60] drm: Make all drivers to honour the nomodeset
 parameter

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

Download attachment "OpenPGP_signature" of type "application/pgp-signature" (841 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ