Message ID | 20240629-pmu-v1-2-7269123b88a4@daynix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/arm/kvm: Report PMU unavailability | expand |
On Sat, 29 Jun 2024 at 13:51, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: > > kvm-steal-time and sve properties are added for KVM even if the > corresponding features are not available. Always add pmu property too. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > --- > target/arm/cpu.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/target/arm/cpu.c b/target/arm/cpu.c > index 35fa281f1b98..0da72c12a5bd 100644 > --- a/target/arm/cpu.c > +++ b/target/arm/cpu.c > @@ -1770,9 +1770,10 @@ void arm_cpu_post_init(Object *obj) > > if (arm_feature(&cpu->env, ARM_FEATURE_PMU)) { > cpu->has_pmu = true; > - object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); > } > > + object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); This will allow the user to set the ARM_FEATURE_PMU feature bit on TCG CPUs where that doesn't make sense. If we want to make the property visible on all CPUs, we need to make it be an error to set it when it's not valid to set it (probably by adding some TCG/hvf equivalent to the "raise an error in arm_set_pmu()" code branch we already have for KVM). thanks -- PMM
On 2024/07/01 20:54, Peter Maydell wrote: > On Sat, 29 Jun 2024 at 13:51, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: >> >> kvm-steal-time and sve properties are added for KVM even if the >> corresponding features are not available. Always add pmu property too. >> >> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> --- >> target/arm/cpu.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/target/arm/cpu.c b/target/arm/cpu.c >> index 35fa281f1b98..0da72c12a5bd 100644 >> --- a/target/arm/cpu.c >> +++ b/target/arm/cpu.c >> @@ -1770,9 +1770,10 @@ void arm_cpu_post_init(Object *obj) >> >> if (arm_feature(&cpu->env, ARM_FEATURE_PMU)) { >> cpu->has_pmu = true; >> - object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); >> } >> >> + object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); > > This will allow the user to set the ARM_FEATURE_PMU feature > bit on TCG CPUs where that doesn't make sense. If we want to > make the property visible on all CPUs, we need to make it > be an error to set it when it's not valid to set it (probably > by adding some TCG/hvf equivalent to the "raise an error > in arm_set_pmu()" code branch we already have for KVM). Doesn't TCG support PMU though? Certainly hvf needs some care on the other hand. Regards, Akihiko Odaki
On Mon, 1 Jul 2024 at 13:17, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: > > On 2024/07/01 20:54, Peter Maydell wrote: > > On Sat, 29 Jun 2024 at 13:51, Akihiko Odaki <akihiko.odaki@daynix.com> wrote: > >> > >> kvm-steal-time and sve properties are added for KVM even if the > >> corresponding features are not available. Always add pmu property too. > >> > >> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> > >> --- > >> target/arm/cpu.c | 3 ++- > >> 1 file changed, 2 insertions(+), 1 deletion(-) > >> > >> diff --git a/target/arm/cpu.c b/target/arm/cpu.c > >> index 35fa281f1b98..0da72c12a5bd 100644 > >> --- a/target/arm/cpu.c > >> +++ b/target/arm/cpu.c > >> @@ -1770,9 +1770,10 @@ void arm_cpu_post_init(Object *obj) > >> > >> if (arm_feature(&cpu->env, ARM_FEATURE_PMU)) { > >> cpu->has_pmu = true; > >> - object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); > >> } > >> > >> + object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); > > > > This will allow the user to set the ARM_FEATURE_PMU feature > > bit on TCG CPUs where that doesn't make sense. If we want to > > make the property visible on all CPUs, we need to make it > > be an error to set it when it's not valid to set it (probably > > by adding some TCG/hvf equivalent to the "raise an error > > in arm_set_pmu()" code branch we already have for KVM). > > Doesn't TCG support PMU though? Not for every CPU. If the CPU is, say, an ARM1176, then it's too old to have the PMUv3 that our TCG code emulates. And that kind of PMU doesn't exist on the M-profile CPUs either. thanks -- PMM
diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 35fa281f1b98..0da72c12a5bd 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1770,9 +1770,10 @@ void arm_cpu_post_init(Object *obj) if (arm_feature(&cpu->env, ARM_FEATURE_PMU)) { cpu->has_pmu = true; - object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); } + object_property_add_bool(obj, "pmu", arm_get_pmu, arm_set_pmu); + /* * Allow user to turn off VFP and Neon support, but only for TCG -- * KVM does not currently allow us to lie to the guest about its
kvm-steal-time and sve properties are added for KVM even if the corresponding features are not available. Always add pmu property too. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> --- target/arm/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)