Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df660251 authored by Ian Campbell's avatar Ian Campbell Committed by Konrad Rzeszutek Wilk
Browse files

xen: add backend driver support



Impact: backend device support

Add the basic machinery to support backend drivers.

Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
[corresponds to 79727b851bac in git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git

]
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent 2de06cc1
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -29,6 +29,14 @@ config XEN_DEV_EVTCHN
	  firing.
	  If in doubt, say yes.

config XEN_BACKEND
	tristate "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
+3 −0
Original line number Diff line number Diff line
@@ -6,4 +6,7 @@ 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
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ static DECLARE_WAIT_QUEUE_HEAD(xb_waitq);
static irqreturn_t wake_waiting(int irq, void *unused)
{
	if (unlikely(xenstored_ready == 0)) {
		printk(KERN_CRIT "xenbus_probe wake_waiting\n");
		xenstored_ready = 1;
		schedule_work(&probe_work);
	}
+2 −11
Original line number Diff line number Diff line
@@ -95,17 +95,6 @@ int xenbus_match(struct device *_dev, struct device_driver *_drv)
EXPORT_SYMBOL_GPL(xenbus_match);


int xenbus_uevent(struct device *_dev, struct kobj_uevent_env *env)
{
	struct xenbus_device *dev = to_xenbus_device(_dev);

	if (add_uevent_var(env, "MODALIAS=xen:%s", dev->devicetype))
		return -ENOMEM;

	return 0;
}
EXPORT_SYMBOL_GPL(xenbus_uevent);

static void free_otherend_details(struct xenbus_device *dev)
{
	kfree(dev->otherend);
@@ -690,6 +679,8 @@ void xenbus_probe(struct work_struct *unused)
{
	xenstored_ready = 1;

	printk(KERN_CRIT "xenbus_probe wake_waiting\n");

	/* Notify others that xenstore is up */
	blocking_notifier_call_chain(&xenstore_chain, 0, NULL);
}
+0 −1
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ extern int xenbus_probe_devices(struct xen_bus_type *bus);

extern void xenbus_dev_changed(const char *node, struct xen_bus_type *bus);

extern int xenbus_uevent(struct device *_dev, struct kobj_uevent_env *env);
extern void xenbus_dev_shutdown(struct device *_dev);

extern int xenbus_dev_suspend(struct device *dev, pm_message_t state);
Loading