Message ID | 20220117075246.36072-3-hbathini@linux.ibm.com (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | powerpc/fadump: handle CMA activation failure appropriately | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/github-powerpc_selftests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_ppctests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 7 jobs. |
snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 24 jobs. |
snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
Hari Bathini <hbathini@linux.ibm.com> writes: > With commit a4e92ce8e4c8 ("powerpc/fadump: Reservationless firmware > assisted dump"), Linux kernel's Contiguous Memory Allocator (CMA) > based reservation was introduced in fadump. That change was aimed at > using CMA to let applications utilize the memory reserved for fadump > while blocking it from being used for kernel pages. The assumption > was, even if CMA activation fails for whatever reason, the memory > still remains reserved to avoid it from being used for kernel pages. > But commit 072355c1cf2d ("mm/cma: expose all pages to the buddy if > activation of an area fails") breaks this assumption as it started > exposing all pages to buddy allocator on CMA activation failure. > It led to warning messages like below while running crash-utility > on vmcore of a kernel having above two commits: > > crash: seek error: kernel virtual address: <from reserved region> > > To fix this problem, opt out from exposing pages to buddy allocator > on CMA activation failure for fadump reserved memory. > > Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> > Acked-by: David Hildenbrand <david@redhat.com> > --- > > Changes in v3: > * Added Acked-by tag from David. > > > arch/powerpc/kernel/fadump.c | 6 ++++++ > 1 file changed, 6 insertions(+) Acked-by: Michael Ellerman <mpe@ellerman.id.au> cheers > diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c > index d03e488cfe9c..d0ad86b67e66 100644 > --- a/arch/powerpc/kernel/fadump.c > +++ b/arch/powerpc/kernel/fadump.c > @@ -112,6 +112,12 @@ static int __init fadump_cma_init(void) > return 1; > } > > + /* > + * If CMA activation fails, keep the pages reserved, instead of > + * exposing them to buddy allocator. Same as 'fadump=nocma' case. > + */ > + cma_reserve_pages_on_error(fadump_cma); > + > /* > * So we now have successfully initialized cma area for fadump. > */ > -- > 2.34.1
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c index d03e488cfe9c..d0ad86b67e66 100644 --- a/arch/powerpc/kernel/fadump.c +++ b/arch/powerpc/kernel/fadump.c @@ -112,6 +112,12 @@ static int __init fadump_cma_init(void) return 1; } + /* + * If CMA activation fails, keep the pages reserved, instead of + * exposing them to buddy allocator. Same as 'fadump=nocma' case. + */ + cma_reserve_pages_on_error(fadump_cma); + /* * So we now have successfully initialized cma area for fadump. */