Re: [PATCH 2/5] util: introduce virHostCPUGetMicrocodeVersion

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

 



On Thu, Jan 04, 2018 at 16:15:46 +0100, Peter Krempa wrote:
> On Thu, Jan 04, 2018 at 15:58:09 +0100, Jiri Denemark wrote:
> > From: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> > 
> > This new API reads host's CPU microcode version from /proc/cpuinfo.
> > 
> > Unfortunately, there is no other way of reading microcode version which
> > would be usable from both system and session daemon.
> > 
> > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> > Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx>
> > ---
> >  src/libvirt_private.syms |  1 +
> >  src/util/virhostcpu.c    | 43 +++++++++++++++++++++++++++++++++++++++++++
> >  src/util/virhostcpu.h    |  2 ++
> >  3 files changed, 46 insertions(+)
> > 
> > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> > index 8d583e3e74..a705fa846d 100644
> > --- a/src/libvirt_private.syms
> > +++ b/src/libvirt_private.syms
> > @@ -1869,6 +1869,7 @@ virHostCPUGetCount;
> >  virHostCPUGetInfo;
> >  virHostCPUGetKVMMaxVCPUs;
> >  virHostCPUGetMap;
> > +virHostCPUGetMicrocodeVersion;
> >  virHostCPUGetOnline;
> >  virHostCPUGetOnlineBitmap;
> >  virHostCPUGetPresentBitmap;
> > diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
> > index c485a97211..713fdec553 100644
> > --- a/src/util/virhostcpu.c
> > +++ b/src/util/virhostcpu.c
> > @@ -1206,3 +1206,46 @@ virHostCPUGetKVMMaxVCPUs(void)
> >      return -1;
> >  }
> >  #endif /* HAVE_LINUX_KVM_H */
> > +
> > +
> > +#ifdef __linux__
> > +
> > +unsigned int
> > +virHostCPUGetMicrocodeVersion(void)
> > +{
> > +    char *outbuf = NULL;
> > +    char *cur;
> > +    unsigned int version = 0;
> > +
> > +    if (virFileReadHeaderQuiet(CPUINFO_PATH, 4096, &outbuf) < 0) {
> 
> In other places we read 1MiB of /proc/cpuinfo:
> 
> src/util/virsysinfo.c:#define CPUINFO_FILE_LEN (1024*1024)    /* 1MB limit for /proc/cpuinfo file */
> 
> Will this be enough?

Should be (TM) :-) We're only interested in the first CPU and the
microcode version is printed very early before the endlessly growing
list of CPU features.

> 
> 
> > +        char ebuf[1024];
> > +        VIR_DEBUG("Failed to read microcode version from %s: %s",
> > +                  CPUINFO_PATH, virStrerror(errno, ebuf, sizeof(ebuf)));
> 
> Formatting the error message into a debug message does not make much
> sense. I'd just log 'errno' in raw since this function does not really
> return any errors.
...
> ACK with pointless error formatting removed.

It's not pointless. It makes the log useful without having to look at
/usr/include/asm-generic/errno-base.h. And it will only be done once in
libvirtd lifetime so it's not really wasting CPU cycles or something.

Jirka

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux