* [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric
@ 2020-01-03 20:00 Matthew Auld
2020-01-03 20:00 ` [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures Matthew Auld
` (6 more replies)
0 siblings, 7 replies; 10+ messages in thread
From: Matthew Auld @ 2020-01-03 20:00 UTC (permalink / raw)
To: intel-gfx
From: CQ Tang <cq.tang@intel.com>
Signed-off-by: CQ Tang <cq.tang@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/display/intel_fbc.c | 20 +--
drivers/gpu/drm/i915/display/intel_fbdev.c | 4 +-
.../gpu/drm/i915/gem/i915_gem_object_types.h | 7 +-
drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 128 ++++++++----------
drivers/gpu/drm/i915/gem/i915_gem_stolen.h | 7 +-
drivers/gpu/drm/i915/gt/intel_rc6.c | 4 +-
drivers/gpu/drm/i915/gt/intel_ring.c | 2 +-
drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
drivers/gpu/drm/i915/i915_drv.h | 6 -
drivers/gpu/drm/i915/intel_memory_region.h | 3 +
10 files changed, 90 insertions(+), 95 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index a1048ece541e..3c4e70da717c 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -420,6 +420,7 @@ static int find_compression_threshold(struct drm_i915_private *dev_priv,
unsigned int size,
unsigned int fb_cpp)
{
+ struct intel_memory_region *mem = dev_priv->mm.regions[INTEL_REGION_STOLEN];
int compression_threshold = 1;
int ret;
u64 end;
@@ -441,7 +442,7 @@ static int find_compression_threshold(struct drm_i915_private *dev_priv,
*/
/* Try to over-allocate to reduce reallocations and fragmentation. */
- ret = i915_gem_stolen_insert_node_in_range(dev_priv, node, size <<= 1,
+ ret = i915_gem_stolen_insert_node_in_range(mem, node, size <<= 1,
4096, 0, end);
if (ret == 0)
return compression_threshold;
@@ -452,7 +453,7 @@ static int find_compression_threshold(struct drm_i915_private *dev_priv,
(fb_cpp == 2 && compression_threshold == 2))
return 0;
- ret = i915_gem_stolen_insert_node_in_range(dev_priv, node, size >>= 1,
+ ret = i915_gem_stolen_insert_node_in_range(mem, node, size >>= 1,
4096, 0, end);
if (ret && INTEL_GEN(dev_priv) <= 4) {
return 0;
@@ -467,6 +468,7 @@ static int find_compression_threshold(struct drm_i915_private *dev_priv,
static int intel_fbc_alloc_cfb(struct drm_i915_private *dev_priv,
unsigned int size, unsigned int fb_cpp)
{
+ struct intel_memory_region *mem = dev_priv->mm.regions[INTEL_REGION_STOLEN];
struct intel_fbc *fbc = &dev_priv->fbc;
struct drm_mm_node *uninitialized_var(compressed_llb);
int ret;
@@ -493,7 +495,7 @@ static int intel_fbc_alloc_cfb(struct drm_i915_private *dev_priv,
if (!compressed_llb)
goto err_fb;
- ret = i915_gem_stolen_insert_node(dev_priv, compressed_llb,
+ ret = i915_gem_stolen_insert_node(mem, compressed_llb,
4096, 4096);
if (ret)
goto err_fb;
@@ -519,22 +521,23 @@ static int intel_fbc_alloc_cfb(struct drm_i915_private *dev_priv,
err_fb:
kfree(compressed_llb);
- i915_gem_stolen_remove_node(dev_priv, &fbc->compressed_fb);
+ i915_gem_stolen_remove_node(mem, &fbc->compressed_fb);
err_llb:
- if (drm_mm_initialized(&dev_priv->mm.stolen))
+ if (drm_mm_initialized(&mem->stolen))
pr_info_once("drm: not enough stolen space for compressed buffer (need %d more bytes), disabling. Hint: you may be able to increase stolen memory size in the BIOS to avoid this.\n", size);
return -ENOSPC;
}
static void __intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv)
{
+ struct intel_memory_region *mem = dev_priv->mm.regions[INTEL_REGION_STOLEN];
struct intel_fbc *fbc = &dev_priv->fbc;
if (drm_mm_node_allocated(&fbc->compressed_fb))
- i915_gem_stolen_remove_node(dev_priv, &fbc->compressed_fb);
+ i915_gem_stolen_remove_node(mem, &fbc->compressed_fb);
if (fbc->compressed_llb) {
- i915_gem_stolen_remove_node(dev_priv, fbc->compressed_llb);
+ i915_gem_stolen_remove_node(mem, fbc->compressed_llb);
kfree(fbc->compressed_llb);
}
}
@@ -1325,13 +1328,14 @@ static bool need_fbc_vtd_wa(struct drm_i915_private *dev_priv)
*/
void intel_fbc_init(struct drm_i915_private *dev_priv)
{
+ struct intel_memory_region *mem = dev_priv->mm.regions[INTEL_REGION_STOLEN];
struct intel_fbc *fbc = &dev_priv->fbc;
INIT_WORK(&fbc->underrun_work, intel_fbc_underrun_work_fn);
mutex_init(&fbc->lock);
fbc->active = false;
- if (!drm_mm_initialized(&dev_priv->mm.stolen))
+ if (!drm_mm_initialized(&mem->stolen))
mkwrite_device_info(dev_priv)->display.has_fbc = false;
if (need_fbc_vtd_wa(dev_priv))
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 1e98e432c9fa..522ea9538c16 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -254,7 +254,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
* If the object is stolen however, it will be full of whatever
* garbage was left in there.
*/
- if (vma->obj->stolen && !prealloc)
+ if (vma->obj->mm.stolen && !prealloc)
memset_io(info->screen_base, 0, info->screen_size);
/* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
@@ -584,7 +584,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
* full of whatever garbage was left in there.
*/
if (state == FBINFO_STATE_RUNNING &&
- intel_fb_obj(&ifbdev->fb->base)->stolen)
+ intel_fb_obj(&ifbdev->fb->base)->mm.stolen)
memset_io(info->screen_base, 0, info->screen_size);
drm_fb_helper_set_suspend(&ifbdev->helper, state);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
index 88e268633fdc..1919994fee33 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
@@ -122,8 +122,6 @@ struct drm_i915_gem_object {
*/
struct list_head lut_list;
- /** Stolen memory for this object, instead of being backed by shmem. */
- struct drm_mm_node *stolen;
union {
struct rcu_head rcu;
struct llist_node freed;
@@ -201,6 +199,11 @@ struct drm_i915_gem_object {
* List of memory region blocks allocated for this object.
*/
struct list_head blocks;
+ /**
+ * The memory region block allocated for this object, if backed
+ * by stolen memory.
+ */
+ struct drm_mm_node *stolen;
/**
* Element within memory_region->objects or region->purgeable
* if the object is marked as DONTNEED. Access is protected by
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index 451f3078d60d..ddb59a2fbbfe 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -26,42 +26,42 @@
* for is a boon.
*/
-int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
+int i915_gem_stolen_insert_node_in_range(struct intel_memory_region *mem,
struct drm_mm_node *node, u64 size,
unsigned alignment, u64 start, u64 end)
{
int ret;
- if (!drm_mm_initialized(&i915->mm.stolen))
+ if (!drm_mm_initialized(&mem->stolen))
return -ENODEV;
/* WaSkipStolenMemoryFirstPage:bdw+ */
- if (INTEL_GEN(i915) >= 8 && start < 4096)
+ if (INTEL_GEN(mem->i915) >= 8 && start < 4096)
start = 4096;
- mutex_lock(&i915->mm.stolen_lock);
- ret = drm_mm_insert_node_in_range(&i915->mm.stolen, node,
+ mutex_lock(&mem->mm_lock);
+ ret = drm_mm_insert_node_in_range(&mem->stolen, node,
size, alignment, 0,
start, end, DRM_MM_INSERT_BEST);
- mutex_unlock(&i915->mm.stolen_lock);
+ mutex_unlock(&mem->mm_lock);
return ret;
}
-int i915_gem_stolen_insert_node(struct drm_i915_private *i915,
+int i915_gem_stolen_insert_node(struct intel_memory_region *mem,
struct drm_mm_node *node, u64 size,
unsigned alignment)
{
- return i915_gem_stolen_insert_node_in_range(i915, node, size,
+ return i915_gem_stolen_insert_node_in_range(mem, node, size,
alignment, 0, U64_MAX);
}
-void i915_gem_stolen_remove_node(struct drm_i915_private *i915,
+void i915_gem_stolen_remove_node(struct intel_memory_region *mem,
struct drm_mm_node *node)
{
- mutex_lock(&i915->mm.stolen_lock);
+ mutex_lock(&mem->mm_lock);
drm_mm_remove_node(node);
- mutex_unlock(&i915->mm.stolen_lock);
+ mutex_unlock(&mem->mm_lock);
}
static int i915_adjust_stolen(struct drm_i915_private *i915,
@@ -152,12 +152,12 @@ static int i915_adjust_stolen(struct drm_i915_private *i915,
return 0;
}
-static void i915_gem_cleanup_stolen(struct drm_i915_private *i915)
+static void i915_gem_cleanup_stolen(struct intel_memory_region *mem)
{
- if (!drm_mm_initialized(&i915->mm.stolen))
+ if (!drm_mm_initialized(&mem->stolen))
return;
- drm_mm_takedown(&i915->mm.stolen);
+ drm_mm_takedown(&mem->stolen);
}
static void g4x_get_stolen_reserved(struct drm_i915_private *i915,
@@ -365,14 +365,13 @@ static void icl_get_stolen_reserved(struct drm_i915_private *i915,
}
}
-static int i915_gem_init_stolen(struct drm_i915_private *i915)
+static int i915_gem_init_stolen(struct intel_memory_region *mem)
{
+ struct drm_i915_private *i915 = mem->i915;
struct intel_uncore *uncore = &i915->uncore;
resource_size_t reserved_base, stolen_top;
resource_size_t reserved_total, reserved_size;
- mutex_init(&i915->mm.stolen_lock);
-
if (intel_vgpu_active(i915)) {
dev_notice(i915->drm.dev,
"%s, disabling use of stolen memory\n",
@@ -387,10 +386,10 @@ static int i915_gem_init_stolen(struct drm_i915_private *i915)
return 0;
}
- if (resource_size(&intel_graphics_stolen_res) == 0)
+ if (!resource_size(&mem->region))
return 0;
- i915->dsm = intel_graphics_stolen_res;
+ i915->dsm = mem->region;
if (i915_adjust_stolen(i915, &i915->dsm))
return 0;
@@ -480,55 +479,44 @@ static int i915_gem_init_stolen(struct drm_i915_private *i915)
resource_size(&i915->dsm) - reserved_total;
/* Basic memrange allocator for stolen space. */
- drm_mm_init(&i915->mm.stolen, 0, i915->stolen_usable_size);
+ drm_mm_init(&mem->stolen, 0, i915->stolen_usable_size);
return 0;
}
-static struct sg_table *
-i915_pages_create_for_stolen(struct drm_device *dev,
- resource_size_t offset, resource_size_t size)
+static int i915_gem_object_get_pages_stolen(struct drm_i915_gem_object *obj)
{
- struct drm_i915_private *i915 = to_i915(dev);
+ struct intel_memory_region *mem = obj->mm.region;
+ resource_size_t offset = obj->mm.stolen->start;
+ resource_size_t size = obj->mm.stolen->size;
struct sg_table *st;
struct scatterlist *sg;
- GEM_BUG_ON(range_overflows(offset, size, resource_size(&i915->dsm)));
+ GEM_BUG_ON(range_overflows(offset, size, resource_size(&mem->region)));
- /* We hide that we have no struct page backing our stolen object
+ /*
+ * We hide that we have no struct page backing our stolen object
* by wrapping the contiguous physical allocation with a fake
* dma mapping in a single scatterlist.
*/
st = kmalloc(sizeof(*st), GFP_KERNEL);
- if (st == NULL)
- return ERR_PTR(-ENOMEM);
+ if (!st)
+ return -ENOMEM;
if (sg_alloc_table(st, 1, GFP_KERNEL)) {
kfree(st);
- return ERR_PTR(-ENOMEM);
+ return -ENOMEM;
}
sg = st->sgl;
sg->offset = 0;
sg->length = size;
- sg_dma_address(sg) = (dma_addr_t)i915->dsm.start + offset;
+ sg_dma_address(sg) = (dma_addr_t)mem->region.start + offset;
sg_dma_len(sg) = size;
- return st;
-}
-
-static int i915_gem_object_get_pages_stolen(struct drm_i915_gem_object *obj)
-{
- struct sg_table *pages =
- i915_pages_create_for_stolen(obj->base.dev,
- obj->stolen->start,
- obj->stolen->size);
- if (IS_ERR(pages))
- return PTR_ERR(pages);
-
- __i915_gem_object_set_pages(obj, pages, obj->stolen->size);
+ __i915_gem_object_set_pages(obj, st, size);
return 0;
}
@@ -536,23 +524,23 @@ static int i915_gem_object_get_pages_stolen(struct drm_i915_gem_object *obj)
static void i915_gem_object_put_pages_stolen(struct drm_i915_gem_object *obj,
struct sg_table *pages)
{
- /* Should only be called from i915_gem_object_release_stolen() */
- sg_free_table(pages);
- kfree(pages);
+ /* Should only be called from i915_gem_object_release_stolen() */
+ sg_free_table(pages);
+ kfree(pages);
}
static void
i915_gem_object_release_stolen(struct drm_i915_gem_object *obj)
{
- struct drm_i915_private *i915 = to_i915(obj->base.dev);
- struct drm_mm_node *stolen = fetch_and_zero(&obj->stolen);
+ struct intel_memory_region *mem = obj->mm.region;
+ struct drm_mm_node *stolen = fetch_and_zero(&obj->mm.stolen);
GEM_BUG_ON(!stolen);
- i915_gem_object_release_memory_region(obj);
-
- i915_gem_stolen_remove_node(i915, stolen);
+ i915_gem_stolen_remove_node(mem, stolen);
kfree(stolen);
+
+ i915_gem_object_release_memory_region(obj);
}
static const struct drm_i915_gem_object_ops i915_gem_object_stolen_ops = {
@@ -563,7 +551,8 @@ static const struct drm_i915_gem_object_ops i915_gem_object_stolen_ops = {
static struct drm_i915_gem_object *
__i915_gem_object_create_stolen(struct intel_memory_region *mem,
- struct drm_mm_node *stolen)
+ struct drm_mm_node *stolen,
+ unsigned int flags)
{
static struct lock_class_key lock_class;
struct drm_i915_gem_object *obj;
@@ -577,17 +566,17 @@ __i915_gem_object_create_stolen(struct intel_memory_region *mem,
drm_gem_private_object_init(&mem->i915->drm, &obj->base, stolen->size);
i915_gem_object_init(obj, &i915_gem_object_stolen_ops, &lock_class);
- obj->stolen = stolen;
+ obj->mm.stolen = stolen;
obj->read_domains = I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT;
cache_level = HAS_LLC(mem->i915) ? I915_CACHE_LLC : I915_CACHE_NONE;
i915_gem_object_set_cache_coherency(obj, cache_level);
+ i915_gem_object_init_memory_region(obj, mem, flags);
+
err = i915_gem_object_pin_pages(obj);
if (err)
goto cleanup;
- i915_gem_object_init_memory_region(obj, mem, 0);
-
return obj;
cleanup:
@@ -601,35 +590,35 @@ _i915_gem_object_create_stolen(struct intel_memory_region *mem,
resource_size_t size,
unsigned int flags)
{
- struct drm_i915_private *i915 = mem->i915;
struct drm_i915_gem_object *obj;
struct drm_mm_node *stolen;
int ret;
- if (!drm_mm_initialized(&i915->mm.stolen))
+ if (!drm_mm_initialized(&mem->stolen))
return ERR_PTR(-ENODEV);
- if (size == 0)
+ if (!size)
return ERR_PTR(-EINVAL);
stolen = kzalloc(sizeof(*stolen), GFP_KERNEL);
if (!stolen)
return ERR_PTR(-ENOMEM);
- ret = i915_gem_stolen_insert_node(i915, stolen, size, 4096);
+ ret = i915_gem_stolen_insert_node(mem, stolen, size,
+ mem->min_page_size);
if (ret) {
obj = ERR_PTR(ret);
goto err_free;
}
- obj = __i915_gem_object_create_stolen(mem, stolen);
+ obj = __i915_gem_object_create_stolen(mem, stolen, flags);
if (IS_ERR(obj))
goto err_remove;
return obj;
err_remove:
- i915_gem_stolen_remove_node(i915, stolen);
+ i915_gem_stolen_remove_node(mem, stolen);
err_free:
kfree(stolen);
return obj;
@@ -651,12 +640,12 @@ static int init_stolen(struct intel_memory_region *mem)
* Initialise stolen early so that we may reserve preallocated
* objects for the BIOS to KMS transition.
*/
- return i915_gem_init_stolen(mem->i915);
+ return i915_gem_init_stolen(mem);
}
static void release_stolen(struct intel_memory_region *mem)
{
- i915_gem_cleanup_stolen(mem->i915);
+ i915_gem_cleanup_stolen(mem);
}
static const struct intel_memory_region_ops i915_region_stolen_ops = {
@@ -687,7 +676,7 @@ i915_gem_object_create_stolen_for_preallocated(struct drm_i915_private *i915,
struct i915_vma *vma;
int ret;
- if (!drm_mm_initialized(&i915->mm.stolen))
+ if (!drm_mm_initialized(&mem->stolen))
return ERR_PTR(-ENODEV);
DRM_DEBUG_DRIVER("creating preallocated stolen object: stolen_offset=%pa, gtt_offset=%pa, size=%pa\n",
@@ -705,19 +694,20 @@ i915_gem_object_create_stolen_for_preallocated(struct drm_i915_private *i915,
stolen->start = stolen_offset;
stolen->size = size;
- mutex_lock(&i915->mm.stolen_lock);
- ret = drm_mm_reserve_node(&i915->mm.stolen, stolen);
- mutex_unlock(&i915->mm.stolen_lock);
+ mutex_lock(&mem->mm_lock);
+ ret = drm_mm_reserve_node(&mem->stolen, stolen);
+ mutex_unlock(&mem->mm_lock);
if (ret) {
DRM_DEBUG_DRIVER("failed to allocate stolen space\n");
kfree(stolen);
return ERR_PTR(ret);
}
- obj = __i915_gem_object_create_stolen(mem, stolen);
+ obj = __i915_gem_object_create_stolen(mem, stolen,
+ I915_BO_ALLOC_CONTIGUOUS);
if (IS_ERR(obj)) {
DRM_DEBUG_DRIVER("failed to allocate stolen object\n");
- i915_gem_stolen_remove_node(i915, stolen);
+ i915_gem_stolen_remove_node(mem, stolen);
kfree(stolen);
return obj;
}
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
index c1040627fbf3..511e8ffcf377 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
@@ -11,15 +11,16 @@
struct drm_i915_private;
struct drm_mm_node;
struct drm_i915_gem_object;
+struct intel_memory_region;
-int i915_gem_stolen_insert_node(struct drm_i915_private *dev_priv,
+int i915_gem_stolen_insert_node(struct intel_memory_region *mem,
struct drm_mm_node *node, u64 size,
unsigned alignment);
-int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *dev_priv,
+int i915_gem_stolen_insert_node_in_range(struct intel_memory_region *mem,
struct drm_mm_node *node, u64 size,
unsigned alignment, u64 start,
u64 end);
-void i915_gem_stolen_remove_node(struct drm_i915_private *dev_priv,
+void i915_gem_stolen_remove_node(struct intel_memory_region *mem,
struct drm_mm_node *node);
struct intel_memory_region *i915_gem_stolen_setup(struct drm_i915_private *i915);
struct drm_i915_gem_object *
diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c
index 9e303c29d6e3..c370023a7a63 100644
--- a/drivers/gpu/drm/i915/gt/intel_rc6.c
+++ b/drivers/gpu/drm/i915/gt/intel_rc6.c
@@ -325,9 +325,9 @@ static int vlv_rc6_init(struct intel_rc6 *rc6)
GEM_BUG_ON(range_overflows_t(u64,
i915->dsm.start,
- pctx->stolen->start,
+ pctx->mm.stolen->start,
U32_MAX));
- pctx_paddr = i915->dsm.start + pctx->stolen->start;
+ pctx_paddr = i915->dsm.start + pctx->mm.stolen->start;
intel_uncore_write(uncore, VLV_PCBR, pctx_paddr);
out:
diff --git a/drivers/gpu/drm/i915/gt/intel_ring.c b/drivers/gpu/drm/i915/gt/intel_ring.c
index 374b28f13ca0..5c442b8bdcb1 100644
--- a/drivers/gpu/drm/i915/gt/intel_ring.c
+++ b/drivers/gpu/drm/i915/gt/intel_ring.c
@@ -36,7 +36,7 @@ int intel_ring_pin(struct intel_ring *ring)
/* Ring wraparound at offset 0 sometimes hangs. No idea why. */
flags |= PIN_OFFSET_BIAS | i915_ggtt_pin_bias(vma);
- if (vma->obj->stolen)
+ if (vma->obj->mm.stolen)
flags |= PIN_MAPPABLE;
else
flags |= PIN_HIGH;
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 0ac98e39eb75..b6e99c4519be 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -213,8 +213,8 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj)
spin_unlock(&obj->vma.lock);
seq_printf(m, " (pinned x %d)", pin_count);
- if (obj->stolen)
- seq_printf(m, " (stolen: %08llx)", obj->stolen->start);
+ if (obj->mm.stolen)
+ seq_printf(m, " (stolen: %08llx)", obj->mm.stolen->start);
if (i915_gem_object_is_framebuffer(obj))
seq_printf(m, " (fb)");
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 2ee9f57d165d..b50d0953a40f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -550,12 +550,6 @@ struct intel_l3_parity {
};
struct i915_gem_mm {
- /** Memory allocator for GTT stolen memory */
- struct drm_mm stolen;
- /** Protects the usage of the GTT stolen memory allocator. This is
- * always the inner lock when overlapping with struct_mutex. */
- struct mutex stolen_lock;
-
/* Protects bound_list/unbound_list and #drm_i915_gem_object.mm.link */
spinlock_t obj_lock;
diff --git a/drivers/gpu/drm/i915/intel_memory_region.h b/drivers/gpu/drm/i915/intel_memory_region.h
index 7f4bff8f8be1..0c8e35be76a3 100644
--- a/drivers/gpu/drm/i915/intel_memory_region.h
+++ b/drivers/gpu/drm/i915/intel_memory_region.h
@@ -6,6 +6,7 @@
#ifndef __INTEL_MEMORY_REGION_H__
#define __INTEL_MEMORY_REGION_H__
+#include <drm/drm_mm.h>
#include <linux/kref.h>
#include <linux/ioport.h>
#include <linux/mutex.h>
@@ -79,6 +80,8 @@ struct intel_memory_region {
/* For fake LMEM */
struct drm_mm_node fake_mappable;
+ /* XXX: filthy midlayers */
+ struct drm_mm stolen;
struct i915_buddy_mm mm;
struct mutex mm_lock;
--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
@ 2020-01-03 20:00 ` Matthew Auld
2020-01-03 20:31 ` Chris Wilson
2020-01-03 20:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/lmem: stop mapping the aperture for fake LMEM Matthew Auld
` (5 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Matthew Auld @ 2020-01-03 20:00 UTC (permalink / raw)
To: intel-gfx
We currently assume we have struct pages for the backing storage of our
paging structures, however in the future we may also want to support
allocating storage from non-page backed memory, while still being able
to map it into the kernel address space for CPU access.
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/i915_gem_gtt.c | 109 +++++++++++++++++++++-------
drivers/gpu/drm/i915/i915_gem_gtt.h | 7 ++
2 files changed, 88 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 1efe58ad0ce9..48b3b9e681c9 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -588,11 +588,20 @@ static void i915_address_space_init(struct i915_address_space *vm, int subclass)
INIT_LIST_HEAD(&vm->bound_list);
}
-static int __setup_page_dma(struct i915_address_space *vm,
- struct i915_page_dma *p,
- gfp_t gfp)
+static void *kmap_page_dma_system(const struct i915_page_dma *p)
+{
+ return kmap_atomic(p->page);
+}
+
+static void kunmap_page_dma_system(void *vaddr)
+{
+ kunmap_atomic(vaddr);
+}
+
+static int setup_page_dma_system(struct i915_address_space *vm,
+ struct i915_page_dma *p)
{
- p->page = vm_alloc_page(vm, gfp | I915_GFP_ALLOW_FAIL);
+ p->page = vm_alloc_page(vm, __GFP_HIGHMEM | I915_GFP_ALLOW_FAIL);
if (unlikely(!p->page))
return -ENOMEM;
@@ -606,28 +615,54 @@ static int __setup_page_dma(struct i915_address_space *vm,
return -ENOMEM;
}
+ p->kmap = kmap_page_dma_system;
+ p->kunmap = kunmap_page_dma_system;
+
return 0;
}
+static void cleanup_page_dma_system(struct i915_address_space *vm,
+ struct i915_page_dma *p)
+{
+ dma_unmap_page(vm->dma, p->daddr, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
+ vm_free_page(vm, p->page);
+}
+
+static int __setup_page_dma(struct i915_address_space *vm,
+ struct i915_page_dma *p)
+{
+ return vm->setup_page_dma(vm, p);
+}
+
static int setup_page_dma(struct i915_address_space *vm,
struct i915_page_dma *p)
{
- return __setup_page_dma(vm, p, __GFP_HIGHMEM);
+ return __setup_page_dma(vm, p);
}
static void cleanup_page_dma(struct i915_address_space *vm,
struct i915_page_dma *p)
{
- dma_unmap_page(vm->dma, p->daddr, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
- vm_free_page(vm, p->page);
+ vm->cleanup_page_dma(vm, p);
}
-#define kmap_atomic_px(px) kmap_atomic(px_base(px)->page)
+static void kunmap_page_dma(const struct i915_page_dma *p, void *vaddr)
+{
+ p->kunmap(vaddr);
+}
+
+static void *kmap_page_dma(const struct i915_page_dma *p)
+{
+ return p->kmap(p);
+}
+
+#define kmap_atomic_px(px) kmap_page_dma(px_base(px))
+#define kunmap_atomic_px(px, vaddr) kunmap_page_dma(px_base(px), vaddr)
static void
fill_page_dma(const struct i915_page_dma *p, const u64 val, unsigned int count)
{
- kunmap_atomic(memset64(kmap_atomic(p->page), val, count));
+ kunmap_page_dma(p, memset64(kmap_page_dma(p), val, count));
}
#define fill_px(px, v) fill_page_dma(px_base(px), (v), PAGE_SIZE / sizeof(u64))
@@ -728,7 +763,7 @@ static struct i915_page_table *alloc_pt(struct i915_address_space *vm)
{
struct i915_page_table *pt;
- pt = kmalloc(sizeof(*pt), I915_GFP_ALLOW_FAIL);
+ pt = kzalloc(sizeof(*pt), I915_GFP_ALLOW_FAIL);
if (unlikely(!pt))
return ERR_PTR(-ENOMEM);
@@ -782,10 +817,10 @@ write_dma_entry(struct i915_page_dma * const pdma,
const unsigned short idx,
const u64 encoded_entry)
{
- u64 * const vaddr = kmap_atomic(pdma->page);
+ u64 * const vaddr = kmap_page_dma(pdma);
vaddr[idx] = encoded_entry;
- kunmap_atomic(vaddr);
+ kunmap_page_dma(pdma, vaddr);
}
static inline void
@@ -1017,7 +1052,7 @@ static u64 __gen8_ppgtt_clear(struct i915_address_space * const vm,
memset64(vaddr + gen8_pd_index(start, 0),
vm->scratch[0].encode,
count);
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(pt, vaddr);
atomic_sub(count, &pt->used);
start += count;
@@ -1184,10 +1219,12 @@ gen8_ppgtt_insert_pte(struct i915_ppgtt *ppgtt,
{
struct i915_page_directory *pd;
const gen8_pte_t pte_encode = gen8_pte_encode(0, cache_level, flags);
+ struct i915_page_table *pt;
gen8_pte_t *vaddr;
pd = i915_pd_entry(pdp, gen8_pd_index(idx, 2));
- vaddr = kmap_atomic_px(i915_pt_entry(pd, gen8_pd_index(idx, 1)));
+ pt = i915_pt_entry(pd, gen8_pd_index(idx, 1));
+ vaddr = kmap_atomic_px(pt);
do {
vaddr[gen8_pd_index(idx, 0)] = pte_encode | iter->dma;
@@ -1212,11 +1249,12 @@ gen8_ppgtt_insert_pte(struct i915_ppgtt *ppgtt,
pd = pdp->entry[gen8_pd_index(idx, 2)];
}
- kunmap_atomic(vaddr);
- vaddr = kmap_atomic_px(i915_pt_entry(pd, gen8_pd_index(idx, 1)));
+ kunmap_atomic_px(pt, vaddr);
+ pt = i915_pt_entry(pd, gen8_pd_index(idx, 1));
+ vaddr = kmap_atomic_px(pt);
}
} while (1);
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(pt, vaddr);
return idx;
}
@@ -1237,6 +1275,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
gen8_pdp_for_page_address(vma->vm, start);
struct i915_page_directory * const pd =
i915_pd_entry(pdp, __gen8_pte_index(start, 2));
+ struct i915_page_table *base;
gen8_pte_t encode = pte_encode;
unsigned int maybe_64K = -1;
unsigned int page_size;
@@ -1251,7 +1290,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
encode |= GEN8_PDE_PS_2M;
page_size = I915_GTT_PAGE_SIZE_2M;
- vaddr = kmap_atomic_px(pd);
+ base = &pd->pt;
} else {
struct i915_page_table *pt =
i915_pt_entry(pd, __gen8_pte_index(start, 1));
@@ -1266,9 +1305,11 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
rem >= (I915_PDES - index) * I915_GTT_PAGE_SIZE))
maybe_64K = __gen8_pte_index(start, 1);
- vaddr = kmap_atomic_px(pt);
+ base = pt;
}
+ vaddr = kmap_atomic_px(base);
+
do {
GEM_BUG_ON(iter->sg->length < page_size);
vaddr[index++] = encode | iter->dma;
@@ -1296,7 +1337,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
}
} while (rem >= page_size && index < I915_PDES);
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(base, vaddr);
/*
* Is it safe to mark the 2M block as 64K? -- Either we have
@@ -1312,7 +1353,7 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
I915_GTT_PAGE_SIZE_2M)))) {
vaddr = kmap_atomic_px(pd);
vaddr[maybe_64K] |= GEN8_PDE_IPS_64K;
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(pd, vaddr);
page_size = I915_GTT_PAGE_SIZE_64K;
/*
@@ -1325,15 +1366,17 @@ static void gen8_ppgtt_insert_huge(struct i915_vma *vma,
* selftests.
*/
if (I915_SELFTEST_ONLY(vma->vm->scrub_64K)) {
+ struct i915_page_table *pt =
+ i915_pt_entry(pd, maybe_64K);
u16 i;
encode = vma->vm->scratch[0].encode;
- vaddr = kmap_atomic_px(i915_pt_entry(pd, maybe_64K));
+ vaddr = kmap_atomic_px(pt);
for (i = 1; i < index; i += 16)
memset64(vaddr + i, encode, 15);
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(pt, vaddr);
}
}
@@ -1510,6 +1553,9 @@ static struct i915_ppgtt *gen8_ppgtt_create(struct drm_i915_private *i915)
if (IS_CHERRYVIEW(i915) || IS_BROXTON(i915))
ppgtt->vm.pt_kmap_wc = true;
+ ppgtt->vm.setup_page_dma = setup_page_dma_system;
+ ppgtt->vm.cleanup_page_dma = cleanup_page_dma_system;
+
err = gen8_init_scratch(&ppgtt->vm);
if (err)
goto err_free;
@@ -1644,7 +1690,7 @@ static void gen6_ppgtt_clear_range(struct i915_address_space *vm,
vaddr = kmap_atomic_px(pt);
memset32(vaddr + pte, scratch_pte, count);
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(pt, vaddr);
pte = 0;
}
@@ -1662,11 +1708,13 @@ static void gen6_ppgtt_insert_entries(struct i915_address_space *vm,
unsigned act_pte = first_entry % GEN6_PTES;
const u32 pte_encode = vm->pte_encode(0, cache_level, flags);
struct sgt_dma iter = sgt_dma(vma);
+ struct i915_page_table *pt;
gen6_pte_t *vaddr;
GEM_BUG_ON(pd->entry[act_pt] == &vm->scratch[1]);
- vaddr = kmap_atomic_px(i915_pt_entry(pd, act_pt));
+ pt = i915_pt_entry(pd, act_pt);
+ vaddr = kmap_atomic_px(pt);
do {
vaddr[act_pte] = pte_encode | GEN6_PTE_ADDR_ENCODE(iter.dma);
@@ -1681,12 +1729,14 @@ static void gen6_ppgtt_insert_entries(struct i915_address_space *vm,
}
if (++act_pte == GEN6_PTES) {
- kunmap_atomic(vaddr);
- vaddr = kmap_atomic_px(i915_pt_entry(pd, ++act_pt));
+ kunmap_atomic_px(pt, vaddr);
+
+ pt = i915_pt_entry(pd, ++act_pt);
+ vaddr = kmap_atomic_px(pt);
act_pte = 0;
}
} while (1);
- kunmap_atomic(vaddr);
+ kunmap_atomic_px(pt, vaddr);
vma->page_sizes.gtt = I915_GTT_PAGE_SIZE;
}
@@ -1990,6 +2040,9 @@ static struct i915_ppgtt *gen6_ppgtt_create(struct drm_i915_private *i915)
ppgtt->base.vm.pte_encode = ggtt->vm.pte_encode;
+ ppgtt->base.vm.setup_page_dma = setup_page_dma_system;
+ ppgtt->base.vm.cleanup_page_dma = cleanup_page_dma_system;
+
ppgtt->base.pd = __alloc_pd(sizeof(*ppgtt->base.pd));
if (!ppgtt->base.pd) {
err = -ENOMEM;
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h
index 31a4a96ddd0d..42ba96dffc3f 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.h
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
@@ -226,6 +226,9 @@ struct i915_page_dma {
*/
u32 ggtt_offset;
};
+
+ void *(*kmap)(const struct i915_page_dma *p);
+ void (*kunmap)(void *vaddr);
};
struct i915_page_scratch {
@@ -345,6 +348,10 @@ struct i915_address_space {
u32 flags); /* Create a valid PTE */
#define PTE_READ_ONLY (1<<0)
+ int (*setup_page_dma)(struct i915_address_space *vm,
+ struct i915_page_dma *p);
+ void (*cleanup_page_dma)(struct i915_address_space *vm,
+ struct i915_page_dma *p);
int (*allocate_va_range)(struct i915_address_space *vm,
u64 start, u64 length);
void (*clear_range)(struct i915_address_space *vm,
--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 3/3] drm/i915/lmem: stop mapping the aperture for fake LMEM
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
2020-01-03 20:00 ` [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures Matthew Auld
@ 2020-01-03 20:00 ` Matthew Auld
2020-01-03 20:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915: make stolen more region centric Patchwork
` (4 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Matthew Auld @ 2020-01-03 20:00 UTC (permalink / raw)
To: intel-gfx
Just map the region directly, otherwise we are just limiting ourselves
to the size of the mappable aperture. We still keep the same behaviour
with matching the size of the mappable_end, but that can now be
configured with its own modparam, such that we can configure larger
sizes.
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/i915_params.c | 2 +
drivers/gpu/drm/i915/i915_params.h | 1 +
drivers/gpu/drm/i915/intel_memory_region.h | 3 --
drivers/gpu/drm/i915/intel_region_lmem.c | 45 ++++++----------------
4 files changed, 14 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index 1dd1f3652795..21be0f1ced82 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -182,6 +182,8 @@ i915_param_named(enable_gvt, bool, 0400,
#if IS_ENABLED(CONFIG_DRM_I915_UNSTABLE_FAKE_LMEM)
i915_param_named_unsafe(fake_lmem_start, ulong, 0600,
"Fake LMEM start offset (default: 0)");
+i915_param_named_unsafe(fake_lmem_size, ulong, 0600,
+ "Fake LMEM size (default: 0)");
#endif
static __always_inline void _print_param(struct drm_printer *p,
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
index 31b88f297fbc..57078a45e6ba 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
@@ -67,6 +67,7 @@ struct drm_printer;
param(int, enable_dpcd_backlight, 0) \
param(char *, force_probe, CONFIG_DRM_I915_FORCE_PROBE) \
param(unsigned long, fake_lmem_start, 0) \
+ param(unsigned long, fake_lmem_size, 0) \
/* leave bools at the end to not create holes */ \
param(bool, alpha_support, IS_ENABLED(CONFIG_DRM_I915_ALPHA_SUPPORT)) \
param(bool, enable_hangcheck, true) \
diff --git a/drivers/gpu/drm/i915/intel_memory_region.h b/drivers/gpu/drm/i915/intel_memory_region.h
index 0c8e35be76a3..6e0c0d4c100e 100644
--- a/drivers/gpu/drm/i915/intel_memory_region.h
+++ b/drivers/gpu/drm/i915/intel_memory_region.h
@@ -77,9 +77,6 @@ struct intel_memory_region {
struct io_mapping iomap;
struct resource region;
- /* For fake LMEM */
- struct drm_mm_node fake_mappable;
-
/* XXX: filthy midlayers */
struct drm_mm stolen;
struct i915_buddy_mm mm;
diff --git a/drivers/gpu/drm/i915/intel_region_lmem.c b/drivers/gpu/drm/i915/intel_region_lmem.c
index e6a6b571dad4..aedffa2918c2 100644
--- a/drivers/gpu/drm/i915/intel_region_lmem.c
+++ b/drivers/gpu/drm/i915/intel_region_lmem.c
@@ -12,53 +12,29 @@
static int init_fake_lmem_bar(struct intel_memory_region *mem)
{
struct drm_i915_private *i915 = mem->i915;
- struct i915_ggtt *ggtt = &i915->ggtt;
- unsigned long n;
- int ret;
-
- /* We want to 1:1 map the mappable aperture to our reserved region */
-
- mem->fake_mappable.start = 0;
- mem->fake_mappable.size = resource_size(&mem->region);
- mem->fake_mappable.color = I915_COLOR_UNEVICTABLE;
-
- ret = drm_mm_reserve_node(&ggtt->vm.mm, &mem->fake_mappable);
- if (ret)
- return ret;
mem->remap_addr = dma_map_resource(&i915->drm.pdev->dev,
mem->region.start,
- mem->fake_mappable.size,
+ resource_size(&mem->region),
PCI_DMA_BIDIRECTIONAL,
DMA_ATTR_FORCE_CONTIGUOUS);
- if (dma_mapping_error(&i915->drm.pdev->dev, mem->remap_addr)) {
- drm_mm_remove_node(&mem->fake_mappable);
+ if (dma_mapping_error(&i915->drm.pdev->dev, mem->remap_addr))
return -EINVAL;
- }
-
- for (n = 0; n < mem->fake_mappable.size >> PAGE_SHIFT; ++n) {
- ggtt->vm.insert_page(&ggtt->vm,
- mem->remap_addr + (n << PAGE_SHIFT),
- n << PAGE_SHIFT,
- I915_CACHE_NONE, 0);
- }
mem->region = (struct resource)DEFINE_RES_MEM(mem->remap_addr,
- mem->fake_mappable.size);
+ resource_size(&mem->region));
return 0;
}
static void release_fake_lmem_bar(struct intel_memory_region *mem)
{
- if (!drm_mm_node_allocated(&mem->fake_mappable))
+ if (!i915_modparams.fake_lmem_start)
return;
- drm_mm_remove_node(&mem->fake_mappable);
-
dma_unmap_resource(&mem->i915->drm.pdev->dev,
mem->remap_addr,
- mem->fake_mappable.size,
+ resource_size(&mem->region),
PCI_DMA_BIDIRECTIONAL,
DMA_ATTR_FORCE_CONTIGUOUS);
}
@@ -107,22 +83,23 @@ intel_setup_fake_lmem(struct drm_i915_private *i915)
struct pci_dev *pdev = i915->drm.pdev;
struct intel_memory_region *mem;
resource_size_t mappable_end;
- resource_size_t io_start;
resource_size_t start;
+ resource_size_t size;
GEM_BUG_ON(i915_ggtt_has_aperture(&i915->ggtt));
GEM_BUG_ON(!i915_modparams.fake_lmem_start);
- /* Your mappable aperture belongs to me now! */
mappable_end = pci_resource_len(pdev, 2);
- io_start = pci_resource_start(pdev, 2),
start = i915_modparams.fake_lmem_start;
+ size = i915_modparams.fake_lmem_size;
+ if (!size)
+ size = mappable_end;
mem = intel_memory_region_create(i915,
start,
- mappable_end,
+ size,
PAGE_SIZE,
- io_start,
+ start,
&intel_region_lmem_ops);
if (!IS_ERR(mem)) {
DRM_INFO("Intel graphics fake LMEM: %pR\n", &mem->region);
--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915: make stolen more region centric
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
2020-01-03 20:00 ` [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures Matthew Auld
2020-01-03 20:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/lmem: stop mapping the aperture for fake LMEM Matthew Auld
@ 2020-01-03 20:08 ` Patchwork
2020-01-03 20:29 ` [Intel-gfx] [PATCH 1/3] " Chris Wilson
` (3 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2020-01-03 20:08 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/3] drm/i915: make stolen more region centric
URL : https://patchwork.freedesktop.org/series/71615/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
798fff7d1586 drm/i915: make stolen more region centric
-:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one
-:329: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#329: FILE: drivers/gpu/drm/i915/gem/i915_gem_stolen.c:528:
+ sg_free_table(pages);$
-:330: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#330: FILE: drivers/gpu/drm/i915/gem/i915_gem_stolen.c:529:
+ kfree(pages);$
total: 0 errors, 3 warnings, 0 checks, 502 lines checked
bdef42f5a543 drm/i915/gtt: refactor the storage assumptions around paging structures
c3ed5865acfc drm/i915/lmem: stop mapping the aperture for fake LMEM
-:24: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#24: FILE: drivers/gpu/drm/i915/i915_params.c:186:
+i915_param_named_unsafe(fake_lmem_size, ulong, 0600,
+ "Fake LMEM size (default: 0)");
total: 0 errors, 0 warnings, 1 checks, 110 lines checked
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
` (2 preceding siblings ...)
2020-01-03 20:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915: make stolen more region centric Patchwork
@ 2020-01-03 20:29 ` Chris Wilson
2020-01-14 23:57 ` Tang, CQ
2020-01-03 21:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/3] " Patchwork
` (2 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Chris Wilson @ 2020-01-03 20:29 UTC (permalink / raw)
To: Matthew Auld, intel-gfx
Quoting Matthew Auld (2020-01-03 20:00:28)
> From: CQ Tang <cq.tang@intel.com>
Just throwing the kitchen sink into intel_memory_region is not very
appetizing. There seems to be no design behind this -- as foretold by
the lack of rationale.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures
2020-01-03 20:00 ` [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures Matthew Auld
@ 2020-01-03 20:31 ` Chris Wilson
0 siblings, 0 replies; 10+ messages in thread
From: Chris Wilson @ 2020-01-03 20:31 UTC (permalink / raw)
To: Matthew Auld, intel-gfx
Quoting Matthew Auld (2020-01-03 20:00:29)
> We currently assume we have struct pages for the backing storage of our
> paging structures, however in the future we may also want to support
> allocating storage from non-page backed memory, while still being able
> to map it into the kernel address space for CPU access.
Please, let's not put a vfunc this deep / frequent. The next step was to
move this into gt/intel_gtt.c, gt/gen6_ppgtt.c, gt/gen8_ppgtt.c and
possibly gt/gen12_ppgtt.c for future directions.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915: make stolen more region centric
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
` (3 preceding siblings ...)
2020-01-03 20:29 ` [Intel-gfx] [PATCH 1/3] " Chris Wilson
@ 2020-01-03 21:05 ` Patchwork
2020-01-04 7:24 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-01-14 23:58 ` [Intel-gfx] [PATCH 1/3] " Tang, CQ
6 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2020-01-03 21:05 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/3] drm/i915: make stolen more region centric
URL : https://patchwork.freedesktop.org/series/71615/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_7674 -> Patchwork_15991
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/index.html
Known issues
------------
Here are the changes found in Patchwork_15991 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live_active:
- fi-glk-dsi: [PASS][1] -> [DMESG-FAIL][2] ([i915#765])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/fi-glk-dsi/igt@i915_selftest@live_active.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/fi-glk-dsi/igt@i915_selftest@live_active.html
#### Possible fixes ####
* igt@i915_module_load@reload-with-fault-injection:
- fi-skl-6700k2: [INCOMPLETE][3] ([i915#671]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/fi-skl-6700k2/igt@i915_module_load@reload-with-fault-injection.html
- fi-skl-6770hq: [INCOMPLETE][5] ([i915#671]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/fi-skl-6770hq/igt@i915_module_load@reload-with-fault-injection.html
[i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
[i915#765]: https://gitlab.freedesktop.org/drm/intel/issues/765
Participating hosts (46 -> 38)
------------------------------
Additional (3): fi-byt-n2820 fi-elk-e7500 fi-bsw-n3050
Missing (11): fi-ehl-1 fi-hsw-4200u fi-hsw-peppy fi-snb-2520m fi-kbl-7500u fi-ctg-p8600 fi-pnv-d510 fi-tgl-y fi-byt-clapper fi-bdw-samus fi-snb-2600
Build changes
-------------
* CI: CI-20190529 -> None
* Linux: CI_DRM_7674 -> Patchwork_15991
CI-20190529: 20190529
CI_DRM_7674: 6cdc2db5a5641dd00f47fcc80b83bb8adb777797 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5357: a555a4b98f90dab655d24bb3d07e9291a8b8dac8 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_15991: c3ed5865acfcfa43c898b9cfccd38c4c6cc4a362 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
c3ed5865acfc drm/i915/lmem: stop mapping the aperture for fake LMEM
bdef42f5a543 drm/i915/gtt: refactor the storage assumptions around paging structures
798fff7d1586 drm/i915: make stolen more region centric
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/3] drm/i915: make stolen more region centric
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
` (4 preceding siblings ...)
2020-01-03 21:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/3] " Patchwork
@ 2020-01-04 7:24 ` Patchwork
2020-01-14 23:58 ` [Intel-gfx] [PATCH 1/3] " Tang, CQ
6 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2020-01-04 7:24 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/3] drm/i915: make stolen more region centric
URL : https://patchwork.freedesktop.org/series/71615/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_7674_full -> Patchwork_15991_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
New tests
---------
New tests have been introduced between CI_DRM_7674_full and Patchwork_15991_full:
### New Piglit tests (7) ###
* spec@arb_vertex_attrib_64bit@execution@vs_in@vs-input-byte_ivec4-position-double_dmat4:
- Statuses : 1 fail(s)
- Exec time: [0.17] s
* spec@arb_vertex_attrib_64bit@execution@vs_in@vs-input-double_dmat3x4-float_mat3x2_array3-position:
- Statuses : 1 fail(s)
- Exec time: [0.17] s
* spec@arb_vertex_attrib_64bit@execution@vs_in@vs-input-double_dvec4_array5-position-float_vec2:
- Statuses : 1 fail(s)
- Exec time: [0.14] s
* spec@arb_vertex_attrib_64bit@execution@vs_in@vs-input-position-float_float-double_dmat3_array2:
- Statuses : 1 fail(s)
- Exec time: [0.16] s
* spec@glsl-4.20@execution@vs_in@vs-input-double_dmat3x4-int_ivec3-position:
- Statuses : 1 fail(s)
- Exec time: [0.14] s
* spec@glsl-4.20@execution@vs_in@vs-input-double_dvec3-int_ivec2-position:
- Statuses : 1 fail(s)
- Exec time: [0.15] s
* spec@glsl-4.20@execution@vs_in@vs-input-float_mat4-double_dvec4_array2-position:
- Statuses : 1 fail(s)
- Exec time: [0.14] s
Known issues
------------
Here are the changes found in Patchwork_15991_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_persistence@vcs1-mixed-process:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#109276] / [fdo#112080]) +1 similar issue
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb1/igt@gem_ctx_persistence@vcs1-mixed-process.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb5/igt@gem_ctx_persistence@vcs1-mixed-process.html
* igt@gem_ctx_shared@q-smoketest-all:
- shard-tglb: [PASS][3] -> [INCOMPLETE][4] ([fdo#111735])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb7/igt@gem_ctx_shared@q-smoketest-all.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb3/igt@gem_ctx_shared@q-smoketest-all.html
* igt@gem_ctx_shared@q-smoketest-bsd:
- shard-tglb: [PASS][5] -> [INCOMPLETE][6] ([i915#461])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb7/igt@gem_ctx_shared@q-smoketest-bsd.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb3/igt@gem_ctx_shared@q-smoketest-bsd.html
* igt@gem_eio@kms:
- shard-tglb: [PASS][7] -> [INCOMPLETE][8] ([i915#476])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb8/igt@gem_eio@kms.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb2/igt@gem_eio@kms.html
* igt@gem_exec_schedule@fifo-bsd1:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#109276]) +6 similar issues
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb1/igt@gem_exec_schedule@fifo-bsd1.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb8/igt@gem_exec_schedule@fifo-bsd1.html
* igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#112146]) +6 similar issues
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb7/igt@gem_exec_schedule@preempt-other-chain-bsd.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb1/igt@gem_exec_schedule@preempt-other-chain-bsd.html
* igt@gem_exec_schedule@preempt-queue-bsd2:
- shard-tglb: [PASS][13] -> [INCOMPLETE][14] ([fdo#111606] / [fdo#111677])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb5/igt@gem_exec_schedule@preempt-queue-bsd2.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb9/igt@gem_exec_schedule@preempt-queue-bsd2.html
* igt@gem_linear_blits@interruptible:
- shard-kbl: [PASS][15] -> [DMESG-WARN][16] ([i915#667])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-kbl2/igt@gem_linear_blits@interruptible.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-kbl3/igt@gem_linear_blits@interruptible.html
* igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive:
- shard-iclb: [PASS][17] -> [TIMEOUT][18] ([i915#530])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb5/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb5/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrash-inactive.html
* igt@gem_persistent_relocs@forked-interruptible-thrashing:
- shard-snb: [PASS][19] -> [FAIL][20] ([i915#520])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-snb5/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-snb7/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
* igt@gem_softpin@noreloc-s3:
- shard-skl: [PASS][21] -> [INCOMPLETE][22] ([i915#69]) +1 similar issue
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl4/igt@gem_softpin@noreloc-s3.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl2/igt@gem_softpin@noreloc-s3.html
* igt@gem_userptr_blits@sync-unmap-after-close:
- shard-apl: [PASS][23] -> [DMESG-WARN][24] ([fdo#111870] / [i915#211] / [i915#836])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-apl2/igt@gem_userptr_blits@sync-unmap-after-close.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-apl3/igt@gem_userptr_blits@sync-unmap-after-close.html
* igt@i915_selftest@live_requests:
- shard-tglb: [PASS][25] -> [INCOMPLETE][26] ([i915#472])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb2/igt@i915_selftest@live_requests.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb9/igt@i915_selftest@live_requests.html
* igt@kms_color@pipe-a-ctm-green-to-red:
- shard-skl: [PASS][27] -> [FAIL][28] ([i915#129])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl7/igt@kms_color@pipe-a-ctm-green-to-red.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl6/igt@kms_color@pipe-a-ctm-green-to-red.html
* igt@kms_cursor_crc@pipe-b-cursor-128x128-offscreen:
- shard-skl: [PASS][29] -> [FAIL][30] ([i915#54])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl9/igt@kms_cursor_crc@pipe-b-cursor-128x128-offscreen.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl4/igt@kms_cursor_crc@pipe-b-cursor-128x128-offscreen.html
* igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-kbl: [PASS][31] -> [DMESG-WARN][32] ([i915#180]) +8 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-kbl4/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-glk: [PASS][33] -> [FAIL][34] ([i915#72])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-glk9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-glk9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-skl: [PASS][35] -> [FAIL][36] ([i915#79])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl3/igt@kms_flip@flip-vs-expired-vblank.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl8/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt:
- shard-tglb: [PASS][37] -> [FAIL][38] ([i915#49]) +2 similar issues
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-skl: [PASS][39] -> [FAIL][40] ([i915#49])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
- shard-iclb: [PASS][41] -> [INCOMPLETE][42] ([i915#140] / [i915#250])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb1/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html
* igt@kms_plane@plane-position-covered-pipe-a-planes:
- shard-skl: [PASS][43] -> [FAIL][44] ([i915#247])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl7/igt@kms_plane@plane-position-covered-pipe-a-planes.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl6/igt@kms_plane@plane-position-covered-pipe-a-planes.html
* igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
- shard-skl: [PASS][45] -> [FAIL][46] ([fdo#108145])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl7/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl6/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html
* igt@kms_psr@psr2_sprite_mmap_cpu:
- shard-iclb: [PASS][47] -> [SKIP][48] ([fdo#109441]) +1 similar issue
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_cpu.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb1/igt@kms_psr@psr2_sprite_mmap_cpu.html
* igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-apl: [PASS][49] -> [DMESG-WARN][50] ([i915#180]) +1 similar issue
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-apl7/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-apl1/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
* igt@perf_pmu@busy-idle-check-all-vcs1:
- shard-iclb: [PASS][51] -> [SKIP][52] ([fdo#112080]) +2 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb2/igt@perf_pmu@busy-idle-check-all-vcs1.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb3/igt@perf_pmu@busy-idle-check-all-vcs1.html
#### Possible fixes ####
* igt@gem_ctx_isolation@rcs0-s3:
- shard-kbl: [DMESG-WARN][53] ([i915#180]) -> [PASS][54] +5 similar issues
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-kbl7/igt@gem_ctx_isolation@rcs0-s3.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-kbl4/igt@gem_ctx_isolation@rcs0-s3.html
* igt@gem_ctx_persistence@vcs1-queued:
- shard-iclb: [SKIP][55] ([fdo#109276] / [fdo#112080]) -> [PASS][56] +1 similar issue
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb7/igt@gem_ctx_persistence@vcs1-queued.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb1/igt@gem_ctx_persistence@vcs1-queued.html
* igt@gem_ctx_shared@q-smoketest-bsd1:
- shard-tglb: [INCOMPLETE][57] ([fdo#111735]) -> [PASS][58] +1 similar issue
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb6/igt@gem_ctx_shared@q-smoketest-bsd1.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb2/igt@gem_ctx_shared@q-smoketest-bsd1.html
* igt@gem_eio@in-flight-contexts-10ms:
- shard-snb: [TIMEOUT][59] ([fdo#111518]) -> [PASS][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-snb4/igt@gem_eio@in-flight-contexts-10ms.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-snb4/igt@gem_eio@in-flight-contexts-10ms.html
* igt@gem_eio@unwedge-stress:
- shard-tglb: [INCOMPLETE][61] ([i915#469]) -> [PASS][62]
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb5/igt@gem_eio@unwedge-stress.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb1/igt@gem_eio@unwedge-stress.html
* igt@gem_exec_balancer@nop:
- shard-tglb: [INCOMPLETE][63] ([fdo#111736]) -> [PASS][64] +1 similar issue
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb6/igt@gem_exec_balancer@nop.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb7/igt@gem_exec_balancer@nop.html
* igt@gem_exec_parallel@fds:
- shard-tglb: [INCOMPLETE][65] ([i915#470]) -> [PASS][66]
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb3/igt@gem_exec_parallel@fds.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb7/igt@gem_exec_parallel@fds.html
* igt@gem_exec_parallel@vcs1-fds:
- shard-iclb: [SKIP][67] ([fdo#112080]) -> [PASS][68] +5 similar issues
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb6/igt@gem_exec_parallel@vcs1-fds.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb4/igt@gem_exec_parallel@vcs1-fds.html
* {igt@gem_exec_schedule@pi-userfault-bsd}:
- shard-iclb: [SKIP][69] ([i915#677]) -> [PASS][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb4/igt@gem_exec_schedule@pi-userfault-bsd.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb3/igt@gem_exec_schedule@pi-userfault-bsd.html
* igt@gem_exec_schedule@preempt-queue-chain-render:
- shard-tglb: [INCOMPLETE][71] ([fdo#111606] / [fdo#111677]) -> [PASS][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb3/igt@gem_exec_schedule@preempt-queue-chain-render.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb1/igt@gem_exec_schedule@preempt-queue-chain-render.html
* igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd2:
- shard-tglb: [INCOMPLETE][73] ([fdo#111677]) -> [PASS][74]
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb8/igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd2.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb2/igt@gem_exec_schedule@preempt-queue-contexts-chain-bsd2.html
* igt@gem_exec_schedule@promotion-bsd:
- shard-iclb: [SKIP][75] ([fdo#112146]) -> [PASS][76] +1 similar issue
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb1/igt@gem_exec_schedule@promotion-bsd.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb5/igt@gem_exec_schedule@promotion-bsd.html
* igt@gem_exec_suspend@basic-s3:
- shard-tglb: [INCOMPLETE][77] ([fdo#111736] / [i915#460]) -> [PASS][78]
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb3/igt@gem_exec_suspend@basic-s3.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb7/igt@gem_exec_suspend@basic-s3.html
* igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-apl: [FAIL][79] ([i915#644]) -> [PASS][80]
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-apl6/igt@gem_ppgtt@flink-and-close-vma-leak.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-apl8/igt@gem_ppgtt@flink-and-close-vma-leak.html
* igt@gem_sync@basic-store-all:
- shard-tglb: [INCOMPLETE][81] ([i915#472]) -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb5/igt@gem_sync@basic-store-all.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb8/igt@gem_sync@basic-store-all.html
* igt@i915_selftest@live_blt:
- shard-hsw: [DMESG-FAIL][83] ([i915#725]) -> [PASS][84]
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-hsw7/igt@i915_selftest@live_blt.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-hsw7/igt@i915_selftest@live_blt.html
* igt@kms_color@pipe-a-ctm-0-5:
- shard-skl: [DMESG-WARN][85] ([i915#109]) -> [PASS][86]
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl6/igt@kms_color@pipe-a-ctm-0-5.html
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl7/igt@kms_color@pipe-a-ctm-0-5.html
* igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-apl: [DMESG-WARN][87] ([i915#180]) -> [PASS][88] +1 similar issue
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-apl1/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-apl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
* igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-skl: [FAIL][89] ([i915#34]) -> [PASS][90]
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl1/igt@kms_flip@plain-flip-fb-recreate-interruptible.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl7/igt@kms_flip@plain-flip-fb-recreate-interruptible.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
- shard-tglb: [FAIL][91] ([i915#49]) -> [PASS][92] +4 similar issues
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb7/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html
* igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
- shard-skl: [FAIL][93] ([fdo#108145]) -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl10/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl5/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html
* igt@kms_psr@psr2_basic:
- shard-iclb: [SKIP][95] ([fdo#109441]) -> [PASS][96] +1 similar issue
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb4/igt@kms_psr@psr2_basic.html
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb2/igt@kms_psr@psr2_basic.html
* igt@prime_vgem@fence-wait-bsd2:
- shard-iclb: [SKIP][97] ([fdo#109276]) -> [PASS][98] +12 similar issues
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-iclb6/igt@prime_vgem@fence-wait-bsd2.html
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-iclb1/igt@prime_vgem@fence-wait-bsd2.html
#### Warnings ####
* igt@gem_ctx_isolation@vcs2-dirty-create:
- shard-tglb: [SKIP][99] ([fdo#112080]) -> [SKIP][100] ([fdo#111912] / [fdo#112080])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb9/igt@gem_ctx_isolation@vcs2-dirty-create.html
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb8/igt@gem_ctx_isolation@vcs2-dirty-create.html
* igt@i915_pm_dc@dc6-dpms:
- shard-tglb: [SKIP][101] ([i915#468]) -> [FAIL][102] ([i915#454])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb3/igt@i915_pm_dc@dc6-dpms.html
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb7/igt@i915_pm_dc@dc6-dpms.html
* igt@i915_pm_dc@dc6-psr:
- shard-tglb: [FAIL][103] ([i915#454]) -> [SKIP][104] ([i915#468])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb7/igt@i915_pm_dc@dc6-psr.html
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb3/igt@i915_pm_dc@dc6-psr.html
- shard-skl: [FAIL][105] ([i915#454]) -> [INCOMPLETE][106] ([i915#198])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-skl9/igt@i915_pm_dc@dc6-psr.html
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-skl3/igt@i915_pm_dc@dc6-psr.html
* igt@kms_atomic_transition@6x-modeset-transitions-nonblocking:
- shard-tglb: [SKIP][107] ([fdo#112021]) -> [SKIP][108] ([fdo#112016] / [fdo#112021]) +1 similar issue
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7674/shard-tglb9/igt@kms_atomic_transition@6x-modeset-transitions-nonblocking.html
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/shard-tglb3/igt@kms_atomic_transition@6x-modeset-transitions-nonblocking.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#111518]: https://bugs.freedesktop.org/show_bug.cgi?id=111518
[fdo#111606]: https://bugs.freedesktop.org/show_bug.cgi?id=111606
[fdo#111677]: https://bugs.freedesktop.org/show_bug.cgi?id=111677
[fdo#111735]: https://bugs.freedesktop.org/show_bug.cgi?id=111735
[fdo#111736]: https://bugs.freedesktop.org/show_bug.cgi?id=111736
[fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870
[fdo#111912]: https://bugs.freedesktop.org/show_bug.cgi?id=111912
[fdo#112016]: https://bugs.freedesktop.org/show_bug.cgi?id=112016
[fdo#112021]: https://bugs.freedesktop.org/show_bug.cgi?id=112021
[fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
[fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
[i915#109]: https://gitlab.freedesktop.org/drm/intel/issues/109
[i915#129]: https://gitlab.freedesktop.org/drm/intel/issues/129
[i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198
[i915#211]: https://gitlab.freedesktop.org/drm/intel/issues/211
[i915#247]: https://gitlab.freedesktop.org/drm/intel/issues/247
[i915#250]: https://gitlab.freedesktop.org/drm/intel/issues/250
[i915#34]: https://gitlab.freedesktop.org/drm/intel/issues/34
[i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
[i915#460]: https://gitlab.freedesktop.org/drm/intel/issues/460
[i915#461]: https://gitlab.freedesktop.org/drm/intel/issues/461
[i915#468]: https://gitlab.freedesktop.org/drm/intel/issues/468
[i915#469]: https://gitlab.freedesktop.org/drm/intel/issues/469
[i915#470]: https://gitlab.freedesktop.org/drm/intel/issues/470
[i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
[i915#476]: https://gitlab.freedesktop.org/drm/intel/issues/476
[i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
[i915#520]: https://gitlab.freedesktop.org/drm/intel/issues/520
[i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530
[i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
[i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
[i915#667]: https://gitlab.freedesktop.org/drm/intel/issues/667
[i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677
[i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
[i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
[i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#836]: https://gitlab.freedesktop.org/drm/intel/issues/836
Participating hosts (10 -> 11)
------------------------------
Additional (1): pig-hsw-4770r
Build changes
-------------
* CI: CI-20190529 -> None
* Linux: CI_DRM_7674 -> Patchwork_15991
CI-20190529: 20190529
CI_DRM_7674: 6cdc2db5a5641dd00f47fcc80b83bb8adb777797 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5357: a555a4b98f90dab655d24bb3d07e9291a8b8dac8 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_15991: c3ed5865acfcfa43c898b9cfccd38c4c6cc4a362 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_15991/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric
2020-01-03 20:29 ` [Intel-gfx] [PATCH 1/3] " Chris Wilson
@ 2020-01-14 23:57 ` Tang, CQ
0 siblings, 0 replies; 10+ messages in thread
From: Tang, CQ @ 2020-01-14 23:57 UTC (permalink / raw)
To: Chris Wilson, Auld, Matthew, intel-gfx@lists.freedesktop.org
> -----Original Message-----
> From: Chris Wilson <chris@chris-wilson.co.uk>
> Sent: Friday, January 3, 2020 12:29 PM
> To: Auld, Matthew <matthew.auld@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: Tang, CQ <cq.tang@intel.com>
> Subject: Re: [PATCH 1/3] drm/i915: make stolen more region centric
>
> Quoting Matthew Auld (2020-01-03 20:00:28)
> > From: CQ Tang <cq.tang@intel.com>
>
> Just throwing the kitchen sink into intel_memory_region is not very
> appetizing. There seems to be no design behind this -- as foretold by the lack
> of rationale.
For single stolen region, I agreed with you. But this is used to match the other region design, and prepare multiple stolen regions.
--CQ
> -Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
` (5 preceding siblings ...)
2020-01-04 7:24 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
@ 2020-01-14 23:58 ` Tang, CQ
6 siblings, 0 replies; 10+ messages in thread
From: Tang, CQ @ 2020-01-14 23:58 UTC (permalink / raw)
To: Auld, Matthew, intel-gfx@lists.freedesktop.org
Reviewed-by: CQ Tang <cq.tang@intel.com>
> -----Original Message-----
> From: Auld, Matthew <matthew.auld@intel.com>
> Sent: Friday, January 3, 2020 12:00 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Tang, CQ <cq.tang@intel.com>; Chris Wilson <chris@chris-wilson.co.uk>
> Subject: [PATCH 1/3] drm/i915: make stolen more region centric
>
> From: CQ Tang <cq.tang@intel.com>
>
> Signed-off-by: CQ Tang <cq.tang@intel.com>
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 20 +--
> drivers/gpu/drm/i915/display/intel_fbdev.c | 4 +-
> .../gpu/drm/i915/gem/i915_gem_object_types.h | 7 +-
> drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 128 ++++++++----------
> drivers/gpu/drm/i915/gem/i915_gem_stolen.h | 7 +-
> drivers/gpu/drm/i915/gt/intel_rc6.c | 4 +-
> drivers/gpu/drm/i915/gt/intel_ring.c | 2 +-
> drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
> drivers/gpu/drm/i915/i915_drv.h | 6 -
> drivers/gpu/drm/i915/intel_memory_region.h | 3 +
> 10 files changed, 90 insertions(+), 95 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index a1048ece541e..3c4e70da717c 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -420,6 +420,7 @@ static int find_compression_threshold(struct
> drm_i915_private *dev_priv,
> unsigned int size,
> unsigned int fb_cpp)
> {
> + struct intel_memory_region *mem =
> +dev_priv->mm.regions[INTEL_REGION_STOLEN];
> int compression_threshold = 1;
> int ret;
> u64 end;
> @@ -441,7 +442,7 @@ static int find_compression_threshold(struct
> drm_i915_private *dev_priv,
> */
>
> /* Try to over-allocate to reduce reallocations and fragmentation. */
> - ret = i915_gem_stolen_insert_node_in_range(dev_priv, node, size
> <<= 1,
> + ret = i915_gem_stolen_insert_node_in_range(mem, node, size <<=
> 1,
> 4096, 0, end);
> if (ret == 0)
> return compression_threshold;
> @@ -452,7 +453,7 @@ static int find_compression_threshold(struct
> drm_i915_private *dev_priv,
> (fb_cpp == 2 && compression_threshold == 2))
> return 0;
>
> - ret = i915_gem_stolen_insert_node_in_range(dev_priv, node,
> size >>= 1,
> + ret = i915_gem_stolen_insert_node_in_range(mem, node, size >>=
> 1,
> 4096, 0, end);
> if (ret && INTEL_GEN(dev_priv) <= 4) {
> return 0;
> @@ -467,6 +468,7 @@ static int find_compression_threshold(struct
> drm_i915_private *dev_priv, static int intel_fbc_alloc_cfb(struct
> drm_i915_private *dev_priv,
> unsigned int size, unsigned int fb_cpp) {
> + struct intel_memory_region *mem =
> +dev_priv->mm.regions[INTEL_REGION_STOLEN];
> struct intel_fbc *fbc = &dev_priv->fbc;
> struct drm_mm_node *uninitialized_var(compressed_llb);
> int ret;
> @@ -493,7 +495,7 @@ static int intel_fbc_alloc_cfb(struct drm_i915_private
> *dev_priv,
> if (!compressed_llb)
> goto err_fb;
>
> - ret = i915_gem_stolen_insert_node(dev_priv,
> compressed_llb,
> + ret = i915_gem_stolen_insert_node(mem, compressed_llb,
> 4096, 4096);
> if (ret)
> goto err_fb;
> @@ -519,22 +521,23 @@ static int intel_fbc_alloc_cfb(struct
> drm_i915_private *dev_priv,
>
> err_fb:
> kfree(compressed_llb);
> - i915_gem_stolen_remove_node(dev_priv, &fbc->compressed_fb);
> + i915_gem_stolen_remove_node(mem, &fbc->compressed_fb);
> err_llb:
> - if (drm_mm_initialized(&dev_priv->mm.stolen))
> + if (drm_mm_initialized(&mem->stolen))
> pr_info_once("drm: not enough stolen space for
> compressed buffer (need %d more bytes), disabling. Hint: you may be able
> to increase stolen memory size in the BIOS to avoid this.\n", size);
> return -ENOSPC;
> }
>
> static void __intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv) {
> + struct intel_memory_region *mem =
> +dev_priv->mm.regions[INTEL_REGION_STOLEN];
> struct intel_fbc *fbc = &dev_priv->fbc;
>
> if (drm_mm_node_allocated(&fbc->compressed_fb))
> - i915_gem_stolen_remove_node(dev_priv, &fbc-
> >compressed_fb);
> + i915_gem_stolen_remove_node(mem, &fbc-
> >compressed_fb);
>
> if (fbc->compressed_llb) {
> - i915_gem_stolen_remove_node(dev_priv, fbc-
> >compressed_llb);
> + i915_gem_stolen_remove_node(mem, fbc-
> >compressed_llb);
> kfree(fbc->compressed_llb);
> }
> }
> @@ -1325,13 +1328,14 @@ static bool need_fbc_vtd_wa(struct
> drm_i915_private *dev_priv)
> */
> void intel_fbc_init(struct drm_i915_private *dev_priv) {
> + struct intel_memory_region *mem =
> +dev_priv->mm.regions[INTEL_REGION_STOLEN];
> struct intel_fbc *fbc = &dev_priv->fbc;
>
> INIT_WORK(&fbc->underrun_work, intel_fbc_underrun_work_fn);
> mutex_init(&fbc->lock);
> fbc->active = false;
>
> - if (!drm_mm_initialized(&dev_priv->mm.stolen))
> + if (!drm_mm_initialized(&mem->stolen))
> mkwrite_device_info(dev_priv)->display.has_fbc = false;
>
> if (need_fbc_vtd_wa(dev_priv))
> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c
> b/drivers/gpu/drm/i915/display/intel_fbdev.c
> index 1e98e432c9fa..522ea9538c16 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
> @@ -254,7 +254,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
> * If the object is stolen however, it will be full of whatever
> * garbage was left in there.
> */
> - if (vma->obj->stolen && !prealloc)
> + if (vma->obj->mm.stolen && !prealloc)
> memset_io(info->screen_base, 0, info->screen_size);
>
> /* Use default scratch pixmap (info->pixmap.flags =
> FB_PIXMAP_SYSTEM) */ @@ -584,7 +584,7 @@ void
> intel_fbdev_set_suspend(struct drm_device *dev, int state, bool
> synchronous
> * full of whatever garbage was left in there.
> */
> if (state == FBINFO_STATE_RUNNING &&
> - intel_fb_obj(&ifbdev->fb->base)->stolen)
> + intel_fb_obj(&ifbdev->fb->base)->mm.stolen)
> memset_io(info->screen_base, 0, info->screen_size);
>
> drm_fb_helper_set_suspend(&ifbdev->helper, state); diff --git
> a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
> b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
> index 88e268633fdc..1919994fee33 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
> @@ -122,8 +122,6 @@ struct drm_i915_gem_object {
> */
> struct list_head lut_list;
>
> - /** Stolen memory for this object, instead of being backed by
> shmem. */
> - struct drm_mm_node *stolen;
> union {
> struct rcu_head rcu;
> struct llist_node freed;
> @@ -201,6 +199,11 @@ struct drm_i915_gem_object {
> * List of memory region blocks allocated for this object.
> */
> struct list_head blocks;
> + /**
> + * The memory region block allocated for this object, if
> backed
> + * by stolen memory.
> + */
> + struct drm_mm_node *stolen;
> /**
> * Element within memory_region->objects or region-
> >purgeable
> * if the object is marked as DONTNEED. Access is protected
> by diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> index 451f3078d60d..ddb59a2fbbfe 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> @@ -26,42 +26,42 @@
> * for is a boon.
> */
>
> -int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
> +int i915_gem_stolen_insert_node_in_range(struct intel_memory_region
> +*mem,
> struct drm_mm_node *node, u64
> size,
> unsigned alignment, u64 start, u64
> end) {
> int ret;
>
> - if (!drm_mm_initialized(&i915->mm.stolen))
> + if (!drm_mm_initialized(&mem->stolen))
> return -ENODEV;
>
> /* WaSkipStolenMemoryFirstPage:bdw+ */
> - if (INTEL_GEN(i915) >= 8 && start < 4096)
> + if (INTEL_GEN(mem->i915) >= 8 && start < 4096)
> start = 4096;
>
> - mutex_lock(&i915->mm.stolen_lock);
> - ret = drm_mm_insert_node_in_range(&i915->mm.stolen, node,
> + mutex_lock(&mem->mm_lock);
> + ret = drm_mm_insert_node_in_range(&mem->stolen, node,
> size, alignment, 0,
> start, end, DRM_MM_INSERT_BEST);
> - mutex_unlock(&i915->mm.stolen_lock);
> + mutex_unlock(&mem->mm_lock);
>
> return ret;
> }
>
> -int i915_gem_stolen_insert_node(struct drm_i915_private *i915,
> +int i915_gem_stolen_insert_node(struct intel_memory_region *mem,
> struct drm_mm_node *node, u64 size,
> unsigned alignment)
> {
> - return i915_gem_stolen_insert_node_in_range(i915, node, size,
> + return i915_gem_stolen_insert_node_in_range(mem, node, size,
> alignment, 0, U64_MAX);
> }
>
> -void i915_gem_stolen_remove_node(struct drm_i915_private *i915,
> +void i915_gem_stolen_remove_node(struct intel_memory_region *mem,
> struct drm_mm_node *node)
> {
> - mutex_lock(&i915->mm.stolen_lock);
> + mutex_lock(&mem->mm_lock);
> drm_mm_remove_node(node);
> - mutex_unlock(&i915->mm.stolen_lock);
> + mutex_unlock(&mem->mm_lock);
> }
>
> static int i915_adjust_stolen(struct drm_i915_private *i915, @@ -152,12
> +152,12 @@ static int i915_adjust_stolen(struct drm_i915_private *i915,
> return 0;
> }
>
> -static void i915_gem_cleanup_stolen(struct drm_i915_private *i915)
> +static void i915_gem_cleanup_stolen(struct intel_memory_region *mem)
> {
> - if (!drm_mm_initialized(&i915->mm.stolen))
> + if (!drm_mm_initialized(&mem->stolen))
> return;
>
> - drm_mm_takedown(&i915->mm.stolen);
> + drm_mm_takedown(&mem->stolen);
> }
>
> static void g4x_get_stolen_reserved(struct drm_i915_private *i915, @@ -
> 365,14 +365,13 @@ static void icl_get_stolen_reserved(struct
> drm_i915_private *i915,
> }
> }
>
> -static int i915_gem_init_stolen(struct drm_i915_private *i915)
> +static int i915_gem_init_stolen(struct intel_memory_region *mem)
> {
> + struct drm_i915_private *i915 = mem->i915;
> struct intel_uncore *uncore = &i915->uncore;
> resource_size_t reserved_base, stolen_top;
> resource_size_t reserved_total, reserved_size;
>
> - mutex_init(&i915->mm.stolen_lock);
> -
> if (intel_vgpu_active(i915)) {
> dev_notice(i915->drm.dev,
> "%s, disabling use of stolen memory\n", @@ -
> 387,10 +386,10 @@ static int i915_gem_init_stolen(struct drm_i915_private
> *i915)
> return 0;
> }
>
> - if (resource_size(&intel_graphics_stolen_res) == 0)
> + if (!resource_size(&mem->region))
> return 0;
>
> - i915->dsm = intel_graphics_stolen_res;
> + i915->dsm = mem->region;
>
> if (i915_adjust_stolen(i915, &i915->dsm))
> return 0;
> @@ -480,55 +479,44 @@ static int i915_gem_init_stolen(struct
> drm_i915_private *i915)
> resource_size(&i915->dsm) - reserved_total;
>
> /* Basic memrange allocator for stolen space. */
> - drm_mm_init(&i915->mm.stolen, 0, i915->stolen_usable_size);
> + drm_mm_init(&mem->stolen, 0, i915->stolen_usable_size);
>
> return 0;
> }
>
> -static struct sg_table *
> -i915_pages_create_for_stolen(struct drm_device *dev,
> - resource_size_t offset, resource_size_t size)
> +static int i915_gem_object_get_pages_stolen(struct drm_i915_gem_object
> +*obj)
> {
> - struct drm_i915_private *i915 = to_i915(dev);
> + struct intel_memory_region *mem = obj->mm.region;
> + resource_size_t offset = obj->mm.stolen->start;
> + resource_size_t size = obj->mm.stolen->size;
> struct sg_table *st;
> struct scatterlist *sg;
>
> - GEM_BUG_ON(range_overflows(offset, size, resource_size(&i915-
> >dsm)));
> + GEM_BUG_ON(range_overflows(offset, size,
> +resource_size(&mem->region)));
>
> - /* We hide that we have no struct page backing our stolen object
> + /*
> + * We hide that we have no struct page backing our stolen object
> * by wrapping the contiguous physical allocation with a fake
> * dma mapping in a single scatterlist.
> */
>
> st = kmalloc(sizeof(*st), GFP_KERNEL);
> - if (st == NULL)
> - return ERR_PTR(-ENOMEM);
> + if (!st)
> + return -ENOMEM;
>
> if (sg_alloc_table(st, 1, GFP_KERNEL)) {
> kfree(st);
> - return ERR_PTR(-ENOMEM);
> + return -ENOMEM;
> }
>
> sg = st->sgl;
> sg->offset = 0;
> sg->length = size;
>
> - sg_dma_address(sg) = (dma_addr_t)i915->dsm.start + offset;
> + sg_dma_address(sg) = (dma_addr_t)mem->region.start + offset;
> sg_dma_len(sg) = size;
>
> - return st;
> -}
> -
> -static int i915_gem_object_get_pages_stolen(struct drm_i915_gem_object
> *obj) -{
> - struct sg_table *pages =
> - i915_pages_create_for_stolen(obj->base.dev,
> - obj->stolen->start,
> - obj->stolen->size);
> - if (IS_ERR(pages))
> - return PTR_ERR(pages);
> -
> - __i915_gem_object_set_pages(obj, pages, obj->stolen->size);
> + __i915_gem_object_set_pages(obj, st, size);
>
> return 0;
> }
> @@ -536,23 +524,23 @@ static int
> i915_gem_object_get_pages_stolen(struct drm_i915_gem_object *obj)
> static void i915_gem_object_put_pages_stolen(struct
> drm_i915_gem_object *obj,
> struct sg_table *pages)
> {
> - /* Should only be called from i915_gem_object_release_stolen() */
> - sg_free_table(pages);
> - kfree(pages);
> + /* Should only be called from i915_gem_object_release_stolen() */
> + sg_free_table(pages);
> + kfree(pages);
> }
>
> static void
> i915_gem_object_release_stolen(struct drm_i915_gem_object *obj) {
> - struct drm_i915_private *i915 = to_i915(obj->base.dev);
> - struct drm_mm_node *stolen = fetch_and_zero(&obj->stolen);
> + struct intel_memory_region *mem = obj->mm.region;
> + struct drm_mm_node *stolen = fetch_and_zero(&obj->mm.stolen);
>
> GEM_BUG_ON(!stolen);
>
> - i915_gem_object_release_memory_region(obj);
> -
> - i915_gem_stolen_remove_node(i915, stolen);
> + i915_gem_stolen_remove_node(mem, stolen);
> kfree(stolen);
> +
> + i915_gem_object_release_memory_region(obj);
> }
>
> static const struct drm_i915_gem_object_ops i915_gem_object_stolen_ops
> = { @@ -563,7 +551,8 @@ static const struct drm_i915_gem_object_ops
> i915_gem_object_stolen_ops = {
>
> static struct drm_i915_gem_object *
> __i915_gem_object_create_stolen(struct intel_memory_region *mem,
> - struct drm_mm_node *stolen)
> + struct drm_mm_node *stolen,
> + unsigned int flags)
> {
> static struct lock_class_key lock_class;
> struct drm_i915_gem_object *obj;
> @@ -577,17 +566,17 @@ __i915_gem_object_create_stolen(struct
> intel_memory_region *mem,
> drm_gem_private_object_init(&mem->i915->drm, &obj->base,
> stolen->size);
> i915_gem_object_init(obj, &i915_gem_object_stolen_ops,
> &lock_class);
>
> - obj->stolen = stolen;
> + obj->mm.stolen = stolen;
> obj->read_domains = I915_GEM_DOMAIN_CPU |
> I915_GEM_DOMAIN_GTT;
> cache_level = HAS_LLC(mem->i915) ? I915_CACHE_LLC :
> I915_CACHE_NONE;
> i915_gem_object_set_cache_coherency(obj, cache_level);
>
> + i915_gem_object_init_memory_region(obj, mem, flags);
> +
> err = i915_gem_object_pin_pages(obj);
> if (err)
> goto cleanup;
>
> - i915_gem_object_init_memory_region(obj, mem, 0);
> -
> return obj;
>
> cleanup:
> @@ -601,35 +590,35 @@ _i915_gem_object_create_stolen(struct
> intel_memory_region *mem,
> resource_size_t size,
> unsigned int flags)
> {
> - struct drm_i915_private *i915 = mem->i915;
> struct drm_i915_gem_object *obj;
> struct drm_mm_node *stolen;
> int ret;
>
> - if (!drm_mm_initialized(&i915->mm.stolen))
> + if (!drm_mm_initialized(&mem->stolen))
> return ERR_PTR(-ENODEV);
>
> - if (size == 0)
> + if (!size)
> return ERR_PTR(-EINVAL);
>
> stolen = kzalloc(sizeof(*stolen), GFP_KERNEL);
> if (!stolen)
> return ERR_PTR(-ENOMEM);
>
> - ret = i915_gem_stolen_insert_node(i915, stolen, size, 4096);
> + ret = i915_gem_stolen_insert_node(mem, stolen, size,
> + mem->min_page_size);
> if (ret) {
> obj = ERR_PTR(ret);
> goto err_free;
> }
>
> - obj = __i915_gem_object_create_stolen(mem, stolen);
> + obj = __i915_gem_object_create_stolen(mem, stolen, flags);
> if (IS_ERR(obj))
> goto err_remove;
>
> return obj;
>
> err_remove:
> - i915_gem_stolen_remove_node(i915, stolen);
> + i915_gem_stolen_remove_node(mem, stolen);
> err_free:
> kfree(stolen);
> return obj;
> @@ -651,12 +640,12 @@ static int init_stolen(struct intel_memory_region
> *mem)
> * Initialise stolen early so that we may reserve preallocated
> * objects for the BIOS to KMS transition.
> */
> - return i915_gem_init_stolen(mem->i915);
> + return i915_gem_init_stolen(mem);
> }
>
> static void release_stolen(struct intel_memory_region *mem) {
> - i915_gem_cleanup_stolen(mem->i915);
> + i915_gem_cleanup_stolen(mem);
> }
>
> static const struct intel_memory_region_ops i915_region_stolen_ops =
> { @@ -687,7 +676,7 @@
> i915_gem_object_create_stolen_for_preallocated(struct drm_i915_private
> *i915,
> struct i915_vma *vma;
> int ret;
>
> - if (!drm_mm_initialized(&i915->mm.stolen))
> + if (!drm_mm_initialized(&mem->stolen))
> return ERR_PTR(-ENODEV);
>
> DRM_DEBUG_DRIVER("creating preallocated stolen object:
> stolen_offset=%pa, gtt_offset=%pa, size=%pa\n", @@ -705,19 +694,20 @@
> i915_gem_object_create_stolen_for_preallocated(struct drm_i915_private
> *i915,
>
> stolen->start = stolen_offset;
> stolen->size = size;
> - mutex_lock(&i915->mm.stolen_lock);
> - ret = drm_mm_reserve_node(&i915->mm.stolen, stolen);
> - mutex_unlock(&i915->mm.stolen_lock);
> + mutex_lock(&mem->mm_lock);
> + ret = drm_mm_reserve_node(&mem->stolen, stolen);
> + mutex_unlock(&mem->mm_lock);
> if (ret) {
> DRM_DEBUG_DRIVER("failed to allocate stolen space\n");
> kfree(stolen);
> return ERR_PTR(ret);
> }
>
> - obj = __i915_gem_object_create_stolen(mem, stolen);
> + obj = __i915_gem_object_create_stolen(mem, stolen,
> + I915_BO_ALLOC_CONTIGUOUS);
> if (IS_ERR(obj)) {
> DRM_DEBUG_DRIVER("failed to allocate stolen object\n");
> - i915_gem_stolen_remove_node(i915, stolen);
> + i915_gem_stolen_remove_node(mem, stolen);
> kfree(stolen);
> return obj;
> }
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> index c1040627fbf3..511e8ffcf377 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> @@ -11,15 +11,16 @@
> struct drm_i915_private;
> struct drm_mm_node;
> struct drm_i915_gem_object;
> +struct intel_memory_region;
>
> -int i915_gem_stolen_insert_node(struct drm_i915_private *dev_priv,
> +int i915_gem_stolen_insert_node(struct intel_memory_region *mem,
> struct drm_mm_node *node, u64 size,
> unsigned alignment);
> -int i915_gem_stolen_insert_node_in_range(struct drm_i915_private
> *dev_priv,
> +int i915_gem_stolen_insert_node_in_range(struct intel_memory_region
> +*mem,
> struct drm_mm_node *node, u64
> size,
> unsigned alignment, u64 start,
> u64 end);
> -void i915_gem_stolen_remove_node(struct drm_i915_private *dev_priv,
> +void i915_gem_stolen_remove_node(struct intel_memory_region *mem,
> struct drm_mm_node *node);
> struct intel_memory_region *i915_gem_stolen_setup(struct
> drm_i915_private *i915); struct drm_i915_gem_object * diff --git
> a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c
> index 9e303c29d6e3..c370023a7a63 100644
> --- a/drivers/gpu/drm/i915/gt/intel_rc6.c
> +++ b/drivers/gpu/drm/i915/gt/intel_rc6.c
> @@ -325,9 +325,9 @@ static int vlv_rc6_init(struct intel_rc6 *rc6)
>
> GEM_BUG_ON(range_overflows_t(u64,
> i915->dsm.start,
> - pctx->stolen->start,
> + pctx->mm.stolen->start,
> U32_MAX));
> - pctx_paddr = i915->dsm.start + pctx->stolen->start;
> + pctx_paddr = i915->dsm.start + pctx->mm.stolen->start;
> intel_uncore_write(uncore, VLV_PCBR, pctx_paddr);
>
> out:
> diff --git a/drivers/gpu/drm/i915/gt/intel_ring.c
> b/drivers/gpu/drm/i915/gt/intel_ring.c
> index 374b28f13ca0..5c442b8bdcb1 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ring.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ring.c
> @@ -36,7 +36,7 @@ int intel_ring_pin(struct intel_ring *ring)
> /* Ring wraparound at offset 0 sometimes hangs. No idea why. */
> flags |= PIN_OFFSET_BIAS | i915_ggtt_pin_bias(vma);
>
> - if (vma->obj->stolen)
> + if (vma->obj->mm.stolen)
> flags |= PIN_MAPPABLE;
> else
> flags |= PIN_HIGH;
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c
> b/drivers/gpu/drm/i915/i915_debugfs.c
> index 0ac98e39eb75..b6e99c4519be 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -213,8 +213,8 @@ describe_obj(struct seq_file *m, struct
> drm_i915_gem_object *obj)
> spin_unlock(&obj->vma.lock);
>
> seq_printf(m, " (pinned x %d)", pin_count);
> - if (obj->stolen)
> - seq_printf(m, " (stolen: %08llx)", obj->stolen->start);
> + if (obj->mm.stolen)
> + seq_printf(m, " (stolen: %08llx)", obj->mm.stolen->start);
> if (i915_gem_object_is_framebuffer(obj))
> seq_printf(m, " (fb)");
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h
> b/drivers/gpu/drm/i915/i915_drv.h index 2ee9f57d165d..b50d0953a40f
> 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -550,12 +550,6 @@ struct intel_l3_parity { };
>
> struct i915_gem_mm {
> - /** Memory allocator for GTT stolen memory */
> - struct drm_mm stolen;
> - /** Protects the usage of the GTT stolen memory allocator. This is
> - * always the inner lock when overlapping with struct_mutex. */
> - struct mutex stolen_lock;
> -
> /* Protects bound_list/unbound_list and
> #drm_i915_gem_object.mm.link */
> spinlock_t obj_lock;
>
> diff --git a/drivers/gpu/drm/i915/intel_memory_region.h
> b/drivers/gpu/drm/i915/intel_memory_region.h
> index 7f4bff8f8be1..0c8e35be76a3 100644
> --- a/drivers/gpu/drm/i915/intel_memory_region.h
> +++ b/drivers/gpu/drm/i915/intel_memory_region.h
> @@ -6,6 +6,7 @@
> #ifndef __INTEL_MEMORY_REGION_H__
> #define __INTEL_MEMORY_REGION_H__
>
> +#include <drm/drm_mm.h>
> #include <linux/kref.h>
> #include <linux/ioport.h>
> #include <linux/mutex.h>
> @@ -79,6 +80,8 @@ struct intel_memory_region {
> /* For fake LMEM */
> struct drm_mm_node fake_mappable;
>
> + /* XXX: filthy midlayers */
> + struct drm_mm stolen;
> struct i915_buddy_mm mm;
> struct mutex mm_lock;
>
> --
> 2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-01-14 23:58 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-03 20:00 [Intel-gfx] [PATCH 1/3] drm/i915: make stolen more region centric Matthew Auld
2020-01-03 20:00 ` [Intel-gfx] [PATCH 2/3] drm/i915/gtt: refactor the storage assumptions around paging structures Matthew Auld
2020-01-03 20:31 ` Chris Wilson
2020-01-03 20:00 ` [Intel-gfx] [PATCH 3/3] drm/i915/lmem: stop mapping the aperture for fake LMEM Matthew Auld
2020-01-03 20:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915: make stolen more region centric Patchwork
2020-01-03 20:29 ` [Intel-gfx] [PATCH 1/3] " Chris Wilson
2020-01-14 23:57 ` Tang, CQ
2020-01-03 21:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/3] " Patchwork
2020-01-04 7:24 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-01-14 23:58 ` [Intel-gfx] [PATCH 1/3] " Tang, CQ
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox