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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 9 Mar 2017 03:06:34 +0900
From:   Masahiro Yamada <yamada.masahiro@...ionext.com>
To:     Robin Murphy <robin.murphy@....com>
Cc:     dmaengine@...r.kernel.org,
        linux-arm-kernel <linux-arm-kernel@...ts.infradead.org>,
        Russell King - ARM Linux <linux@....linux.org.uk>,
        Arnd Bergmann <arnd@...db.de>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        "James E.J. Bottomley" <James.Bottomley@...senpartnership.com>,
        Tejun Heo <tj@...nel.org>,
        "David S. Miller" <davem@...emloft.net>
Subject: Re: [Question] devm_kmalloc() for DMA ?

Hi Robin,


2017-03-08 20:15 GMT+09:00 Robin Murphy <robin.murphy@....com>:
> On 08/03/17 10:59, Masahiro Yamada wrote:
>> Hi experts,
>>
>> I have a question about
>> how to allocate DMA-safe buffer.
>>
>>
>> In my understanding, kmalloc() returns
>> memory with DMA safe alignment
>> in order to avoid cache-sharing problem when used for DMA.
>>
>> The alignment is decided by ARCH_DMA_MINALIGN.
>> For example, on modern ARM 32bit boards, this value is typically 64.
>> So, memory returned by kmalloc() has
>> at least 64 byte alignment.
>>
>>
>> On the other hand, devm_kmalloc() does not return
>> enough-aligned memory.
>
> How so? If anything returned by kmalloc() is guaranteed to occupy some
> multiple of ARCH_DMA_MINALIGN bytes in order to avoid two allocations
> falling into the same cache line, I don't see how stealing the first 16
> bytes *of a single allocation* could make it start sharing cache lines
> with another? :/

I just thought of traverse of the linked list of devres_node
on a different thread, but it should not happen.

Please forget my stupid question.


> If a particular device has a problem with:
>
> p = kmalloc(...);
> d = dma_map_single(p + 0x10, ...);
> do_something_with(d);
>
> that's a separate issue altogether.

Right.
Each device has own requirement for DMA alignment.

Thanks!


-- 
Best Regards
Masahiro Yamada

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ