Re: [PATCH v4 2/2] powerpc/mce: Remove per cpu variables from MCE handlers
On 1/25/21 2:54 PM, Christophe Leroy wrote: Le 22/01/2021 à 13:32, Ganesh Goudar a écrit : Access to per-cpu variables requires translation to be enabled on pseries machine running in hash mmu mode, Since part of MCE handler runs in realmode and part of MCE handling code is shared between ppc architectures pseries and powernv, it becomes difficult to manage these variables differently on different architectures, So have these variables in paca instead of having them as per-cpu variables to avoid complications. Signed-off-by: Ganesh Goudar --- v2: Dynamically allocate memory for machine check event info v3: Remove check for hash mmu lpar, use memblock_alloc_try_nid to allocate memory. v4: Spliting the patch into two. --- arch/powerpc/include/asm/mce.h | 18 +++ arch/powerpc/include/asm/paca.h | 4 ++ arch/powerpc/kernel/mce.c | 79 ++ arch/powerpc/kernel/setup-common.c | 2 +- 4 files changed, 70 insertions(+), 33 deletions(-) diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 71f38e9248be..17dc451f0e45 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -916,7 +916,6 @@ void __init setup_arch(char **cmdline_p) /* On BookE, setup per-core TLB data structures. */ setup_tlb_core_data(); #endif - This line removal is really required for this patch ? I will correct it, Thanks for catching. /* Print various info about the machine that has been gathered so far. */ print_system_info(); @@ -938,6 +937,7 @@ void __init setup_arch(char **cmdline_p) exc_lvl_early_init(); emergency_stack_init(); + mce_init(); You have to include mce.h to avoid build failure on PPC32. Sure, thanks smp_release_cpus(); initmem_init();
Re: [PATCH v4 2/2] powerpc/mce: Remove per cpu variables from MCE handlers
Le 22/01/2021 à 13:32, Ganesh Goudar a écrit : Access to per-cpu variables requires translation to be enabled on pseries machine running in hash mmu mode, Since part of MCE handler runs in realmode and part of MCE handling code is shared between ppc architectures pseries and powernv, it becomes difficult to manage these variables differently on different architectures, So have these variables in paca instead of having them as per-cpu variables to avoid complications. Signed-off-by: Ganesh Goudar --- v2: Dynamically allocate memory for machine check event info v3: Remove check for hash mmu lpar, use memblock_alloc_try_nid to allocate memory. v4: Spliting the patch into two. --- arch/powerpc/include/asm/mce.h | 18 +++ arch/powerpc/include/asm/paca.h| 4 ++ arch/powerpc/kernel/mce.c | 79 ++ arch/powerpc/kernel/setup-common.c | 2 +- 4 files changed, 70 insertions(+), 33 deletions(-) diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 71f38e9248be..17dc451f0e45 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -916,7 +916,6 @@ void __init setup_arch(char **cmdline_p) /* On BookE, setup per-core TLB data structures. */ setup_tlb_core_data(); #endif - This line removal is really required for this patch ? /* Print various info about the machine that has been gathered so far. */ print_system_info(); @@ -938,6 +937,7 @@ void __init setup_arch(char **cmdline_p) exc_lvl_early_init(); emergency_stack_init(); + mce_init(); You have to include mce.h to avoid build failure on PPC32. smp_release_cpus(); initmem_init();
Re: [PATCH v4 2/2] powerpc/mce: Remove per cpu variables from MCE handlers
Hi Ganesh, Thank you for the patch! Yet something to improve: [auto build test ERROR on powerpc/next] [also build test ERROR on v5.11-rc4 next-20210122] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Ganesh-Goudar/powerpc-mce-Reduce-the-size-of-event-arrays/20210124-191230 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc-randconfig-r005-20210124 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project bd3a387ee76f58caa0d7901f3f84e9bb3d006f27) 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 # install powerpc cross compiling tool for clang build # apt-get install binutils-powerpc-linux-gnu # https://github.com/0day-ci/linux/commit/fab6401db419da33d1757ebf519f030ab758ae7a git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Ganesh-Goudar/powerpc-mce-Reduce-the-size-of-event-arrays/20210124-191230 git checkout fab6401db419da33d1757ebf519f030ab758ae7a # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> arch/powerpc/kernel/setup-common.c:940:2: error: implicit declaration of >> function 'mce_init' [-Werror,-Wimplicit-function-declaration] mce_init(); ^ 1 error generated. vim +/mce_init +940 arch/powerpc/kernel/setup-common.c 847 848 /* 849 * Called into from start_kernel this initializes memblock, which is used 850 * to manage page allocation until mem_init is called. 851 */ 852 void __init setup_arch(char **cmdline_p) 853 { 854 kasan_init(); 855 856 *cmdline_p = boot_command_line; 857 858 /* Set a half-reasonable default so udelay does something sensible */ 859 loops_per_jiffy = 5 / HZ; 860 861 /* Unflatten the device-tree passed by prom_init or kexec */ 862 unflatten_device_tree(); 863 864 /* 865 * Initialize cache line/block info from device-tree (on ppc64) or 866 * just cputable (on ppc32). 867 */ 868 initialize_cache_info(); 869 870 /* Initialize RTAS if available. */ 871 rtas_initialize(); 872 873 /* Check if we have an initrd provided via the device-tree. */ 874 check_for_initrd(); 875 876 /* Probe the machine type, establish ppc_md. */ 877 probe_machine(); 878 879 /* Setup panic notifier if requested by the platform. */ 880 setup_panic(); 881 882 /* 883 * Configure ppc_md.power_save (ppc32 only, 64-bit machines do 884 * it from their respective probe() function. 885 */ 886 setup_power_save(); 887 888 /* Discover standard serial ports. */ 889 find_legacy_serial_ports(); 890 891 /* Register early console with the printk subsystem. */ 892 register_early_udbg_console(); 893 894 /* Setup the various CPU maps based on the device-tree. */ 895 smp_setup_cpu_maps(); 896 897 /* Initialize xmon. */ 898 xmon_setup(); 899 900 /* Check the SMT related command line arguments (ppc64). */ 901 check_smt_enabled(); 902 903 /* Parse memory topology */ 904 mem_topology_setup(); 905 906 /* 907 * Release secondary cpus out of their spinloops at 0x60 now that 908 * we can map physical -> logical CPU ids. 909 * 910 * Freescale Book3e parts spin in a loop provided by firmware, 911 * so smp_release_cpus() does nothing for them. 912 */ 913 #ifdef CONFIG_SMP 914 smp_setup_pacas(); 915 916 /* On BookE, setup per-core TLB data structures. */ 917 setup_tlb_core_data(); 918 #endif 919 /* Print various info about the machine that has been gathered so far. */ 920 print_system_info(); 921 922 /* Reserve large chunks of memory for use by CMA for KVM. */ 923 kvm_cma_reserve(); 924 925 /* Reserve large chunks of memory for us by CMA for hugetlb */ 926 gigantic_hugetlb_cma_reserve(); 927 928 klp_init_thread_info(&init_task);