__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * CPU-measurement facilities
 *
 *  Copyright IBM Corp. 2012, 2018
 *  Author(s): Hendrik Brueckner <[email protected]>
 *	       Jan Glauber <[email protected]>
 */
#ifndef _ASM_S390_CPU_MF_H
#define _ASM_S390_CPU_MF_H

#include <linux/errno.h>
#include <linux/kmsan-checks.h>
#include <asm/asm-extable.h>
#include <asm/facility.h>
#include <asm/asm.h>

asm(".include \"asm/cpu_mf-insn.h\"\n");

#define CPU_MF_INT_SF_IAE	(1 << 31)	/* invalid entry address */
#define CPU_MF_INT_SF_ISE	(1 << 30)	/* incorrect SDBT entry */
#define CPU_MF_INT_SF_PRA	(1 << 29)	/* program request alert */
#define CPU_MF_INT_SF_SACA	(1 << 23)	/* sampler auth. change alert */
#define CPU_MF_INT_SF_LSDA	(1 << 22)	/* loss of sample data alert */
#define CPU_MF_INT_CF_MTDA	(1 << 15)	/* loss of MT ctr. data alert */
#define CPU_MF_INT_CF_CACA	(1 <<  7)	/* counter auth. change alert */
#define CPU_MF_INT_CF_LCDA	(1 <<  6)	/* loss of counter data alert */
#define CPU_MF_INT_CF_MASK	(CPU_MF_INT_CF_MTDA|CPU_MF_INT_CF_CACA| \
				 CPU_MF_INT_CF_LCDA)
#define CPU_MF_INT_SF_MASK	(CPU_MF_INT_SF_IAE|CPU_MF_INT_SF_ISE|	\
				 CPU_MF_INT_SF_PRA|CPU_MF_INT_SF_SACA|	\
				 CPU_MF_INT_SF_LSDA)

#define CPU_MF_SF_RIBM_NOTAV	0x1		/* Sampling unavailable */

/* CPU measurement facility support */
static inline int cpum_cf_avail(void)
{
	return test_facility(40) && test_facility(67);
}

static inline int cpum_sf_avail(void)
{
	return test_facility(40) && test_facility(68);
}

struct cpumf_ctr_info {
	u16   cfvn;
	u16   auth_ctl;
	u16   enable_ctl;
	u16   act_ctl;
	u16   max_cpu;
	u16   csvn;
	u16   max_cg;
	u16   reserved1;
	u32   reserved2[12];
} __packed;

/* QUERY SAMPLING INFORMATION block */
struct hws_qsi_info_block {	    /* Bit(s) */
	unsigned int b0_13:14;	    /* 0-13: zeros			 */
	unsigned int as:1;	    /* 14: basic-sampling authorization	 */
	unsigned int ad:1;	    /* 15: diag-sampling authorization	 */
	unsigned int b16_21:6;	    /* 16-21: zeros			 */
	unsigned int es:1;	    /* 22: basic-sampling enable control */
	unsigned int ed:1;	    /* 23: diag-sampling enable control	 */
	unsigned int b24_29:6;	    /* 24-29: zeros			 */
	unsigned int cs:1;	    /* 30: basic-sampling activation control */
	unsigned int cd:1;	    /* 31: diag-sampling activation control */
	unsigned int bsdes:16;	    /* 4-5: size of basic sampling entry */
	unsigned int dsdes:16;	    /* 6-7: size of diagnostic sampling entry */
	unsigned long min_sampl_rate; /* 8-15: minimum sampling interval */
	unsigned long max_sampl_rate; /* 16-23: maximum sampling interval*/
	unsigned long tear;	    /* 24-31: TEAR contents		 */
	unsigned long dear;	    /* 32-39: DEAR contents		 */
	unsigned int rsvrd0:24;	    /* 40-42: reserved			 */
	unsigned int ribm:8;	    /* 43: Reserved by IBM		 */
	unsigned int cpu_speed;     /* 44-47: CPU speed			 */
	unsigned long long rsvrd1;  /* 48-55: reserved			 */
	unsigned long long rsvrd2;  /* 56-63: reserved			 */
} __packed;

/* SET SAMPLING CONTROLS request block */
struct hws_lsctl_request_block {
	unsigned int s:1;	    /* 0: maximum buffer indicator	 */
	unsigned int h:1;	    /* 1: part. level reserved for VM use*/
	unsigned long long b2_53:52;/* 2-53: zeros			 */
	unsigned int es:1;	    /* 54: basic-sampling enable control */
	unsigned int ed:1;	    /* 55: diag-sampling enable control	 */
	unsigned int b56_61:6;	    /* 56-61: - zeros			 */
	unsigned int cs:1;	    /* 62: basic-sampling activation control */
	unsigned int cd:1;	    /* 63: diag-sampling activation control  */
	unsigned long interval;     /* 8-15: sampling interval		 */
	unsigned long tear;	    /* 16-23: TEAR contents		 */
	unsigned long dear;	    /* 24-31: DEAR contents		 */
	/* 32-63:							 */
	unsigned long rsvrd1;	    /* reserved				 */
	unsigned long rsvrd2;	    /* reserved				 */
	unsigned long rsvrd3;	    /* reserved				 */
	unsigned long rsvrd4;	    /* reserved				 */
} __packed;

struct hws_basic_entry {
	unsigned int def:16;	    /* 0-15  Data Entry Format		 */
	unsigned int R:4;	    /* 16-19 reserved			 */
	unsigned int U:4;	    /* 20-23 Number of unique instruct.  */
	unsigned int z:2;	    /* zeros				 */
	unsigned int T:1;	    /* 26 PSW DAT mode			 */
	unsigned int W:1;	    /* 27 PSW wait state		 */
	unsigned int P:1;	    /* 28 PSW Problem state		 */
	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 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		 */
	unsigned long long hpp;     /* Host Program Parameter		 */
} __packed;

struct hws_diag_entry {
	unsigned int def:16;	    /* 0-15  Data Entry Format		 */
	unsigned int R:15;	    /* 16-19 and 20-30 reserved		 */
	unsigned int I:1;	    /* 31 entry valid or invalid	 */
	u8	     data[];	    /* Machine-dependent sample data	 */
} __packed;

struct hws_combined_entry {
	struct hws_basic_entry	basic;	/* Basic-sampling data entry */
	struct hws_diag_entry	diag;	/* Diagnostic-sampling data entry */
} __packed;

union hws_trailer_header {
	struct {
		unsigned int f:1;	/* 0 - Block Full Indicator   */
		unsigned int a:1;	/* 1 - Alert request control  */
		unsigned int t:1;	/* 2 - Timestamp format	      */
		unsigned int :29;	/* 3 - 31: Reserved	      */
		unsigned int bsdes:16;	/* 32-47: size of basic SDE   */
		unsigned int dsdes:16;	/* 48-63: size of diagnostic SDE */
		unsigned long long overflow; /* 64 - Overflow Count   */
	};
	u128 val;
};

struct hws_trailer_entry {
	union hws_trailer_header header; /* 0 - 15 Flags + Overflow Count     */
	unsigned char timestamp[16];	 /* 16 - 31 timestamp		      */
	unsigned long long reserved1;	 /* 32 -Reserved		      */
	unsigned long long reserved2;	 /*				      */
	union {				 /* 48 - reserved for programming use */
		struct {
			unsigned int clock_base:1; /* in progusage2 */
			unsigned long long progusage1:63;
			unsigned long long progusage2;
		};
		unsigned long long progusage[2];
	};
} __packed;

/* Load program parameter */
static inline void lpp(void *pp)
{
	asm volatile("lpp 0(%0)\n" :: "a" (pp) : "memory");
}

/* Query counter information */
static inline int qctri(struct cpumf_ctr_info *info)
{
	int rc = -EINVAL;

	asm volatile (
		"0:	qctri	%1\n"
		"1:	lhi	%0,0\n"
		"2:\n"
		EX_TABLE(1b, 2b)
		: "+d" (rc), "=Q" (*info));
	return rc;
}

/* Load CPU-counter-set controls */
static inline int lcctl(u64 ctl)
{
	int cc;

	asm volatile (
		"	lcctl	%[ctl]\n"
		CC_IPM(cc)
		: CC_OUT(cc, cc)
		: [ctl] "Q" (ctl)
		: CC_CLOBBER);
	return CC_TRANSFORM(cc);
}

/* Extract CPU counter */
static inline int __ecctr(u64 ctr, u64 *content)
{
	u64 _content;
	int cc;

	asm volatile (
		"	ecctr	%[_content],%[ctr]\n"
		CC_IPM(cc)
		: CC_OUT(cc, cc), [_content] "=d" (_content)
		: [ctr] "d" (ctr)
		: CC_CLOBBER);
	*content = _content;
	return CC_TRANSFORM(cc);
}

/* Extract CPU counter */
static inline int ecctr(u64 ctr, u64 *val)
{
	u64 content;
	int cc;

	cc = __ecctr(ctr, &content);
	if (!cc)
		*val = content;
	return cc;
}

/* Store CPU counter multiple for a particular counter set */
enum stcctm_ctr_set {
	EXTENDED = 0,
	BASIC = 1,
	PROBLEM_STATE = 2,
	CRYPTO_ACTIVITY = 3,
	MT_DIAG = 5,
	MT_DIAG_CLEARING = 9,	/* clears loss-of-MT-ctr-data alert */
};

static __always_inline int stcctm(enum stcctm_ctr_set set, u64 range, u64 *dest)
{
	int cc;

	asm volatile (
		"	STCCTM	%[range],%[set],%[dest]\n"
		CC_IPM(cc)
		: CC_OUT(cc, cc)
		: [dest] "Q" (*dest), [range] "d" (range), [set] "i" (set)
		: CC_CLOBBER_LIST("memory"));
	/*
	 * If cc == 2, less than RANGE counters are stored, but it's not easy
	 * to tell how many. Always unpoison the whole range for simplicity.
	 */
	kmsan_unpoison_memory(dest, range * sizeof(u64));
	return CC_TRANSFORM(cc);
}

/* Query sampling information */
static inline int qsi(struct hws_qsi_info_block *info)
{
	int cc = 1;

	asm volatile(
		"0:	qsi	%1\n"
		"1:	lhi	%0,0\n"
		"2:\n"
		EX_TABLE(0b, 2b) EX_TABLE(1b, 2b)
		: "+d" (cc), "+Q" (*info));
	return cc ? -EINVAL : 0;
}

/* Load sampling controls */
static inline int lsctl(struct hws_lsctl_request_block *req)
{
	int cc, exception;

	exception = 1;
	asm volatile(
		"0:	lsctl	%[req]\n"
		"1:	lhi	%[exc],0\n"
		"2:\n"
		CC_IPM(cc)
		EX_TABLE(0b, 2b) EX_TABLE(1b, 2b)
		: CC_OUT(cc, cc), [exc] "+d" (exception)
		: [req] "Q" (*req)
		: CC_CLOBBER);
	if (exception || CC_TRANSFORM(cc))
		return -EINVAL;
	return 0;
}
#endif /* _ASM_S390_CPU_MF_H */

Filemanager

Name Type Size Permission Actions
trace Folder 0755
vdso Folder 0755
Kbuild File 253 B 0644
abs_lowcore.h File 703 B 0644
access-regs.h File 806 B 0644
airq.h File 3.29 KB 0644
alternative.h File 7.2 KB 0644
ap.h File 15.71 KB 0644
appldata.h File 1.57 KB 0644
arch_hweight.h File 1.66 KB 0644
archrandom.h File 947 B 0644
asm-const.h File 376 B 0644
asm-extable.h File 3.29 KB 0644
asm-prototypes.h File 384 B 0644
asm.h File 1.84 KB 0644
atomic.h File 6.61 KB 0644
atomic_ops.h File 7.12 KB 0644
barrier.h File 1.93 KB 0644
bitops.h File 6.69 KB 0644
boot_data.h File 1.62 KB 0644
bug.h File 1.5 KB 0644
cache.h File 389 B 0644
ccwdev.h File 8.33 KB 0644
ccwgroup.h File 2.25 KB 0644
checksum.h File 3.18 KB 0644
chpid.h File 979 B 0644
chsc.h File 1.7 KB 0644
cio.h File 9.01 KB 0644
clocksource.h File 184 B 0644
clp.h File 1.39 KB 0644
cmb.h File 425 B 0644
cmpxchg.h File 6.04 KB 0644
compat.h File 2.78 KB 0644
cpacf.h File 21.03 KB 0644
cpcmd.h File 1.11 KB 0644
cpu.h File 620 B 0644
cpu_mf-insn.h File 478 B 0644
cpu_mf.h File 8.49 KB 0644
cpufeature.h File 464 B 0644
cputime.h File 393 B 0644
crw.h File 1.81 KB 0644
css_chars.h File 904 B 0644
ctlreg.h File 7.82 KB 0644
current.h File 407 B 0644
dat-bits.h File 4.91 KB 0644
debug.h File 14.36 KB 0644
delay.h File 647 B 0644
diag.h File 7.72 KB 0644
dis.h File 636 B 0644
dma-types.h File 2.5 KB 0644
dma.h File 359 B 0644
dwarf.h File 952 B 0644
eadm.h File 2.07 KB 0644
ebcdic.h File 1.4 KB 0644
elf.h File 11.2 KB 0644
entry-common.h File 1.43 KB 0644
exec.h File 269 B 0644
extable.h File 1.88 KB 0644
extmem.h File 1.04 KB 0644
facility.h File 3.41 KB 0644
fault.h File 730 B 0644
fcx.h File 7.96 KB 0644
fprobe.h File 229 B 0644
fpu-insn-asm.h File 15.4 KB 0644
fpu-insn.h File 11.35 KB 0644
fpu-types.h File 1.06 KB 0644
fpu.h File 8.18 KB 0644
ftrace.h File 4.32 KB 0644
ftrace.lds.h File 720 B 0644
futex.h File 2.56 KB 0644
gmap.h File 6.31 KB 0644
hardirq.h File 783 B 0644
hiperdispatch.h File 295 B 0644
hugetlb.h File 2.81 KB 0644
hw_irq.h File 210 B 0644
idals.h File 6.1 KB 0644
idle.h File 614 B 0644
io.h File 2.49 KB 0644
ipl.h File 4.05 KB 0644
irq.h File 2.55 KB 0644
irq_work.h File 204 B 0644
irqflags.h File 2.07 KB 0644
isc.h File 1.01 KB 0644
itcw.h File 950 B 0644
jump_label.h File 1.32 KB 0644
kasan.h File 460 B 0644
kdebug.h File 397 B 0644
kexec.h File 3.17 KB 0644
kfence.h File 1.13 KB 0644
kmsan.h File 1.54 KB 0644
kprobes.h File 2.02 KB 0644
kvm_host.h File 27.71 KB 0644
kvm_para.h File 3.67 KB 0644
linkage.h File 223 B 0644
lowcore.h File 7.22 KB 0644
maccess.h File 564 B 0644
march.h File 722 B 0644
mem_encrypt.h File 304 B 0644
mmu.h File 1.38 KB 0644
mmu_context.h File 3.42 KB 0644
module.h File 1.54 KB 0644
msi.h File 527 B 0644
nmi.h File 3.51 KB 0644
nospec-branch.h File 1.18 KB 0644
nospec-insn.h File 2.43 KB 0644
numa.h File 386 B 0644
os_info.h File 1.67 KB 0644
page-states.h File 1.75 KB 0644
page.h File 6.76 KB 0644
pai.h File 2.03 KB 0644
pci.h File 8.64 KB 0644
pci_clp.h File 5.35 KB 0644
pci_debug.h File 722 B 0644
pci_dma.h File 2.89 KB 0644
pci_insn.h File 3.99 KB 0644
pci_io.h File 4.28 KB 0644
percpu.h File 6.33 KB 0644
perf_event.h File 1.93 KB 0644
pfault.h File 461 B 0644
pgalloc.h File 4.39 KB 0644
pgtable.h File 60.39 KB 0644
physmem_info.h File 4.92 KB 0644
pkey.h File 754 B 0644
pnet.h File 325 B 0644
preempt.h File 3.51 KB 0644
processor.h File 10.96 KB 0644
ptrace.h File 7.56 KB 0644
purgatory.h File 329 B 0644
qdio.h File 9.92 KB 0644
runtime-const.h File 1.92 KB 0644
runtime_instr.h File 634 B 0644
rwonce.h File 691 B 0644
schid.h File 525 B 0644
sclp.h File 4.97 KB 0644
scsw.h File 25.06 KB 0644
seccomp.h File 808 B 0644
sections.h File 1.03 KB 0644
set_memory.h File 2.12 KB 0644
setup.h File 4.8 KB 0644
signal.h File 644 B 0644
sigp.h File 1.87 KB 0644
smp.h File 2.06 KB 0644
softirq_stack.h File 372 B 0644
sparsemem.h File 506 B 0644
spinlock.h File 3.31 KB 0644
spinlock_types.h File 413 B 0644
stacktrace.h File 7.88 KB 0644
stp.h File 1.69 KB 0644
string.h File 5.49 KB 0644
syscall.h File 3.81 KB 0644
syscall_wrapper.h File 4.67 KB 0644
sysinfo.h File 4.33 KB 0644
text-patching.h File 301 B 0644
thread_info.h File 3.74 KB 0644
timex.h File 6.6 KB 0644
tlb.h File 4.68 KB 0644
tlbflush.h File 2.98 KB 0644
topology.h File 2.91 KB 0644
tpi.h File 736 B 0644
types.h File 318 B 0644
uaccess.h File 18.89 KB 0644
unistd.h File 1.01 KB 0644
unwind.h File 3.3 KB 0644
uprobes.h File 588 B 0644
user.h File 3.16 KB 0644
uv.h File 16.12 KB 0644
vdso-symbols.h File 499 B 0644
vdso.h File 326 B 0644
vmalloc.h File 90 B 0644
vmlinux.lds.h File 1.14 KB 0644
vtime.h File 612 B 0644
vtimer.h File 830 B 0644
word-at-a-time.h File 1.52 KB 0644
xor.h File 454 B 0644
Filemanager