[Intel-gfx] [PATCH 2/7] drm/i915: Resolving the memory region conflict for Stolen area

Jesse Barnes jbarnes at virtuousgeek.org
Tue Feb 18 20:49:02 CET 2014


On Tue, 28 Jan 2014 10:14:03 +0100
Daniel Vetter <daniel at ffwll.ch> wrote:

> On Tue, Jan 28, 2014 at 10:10 AM, Goel, Akash <akash.goel at intel.com> wrote:
> > Hi Daniel,
> >
> > Please let us know about this patch, will this be up-streamed.
> 
> 1. I've just sent out the merge confirmation mail minutes ago.
> 2. Please _never_ drop mailing lists when poking me (or in general,
> really). See the internally documented bkm in the patch submission
> guidelines.
> 
> Cheers, Daniel
> 
> >
> > Best Regards
> > Akash
> >
> > -----Original Message-----
> > From: Goel, Akash
> > Sent: Monday, January 13, 2014 4:25 PM
> > To: intel-gfx at lists.freedesktop.org
> > Cc: Goel, Akash
> > Subject: [PATCH 2/7] drm/i915: Resolving the memory region conflict for Stolen area
> >
> > From: Akash Goel <akash.goel at intel.com>
> >
> > There is a conflict seen when requesting the kernel to reserve the physical space used for the stolen area. This is because some BIOS are wrapping the stolen area in the root PCI bus, but have an off-by-one error. As a workaround we retry the reservation with an offset of 1 instead of 0.
> >
> > v2: updated commit message & the comment in source file (Daniel)
> >
> > Signed-off-by: Akash Goel <akash.goel at intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_gem_stolen.c | 20 +++++++++++++++++---
> >  1 file changed, 17 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
> > index 1a24e84..114a806 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
> > @@ -82,9 +82,23 @@ static unsigned long i915_stolen_to_physical(struct drm_device *dev)
> >         r = devm_request_mem_region(dev->dev, base, dev_priv->gtt.stolen_size,
> >                                     "Graphics Stolen Memory");
> >         if (r == NULL) {
> > -               DRM_ERROR("conflict detected with stolen region: [0x%08x - 0x%08x]\n",
> > -                         base, base + (uint32_t)dev_priv->gtt.stolen_size);
> > -               base = 0;
> > +               /*
> > +                * One more attempt but this time requesting region from
> > +                * base + 1, as we have seen that this resolves the region
> > +                * conflict with the PCI Bus.
> > +                * This is a BIOS w/a: Some BIOS wrap stolen in the root
> > +                * PCI bus, but have an off-by-one error. Hence retry the
> > +                * reservation starting from 1 instead of 0.
> > +                */
> > +               r = devm_request_mem_region(dev->dev, base + 1,
> > +                                           dev_priv->gtt.stolen_size - 1,
> > +                                           "Graphics Stolen Memory");
> > +               if (r == NULL) {
> > +                       DRM_ERROR("conflict detected with stolen region:"\
> > +                                 "[0x%08x - 0x%08x]\n",
> > +                                 base, base + (uint32_t)dev_priv->gtt.stolen_size);
> > +                       base = 0;
> > +               }
> >         }
> >
> >         return base;

It doesn't look like this was actually merged, and it belongs in -fixes
with a cc: stable since it affects existing machines with these BIOS
issues.

Cc'ing Jani so he can pick it up when he returns.

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list