tools headers uapi: Update tools's copy of linux/perf_event.h
authorKan Liang <kan.liang@linux.intel.com>
Tue, 2 Feb 2021 20:09:05 +0000 (12:09 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 8 Feb 2021 19:25:00 +0000 (16:25 -0300)
To get the changes in these csets:

  2a6c6b7d7ad346f0 ("perf/core: Add PERF_SAMPLE_WEIGHT_STRUCT")
  61b985e3e775a3a7 ("perf/x86/intel: Add perf core PMU support for Sapphire Rapids")

This cures the following warning during perf's build:

        Warning: Kernel ABI header at 'tools/include/uapi/linux/perf_event.h' differs from latest version at 'include/uapi/linux/perf_event.h'
        diff -u tools/include/uapi/linux/perf_event.h include/uapi/linux/perf_event.h

Committer notes:

Picked by hand as I had already merged the MMAP buildid patch that also touches
perf_event.h and is also only in {acme,tip}/perf/core, not yet upstream.

Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/1612296553-21962-2-git-send-email-kan.liang@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/include/uapi/linux/perf_event.h

index cb6f841..ad15e40 100644 (file)
@@ -145,12 +145,14 @@ enum perf_event_sample_format {
        PERF_SAMPLE_CGROUP                      = 1U << 21,
        PERF_SAMPLE_DATA_PAGE_SIZE              = 1U << 22,
        PERF_SAMPLE_CODE_PAGE_SIZE              = 1U << 23,
+       PERF_SAMPLE_WEIGHT_STRUCT               = 1U << 24,
 
-       PERF_SAMPLE_MAX = 1U << 24,             /* non-ABI */
+       PERF_SAMPLE_MAX = 1U << 25,             /* non-ABI */
 
        __PERF_SAMPLE_CALLCHAIN_EARLY           = 1ULL << 63, /* non-ABI; internal use */
 };
 
+#define PERF_SAMPLE_WEIGHT_TYPE        (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 /*
  * values to program into branch_sample_type when PERF_SAMPLE_BRANCH is set
  *
@@ -912,7 +914,24 @@ enum perf_event_type {
         *        char                  data[size];
         *        u64                   dyn_size; } && PERF_SAMPLE_STACK_USER
         *
-        *      { u64                   weight;   } && PERF_SAMPLE_WEIGHT
+        *      { union perf_sample_weight
+        *       {
+        *              u64             full; && PERF_SAMPLE_WEIGHT
+        *      #if defined(__LITTLE_ENDIAN_BITFIELD)
+        *              struct {
+        *                      u32     var1_dw;
+        *                      u16     var2_w;
+        *                      u16     var3_w;
+        *              } && PERF_SAMPLE_WEIGHT_STRUCT
+        *      #elif defined(__BIG_ENDIAN_BITFIELD)
+        *              struct {
+        *                      u16     var3_w;
+        *                      u16     var2_w;
+        *                      u32     var1_dw;
+        *              } && PERF_SAMPLE_WEIGHT_STRUCT
+        *      #endif
+        *       }
+        *      }
         *      { u64                   data_src; } && PERF_SAMPLE_DATA_SRC
         *      { u64                   transaction; } && PERF_SAMPLE_TRANSACTION
         *      { u64                   abi; # enum perf_sample_regs_abi
@@ -1159,14 +1178,16 @@ union perf_mem_data_src {
                        mem_lvl_num:4,  /* memory hierarchy level number */
                        mem_remote:1,   /* remote */
                        mem_snoopx:2,   /* snoop mode, ext */
-                       mem_rsvd:24;
+                       mem_blk:3,      /* access blocked */
+                       mem_rsvd:21;
        };
 };
 #elif defined(__BIG_ENDIAN_BITFIELD)
 union perf_mem_data_src {
        __u64 val;
        struct {
-               __u64   mem_rsvd:24,
+               __u64   mem_rsvd:21,
+                       mem_blk:3,      /* access blocked */
                        mem_snoopx:2,   /* snoop mode, ext */
                        mem_remote:1,   /* remote */
                        mem_lvl_num:4,  /* memory hierarchy level number */
@@ -1249,6 +1270,12 @@ union perf_mem_data_src {
 #define PERF_MEM_TLB_OS                0x40 /* OS fault handler */
 #define PERF_MEM_TLB_SHIFT     26
 
+/* Access blocked */
+#define PERF_MEM_BLK_NA                0x01 /* not available */
+#define PERF_MEM_BLK_DATA      0x02 /* data could not be forwarded */
+#define PERF_MEM_BLK_ADDR      0x04 /* address conflict */
+#define PERF_MEM_BLK_SHIFT     40
+
 #define PERF_MEM_S(a, s) \
        (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
 
@@ -1280,4 +1307,23 @@ struct perf_branch_entry {
                reserved:40;
 };
 
+union perf_sample_weight {
+       __u64           full;
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+       struct {
+               __u32   var1_dw;
+               __u16   var2_w;
+               __u16   var3_w;
+       };
+#elif defined(__BIG_ENDIAN_BITFIELD)
+       struct {
+               __u16   var3_w;
+               __u16   var2_w;
+               __u32   var1_dw;
+       };
+#else
+#error "Unknown endianness"
+#endif
+};
+
 #endif /* _UAPI_LINUX_PERF_EVENT_H */