From: Damien Lespiau <damien.lespiau at intel.com> Signed-off-by: Damien Lespiau <damien.lespiau at intel.com> --- scripts/Makefile.am | 2 +- scripts/dmesg_filter | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+), 1 deletion(-) create mode 100755 scripts/dmesg_filter diff --git a/scripts/Makefile.am b/scripts/Makefile.am index baf3612..cbaafea 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,3 +1,3 @@ dist_noinst_SCRIPTS = who.sh -noinst_PYTHON = throttle.py +noinst_PYTHON = throttle.py dmesg_filter diff --git a/scripts/dmesg_filter b/scripts/dmesg_filter new file mode 100755 index 0000000..782a942 --- /dev/null +++ b/scripts/dmesg_filter @@ -0,0 +1,195 @@ +#!/usr/bin/env python +import fileinput +import re +import sys + +DRM_COMMAND_BASE = 0x40 +DRM_COMMAND_END = 0xA0 + +drm_ioctls = ( + ('DRM_IOCTL_VERSION', 0x00), + ('DRM_IOCTL_GET_UNIQUE', 0x01), + ('DRM_IOCTL_GET_MAGIC', 0x02), + ('DRM_IOCTL_IRQ_BUSID', 0x03), + ('DRM_IOCTL_GET_MAP', 0x04), + ('DRM_IOCTL_GET_CLIENT', 0x05), + ('DRM_IOCTL_GET_STATS', 0x06), + ('DRM_IOCTL_SET_VERSION', 0x07), + ('DRM_IOCTL_MODESET_CTL', 0x08), + ('DRM_IOCTL_GEM_CLOSE', 0x09), + ('DRM_IOCTL_GEM_FLINK', 0x0a), + ('DRM_IOCTL_GEM_OPEN', 0x0b), + ('DRM_IOCTL_GET_CAP', 0x0c), + + ('DRM_IOCTL_SET_UNIQUE', 0x10), + ('DRM_IOCTL_AUTH_MAGIC', 0x11), + ('DRM_IOCTL_BLOCK', 0x12), + ('DRM_IOCTL_UNBLOCK', 0x13), + ('DRM_IOCTL_CONTROL', 0x14), + ('DRM_IOCTL_ADD_MAP', 0x15), + ('DRM_IOCTL_ADD_BUFS', 0x16), + ('DRM_IOCTL_MARK_BUFS', 0x17), + ('DRM_IOCTL_INFO_BUFS', 0x18), + ('DRM_IOCTL_MAP_BUFS', 0x19), + ('DRM_IOCTL_FREE_BUFS', 0x1a), + + ('DRM_IOCTL_RM_MAP', 0x1b), + + ('DRM_IOCTL_SET_SAREA_CTX', 0x1c), + ('DRM_IOCTL_GET_SAREA_CTX', 0x1d), + + ('DRM_IOCTL_SET_MASTER', 0x1e), + ('DRM_IOCTL_DROP_MASTER', 0x1f), + + ('DRM_IOCTL_ADD_CTX', 0x20), + ('DRM_IOCTL_RM_CTX', 0x21), + ('DRM_IOCTL_MOD_CTX', 0x22), + ('DRM_IOCTL_GET_CTX', 0x23), + ('DRM_IOCTL_SWITCH_CTX', 0x24), + ('DRM_IOCTL_NEW_CTX', 0x25), + ('DRM_IOCTL_RES_CTX', 0x26), + ('DRM_IOCTL_ADD_DRAW', 0x27), + ('DRM_IOCTL_RM_DRAW', 0x28), + ('DRM_IOCTL_DMA', 0x29), + ('DRM_IOCTL_LOCK', 0x2a), + ('DRM_IOCTL_UNLOCK', 0x2b), + ('DRM_IOCTL_FINISH', 0x2c), + + ('DRM_IOCTL_PRIME_HANDLE_TO_FD', 0x2d), + ('DRM_IOCTL_PRIME_FD_TO_HANDLE', 0x2e), + + ('DRM_IOCTL_AGP_ACQUIRE', 0x30), + ('DRM_IOCTL_AGP_RELEASE', 0x31), + ('DRM_IOCTL_AGP_ENABLE', 0x32), + ('DRM_IOCTL_AGP_INFO', 0x33), + ('DRM_IOCTL_AGP_ALLOC',0x34), + ('DRM_IOCTL_AGP_FREE', 0x35), + ('DRM_IOCTL_AGP_BIND', 0x36), + ('DRM_IOCTL_AGP_UNBIND', 0x37), + + ('DRM_IOCTL_SG_ALLOC', 0x38), + ('DRM_IOCTL_SG_FREE', 0x39), + + ('DRM_IOCTL_WAIT_VBLANK', 0x3a), + + ('DRM_IOCTL_UPDATE_DRAW', 0x3f), + + ('DRM_IOCTL_MODE_GETRESOURCES', 0xA0), + ('DRM_IOCTL_MODE_GETCRTC', 0xA1), + ('DRM_IOCTL_MODE_SETCRTC', 0xA2), + ('DRM_IOCTL_MODE_CURSOR', 0xA3), + ('DRM_IOCTL_MODE_GETGAMMA', 0xA4), + ('DRM_IOCTL_MODE_SETGAMMA', 0xA5), + ('DRM_IOCTL_MODE_GETENCODER', 0xA6), + ('DRM_IOCTL_MODE_GETCONNECTOR', 0xA7), + ('DRM_IOCTL_MODE_ATTACHMODE', 0xA8), + ('DRM_IOCTL_MODE_DETACHMODE', 0xA9), + + ('DRM_IOCTL_MODE_GETPROPERTY', 0xAA), + ('DRM_IOCTL_MODE_SETPROPERTY', 0xAB), + ('DRM_IOCTL_MODE_GETPROPBLOB', 0xAC), + ('DRM_IOCTL_MODE_GETFB', 0xAD), + ('DRM_IOCTL_MODE_ADDFB', 0xAE), + ('DRM_IOCTL_MODE_RMFB', 0xAF), + ('DRM_IOCTL_MODE_PAGE_FLIP', 0xB0), + ('DRM_IOCTL_MODE_DIRTYFB', 0xB1), + + ('DRM_IOCTL_MODE_CREATE_DUMB', 0xB2), + ('DRM_IOCTL_MODE_MAP_DUMB', 0xB3), + ('DRM_IOCTL_MODE_DESTROY_DUMB', 0xB4), + ('DRM_IOCTL_MODE_GETPLANERESOURCES', 0xB5), + ('DRM_IOCTL_MODE_GETPLANE', 0xB6), + ('DRM_IOCTL_MODE_SETPLANE', 0xB7), + ('DRM_IOCTL_MODE_ADDFB2', 0xB8), + ('DRM_IOCTL_MODE_OBJ_GETPROPERTIES', 0xB9), + ('DRM_IOCTL_MODE_OBJ_SETPROPERTY', 0xBA), +) + +intel_ioctls = ( + ('DRM_I915_INIT', 0x00), + ('DRM_I915_FLUSH', 0x01), + ('DRM_I915_FLIP', 0x02), + ('DRM_I915_BATCHBUFFER', 0x03), + ('DRM_I915_IRQ_EMIT', 0x04), + ('DRM_I915_IRQ_WAIT', 0x05), + ('DRM_I915_GETPARAM', 0x06), + ('DRM_I915_SETPARAM', 0x07), + ('DRM_I915_ALLOC', 0x08), + ('DRM_I915_FREE', 0x09), + ('DRM_I915_INIT_HEAP', 0x0a), + ('DRM_I915_CMDBUFFER', 0x0b), + ('DRM_I915_DESTROY_HEAP', 0x0c), + ('DRM_I915_SET_VBLANK_PIPE', 0x0d), + ('DRM_I915_GET_VBLANK_PIPE', 0x0e), + ('DRM_I915_VBLANK_SWAP', 0x0f), + ('DRM_I915_HWS_ADDR', 0x11), + ('DRM_I915_GEM_INIT', 0x13), + ('DRM_I915_GEM_EXECBUFFER', 0x14), + ('DRM_I915_GEM_PIN', 0x15), + ('DRM_I915_GEM_UNPIN', 0x16), + ('DRM_I915_GEM_BUSY', 0x17), + ('DRM_I915_GEM_THROTTLE', 0x18), + ('DRM_I915_GEM_ENTERVT', 0x19), + ('DRM_I915_GEM_LEAVEVT', 0x1a), + ('DRM_I915_GEM_CREATE', 0x1b), + ('DRM_I915_GEM_PREAD', 0x1c), + ('DRM_I915_GEM_PWRITE', 0x1d), + ('DRM_I915_GEM_MMAP', 0x1e), + ('DRM_I915_GEM_SET_DOMAIN', 0x1f), + ('DRM_I915_GEM_SW_FINISH', 0x20), + ('DRM_I915_GEM_SET_TILING', 0x21), + ('DRM_I915_GEM_GET_TILING', 0x22), + ('DRM_I915_GEM_GET_APERTURE', 0x23), + ('DRM_I915_GEM_MMAP_GTT', 0x24), + ('DRM_I915_GET_PIPE_FROM_CRTC_ID', 0x25), + ('DRM_I915_GEM_MADVISE', 0x26), + ('DRM_I915_OVERLAY_PUT_IMAGE', 0x27), + ('DRM_I915_OVERLAY_ATTRS', 0x28), + ('DRM_I915_GEM_EXECBUFFER2', 0x29), + ('DRM_I915_GET_SPRITE_COLORKEY', 0x2a), + ('DRM_I915_SET_SPRITE_COLORKEY', 0x2b), + ('DRM_I915_GEM_WAIT', 0x2c), + ('DRM_I915_GEM_CONTEXT_CREATE', 0x2d), + ('DRM_I915_GEM_CONTEXT_DESTROY', 0x2e), + ('DRM_I915_GEM_SET_CACHEING', 0x2f), + ('DRM_I915_GEM_GET_CACHEING', 0x30), + ('DRM_I915_REG_READ', 0x31), +) + +ioctl_hash = {} +for ioctl in drm_ioctls: + ioctl_hash["0x%02x" % ioctl[1]] = ioctl[0] +for ioctl in intel_ioctls: + ioctl_hash["0x%02x" % (DRM_COMMAND_BASE + ioctl[1])] = ioctl[0] + +def find_ioctl(nr): + if nr in ioctl_hash: + return ioctl_hash[nr] + else: + return "Unknown ioctl 0x%02x" % str(nr) + +ioctl_pattern = re.compile(r""" + \[(?P<timesamp>[ \d\.]+)\]\ ? + \[drm:drm_ioctl\], + \ pid=(?P<pid>[\d]+), + \ cmd=(?P<cmd>[\dxa-fA-F]+), + \ nr=(?P<nr>[\dxa-fA-F]+), + \ dev\ (?P<dev>[\dxa-fA-F]+), + \ auth=(?P<auth>[\d]+) +""", re.X) + +for line in fileinput.input(): + m = ioctl_pattern.match(line) + if m: + ts = m.group('timesamp') + nr = m.group('nr') + pid = m.group('pid') + dev = m.group('dev') + if ts: + print("[%s] [drm:drm_ioctl], [pid=%s], [dev=%s], %s" % + (ts, pid, dev, find_ioctl(nr))) + else: + print("[drm:drm_ioctl], [pid=%s], [dev=%s], %s" % + (pid, dev, find_ioctl(nr))) + else: + sys.stdout.write(line) -- 1.7.11.7