On Thu, 8 Jul 2010 10:58:21 +0100
Simon Farnsworth <simon.farnswo...@onelan.com> wrote:

> On Wednesday 7 July 2010, Jesse Barnes <jbar...@virtuousgeek.org> wrote:
> > Some BIOSes will claim a large chunk of stolen space.  Unless we
> > reclaim it, our aperture for remapping buffer objects will be
> > constrained.  So clamp the stolen space to 32M and ignore the rest.
> > 
> I'm not sure that this changelog fits the patch - if I'm understanding the 
> code 
> correctly, you're clamping to 16M, not 32M.
> 
> Apart from that, the code looks sensible.

Oops updated to 32M for Ironlake but didn't update the changelog or
comments.

> 
> > diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
> > index f97122a..54ed0e1 100644
> > --- a/drivers/char/agp/intel-gtt.c
> > +++ b/drivers/char/agp/intel-gtt.c
> > @@ -25,6 +25,10 @@
> >  #define USE_PCI_DMA_API 1
> >  #endif
> > 
> > +/* Max amount of stolen space, anything above will be returned to Linux */
> > +int intel_max_stolen = 16 * 1024 * 1024;
> 
> This is 16M, not 32M
> 
> > +EXPORT_SYMBOL(intel_max_stolen);
> > +
> >  static const struct aper_size_info_fixed intel_i810_sizes[] =
> >  {
> >     {64, 16384, 4},
> > @@ -710,7 +714,12 @@ static void intel_i830_init_gtt_entries(void)
> >                     break;
> >             }
> >     }
> > -   if (gtt_entries > 0) {
> > +   if (!local && gtt_entries > intel_max_stolen) {
> > +           dev_info(&agp_bridge->dev->dev,
> > +                    "detected %dK stolen memory, trimming to %dK\n",
> > +                    gtt_entries / KB(1), intel_max_stolen / KB(1));
> > +           gtt_entries = intel_max_stolen / KB(4);
> 
> This appears to limit to intel_max_stolen bytes, not intel_max_stolen * 2 
> bytes.

I think that's what I want to do, so I'm not sure what you mean?  Each
GTT entry covers a 4k page so we have to convert the total size into
the number of entries...

> 
> > +   } else if (gtt_entries > 0) {
> >             dev_info(&agp_bridge->dev->dev, "detected %dK %s memory\n",
> >                    gtt_entries / KB(1), local ? "local" : "stolen");
> >             gtt_entries /= KB(4);
> > diff --git a/drivers/gpu/drm/i915/i915_dma.c
> > b/drivers/gpu/drm/i915/i915_dma.c index e2dd903..69e25ab 100644
> > --- a/drivers/gpu/drm/i915/i915_dma.c
> > +++ b/drivers/gpu/drm/i915/i915_dma.c
> > @@ -40,6 +40,8 @@
> >  #include <linux/vga_switcheroo.h>
> >  #include <linux/slab.h>
> > 
> > +extern int intel_max_stolen; /* from AGP driver */
> > +
> >  /**
> >   * Sets up the hardware status page for devices that need a physical
> > address * in the register.
> > @@ -2105,6 +2107,12 @@ int i915_driver_load(struct drm_device *dev,
> > unsigned long flags) if (ret)
> >             goto out_iomapfree;
> > 
> > +   if (prealloc_size > intel_max_stolen) {
> > +           DRM_INFO("detected %dM stolen memory, trimming to %dM\n",
> > +                    prealloc_size >> 20, intel_max_stolen >> 20);
> > +           prealloc_size = intel_max_stolen;
> 
> And again here, you appear to limit to intel_max_stolen, not to twice that.
> 
> > +   }
> > +
> >     dev_priv->wq = create_singlethread_workqueue("i915");
> >     if (dev_priv->wq == NULL) {
> >             DRM_ERROR("Failed to create our workqueue.\n");


-- 
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to