Jan Beulich
2012-May-11 07:23 UTC
[PATCH] libxc: implement gnttab.set_max_grants for Linux
Legacy (non-pvops) gntdev drivers may require this operation to be performed when the number of grants intended to be used simultaneously exceeds a certain driver specific default limit, and qemu''s qdisk driver is an example of needing to do so. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/tools/libxc/xc_linux_osdep.c +++ b/tools/libxc/xc_linux_osdep.c @@ -541,6 +541,27 @@ static int linux_gnttab_close(xc_gnttab return close(fd); } +static int linux_gnttab_set_max_grants(xc_gnttab *xch, xc_osdep_handle h, + uint32_t count) +{ + int fd = (int)h, rc; + struct ioctl_gntdev_set_max_grants max_grants = { .count = count }; + + rc = ioctl(fd, IOCTL_GNTDEV_SET_MAX_GRANTS, &max_grants); + if (rc) { + /* + * Newer (e.g. pv-ops) kernels don''t implement this IOCTL, + * so ignore the resulting specific failure. + */ + if (errno == ENOTTY) + rc = 0; + else + PERROR("linux_gnttab_set_max_grants: ioctl SET_MAX_GRANTS failed"); + } + + return rc; +} + static void *linux_gnttab_grant_map(xc_gnttab *xch, xc_osdep_handle h, uint32_t count, int flags, int prot, uint32_t *domids, uint32_t *refs, @@ -680,6 +701,7 @@ static struct xc_osdep_ops linux_gnttab_ .close = &linux_gnttab_close, .u.gnttab = { + .set_max_grants = linux_gnttab_set_max_grants, .grant_map = &linux_gnttab_grant_map, .munmap = &linux_gnttab_munmap, }, _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Ian Campbell
2012-May-11 08:02 UTC
Re: [PATCH] libxc: implement gnttab.set_max_grants for Linux
On Fri, 2012-05-11 at 08:23 +0100, Jan Beulich wrote:> + /* > + * Newer (e.g. pv-ops) kernels don''t implement this IOCTL, > + * so ignore the resulting specific failure. > + */pvops doesn''t implement this ioctl because it is already more dynamic and therefore setting a max unnecessary? (I''m pretty sure yes, but just wanted to confirm we shouldn''t be fixing anything on the pvops side).
Jan Beulich
2012-May-11 08:09 UTC
Re: [PATCH] libxc: implement gnttab.set_max_grants for Linux
>>> On 11.05.12 at 10:02, Ian Campbell <Ian.Campbell@citrix.com> wrote: > On Fri, 2012-05-11 at 08:23 +0100, Jan Beulich wrote: >> + /* >> + * Newer (e.g. pv-ops) kernels don''t implement this IOCTL, >> + * so ignore the resulting specific failure. >> + */ > > pvops doesn''t implement this ioctl because it is already more dynamic > and therefore setting a max unnecessary? > > (I''m pretty sure yes, but just wanted to confirm we shouldn''t be fixing > anything on the pvops side).Correct. The only adjustment I would consider worth doing is to accept the unnecessary ioctl without producing an error or logging any message (perhaps one could in fact return an error for insanely high input values). Jan
Possibly Parallel Threads
- Test report for xen-unstable and qemu-xen
- passthrough failure on Radeon HD 6450.
- bug in xc_gntshr_munmap?
- help please - running a guest from an iSCSI disk ? getting more diagnostics than "cannot make domain: -3" ? how to make domain0 "privileged" ?
- [PATCH V2] libxc, libxenstore: make the headers C++-friendlier