Re: git: e8404a72c5df - main - vgapci: Don't create a drm helper

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Thu, 06 Jul 2023 17:35:05 UTC
On 7/6/23 10:26 AM, Dmitry Chagin wrote:
> The branch main has been updated by dchagin:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=e8404a72c5df939cd9ad869b12cf038c6846440a
> 
> commit e8404a72c5df939cd9ad869b12cf038c6846440a
> Author:     Dmitry Chagin <dchagin@FreeBSD.org>
> AuthorDate: 2023-07-06 17:26:24 +0000
> Commit:     Dmitry Chagin <dchagin@FreeBSD.org>
> CommitDate: 2023-07-06 17:26:24 +0000
> 
>      vgapci: Don't create a drm helper
>      
>      Simply speaking, being started the drm-kmod driver should create sysfs helpers,
>      which is «drm» class devices, with the unit number 0, 128 and, perhaps 64.
>      If a drm helper created by vgapci driver with the corresponding unit number
>      exists then the drm-kmod driver initialize it by the device_initialize() lkpi
>      method, otherwise drm-kmod driver create new «drm» device.
>      For hw, where two or more different GPU installed, it's not guaranteed that
>      the order of loading GPU drivers will be the same as the vgapci devices numbered.
>      I.e., on hw where vgapci0 is Nvidia GPU and vgapci1 is Intel GPU, when drm-kmod
>      loaded first it will use drm0 helper of vgapci0 device.
>      There is no problem for drm-kmod driver unless we do not traverse device
>      tree, as needed for https://reviews.freebsd.org/D38545.
>      
>      drm-kmod is ok for this change as it has fallback to create corresponding
>      drm device.
>      
>      Reviewed by:
>      Differential Revision:  https://reviews.freebsd.org/D38546
> ---
>   sys/dev/pci/vga_pci.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/sys/dev/pci/vga_pci.c b/sys/dev/pci/vga_pci.c
> index 12a4057a474c..64847d37f0f6 100644
> --- a/sys/dev/pci/vga_pci.c
> +++ b/sys/dev/pci/vga_pci.c
> @@ -373,8 +373,7 @@ vga_pci_attach(device_t dev)
>   
>   	bus_generic_probe(dev);
>   
> -	/* Always create a drm child for now to make it easier on drm. */
> -	device_add_child(dev, "drm", -1);
> +	/* Always create a drmn child for now to make it easier on drm. */
>   	device_add_child(dev, "drmn", -1);
>   	bus_generic_attach(dev);

Ideally drm and drmn drivers would use identify routines called by bus_generic_probe
above to add devices instead of depending on these device_add_child calls, and
the device_add_child calls should really just go away.

That is to say, it would be nice to remove the drmnX device_add_child, too.

-- 
John Baldwin