On pe, 2016-06-03 at 15:37 +0100, Chris Wilson wrote: > The module init/exit routines are a wrapper around the PCI device > init/exit, so move them across. > > Note that in order to avoid exporting the driver struct, instead of > manipulating driver.features inside i915_init we instead opt to simply > exit if i915.modeset is disabled. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> Looks fine to me. Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.c | 51 +++-------------------------------------- > drivers/gpu/drm/i915/i915_pci.c | 45 +++++++++++++++++++++++++++++++++++- > 2 files changed, 47 insertions(+), 49 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index dfc038000e21..e371d4e75878 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -28,7 +28,6 @@ > */ > > #include > -#include > #include > #include > #include > @@ -1563,6 +1562,9 @@ int i915_driver_load(struct pci_dev *pdev, const struct pci_device_id *ent) > struct drm_i915_private *dev_priv; > int ret; > > + if (i915.nuclear_pageflip) > + driver.driver_features |= DRIVER_ATOMIC; > + > dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); > if (dev_priv == NULL) > return -ENOMEM; > @@ -2989,50 +2991,3 @@ static struct drm_driver driver = { > .minor = DRIVER_MINOR, > .patchlevel = DRIVER_PATCHLEVEL, > }; > - > -static int __init i915_init(void) > -{ > - extern struct pci_driver i915_pci_driver; > - > - /* > - * Enable KMS by default, unless explicitly overriden by > - * either the i915.modeset prarameter or by the > - * vga_text_mode_force boot option. > - */ > - > - if (i915.modeset == 0) > - driver.driver_features &= ~DRIVER_MODESET; > - > - if (vgacon_text_force() && i915.modeset == -1) > - driver.driver_features &= ~DRIVER_MODESET; > - > - if (!(driver.driver_features & DRIVER_MODESET)) { > - /* Silently fail loading to not upset userspace. */ > - DRM_DEBUG_DRIVER("KMS and UMS disabled.\n"); > - return 0; > - } > - > - if (i915.nuclear_pageflip) > - driver.driver_features |= DRIVER_ATOMIC; > - > - return drm_pci_init(&driver, &i915_pci_driver); > -} > - > -static void __exit i915_exit(void) > -{ > - extern struct pci_driver i915_pci_driver; > - > - if (!(driver.driver_features & DRIVER_MODESET)) > - return; /* Never loaded a driver. */ > - > - drm_pci_exit(&driver, &i915_pci_driver); > -} > - > -module_init(i915_init); > -module_exit(i915_exit); > - > -MODULE_AUTHOR("Tungsten Graphics, Inc."); > -MODULE_AUTHOR("Intel Corporation"); > - > -MODULE_DESCRIPTION(DRIVER_DESC); > -MODULE_LICENSE("GPL and additional rights"); > diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c > index 1c75e5f77a45..20a026d90b37 100644 > --- a/drivers/gpu/drm/i915/i915_pci.c > +++ b/drivers/gpu/drm/i915/i915_pci.c > @@ -22,6 +22,7 @@ > * > */ > > +#include > #include > #include > > @@ -451,10 +452,52 @@ static void i915_pci_remove(struct pci_dev *pdev) > > extern const struct dev_pm_ops i915_pm_ops; > > -struct pci_driver i915_pci_driver = { > +static struct pci_driver i915_pci_driver = { > .name = DRIVER_NAME, > .id_table = pciidlist, > .probe = i915_pci_probe, > .remove = i915_pci_remove, > .driver.pm = &i915_pm_ops, > }; > + > +static int __init i915_init(void) > +{ > + bool use_kms = true; > + > + /* > + * Enable KMS by default, unless explicitly overriden by > + * either the i915.modeset prarameter or by the > + * vga_text_mode_force boot option. > + */ > + > + if (i915.modeset == 0) > + use_kms = false; > + > + if (vgacon_text_force() && i915.modeset == -1) > + use_kms = false; > + > + if (!use_kms) { > + /* Silently fail loading to not upset userspace. */ > + DRM_DEBUG_DRIVER("KMS and UMS disabled.\n"); > + return 0; > + } > + > + return pci_register_driver(&i915_pci_driver); > +} > + > +static void __exit i915_exit(void) > +{ > + if (!i915_pci_driver.driver.owner) > + return; > + > + pci_unregister_driver(&i915_pci_driver); > +} > + > +module_init(i915_init); > +module_exit(i915_exit); > + > +MODULE_AUTHOR("Tungsten Graphics, Inc."); > +MODULE_AUTHOR("Intel Corporation"); > + > +MODULE_DESCRIPTION(DRIVER_DESC); > +MODULE_LICENSE("GPL and additional rights"); -- Joonas Lahtinen Open Source Technology Center Intel Corporation _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx