qnxhypervisor2.2用户手册2.4dma设备控制(smmuman)

高桐@BILL 高桐@BILL     2022-11-29     411

关键词:

写在前面

hypervisor使用IOMMU/SMMU 管理器(smmuman)以确保没有直通设备可以访问没有授权的host-physical内存。

IOMMU/SMMU管理器(smmuman)不是一个QNX Hypervisor组件。它是QNX Neutrino OS组件。为了方便Hypervisor 用户的理解,这里简单描述下。

2021年2月,BlackBerry正式发布QNX Hypervisor 2.2版本,该版本基于QNX Neutrino实时操作系统(RTOS)7.1。

QNX Hypervisor是基于Type-1(直接运行于裸机)、实时优先级的微内核管理程序,符合IEC 61508 SIL-3(用于工业安全),IEC 62304(用于医疗设备软件)和ISO 26262 ASIL-D(用于汽车安全)等标准。

一、DMA设备和IOMMU/SMMU

一个非cpu启动的读写请求就是来自DMA(Direct Memory Access)设备的读和写。(如GPU,网卡,声卡)一个IOMMU(ARM架构上的SMMU)是一个为非CPU启动的读写提供转换和访问控制的硬件/固件组件。类似于转换和访问控制的第二阶段页表提供CPU启动的读写。

二、smmuman的责任

SMMU管理器(smmuman)与IOMMU和SMMU在支持的硬件平台上协同工作,以:

  • 为无CPU启动的读写管理guest-physical内存到host-physical的内存转换和访问。
  • 确保没有非直通设备可以访问其映射的(允许的)host-physical内存之外
CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

[qnxhypervisor2.2用户手册]9.20vdev

[QNXHypervisor2.2用户手册]专栏目录导航指定和配置在VM中的虚拟设备。参考“VirtualDeviceReference”章节。 查看详情

[qnxhypervisor2.2用户手册]10虚拟设备参考

[QNXHypervisor2.2用户手册]专栏目录导航本章节介绍QNXHypervisor提供的虚拟设备(vdev),以及描述了如何配置这些虚拟设备。注意⚠️关于配置VM的一般信息,包括语法,参考“Configuration”章节中的“AssemblingandconfiguringVMs”。关于用... 查看详情

[qnxhypervisor2.2用户手册]9.9logger(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航筛选输出的信息,冰指定这些信息输出的位置。一,语法loggerfilter[,filter,...]output_dest二,选项2.1filter[,filter,...]输出特定消息类型的信息。指定一个或多个类型,并通过逗号分隔开;2.2output_dees... 查看详情

[qnxhypervisor2.2用户手册]10.4vdevhpet(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航为guest提供HPET设备。一,语法vdevhpetoptions二,选项2.1 frequency value使用给定的频率以替代默认的14318180Hz。目前,vdev使用一个整数除数来匹配hypervisor的内部计数器,这将引入一个skew。2.2... 查看详情

[qnxhypervisor2.2用户手册]10.3vdevgic(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航模拟ARM标准中断控制器GenericInterruptController(GIC2或GIC3)。一,语法vdevgicoptions二,选项2.1giccguest_address提供虚拟GICCPU寄存器的guest-physical地址。2.2gicrguest_address仅支持GICv3或更新一些的版本。为... 查看详情

[qnxhypervisor2.2用户手册]9.18unsupported(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航当无法成功完成guest指令的模拟时,指定hypervisor应该做什么。语法unsupportedinstruction|reference|registerabort|fail|ignore描述每个unsupported选项示例只能使用一个type-action。为你想要配置的每个unsupported... 查看详情

[qnxhypervisor2.2用户手册]9.12预留(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航在Guest-Physical内存中火Guest中断中预留指定的位置。一,语法reserveoptions二,选项2.1intrguest_intr防止qvm进程使用guest_intr指定的编号分配Guest中断。2.2loclocation_spec[,length]防止qvm进程分配location_spec... 查看详情

[qnxhypervisor2.2用户手册]9vm配置参考

[QNXHypervisor2.2用户手册]专栏目录导航当你在配置指定相应选项来配置一个qvm进程时,你正在为即将运行的Guest所在的虚拟机(VM)装配和配置组件。注意!关于配置VM的一般信息,包括语法参考“Configuration”章... 查看详情

[qnxhypervisor2.2用户手册]10.9vdevpckeyboard(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航模拟一个IBMPC键盘控制器。语法vdevpckeyboardlocbaddr选项loc设备寄存器的基地址(默认空间为io:)。关于对所有虚拟设备可用的选项列表,参考章节开始的“Commonvdevoptions”。描述仅适... 查看详情

[qnxhypervisor2.2用户手册]9.8load(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航拷贝一个文件的内容到Guest系统的地址空间。一,语法[blob_type]load[address,]filepath二,选项2.1addressGuest中文件被载入的位置。这个地址是Guest-Physical地址(由Guest可见而不是Host可见的地址,也就... 查看详情

[qnxhypervisor2.2用户手册]9.19user(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航为qvm进程实例的username或userID和groupID分配指定的值。语法userusername[,gid]*|uid[:gid[,gid]*]选项gid分配给qvm进程实例的一个或多个groupid(由逗号分隔开)。uid分配给qvm进程实例的userID。usernam... 查看详情

[qnxhypervisor2.2用户手册]9.6gdb(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航使能Guest可以使用GDB进行调试。语法gdb[paused]port选项paused如果指定了该选项,当GuestOS执行首个指令时暂停。仅允许在GDB链接后并qvm进程收到单步或继续命令后可以唤醒。portGDB连接的端口号... 查看详情

[qnxhypervisor2.2用户手册]10.5vdevioapic(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航模拟一个IntelioapicPIC。一,语法vdevioapicoptions二,选项2.1 hostvector vector将I/OAPIC的第一个guest中断与vecotr指定的Host中断编号关联起来,同样地,第二个中断通过vector+1关联起来... 查看详情

[qnxhypervisor2.2用户手册]10.6vdevmc146818(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航 模拟一个Motorola146818实时时钟芯片。一,语法vdevmc1416818locbaddrregregnum,value二,选项2.1loc设备寄存器的基地址(默认空间时io:)。2.2reg regnum,value设置NVRAMreg_num寄存器的值为value。关于... 查看详情

[qnxhypervisor2.2用户手册]9.3cpu(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航在VM中创建一个新的vCPU。一,语法cpu[options]*二,选项partitionname如果在HypervisorHost域中实现了自适应分区(APS),vCPU将会运行在Host域指定的APS分区中。如果partition选项没有被置顶,vCPU线程将... 查看详情

[qnxhypervisor2.2用户手册]9.2cmdline(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航向Guest传递一个字符串就像该字符串是从命令行输入的一样。语法cmdlinecommandline描述你可以将上面commandline中指定的字符串传递给LinuxKernle或传递给用于QNXGuest的多重引导(ELF)镜像。根... 查看详情

[qnxhypervisor2.2用户手册]11工具和驱动参考(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航该章节描述了QNXHypervisor中提供的工具和驱动。11.1 devnp-vdevpeer.so不支持,使用devnp-vdevpeer-net.so.。11.2 devnp-vdevpeer-net.so驱动提供了hypervisorhost一个网络接口,用于连接到guest的virtio-net虚拟... 查看详情

[qnxhypervisor2.2用户手册]10.10vdevpl011(代码片段)

[QNXHypervisor2.2用户手册]专栏目录导航模拟PL011串口设备语法vdevpl011[batchtimeout][delayedseconds|forever]hostdev[<|>]host_device_name[schedpriority]选项batchtimeout如果指定了该选项,vdev不是一次只写入一个字符,而是批量输出直到指定的微秒超... 查看详情