[libvirt] [PATCH][PowerPC] Implement sysinfo for libvirt on PowerPC
Prerna Saxena
prerna at linux.vnet.ibm.com
Fri Feb 10 06:28:55 UTC 2012
Hi Eric,
Thanks for taking a look.
On 02/10/2012 04:33 AM, Eric Blake wrote:
> On 02/09/2012 01:47 AM, Prerna Saxena wrote:
>> From: Prerna Saxena <prerna at linux.vnet.ibm.com>
>> Date: Tue, 7 Feb 2012 16:55:26 +0530
>> Subject: [PATCH] Implement sysinfo on PowerPC.
>>
>> Libvirt on x86 parses 'dmidecode' to gather characteristics of host
>> system, which are then reflected to libvirt users by virSysinfoRead(),
>> invoked by 'virsh sysinfo'.
>> This patch implements it on PowerPC by reading /proc/cpuinfo.
>>
>> The presently available fields in 'sysinfo' are strongly tied to
>> dmidecode output fields. This patch attempts to retrofit the
>> information available in PowerPC to appropriate sysinfo fields. I will
>> be happy to change the organization of this information to if there
>> are expected outputs for individual fields. (I couldnt find any
>> documentation which explained what each sysinfo field was expected
>> to convey.)
>
> At this point, I think it might be worth waiting until post-0.9.10, and
> rebasing this on the latest. In particular,
>
I'll rebase the patch once the merge window is open again :)
>> +
>> +#if defined(__powerpc__)
>> +static char*
>> +virSysinfoParseSystem(char *base, virSysinfoDefPtr ret)
>
> We just recently changed the signature of this function in the x86 case,
> so the two implementations should probably have a similar signature.
>
Sure, I'll modify this.
>> +
>> + ret->system_manufacturer = NULL;
>> + ret->system_product = NULL;
>
> Setting these to NULL is redundant, since ret was just freshly allocated.
>
Thanks for pointing this out, will remove.
>> + ret->system_uuid = NULL;
>
> Is there any alternative way to obtain the host UUID that we could fill
> in here?
I checked that 'UUID' is a part of SMBIOS specification, and therefore
not available on PowerPC system.
We do specify a system serial -- maybe that would suffice ?
>
>> +/* virSysinfoRead for PowerPC */
>> +virSysinfoDefPtr
>> +virSysinfoRead(void) {
>> + virSysinfoDefPtr ret = NULL;
>> + char *outbuf = NULL;
>> +
>> + if (VIR_ALLOC(ret) < 0)
>> + goto no_memory;
>> +
>> + /* mark irrelevant fields as 'NULL' */
>> + ret->bios_vendor = NULL;
>> + ret->bios_version = NULL;
>> + ret->bios_date = NULL;
>> + ret->bios_release = NULL;
>
> Again, redundant, since VIR_ALLOC() already took care of that.
>
Will remove this.
>> +
>> + if(virFileReadAll(CPUINFO, 2048, &outbuf) < 0) {
>> + virSmbiosReportError(VIR_ERR_INTERNAL_ERROR,
>> + _("Failed to open %s"),CPUINFO);
>
> Nit: space after ','.
>
I'll clean this up.
> Overall, the idea looks nice.
>
> I'm also wondering how much of that implementation of parsing
> /proc/cpuinfo can be reused on x86 in the cases where dmidecode is not
> accessible (such as when running qemu:///session as non-root)? Filling
> out what we can seems like a good idea.
It would be nice to do this. However, the ppc-specific parsing cannot be
reused since format of /proc/cpuinfo is very much tied to architecture.
We'll separately need to write a parser that understands the format of
/proc/cpuinfo for x86.
Thanks,
--
Prerna Saxena
Linux Technology Centre,
IBM Systems and Technology Lab,
Bangalore, India
More information about the libvir-list
mailing list