[PATCH 00/16] Staging: hv: Consolidate driver and device abstractions

STALE5659d

Revision v1 of 2 in this series.

5 messages, 2 authors, 2011-03-07 · open the first message on its own page

[PATCH 00/16] Staging: hv: Consolidate driver and device abstractions

From: "K. Y. Srinivasan" <kys@microsoft.com>
Date: 2011-03-07 20:52:21

Hyper-V has maintained both its class independent driver and 
device state in two independent data structures:
Driver state: struct driver_context (vmbus.h) and struct hv_driver
(vmbus_api.h)
Device state: struct vm_device (vmbus.h) and struct hv_device (vmbus_api.h)

While sruct driver_context and struct vm_device embed generic 
Linux abstractions of struct device_driver and struct device respectively; 
the lower level hyperv abstraction: struct hv_driver and struct hv_device
have maintained state needed to communicate with the host. This partitioning
made sense at a point in time when it was not clear how much of 
the hypervisor interaction would be open sourced. Given where we are
today, there is no reason to keep this layering. This patchset 
consolidates all the driver state into a single structure: 
struct hv_driver while all the device state is consolidated into
a single structure: struct hv_device. This consolidation simplifies
the code while simultaneously getting rid of redundant state -
for instance in the current code, both struct driver_context and
struct hv_driver both have state to represent the class as well as
instance id. We do this consolidation by moving state from higher
level structures (struct driver_context and struct vm_device) to
lower level structures (struct hv_driver and hv_device) respectively.

While it has not been a goal of this effort to cleanup structure and 
variable names, this consolidation effort has resulted in some cleanup
with regards to structure and variable names: a) Some of the badly
named structures have been eliminated (struct driver_context etc.) 
while hopefully all newly introduced names are acceptable.  

Patches 1 through 11 deal with consolidating the device driver
state while patches 12 through 16  deal with consolidating
device state.


Regards,

K. Y

Re: [PATCH 00/16] Staging: hv: Consolidate driver and device abstractions

From: Greg KH <hidden>
Date: 2011-03-07 22:24:42

On Mon, Mar 07, 2011 at 01:01:35PM -0800, K. Y. Srinivasan wrote:
Hyper-V has maintained both its class independent driver and 
device state in two independent data structures:
Driver state: struct driver_context (vmbus.h) and struct hv_driver
(vmbus_api.h)
Device state: struct vm_device (vmbus.h) and struct hv_device (vmbus_api.h)

While sruct driver_context and struct vm_device embed generic 
Linux abstractions of struct device_driver and struct device respectively; 
the lower level hyperv abstraction: struct hv_driver and struct hv_device
have maintained state needed to communicate with the host. This partitioning
made sense at a point in time when it was not clear how much of 
the hypervisor interaction would be open sourced. Given where we are
today, there is no reason to keep this layering. This patchset 
consolidates all the driver state into a single structure: 
struct hv_driver while all the device state is consolidated into
a single structure: struct hv_device. This consolidation simplifies
the code while simultaneously getting rid of redundant state -
for instance in the current code, both struct driver_context and
struct hv_driver both have state to represent the class as well as
instance id. We do this consolidation by moving state from higher
level structures (struct driver_context and struct vm_device) to
lower level structures (struct hv_driver and hv_device) respectively.

While it has not been a goal of this effort to cleanup structure and 
variable names, this consolidation effort has resulted in some cleanup
with regards to structure and variable names: a) Some of the badly
named structures have been eliminated (struct driver_context etc.) 
while hopefully all newly introduced names are acceptable.  

Patches 1 through 11 deal with consolidating the device driver
state while patches 12 through 16  deal with consolidating
device state.
Very nice job, now that's the way to break up and send a patch series.

I've queued them all up now.

I'm guessing that you will have follow-on patches now to complete the
migration to the correct driver core use (i.e. proper driver and device
usage?)  Or do you want me to look into doing this?

thanks,

greg k-h

RE: [PATCH 00/16] Staging: hv: Consolidate driver and device abstractions

From: KY Srinivasan <kys@microsoft.com>
Date: 2011-03-07 22:45:18

-----Original Message-----
From: Greg KH [mailto:greg@kroah.com]
Sent: Monday, March 07, 2011 5:24 PM
To: KY Srinivasan
Cc: gregkh@suse.de; linux-kernel@vger.kernel.org;
devel@linuxdriverproject.org; virtualization@lists.osdl.org
Subject: Re: [PATCH 00/16] Staging: hv: Consolidate driver and device
abstractions

On Mon, Mar 07, 2011 at 01:01:35PM -0800, K. Y. Srinivasan wrote:
quoted
Hyper-V has maintained both its class independent driver and
device state in two independent data structures:
Driver state: struct driver_context (vmbus.h) and struct hv_driver
(vmbus_api.h)
Device state: struct vm_device (vmbus.h) and struct hv_device (vmbus_api.h)

While sruct driver_context and struct vm_device embed generic
Linux abstractions of struct device_driver and struct device respectively;
the lower level hyperv abstraction: struct hv_driver and struct hv_device
have maintained state needed to communicate with the host. This partitioning
made sense at a point in time when it was not clear how much of
the hypervisor interaction would be open sourced. Given where we are
today, there is no reason to keep this layering. This patchset
consolidates all the driver state into a single structure:
struct hv_driver while all the device state is consolidated into
a single structure: struct hv_device. This consolidation simplifies
the code while simultaneously getting rid of redundant state -
for instance in the current code, both struct driver_context and
struct hv_driver both have state to represent the class as well as
instance id. We do this consolidation by moving state from higher
level structures (struct driver_context and struct vm_device) to
lower level structures (struct hv_driver and hv_device) respectively.

While it has not been a goal of this effort to cleanup structure and
variable names, this consolidation effort has resulted in some cleanup
with regards to structure and variable names: a) Some of the badly
named structures have been eliminated (struct driver_context etc.)
while hopefully all newly introduced names are acceptable.

Patches 1 through 11 deal with consolidating the device driver
state while patches 12 through 16  deal with consolidating
device state.
Very nice job, now that's the way to break up and send a patch series.

I've queued them all up now.

Thanks Greg; coming from you it means a lot to me.
I'm guessing that you will have follow-on patches now to complete the
migration to the correct driver core use (i.e. proper driver and device
usage?)  Or do you want me to look into doing this?
My immediate goal is to get the vmbus driver to exit staging. To that
end I am working on a patch-set to cleanup vmbus_drv.c. I should have this
patch-set fairly soon.  Once that is
done, I think we would have addressed all the structural/architectural issues
of the vmbus driver that is preventing us from exiting staging. 
We are planning to address the issues with other drivers after we are done
with the vmbus driver. As always, your help is greatly appreciated.

Regards,

K. Y   

Re: [PATCH 00/16] Staging: hv: Consolidate driver and device abstractions

From: Greg KH <hidden>
Date: 2011-03-07 23:01:20

On Mon, Mar 07, 2011 at 10:45:15PM +0000, KY Srinivasan wrote:
quoted
I'm guessing that you will have follow-on patches now to complete the
migration to the correct driver core use (i.e. proper driver and device
usage?)  Or do you want me to look into doing this?
My immediate goal is to get the vmbus driver to exit staging. To that
end I am working on a patch-set to cleanup vmbus_drv.c. I should have this
patch-set fairly soon.  Once that is
done, I think we would have addressed all the structural/architectural issues
of the vmbus driver that is preventing us from exiting staging. 
Well, perhaps, let's not get ahead of ourselves here :)
We are planning to address the issues with other drivers after we are done
with the vmbus driver. As always, your help is greatly appreciated.
The issue I am referring to above still has to do with the vmbus core.

The goal is to have the vmbus work like all other busses in the kernel.
You register a hv_driver with some probe and disconnect callbacks, and
the vmbus calls into the drivers when it needs to.

You are almost there, using the struct device pointers directly, but a
few more steps remain.

I'll look into the details after your remaining cleanups, I don't want
to get in the way of them.

thanks,

greg k-h

RE: [PATCH 00/16] Staging: hv: Consolidate driver and device abstractions

From: KY Srinivasan <kys@microsoft.com>
Date: 2011-03-07 23:17:20

-----Original Message-----
From: Greg KH [mailto:greg@kroah.com]
Sent: Monday, March 07, 2011 6:00 PM
To: KY Srinivasan
Cc: gregkh@suse.de; linux-kernel@vger.kernel.org;
devel@linuxdriverproject.org; virtualization@lists.osdl.org
Subject: Re: [PATCH 00/16] Staging: hv: Consolidate driver and device
abstractions

On Mon, Mar 07, 2011 at 10:45:15PM +0000, KY Srinivasan wrote:
quoted
quoted
I'm guessing that you will have follow-on patches now to complete the
migration to the correct driver core use (i.e. proper driver and device
usage?)  Or do you want me to look into doing this?
My immediate goal is to get the vmbus driver to exit staging. To that
end I am working on a patch-set to cleanup vmbus_drv.c. I should have this
patch-set fairly soon.  Once that is
done, I think we would have addressed all the structural/architectural issues
of the vmbus driver that is preventing us from exiting staging.
Well, perhaps, let's not get ahead of ourselves here :)
Certainly. I was being presumptuous when I said  "we would have
addressed all the structural/architectural issues ..".  What I meant 
to say was that I would have addressed  the problems that I know about.
After I am done with the current cleanup, I will work on the remaining 
issues.
quoted
We are planning to address the issues with other drivers after we are done
with the vmbus driver. As always, your help is greatly appreciated.
The issue I am referring to above still has to do with the vmbus core.

The goal is to have the vmbus work like all other busses in the kernel.
You register a hv_driver with some probe and disconnect callbacks, and
the vmbus calls into the drivers when it needs to.

You are almost there, using the struct device pointers directly, but a
few more steps remain.

I'll look into the details after your remaining cleanups, I don't want
to get in the way of them.
Thank you. You should have my patches fairly soon. Hopefully, I would 
have addressed the issues you have raised.  

Regards,

K. Y
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help