2个不稳定版本

0.2.0 2024年7月23日
0.1.0 2023年9月5日

#40硬件支持

Download history 39/week @ 2024-04-19 121/week @ 2024-07-19 28/week @ 2024-07-26 1/week @ 2024-08-02

每月150次下载

Apache-2.0 OR BSD-3-Clause

160KB
3.5K SLoC

Rust 3K SLoC // 0.0% comments C 469 SLoC // 0.3% comments

虚拟设备-scmi

此程序是VirtIO SCMI设备的vhost-user后端。它为主机上的各种实体提供SCMI访问;不一定仅限于那些自身提供SCMI接口的实体。

它已与QEMU的-device vhost-user-scmi-pci进行了测试,但应与任何支持vhost-user的虚拟机监控程序(VMM)一起工作。请参阅下面的示例部分。

概述

虚拟设备-scmi [选项]

选项

.. 程序:: 虚拟设备-scmi

.. 选项:: -h, --help

打印帮助信息。

.. 选项:: -s, --socket-path=PATH

vhost-user Unix域套接字的位置。

.. 选项:: -d, --device=SPEC

SCMI设备规范,格式为ID,PROPERTY=VALUE,...
例如:-,path=/sys/bus/iio/devices/iio:device0,channel=in_accel
可用于多个公开设备。如果没有指定设备,则不会向客户操作系统提供设备,但VirtIO SCMI仍然可用。使用--help-devices列出所有可用设备的帮助信息。

您可以将环境变量RUST_LOG设置为debug以在标准错误输出中获取最大消息。

示例

首先启动守护进程

::

主机# vhost-device-scmi --socket-path=scmi.sock --device fake,name=foo

QEMU的调用需要创建一个chardev套接字,该设备可以使用它进行通信,并通过memfd共享虚拟机的内存。

::

主机# qemu-system
-chardev socket,path=scmi.sock,id=scmi
-device vhost-user-scmi-pci,chardev=vscmi,id=scmi
-machine YOUR-MACHINE-OPTIONS,memory-backend=mem
-m 4096
-object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on
...

支持的SCMI协议

当前支持的SCMI协议有

  • 基本协议
  • 传感器管理

基本只实现了协议的必要和强制部分。

有关详细信息以及如何添加更多协议、主机设备绑定或其他功能,请参阅源代码(vhost-device-scmi 框架)文档。

测试

SCMI仅在Linux中的Arm架构上得到支持。此限制不适用于主机,只要虚拟机是Arm架构即可,主机可以是任何架构。

在虚拟机侧测试它的最简单方法是使用Linux SCMI工业I/O驱动。如果存在3轴加速度计或陀螺仪VirtIO SCMI设备,并且虚拟机内核已编译启用CONFIG_IIO_SCMI,则该设备应出现在/sys/bus/iio/devices/中。vhost-device-scmi模拟设备适用于此目的。

当然,也可以使用其他方式访问SCMI设备。以下Linux内核命令行可以用来获取SCMI跟踪信息,除了在dmesg中查看SCMI相关消息外:trace_event=scmi:* ftrace=function ftrace_filter=scmi*

内核对测试的支持

kernel子目录包含创建用于测试的模拟工业I/O设备的说明

许可证

此项目受以下其中之一许可:

除非特定文件另有说明。

依赖项

~4.5MB
~81K SLoC