[Intel-gfx] [PATCH 2/2] drm/i915: Handle failure to kick out a conflicting fb driver
Daniel Vetter
daniel at ffwll.ch
Mon Jul 14 17:15:26 CEST 2014
On Tue, Dec 17, 2013 at 09:33:27AM +0200, Jani Nikula wrote:
> On Mon, 16 Dec 2013, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>
> Reviewed-by: Jani Nikula <jani.nikula at intel.com>
Queued for -next, thanks for the patch.
-Daniel
>
> > ---
> > drivers/gpu/drm/i915/i915_dma.c | 21 +++++++++++++++------
> > 1 file changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> > index 6364c503f97d..6de3a43e3acf 100644
> > --- a/drivers/gpu/drm/i915/i915_dma.c
> > +++ b/drivers/gpu/drm/i915/i915_dma.c
> > @@ -1414,15 +1414,16 @@ void i915_master_destroy(struct drm_device *dev, struct drm_master *master)
> > }
> >
> > #ifdef CONFIG_DRM_I915_FBDEV
> > -static void i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv)
> > +static int i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv)
> > {
> > struct apertures_struct *ap;
> > struct pci_dev *pdev = dev_priv->dev->pdev;
> > bool primary;
> > + int ret;
> >
> > ap = alloc_apertures(1);
> > if (!ap)
> > - return;
> > + return -ENOMEM;
> >
> > ap->ranges[0].base = dev_priv->gtt.mappable_base;
> > ap->ranges[0].size = dev_priv->gtt.mappable_end;
> > @@ -1430,13 +1431,16 @@ static void i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv)
> > primary =
> > pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
> >
> > - remove_conflicting_framebuffers(ap, "inteldrmfb", primary);
> > + ret = remove_conflicting_framebuffers(ap, "inteldrmfb", primary);
> >
> > kfree(ap);
> > +
> > + return ret;
> > }
> > #else
> > -static void i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv)
> > +static int i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv)
> > {
> > + return 0;
> > }
> > #endif
> >
> > @@ -1552,8 +1556,13 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
> > if (ret)
> > goto out_regs;
> >
> > - if (drm_core_check_feature(dev, DRIVER_MODESET))
> > - i915_kick_out_firmware_fb(dev_priv);
> > + if (drm_core_check_feature(dev, DRIVER_MODESET)) {
> > + ret = i915_kick_out_firmware_fb(dev_priv);
> > + if (ret) {
> > + DRM_ERROR("failed to remove conflicting framebuffer drivers\n");
> > + goto out_gtt;
> > + }
> > + }
> >
> > pci_set_master(dev->pdev);
> >
> > --
> > 1.8.5.1
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Jani Nikula, Intel Open Source Technology Center
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list