[PATCH v5 02/31] powerpc/fadump: move internal code to a new file
Mahesh Jagannath Salgaonkar
mahesh at linux.vnet.ibm.com
Wed Sep 4 19:02:00 AEST 2019
On 9/3/19 9:35 PM, Hari Bathini wrote:
>
>
> On 03/09/19 4:39 PM, Michael Ellerman wrote:
>> Hari Bathini <hbathini at linux.ibm.com> writes:
>>> Make way for refactoring platform specific FADump code by moving code
>>> that could be referenced from multiple places to fadump-common.c file.
>>>
>>> Signed-off-by: Hari Bathini <hbathini at linux.ibm.com>
>>> ---
>>> arch/powerpc/kernel/Makefile | 2
>>> arch/powerpc/kernel/fadump-common.c | 140 ++++++++++++++++++++++++++++++++++
>>> arch/powerpc/kernel/fadump-common.h | 8 ++
>>> arch/powerpc/kernel/fadump.c | 146 ++---------------------------------
>>> 4 files changed, 158 insertions(+), 138 deletions(-)
>>> create mode 100644 arch/powerpc/kernel/fadump-common.c
>>
>> I don't understand why we need fadump.c and fadump-common.c? They're
>> both common/shared across pseries & powernv aren't they?
>
> The convention I tried to follow to have fadump-common.c shared between fadump.c,
> pseries & powernv code while pseries & powernv code take callback requests from
> fadump.c and use fadump-common.c (shared by both platforms), if necessary to fullfil
> those requests...
>
>> By the end of the series we end up with 149 lines in fadump-common.c
>> which seems like a waste of time. Just put it all in fadump.c.
>
> Yeah. Probably not worth a new C file. Will just have two separate headers. One for
> internal code and one for interfacing with other modules...
>
> [...]
>
>>> + * Copyright 2019, IBM Corp.
>>> + * Author: Hari Bathini <hbathini at linux.ibm.com>
>>
>> These can just be:
>>
>> * Copyright 2011, Mahesh Salgaonkar, IBM Corporation.
>> * Copyright 2019, Hari Bathini, IBM Corporation.
>>
>
> Sure.
>
>>> + */
>>> +
>>> +#undef DEBUG
>>
>> Don't undef DEBUG please.
>>
>
> Sorry! Seeing such thing in most files, I thought this was the convention. Will drop
> this change in all the new files I added.
>
>>> +#define pr_fmt(fmt) "fadump: " fmt
>>> +
>>> +#include <linux/memblock.h>
>>> +#include <linux/elf.h>
>>> +#include <linux/mm.h>
>>> +#include <linux/crash_core.h>
>>> +
>>> +#include "fadump-common.h"
>>> +
>>> +void *fadump_cpu_notes_buf_alloc(unsigned long size)
>>> +{
>>> + void *vaddr;
>>> + struct page *page;
>>> + unsigned long order, count, i;
>>> +
>>> + order = get_order(size);
>>> + vaddr = (void *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, order);
>>> + if (!vaddr)
>>> + return NULL;
>>> +
>>> + count = 1 << order;
>>> + page = virt_to_page(vaddr);
>>> + for (i = 0; i < count; i++)
>>> + SetPageReserved(page + i);
>>> + return vaddr;
>>> +}
>>
>> I realise you're just moving this code, but why do we need all this hand
>> rolled allocation stuff?
>
> Yeah, I think alloc_pages_exact() may be better here. Mahesh, am I missing something?
We hook up the physical address of this buffer to ELF core header as
PT_NOTE section. Hence we don't want these pages to be moved around or
reclaimed.
Thanks,
-Mahesh.
More information about the Linuxppc-dev
mailing list