gem5-users@gem5.org

The gem5 Users mailing list

View all threads

How does a PCI device perform virtual to physical address translation before executing DMA in an x86 full system?

王彦景
Mon, Jul 1, 2024 9:10 AM

Hi,

Generally speaking, PCI devices use IOMMU (for x86) or SMMU (for ARM) for virtual to physical address translation. In the current version of gem5, I noticed that there is indeed an SMMU for the ARM architecture, but I couldn't find a similar component for x86. I have examined the DMA process for typical PCI devices such as copy_engine and ide under x86, but I don't understand how they perform the virtual to physical address translation.

I would like to ask for your help in understanding how PCI devices under x86 perform virtual to physical address translation. Or, can I use the SMMU in an x86 system? I am mainly focusing on full system simulations.

Thank you!
Best Regards,
Wang

Hi, Generally speaking, PCI devices use IOMMU (for x86) or SMMU (for ARM) for virtual to physical address translation. In the current version of gem5, I noticed that there is indeed an SMMU for the ARM architecture, but I couldn't find a similar component for x86. I have examined the DMA process for typical PCI devices such as copy_engine and ide under x86, but I don't understand how they perform the virtual to physical address translation. I would like to ask for your help in understanding how PCI devices under x86 perform virtual to physical address translation. Or, can I use the SMMU in an x86 system? I am mainly focusing on full system simulations. Thank you! Best Regards, Wang