Re: [PATCHi v2] drm/i915: Enhanced disable access to stolen memory as a guest

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 27, 2017 at 10:21:42AM +0800, Zhenyu Wang wrote:
> On 2017.03.24 18:23:44 +0800, Xiong Zhang wrote:
> > commit "04a68a3 drm/i915/gvt: Disable access to stolen memory as a guest"
> > isn't enough in GVT-d which will pass through IGD to guest and don't run
> > vgt code. While intel_vgpu_active() is true only when vgt code run on
> > host and guest in GVT-g.
> > 
> > v2:GVT-g may run in non qemu (Zhenyu)
> > 
> > Signed-off-by: Xiong Zhang <xiong.y.zhang@xxxxxxxxx>
> > ---
> >  drivers/gpu/drm/i915/i915_drv.c        | 1 +
> >  drivers/gpu/drm/i915/i915_drv.h        | 1 +
> >  drivers/gpu/drm/i915/i915_gem_stolen.c | 4 ++--
> >  3 files changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> > index 03d9e45..8b807a9 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.c
> > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > @@ -223,6 +223,7 @@ static void intel_detect_pch(struct drm_i915_private *dev_priv)
> >  					    PCI_SUBVENDOR_ID_REDHAT_QUMRANET &&
> >  				    pch->subsystem_device ==
> >  					    PCI_SUBDEVICE_ID_QEMU)) {
> > +				dev_priv->run_on_qemu = true;
> >  				dev_priv->pch_type =
> >  					intel_virt_detect_pch(dev_priv);
> >  			} else
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> > index a5947a4..ad95c87 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -2145,6 +2145,7 @@ struct drm_i915_private {
> >  	struct intel_uncore uncore;
> >  
> >  	struct i915_virtual_gpu vgpu;
> > +	bool run_on_qemu;
> >  
> >  	struct intel_gvt *gvt;
> >  
> > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
> > index f3abdc2..6a011b0 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
> > @@ -409,8 +409,8 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
> >  
> >  	mutex_init(&dev_priv->mm.stolen_lock);
> >  
> > -	if (intel_vgpu_active(dev_priv)) {
> > -		DRM_INFO("iGVT-g active, disabling use of stolen memory\n");
> > +	if (dev_priv->run_on_qemu || intel_vgpu_active(dev_priv)) {
> > +		DRM_INFO("Running in guest, disabling use of stolen memory\n");
> >  		return 0;
> >  	}
> >  
> > -- 
> 
> Reviewed-by: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx>

Entirely disabling stolen is rather massive, this stuff is supposed to
work ... There should be special RMRR mappings in the iommu to help the
guest access the stolen range correctly from the gpu.

Which machine where does this blow up on?
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux