(xen) stable/xenbus for 2.6.38
Subsystems (4)
Dear Linus,
Please pull the following git tree:
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git stable/xenbus
which has patches since git commit cf7d7e5a1980d1116ee152d25dac382b112b9c17 Linus Torvalds (1):
Linux 2.6.37-rc5
The patchset makes the XenBus infrastructure more generic and enhances the XenBus API to handle Xen backends (registration, watching for events, etc). The XenBus is an "abstraction mechanism for paravirtualised drivers to communicate between domains [..] and in general is used for configuration negotiation" (http://wiki.xensource.com/xenwiki/XenBus).
This allows backend drivers, such as the networking, pci, etc to have the appropriate infrastructure calls to service guest domains.
The backends that we have in the pipeline are the pci backend and the networking. They are going through the review so they will have to wait till the next merge window.
The benefit of pulling this git tree:
- Allow Xen backends to work (these are the "other side" of the Xen frontend drivers that have in the kernel for a long time).
- Cleanup of general XenBus code.
- Modularize the XenBus frontend.
The shortlog:
Ian Campbell (3):
xen: separate out frontend xenbus
xen: add backend driver support
xen/xenbus: fixup checkpatch issues in xenbus_probe*
Jeremy Fitzhardinge (11):
xen: remove xen/evtchn.h
xenbus/frontend: register bus earlier xen/xenbus: make sure backend bus is registered earlier xen/xenbus: make frontend bus GPL
xen/xenbus: clean up error handling
xen/xenbus: cleanup debug noise in xenbus_comms.c xen/xenbus: clean up noise in xenbus_probe.c xen/xenbus: clean up noise in xenbus_probe_backend.c xen/xenbus: clean up noise in xenbus_probe_frontend.c xen/netfront: select XEN_XENBUS_FRONTEND xen/xenbus: making backend support modular is too complex
Konrad Rzeszutek Wilk (1):
xen/pci: Make xen-pcifront be dependent on XEN_XENBUS_FRONTEND
And the diffstat:
drivers/block/Kconfig | 1 + drivers/net/Kconfig | 1 + drivers/pci/Kconfig | 1 + drivers/xen/Kconfig | 11 + drivers/xen/xenbus/Makefile | 5 + drivers/xen/xenbus/xenbus_probe.c | 351 +++++----------------------- drivers/xen/xenbus/xenbus_probe.h | 31 ++-- drivers/xen/xenbus/xenbus_probe_backend.c | 276 ++++++++++++++++++++++ drivers/xen/xenbus/xenbus_probe_frontend.c | 294 +++++++++++++++++++++++ include/xen/xenbus.h | 2 +- 10 files changed, 661 insertions(+), 312 deletions(-)
And the patches all squashed in one:
drivers/block/Kconfig +1 -0
@@ -464,6 +464,7 @@ config XEN_BLKDEV_FRONTEND tristate "Xen virtual block device support" depends on XEN default y + select XEN_XENBUS_FRONTEND help This driver implements the front-end of the Xen virtual block device driver. It communicates with a back-end driver
drivers/net/Kconfig +1 -0
@@ -2960,6 +2960,7 @@ config TILE_NET config XEN_NETDEV_FRONTEND tristate "Xen network device frontend driver" depends on XEN + select XEN_XENBUS_FRONTEND default y help The network device frontend driver allows the kernel to
drivers/pci/Kconfig +1 -0
@@ -45,6 +45,7 @@ config XEN_PCIDEV_FRONTEND depends on PCI && X86 && XEN select HOTPLUG select PCI_XEN + select XEN_XENBUS_FRONTEND default y help The PCI device frontend driver allows the kernel to import arbitrary
drivers/xen/Kconfig +11 -0
@@ -29,6 +29,14 @@ config XEN_DEV_EVTCHN firing. If in doubt, say yes. +config XEN_BACKEND + bool "Backend driver support" + depends on XEN_DOM0 + default y + help + Support for backend device drivers that provide I/O services + to other virtual machines. + config XENFS tristate "Xen filesystem" default y
@@ -62,6 +70,9 @@ config XEN_SYS_HYPERVISOR virtual environment, /sys/hypervisor will still be present, but will have no xen contents. +config XEN_XENBUS_FRONTEND + tristate + config XEN_PLATFORM_PCI tristate "xen platform pci device driver" depends on XEN_PVHVM
drivers/xen/xenbus/Makefile +5 -0
@@ -5,3 +5,8 @@ xenbus-objs += xenbus_client.o xenbus-objs += xenbus_comms.o xenbus-objs += xenbus_xs.o xenbus-objs += xenbus_probe.o + +xenbus-be-objs-$(CONFIG_XEN_BACKEND) += xenbus_probe_backend.o +xenbus-objs += $(xenbus-be-objs-y) + +obj-$(CONFIG_XEN_XENBUS_FRONTEND) += xenbus_probe_frontend.o
drivers/xen/xenbus/xenbus_probe.c +55 -296
509 lines not on this page · raw message
drivers/xen/xenbus/xenbus_probe.h +16 -15
@@ -36,26 +36,15 @@#define XEN_BUS_ID_SIZE 20 -#ifdef CONFIG_XEN_BACKEND -extern void xenbus_backend_suspend (int (*fn)(struct device *,void *)); -extern void xenbus_backend_resume (int (*fn)(struct device *,void *)); -extern void xenbus_backend_probe_and_watch (void ); -extern int xenbus_backend_bus_register (void ); -extern void xenbus_backend_bus_unregister (void ); -#else -static inline void xenbus_backend_suspend (int (*fn)(struct device *,void *)) {} -static inline void xenbus_backend_resume (int (*fn)(struct device *,void *)) {} -static inline void xenbus_backend_probe_and_watch (void ) {} -static inline int xenbus_backend_bus_register (void ) {return 0 ; } -static inline void xenbus_backend_bus_unregister (void ) {} -#endif -struct xen_bus_type {char *root;unsigned int levels;int (*get_bus_id)(char bus_id[XEN_BUS_ID_SIZE ],const char *nodename); -int (*probe)(const char *type,const char *dir); +int (*probe)(struct xen_bus_type *bus,const char *type, +const char *dir); +void (*otherend_changed)(struct xenbus_watch *watch,const char **vec, +unsigned int len);struct bus_type bus; };
@@ -73,4 +62,16 @@ extern int xenbus_probe_devices(struct xen_bus_type *bus);extern void xenbus_dev_changed (const char *node,struct xen_bus_type *bus); +extern void xenbus_dev_shutdown (struct device *_dev); + +extern int xenbus_dev_suspend (struct device *dev,pm_message_t state); +extern int xenbus_dev_resume (struct device *dev); + +extern void xenbus_otherend_changed (struct xenbus_watch *watch, +const char **vec,unsigned int len, +int ignore_on_shutdown); + +extern int xenbus_read_otherend_details (struct xenbus_device *xendev, +char *id_node,char *path_node); +#endif
drivers/xen/xenbus/xenbus_probe_backend.c new file +276 -0
276 lines not on this page · raw message
drivers/xen/xenbus/xenbus_probe_frontend.c new file +294 -0
294 lines not on this page · raw message
include/xen/xenbus.h +1 -1
@@ -94,7 +94,7 @@ struct xenbus_driver {int (*remove)(struct xenbus_device *dev);int (*suspend)(struct xenbus_device *dev,pm_message_t state);int (*resume)(struct xenbus_device *dev); -int (*uevent)(struct xenbus_device *,char **,int ,char *,int ); +int (*uevent)(struct xenbus_device *,struct kobj_uevent_env *);struct device_driver driver;int (*read_otherend_details)(struct xenbus_device *dev);int (*is_ready)(struct xenbus_device *dev);