qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 3/3] Add support for RAPL MSRs in KVM/Qemu


From: Daniel P . Berrangé
Subject: Re: [PATCH v3 3/3] Add support for RAPL MSRs in KVM/Qemu
Date: Tue, 5 Mar 2024 13:57:46 +0000
User-agent: Mutt/2.2.12 (2023-09-09)

On Tue, Mar 05, 2024 at 02:25:09PM +0100, Anthony Harivel wrote:
> Daniel P. Berrangé, Mar 04, 2024 at 15:48:
> > On Mon, Mar 04, 2024 at 03:41:02PM +0100, Anthony Harivel wrote:
> > > 
> > > Hi Daniel,
> > > 
> > > > > +        if (s->msr_energy.enable == true) {
> > > >
> > > > This looks to be where we need to check that both the host CPU
> > > > vendor is intel, and the guest CPU vendor is intel, and that
> > > > the host CPU has the RAPL feature we're using.
> > >
> > > Checking for the host cpu and RAPL enable is fine and done. 
> > > 
> > > But checking for guest CPU is confusing me. 
> > > The RAPL feature is enable only with KVM enable. 
> > > This means "-cpu" can only be "host" or its derivative that essentially 
> > > copy the host CPU definition, no?
> >
> > KVM can use any named CPU.
> >
> > > That means if we are already checking the host cpu we don't need to do 
> > > anything for the guest, do we ?
> >
> > When I first wrote this I though it would be as simple as checknig a
> > CPUID feature flag. That appears to not be the case, however, as Linux
> > is just checking for various CPU models directly. With that in mind
> > perhaps we should just check of the guest CPU model vendor
> > == CPUID_VENDOR_INTEL and leave it at that.
> >
> > eg, create an error if running an AMD CPU such as $QEMU -cpu EPYC
> 
> The idea looks good to me. Now the hiccups of this solution is that 
> I cannot find a way to reach CPUArchState at this level of code (i.e 
> kvm_arch_init() ) with only the MachineState or the KVMState. 
> I can only reach the topology with x86_possible_cpu_arch_ids().
> 
> CPUArchState struct is holding the cpuid_vendor variables where we can 
> use IS_INTEL_CPU() for checking.
> 
> Maybe you know the trick that I miss ?

I think perhaps you can do a check in kvm_cpu_realizefn() from
target/i386/kvm/kvm-cpu.c, as you have CPUX86State state which
is what IS_INTEL_CPU wants.


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




reply via email to

[Prev in Thread] Current Thread [Next in Thread]