drm/i915: Track clients and print their object usage in debugfs
By stashing a pointer of who opened the device and keeping a list of
open fd, we can then walk each client and inspect how many objects they
have open. For example,
i915_gem_objects:
1102 objects,
613646336 bytes
663 [662] objects,
468783104 [
468750336] bytes in gtt
37 [37] active objects,
46874624 [
46874624] bytes
626 [625] inactive objects,
421908480 [
421875712] bytes
282 unbound objects,
6512640 bytes
85 purgeable objects,
6787072 bytes
28 pinned mappable objects,
3686400 bytes
40 fault mappable objects,
27783168 bytes
2145386496 [
536870912] gtt total
Xorg: 43 objects,
32243712 bytes (
10223616 active,
16683008 inactive, 4096 unbound)
gnome-shell: 30 objects,
28381184 bytes (0 active,
28336128 inactive, 0 unbound)
xonotic-linux64: 1032 objects,
569933824 bytes (
46874624 active,
383545344 inactive,
6508544 unbound)
v2: Use existing drm->filelist as pointed out by Ben.
v3: Not even stashing the task_struct is required as Ben pointed out
drm_file->pid.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>