Hi Nicholas,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[cannot apply to v5.3-rc3 next-20190807]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Nicholas-Piggin/powerpc-64s-exception-cleanup-and-macrofiy/20190802-222211
config: powerpc-allmodconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 7.4.0
reproduce:
        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
        GCC_VERSION=7.4.0 make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

   arch/powerpc/platforms/pseries/ras.c: In function 'mce_handle_error':
>> arch/powerpc/platforms/pseries/ras.c:563:28: warning: this statement may 
>> fall through [-Wimplicit-fallthrough=]
       mce_err.u.ue_error_type = MCE_UE_ERROR_IFETCH;
       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/platforms/pseries/ras.c:564:3: note: here
      case MC_ERROR_UE_PAGE_TABLE_WALK_IFETCH:
      ^~~~
   arch/powerpc/platforms/pseries/ras.c:565:28: warning: this statement may 
fall through [-Wimplicit-fallthrough=]
       mce_err.u.ue_error_type = MCE_UE_ERROR_PAGE_TABLE_WALK_IFETCH;
       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/platforms/pseries/ras.c:566:3: note: here
      case MC_ERROR_UE_LOAD_STORE:
      ^~~~
   arch/powerpc/platforms/pseries/ras.c:567:28: warning: this statement may 
fall through [-Wimplicit-fallthrough=]
       mce_err.u.ue_error_type = MCE_UE_ERROR_LOAD_STORE;
       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/platforms/pseries/ras.c:568:3: note: here
      case MC_ERROR_UE_PAGE_TABLE_WALK_LOAD_STORE:
      ^~~~
   arch/powerpc/platforms/pseries/ras.c:569:28: warning: this statement may 
fall through [-Wimplicit-fallthrough=]
       mce_err.u.ue_error_type = MCE_UE_ERROR_PAGE_TABLE_WALK_LOAD_STORE;
       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/platforms/pseries/ras.c:570:3: note: here
      case MC_ERROR_UE_INDETERMINATE:
      ^~~~

vim +563 arch/powerpc/platforms/pseries/ras.c

   496  
   497  
   498  static int mce_handle_error(struct pt_regs *regs, struct rtas_error_log 
*errp)
   499  {
   500          struct mce_error_info mce_err = { 0 };
   501          unsigned long eaddr = 0, paddr = 0;
   502          struct pseries_errorlog *pseries_log;
   503          struct pseries_mc_errorlog *mce_log;
   504          int disposition = rtas_error_disposition(errp);
   505          int initiator = rtas_error_initiator(errp);
   506          int severity = rtas_error_severity(errp);
   507          u8 error_type, err_sub_type;
   508  
   509          if (initiator == RTAS_INITIATOR_UNKNOWN)
   510                  mce_err.initiator = MCE_INITIATOR_UNKNOWN;
   511          else if (initiator == RTAS_INITIATOR_CPU)
   512                  mce_err.initiator = MCE_INITIATOR_CPU;
   513          else if (initiator == RTAS_INITIATOR_PCI)
   514                  mce_err.initiator = MCE_INITIATOR_PCI;
   515          else if (initiator == RTAS_INITIATOR_ISA)
   516                  mce_err.initiator = MCE_INITIATOR_ISA;
   517          else if (initiator == RTAS_INITIATOR_MEMORY)
   518                  mce_err.initiator = MCE_INITIATOR_MEMORY;
   519          else if (initiator == RTAS_INITIATOR_POWERMGM)
   520                  mce_err.initiator = MCE_INITIATOR_POWERMGM;
   521          else
   522                  mce_err.initiator = MCE_INITIATOR_UNKNOWN;
   523  
   524          if (severity == RTAS_SEVERITY_NO_ERROR)
   525                  mce_err.severity = MCE_SEV_NO_ERROR;
   526          else if (severity == RTAS_SEVERITY_EVENT)
   527                  mce_err.severity = MCE_SEV_WARNING;
   528          else if (severity == RTAS_SEVERITY_WARNING)
   529                  mce_err.severity = MCE_SEV_WARNING;
   530          else if (severity == RTAS_SEVERITY_ERROR_SYNC)
   531                  mce_err.severity = MCE_SEV_SEVERE;
   532          else if (severity == RTAS_SEVERITY_ERROR)
   533                  mce_err.severity = MCE_SEV_SEVERE;
   534          else if (severity == RTAS_SEVERITY_FATAL)
   535                  mce_err.severity = MCE_SEV_FATAL;
   536          else
   537                  mce_err.severity = MCE_SEV_FATAL;
   538  
   539          if (severity <= RTAS_SEVERITY_ERROR_SYNC)
   540                  mce_err.sync_error = true;
   541          else
   542                  mce_err.sync_error = false;
   543  
   544          mce_err.error_type = MCE_ERROR_TYPE_UNKNOWN;
   545          mce_err.error_class = MCE_ECLASS_UNKNOWN;
   546  
   547          if (!rtas_error_extended(errp))
   548                  goto out;
   549  
   550          pseries_log = get_pseries_errorlog(errp, 
PSERIES_ELOG_SECT_ID_MCE);
   551          if (pseries_log == NULL)
   552                  goto out;
   553  
   554          mce_log = (struct pseries_mc_errorlog *)pseries_log->data;
   555          error_type = mce_log->error_type;
   556          err_sub_type = rtas_mc_error_sub_type(mce_log);
   557  
   558          switch (mce_log->error_type) {
   559          case MC_ERROR_TYPE_UE:
   560                  mce_err.error_type = MCE_ERROR_TYPE_UE;
   561                  switch (err_sub_type) {
   562                  case MC_ERROR_UE_IFETCH:
 > 563                          mce_err.u.ue_error_type = MCE_UE_ERROR_IFETCH;
   564                  case MC_ERROR_UE_PAGE_TABLE_WALK_IFETCH:
   565                          mce_err.u.ue_error_type = 
MCE_UE_ERROR_PAGE_TABLE_WALK_IFETCH;
   566                  case MC_ERROR_UE_LOAD_STORE:
   567                          mce_err.u.ue_error_type = 
MCE_UE_ERROR_LOAD_STORE;
   568                  case MC_ERROR_UE_PAGE_TABLE_WALK_LOAD_STORE:
   569                          mce_err.u.ue_error_type = 
MCE_UE_ERROR_PAGE_TABLE_WALK_LOAD_STORE;
   570                  case MC_ERROR_UE_INDETERMINATE:
   571                  default:
   572                          mce_err.u.ue_error_type = 
MCE_UE_ERROR_INDETERMINATE;
   573                          break;
   574                  }
   575                  if (mce_log->sub_err_type & UE_EFFECTIVE_ADDR_PROVIDED)
   576                          eaddr = be64_to_cpu(mce_log->effective_address);
   577  
   578                  if (mce_log->sub_err_type & UE_LOGICAL_ADDR_PROVIDED) {
   579                          paddr = be64_to_cpu(mce_log->logical_address);
   580                  } else if (mce_log->sub_err_type & 
UE_EFFECTIVE_ADDR_PROVIDED) {
   581                          unsigned long pfn;
   582  
   583                          pfn = addr_to_pfn(regs, eaddr);
   584                          if (pfn != ULONG_MAX)
   585                                  paddr = pfn << PAGE_SHIFT;
   586                  }
   587  
   588  
   589                  break;
   590          case MC_ERROR_TYPE_SLB:
   591                  mce_err.error_type = MCE_ERROR_TYPE_SLB;
   592                  switch (err_sub_type) {
   593                  case MC_ERROR_SLB_PARITY:
   594                          mce_err.u.slb_error_type = MCE_SLB_ERROR_PARITY;
   595                          break;
   596                  case MC_ERROR_SLB_MULTIHIT:
   597                          mce_err.u.slb_error_type = 
MCE_SLB_ERROR_MULTIHIT;
   598                          break;
   599                  case MC_ERROR_SLB_INDETERMINATE:
   600                  default:
   601                          mce_err.u.slb_error_type = 
MCE_SLB_ERROR_INDETERMINATE;
   602                          break;
   603                  }
   604                  if (mce_log->sub_err_type & 0x80)
   605                          eaddr = be64_to_cpu(mce_log->effective_address);
   606                  break;
   607          case MC_ERROR_TYPE_ERAT:
   608                  mce_err.error_type = MCE_ERROR_TYPE_ERAT;
   609                  switch (err_sub_type) {
   610                  case MC_ERROR_ERAT_PARITY:
   611                          mce_err.u.erat_error_type = 
MCE_ERAT_ERROR_PARITY;
   612                          break;
   613                  case MC_ERROR_ERAT_MULTIHIT:
   614                          mce_err.u.erat_error_type = 
MCE_ERAT_ERROR_MULTIHIT;
   615                          break;
   616                  case MC_ERROR_ERAT_INDETERMINATE:
   617                  default:
   618                          mce_err.u.erat_error_type = 
MCE_ERAT_ERROR_INDETERMINATE;
   619                          break;
   620                  }
   621                  if (mce_log->sub_err_type & 0x80)
   622                          eaddr = be64_to_cpu(mce_log->effective_address);
   623                  break;
   624          case MC_ERROR_TYPE_TLB:
   625                  mce_err.error_type = MCE_ERROR_TYPE_TLB;
   626                  switch (err_sub_type) {
   627                  case MC_ERROR_TLB_PARITY:
   628                          mce_err.u.tlb_error_type = MCE_TLB_ERROR_PARITY;
   629                          break;
   630                  case MC_ERROR_TLB_MULTIHIT:
   631                          mce_err.u.tlb_error_type = 
MCE_TLB_ERROR_MULTIHIT;
   632                          break;
   633                  case MC_ERROR_TLB_INDETERMINATE:
   634                  default:
   635                          mce_err.u.tlb_error_type = 
MCE_TLB_ERROR_INDETERMINATE;
   636                          break;
   637                  }
   638                  if (mce_log->sub_err_type & 0x80)
   639                          eaddr = be64_to_cpu(mce_log->effective_address);
   640                  break;
   641          case MC_ERROR_TYPE_D_CACHE:
   642                  mce_err.error_type = MCE_ERROR_TYPE_DCACHE;
   643                  break;
   644          case MC_ERROR_TYPE_I_CACHE:
   645                  mce_err.error_type = MCE_ERROR_TYPE_DCACHE;
   646                  break;
   647          case MC_ERROR_TYPE_UNKNOWN:
   648          default:
   649                  mce_err.error_type = MCE_ERROR_TYPE_UNKNOWN;
   650                  break;
   651          }
   652  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to