Re: [PATCH] add POWER Virtual Management Channel driver

From: Steven Royer
Date: Thu Feb 18 2016 - 11:45:41 EST


On 2016-02-17 23:30, Stewart Smith wrote:
Steven Royer <seroyer@xxxxxxxxxxxxxxxxxx> writes:
On 2016-02-17 16:31, Greg Kroah-Hartman wrote:
On Wed, Feb 17, 2016 at 03:18:26PM -0600, Steven Royer wrote:
On 2016-02-16 16:18, Greg Kroah-Hartman wrote:
>On Tue, Feb 16, 2016 at 02:43:13PM -0600, Steven Royer wrote:
>>From: Steven Royer <seroyer@xxxxxxxxxx>
>>
>>The ibmvmc driver is a device driver for the POWER Virtual Management
>>Channel virtual adapter on the PowerVM platform. It is used to
>>communicate with the hypervisor for virtualization management. It
>>provides both request/response and asynchronous message support through
>>the /dev/ibmvmc node.
>
>What is the protocol for that device node?
The protocol is not currently published. I am pushing on getting it
published, but that process will take time. If you have a PowerVM
system
with NovaLink, it would not be hard to reverse engineer it... If you
don't
have a PowerVM system, then this driver isn't interesting anyway...

Stephen - if you need some help pushing for it to be published, let me
know, there's a few internal things I could help push.
Thanks


You can't just expect us to review this code without at least having a
clue as to how it is supposed to work?
There are two layers to the protocol. The first layer is the only layer
that the driver actually cares about. The second layer is just a
payload that is between the application and the hypervisor and can
change independently from the kernel/driver (this is what is transported
over the /dev/ibmvmc node). The first layer technically is published in
the PAPR (appendix G), but it is not trivial for most people to access

https://members.openpowerfoundation.org/document/dl/469 is LoPAPR which
has been published through OpenPower Foundation and anyone can access,
although Appendix G there is on EEH. Although VMC (Virtual Management
Channel) is mentioned in that document the details aren't there... so
it's possible that this is only in some other PAPR version :/
and... looking in internal places, it is. *sigh*

With my OpenPower Foundation hat on, I'll say that it's a
work-in-progress getting all this documentation in order.

The questions of if it's a sensible hypervisor to partition interface
and if it's a sensible userspace API are open for debate :)

Would we implement this way of communicating between a KVM guest and the
host linux system? If not, then it's probably not a generally good
idea. That being said, it seems to be what already exists in PowerVM

There is no "host" OS on PowerVM. The ibmvmc device makes it possible to emulate that behavior by picking one of the LPARs to be privileged. So this isn't really similar to a KVM guest talking to the KVM host. It's more like this Linux OS becomes the host. ibmvmc is the pipe that enables virtualization management software (i.e., OpenStack via NovaLink) to manage PowerVM: create/destroy/modify guests, etc... The why's and how's of NovaLink are described simply here: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/Introducing%20PowerVM%20NovaLink