OSDN Git Service

s390/cpumf: Support for CPU Measurement Sampling Facility LS bit
authorThomas Richter <tmricht@linux.ibm.com>
Thu, 13 Jan 2022 11:51:56 +0000 (12:51 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Mon, 17 Jan 2022 13:13:08 +0000 (14:13 +0100)
Adds support for the CPU Measurement Sampling Facility limit sampling
bit in the sampling device driver.
Limited samples have no valueable information are not collected.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Acked-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/cpu_mf.h
arch/s390/kernel/perf_cpum_sf.c

index 0d90cbe..e3f12db 100644 (file)
@@ -109,7 +109,9 @@ struct hws_basic_entry {
        unsigned int AS:2;          /* 29-30 PSW address-space control   */
        unsigned int I:1;           /* 31 entry valid or invalid         */
        unsigned int CL:2;          /* 32-33 Configuration Level         */
-       unsigned int:14;
+       unsigned int H:1;           /* 34 Host Indicator                 */
+       unsigned int LS:1;          /* 35 Limited Sampling               */
+       unsigned int:12;
        unsigned int prim_asn:16;   /* primary ASN                       */
        unsigned long long ia;      /* Instruction Address               */
        unsigned long long gpp;     /* Guest Program Parameter           */
index db62def..332a499 100644 (file)
@@ -1179,7 +1179,7 @@ static void hw_collect_samples(struct perf_event *event, unsigned long *sdbt,
        sample = (struct hws_basic_entry *) *sdbt;
        while ((unsigned long *) sample < (unsigned long *) te) {
                /* Check for an empty sample */
-               if (!sample->def)
+               if (!sample->def || sample->LS)
                        break;
 
                /* Update perf event period */