* + arm-move-arm_dma_limit-to-setup_dma_zone.patch added to -mm tree
[not found] <CAKv+Gu_QCJn5UGyM4zEPLvkTPMnfwTM2qKYnBU42vEPwwt6-Dg@mail.gmail.com>
@ 2014-05-19 19:51 ` Andrew Morton
2014-05-21 6:50 ` Vladimir Murzin
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Morton @ 2014-05-19 19:51 UTC (permalink / raw)
To: linux-arm-kernel
On Sun, 18 May 2014 22:49:16 -0700 Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> Gents,
>
> I noticed this patch turning up in -next:
> http://ozlabs.org/~akpm/mmots/broken-out/arm-move-arm_dma_limit-to-setup_dma_zone.patch
>
> which I think is incorrect. More specifically, it replaces a reference
> to arm_dma_limit, which is defined as either
>
> arch/arm/mm/init.c:177: arm_dma_limit = PHYS_OFFSET +
> arm_dma_zone_size - 1;
>
> or
>
> arch/arm/mm/init.c:179: arm_dma_limit = 0xffffffff;
>
> with 'arm_dma_pfn_limit << PAGE_SHIFT', which means the bottom
> PAGE_SHIFT '1' bytes are lost.
That patch has been floating about in "stuck" state for months.
I think I'll drop it. Vladimir, please resend something if you think
it still should be addressed.
^ permalink raw reply [flat|nested] 3+ messages in thread
* + arm-move-arm_dma_limit-to-setup_dma_zone.patch added to -mm tree
[not found] <CAKv+Gu_QCJn5UGyM4zEPLvkTPMnfwTM2qKYnBU42vEPwwt6-Dg@mail.gmail.com>
2014-05-19 19:51 ` + arm-move-arm_dma_limit-to-setup_dma_zone.patch added to -mm tree Andrew Morton
@ 2014-05-21 6:50 ` Vladimir Murzin
2014-05-21 10:56 ` Ard Biesheuvel
1 sibling, 1 reply; 3+ messages in thread
From: Vladimir Murzin @ 2014-05-21 6:50 UTC (permalink / raw)
To: linux-arm-kernel
Hi Ard
On 5/19/14, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> Gents,
>
> I noticed this patch turning up in -next:
> http://ozlabs.org/~akpm/mmots/broken-out/arm-move-arm_dma_limit-to-setup_dma_zone.patch
>
> which I think is incorrect. More specifically, it replaces a reference
> to arm_dma_limit, which is defined as either
>
> arch/arm/mm/init.c:177: arm_dma_limit = PHYS_OFFSET +
> arm_dma_zone_size - 1;
>
> or
>
> arch/arm/mm/init.c:179: arm_dma_limit = 0xffffffff;
>
> with 'arm_dma_pfn_limit << PAGE_SHIFT', which means the bottom
> PAGE_SHIFT '1' bytes are lost.
>
Do not we lost even more with
dma_contiguous_reserve
dma_contiguous_reserve_area
...
/* Sanitise input arguments */
alignment = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);
base = ALIGN(base, alignment);
size = ALIGN(size, alignment);
limit &= ~(alignment - 1);
Vladimir
> Relevant part of patch quoted below.
>
> Regards,
> Ard.
>
>
>
>
> diff -puN arch/arm/mm/init.c~arm-move-arm_dma_limit-to-setup_dma_zone
> arch/arm/mm/init.c
> --- a/arch/arm/mm/init.c~arm-move-arm_dma_limit-to-setup_dma_zone
> +++ a/arch/arm/mm/init.c
> @@ -328,7 +329,8 @@ void __init arm_memblock_init(struct mem
> * reserve memory for DMA contigouos allocations,
> * must come from DMA area inside low memory
> */
> - dma_contiguous_reserve(min(arm_dma_limit, arm_lowmem_limit));
> +
(min((phys_addr_t)arm_dma_pfn_limit << PAGE_SHIFT,
> + arm_lowmem_limit));
>
> arm_memblock_steal_permitted = false;
> memblock_dump_all();
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* + arm-move-arm_dma_limit-to-setup_dma_zone.patch added to -mm tree
2014-05-21 6:50 ` Vladimir Murzin
@ 2014-05-21 10:56 ` Ard Biesheuvel
0 siblings, 0 replies; 3+ messages in thread
From: Ard Biesheuvel @ 2014-05-21 10:56 UTC (permalink / raw)
To: linux-arm-kernel
On 21 May 2014 08:50, Vladimir Murzin <murzin.v@gmail.com> wrote:
> Hi Ard
>
> On 5/19/14, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
>> Gents,
>>
>> I noticed this patch turning up in -next:
>> http://ozlabs.org/~akpm/mmots/broken-out/arm-move-arm_dma_limit-to-setup_dma_zone.patch
>>
>> which I think is incorrect. More specifically, it replaces a reference
>> to arm_dma_limit, which is defined as either
>>
>> arch/arm/mm/init.c:177: arm_dma_limit = PHYS_OFFSET +
>> arm_dma_zone_size - 1;
>>
>> or
>>
>> arch/arm/mm/init.c:179: arm_dma_limit = 0xffffffff;
>>
>> with 'arm_dma_pfn_limit << PAGE_SHIFT', which means the bottom
>> PAGE_SHIFT '1' bytes are lost.
>>
>
> Do not we lost even more with
> dma_contiguous_reserve
> dma_contiguous_reserve_area
> ...
> /* Sanitise input arguments */
> alignment = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);
> base = ALIGN(base, alignment);
> size = ALIGN(size, alignment);
> limit &= ~(alignment - 1);
>
That's interesting. It looks like there may be a mismatch here: we
pass an inclusive limit where the callee expects it to be exclusive,
resulting in the top 4 megabytes of the DMA zone to be lost (for
pageblock_order == MAX_ORDER-1). I.e., if arm_dma_zone == SZ_64M, we
will end up calling __memblock_alloc_base() with a limit of 60 megs.
@Russell: care to share your thought on this?
--
Ard.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-21 10:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CAKv+Gu_QCJn5UGyM4zEPLvkTPMnfwTM2qKYnBU42vEPwwt6-Dg@mail.gmail.com>
2014-05-19 19:51 ` + arm-move-arm_dma_limit-to-setup_dma_zone.patch added to -mm tree Andrew Morton
2014-05-21 6:50 ` Vladimir Murzin
2014-05-21 10:56 ` Ard Biesheuvel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).