> -----Original Message----- > From: Stefano Stabellini [mailto:stefano.stabell...@eu.citrix.com] > Sent: Tuesday, January 20, 2015 1:15 AM > To: Xu, Quan > Cc: qemu-devel@nongnu.org; xen-de...@lists.xen.org; > stefano.stabell...@eu.citrix.com > Subject: Re: [v3 2/5] Qemu-Xen-vTPM: Xen frontend driver infrastructure > > On Tue, 30 Dec 2014, Quan Xu wrote: > > This patch adds infrastructure for xen front drivers living in qemu, > > so drivers don't need to implement common stuff on their own. It's > > mostly xenbus management stuff: some functions to access XenStore, > > setting up XenStore watches, callbacks on device discovery and state > > changes, and handle event channel between the virtual machines. > > > > Call xen_fe_register() function to register XenDevOps, and make sure, > > XenDevOps's flags is DEVOPS_FLAG_FE, which is flag bit to point out > > the XenDevOps is Xen frontend. > > > > --Changes in v3: > > -New xen_frontend.c file > > -Move xenbus_switch_state() to xen_frontend.c -Move xen_stubdom_be() > > to xenstore_fe_read_be_str() -Move *_stubdom_*() to *_fe_*() > > > > Signed-off-by: Quan Xu <quan...@intel.com> > > --- > > hw/xen/Makefile.objs | 2 +- > > hw/xen/xen_backend.c | 11 +- > > hw/xen/xen_frontend.c | 323 > +++++++++++++++++++++++++++++++++++++++++++ > > include/hw/xen/xen_backend.h | 14 ++ > > 4 files changed, 348 insertions(+), 2 deletions(-) create mode > > 100644 hw/xen/xen_frontend.c > > > > diff --git a/hw/xen/Makefile.objs b/hw/xen/Makefile.objs index > > a0ca0aa..b0bb065 100644 > > --- a/hw/xen/Makefile.objs > > +++ b/hw/xen/Makefile.objs > > @@ -1,5 +1,5 @@ > > # xen backend driver support > > -common-obj-$(CONFIG_XEN_BACKEND) += xen_backend.o xen_devconfig.o > > +common-obj-$(CONFIG_XEN_BACKEND) += xen_backend.o xen_devconfig.o > > +xen_frontend.o > > > > obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen-host-pci-device.o > > obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pt.o xen_pt_config_init.o > > xen_pt_msi.o diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c > > index b2cb22b..ad6e324 100644 > > --- a/hw/xen/xen_backend.c > > +++ b/hw/xen/xen_backend.c > > @@ -275,7 +275,7 @@ static struct XenDevice *xen_be_get_xendev(const > > char *type, int dom, int dev, > > /* > > * release xen backend device. > > */ > > -static struct XenDevice *xen_be_del_xendev(int dom, int dev) > > +struct XenDevice *xen_be_del_xendev(int dom, int dev) > > { > > struct XenDevice *xendev, *xnext; > > > > @@ -681,6 +681,10 @@ static void xenstore_update(void *unused) > > if (sscanf(vec[XS_WATCH_TOKEN], "fe:%" PRIxPTR, &ptr) == 1) { > > xenstore_update_fe(vec[XS_WATCH_PATH], (void*)ptr); > > } > > + if (sscanf(vec[XS_WATCH_TOKEN], "stub:%" PRIxPTR ":%d:%" PRIxPTR, > > + &type, &dom, &ops) == 3) { > > + xenstore_fe_update(vec[XS_WATCH_PATH], (void *)type, dom, > (void *)ops); > > + } > > Why "stub:"? Where is it coming from? > > I think that the xenstore_update function should be moved to a new file: > we don't want xen_backend.c to be handling any frontend updates. > Maybe you could create a new file, hw/xen/xen_pvdev.c? >
Stefano, I'd like to create hw/xen/xen_pvdev.c , include/hw/xen/ xen_pvdev.h and include/hw/xen/xen_frontend.h include/hw/xen/ xen_pvdev.h is for struct XenDevOps{} and struct XenDevice {} definition and some other macro. include/hw/xen/xen_frontend.h is for xen frontend interface, such as xen_fe_register() .etc hw/xen/xen_pvdev.c is for some general parts of xen_backend/xen_frontend. It includes xenstore_update function xendevs management, such as xen_qtail_insert_xendev(..), xenstore_update(...) .etc. do you agree with it? Quan