lkml.org 
[lkml]   [2020]   [Jun]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v4] powerpc/fadump: fix race between pstore write and fadump crash trigger
Hi Sourabh,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on powerpc/next]
[also build test ERROR on linus/master linux/master v5.7 next-20200611]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Sourabh-Jain/powerpc-fadump-fix-race-between-pstore-write-and-fadump-crash-trigger/20200605-033545
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-randconfig-r002-20200612 (attached as .config)
compiler: powerpc64le-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>, old ones prefixed by <<):

arch/powerpc/kernel/fadump.c: In function 'crash_fadump':
>> arch/powerpc/kernel/fadump.c:700:15: error: 'cpus_in_crash' undeclared (first use in this function)
700 | atomic_inc(&cpus_in_crash);
| ^~~~~~~~~~~~~
arch/powerpc/kernel/fadump.c:700:15: note: each undeclared identifier is reported only once for each function it appears in
arch/powerpc/kernel/fadump.c: In function 'fadump_update_elfcore_header':
arch/powerpc/kernel/fadump.c:755:17: warning: variable 'elf' set but not used [-Wunused-but-set-variable]
755 | struct elfhdr *elf;
| ^~~
arch/powerpc/kernel/fadump.c: At top level:
arch/powerpc/kernel/fadump.c:1706:22: warning: no previous prototype for 'arch_reserved_kernel_pages' [-Wmissing-prototypes]
1706 | unsigned long __init arch_reserved_kernel_pages(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/cpus_in_crash +700 arch/powerpc/kernel/fadump.c

678
679 void crash_fadump(struct pt_regs *regs, const char *str)
680 {
681 unsigned int msecs;
682 struct fadump_crash_info_header *fdh = NULL;
683 int old_cpu, this_cpu;
684 unsigned int ncpus = num_online_cpus() - 1; /* Do not include first CPU */
685
686 if (!should_fadump_crash())
687 return;
688
689 /*
690 * old_cpu == -1 means this is the first CPU which has come here,
691 * go ahead and trigger fadump.
692 *
693 * old_cpu != -1 means some other CPU has already on it's way
694 * to trigger fadump, just keep looping here.
695 */
696 this_cpu = smp_processor_id();
697 old_cpu = cmpxchg(&crashing_cpu, -1, this_cpu);
698
699 if (old_cpu != -1) {
> 700 atomic_inc(&cpus_in_crash);
701
702 /*
703 * We can't loop here indefinitely. Wait as long as fadump
704 * is in force. If we race with fadump un-registration this
705 * loop will break and then we go down to normal panic path
706 * and reboot. If fadump is in force the first crashing
707 * cpu will definitely trigger fadump.
708 */
709 while (fw_dump.dump_registered)
710 cpu_relax();
711 return;
712 }
713
714 fdh = __va(fw_dump.fadumphdr_addr);
715 fdh->crashing_cpu = crashing_cpu;
716 crash_save_vmcoreinfo();
717
718 if (regs)
719 fdh->regs = *regs;
720 else
721 ppc_save_regs(&fdh->regs);
722
723 fdh->online_mask = *cpu_online_mask;
724
725 /*
726 * If we came in via system reset, wait a while for the secondary
727 * CPUs to enter.
728 */
729 if (TRAP(&(fdh->regs)) == 0x100) {
730 msecs = CRASH_TIMEOUT;
731 while ((atomic_read(&cpus_in_crash) < ncpus) && (--msecs > 0))
732 mdelay(1);
733 }
734
735 fw_dump.ops->fadump_trigger(fdh, str);
736 }
737

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[unhandled content-type:application/gzip]
\
 
 \ /
  Last update: 2020-06-12 07:21    [W:0.030 / U:0.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site