首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从其他设备访问pci设备

如何从其他设备访问pci设备
EN

Stack Overflow用户
提问于 2021-04-22 16:32:30
回答 1查看 52关注 1票数 1

我正在qemu中创建新的PCI设备,一部分是DMA,一部分是NVMe控制器。

为了使用dma_memory_read(...),我需要从我的新设备中获取NVMe设备的物理地址

有没有获取新设备地址的函数?

有没有其他不需要物理地址就可以使用的功能?

有没有另一种方法,通过指针?

EN

回答 1

Stack Overflow用户

发布于 2021-04-22 19:01:05

通常,当试图弄清楚如何在QEMU中建模设备时,最好的问题是“真正的硬件是做什么的?”

对于真正的PCI设备,它们可以访问系统中其他设备的唯一方式是它们进行DMA访问,这是它们使用PCI地址(通常与x86上的物理地址大致相同,但在其他体系结构上不一定是这样)所做的。在QEMU中,我们通过让PCI设备执行DMA访问(pci_dma_*())的API来对此进行建模。

另一方面,如果您的PCI卡本身实现了NVMe控制器(或另一种控制器,如SCSI盘控制器),那么答案是将磁盘直接插入控制器,然后控制器就可以与它们通信,而不涉及任何物理地址。在QEMU中,我们通过控制器设备的概念对此进行建模,控制器设备可能具有插入磁盘的“总线”。

在PCI设备和NVMe之间,真正的硬件是如何对话的?一般来说,答案不是“奇怪的后门机制”,所以你不应该在QEMU中寻找与“奇怪的后门机制”相对应的API。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67209600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档