mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-13 02:46:23 +00:00
igt/gem_mmap_gtt: Check coherency between GTT and CPU mmappings with LLC
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
ac3d06094a
commit
b76f1d8b03
@ -643,6 +643,22 @@ int gem_available_fences(int fd)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool gem_has_llc(int fd)
|
||||||
|
{
|
||||||
|
struct drm_i915_getparam gp;
|
||||||
|
int val = 0;
|
||||||
|
|
||||||
|
memset(&gp, 0, sizeof(gp));
|
||||||
|
gp.param = I915_PARAM_HAS_LLC;
|
||||||
|
gp.value = &val;
|
||||||
|
|
||||||
|
if (ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gem_get_num_rings:
|
* gem_get_num_rings:
|
||||||
* @fd: open i915 drm file descriptor
|
* @fd: open i915 drm file descriptor
|
||||||
|
@ -78,6 +78,7 @@ void gem_sw_finish(int fd, uint32_t handle);
|
|||||||
bool gem_bo_busy(int fd, uint32_t handle);
|
bool gem_bo_busy(int fd, uint32_t handle);
|
||||||
|
|
||||||
/* feature test helpers */
|
/* feature test helpers */
|
||||||
|
bool gem_has_llc(int fd);
|
||||||
int gem_get_num_rings(int fd);
|
int gem_get_num_rings(int fd);
|
||||||
bool gem_has_enable_ring(int fd,int param);
|
bool gem_has_enable_ring(int fd,int param);
|
||||||
bool gem_has_bsd(int fd);
|
bool gem_has_bsd(int fd);
|
||||||
|
@ -273,6 +273,31 @@ test_read(int fd)
|
|||||||
munmap(dst, OBJECT_SIZE);
|
munmap(dst, OBJECT_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_write_cpu_read_gtt(int fd)
|
||||||
|
{
|
||||||
|
uint32_t handle;
|
||||||
|
uint32_t *src, *dst;
|
||||||
|
|
||||||
|
igt_require(gem_has_llc(fd));
|
||||||
|
|
||||||
|
handle = gem_create(fd, OBJECT_SIZE);
|
||||||
|
|
||||||
|
dst = gem_mmap(fd, handle, OBJECT_SIZE, PROT_READ);
|
||||||
|
igt_assert(dst != (uint32_t *)MAP_FAILED);
|
||||||
|
|
||||||
|
src = gem_mmap__cpu(fd, handle, OBJECT_SIZE, PROT_WRITE);
|
||||||
|
igt_assert(src != (uint32_t *)MAP_FAILED);
|
||||||
|
|
||||||
|
gem_close(fd, handle);
|
||||||
|
|
||||||
|
memset(src, 0xaa, OBJECT_SIZE);
|
||||||
|
igt_assert(memcmp(dst, src, OBJECT_SIZE) == 0);
|
||||||
|
|
||||||
|
munmap(src, OBJECT_SIZE);
|
||||||
|
munmap(dst, OBJECT_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
struct thread_fault_concurrent {
|
struct thread_fault_concurrent {
|
||||||
pthread_t thread;
|
pthread_t thread;
|
||||||
int id;
|
int id;
|
||||||
@ -368,6 +393,8 @@ igt_main
|
|||||||
run_without_prefault(fd, test_write);
|
run_without_prefault(fd, test_write);
|
||||||
igt_subtest("write-gtt-no-prefault")
|
igt_subtest("write-gtt-no-prefault")
|
||||||
run_without_prefault(fd, test_write_gtt);
|
run_without_prefault(fd, test_write_gtt);
|
||||||
|
igt_subtest("write-cpu-read-gtt")
|
||||||
|
test_write_cpu_read_gtt(fd);
|
||||||
|
|
||||||
igt_fixture
|
igt_fixture
|
||||||
close(fd);
|
close(fd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user