drm/i915: give stolen_usable_size a more suitable home
Kick it out of i915_ggtt and keep it grouped with dsm and dsm_reserved, where it makes the most sense. Signed-off-by: Matthew Auld <matthew.auld@intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171211151822.20953-9-matthew.auld@intel.com
This commit is contained in:
parent
73ebd50303
commit
b1ace60107
@ -2254,7 +2254,7 @@ struct drm_i915_private {
|
||||
/**
|
||||
* Data Stolen Memory - aka "i915 stolen memory" gives us the start and
|
||||
* end of stolen which we can optionally use to create GEM objects
|
||||
* backed by stolen memory. Note that ggtt->stolen_usable_size tells us
|
||||
* backed by stolen memory. Note that stolen_usable_size tells us
|
||||
* exactly how much of this we are actually allowed to use, given that
|
||||
* some portion of it is in fact reserved for use by hardware functions.
|
||||
*/
|
||||
@ -2264,6 +2264,17 @@ struct drm_i915_private {
|
||||
*/
|
||||
struct resource dsm_reserved;
|
||||
|
||||
/*
|
||||
* Stolen memory is segmented in hardware with different portions
|
||||
* offlimits to certain functions.
|
||||
*
|
||||
* The drm_mm is initialised to the total accessible range, as found
|
||||
* from the PCI config. On Broadwell+, this is further restricted to
|
||||
* avoid the first page! The upper end of stolen memory is reserved for
|
||||
* hardware functions and similarly removed from the accessible range.
|
||||
*/
|
||||
u32 stolen_usable_size; /* Total size minus reserved ranges */
|
||||
|
||||
void __iomem *regs;
|
||||
|
||||
struct intel_uncore uncore;
|
||||
|
@ -373,16 +373,6 @@ struct i915_ggtt {
|
||||
struct resource gmadr; /* GMADR resource */
|
||||
u64 mappable_end; /* End offset that we can CPU map */
|
||||
|
||||
/* Stolen memory is segmented in hardware with different portions
|
||||
* offlimits to certain functions.
|
||||
*
|
||||
* The drm_mm is initialised to the total accessible range, as found
|
||||
* from the PCI config. On Broadwell+, this is further restricted to
|
||||
* avoid the first page! The upper end of stolen memory is reserved for
|
||||
* hardware functions and similarly removed from the accessible range.
|
||||
*/
|
||||
u32 stolen_usable_size; /* Total size minus reserved ranges */
|
||||
|
||||
/** "Graphics Stolen Memory" holds the global PTEs */
|
||||
void __iomem *gsm;
|
||||
void (*invalidate)(struct drm_i915_private *dev_priv);
|
||||
|
@ -325,7 +325,6 @@ static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv,
|
||||
|
||||
int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
struct i915_ggtt *ggtt = &dev_priv->ggtt;
|
||||
dma_addr_t reserved_base, stolen_top;
|
||||
u32 reserved_total, reserved_size;
|
||||
u32 stolen_usable_start;
|
||||
@ -416,12 +415,12 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
|
||||
if (INTEL_GEN(dev_priv) >= 8)
|
||||
stolen_usable_start = 4096;
|
||||
|
||||
ggtt->stolen_usable_size =
|
||||
dev_priv->stolen_usable_size =
|
||||
resource_size(&dev_priv->dsm) - reserved_total - stolen_usable_start;
|
||||
|
||||
/* Basic memrange allocator for stolen space. */
|
||||
drm_mm_init(&dev_priv->mm.stolen, stolen_usable_start,
|
||||
ggtt->stolen_usable_size);
|
||||
dev_priv->stolen_usable_size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2639,7 +2639,6 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,
|
||||
{
|
||||
struct drm_device *dev = crtc->base.dev;
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
struct i915_ggtt *ggtt = &dev_priv->ggtt;
|
||||
struct drm_i915_gem_object *obj = NULL;
|
||||
struct drm_mode_fb_cmd2 mode_cmd = { 0 };
|
||||
struct drm_framebuffer *fb = &plane_config->fb->base;
|
||||
@ -2655,7 +2654,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,
|
||||
/* If the FB is too big, just don't use it since fbdev is not very
|
||||
* important and we should probably use that space with FBC or other
|
||||
* features. */
|
||||
if (size_aligned * 2 > ggtt->stolen_usable_size)
|
||||
if (size_aligned * 2 > dev_priv->stolen_usable_size)
|
||||
return false;
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
|
@ -115,7 +115,6 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
|
||||
struct drm_framebuffer *fb;
|
||||
struct drm_device *dev = helper->dev;
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
struct i915_ggtt *ggtt = &dev_priv->ggtt;
|
||||
struct drm_mode_fb_cmd2 mode_cmd = {};
|
||||
struct drm_i915_gem_object *obj;
|
||||
int size, ret;
|
||||
@ -139,7 +138,7 @@ static int intelfb_alloc(struct drm_fb_helper *helper,
|
||||
* important and we should probably use that space with FBC or other
|
||||
* features. */
|
||||
obj = NULL;
|
||||
if (size * 2 < ggtt->stolen_usable_size)
|
||||
if (size * 2 < dev_priv->stolen_usable_size)
|
||||
obj = i915_gem_object_create_stolen(dev_priv, size);
|
||||
if (obj == NULL)
|
||||
obj = i915_gem_object_create(dev_priv, size);
|
||||
|
Loading…
x
Reference in New Issue
Block a user