xen: add pvUSB backend
Add a backend for para-virtualized USB devices for xen domains. The backend is using host-libusb to forward USB requests from a domain via libusb to the real device(s) passed through. Signed-off-by: Juergen Gross <jgross@suse.com> Acked-by: Anthony PERARD <anthony.perard@citrix.com> Message-id: 1463062421-613-4-git-send-email-jgross@suse.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
637c53ffcb
commit
816ac92ef7
|
@ -38,3 +38,7 @@ common-obj-$(CONFIG_USB_REDIR) += redirect.o quirks.o
|
||||||
|
|
||||||
# usb pass-through
|
# usb pass-through
|
||||||
common-obj-y += $(patsubst %,host-%.o,$(HOST_USB))
|
common-obj-y += $(patsubst %,host-%.o,$(HOST_USB))
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_USB_LIBUSB),y)
|
||||||
|
common-obj-$(CONFIG_XEN_BACKEND) += xen-usb.o
|
||||||
|
endif
|
||||||
|
|
1080
hw/usb/xen-usb.c
Normal file
1080
hw/usb/xen-usb.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -80,6 +80,9 @@ static void xen_init_pv(MachineState *machine)
|
||||||
xen_be_register("vfb", &xen_framebuffer_ops);
|
xen_be_register("vfb", &xen_framebuffer_ops);
|
||||||
xen_be_register("qdisk", &xen_blkdev_ops);
|
xen_be_register("qdisk", &xen_blkdev_ops);
|
||||||
xen_be_register("qnic", &xen_netdev_ops);
|
xen_be_register("qnic", &xen_netdev_ops);
|
||||||
|
#ifdef CONFIG_USB_LIBUSB
|
||||||
|
xen_be_register("qusb", &xen_usb_ops);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* configure framebuffer */
|
/* configure framebuffer */
|
||||||
if (xenfb_enabled) {
|
if (xenfb_enabled) {
|
||||||
|
|
|
@ -101,6 +101,9 @@ extern struct XenDevOps xen_kbdmouse_ops; /* xen_framebuffer.c */
|
||||||
extern struct XenDevOps xen_framebuffer_ops; /* xen_framebuffer.c */
|
extern struct XenDevOps xen_framebuffer_ops; /* xen_framebuffer.c */
|
||||||
extern struct XenDevOps xen_blkdev_ops; /* xen_disk.c */
|
extern struct XenDevOps xen_blkdev_ops; /* xen_disk.c */
|
||||||
extern struct XenDevOps xen_netdev_ops; /* xen_nic.c */
|
extern struct XenDevOps xen_netdev_ops; /* xen_nic.c */
|
||||||
|
#ifdef CONFIG_USB_LIBUSB
|
||||||
|
extern struct XenDevOps xen_usb_ops; /* xen-usb.c */
|
||||||
|
#endif
|
||||||
|
|
||||||
void xen_init_display(int domid);
|
void xen_init_display(int domid);
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,8 @@ typedef xc_gnttab xengnttab_handle;
|
||||||
#define xengnttab_unmap(h, a, n) xc_gnttab_munmap(h, a, n)
|
#define xengnttab_unmap(h, a, n) xc_gnttab_munmap(h, a, n)
|
||||||
#define xengnttab_map_grant_refs(h, c, d, r, p) \
|
#define xengnttab_map_grant_refs(h, c, d, r, p) \
|
||||||
xc_gnttab_map_grant_refs(h, c, d, r, p)
|
xc_gnttab_map_grant_refs(h, c, d, r, p)
|
||||||
|
#define xengnttab_map_domain_grant_refs(h, c, d, r, p) \
|
||||||
|
xc_gnttab_map_domain_grant_refs(h, c, d, r, p)
|
||||||
|
|
||||||
#define xenforeignmemory_open(l, f) xen_xc
|
#define xenforeignmemory_open(l, f) xen_xc
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue