* [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value
@ 2022-12-09 16:44 James Clark
2022-12-09 16:44 ` [PATCH 1/1] " James Clark
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: James Clark @ 2022-12-09 16:44 UTC (permalink / raw)
To: kvmarm
Cc: James Clark, Marc Zyngier, James Morse, Alexandru Elisei,
Suzuki K Poulose, Oliver Upton, Catalin Marinas, Will Deacon,
linux-arm-kernel, kvmarm, linux-kernel
Hi,
We noticed qemu failing to run because of an assert on our CI. I don't see the issue anymore with
this fix.
Applies to kvmarm/next (753d734f3f34)
Thanks
James Clark (1):
KVM: arm64: PMU: Fix PMCR_EL0 reset value
arch/arm64/kvm/sys_regs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 16:44 [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value James Clark @ 2022-12-09 16:44 ` James Clark 2022-12-09 17:58 ` Oliver Upton 2022-12-12 9:08 ` [PATCH 0/1] " Marc Zyngier 2023-01-03 17:57 ` Marc Zyngier 2 siblings, 1 reply; 8+ messages in thread From: James Clark @ 2022-12-09 16:44 UTC (permalink / raw) To: kvmarm Cc: James Clark, Marc Zyngier, James Morse, Alexandru Elisei, Suzuki K Poulose, Oliver Upton, Catalin Marinas, Will Deacon, linux-arm-kernel, kvmarm, linux-kernel ARMV8_PMU_PMCR_N_MASK is an unshifted value which results in the wrong reset value for PMCR_EL0, so shift it to fix it. This fixes the following error when running qemu: $ qemu-system-aarch64 -cpu host -machine type=virt,accel=kvm -kernel ... target/arm/helper.c:1813: pmevcntr_rawwrite: Assertion `counter < pmu_num_counters(env)' failed. Fixes: 292e8f149476 ("KVM: arm64: PMU: Simplify PMCR_EL0 reset handling") Signed-off-by: James Clark <james.clark@arm.com> --- arch/arm64/kvm/sys_regs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index d5ee52d6bf73..c6cbfe6b854b 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -646,7 +646,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) return; /* Only preserve PMCR_EL0.N, and reset the rest to 0 */ - pmcr = read_sysreg(pmcr_el0) & ARMV8_PMU_PMCR_N_MASK; + pmcr = read_sysreg(pmcr_el0) & (ARMV8_PMU_PMCR_N_MASK << ARMV8_PMU_PMCR_N_SHIFT); if (!kvm_supports_32bit_el0()) pmcr |= ARMV8_PMU_PMCR_LC; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 16:44 ` [PATCH 1/1] " James Clark @ 2022-12-09 17:58 ` Oliver Upton 2022-12-10 11:16 ` Marc Zyngier ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Oliver Upton @ 2022-12-09 17:58 UTC (permalink / raw) To: James Clark Cc: kvmarm, Marc Zyngier, James Morse, Alexandru Elisei, Suzuki K Poulose, Catalin Marinas, Will Deacon, linux-arm-kernel, kvmarm, linux-kernel On Fri, Dec 09, 2022 at 04:44:46PM +0000, James Clark wrote: > ARMV8_PMU_PMCR_N_MASK is an unshifted value which results in the wrong > reset value for PMCR_EL0, so shift it to fix it. That's just mean. *_MASK tends to be a shifted mask, although it would appear that asm/perf_event.h does not follow this convention. Fixing that would be nice (as I'm sure somebody else will get burned by this), but for the sake of an immediate fix: > This fixes the following error when running qemu: > > $ qemu-system-aarch64 -cpu host -machine type=virt,accel=kvm -kernel ... > > target/arm/helper.c:1813: pmevcntr_rawwrite: Assertion `counter < pmu_num_counters(env)' failed. > > Fixes: 292e8f149476 ("KVM: arm64: PMU: Simplify PMCR_EL0 reset handling") > Signed-off-by: James Clark <james.clark@arm.com> Reviewed-by: Oliver Upton <oliver.upton@linux.dev> -- Thanks, Oliver > --- > arch/arm64/kvm/sys_regs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c > index d5ee52d6bf73..c6cbfe6b854b 100644 > --- a/arch/arm64/kvm/sys_regs.c > +++ b/arch/arm64/kvm/sys_regs.c > @@ -646,7 +646,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) > return; > > /* Only preserve PMCR_EL0.N, and reset the rest to 0 */ > - pmcr = read_sysreg(pmcr_el0) & ARMV8_PMU_PMCR_N_MASK; > + pmcr = read_sysreg(pmcr_el0) & (ARMV8_PMU_PMCR_N_MASK << ARMV8_PMU_PMCR_N_SHIFT); > if (!kvm_supports_32bit_el0()) > pmcr |= ARMV8_PMU_PMCR_LC; > > -- > 2.25.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 17:58 ` Oliver Upton @ 2022-12-10 11:16 ` Marc Zyngier 2022-12-12 6:08 ` Anshuman Khandual 2022-12-13 18:22 ` Ricardo Koller 2 siblings, 0 replies; 8+ messages in thread From: Marc Zyngier @ 2022-12-10 11:16 UTC (permalink / raw) To: James Clark, Oliver Upton Cc: kvmarm, James Morse, Alexandru Elisei, Suzuki K Poulose, Catalin Marinas, Will Deacon, linux-arm-kernel, kvmarm, linux-kernel On Fri, 09 Dec 2022 17:58:31 +0000, Oliver Upton <oliver.upton@linux.dev> wrote: > > On Fri, Dec 09, 2022 at 04:44:46PM +0000, James Clark wrote: > > ARMV8_PMU_PMCR_N_MASK is an unshifted value which results in the wrong > > reset value for PMCR_EL0, so shift it to fix it. > > That's just mean. *_MASK tends to be a shifted mask, although it would > appear that asm/perf_event.h does not follow this convention. Fixing > that would be nice (as I'm sure somebody else will get burned by this), > but for the sake of an immediate fix: Well, that'll teach me the usual lesson: last minute changes without full non-regression testing are bound to end in disaster. > > > This fixes the following error when running qemu: > > > > $ qemu-system-aarch64 -cpu host -machine type=virt,accel=kvm -kernel ... > > > > target/arm/helper.c:1813: pmevcntr_rawwrite: Assertion `counter < pmu_num_counters(env)' failed. > > > > Fixes: 292e8f149476 ("KVM: arm64: PMU: Simplify PMCR_EL0 reset handling") > > Signed-off-by: James Clark <james.clark@arm.com> > > Reviewed-by: Oliver Upton <oliver.upton@linux.dev> Thanks both. I'll queue that ASAP as a fix. M. -- Without deviation from the norm, progress is not possible. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 17:58 ` Oliver Upton 2022-12-10 11:16 ` Marc Zyngier @ 2022-12-12 6:08 ` Anshuman Khandual 2022-12-13 18:22 ` Ricardo Koller 2 siblings, 0 replies; 8+ messages in thread From: Anshuman Khandual @ 2022-12-12 6:08 UTC (permalink / raw) To: Oliver Upton, James Clark Cc: kvmarm, Marc Zyngier, James Morse, Alexandru Elisei, Suzuki K Poulose, Catalin Marinas, Will Deacon, linux-arm-kernel, kvmarm, linux-kernel On 12/9/22 23:28, Oliver Upton wrote: > On Fri, Dec 09, 2022 at 04:44:46PM +0000, James Clark wrote: >> ARMV8_PMU_PMCR_N_MASK is an unshifted value which results in the wrong >> reset value for PMCR_EL0, so shift it to fix it. > > That's just mean. *_MASK tends to be a shifted mask, although it would > appear that asm/perf_event.h does not follow this convention. Fixing > that would be nice (as I'm sure somebody else will get burned by this), > but for the sake of an immediate fix: New arch/arm64/tools/sysreg generates shifted i.e in place masks for register fields. Once all these PMU registers move into arch/arm64/tools/sysreg, this problem will be solved. > >> This fixes the following error when running qemu: >> >> $ qemu-system-aarch64 -cpu host -machine type=virt,accel=kvm -kernel ... >> >> target/arm/helper.c:1813: pmevcntr_rawwrite: Assertion `counter < pmu_num_counters(env)' failed. >> >> Fixes: 292e8f149476 ("KVM: arm64: PMU: Simplify PMCR_EL0 reset handling") >> Signed-off-by: James Clark <james.clark@arm.com> > > Reviewed-by: Oliver Upton <oliver.upton@linux.dev> > > -- > Thanks, > Oliver > >> --- >> arch/arm64/kvm/sys_regs.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c >> index d5ee52d6bf73..c6cbfe6b854b 100644 >> --- a/arch/arm64/kvm/sys_regs.c >> +++ b/arch/arm64/kvm/sys_regs.c >> @@ -646,7 +646,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) >> return; >> >> /* Only preserve PMCR_EL0.N, and reset the rest to 0 */ >> - pmcr = read_sysreg(pmcr_el0) & ARMV8_PMU_PMCR_N_MASK; >> + pmcr = read_sysreg(pmcr_el0) & (ARMV8_PMU_PMCR_N_MASK << ARMV8_PMU_PMCR_N_SHIFT); >> if (!kvm_supports_32bit_el0()) >> pmcr |= ARMV8_PMU_PMCR_LC; >> >> -- >> 2.25.1 >> > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 17:58 ` Oliver Upton 2022-12-10 11:16 ` Marc Zyngier 2022-12-12 6:08 ` Anshuman Khandual @ 2022-12-13 18:22 ` Ricardo Koller 2 siblings, 0 replies; 8+ messages in thread From: Ricardo Koller @ 2022-12-13 18:22 UTC (permalink / raw) To: Oliver Upton Cc: James Clark, Will Deacon, Marc Zyngier, linux-kernel, Catalin Marinas, kvmarm, kvmarm, linux-arm-kernel On Fri, Dec 09, 2022 at 05:58:31PM +0000, Oliver Upton wrote: > On Fri, Dec 09, 2022 at 04:44:46PM +0000, James Clark wrote: > > ARMV8_PMU_PMCR_N_MASK is an unshifted value which results in the wrong > > reset value for PMCR_EL0, so shift it to fix it. > > That's just mean. *_MASK tends to be a shifted mask, although it would > appear that asm/perf_event.h does not follow this convention. Fixing > that would be nice (as I'm sure somebody else will get burned by this), > but for the sake of an immediate fix: > Even kvm-unit-tests does this: arm/pmu.c: #define PMU_PMCR_N_SHIFT 11 #define PMU_PMCR_N_MASK 0x1f > > This fixes the following error when running qemu: > > > > $ qemu-system-aarch64 -cpu host -machine type=virt,accel=kvm -kernel ... > > > > target/arm/helper.c:1813: pmevcntr_rawwrite: Assertion `counter < pmu_num_counters(env)' failed. > > > > Fixes: 292e8f149476 ("KVM: arm64: PMU: Simplify PMCR_EL0 reset handling") > > Signed-off-by: James Clark <james.clark@arm.com> > > Reviewed-by: Oliver Upton <oliver.upton@linux.dev> > > -- > Thanks, > Oliver > > > --- > > arch/arm64/kvm/sys_regs.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c > > index d5ee52d6bf73..c6cbfe6b854b 100644 > > --- a/arch/arm64/kvm/sys_regs.c > > +++ b/arch/arm64/kvm/sys_regs.c > > @@ -646,7 +646,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) > > return; > > > > /* Only preserve PMCR_EL0.N, and reset the rest to 0 */ > > - pmcr = read_sysreg(pmcr_el0) & ARMV8_PMU_PMCR_N_MASK; > > + pmcr = read_sysreg(pmcr_el0) & (ARMV8_PMU_PMCR_N_MASK << ARMV8_PMU_PMCR_N_SHIFT); > > if (!kvm_supports_32bit_el0()) > > pmcr |= ARMV8_PMU_PMCR_LC; > > > > -- > > 2.25.1 > > > _______________________________________________ > kvmarm mailing list > kvmarm@lists.cs.columbia.edu > https://lists.cs.columbia.edu/mailman/listinfo/kvmarm _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 16:44 [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value James Clark 2022-12-09 16:44 ` [PATCH 1/1] " James Clark @ 2022-12-12 9:08 ` Marc Zyngier 2023-01-03 17:57 ` Marc Zyngier 2 siblings, 0 replies; 8+ messages in thread From: Marc Zyngier @ 2022-12-12 9:08 UTC (permalink / raw) To: kvmarm, James Clark Cc: Catalin Marinas, linux-kernel, Will Deacon, linux-arm-kernel, kvmarm On Fri, 9 Dec 2022 16:44:45 +0000, James Clark wrote: > We noticed qemu failing to run because of an assert on our CI. I don't see the issue anymore with > this fix. > > Applies to kvmarm/next (753d734f3f34) > > Thanks > > [...] Applied to fixes, thanks! [1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value commit: aff234839f8b80ac101e6c2f14d0e44b236efa48 Cheers, M. -- Without deviation from the norm, progress is not possible. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value 2022-12-09 16:44 [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value James Clark 2022-12-09 16:44 ` [PATCH 1/1] " James Clark 2022-12-12 9:08 ` [PATCH 0/1] " Marc Zyngier @ 2023-01-03 17:57 ` Marc Zyngier 2 siblings, 0 replies; 8+ messages in thread From: Marc Zyngier @ 2023-01-03 17:57 UTC (permalink / raw) To: James Clark, kvmarm Cc: kvmarm, linux-arm-kernel, Will Deacon, Catalin Marinas, linux-kernel On Fri, 9 Dec 2022 16:44:45 +0000, James Clark wrote: > We noticed qemu failing to run because of an assert on our CI. I don't see the issue anymore with > this fix. > > Applies to kvmarm/next (753d734f3f34) > > Thanks > > [...] Applied to fixes, thanks! [1/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value commit: edb4929ea9ba48cd91e3867041f49e4c34d729ed Cheers, M. -- Without deviation from the norm, progress is not possible. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-01-03 19:12 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-12-09 16:44 [PATCH 0/1] KVM: arm64: PMU: Fix PMCR_EL0 reset value James Clark 2022-12-09 16:44 ` [PATCH 1/1] " James Clark 2022-12-09 17:58 ` Oliver Upton 2022-12-10 11:16 ` Marc Zyngier 2022-12-12 6:08 ` Anshuman Khandual 2022-12-13 18:22 ` Ricardo Koller 2022-12-12 9:08 ` [PATCH 0/1] " Marc Zyngier 2023-01-03 17:57 ` Marc Zyngier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).