On Wed, Nov 06, 2013 at 11:25:55AM -0800, Jesse Barnes wrote:
> Retrieve current framebuffer config info from the regs and create an fb
> object for the buffer the BIOS or boot loader left us.  This should
> allow for smooth transitions to userspace apps once we finish the
> initial configuration construction.
> 
> v2: check for non-native modes and adjust (Jesse)
>     fixup aperture and cmap frees (Imre)
>     use unlocked unref if init_bios fails (Jesse)
>     fix curly brace around DSPADDR check (Imre)
>     comment failure path for pin_and_fence (Imre)
> v3: fixup fixup of aperture frees (Chris)
> v4: update to current bits (locking & pin_and_fence hack) (Jesse)
> 
> Signed-off-by: Jesse Barnes <[email protected]>
> ---
>  drivers/gpu/drm/i915/i915_dma.c      |   8 +-
>  drivers/gpu/drm/i915/i915_drv.h      |   2 +-
>  drivers/gpu/drm/i915/intel_display.c |  14 +-
>  drivers/gpu/drm/i915/intel_drv.h     |   4 +
>  drivers/gpu/drm/i915/intel_fbdev.c   | 295 
> +++++++++++++++++++++++++++++++++--
>  5 files changed, 308 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index 0cab2d0..d8eed45 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -1277,6 +1277,7 @@ static const struct vga_switcheroo_client_ops 
> i915_switcheroo_ops = {
>  static int i915_load_modeset_init(struct drm_device *dev)
>  {
>       struct drm_i915_private *dev_priv = dev->dev_private;
> +     bool was_vga_enabled;
>       int ret;
>  
>       ret = intel_parse_bios(dev);
> @@ -1315,7 +1316,11 @@ static int i915_load_modeset_init(struct drm_device 
> *dev)
>  
>       /* Important: The output setup functions called by modeset_init need
>        * working irqs for e.g. gmbus and dp aux transfers. */
> -     intel_modeset_init(dev);
> +     intel_modeset_init(dev, &was_vga_enabled);
> +
> +     /* Wrap existing BIOS mode configuration prior to GEM takeover */
> +     if (!was_vga_enabled)
> +             intel_fbdev_init_bios(dev);

We attempt to pin into the GTT here, but...
 
>       ret = i915_gem_init(dev);

GTT drm_mm range manager is only now initialised.

That would seem to explain an oops in drm_mm.c
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to