Subject: Re: [PATCH] add POWER Virtual Management Channel driver

From: Steven Royer <[email-masked]>
Date: Thu, 18 Feb 2016 10:45:24 -0600

On 2016-02-17 23:30, Stewart Smith wrote:
> Steven Royer <[email-masked]> 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 <[email-masked]>
>>>> >>
>>>> >>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