Re: [PATCH v4 2/2] powerpc/mce: Remove per cpu variables from MCE handlers

2021-01-28 Thread Ganesh

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

2021-01-25 Thread Christophe Leroy




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

2021-01-24 Thread kernel test robot
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);