Re: Can register addresses conversion go through iommu too? probably not..

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Correct

It is done automatically with the help of so called shadow page table

On Thu, Sep 30, 2021, 13:54 <ckim@xxxxxxxxxx> wrote:

Hello all,

I know when a device does dma to memory, we use functions like dma_alloc_coherent to allocate a memory region for the dma and we get the kernel virtual address and device virtual address at the same time. The iommu hardware converts the device virtual address to physical address reducing the processing time. 

 

I have a question (to make sure my understanding is correct).

To use registers in the device driver, we use ioremap function to get the kernel virtual address for the device registers. If the OS is running in virtualized environment (a hypervisor under it), this kernel virtual address should go under conversion twice 

1. virtual to physical by OS  (this physical is not actually physical, an intermediate physical?)

2. intermediate physical to real physical

I thought these two conversions are done by kernel or hypervisor software because iommu is for address translation for the addresses that the device “uses(or generates)”, not for the kernel to access the device itself.

Is my understanding correct?

Any help will be appreciated.

Thank you!

Chan Kim

 

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

  Powered by Linux