On Thu, Dec 02, 2010 at 10:36:59AM -0700, Eric Blake wrote:
On 12/02/2010 05:47 AM, Daniel P. Berrange wrote:
> On Wed, Dec 01, 2010 at 05:12:08PM -0700, Eric Blake wrote:
>> In testing <smbios mode='host'/>, I noticed a couple of problems.
>> First, qemu rejected the command line we gave it (invalid UUID);
>> ifixingthat showed that all other arguments were being given literal
>> "" which then made the guest smbios differ from the host. Second,
>> the qemu option -smbios type=1,family=string wasn't supported, which
>> lead to a spurious difference between host and guest.
>>
>> Meanwhile, qemu has a bug where '-smbios type=1,uuid=uuid' must parse
>> as a valid uuid, but is otherwise ignored. The current qemu.git code
>> base _only_ sets smbios uuid from the '-uuid uuid' argument. I've
>> filed a bug against the qemu folks asking whether this is intended (in
>> which case we have to modify libvirt to change the -uuid argument it
>> outputs when smbios is specified), or an oversight (hopefully the
>> latter, since it's still nice to correlate
>> /var/log/libvirt/qemu/....log with the XML uuid even when that differs
>> from the smbios uuid presented to the guest.)
>
> Hmm, I thought the UUID we were passing in was a host UUID, but
> on closer inspection the type=1 table is definitely intended to
> carry the guest UUID. As such it doesn't make sense to populate
> that with anything other than the '<uuid>' from the guest XML.
> A host UUID should live elsewhere in the SMBIOS tables, likely
> in the type2 or type3 blocks
What does that mean to our XML? Should we reject XML files where both
domain/uuid and domain/sysinfo/system/entry/uuid exist, but differ?
Both elements are optional, so it's feasible to see a guest uuid in
either location. Meanwhile, I'm waiting on resolution to
https://bugzilla.redhat.com/show_bug.cgi?id=659122 to see if qemu will
be patched to let us stick the host's uuid in block 2 (base board) or
block 3 (chassis), in which case, we'll need to expand our XML to
support that notion.
As I commented on the BZ use OEM strings type 11 smbios table to pass
anything you want into a guest.
I've also discovered that with current qemu, if both '-uuid
uuid' and
'-smbios type=1,uuid=uuid' are specified, then -uuid takes precedence;
but either one of the two in isolation serves to set smbios block 1 with
the guest's uuid.
I am surprised that libvirt still uses -uuid.
--
Gleb.