On to, 2016-06-02 at 12:36 -0400, Zhi Wang wrote: > From: Bing Niu <bing.niu@xxxxxxxxx> > > This patch introduces host graphics memory partition when GVT-g > is enabled. > > Under GVT-g, i915 host driver only owned limited graphics resources, > others are managed by GVT-g resource allocator and kept for other vGPUs. > > v6: > > - Remove kernel parameters used to configure GGTT owned by host. (Chris) > - Other coding style comments from Chris. > - Add more comments for reviewer. > > v3: > > - Remove fence partition, will use i915 fence stealing in future.(Kevin) > - Santinize GVT host gm kernel parameters. (Joonas) > > v2: > - Address all coding-style comments from Joonas previously. > - Fix errors and warnning reported by checkpatch.pl. (Joonas) > - Move the graphs into the header files. (Daniel) > > Signed-off-by: Bing Niu <bing.niu@xxxxxxxxx> > Signed-off-by: Zhi Wang <zhi.a.wang@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_vgpu.c | 23 +++++++++++++++++------ > drivers/gpu/drm/i915/intel_gvt.h | 25 +++++++++++++++++++++++++ > 2 files changed, 42 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_vgpu.c b/drivers/gpu/drm/i915/i915_vgpu.c > index 5312816..0d891a3 100644 > --- a/drivers/gpu/drm/i915/i915_vgpu.c > +++ b/drivers/gpu/drm/i915/i915_vgpu.c > @@ -189,14 +189,25 @@ int intel_vgt_balloon(struct drm_i915_private *dev_priv) > unsigned long unmappable_base, unmappable_size, unmappable_end; > int ret; > > - if (!intel_vgpu_active(dev_priv)) > + if (intel_gvt_active(dev_priv)) { > + /* Retrieve GGTT partition information from macros */ > + mappable_base = 0; > + mappable_size = INTEL_GVT_HOST_LOW_GM_SIZE; > + unmappable_base = dev_priv->ggtt.mappable_end; > + unmappable_size = INTEL_GVT_HOST_HIGH_GM_SIZE; > + } else if (intel_vgpu_active(dev_priv)) { > + /* Retrieve GGTT partition information from PVINFO */ > + mappable_base = I915_READ( > + vgtif_reg(avail_rs.mappable_gmadr.base)); > + mappable_size = I915_READ( > + vgtif_reg(avail_rs.mappable_gmadr.size)); > + unmappable_base = I915_READ( > + vgtif_reg(avail_rs.nonmappable_gmadr.base)); > + unmappable_size = I915_READ( > + vgtif_reg(avail_rs.nonmappable_gmadr.size)); > + } else > return 0; > > - mappable_base = I915_READ(vgtif_reg(avail_rs.mappable_gmadr.base)); > - mappable_size = I915_READ(vgtif_reg(avail_rs.mappable_gmadr.size)); > - unmappable_base = I915_READ(vgtif_reg(avail_rs.nonmappable_gmadr.base)); > - unmappable_size = I915_READ(vgtif_reg(avail_rs.nonmappable_gmadr.size)); > - > mappable_end = mappable_base + mappable_size; > unmappable_end = unmappable_base + unmappable_size; > > diff --git a/drivers/gpu/drm/i915/intel_gvt.h b/drivers/gpu/drm/i915/intel_gvt.h > index b9b361b..f0b9aac 100644 > --- a/drivers/gpu/drm/i915/intel_gvt.h > +++ b/drivers/gpu/drm/i915/intel_gvt.h > @@ -24,6 +24,31 @@ > #ifndef _INTEL_GVT_H_ > #define _INTEL_GVT_H_ > > +/* > + * Under GVT-g, i915 host driver only owned limited graphics resources, > + * others are managed by GVT-g resource allocator and kept for other vGPUs. > + * > + * For graphics memory space partition, a typical layout looks like: > + * > + * +-------+-----------------------+------+-----------------------+ > + * |* Host | *GVT-g Resource |* Host| *GVT-g Resource | > + * | Owned | Allocator Managed | Owned| Allocator Managed | > + * | | | | | > + * +---------------+-------+----------------------+-------+-------+ > + * | | | | | | | | | > + * | i915 | vm 1 | vm 2 | vm 3 | i915 | vm 1 | vm 2 | vm 3 | > + * | | | | | | | | | > + * +-------+-------+-------+--------------+-------+-------+-------+ > + * | Aperture | Hidden | > + * +-------------------------------+------------------------------+ > + * | GGTT memory space | > + * +--------------------------------------------------------------+ > + */ > + > +/* GGTT memory space owned by host */ > +#define INTEL_GVT_HOST_LOW_GM_SIZE (96 * 1024 * 1024) > +#define INTEL_GVT_HOST_HIGH_GM_SIZE (384 * 1024 * 1024) Might be worth a comment where these numbers come from, with that; Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > + > #ifdef CONFIG_DRM_I915_GVT > #include "gvt/gvt.h" > extern int intel_gvt_init(struct drm_i915_private *dev_priv); -- Joonas Lahtinen Open Source Technology Center Intel Corporation _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx