Xen в DomU (PV) не передает USB-устройство

Установлен xen-4.2.0. dom0 и domU оба работают на gentoo-sources-3.7.10.
Конструкция в конфиге

usb = 1
usbdevice = "host:046d:09a4"

работает только для HVM.
Вопрос в том, возможно ли с этим ядром проброс usb в PV домен по одному, без того чтобы выделять весь pci одной из виртуалок.

На сервере запущен еще один PV домен с Debian Wheezy. У него аналогичная проблема. На всякий случай уточню: устройства пытаюсь отдать поочередно то одной машине, то другой.

Действую по инструкции отсюда.

dom0# xm usb-list-assignable-devices
1-1.1        : ID 04b8:0007 EPSON USB2.0 Printer (Hi-speed)
1-1.2        : ID 046d:09a4 Logitech, Inc. QuickCam E 3500
2-1.2        : ID 0bda:0156 Generic USB2.0-CRW
2-1.5        : ID 8564:1000 JetFlash Mass Storage Device

При попытке передать usb в PV домен вываливает ошибку

dom0# xm usb-hc-create gentoo 2 2
dom0# xm usb-list gentoo
        Idx BE  state usb-ver  BE-path
        0   0   1     USB2.0  /local/domain/0/backend/vusb/8/0
port 1:
port 2:
dom0# xm usb-attach gentoo 0 1 1-1.2
Unexpected error: <class 'xen.util.vusb_util.UsbDeviceParseError'>

    Please report to 
    Traceback (most recent call last):
      File "/usr/sbin/xm", line 7, in <module>
        main.main(sys.argv)
      File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 3983, in main
        _, rc = _run_cmd(cmd, cmd_name, args)
      File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 4007, in _run_cmd
        return True, cmd(args)
      File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 3046, in xm_usb_attach
        if vusb_util.bus_is_assigned(bus):
      File "/usr/lib64/python2.7/site-packages/xen/util/vusb_util.py", line 275, in bus_is_assigned
        raise UsbDeviceParseError("Can't get assignment status: (%s)." % bus)
    xen.util.vusb_util.UsbDeviceParseError: vusb: Error parsing USB device info: Can't get assignment status: (1-1.2).
domU# lsusb
unable to initialize libusb: -99

При этом в гостевой системе нет директории /dev/bus/. Драйвера для usb при загрузке domU подгружаются, что следует из dmesg.

Версия и USE-флаги xen:

app-emulation/xen-4.2.0-r1 (python_single_target_python2_7 python_targets_python2_7 -custom-cflags -debug -flask -pae -python_single_target_python2_6 -python_targets_python2_6 -xsm)
xen-tools-4.2.0-r3 (hvm pygrub python_single_target_python2_7 python_targets_python2_7 qemu screen xend -api -custom-cflags -debug -doc -flask -ocaml -python_single_target_python2_6 -python_targets_python2_6 -static-libs)

Настройки ядра у dom0:

dom0# grep -R XEN .config
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=500
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
CONFIG_PCI_XEN=y
CONFIG_XEN_PCIDEV_FRONTEND is not set
# CONFIG_XEN_BLKDEV_FRONTEND is not set
CONFIG_XEN_BLKDEV_BACKEND=m
# CONFIG_XEN_NETDEV_FRONTEND is not set
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
CONFIG_HVC_XEN=y
CONFIG_HVC_XEN_FRONTEND=y
# CONFIG_XEN_WDT is not set
CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XEN_BACKEND=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_XEN_GNTDEV=y
# CONFIG_XEN_GRANT_DEV_ALLOC is not set
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_PCIDEV_BACKEND=y
CONFIG_XEN_PRIVCMD=y
CONFIG_XEN_ACPI_PROCESSOR=m
# CONFIG_XEN_MCE_LOG is not set

dom0# grep -R USB .config | grep -v "is not set"
CONFIG_USB_HID=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_DEBUG=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_MON=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_PRINTER=y
CONFIG_USB_STORAGE=y

Ядро domU:

domU# grep -R XEN .config
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=500
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
CONFIG_PCI_XEN=y
CONFIG_XEN_PCIDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_BACKEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
# CONFIG_XEN_NETDEV_BACKEND is not set
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
CONFIG_HVC_XEN=y
CONFIG_HVC_XEN_FRONTEND=y
# CONFIG_XEN_WDT is not set
CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
# CONFIG_XEN_DEV_EVTCHN is not set
CONFIG_XEN_BACKEND=y
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_XENBUS_FRONTEND=y
# CONFIG_XEN_GNTDEV is not set
CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_SWIOTLB_XEN=y
# CONFIG_XEN_PCIDEV_BACKEND is not set
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=y
# CONFIG_XEN_MCE_LOG is not set


domU# grep -R USB .config | grep -v "is not set"
CONFIG_USB_HID=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_DEBUG=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_MON=y
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
CONFIG_USB_PRINTER=y
CONFIG_USB_STORAGE=y
CONFIG_USB_SERIAL=y

Цитата: dom0# xm usb-attach

Цитата:
dom0# xm usb-attach gentoo 0 1 1-1.2
Unexpected error:

Please report to

Traceback (most recent call last):
File "/usr/sbin/xm", line 7, in
main.main(sys.argv)
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 3983, in main
_, rc = _run_cmd(cmd, cmd_name, args)
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 4007, in _run_cmd
return True, cmd(args)
File "/usr/lib64/python2.7/site-packages/xen/xm/main.py", line 3046, in xm_usb_attach
if vusb_util.bus_is_assigned(bus):
File "/usr/lib64/python2.7/site-packages/xen/util/vusb_util.py", line 275, in bus_is_assigned
raise UsbDeviceParseError("Can't get assignment status: (%s)." % bus)
xen.util.vusb_util.UsbDeviceParseError: vusb: Error parsing USB device info: Can't get assignment status: (1-1.2).

Разобрал это исключение, которое выбрасывает /usr/lib64/python2.7/site-packages/xen/util/vusb_util.py и обнаружил, что ошибка вызвана отсутствием файла /sys/bus/usb/drivers/usbback/port_ids. Таким образом мне все-таки нужен модуль ядра usbback, а в текущей версии gentoo-sources (3.7.10) он не обнаружен.
Остается вариант с расшариванием usb с помощью usbip. Хотя и его запустить не удается. По этому вопросу нужно заводить отдельную тему на форуме.

http://new-wiki.xen.org/old-w

http://new-wiki.xen.org/old-wiki/xenwiki/XenParavirtOps.html написал(а):
Цитата:
Work in the future
.....

PVSCSI drivers (scsiback backend driver for dom0 kernel and scsifront frontend driver for domU kernel). More info: http://wiki.xen.org/xenwiki/XenPVSCSI .

PVUSB drivers (usbback backend driver for dom0 kernel and usbfront frontend driver for domU kernel). More info: http://wiki.xen.org/xenwiki/XenUSBPassthrough . Or perhaps utilize usb-redir and QEMU support for passing through a USB device.
Suspend event channel support for faster checkpointing in Remus FT.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Ох не зря многие валят с хена

Ох не зря многие валят с хена квм/опенвз - кака еще та ( определенно академическая )

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

http://wiki.xen.org/xenwiki/XenUSBPassthrough

Xen Linux kernels that have PVUSB support included:

    linux-2.6.18-xen has both the PVUSB backend and frontend drivers included. http://xenbits.xen.org/linux-2.6.18-xen.hg

    PVUSB drivers are currently being ported to the pvops kernel (2.6.32). RFC patch available from: http://lists.xensource.com/archives/html/xen-devel/2011-01/msg00354.html (http://members.iinet.net.au/~nathanael/pvusb.diff).
    Novell SLES11 SP1 kernel-xen (2.6.32) has PVUSB backend and frontend drivers. 

Судя по версиям ядер, в которых есть поддержка Xen USB Passthrough, счастье нам наступит не скоро.

google:// virt-v2v , emerge

google:// virt-v2v , emerge llibguestfs; wget virt-v2v, virt-v2v Xen->KVM ;)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".