diff --git a/include/lib/libcpumf.h b/include/lib/libcpumf.h index de42c7e9..299291f6 100644 --- a/include/lib/libcpumf.h +++ b/include/lib/libcpumf.h @@ -16,6 +16,7 @@ #define S390_CPUS_POSSIBLE "/sys/devices/system/cpu/possible" #define S390_CPUS_ONLINE "/sys/devices/system/cpu/online" #define S390_CPUMSF_BUFFERSZ "/sys/module/kernel/parameters/cpum_sfb_size" +#define S390_SYSFS_PAI_CRYPTO "/sys/devices/pai_crypto/" /** * Read out the PMU type from a given file. @@ -121,4 +122,12 @@ bool libcpumf_have_sfb(void); * @retval false Information could not be retrieved */ bool libcpumf_sfb_info(unsigned long *min, unsigned long *max); + +/** + * Return true if PAI_CRYPTO counter Facility is supported. + * + * @retval true PAI_CRYPTO counter Facility is available + * @retval false PAI_CRYPTO counter Facility is not available + */ +bool libcpumf_have_pai_crypto(void); #endif diff --git a/libcpumf/libcpumf_example.c b/libcpumf/libcpumf_example.c index 122cce69..dde13cad 100644 --- a/libcpumf/libcpumf_example.c +++ b/libcpumf/libcpumf_example.c @@ -72,5 +72,7 @@ int main(void) if (rc) printf(" sfb_min %lu sfb_max %lu", sfb_min, sfb_max); putchar('\n'); + + printf("PAI crypto support %d\n", libcpumf_have_pai_crypto()); return EXIT_SUCCESS; } diff --git a/libcpumf/libcpumf_support.c b/libcpumf/libcpumf_support.c index c9ba6972..3e25835f 100644 --- a/libcpumf/libcpumf_support.c +++ b/libcpumf/libcpumf_support.c @@ -139,3 +139,10 @@ bool libcpumf_sfb_info(unsigned long *min, unsigned long *max) fclose(fp); return rc; } + +bool libcpumf_have_pai_crypto(void) +{ + struct stat statbuf; + + return (stat(S390_SYSFS_PAI_CRYPTO, &statbuf) == -1) ? false : true; +}