mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-09 17:06:14 +00:00
igt/gem_exec_reloc: Exercise read-only relocation arrays
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
aec81019e1
commit
3dd5fe8ab2
@ -94,6 +94,7 @@ static void write_dword(int fd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum mode { MEM, CPU, WC, GTT };
|
enum mode { MEM, CPU, WC, GTT };
|
||||||
|
#define RO 0x100
|
||||||
static void from_mmap(int fd, uint64_t size, enum mode mode)
|
static void from_mmap(int fd, uint64_t size, enum mode mode)
|
||||||
{
|
{
|
||||||
uint32_t bbe = MI_BATCH_BUFFER_END;
|
uint32_t bbe = MI_BATCH_BUFFER_END;
|
||||||
@ -112,7 +113,7 @@ static void from_mmap(int fd, uint64_t size, enum mode mode)
|
|||||||
gem_write(fd, obj.handle, 0, &bbe, sizeof(bbe));
|
gem_write(fd, obj.handle, 0, &bbe, sizeof(bbe));
|
||||||
|
|
||||||
max = size / sizeof(*relocs);
|
max = size / sizeof(*relocs);
|
||||||
switch (mode) {
|
switch (mode & ~RO) {
|
||||||
case MEM:
|
case MEM:
|
||||||
relocs = mmap(0, size,
|
relocs = mmap(0, size,
|
||||||
PROT_WRITE, MAP_PRIVATE | MAP_ANON,
|
PROT_WRITE, MAP_PRIVATE | MAP_ANON,
|
||||||
@ -153,6 +154,9 @@ static void from_mmap(int fd, uint64_t size, enum mode mode)
|
|||||||
obj.relocation_count = max;
|
obj.relocation_count = max;
|
||||||
obj.relocs_ptr = (uintptr_t)relocs;
|
obj.relocs_ptr = (uintptr_t)relocs;
|
||||||
|
|
||||||
|
if (mode & RO)
|
||||||
|
mprotect(relocs, size, PROT_READ);
|
||||||
|
|
||||||
memset(&execbuf, 0, sizeof(execbuf));
|
memset(&execbuf, 0, sizeof(execbuf));
|
||||||
execbuf.buffers_ptr = (uintptr_t)&obj;
|
execbuf.buffers_ptr = (uintptr_t)&obj;
|
||||||
execbuf.buffer_count = 1;
|
execbuf.buffer_count = 1;
|
||||||
@ -327,6 +331,8 @@ igt_main
|
|||||||
for (size = 4096; size <= 4ull*1024*1024*1024; size <<= 1) {
|
for (size = 4096; size <= 4ull*1024*1024*1024; size <<= 1) {
|
||||||
igt_subtest_f("mmap-%u", find_last_set(size) - 1)
|
igt_subtest_f("mmap-%u", find_last_set(size) - 1)
|
||||||
from_mmap(fd, size, MEM);
|
from_mmap(fd, size, MEM);
|
||||||
|
igt_subtest_f("readonly-%u", find_last_set(size) - 1)
|
||||||
|
from_mmap(fd, size, MEM | RO);
|
||||||
igt_subtest_f("cpu-%u", find_last_set(size) - 1)
|
igt_subtest_f("cpu-%u", find_last_set(size) - 1)
|
||||||
from_mmap(fd, size, CPU);
|
from_mmap(fd, size, CPU);
|
||||||
igt_subtest_f("wc-%u", find_last_set(size) - 1)
|
igt_subtest_f("wc-%u", find_last_set(size) - 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user