History

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull more perf updates from Thomas Gleixner: "A rather large set of perf updates: Kernel: - Fix various initialization issues - Prevent creating [ku]probes for not CAP_SYS_ADMIN users Tooling: - Show only failing syscalls with 'perf trace --failure' (Arnaldo Carvalho de Melo) e.g: See what 'openat' syscalls are failing: # perf trace --failure -e openat 762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? > 790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory ^C# - Show information about the event (freq, nr_samples, total period/nr_events) in the annotate --tui and --stdio2 'perf annotate' output, similar to the first line in the 'perf report --tui', but just for the samples for a the annotated symbol (Arnaldo Carvalho de Melo) - Introduce 'perf version --build-options' to show what features were linked, aliased as well as a shorter 'perf -vv' (Jin Yao) - Add a "dso_size" sort order (Kim Phillips) - Remove redundant ')' in the tracepoint output in 'perf trace' (Changbin Du) - Synchronize x86's cpufeatures.h, no effect on toolss (Arnaldo Carvalho de Melo) - Show group details on the title line in the annotate browser and 'perf annotate --stdio2' output, so that the per-event columns can have headers (Arnaldo Carvalho de Melo) - Fixup vertical line separating metrics from instructions and cleaning unused lines at the bottom, both in the annotate TUI browser (Arnaldo Carvalho de Melo) - Remove duplicated 'samples' in lost samples warning in 'perf report' (Arnaldo Carvalho de Melo) - Synchronize i915_drm.h, silencing the perf build process, automagically adding support for the new DRM_I915_QUERY ioctl (Arnaldo Carvalho de Melo) - Make auxtrace_queues__add_buffer() allocate struct buffer, from a patchkit already applied (Adrian Hunter) - Fix the --stdio2/TUI annotate output to include group details, be it for a recorded '{a,b,f}' explicit event group or when forcing group display using 'perf report --group' for a set of events not recorded as a group (Arnaldo Carvalho de Melo) - Fix display artifacts in the ui browser (base class for the annotate and main report/top TUI browser) related to the extra title lines work (Arnaldo Carvalho de Melo) - perf auxtrace refactorings, leftovers from a previously partially processed patchset (Adrian Hunter) - Fix the builtin clang build (Sandipan Das, Arnaldo Carvalho de Melo) - Synchronize i915_drm.h, silencing a perf build warning and in the process automagically adding support for a new ioctl command (Arnaldo Carvalho de Melo) - Fix a strncpy issue in uprobe tracing" * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits) perf/core: Need CAP_SYS_ADMIN to create k/uprobe with perf_event_open() tracing/uprobe_event: Fix strncpy corner case perf/core: Fix perf_uprobe_init() perf/core: Fix perf_kprobe_init() perf/core: Fix use-after-free in uprobe_perf_close() perf tests clang: Fix function name for clang IR test perf clang: Add support for recent clang versions perf tools: Fix perf builds with clang support perf tools: No need to include namespaces.h in util.h perf hists browser: Remove leftover from row returned from refresh perf hists browser: Show extra_title_lines in the 'D' debug hotkey perf auxtrace: Make auxtrace_queues__add_buffer() do CPU filtering tools headers uapi: Synchronize i915_drm.h perf report: Remove duplicated 'samples' in lost samples warning perf ui browser: Fixup cleaning unused lines at the bottom perf annotate browser: Fixup vertical line separating metrics from instructions perf annotate: Show group details on the title line perf auxtrace: Make auxtrace_queues__add_buffer() allocate struct buffer perf/x86/intel: Move regs->flags EXACT bit init perf trace: Remove redundant ')' ...

Linus Torvalds committed 8 years ago

Commit 174e7192 parents 19ca90d 32e6e9633 files · +629 −187Browse files

Showing the changes to tools/include/uapi (1 of 33 files). Show all

Unified · Split

tools/include/uapi/drm/i915_drm.h+108−4
@@ -318,6 +318,7 @@ typedef struct _drm_i915_sarea { · 317 unmodified lines
318318 #define DRM_I915_PERF_OPEN 0x36
319319 #define DRM_I915_PERF_ADD_CONFIG 0x37
320320 #define DRM_I915_PERF_REMOVE_CONFIG 0x38
321+#define DRM_I915_QUERY 0x39
321322
322323 #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
323324 #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
@@ -375,6 +376,7 @@ typedef struct _drm_i915_sarea { · 51 unmodified lines
375376 #define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param)
376377 #define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config)
377378 #define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64)
379+#define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query)
378380
379381 /* Allow drivers to submit batchbuffers directly to hardware, relying
380382 * on the security mechanisms provided by hardware.
@@ -1358,7 +1360,9 @@ struct drm_intel_overlay_attrs { · 977 unmodified lines
13581360 * active on a given plane.
13591361 */
13601362
1361−#define I915_SET_COLORKEY_NONE (1<<0) /* disable color key matching */
1363+#define I915_SET_COLORKEY_NONE (1<<0) /* Deprecated. Instead set
1364+ * flags==0 to disable colorkeying.
1365+ */
13621366 #define I915_SET_COLORKEY_DESTINATION (1<<1)
13631367 #define I915_SET_COLORKEY_SOURCE (1<<2)
13641368 struct drm_intel_sprite_colorkey {
@@ -1604,15 +1608,115 @@ struct drm_i915_perf_oa_config { · 239 unmodified lines
16041608 __u32 n_flex_regs;
16051609
16061610 /*
1607− * These fields are pointers to tuples of u32 values (register
1608− * address, value). For example the expected length of the buffer
1609− * pointed by mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs).
1611+ * These fields are pointers to tuples of u32 values (register address,
1612+ * value). For example the expected length of the buffer pointed by
1613+ * mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs).
16101614 */
16111615 __u64 mux_regs_ptr;
16121616 __u64 boolean_regs_ptr;
16131617 __u64 flex_regs_ptr;
16141618 };
16151619
1620+struct drm_i915_query_item {
1621+ __u64 query_id;
1622+#define DRM_I915_QUERY_TOPOLOGY_INFO 1
1623+
1624+ /*
1625+ * When set to zero by userspace, this is filled with the size of the
1626+ * data to be written at the data_ptr pointer. The kernel sets this
1627+ * value to a negative value to signal an error on a particular query
1628+ * item.
1629+ */
1630+ __s32 length;
1631+
1632+ /*
1633+ * Unused for now. Must be cleared to zero.
1634+ */
1635+ __u32 flags;
1636+
1637+ /*
1638+ * Data will be written at the location pointed by data_ptr when the
1639+ * value of length matches the length of the data to be written by the
1640+ * kernel.
1641+ */
1642+ __u64 data_ptr;
1643+};
1644+
1645+struct drm_i915_query {
1646+ __u32 num_items;
1647+
1648+ /*
1649+ * Unused for now. Must be cleared to zero.
1650+ */
1651+ __u32 flags;
1652+
1653+ /*
1654+ * This points to an array of num_items drm_i915_query_item structures.
1655+ */
1656+ __u64 items_ptr;
1657+};
1658+
1659+/*
1660+ * Data written by the kernel with query DRM_I915_QUERY_TOPOLOGY_INFO :
1661+ *
1662+ * data: contains the 3 pieces of information :
1663+ *
1664+ * - the slice mask with one bit per slice telling whether a slice is
1665+ * available. The availability of slice X can be queried with the following
1666+ * formula :
1667+ *
1668+ * (data[X / 8] >> (X % 8)) & 1
1669+ *
1670+ * - the subslice mask for each slice with one bit per subslice telling
1671+ * whether a subslice is available. The availability of subslice Y in slice
1672+ * X can be queried with the following formula :
1673+ *
1674+ * (data[subslice_offset +
1675+ * X * subslice_stride +
1676+ * Y / 8] >> (Y % 8)) & 1
1677+ *
1678+ * - the EU mask for each subslice in each slice with one bit per EU telling
1679+ * whether an EU is available. The availability of EU Z in subslice Y in
1680+ * slice X can be queried with the following formula :
1681+ *
1682+ * (data[eu_offset +
1683+ * (X * max_subslices + Y) * eu_stride +
1684+ * Z / 8] >> (Z % 8)) & 1
1685+ */
1686+struct drm_i915_query_topology_info {
1687+ /*
1688+ * Unused for now. Must be cleared to zero.
1689+ */
1690+ __u16 flags;
1691+
1692+ __u16 max_slices;
1693+ __u16 max_subslices;
1694+ __u16 max_eus_per_subslice;
1695+
1696+ /*
1697+ * Offset in data[] at which the subslice masks are stored.
1698+ */
1699+ __u16 subslice_offset;
1700+
1701+ /*
1702+ * Stride at which each of the subslice masks for each slice are
1703+ * stored.
1704+ */
1705+ __u16 subslice_stride;
1706+
1707+ /*
1708+ * Offset in data[] at which the EU masks are stored.
1709+ */
1710+ __u16 eu_offset;
1711+
1712+ /*
1713+ * Stride at which each of the EU masks for each subslice are stored.
1714+ */
1715+ __u16 eu_stride;
1716+
1717+ __u8 data[];
1718+};
1719+
16161720 #if defined(__cplusplus)
16171721 }
16181722 #endif