Skip to content

Commit 242eb7b

Browse files
committed
Merge tag 'drm-intel-gt-next-2022-11-18' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
Core Changes: - Backmerge of drm-next Driver Changes: - Restore probe_range behaviour for userptr (Matt A) - Fix use-after-free on lmem_userfault_list (Matt A) - Never purge busy TTM objects (Matt A) - Meteorlake enabling (Daniele, Badal, Daniele, Stuart, Aravind, Alan) - Demote GuC kernel contexts to normal priority (John) - Use RC6 residency types as arguments to residency functions (Ashutosh, Rodrigo, Jani) - Convert some legacy DRM debugging macros to new ones (Tvrtko) - Don't deadlock GuC busyness stats vs reset (John) - Remove excessive line feeds in GuC state dumps (John) - Use i915_sg_dma_sizes() for all backends (Matt A) - Prefer REG_FIELD_GET in intel_rps_get_cagf (Ashutosh, Rodrigo) - Use GEN12_RPSTAT register for GT freq (Don, Badal, Ashutosh) - Remove unwanted TTM ghost obj check (Matt A) - Update workaround documentation (Lucas) - Coding style and static checker fixes and cleanups (Jani, Umesh, Tvrtko, Lucas, Andrzej) - Selftest improvements (Chris, Daniele, Riana, Andrzej) Signed-off-by: Dave Airlie <[email protected]> From: Joonas Lahtinen <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents fc58764 + 4bb9ca7 commit 242eb7b

File tree

97 files changed

+1023
-631
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+1023
-631
lines changed

Documentation/gpu/drm-usage-stats.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ percentage utilization of the engine, whereas drm-engine-<str> only reflects
126126
time active without considering what frequency the engine is operating as a
127127
percentage of it's maximum frequency.
128128

129-
===============================
130129
Driver specific implementations
131130
===============================
132131

Documentation/gpu/i915.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ WOPCM
494494
WOPCM Layout
495495
~~~~~~~~~~~~
496496

497-
.. kernel-doc:: drivers/gpu/drm/i915/intel_wopcm.c
497+
.. kernel-doc:: drivers/gpu/drm/i915/gt/intel_wopcm.c
498498
:doc: WOPCM Layout
499499

500500
GuC

drivers/gpu/drm/i915/Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,11 @@ gt-y += \
127127
gt/intel_sseu.o \
128128
gt/intel_sseu_debugfs.o \
129129
gt/intel_timeline.o \
130+
gt/intel_wopcm.o \
130131
gt/intel_workarounds.o \
131132
gt/shmem_utils.o \
132133
gt/sysfs_engines.o
134+
133135
# x86 intel-gtt module support
134136
gt-$(CONFIG_X86) += gt/intel_ggtt_gmch.o
135137
# autogenerated null render state
@@ -183,8 +185,7 @@ i915-y += \
183185
i915_trace_points.o \
184186
i915_ttm_buddy_manager.o \
185187
i915_vma.o \
186-
i915_vma_resource.o \
187-
intel_wopcm.o
188+
i915_vma_resource.o
188189

189190
# general-purpose microcontroller (GuC) support
190191
i915-y += gt/uc/intel_uc.o \

drivers/gpu/drm/i915/gem/i915_gem_context.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ set_proto_ctx_engines_bond(struct i915_user_extension __user *base, void *data)
546546
}
547547

548548
if (intel_engine_uses_guc(master)) {
549-
DRM_DEBUG("bonding extension not supported with GuC submission");
549+
drm_dbg(&i915->drm, "bonding extension not supported with GuC submission");
550550
return -ENODEV;
551551
}
552552

drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,6 @@ static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)
240240
{
241241
struct drm_i915_private *i915 = to_i915(obj->base.dev);
242242
struct sg_table *sgt;
243-
unsigned int sg_page_sizes;
244243

245244
assert_object_held(obj);
246245

@@ -264,8 +263,7 @@ static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)
264263
(!HAS_LLC(i915) && !IS_DG1(i915)))
265264
wbinvd_on_all_cpus();
266265

267-
sg_page_sizes = i915_sg_dma_sizes(sgt->sgl);
268-
__i915_gem_object_set_pages(obj, sgt, sg_page_sizes);
266+
__i915_gem_object_set_pages(obj, sgt);
269267

270268
return 0;
271269
}

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ enum {
5353
#define DBG_FORCE_RELOC 0 /* choose one of the above! */
5454
};
5555

56-
/* __EXEC_OBJECT_NO_RESERVE is BIT(31), defined in i915_vma.h */
57-
#define __EXEC_OBJECT_HAS_PIN BIT(30)
58-
#define __EXEC_OBJECT_HAS_FENCE BIT(29)
59-
#define __EXEC_OBJECT_USERPTR_INIT BIT(28)
60-
#define __EXEC_OBJECT_NEEDS_MAP BIT(27)
61-
#define __EXEC_OBJECT_NEEDS_BIAS BIT(26)
62-
#define __EXEC_OBJECT_INTERNAL_FLAGS (~0u << 26) /* all of the above + */
56+
/* __EXEC_OBJECT_ flags > BIT(29) defined in i915_vma.h */
57+
#define __EXEC_OBJECT_HAS_PIN BIT(29)
58+
#define __EXEC_OBJECT_HAS_FENCE BIT(28)
59+
#define __EXEC_OBJECT_USERPTR_INIT BIT(27)
60+
#define __EXEC_OBJECT_NEEDS_MAP BIT(26)
61+
#define __EXEC_OBJECT_NEEDS_BIAS BIT(25)
62+
#define __EXEC_OBJECT_INTERNAL_FLAGS (~0u << 25) /* all of the above + */
6363
#define __EXEC_OBJECT_RESERVED (__EXEC_OBJECT_HAS_PIN | __EXEC_OBJECT_HAS_FENCE)
6464

6565
#define __EXEC_HAS_RELOC BIT(31)
@@ -2101,7 +2101,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
21012101
eb->composite_fence ?
21022102
eb->composite_fence :
21032103
&eb->requests[j]->fence,
2104-
flags | __EXEC_OBJECT_NO_RESERVE);
2104+
flags | __EXEC_OBJECT_NO_RESERVE |
2105+
__EXEC_OBJECT_NO_REQUEST_AWAIT);
21052106
}
21062107
}
21072108

@@ -2148,7 +2149,8 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
21482149
return err;
21492150
}
21502151

2151-
static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
2152+
static int i915_gem_check_execbuffer(struct drm_i915_private *i915,
2153+
struct drm_i915_gem_execbuffer2 *exec)
21522154
{
21532155
if (exec->flags & __I915_EXEC_ILLEGAL_FLAGS)
21542156
return -EINVAL;
@@ -2161,7 +2163,7 @@ static int i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec)
21612163
}
21622164

21632165
if (exec->DR4 == 0xffffffff) {
2164-
DRM_DEBUG("UXA submitting garbage DR4, fixing up\n");
2166+
drm_dbg(&i915->drm, "UXA submitting garbage DR4, fixing up\n");
21652167
exec->DR4 = 0;
21662168
}
21672169
if (exec->DR1 || exec->DR4)
@@ -2799,15 +2801,17 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
27992801

28002802
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
28012803
if (!syncobj) {
2802-
DRM_DEBUG("Invalid syncobj handle provided\n");
2804+
drm_dbg(&eb->i915->drm,
2805+
"Invalid syncobj handle provided\n");
28032806
return -ENOENT;
28042807
}
28052808

28062809
fence = drm_syncobj_fence_get(syncobj);
28072810

28082811
if (!fence && user_fence.flags &&
28092812
!(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
2810-
DRM_DEBUG("Syncobj handle has no fence\n");
2813+
drm_dbg(&eb->i915->drm,
2814+
"Syncobj handle has no fence\n");
28112815
drm_syncobj_put(syncobj);
28122816
return -EINVAL;
28132817
}
@@ -2816,7 +2820,9 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
28162820
err = dma_fence_chain_find_seqno(&fence, point);
28172821

28182822
if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
2819-
DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
2823+
drm_dbg(&eb->i915->drm,
2824+
"Syncobj handle missing requested point %llu\n",
2825+
point);
28202826
dma_fence_put(fence);
28212827
drm_syncobj_put(syncobj);
28222828
return err;
@@ -2842,7 +2848,8 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
28422848
* 0) would break the timeline.
28432849
*/
28442850
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
2845-
DRM_DEBUG("Trying to wait & signal the same timeline point.\n");
2851+
drm_dbg(&eb->i915->drm,
2852+
"Trying to wait & signal the same timeline point.\n");
28462853
dma_fence_put(fence);
28472854
drm_syncobj_put(syncobj);
28482855
return -EINVAL;
@@ -2913,14 +2920,16 @@ static int add_fence_array(struct i915_execbuffer *eb)
29132920

29142921
syncobj = drm_syncobj_find(eb->file, user_fence.handle);
29152922
if (!syncobj) {
2916-
DRM_DEBUG("Invalid syncobj handle provided\n");
2923+
drm_dbg(&eb->i915->drm,
2924+
"Invalid syncobj handle provided\n");
29172925
return -ENOENT;
29182926
}
29192927

29202928
if (user_fence.flags & I915_EXEC_FENCE_WAIT) {
29212929
fence = drm_syncobj_fence_get(syncobj);
29222930
if (!fence) {
2923-
DRM_DEBUG("Syncobj handle has no fence\n");
2931+
drm_dbg(&eb->i915->drm,
2932+
"Syncobj handle has no fence\n");
29242933
drm_syncobj_put(syncobj);
29252934
return -EINVAL;
29262935
}
@@ -3515,7 +3524,7 @@ i915_gem_execbuffer2_ioctl(struct drm_device *dev, void *data,
35153524
return -EINVAL;
35163525
}
35173526

3518-
err = i915_gem_check_execbuffer(args);
3527+
err = i915_gem_check_execbuffer(i915, args);
35193528
if (err)
35203529
return err;
35213530

drivers/gpu/drm/i915/gem/i915_gem_internal.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ static int i915_gem_object_get_pages_internal(struct drm_i915_gem_object *obj)
3535
struct drm_i915_private *i915 = to_i915(obj->base.dev);
3636
struct sg_table *st;
3737
struct scatterlist *sg;
38-
unsigned int sg_page_sizes;
3938
unsigned int npages;
4039
int max_order = MAX_ORDER;
4140
unsigned int max_segment;
@@ -64,7 +63,6 @@ static int i915_gem_object_get_pages_internal(struct drm_i915_gem_object *obj)
6463

6564
sg = st->sgl;
6665
st->nents = 0;
67-
sg_page_sizes = 0;
6866

6967
do {
7068
int order = min(fls(npages) - 1, max_order);
@@ -83,7 +81,6 @@ static int i915_gem_object_get_pages_internal(struct drm_i915_gem_object *obj)
8381
} while (1);
8482

8583
sg_set_page(sg, page, PAGE_SIZE << order, 0);
86-
sg_page_sizes |= PAGE_SIZE << order;
8784
st->nents++;
8885

8986
npages -= 1 << order;
@@ -105,7 +102,7 @@ static int i915_gem_object_get_pages_internal(struct drm_i915_gem_object *obj)
105102
goto err;
106103
}
107104

108-
__i915_gem_object_set_pages(obj, st, sg_page_sizes);
105+
__i915_gem_object_set_pages(obj, st);
109106

110107
return 0;
111108

drivers/gpu/drm/i915/gem/i915_gem_mman.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
330330
if (ret)
331331
goto err_rpm;
332332

333-
ret = intel_gt_reset_trylock(ggtt->vm.gt, &srcu);
333+
ret = intel_gt_reset_lock_interruptible(ggtt->vm.gt, &srcu);
334334
if (ret)
335335
goto err_pages;
336336

drivers/gpu/drm/i915/gem/i915_gem_object.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,8 +403,7 @@ i915_gem_object_get_dma_address(struct drm_i915_gem_object *obj,
403403
unsigned long n);
404404

405405
void __i915_gem_object_set_pages(struct drm_i915_gem_object *obj,
406-
struct sg_table *pages,
407-
unsigned int sg_page_sizes);
406+
struct sg_table *pages);
408407

409408
int ____i915_gem_object_get_pages(struct drm_i915_gem_object *obj);
410409
int __i915_gem_object_get_pages(struct drm_i915_gem_object *obj);

drivers/gpu/drm/i915/gem/i915_gem_pages.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
#include "i915_gem_mman.h"
1717

1818
void __i915_gem_object_set_pages(struct drm_i915_gem_object *obj,
19-
struct sg_table *pages,
20-
unsigned int sg_page_sizes)
19+
struct sg_table *pages)
2120
{
2221
struct drm_i915_private *i915 = to_i915(obj->base.dev);
2322
unsigned long supported = RUNTIME_INFO(i915)->page_sizes;
@@ -45,8 +44,8 @@ void __i915_gem_object_set_pages(struct drm_i915_gem_object *obj,
4544

4645
obj->mm.pages = pages;
4746

48-
GEM_BUG_ON(!sg_page_sizes);
49-
obj->mm.page_sizes.phys = sg_page_sizes;
47+
obj->mm.page_sizes.phys = i915_sg_dma_sizes(pages->sgl);
48+
GEM_BUG_ON(!obj->mm.page_sizes.phys);
5049

5150
/*
5251
* Calculate the supported page-sizes which fit into the given

0 commit comments

Comments
 (0)