[PATCH kernel] powerpc/dma: Fix dma_map_ops::get_required_mask
Alexey Kardashevskiy
aik at ozlabs.ru
Wed Sep 9 19:36:04 AEST 2020
On 09/09/2020 17:58, Christoph Hellwig wrote:
> On Tue, Sep 08, 2020 at 11:10:03PM +1000, Alexey Kardashevskiy wrote:
>>>> a-ha, this makes more sense, thanks. Then I guess we need to revert that
>>>> one bit from yours f1565c24b596, do not we?
>>>
>>> Why? The was the original intent of the API, but now we also use
>>> internally to check the addressing capabilities.
>>
>> The bigger mask the better, no? As it is now, it's limited by the window
>> size which happens to be bigger than 4GB but smaller then full 64bit (48bit
>> on my system)
>
> Yes, the bigger mask is better. But I don't see why you'd want to
> revert the dma bypass code for that entirely.
>
I want dma_get_required_mask() to return the bigger mask always.
Now it depends on (in dma_alloc_direct()):
1. dev->dma_ops_bypass: set via pci_set_(coherent_)dma_mask();
2. dev->coherent_dma_mask - the same;
3. dev->bus_dma_limit - usually not set at all.
So until we set the mask, dma_get_required_mask() returns smaller mask.
So aacraid and likes (which calls dma_get_required_mask() before setting
it) will remain prone for breaks.
[forgot to cc: other folks last time, fixed now]
--
Alexey
More information about the Linuxppc-dev
mailing list