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

From: Dmitry Chagin <dchagin_at_freebsd.org>
Date: Fri, 07 Jul 2023 17:04:22 UTC
On Thu, Jul 06, 2023 at 10:35:05AM -0700, John Baldwin wrote:
> 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.

Agreed, I'll check Nvidia and drm-kmod

> 
> -- 
> John Baldwin