All of lore.kernel.org
 help / color / mirror / Atom feed
* arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases
@ 2026-04-23 23:25 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-04-23 23:25 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence static check warning: arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Geert Uytterhoeven <geert+renesas@glider.be>
CC: Thomas Bogendoerfer <tsbogend@alpha.franken.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   45dcf5e28813954da4150e7260ccb61e95856176
commit: 9591220e7a6c12c788b1fc013c39af26edf99538 MIPS: txx9: Constify bin_attribute arguments of txx9_sram_{read,write}()
date:   10 months ago
:::::: branch date: 5 hours ago
:::::: commit date: 10 months ago
config: mips-randconfig-r123-20260423 (https://download.01.org/0day-ci/archive/20260424/202604240748.CQkBzvHT-lkp@intel.com/config)
compiler: mips-linux-gcc (GCC) 15.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260424/202604240748.CQkBzvHT-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 9591220e7a6c ("MIPS: txx9: Constify bin_attribute arguments of txx9_sram_{read,write}()")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202604240748.CQkBzvHT-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases
>> arch/mips/txx9/generic/setup.c:101:25: sparse: sparse: unsigned value that used to be signed checked against zero?
   arch/mips/txx9/generic/setup.c:105:16: sparse: signed value source

vim +254 arch/mips/txx9/generic/setup.c

860e546c19d88c Atsushi Nemoto     2008-08-19   95  
860e546c19d88c Atsushi Nemoto     2008-08-19   96  static struct txx9_board_vec *__init find_board_byname(const char *name)
860e546c19d88c Atsushi Nemoto     2008-08-19   97  {
860e546c19d88c Atsushi Nemoto     2008-08-19   98  	int i;
860e546c19d88c Atsushi Nemoto     2008-08-19   99  
860e546c19d88c Atsushi Nemoto     2008-08-19  100  	/* search board_vecs table */
860e546c19d88c Atsushi Nemoto     2008-08-19 @101  	for (i = 0; i < ARRAY_SIZE(board_vecs); i++) {
860e546c19d88c Atsushi Nemoto     2008-08-19  102  		if (strstr(board_vecs[i]->system, name))
860e546c19d88c Atsushi Nemoto     2008-08-19  103  			return board_vecs[i];
860e546c19d88c Atsushi Nemoto     2008-08-19  104  	}
860e546c19d88c Atsushi Nemoto     2008-08-19  105  	return NULL;
860e546c19d88c Atsushi Nemoto     2008-08-19  106  }
860e546c19d88c Atsushi Nemoto     2008-08-19  107  
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  108  static void __init prom_init_cmdline(void)
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  109  {
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  110  	int argc;
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  111  	int *argv32;
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  112  	int i;			/* Always ignore the "-c" at argv[0] */
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  113  
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  114  	if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) {
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  115  		/*
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  116  		 * argc is not a valid number, or argv32 is not a valid
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  117  		 * pointer
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  118  		 */
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  119  		argc = 0;
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  120  		argv32 = NULL;
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  121  	} else {
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  122  		argc = (int)fw_arg0;
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  123  		argv32 = (int *)fw_arg1;
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  124  	}
97b0511ce125b0 Geert Uytterhoeven 2008-10-27  125  
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  126  	arcs_cmdline[0] = '\0';
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  127  
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  128  	for (i = 1; i < argc; i++) {
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  129  		char *str = (char *)(long)argv32[i];
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  130  		if (i != 1)
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  131  			strcat(arcs_cmdline, " ");
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  132  		if (strchr(str, ' ')) {
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  133  			strcat(arcs_cmdline, "\"");
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  134  			strcat(arcs_cmdline, str);
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  135  			strcat(arcs_cmdline, "\"");
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  136  		} else
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  137  			strcat(arcs_cmdline, str);
e0dfb20c2b77c6 Atsushi Nemoto     2008-08-19  138  	}
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  139  }
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  140  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  141  static int txx9_ic_disable __initdata;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  142  static int txx9_dc_disable __initdata;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  143  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  144  #if defined(CONFIG_CPU_TX49XX)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  145  /* flush all cache on very early stage (before 4k_cache_init) */
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  146  static void __init early_flush_dcache(void)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  147  {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  148  	unsigned int conf = read_c0_config();
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  149  	unsigned int dc_size = 1 << (12 + ((conf & CONF_DC) >> 6));
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  150  	unsigned int linesz = 32;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  151  	unsigned long addr, end;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  152  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  153  	end = INDEX_BASE + dc_size / 4;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  154  	/* 4way, waybit=0 */
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  155  	for (addr = INDEX_BASE; addr < end; addr += linesz) {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  156  		cache_op(Index_Writeback_Inv_D, addr | 0);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  157  		cache_op(Index_Writeback_Inv_D, addr | 1);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  158  		cache_op(Index_Writeback_Inv_D, addr | 2);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  159  		cache_op(Index_Writeback_Inv_D, addr | 3);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  160  	}
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  161  }
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  162  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  163  static void __init txx9_cache_fixup(void)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  164  {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  165  	unsigned int conf;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  166  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  167  	conf = read_c0_config();
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  168  	/* flush and disable */
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  169  	if (txx9_ic_disable) {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  170  		conf |= TX49_CONF_IC;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  171  		write_c0_config(conf);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  172  	}
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  173  	if (txx9_dc_disable) {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  174  		early_flush_dcache();
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  175  		conf |= TX49_CONF_DC;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  176  		write_c0_config(conf);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  177  	}
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  178  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  179  	/* enable cache */
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  180  	conf = read_c0_config();
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  181  	if (!txx9_ic_disable)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  182  		conf &= ~TX49_CONF_IC;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  183  	if (!txx9_dc_disable)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  184  		conf &= ~TX49_CONF_DC;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  185  	write_c0_config(conf);
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  186  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  187  	if (conf & TX49_CONF_IC)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  188  		pr_info("TX49XX I-Cache disabled.\n");
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  189  	if (conf & TX49_CONF_DC)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  190  		pr_info("TX49XX D-Cache disabled.\n");
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  191  }
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  192  #else
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  193  static inline void txx9_cache_fixup(void)
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  194  {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  195  }
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  196  #endif
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  197  
860e546c19d88c Atsushi Nemoto     2008-08-19  198  static void __init preprocess_cmdline(void)
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  199  {
7580c9c3938f45 Dmitri Vorobiev    2009-10-13  200  	static char cmdline[COMMAND_LINE_SIZE] __initdata;
860e546c19d88c Atsushi Nemoto     2008-08-19  201  	char *s;
860e546c19d88c Atsushi Nemoto     2008-08-19  202  
860e546c19d88c Atsushi Nemoto     2008-08-19  203  	strcpy(cmdline, arcs_cmdline);
860e546c19d88c Atsushi Nemoto     2008-08-19  204  	s = cmdline;
860e546c19d88c Atsushi Nemoto     2008-08-19  205  	arcs_cmdline[0] = '\0';
860e546c19d88c Atsushi Nemoto     2008-08-19  206  	while (s && *s) {
860e546c19d88c Atsushi Nemoto     2008-08-19  207  		char *str = strsep(&s, " ");
860e546c19d88c Atsushi Nemoto     2008-08-19  208  		if (strncmp(str, "board=", 6) == 0) {
860e546c19d88c Atsushi Nemoto     2008-08-19  209  			txx9_board_vec = find_board_byname(str + 6);
860e546c19d88c Atsushi Nemoto     2008-08-19  210  			continue;
860e546c19d88c Atsushi Nemoto     2008-08-19  211  		} else if (strncmp(str, "masterclk=", 10) == 0) {
8e9ecbc5e21bf8 Daniel Walter      2014-06-03  212  			unsigned int val;
8e9ecbc5e21bf8 Daniel Walter      2014-06-03  213  			if (kstrtouint(str + 10, 10, &val) == 0)
860e546c19d88c Atsushi Nemoto     2008-08-19  214  				txx9_master_clock = val;
860e546c19d88c Atsushi Nemoto     2008-08-19  215  			continue;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  216  		} else if (strcmp(str, "icdisable") == 0) {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  217  			txx9_ic_disable = 1;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  218  			continue;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  219  		} else if (strcmp(str, "dcdisable") == 0) {
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  220  			txx9_dc_disable = 1;
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  221  			continue;
c7b95bcb38ea49 Atsushi Nemoto     2008-08-19  222  		} else if (strcmp(str, "toeoff") == 0) {
c7b95bcb38ea49 Atsushi Nemoto     2008-08-19  223  			txx9_ccfg_toeon = 0;
c7b95bcb38ea49 Atsushi Nemoto     2008-08-19  224  			continue;
c7b95bcb38ea49 Atsushi Nemoto     2008-08-19  225  		} else if (strcmp(str, "toeon") == 0) {
c7b95bcb38ea49 Atsushi Nemoto     2008-08-19  226  			txx9_ccfg_toeon = 1;
c7b95bcb38ea49 Atsushi Nemoto     2008-08-19  227  			continue;
860e546c19d88c Atsushi Nemoto     2008-08-19  228  		}
860e546c19d88c Atsushi Nemoto     2008-08-19  229  		if (arcs_cmdline[0])
860e546c19d88c Atsushi Nemoto     2008-08-19  230  			strcat(arcs_cmdline, " ");
860e546c19d88c Atsushi Nemoto     2008-08-19  231  		strcat(arcs_cmdline, str);
860e546c19d88c Atsushi Nemoto     2008-08-19  232  	}
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  233  
d10e025f0e4ba4 Atsushi Nemoto     2008-08-19  234  	txx9_cache_fixup();
860e546c19d88c Atsushi Nemoto     2008-08-19  235  }
860e546c19d88c Atsushi Nemoto     2008-08-19  236  
860e546c19d88c Atsushi Nemoto     2008-08-19  237  static void __init select_board(void)
860e546c19d88c Atsushi Nemoto     2008-08-19  238  {
860e546c19d88c Atsushi Nemoto     2008-08-19  239  	const char *envstr;
860e546c19d88c Atsushi Nemoto     2008-08-19  240  
860e546c19d88c Atsushi Nemoto     2008-08-19  241  	/* first, determine by "board=" argument in preprocess_cmdline() */
860e546c19d88c Atsushi Nemoto     2008-08-19  242  	if (txx9_board_vec)
860e546c19d88c Atsushi Nemoto     2008-08-19  243  		return;
860e546c19d88c Atsushi Nemoto     2008-08-19  244  	/* next, determine by "board" envvar */
860e546c19d88c Atsushi Nemoto     2008-08-19  245  	envstr = prom_getenv("board");
860e546c19d88c Atsushi Nemoto     2008-08-19  246  	if (envstr) {
860e546c19d88c Atsushi Nemoto     2008-08-19  247  		txx9_board_vec = find_board_byname(envstr);
860e546c19d88c Atsushi Nemoto     2008-08-19  248  		if (txx9_board_vec)
860e546c19d88c Atsushi Nemoto     2008-08-19  249  			return;
860e546c19d88c Atsushi Nemoto     2008-08-19  250  	}
860e546c19d88c Atsushi Nemoto     2008-08-19  251  
860e546c19d88c Atsushi Nemoto     2008-08-19  252  	/* select "default" board */
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  253  #ifdef CONFIG_CPU_TX49XX
edcaf1a6a77315 Atsushi Nemoto     2008-07-11 @254  	switch (TX4938_REV_PCODE()) {
8d795f2a5cf733 Atsushi Nemoto     2008-07-18  255  #ifdef CONFIG_TOSHIBA_RBTX4927
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  256  	case 0x4927:
7a1fdf1946b641 Yoichi Yuasa       2008-07-13  257  		txx9_board_vec = &rbtx4927_vec;
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  258  		break;
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  259  	case 0x4937:
7a1fdf1946b641 Yoichi Yuasa       2008-07-13  260  		txx9_board_vec = &rbtx4937_vec;
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  261  		break;
8d795f2a5cf733 Atsushi Nemoto     2008-07-18  262  #endif
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  263  	}
edcaf1a6a77315 Atsushi Nemoto     2008-07-11  264  #endif
860e546c19d88c Atsushi Nemoto     2008-08-19  265  }
860e546c19d88c Atsushi Nemoto     2008-08-19  266  

:::::: The code at line 254 was first introduced by commit
:::::: edcaf1a6a77315562e9781245cc8e028c9a921dc [MIPS] TXx9: Make single kernel can support multiple boards

:::::: TO: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
:::::: CC: Ralf Baechle <ralf@linux-mips.org>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread
* arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases
@ 2026-07-05 16:26 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-07-05 16:26 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence static check warning: arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Geert Uytterhoeven <geert+renesas@glider.be>
CC: Thomas Bogendoerfer <tsbogend@alpha.franken.de>

Hi Geert,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   7404ce51637231382873d0b55edabc2f3b841a9d
commit: 9591220e7a6c12c788b1fc013c39af26edf99538 MIPS: txx9: Constify bin_attribute arguments of txx9_sram_{read,write}()
date:   1 year ago
:::::: branch date: 24 hours ago
:::::: commit date: 1 year ago
config: mips-randconfig-r134-20260705 (https://download.01.org/0day-ci/archive/20260706/202607060042.96EwnsBY-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260706/202607060042.96EwnsBY-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 9591220e7a6c ("MIPS: txx9: Constify bin_attribute arguments of txx9_sram_{read,write}()")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202607060042.96EwnsBY-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases
>> arch/mips/txx9/generic/setup.c:101:25: sparse: sparse: unsigned value that used to be signed checked against zero?
   arch/mips/txx9/generic/setup.c:105:16: sparse: signed value source

vim +254 arch/mips/txx9/generic/setup.c

860e546c19d88c2 Atsushi Nemoto     2008-08-19   95  
860e546c19d88c2 Atsushi Nemoto     2008-08-19   96  static struct txx9_board_vec *__init find_board_byname(const char *name)
860e546c19d88c2 Atsushi Nemoto     2008-08-19   97  {
860e546c19d88c2 Atsushi Nemoto     2008-08-19   98  	int i;
860e546c19d88c2 Atsushi Nemoto     2008-08-19   99  
860e546c19d88c2 Atsushi Nemoto     2008-08-19  100  	/* search board_vecs table */
860e546c19d88c2 Atsushi Nemoto     2008-08-19 @101  	for (i = 0; i < ARRAY_SIZE(board_vecs); i++) {
860e546c19d88c2 Atsushi Nemoto     2008-08-19  102  		if (strstr(board_vecs[i]->system, name))
860e546c19d88c2 Atsushi Nemoto     2008-08-19  103  			return board_vecs[i];
860e546c19d88c2 Atsushi Nemoto     2008-08-19  104  	}
860e546c19d88c2 Atsushi Nemoto     2008-08-19  105  	return NULL;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  106  }
860e546c19d88c2 Atsushi Nemoto     2008-08-19  107  
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  108  static void __init prom_init_cmdline(void)
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  109  {
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  110  	int argc;
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  111  	int *argv32;
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  112  	int i;			/* Always ignore the "-c" at argv[0] */
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  113  
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  114  	if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) {
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  115  		/*
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  116  		 * argc is not a valid number, or argv32 is not a valid
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  117  		 * pointer
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  118  		 */
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  119  		argc = 0;
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  120  		argv32 = NULL;
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  121  	} else {
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  122  		argc = (int)fw_arg0;
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  123  		argv32 = (int *)fw_arg1;
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  124  	}
97b0511ce125b0c Geert Uytterhoeven 2008-10-27  125  
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  126  	arcs_cmdline[0] = '\0';
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  127  
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  128  	for (i = 1; i < argc; i++) {
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  129  		char *str = (char *)(long)argv32[i];
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  130  		if (i != 1)
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  131  			strcat(arcs_cmdline, " ");
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  132  		if (strchr(str, ' ')) {
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  133  			strcat(arcs_cmdline, "\"");
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  134  			strcat(arcs_cmdline, str);
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  135  			strcat(arcs_cmdline, "\"");
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  136  		} else
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  137  			strcat(arcs_cmdline, str);
e0dfb20c2b77c66 Atsushi Nemoto     2008-08-19  138  	}
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  139  }
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  140  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  141  static int txx9_ic_disable __initdata;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  142  static int txx9_dc_disable __initdata;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  143  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  144  #if defined(CONFIG_CPU_TX49XX)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  145  /* flush all cache on very early stage (before 4k_cache_init) */
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  146  static void __init early_flush_dcache(void)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  147  {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  148  	unsigned int conf = read_c0_config();
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  149  	unsigned int dc_size = 1 << (12 + ((conf & CONF_DC) >> 6));
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  150  	unsigned int linesz = 32;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  151  	unsigned long addr, end;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  152  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  153  	end = INDEX_BASE + dc_size / 4;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  154  	/* 4way, waybit=0 */
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  155  	for (addr = INDEX_BASE; addr < end; addr += linesz) {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  156  		cache_op(Index_Writeback_Inv_D, addr | 0);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  157  		cache_op(Index_Writeback_Inv_D, addr | 1);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  158  		cache_op(Index_Writeback_Inv_D, addr | 2);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  159  		cache_op(Index_Writeback_Inv_D, addr | 3);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  160  	}
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  161  }
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  162  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  163  static void __init txx9_cache_fixup(void)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  164  {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  165  	unsigned int conf;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  166  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  167  	conf = read_c0_config();
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  168  	/* flush and disable */
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  169  	if (txx9_ic_disable) {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  170  		conf |= TX49_CONF_IC;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  171  		write_c0_config(conf);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  172  	}
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  173  	if (txx9_dc_disable) {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  174  		early_flush_dcache();
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  175  		conf |= TX49_CONF_DC;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  176  		write_c0_config(conf);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  177  	}
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  178  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  179  	/* enable cache */
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  180  	conf = read_c0_config();
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  181  	if (!txx9_ic_disable)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  182  		conf &= ~TX49_CONF_IC;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  183  	if (!txx9_dc_disable)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  184  		conf &= ~TX49_CONF_DC;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  185  	write_c0_config(conf);
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  186  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  187  	if (conf & TX49_CONF_IC)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  188  		pr_info("TX49XX I-Cache disabled.\n");
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  189  	if (conf & TX49_CONF_DC)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  190  		pr_info("TX49XX D-Cache disabled.\n");
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  191  }
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  192  #else
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  193  static inline void txx9_cache_fixup(void)
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  194  {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  195  }
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  196  #endif
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  197  
860e546c19d88c2 Atsushi Nemoto     2008-08-19  198  static void __init preprocess_cmdline(void)
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  199  {
7580c9c3938f45b Dmitri Vorobiev    2009-10-13  200  	static char cmdline[COMMAND_LINE_SIZE] __initdata;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  201  	char *s;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  202  
860e546c19d88c2 Atsushi Nemoto     2008-08-19  203  	strcpy(cmdline, arcs_cmdline);
860e546c19d88c2 Atsushi Nemoto     2008-08-19  204  	s = cmdline;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  205  	arcs_cmdline[0] = '\0';
860e546c19d88c2 Atsushi Nemoto     2008-08-19  206  	while (s && *s) {
860e546c19d88c2 Atsushi Nemoto     2008-08-19  207  		char *str = strsep(&s, " ");
860e546c19d88c2 Atsushi Nemoto     2008-08-19  208  		if (strncmp(str, "board=", 6) == 0) {
860e546c19d88c2 Atsushi Nemoto     2008-08-19  209  			txx9_board_vec = find_board_byname(str + 6);
860e546c19d88c2 Atsushi Nemoto     2008-08-19  210  			continue;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  211  		} else if (strncmp(str, "masterclk=", 10) == 0) {
8e9ecbc5e21bf82 Daniel Walter      2014-06-03  212  			unsigned int val;
8e9ecbc5e21bf82 Daniel Walter      2014-06-03  213  			if (kstrtouint(str + 10, 10, &val) == 0)
860e546c19d88c2 Atsushi Nemoto     2008-08-19  214  				txx9_master_clock = val;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  215  			continue;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  216  		} else if (strcmp(str, "icdisable") == 0) {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  217  			txx9_ic_disable = 1;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  218  			continue;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  219  		} else if (strcmp(str, "dcdisable") == 0) {
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  220  			txx9_dc_disable = 1;
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  221  			continue;
c7b95bcb38ea492 Atsushi Nemoto     2008-08-19  222  		} else if (strcmp(str, "toeoff") == 0) {
c7b95bcb38ea492 Atsushi Nemoto     2008-08-19  223  			txx9_ccfg_toeon = 0;
c7b95bcb38ea492 Atsushi Nemoto     2008-08-19  224  			continue;
c7b95bcb38ea492 Atsushi Nemoto     2008-08-19  225  		} else if (strcmp(str, "toeon") == 0) {
c7b95bcb38ea492 Atsushi Nemoto     2008-08-19  226  			txx9_ccfg_toeon = 1;
c7b95bcb38ea492 Atsushi Nemoto     2008-08-19  227  			continue;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  228  		}
860e546c19d88c2 Atsushi Nemoto     2008-08-19  229  		if (arcs_cmdline[0])
860e546c19d88c2 Atsushi Nemoto     2008-08-19  230  			strcat(arcs_cmdline, " ");
860e546c19d88c2 Atsushi Nemoto     2008-08-19  231  		strcat(arcs_cmdline, str);
860e546c19d88c2 Atsushi Nemoto     2008-08-19  232  	}
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  233  
d10e025f0e4ba4b Atsushi Nemoto     2008-08-19  234  	txx9_cache_fixup();
860e546c19d88c2 Atsushi Nemoto     2008-08-19  235  }
860e546c19d88c2 Atsushi Nemoto     2008-08-19  236  
860e546c19d88c2 Atsushi Nemoto     2008-08-19  237  static void __init select_board(void)
860e546c19d88c2 Atsushi Nemoto     2008-08-19  238  {
860e546c19d88c2 Atsushi Nemoto     2008-08-19  239  	const char *envstr;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  240  
860e546c19d88c2 Atsushi Nemoto     2008-08-19  241  	/* first, determine by "board=" argument in preprocess_cmdline() */
860e546c19d88c2 Atsushi Nemoto     2008-08-19  242  	if (txx9_board_vec)
860e546c19d88c2 Atsushi Nemoto     2008-08-19  243  		return;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  244  	/* next, determine by "board" envvar */
860e546c19d88c2 Atsushi Nemoto     2008-08-19  245  	envstr = prom_getenv("board");
860e546c19d88c2 Atsushi Nemoto     2008-08-19  246  	if (envstr) {
860e546c19d88c2 Atsushi Nemoto     2008-08-19  247  		txx9_board_vec = find_board_byname(envstr);
860e546c19d88c2 Atsushi Nemoto     2008-08-19  248  		if (txx9_board_vec)
860e546c19d88c2 Atsushi Nemoto     2008-08-19  249  			return;
860e546c19d88c2 Atsushi Nemoto     2008-08-19  250  	}
860e546c19d88c2 Atsushi Nemoto     2008-08-19  251  
860e546c19d88c2 Atsushi Nemoto     2008-08-19  252  	/* select "default" board */
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  253  #ifdef CONFIG_CPU_TX49XX
edcaf1a6a773155 Atsushi Nemoto     2008-07-11 @254  	switch (TX4938_REV_PCODE()) {
8d795f2a5cf7333 Atsushi Nemoto     2008-07-18  255  #ifdef CONFIG_TOSHIBA_RBTX4927
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  256  	case 0x4927:
7a1fdf1946b641f Yoichi Yuasa       2008-07-13  257  		txx9_board_vec = &rbtx4927_vec;
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  258  		break;
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  259  	case 0x4937:
7a1fdf1946b641f Yoichi Yuasa       2008-07-13  260  		txx9_board_vec = &rbtx4937_vec;
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  261  		break;
8d795f2a5cf7333 Atsushi Nemoto     2008-07-18  262  #endif
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  263  	}
edcaf1a6a773155 Atsushi Nemoto     2008-07-11  264  #endif
860e546c19d88c2 Atsushi Nemoto     2008-08-19  265  }
860e546c19d88c2 Atsushi Nemoto     2008-08-19  266  

:::::: The code at line 254 was first introduced by commit
:::::: edcaf1a6a77315562e9781245cc8e028c9a921dc [MIPS] TXx9: Make single kernel can support multiple boards

:::::: TO: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
:::::: CC: Ralf Baechle <ralf@linux-mips.org>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-07-05 16:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-23 23:25 arch/mips/txx9/generic/setup.c:254:9: sparse: sparse: switch with no cases kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2026-07-05 16:26 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.