Re: [PATCH 3/3] MIPS: Reduce possibility of kernel panic under CONFIG_SWIOTLB

From: Jiaxun Yang
Date: Tue Apr 21 2020 - 06:45:31 EST


On Tue, 21 Apr 2020 17:35:25 +0800
Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> wrote:

> On Tue, 21 Apr 2020 17:04:29 +0800
> Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> wrote:
>
[...]
>
> AFAIK there are some reasons that we set it to bottom_up.
> On some platforms, bootloader won't place cmdline & devicetree into
> reserved memory but place them just after kernel in memory. That means
> if you set it as bottom up, then early allocate memory might collide
> with these boot arguments.

Sorry please ignore it.

I had a wrong impression on memory layout.

It should be fine.

Thanks.

>
> I'm not even sure if it works fine on Loongson with early PMON.
>
> I had met that issue before, the solution for me is to reduce SWIOTLB
> size.
>
> >
> > Reported-by: Juxin Gao <gaojuxin@xxxxxxxxxxx>
> > Co-developed-by: Juxin Gao <gaojuxin@xxxxxxxxxxx>
> > Signed-off-by: Juxin Gao <gaojuxin@xxxxxxxxxxx>
> > Signed-off-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx>
> > ---
> > arch/mips/kernel/setup.c | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
> > index 5481a0c..8db533c 100644
> > --- a/arch/mips/kernel/setup.c
> > +++ b/arch/mips/kernel/setup.c
> > @@ -700,7 +700,17 @@ static void __init arch_mem_init(char
> > **cmdline_p) memblock_reserve(crashk_res.start,
> > resource_size(&crashk_res)); #endif
> > device_tree_init();
> > +
> > + /*
> > + * In order to reduce the possibility of kernel panic when
> > failed to
> > + * get IO TLB memory under CONFIG_SWIOTLB, it is better to
> > allocate
> > + * low memory as small as possible before
> > plat_swiotlb_setup(), so
> > + * make sparse_init() using top-down allocation.
> > + */
> > + memblock_set_bottom_up(false);
> > sparse_init();
> > + memblock_set_bottom_up(true);
> > +
> > plat_swiotlb_setup();
> >
> > dma_contiguous_reserve(PFN_PHYS(max_low_pfn));
>
> --
> Jiaxun Yang
>