From: harry <harry@hebutterworth.freeserve.co.uk>
To: xen-devel@lists.xensource.com
Subject: [PATCH][17/17] USB virt 2.6 split driver---USB tools
Date: Mon, 21 Nov 2005 13:19:26 +0000 [thread overview]
Message-ID: <1132579166.31295.128.camel@localhost.localdomain> (raw)
[-- Attachment #1: Type: text/plain, Size: 124 bytes --]
This patch implements basic tools support for the USB split driver.
Signed-off-by: Harry Butterworth <butterwo@uk.ibm.com>
[-- Attachment #2: p17-usb-tools.patch --]
[-- Type: text/x-patch, Size: 5067 bytes --]
diff -r 06d98ed0b6e5 -r 6d808778065c tools/examples/Makefile
--- a/tools/examples/Makefile Mon Nov 21 11:10:40 2005
+++ b/tools/examples/Makefile Mon Nov 21 11:11:06 2005
@@ -26,6 +26,7 @@
XEN_SCRIPTS += network-nat vif-nat
XEN_SCRIPTS += block
XEN_SCRIPTS += block-enbd block-nbd
+XEN_SCRIPTS += usb
XEN_SCRIPT_DATA = xen-script-common.sh
XEN_SCRIPT_DATA += xen-hotplug-common.sh xen-network-common.sh vif-common.sh
XEN_SCRIPT_DATA += block-common.sh
diff -r 06d98ed0b6e5 -r 6d808778065c tools/examples/xen-backend.agent
--- a/tools/examples/xen-backend.agent Mon Nov 21 11:10:40 2005
+++ b/tools/examples/xen-backend.agent Mon Nov 21 11:11:06 2005
@@ -3,6 +3,9 @@
PATH=/etc/xen/scripts:$PATH
case "$XENBUS_TYPE" in
+ usb)
+ /etc/xen/scripts/usb "$ACTION"
+ ;;
vbd)
/etc/xen/scripts/block "$ACTION"
;;
diff -r 06d98ed0b6e5 -r 6d808778065c tools/python/xen/xend/server/usbif.py
--- a/tools/python/xen/xend/server/usbif.py Mon Nov 21 11:10:40 2005
+++ b/tools/python/xen/xend/server/usbif.py Mon Nov 21 11:11:06 2005
@@ -22,8 +22,9 @@
"""Support for virtual USB hubs.
"""
+from xen.xend import sxp
+
from xen.xend.server.DevController import DevController
-
class UsbifController(DevController):
"""USB device interface controller. Handles all USB devices
@@ -35,8 +36,16 @@
"""
DevController.__init__(self, vm)
-
- def getDeviceDetails(self, _):
+ def getDeviceDetails(self, config):
"""@see DevController.getDeviceDetails"""
- return (self.allocateDeviceID(), {}, {})
+ path = sxp.child_value(config, 'path')
+
+ devid = self.allocateDeviceID()
+
+ back = { 'path' : path,
+ 'handle' : "%i" % devid }
+
+ front = { 'handle' : "%i" % devid }
+
+ return (devid, back, front)
diff -r 06d98ed0b6e5 -r 6d808778065c tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py Mon Nov 21 11:10:40 2005
+++ b/tools/python/xen/xm/create.py Mon Nov 21 11:11:06 2005
@@ -220,6 +220,10 @@
fn=set_bool, default=0,
use="Make the domain a network interface backend.")
+gopts.var('usbif', val='no|yes',
+ fn=set_bool, default=0,
+ use="Make the domain a USB device backend.")
+
gopts.var('tpmif', val='frontend=DOM',
fn=append_value, default=[],
use="""Make the domain a TPM interface backend. If frontend is given,
@@ -246,10 +250,13 @@
For example '-ioports 02f8-02ff'.
The option may be repeated to add more than one i/o range.""")
-gopts.var('usb', val='PATH',
+gopts.var('usb', val="path=PATH,backend=DOM",
fn=append_value, default=[],
- use="""Add a physical USB port to a domain, as specified by the path
- to that port. This option may be repeated to add more than one port.""")
+ use="""Map a backend USB port (specified by the backend PATH in the
+ backend domain DOM) to a single-port virtual host controller device
+ in the domain.
+ If backend is not specified the default backend driver domain is
+ used. This option may be repeated to add more than one port.""")
gopts.var('ipaddr', val="IPADDR",
fn=append_value, default=[],
@@ -449,8 +456,13 @@
config_devs.append(['device', config_ioports])
def configure_usb(config_devs, vals):
- for path in vals.usb:
- config_usb = ['usb', ['path', path]]
+ for d in vals.usb:
+ path = d.get('path')
+ backend = d.get('backend')
+ config_usb = ['usb']
+ config_usb.append(['path', path])
+ if backend:
+ config_usb.append(['backend', backend])
config_devs.append(['device', config_usb])
def configure_vtpm(config_devs, vals):
@@ -590,6 +602,8 @@
config.append(['backend', ['blkif']])
if vals.netif:
config.append(['backend', ['netif']])
+ if vals.usbif:
+ config.append(['backend', ['usbif']])
if vals.tpmif:
config.append(['backend', ['tpmif']])
@@ -669,6 +683,22 @@
vifs.append(d)
vals.vif = vifs
+def preprocess_usb(vals):
+ if not vals.usb: return
+ usb = []
+ for port in vals.usb:
+ d = {}
+ a = port.split(',')
+ for b in a:
+ (k, v) = b.strip().split('=', 1)
+ k = k.strip()
+ v = v.strip()
+ if k not in ['path', 'backend']:
+ err('Invalid usb port specifier: ' + port)
+ d[k] = v
+ usb.append(d)
+ vals.usb = usb
+
def preprocess_vtpm(vals):
if not vals.vtpm: return
vtpms = []
@@ -789,6 +819,7 @@
preprocess_vifs(vals)
preprocess_ip(vals)
preprocess_nfs(vals)
+ preprocess_usb(vals)
preprocess_vnc(vals)
preprocess_vtpm(vals)
preprocess_tpmif(vals)
diff -r 06d98ed0b6e5 -r 6d808778065c tools/examples/usb
--- /dev/null Mon Nov 21 11:10:40 2005
+++ b/tools/examples/usb Mon Nov 21 11:11:06 2005
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+dir=$(dirname "$0")
+. "$dir/xen-hotplug-common.sh"
+
+success
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
reply other threads:[~2005-11-21 13:19 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=1132579166.31295.128.camel@localhost.localdomain \
--to=harry@hebutterworth.freeserve.co.uk \
--cc=xen-devel@lists.xensource.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.