lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Fri, 28 Jan 2011 10:32:59 +0100
From:	Clemens Ladisch <clemens@...isch.de>
To:	MJ embd <mj.embd@...il.com>
CC:	linux-kernel@...r.kernel.org
Subject: Re: equivalent of phys_to_virt in an iommu system

MJ embd wrote:
> Assuming at core mmu there is a mapping, V1 -> P1

Note: It's possible that there are pages for which there is no
mapping, e.g., highmem pages; and it's possible for a page to
have multiple mappings.

> And at the IOMMU for the device to access a region of DDR there is a
> mapping P2 -> P1. [P2 is the address on which device issues a r/w]

P2 is an address on a different bus, in a different address space,
so it might be a better idea to call it D1.

> Now the device driver does the following.
> 
> Line 0: V1 = kmalloc();
> Line 1: P2 = dma_map_single(V1)
> 
> Now if later in the driver, there is a requirement to get V1 from P2
> what is the primitive in linux  ?

	V1;

That is, save the address in a variable.  :-)

The DMA mapping functions typically do not save the original virtual
address, and there is no API for the reverse mapping.

If you device gives you some status message with nothing but P2, you
have to use some other mechanism to find the original virtual address.
This depends on how you device's DMA is organized; often, it is
possible to store the pointer near the DMA descriptor, or the device
has a offset relative to the known start of the buffer.

> Also is my understanding of Line 1(above) correct ?

Yes; P2 is the address that the device must use on _its_ bus.


Regards,
Clemens
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ