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 <l...@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-...@lists.01.org
.config.gz
Description: application/gzip