qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Adding an IPMI BMC device to KVM


From: Anthony Liguori
Subject: Re: [Qemu-devel] Adding an IPMI BMC device to KVM
Date: Mon, 07 May 2012 09:30:57 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1

On 05/06/2012 09:39 AM, Avi Kivity wrote:
On 05/06/2012 05:35 PM, Anthony Liguori wrote:
On 05/06/2012 08:11 AM, Avi Kivity wrote:
libvirt is essentially the BMC for a virtual guest.  I would suggest
looking at implementing an IPMI interface to libvirt and exposing it
to the guest through a USB RNDIS device.


That's the first option.  One unanswered question is what to do when the
guest is down?  Someone should listen for IPMI events, but we can't make
it libvirt unconditionally, since many instances of libvirt are active
at any one time.

Note the IPMI external interface needs to be migrated, like any other.

For all intents and purposes, the BMC/RSA is a separate physical machine. If you really wanted to model it, you would launch two instances of QEMU. The BMC instance would have a virtual NIC and would share a USB bus with the slave QEMU instance (probably via USBoIP). The USB bus is how the BMC exposes IPMI to the guest (via a USB rndis adapter), remote media, etc. I believe some BMC's also expose IPMI over i2c but that's pretty low bandwidth.

At any rate, you would have some sort of virtual hardware device that essentially spoke QMP to the slave instance. You could just do virtio-serial and call it a day actually.

It really boils down to what you are trying to do. If you want to just get some piece of software working that expects to do IPMI, the easiest thing to do is run IPMI in the host and use a USB rndis interface to interact with it.

I don't think there's a tremendous amount of value in QEMU making itself look like an IBM IMM or whatever HP/Dell's equivalent is. As I said, these stacks are hugely complicated and there are better ways of doing out of band management (like talk to libvirt directly).

So what's really the use case here? Would an IPMI -> libvirt bridge get you what you need? I really think that's the best path forward.

Regards,

Anthony Liguori






reply via email to

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