Commit 01009b06 authored by Marc Zyngier's avatar Marc Zyngier
Browse files

arm64/sysreg: Get rid of TRFCR_ELx SysregFields



There is no such thing as TRFCR_ELx in the architecture.
What we have is TRFCR_EL1, for which TRFCR_EL12 is an accessor.

Rename TRFCR_ELx_* to TRFCR_EL1_*, and fix the bit of code using
these names.

Similarly, TRFCR_EL12 is redefined as a mapping to TRFCR_EL1.

Reviewed-by: default avatarJames Clark <james.clark@linaro.org>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/87cygsqgkh.wl-maz@kernel.org
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
parent fa5e4043
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -1999,7 +1999,7 @@ Field 17:16 ZEN
Res0	15:0
EndSysreg

SysregFields TRFCR_ELx
Sysreg	TRFCR_EL1	3	0	1	2	1
Res0	63:7
UnsignedEnum	6:5	TS
	0b0001	VIRTUAL
@@ -2011,10 +2011,6 @@ Field 1 ExTRE
Field	0	E0TRE
EndSysregFields

Sysreg	TRFCR_EL1	3	0	1	2	1
Fields	TRFCR_ELx
EndSysreg

Sysreg	SMPRI_EL1	3	0	1	2	4
Res0	63:4
Field	3:0	PRIORITY
@@ -2991,7 +2987,7 @@ Mapping ZCR_EL1
EndSysreg

Sysreg	TRFCR_EL12	3	5	1	2	1
Fields	TRFCR_ELx
Mapping	TRFCR_EL1
EndSysreg

Sysreg	SMCR_EL12	3	5	1	2	6
+8 −8
Original line number Diff line number Diff line
@@ -275,7 +275,7 @@ static void etm4x_prohibit_trace(struct etmv4_drvdata *drvdata)
	if (!drvdata->trfcr)
		return;

	trfcr = drvdata->trfcr & ~(TRFCR_ELx_ExTRE | TRFCR_ELx_E0TRE);
	trfcr = drvdata->trfcr & ~(TRFCR_EL1_ExTRE | TRFCR_EL1_E0TRE);

	write_trfcr(trfcr);
	kvm_tracing_set_el1_configuration(trfcr);
@@ -286,9 +286,9 @@ static u64 etm4x_get_kern_user_filter(struct etmv4_drvdata *drvdata)
	u64 trfcr = drvdata->trfcr;

	if (drvdata->config.mode & ETM_MODE_EXCL_KERN)
		trfcr &= ~TRFCR_ELx_ExTRE;
		trfcr &= ~TRFCR_EL1_ExTRE;
	if (drvdata->config.mode & ETM_MODE_EXCL_USER)
		trfcr &= ~TRFCR_ELx_E0TRE;
		trfcr &= ~TRFCR_EL1_E0TRE;

	return trfcr;
}
@@ -312,7 +312,7 @@ static void etm4x_allow_trace(struct etmv4_drvdata *drvdata)
		return;

	if (drvdata->config.mode & ETM_MODE_EXCL_HOST)
		trfcr = drvdata->trfcr & ~(TRFCR_ELx_ExTRE | TRFCR_ELx_E0TRE);
		trfcr = drvdata->trfcr & ~(TRFCR_EL1_ExTRE | TRFCR_EL1_E0TRE);
	else
		trfcr = etm4x_get_kern_user_filter(drvdata);

@@ -320,7 +320,7 @@ static void etm4x_allow_trace(struct etmv4_drvdata *drvdata)

	/* Set filters for guests and pass to KVM */
	if (drvdata->config.mode & ETM_MODE_EXCL_GUEST)
		guest_trfcr = drvdata->trfcr & ~(TRFCR_ELx_ExTRE | TRFCR_ELx_E0TRE);
		guest_trfcr = drvdata->trfcr & ~(TRFCR_EL1_ExTRE | TRFCR_EL1_E0TRE);
	else
		guest_trfcr = etm4x_get_kern_user_filter(drvdata);

@@ -1176,9 +1176,9 @@ static void cpu_detect_trace_filtering(struct etmv4_drvdata *drvdata)
	 * tracing at the kernel EL and EL0, forcing to use the
	 * virtual time as the timestamp.
	 */
	trfcr = (TRFCR_ELx_TS_VIRTUAL |
		 TRFCR_ELx_ExTRE |
		 TRFCR_ELx_E0TRE);
	trfcr = (TRFCR_EL1_TS_VIRTUAL |
		 TRFCR_EL1_ExTRE |
		 TRFCR_EL1_E0TRE);

	/* If we are running at EL2, allow tracing the CONTEXTIDR_EL2. */
	if (is_kernel_in_hyp_mode())
+5 −5
Original line number Diff line number Diff line
@@ -2319,11 +2319,11 @@ static ssize_t ts_source_show(struct device *dev,
		goto out;
	}

	switch (drvdata->trfcr & TRFCR_ELx_TS_MASK) {
	case TRFCR_ELx_TS_VIRTUAL:
	case TRFCR_ELx_TS_GUEST_PHYSICAL:
	case TRFCR_ELx_TS_PHYSICAL:
		val = FIELD_GET(TRFCR_ELx_TS_MASK, drvdata->trfcr);
	switch (drvdata->trfcr & TRFCR_EL1_TS_MASK) {
	case TRFCR_EL1_TS_VIRTUAL:
	case TRFCR_EL1_TS_GUEST_PHYSICAL:
	case TRFCR_EL1_TS_PHYSICAL:
		val = FIELD_GET(TRFCR_EL1_TS_MASK, drvdata->trfcr);
		break;
	default:
		val = -1;
+1 −1
Original line number Diff line number Diff line
@@ -1118,7 +1118,7 @@ static u64 cpu_prohibit_trace(void)
	u64 trfcr = read_trfcr();

	/* Prohibit tracing at EL0 & the kernel EL */
	write_trfcr(trfcr & ~(TRFCR_ELx_ExTRE | TRFCR_ELx_E0TRE));
	write_trfcr(trfcr & ~(TRFCR_EL1_ExTRE | TRFCR_EL1_E0TRE));
	/* Return the original value of the TRFCR */
	return trfcr;
}