All of lore.kernel.org
 help / color / mirror / Atom feed
* [djiang:cxl-qtg 16/26] lib/fw_table.c:29:39: error: expected ';' after top level declarator
@ 2023-06-02  9:14 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-06-02  9:14 UTC (permalink / raw)
  To: Dave Jiang; +Cc: llvm, oe-kbuild-all, Jonathan Cameron

Hi Dave,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/djiang/linux.git cxl-qtg
head:   d149ac9ae1abedde6933ea16e12a44b965bb1384
commit: 5d09ce6212f35827d5ca6c271d70ac8bb9b5eb8a [16/26] cxl: Add callback to parse the DSMAS subtables from CDAT
config: arm-randconfig-r014-20230601 (https://download.01.org/0day-ci/archive/20230602/202306021732.31Cuyr7l-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 4faf3aaf28226a4e950c103a14f6fc1d1fdabb1b)
reproduce (this is a W=1 build):
        mkdir -p ~/bin
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://git.kernel.org/pub/scm/linux/kernel/git/djiang/linux.git/commit/?id=5d09ce6212f35827d5ca6c271d70ac8bb9b5eb8a
        git remote add djiang https://git.kernel.org/pub/scm/linux/kernel/git/djiang/linux.git
        git fetch --no-tags djiang cxl-qtg
        git checkout 5d09ce6212f35827d5ca6c271d70ac8bb9b5eb8a
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=arm olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306021732.31Cuyr7l-lkp@intel.com/

All errors (new ones prefixed by >>):

>> lib/fw_table.c:29:39: error: expected ';' after top level declarator
   static unsigned long __init_or_acpilib
                                         ^
                                         ;
   lib/fw_table.c:47:39: error: expected ';' after top level declarator
   static unsigned long __init_or_acpilib
                                         ^
                                         ;
   lib/fw_table.c:67:39: error: expected ';' after top level declarator
   static unsigned long __init_or_acpilib
                                         ^
                                         ;
>> lib/fw_table.c:85:32: error: redefinition of '__init_or_acpilib' with a different type: 'enum acpi_subtable_type' vs 'unsigned long'
   static enum acpi_subtable_type __init_or_acpilib
                                  ^
   lib/fw_table.c:67:22: note: previous definition is here
   static unsigned long __init_or_acpilib
                        ^
   lib/fw_table.c:85:49: error: expected ';' after top level declarator
   static enum acpi_subtable_type __init_or_acpilib
                                                   ^
                                                   ;
   lib/fw_table.c:99:39: error: expected ';' after top level declarator
   static unsigned long __init_or_acpilib
                                         ^
                                         ;
   lib/fw_table.c:112:8: error: unknown type name '__init_or_acpilib'
   static __init_or_acpilib bool has_handler(struct acpi_subtable_proc *proc)
          ^
   lib/fw_table.c:112:30: error: expected ';' after top level declarator
   static __init_or_acpilib bool has_handler(struct acpi_subtable_proc *proc)
                                ^
                                ;
   lib/fw_table.c:117:8: error: unknown type name '__init_or_acpilib'
   static __init_or_acpilib int call_handler(struct acpi_subtable_proc *proc,
          ^
>> lib/fw_table.c:151:5: error: redefinition of '__init_or_acpilib' with a different type: 'int' vs 'unsigned long'
   int __init_or_acpilib
       ^
   lib/fw_table.c:99:22: note: previous definition is here
   static unsigned long __init_or_acpilib
                        ^
   lib/fw_table.c:151:22: error: expected ';' after top level declarator
   int __init_or_acpilib
                        ^
                        ;
   11 errors generated.


vim +29 lib/fw_table.c

773808188a9583 Dave Jiang 2023-05-11   28  
773808188a9583 Dave Jiang 2023-05-11  @29  static unsigned long __init_or_acpilib
773808188a9583 Dave Jiang 2023-05-11   30  acpi_get_entry_type(struct acpi_subtable_entry *entry)
773808188a9583 Dave Jiang 2023-05-11   31  {
773808188a9583 Dave Jiang 2023-05-11   32  	switch (entry->type) {
773808188a9583 Dave Jiang 2023-05-11   33  	case ACPI_SUBTABLE_COMMON:
773808188a9583 Dave Jiang 2023-05-11   34  		return entry->hdr->common.type;
773808188a9583 Dave Jiang 2023-05-11   35  	case ACPI_SUBTABLE_HMAT:
773808188a9583 Dave Jiang 2023-05-11   36  		return entry->hdr->hmat.type;
773808188a9583 Dave Jiang 2023-05-11   37  	case ACPI_SUBTABLE_PRMT:
773808188a9583 Dave Jiang 2023-05-11   38  		return 0;
773808188a9583 Dave Jiang 2023-05-11   39  	case ACPI_SUBTABLE_CEDT:
773808188a9583 Dave Jiang 2023-05-11   40  		return entry->hdr->cedt.type;
a4f8e943725bf7 Dave Jiang 2023-05-24   41  	case CDAT_SUBTABLE:
a4f8e943725bf7 Dave Jiang 2023-05-24   42  		return entry->hdr->cdat.type;
773808188a9583 Dave Jiang 2023-05-11   43  	}
773808188a9583 Dave Jiang 2023-05-11   44  	return 0;
773808188a9583 Dave Jiang 2023-05-11   45  }
773808188a9583 Dave Jiang 2023-05-11   46  
773808188a9583 Dave Jiang 2023-05-11  @47  static unsigned long __init_or_acpilib
773808188a9583 Dave Jiang 2023-05-11   48  acpi_get_entry_length(struct acpi_subtable_entry *entry)
773808188a9583 Dave Jiang 2023-05-11   49  {
773808188a9583 Dave Jiang 2023-05-11   50  	switch (entry->type) {
773808188a9583 Dave Jiang 2023-05-11   51  	case ACPI_SUBTABLE_COMMON:
773808188a9583 Dave Jiang 2023-05-11   52  		return entry->hdr->common.length;
773808188a9583 Dave Jiang 2023-05-11   53  	case ACPI_SUBTABLE_HMAT:
773808188a9583 Dave Jiang 2023-05-11   54  		return entry->hdr->hmat.length;
773808188a9583 Dave Jiang 2023-05-11   55  	case ACPI_SUBTABLE_PRMT:
773808188a9583 Dave Jiang 2023-05-11   56  		return entry->hdr->prmt.length;
773808188a9583 Dave Jiang 2023-05-11   57  	case ACPI_SUBTABLE_CEDT:
773808188a9583 Dave Jiang 2023-05-11   58  		return entry->hdr->cedt.length;
a4f8e943725bf7 Dave Jiang 2023-05-24   59  	case CDAT_SUBTABLE:
a4f8e943725bf7 Dave Jiang 2023-05-24   60  		__le16 length = (__force __le16)entry->hdr->cdat.length;
a4f8e943725bf7 Dave Jiang 2023-05-24   61  
a4f8e943725bf7 Dave Jiang 2023-05-24   62  		return le16_to_cpu(length);
773808188a9583 Dave Jiang 2023-05-11   63  	}
773808188a9583 Dave Jiang 2023-05-11   64  	return 0;
773808188a9583 Dave Jiang 2023-05-11   65  }
773808188a9583 Dave Jiang 2023-05-11   66  
773808188a9583 Dave Jiang 2023-05-11   67  static unsigned long __init_or_acpilib
773808188a9583 Dave Jiang 2023-05-11   68  acpi_get_subtable_header_length(struct acpi_subtable_entry *entry)
773808188a9583 Dave Jiang 2023-05-11   69  {
773808188a9583 Dave Jiang 2023-05-11   70  	switch (entry->type) {
773808188a9583 Dave Jiang 2023-05-11   71  	case ACPI_SUBTABLE_COMMON:
773808188a9583 Dave Jiang 2023-05-11   72  		return sizeof(entry->hdr->common);
773808188a9583 Dave Jiang 2023-05-11   73  	case ACPI_SUBTABLE_HMAT:
773808188a9583 Dave Jiang 2023-05-11   74  		return sizeof(entry->hdr->hmat);
773808188a9583 Dave Jiang 2023-05-11   75  	case ACPI_SUBTABLE_PRMT:
773808188a9583 Dave Jiang 2023-05-11   76  		return sizeof(entry->hdr->prmt);
773808188a9583 Dave Jiang 2023-05-11   77  	case ACPI_SUBTABLE_CEDT:
773808188a9583 Dave Jiang 2023-05-11   78  		return sizeof(entry->hdr->cedt);
a4f8e943725bf7 Dave Jiang 2023-05-24   79  	case CDAT_SUBTABLE:
a4f8e943725bf7 Dave Jiang 2023-05-24   80  		return sizeof(entry->hdr->cdat);
773808188a9583 Dave Jiang 2023-05-11   81  	}
773808188a9583 Dave Jiang 2023-05-11   82  	return 0;
773808188a9583 Dave Jiang 2023-05-11   83  }
773808188a9583 Dave Jiang 2023-05-11   84  
773808188a9583 Dave Jiang 2023-05-11  @85  static enum acpi_subtable_type __init_or_acpilib
773808188a9583 Dave Jiang 2023-05-11   86  acpi_get_subtable_type(char *id)
773808188a9583 Dave Jiang 2023-05-11   87  {
773808188a9583 Dave Jiang 2023-05-11   88  	if (strncmp(id, ACPI_SIG_HMAT, 4) == 0)
773808188a9583 Dave Jiang 2023-05-11   89  		return ACPI_SUBTABLE_HMAT;
773808188a9583 Dave Jiang 2023-05-11   90  	if (strncmp(id, ACPI_SIG_PRMT, 4) == 0)
773808188a9583 Dave Jiang 2023-05-11   91  		return ACPI_SUBTABLE_PRMT;
773808188a9583 Dave Jiang 2023-05-11   92  	if (strncmp(id, ACPI_SIG_CEDT, 4) == 0)
773808188a9583 Dave Jiang 2023-05-11   93  		return ACPI_SUBTABLE_CEDT;
a4f8e943725bf7 Dave Jiang 2023-05-24   94  	if (strncmp(id, ACPI_SIG_CDAT, 4) == 0)
a4f8e943725bf7 Dave Jiang 2023-05-24   95  		return CDAT_SUBTABLE;
773808188a9583 Dave Jiang 2023-05-11   96  	return ACPI_SUBTABLE_COMMON;
773808188a9583 Dave Jiang 2023-05-11   97  }
773808188a9583 Dave Jiang 2023-05-11   98  
a4f8e943725bf7 Dave Jiang 2023-05-24   99  static unsigned long __init_or_acpilib
a4f8e943725bf7 Dave Jiang 2023-05-24  100  acpi_table_get_length(enum acpi_subtable_type type,
a4f8e943725bf7 Dave Jiang 2023-05-24  101  		      union fw_table_header *header)
a4f8e943725bf7 Dave Jiang 2023-05-24  102  {
a4f8e943725bf7 Dave Jiang 2023-05-24  103  	if (type == CDAT_SUBTABLE) {
a4f8e943725bf7 Dave Jiang 2023-05-24  104  		__le32 length = (__force __le32)header->cdat.length;
a4f8e943725bf7 Dave Jiang 2023-05-24  105  
a4f8e943725bf7 Dave Jiang 2023-05-24  106  		return le32_to_cpu(length);
a4f8e943725bf7 Dave Jiang 2023-05-24  107  	}
a4f8e943725bf7 Dave Jiang 2023-05-24  108  
a4f8e943725bf7 Dave Jiang 2023-05-24  109  	return header->acpi.length;
a4f8e943725bf7 Dave Jiang 2023-05-24  110  }
a4f8e943725bf7 Dave Jiang 2023-05-24  111  
773808188a9583 Dave Jiang 2023-05-11 @112  static __init_or_acpilib bool has_handler(struct acpi_subtable_proc *proc)
773808188a9583 Dave Jiang 2023-05-11  113  {
773808188a9583 Dave Jiang 2023-05-11  114  	return proc->handler || proc->handler_arg;
773808188a9583 Dave Jiang 2023-05-11  115  }
773808188a9583 Dave Jiang 2023-05-11  116  
773808188a9583 Dave Jiang 2023-05-11  117  static __init_or_acpilib int call_handler(struct acpi_subtable_proc *proc,
773808188a9583 Dave Jiang 2023-05-11  118  					  union acpi_subtable_headers *hdr,
773808188a9583 Dave Jiang 2023-05-11  119  					  unsigned long end)
773808188a9583 Dave Jiang 2023-05-11  120  {
773808188a9583 Dave Jiang 2023-05-11  121  	if (proc->handler)
773808188a9583 Dave Jiang 2023-05-11  122  		return proc->handler(hdr, end);
773808188a9583 Dave Jiang 2023-05-11  123  	if (proc->handler_arg)
773808188a9583 Dave Jiang 2023-05-11  124  		return proc->handler_arg(hdr, proc->arg, end);
773808188a9583 Dave Jiang 2023-05-11  125  	return -EINVAL;
773808188a9583 Dave Jiang 2023-05-11  126  }
773808188a9583 Dave Jiang 2023-05-11  127  
773808188a9583 Dave Jiang 2023-05-11  128  /**
773808188a9583 Dave Jiang 2023-05-11  129   * acpi_parse_entries_array - for each proc_num find a suitable subtable
773808188a9583 Dave Jiang 2023-05-11  130   *
773808188a9583 Dave Jiang 2023-05-11  131   * @id: table id (for debugging purposes)
773808188a9583 Dave Jiang 2023-05-11  132   * @table_size: size of the root table
773808188a9583 Dave Jiang 2023-05-11  133   * @table_header: where does the table start?
773808188a9583 Dave Jiang 2023-05-11  134   * @proc: array of acpi_subtable_proc struct containing entry id
773808188a9583 Dave Jiang 2023-05-11  135   *        and associated handler with it
773808188a9583 Dave Jiang 2023-05-11  136   * @proc_num: how big proc is?
773808188a9583 Dave Jiang 2023-05-11  137   * @max_entries: how many entries can we process?
773808188a9583 Dave Jiang 2023-05-11  138   *
773808188a9583 Dave Jiang 2023-05-11  139   * For each proc_num find a subtable with proc->id and run proc->handler
773808188a9583 Dave Jiang 2023-05-11  140   * on it. Assumption is that there's only single handler for particular
773808188a9583 Dave Jiang 2023-05-11  141   * entry id.
773808188a9583 Dave Jiang 2023-05-11  142   *
773808188a9583 Dave Jiang 2023-05-11  143   * The table_size is not the size of the complete ACPI table (the length
773808188a9583 Dave Jiang 2023-05-11  144   * field in the header struct), but only the size of the root table; i.e.,
773808188a9583 Dave Jiang 2023-05-11  145   * the offset from the very first byte of the complete ACPI table, to the
773808188a9583 Dave Jiang 2023-05-11  146   * first byte of the very first subtable.
773808188a9583 Dave Jiang 2023-05-11  147   *
773808188a9583 Dave Jiang 2023-05-11  148   * On success returns sum of all matching entries for all proc handlers.
773808188a9583 Dave Jiang 2023-05-11  149   * Otherwise, -ENODEV or -EINVAL is returned.
773808188a9583 Dave Jiang 2023-05-11  150   */
773808188a9583 Dave Jiang 2023-05-11 @151  int __init_or_acpilib
773808188a9583 Dave Jiang 2023-05-11  152  acpi_parse_entries_array(char *id, unsigned long table_size,
a4f8e943725bf7 Dave Jiang 2023-05-24  153  			 union fw_table_header *table_header,
773808188a9583 Dave Jiang 2023-05-11  154  			 struct acpi_subtable_proc *proc,
773808188a9583 Dave Jiang 2023-05-11  155  			 int proc_num, unsigned int max_entries)
773808188a9583 Dave Jiang 2023-05-11  156  {
773808188a9583 Dave Jiang 2023-05-11  157  	unsigned long table_end, subtable_len, entry_len;
773808188a9583 Dave Jiang 2023-05-11  158  	struct acpi_subtable_entry entry;
a4f8e943725bf7 Dave Jiang 2023-05-24  159  	enum acpi_subtable_type type;
773808188a9583 Dave Jiang 2023-05-11  160  	int count = 0;
773808188a9583 Dave Jiang 2023-05-11  161  	int errs = 0;
773808188a9583 Dave Jiang 2023-05-11  162  	int i;
773808188a9583 Dave Jiang 2023-05-11  163  
a4f8e943725bf7 Dave Jiang 2023-05-24  164  	type = acpi_get_subtable_type(id);
a4f8e943725bf7 Dave Jiang 2023-05-24  165  	table_end = (unsigned long)table_header +
a4f8e943725bf7 Dave Jiang 2023-05-24  166  		    acpi_table_get_length(type, table_header);
773808188a9583 Dave Jiang 2023-05-11  167  
773808188a9583 Dave Jiang 2023-05-11  168  	/* Parse all entries looking for a match. */
773808188a9583 Dave Jiang 2023-05-11  169  
a4f8e943725bf7 Dave Jiang 2023-05-24  170  	entry.type = type;
773808188a9583 Dave Jiang 2023-05-11  171  	entry.hdr = (union acpi_subtable_headers *)
773808188a9583 Dave Jiang 2023-05-11  172  	    ((unsigned long)table_header + table_size);
773808188a9583 Dave Jiang 2023-05-11  173  	subtable_len = acpi_get_subtable_header_length(&entry);
773808188a9583 Dave Jiang 2023-05-11  174  
773808188a9583 Dave Jiang 2023-05-11  175  	while (((unsigned long)entry.hdr) + subtable_len  < table_end) {
773808188a9583 Dave Jiang 2023-05-11  176  		if (max_entries && count >= max_entries)
773808188a9583 Dave Jiang 2023-05-11  177  			break;
773808188a9583 Dave Jiang 2023-05-11  178  
773808188a9583 Dave Jiang 2023-05-11  179  		for (i = 0; i < proc_num; i++) {
773808188a9583 Dave Jiang 2023-05-11  180  			if (acpi_get_entry_type(&entry) != proc[i].id)
773808188a9583 Dave Jiang 2023-05-11  181  				continue;
773808188a9583 Dave Jiang 2023-05-11  182  			if (!has_handler(&proc[i]) ||
773808188a9583 Dave Jiang 2023-05-11  183  			    (!errs &&
773808188a9583 Dave Jiang 2023-05-11  184  			     call_handler(&proc[i], entry.hdr, table_end))) {
773808188a9583 Dave Jiang 2023-05-11  185  				errs++;
773808188a9583 Dave Jiang 2023-05-11  186  				continue;
773808188a9583 Dave Jiang 2023-05-11  187  			}
773808188a9583 Dave Jiang 2023-05-11  188  
773808188a9583 Dave Jiang 2023-05-11  189  			proc[i].count++;
773808188a9583 Dave Jiang 2023-05-11  190  			break;
773808188a9583 Dave Jiang 2023-05-11  191  		}
773808188a9583 Dave Jiang 2023-05-11  192  		if (i != proc_num)
773808188a9583 Dave Jiang 2023-05-11  193  			count++;
773808188a9583 Dave Jiang 2023-05-11  194  
773808188a9583 Dave Jiang 2023-05-11  195  		/*
773808188a9583 Dave Jiang 2023-05-11  196  		 * If entry->length is 0, break from this loop to avoid
773808188a9583 Dave Jiang 2023-05-11  197  		 * infinite loop.
773808188a9583 Dave Jiang 2023-05-11  198  		 */
773808188a9583 Dave Jiang 2023-05-11  199  		entry_len = acpi_get_entry_length(&entry);
773808188a9583 Dave Jiang 2023-05-11  200  		if (entry_len == 0) {
773808188a9583 Dave Jiang 2023-05-11  201  			pr_err("[%4.4s:0x%02x] Invalid zero length\n", id, proc->id);
773808188a9583 Dave Jiang 2023-05-11  202  			return -EINVAL;
773808188a9583 Dave Jiang 2023-05-11  203  		}
773808188a9583 Dave Jiang 2023-05-11  204  
773808188a9583 Dave Jiang 2023-05-11  205  		entry.hdr = (union acpi_subtable_headers *)
773808188a9583 Dave Jiang 2023-05-11  206  		    ((unsigned long)entry.hdr + entry_len);
773808188a9583 Dave Jiang 2023-05-11  207  	}
773808188a9583 Dave Jiang 2023-05-11  208  
773808188a9583 Dave Jiang 2023-05-11  209  	if (max_entries && count > max_entries) {
773808188a9583 Dave Jiang 2023-05-11  210  		pr_warn("[%4.4s:0x%02x] found the maximum %i entries\n",
773808188a9583 Dave Jiang 2023-05-11  211  			id, proc->id, count);
773808188a9583 Dave Jiang 2023-05-11  212  	}
773808188a9583 Dave Jiang 2023-05-11  213  
773808188a9583 Dave Jiang 2023-05-11  214  	return errs ? -EINVAL : count;
773808188a9583 Dave Jiang 2023-05-11  215  }
773808188a9583 Dave Jiang 2023-05-11  216  EXPORT_SYMBOL_GPL(acpi_parse_entries_array);
a4f8e943725bf7 Dave Jiang 2023-05-24  217  

:::::: The code at line 29 was first introduced by commit
:::::: 773808188a9583e1e972862094c60a6ddc70f748 acpi: Move common tables helper functions to common lib

:::::: TO: Dave Jiang <dave.jiang@intel.com>
:::::: CC: Dave Jiang <dave.jiang@intel.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-02  9:14 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-02  9:14 [djiang:cxl-qtg 16/26] lib/fw_table.c:29:39: error: expected ';' after top level declarator kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.