From: Ian Campbell <ian.campbell@citrix.com>
To: George Dunlap <george.dunlap@citrix.com>,
Chunyan Liu <cyliu@suse.com>,
xen-devel@lists.xen.org
Cc: jgross@suse.com, wei.liu2@citrix.com,
george.dunlap@eu.citrix.com, Ian.Jackson@eu.citrix.com,
jfehlig@suse.com, Simon Cao <caobosimon@gmail.com>
Subject: Re: [PATCH V7 3/7] libxl: add pvusb API
Date: Fri, 2 Oct 2015 14:31:29 +0100 [thread overview]
Message-ID: <1443792689.11707.117.camel@citrix.com> (raw)
In-Reply-To: <560C2204.9030707@citrix.com>
On Wed, 2015-09-30 at 18:55 +0100, George Dunlap wrote:
> > +int libxl_devid_to_device_usbctrl(libxl_ctx *ctx,
> > + uint32_t domid,
> > + int devid,
> > + libxl_device_usbctrl *usbctrl)
> > +{
> > + GC_INIT(ctx);
> > + libxl_device_usbctrl *usbctrls;
> > + int nb = 0;
> > + int i, rc = -1;
> > +
> > + usbctrls = libxl_device_usbctrl_list(ctx, domid, &nb);
> > + if (!nb) goto out;
> > +
> > + for (i = 0; i < nb; i++) {
> > + if (devid == usbctrls[i].devid) {
> > + *usbctrl = usbctrls[i];
>
> libxl maintainers: Is this kind of copying OK?
>
> The analog functions for vtpm and nic both take very different
> approaches; both call libxl_device_[type]_init() and then fill in
> individual elements (albeit in different ways).
That depends on the memory lifecycle situation of usbctrls[i] and *usbctrl
vis-a-vis the gc and when they are frred.
Cut out of the context here is a
+ libxl_device_usbctrl_list_free(usbctrls, nb);
which is going to free any of the pointers in usbctrls[i] which have been
copied to usbctrl. So in this case no it is not ok.
You can't avoid the libxl_device_usbctrl_list_free, since you don't want to
leak all the other elements on the list, so copying seems to be the way to
go.
The IDL should have generated a copy function which can be used (by the
vtpm one too, but it predates the IDL making such things I think).
>
> > +/*
> > + * USB add
> > + */
> > +static int do_usb_add(libxl__gc *gc, uint32_t domid,
> > + libxl_device_usb *usbdev,
> > + libxl__ao_device *aodev)
> > +{
> > + libxl_ctx *ctx = CTX;
> > + libxl_usbctrlinfo usbctrlinfo;
> > + libxl_device_usbctrl usbctrl;
> > + int rc;
> > +
> > + libxl_usbctrlinfo_init(&usbctrlinfo);
> > + usbctrl.devid = usbdev->ctrl;
> > + rc = libxl_device_usbctrl_getinfo(ctx, domid, &usbctrl,
> > &usbctrlinfo);
> > + if (rc)
> > + goto out;
> > +
> > + switch (usbctrlinfo.type) {
> > + case LIBXL_USBCTRL_TYPE_DEVICEMODEL:
> > + LOG(ERROR, "Not supported");
> > + break;
> > + case LIBXL_USBCTRL_TYPE_PV:
> > + rc = libxl__device_usb_add_xenstore(gc, domid, usbdev,
> > + aodev->update_json);
> > + if (rc) goto out;
> > +
> > + rc = usbback_dev_assign(gc, usbdev);
>
> This assumes that the usb controller is dom0; but the interface
> explicitly allows pvusb driver domains.
>
> I think it would be enough here to do this check if the usbctrl device
> is dom0. We should then assume that a pvusb driver domain will be
> configured with all usb devices assigned to usbback already.
>
> I assume that there's a feedback mechanisms for backends for situations
> where the requested device can't be made, right? For example, if you
> have a network driver domain and request a non-existent bridge? If so,
> I think we can let the same mechanism worth for pvusb backends to say "I
> don't have that device available".
I think the b/e writes an error node in xenstore, which we already pickup
iirc.
next prev parent reply other threads:[~2015-10-02 13:31 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-25 2:11 [PATCH V7 0/7] xen pvusb toolstack work Chunyan Liu
2015-09-25 2:11 ` [PATCH V7 1/7] libxl: export some functions for pvusb use Chunyan Liu
2015-09-25 2:11 ` [PATCH V7 2/7] libxl_read_file_contents: add new entry to read sysfs file Chunyan Liu
2015-09-30 11:22 ` George Dunlap
2015-10-02 13:25 ` Ian Campbell
2015-09-25 2:11 ` [PATCH V7 3/7] libxl: add pvusb API Chunyan Liu
2015-09-30 17:55 ` George Dunlap
2015-10-02 13:31 ` Ian Campbell [this message]
2015-10-09 8:12 ` Chun Yan Liu
2015-10-12 7:19 ` Chun Yan Liu
2015-10-12 13:46 ` George Dunlap
2015-10-13 1:46 ` Chun Yan Liu
2015-10-13 13:15 ` George Dunlap
2015-10-13 13:19 ` George Dunlap
2015-10-13 13:30 ` Ian Campbell
2015-10-14 2:29 ` Chun Yan Liu
2015-10-08 14:41 ` Ian Jackson
2015-10-08 14:54 ` Ian Campbell
2015-10-08 15:16 ` Ian Jackson
2015-10-12 7:00 ` Chun Yan Liu
2015-09-25 2:11 ` [PATCH V7 4/7] libxl: add libxl_device_usb_assignable_list API Chunyan Liu
2015-10-01 11:32 ` George Dunlap
2015-09-25 2:11 ` [PATCH V7 5/7] xl: add pvusb commands Chunyan Liu
2015-10-01 17:02 ` George Dunlap
2015-10-02 13:35 ` Ian Campbell
2015-10-02 15:17 ` George Dunlap
2015-10-02 15:29 ` Ian Campbell
2015-10-09 7:15 ` Chun Yan Liu
2015-09-25 2:11 ` [PATCH V7 6/7] xl: add usb-assignable-list command Chunyan Liu
2015-10-06 16:55 ` George Dunlap
2015-10-07 8:40 ` Ian Campbell
2015-10-07 9:55 ` Juergen Gross
2015-10-07 10:08 ` Ian Campbell
2015-10-07 10:10 ` George Dunlap
2015-10-07 10:15 ` George Dunlap
2015-10-07 10:35 ` Christiane Groß
2015-10-07 11:09 ` Ian Campbell
2015-10-07 11:20 ` George Dunlap
2015-10-07 11:25 ` Juergen Gross
2015-10-07 11:32 ` George Dunlap
2015-10-07 11:37 ` Ian Campbell
2015-10-07 11:39 ` Juergen Gross
2015-10-07 11:43 ` Ian Campbell
2015-10-07 11:39 ` Ian Campbell
2015-10-07 11:49 ` Juergen Gross
2015-10-07 11:55 ` Ian Campbell
2015-10-07 12:05 ` Juergen Gross
2015-10-07 12:51 ` Ian Campbell
2015-10-07 13:21 ` George Dunlap
2015-10-07 13:54 ` Juergen Gross
2015-10-07 14:05 ` Ian Campbell
2015-10-07 14:26 ` Juergen Gross
2015-10-07 14:35 ` George Dunlap
2015-10-07 14:47 ` Juergen Gross
2015-10-07 15:03 ` George Dunlap
2015-10-07 15:13 ` Juergen Gross
2015-10-07 14:10 ` George Dunlap
2015-09-25 2:11 ` [PATCH V7 7/7] domcreate: support pvusb in configuration file Chunyan Liu
2015-10-07 15:06 ` George Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1443792689.11707.117.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=caobosimon@gmail.com \
--cc=cyliu@suse.com \
--cc=george.dunlap@citrix.com \
--cc=george.dunlap@eu.citrix.com \
--cc=jfehlig@suse.com \
--cc=jgross@suse.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).