[Intel-gfx] [PATCH v2 1/1] drm/i915: Fix VGA handling using stop_machine() or mmio

Chris Wilson chris at chris-wilson.co.uk
Mon Sep 30 18:45:34 CEST 2013


On Mon, Sep 30, 2013 at 06:10:23PM +0300, Ville Syrjälä wrote:
> On Mon, Sep 30, 2013 at 03:53:10PM +0100, Chris Wilson wrote:
> > On Mon, Sep 30, 2013 at 05:41:44PM +0300, Ville Syrjälä wrote:
> > > On Mon, Sep 30, 2013 at 03:24:37PM +0100, Chris Wilson wrote:
> > > > On Mon, Sep 30, 2013 at 05:08:31PM +0300, ville.syrjala at linux.intel.com wrote:
> > > > > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > > > > 
> > > > > We have several problems with out VGA handling:
> > > > > - We try to use the GMCH control VGA disable bit even though it may
> > > > >   be locked
> > > > > - If we manage to disable VGA throuh GMCH control, we're no longer
> > > > >   able to correctly disable the VGA plane
> > > > > - Taking part in the VGA arbitration is too expensive for X [1]
> > > > 
> > > > I'd like to emphasize that X disables DRI if it detects 2 vga cards,
> > > > effectively breaking all machines with a discrete GPU. Even if one of
> > > > those is not being used.
> > > >  
> > > > > +/*
> > > > > + * 21 devices with 8 functions per device max on the same bus.
> > > > > + * We don't need locking for these due to stop_machine().
> > > > > + */
> > > > > +static u16 vga_cmd[21*8];
> > > > > +static u16 vga_ctl[21*8];
> > > > 
> > > > Should we just allocate storage for when we need it? We are now adding
> > > > several hundred bytes to our module, which is bound to cause us to use
> > > > an extra page, and they can be passed around through the stop_machine
> > > > closure rather than static.
> > > 
> > > I guess we could do that. Although I do wonder a bit if we'd race with
> > > hotplug. Not sure there's a way to hotplug stuff onto the root bus...
> > 
> > Within stop-machine? I surely hope not!
> 
> Can we allocate there? I was thinking of allocating before stop_machine().

Using GFP_ATOMIC should be permissible, I think. But yeah, you can
allocate space upfront for struct vga_op.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list