mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-04-29 12:14:13 +00:00
misc: configurator: Config usb mediator devices in dropdown list
Support detecting connected usb devices in board_inspector and list them in the usb mediator configuration menu. Tracked-On: #7424 Signed-off-by: Calvin Zhang <calvinzhang.cool@gmail.com>
This commit is contained in:
parent
2d66ba4d40
commit
e36b615fe1
33
misc/config_tools/board_inspector/extractors/95-usb.py
Normal file
33
misc/config_tools/board_inspector/extractors/95-usb.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Copyright (C) 2022 Intel Corporation. All rights reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
#
|
||||||
|
|
||||||
|
import os, re
|
||||||
|
|
||||||
|
from extractors.helpers import add_child, get_node
|
||||||
|
|
||||||
|
USB_DEVICES_PATH = "/sys/bus/usb/devices"
|
||||||
|
USB_DEVICES_REGEX = r"^\d-\d$" # only devices connecting to root hub
|
||||||
|
|
||||||
|
def extract(args, board_etree):
|
||||||
|
dev_regex = re.compile(USB_DEVICES_REGEX)
|
||||||
|
for dev in os.listdir(USB_DEVICES_PATH):
|
||||||
|
m = dev_regex.match(dev)
|
||||||
|
if m:
|
||||||
|
d = m.group(0)
|
||||||
|
devpath = os.path.join(USB_DEVICES_PATH, d)
|
||||||
|
with open(os.path.join(devpath, 'devnum'), 'r') as f:
|
||||||
|
devnum = f.read().strip()
|
||||||
|
with open(os.path.join(devpath, 'busnum'), 'r') as f:
|
||||||
|
busnum = f.read().strip()
|
||||||
|
cmd_out = os.popen('lsusb -s {b}:{d}'.format(b=busnum, d=devnum)).read()
|
||||||
|
desc = cmd_out.split(':', maxsplit=1)[1].strip('\n')
|
||||||
|
|
||||||
|
with open(devpath + '/port/firmware_node/path') as f:
|
||||||
|
acpi_path = f.read().strip()
|
||||||
|
usb_port_node = get_node(board_etree, f"//device[acpi_object='{acpi_path}']")
|
||||||
|
if usb_port_node is not None:
|
||||||
|
add_child(usb_port_node, "usb_device", location=d,
|
||||||
|
description=d + desc)
|
||||||
|
|
@ -267,8 +267,9 @@ def generate_for_one_vm(board_etree, hv_scenario_etree, vm_scenario_etree, vm_id
|
|||||||
script.add_virtual_device("uart", options="vuart_idx:{idx}")
|
script.add_virtual_device("uart", options="vuart_idx:{idx}")
|
||||||
|
|
||||||
# Mediated PCI devices, including virtio
|
# Mediated PCI devices, including virtio
|
||||||
for usb_xhci in eval_xpath_all(vm_scenario_etree, ".//usb_xhci[text() != '']/text()"):
|
for usb_xhci in eval_xpath_all(vm_scenario_etree, ".//usb_xhci/usb_dev[text() != '']/text()"):
|
||||||
script.add_virtual_device("xhci", options=usb_xhci)
|
bus_port = usb_xhci.split(' ')[0]
|
||||||
|
script.add_virtual_device("xhci", options=bus_port)
|
||||||
|
|
||||||
for virtio_input_etree in eval_xpath_all(vm_scenario_etree, ".//virtio_devices/input"):
|
for virtio_input_etree in eval_xpath_all(vm_scenario_etree, ".//virtio_devices/input"):
|
||||||
backend_device_file = eval_xpath(virtio_input_etree, "./backend_device_file[text() != '']/text()")
|
backend_device_file = eval_xpath(virtio_input_etree, "./backend_device_file[text() != '']/text()")
|
||||||
|
@ -284,6 +284,18 @@ The size is a subset of the VM's total memory size specified on the Basic tab.</
|
|||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="USBDevsConfiguration">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="usb_dev" type="xs:string" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation acrn:title="USB device assignment"
|
||||||
|
acrn:options="//usb_device/@description" acrn:options-sorted-by="lambda s: s">
|
||||||
|
<xs:documentation>Select the USB devices you want to assign to this virtual machine.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
|
||||||
<xs:simpleType name="VirtioNetworkFrameworkType">
|
<xs:simpleType name="VirtioNetworkFrameworkType">
|
||||||
<xs:annotation>
|
<xs:annotation>
|
||||||
<xs:documentation>A string with value: ``Kernel based (Virtual Host)`` or ``User space based (VBSU)``.</xs:documentation>
|
<xs:documentation>A string with value: ``Kernel based (Virtual Host)`` or ``User space based (VBSU)``.</xs:documentation>
|
||||||
|
@ -433,18 +433,10 @@ argument and memory.</xs:documentation>
|
|||||||
<xs:documentation>Enable the ACRN Device Model to emulate COM1 as a User VM stdio I/O. Hypervisor global emulation will take priority over this VM setting.</xs:documentation>
|
<xs:documentation>Enable the ACRN Device Model to emulate COM1 as a User VM stdio I/O. Hypervisor global emulation will take priority over this VM setting.</xs:documentation>
|
||||||
</xs:annotation>
|
</xs:annotation>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
<xs:element name="usb_xhci" minOccurs="0">
|
<xs:element name="usb_xhci" type="USBDevsConfiguration" minOccurs="0">
|
||||||
<xs:annotation acrn:title="Virtual USB HCI" acrn:views="basic" acrn:applicable-vms="post-launched">
|
<xs:annotation acrn:title="Virtual USB HCI" acrn:views="basic" acrn:applicable-vms="post-launched">
|
||||||
<xs:documentation>Select the USB physical bus and port number that will be emulated by the ACRN Device Model for this VM. USB 3.0, 2.0, and 1.0 are supported.</xs:documentation>
|
<xs:documentation>Select the USB physical bus and port number that will be emulated by the ACRN Device Model for this VM. USB 3.0, 2.0, and 1.0 are supported.</xs:documentation>
|
||||||
</xs:annotation>
|
</xs:annotation>
|
||||||
<xs:simpleType>
|
|
||||||
<xs:annotation>
|
|
||||||
<xs:documentation>Input format: ``bus#-port#[:bus#-port#: ...]``, for example, ``1-2:2-4``.</xs:documentation>
|
|
||||||
</xs:annotation>
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:pattern value="([\d]+-[\d]+){0,1}(:[\d]+-[\d]+)*" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
</xs:element>
|
</xs:element>
|
||||||
<xs:element name="virtio_devices">
|
<xs:element name="virtio_devices">
|
||||||
<xs:annotation acrn:title="Virt-IO devices" acrn:views="basic" acrn:applicable-vms="post-launched">
|
<xs:annotation acrn:title="Virt-IO devices" acrn:views="basic" acrn:applicable-vms="post-launched">
|
||||||
|
Loading…
Reference in New Issue
Block a user