#!/usr/sbin/dtrace -s #pragma D option quiet #pragma D option bufsize=16m #pragma D option dynvarsize=16m fbt:radeonkms:radeon_vm_bo_add:entry { self->vm = args[1]; self->bo = args[2]; } fbt:radeonkms:radeon_vm_bo_add:return { printf("%lu: %s: vm=0x%p bo=0x%p bo_va=0x%p\n", timestamp, probefunc, self->vm, self->bo, args[1]); stack(); self->vm = 0; self->bo = 0; } fbt:drm2:drm_gem_close_ioctl:return { printf("%lu: %s: ret=%d\n", timestamp, probefunc, args[1]); } fbt:drm2:drm_gem_handle_delete:return { printf("%lu: %s: ret=%d\n", timestamp, probefunc, args[1]); } fbt:radeonkms:radeon_gem_object_close:entry { printf("%lu: %s: file_priv=0x%p\n", timestamp, probefunc, args[1]); } fbt:radeonkms:radeon_vm_bo_find:entry { self->vm = args[0]; self->bo = args[1]; } fbt:radeonkms:radeon_vm_bo_find:return { printf("%lu: %s: vm=0x%p bo=0x%p bo_va=0x%p, refcount=%d\n", timestamp, probefunc, self->vm, self->bo, args[1], args[1] ? args[1]->ref_count : -42); self->vm = 0; self->bo = 0; } fbt:radeonkms:radeon_vm_bo_rmv:entry { printf("%lu: %s: vm=0x%p bo=0x%p bo_va=0x%p\n", timestamp, probefunc, args[1]->vm, args[1]->bo, args[1]); stack(); } fbt:drm2:drm_open_helper:entry { printf("%lu: %s:\n", timestamp, probefunc); stack(); } fbt:drm2:drm_close:entry { printf("%lu; %s: file_priv=0x%p\n", timestamp, probefunc, args[0]); stack(); } fbt:drm2:drm_gem_release:entry { printf("%lu; %s: file_priv=0x%p\n", timestamp, probefunc, args[1]); stack(); } fbt:drm2:drm_gem_object_release_handle:entry { printf("%lu; %s: file_priv=0x%p\n", timestamp, probefunc, args[2]); stack(); }