lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Sun, 3 Jul 2022 01:04:21 +0800
From:   kernel test robot <lkp@...el.com>
To:     Michael Ellerman <mpe@...erman.id.au>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: arch/powerpc/platforms/85xx/smp.c:218:28: sparse: sparse: incorrect
 type in assignment (different address spaces)

Hi Stephen,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   089866061428ec9bf67221247c936792078c41a4
commit: 84a61fb43fdfc528a3a7ff00e0b14ba91f5eb745 powerpc/85xx: Make mpc85xx_smp_kexec_cpu_down() static
date:   7 months ago
config: powerpc-randconfig-s031-20220702 (https://download.01.org/0day-ci/archive/20220703/202207030004.CAWSGbLU-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-39-gce1a6720-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=84a61fb43fdfc528a3a7ff00e0b14ba91f5eb745
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 84a61fb43fdfc528a3a7ff00e0b14ba91f5eb745
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash arch/powerpc/mm/nohash/ arch/powerpc/platforms/85xx/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>


sparse warnings: (new ones prefixed by >>)
>> arch/powerpc/platforms/85xx/smp.c:218:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@     got void * @@
   arch/powerpc/platforms/85xx/smp.c:218:28: sparse:     expected struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:218:28: sparse:     got void *
>> arch/powerpc/platforms/85xx/smp.c:227:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:227:36: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:227:36: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:239:22: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:249:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:249:26: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:249:26: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
   arch/powerpc/platforms/85xx/smp.c:266:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *spin_table @@     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table @@
   arch/powerpc/platforms/85xx/smp.c:266:26: sparse:     expected void *spin_table
   arch/powerpc/platforms/85xx/smp.c:266:26: sparse:     got struct epapr_spin_table [noderef] __iomem *[assigned] spin_table
>> arch/powerpc/platforms/85xx/smp.c:367:10: sparse: sparse: symbol 'kexec_down_cpus' was not declared. Should it be static?
>> arch/powerpc/platforms/85xx/smp.c:173:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got unsigned int * @@
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     got unsigned int *
>> arch/powerpc/platforms/85xx/smp.c:173:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got unsigned int * @@
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     got unsigned int *
>> arch/powerpc/platforms/85xx/smp.c:173:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got unsigned int * @@
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     got unsigned int *
>> arch/powerpc/platforms/85xx/smp.c:173:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got unsigned int * @@
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   arch/powerpc/platforms/85xx/smp.c:173:27: sparse:     got unsigned int *

vim +218 arch/powerpc/platforms/85xx/smp.c

bc15236fbed1e0 York Sun              2012-09-29  168  
bc15236fbed1e0 York Sun              2012-09-29  169  static inline u32 read_spin_table_addr_l(void *spin_table)
bc15236fbed1e0 York Sun              2012-09-29  170  {
bc15236fbed1e0 York Sun              2012-09-29  171  	flush_dcache_range((ulong)spin_table,
bc15236fbed1e0 York Sun              2012-09-29  172  		(ulong)spin_table + sizeof(struct epapr_spin_table));
bc15236fbed1e0 York Sun              2012-09-29 @173  	return in_be32(&((struct epapr_spin_table *)spin_table)->addr_l);
bc15236fbed1e0 York Sun              2012-09-29  174  }
bc15236fbed1e0 York Sun              2012-09-29  175  
e16c8765533a15 Andy Fleming          2011-12-08  176  #ifdef CONFIG_PPC64
e16c8765533a15 Andy Fleming          2011-12-08  177  static void wake_hw_thread(void *info)
e16c8765533a15 Andy Fleming          2011-12-08  178  {
e16c8765533a15 Andy Fleming          2011-12-08  179  	void fsl_secondary_thread_init(void);
6becef7ea04a69 chenhui zhao          2015-11-20  180  	unsigned long inia;
6becef7ea04a69 chenhui zhao          2015-11-20  181  	int cpu = *(const int *)info;
e16c8765533a15 Andy Fleming          2011-12-08  182  
01c593d749f476 Scott Wood            2015-10-06  183  	inia = *(unsigned long *)fsl_secondary_thread_init;
6becef7ea04a69 chenhui zhao          2015-11-20  184  	book3e_start_thread(cpu_thread_in_core(cpu), inia);
e16c8765533a15 Andy Fleming          2011-12-08  185  }
e16c8765533a15 Andy Fleming          2011-12-08  186  #endif
e16c8765533a15 Andy Fleming          2011-12-08  187  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  188  static int smp_85xx_start_cpu(int cpu)
d5b26db2cfcf09 Kumar Gala            2008-11-19  189  {
2f4f1f815bc6d0 chenhui zhao          2015-11-20  190  	int ret = 0;
d5b26db2cfcf09 Kumar Gala            2008-11-19  191  	struct device_node *np;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  192  	const u64 *cpu_rel_addr;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  193  	unsigned long flags;
d1d47ec6e62ab0 Peter Tyser           2009-12-18  194  	int ioremappable;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  195  	int hw_cpu = get_hard_smp_processor_id(cpu);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  196  	struct epapr_spin_table __iomem *spin_table;
e16c8765533a15 Andy Fleming          2011-12-08  197  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  198  	np = of_get_cpu_node(cpu, NULL);
d5b26db2cfcf09 Kumar Gala            2008-11-19  199  	cpu_rel_addr = of_get_property(np, "cpu-release-addr", NULL);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  200  	if (!cpu_rel_addr) {
2f4f1f815bc6d0 chenhui zhao          2015-11-20  201  		pr_err("No cpu-release-addr for cpu %d\n", cpu);
de300974761d92 Michael Ellerman      2011-04-11  202  		return -ENOENT;
d5b26db2cfcf09 Kumar Gala            2008-11-19  203  	}
d5b26db2cfcf09 Kumar Gala            2008-11-19  204  
d1d47ec6e62ab0 Peter Tyser           2009-12-18  205  	/*
d1d47ec6e62ab0 Peter Tyser           2009-12-18  206  	 * A secondary core could be in a spinloop in the bootpage
d1d47ec6e62ab0 Peter Tyser           2009-12-18  207  	 * (0xfffff000), somewhere in highmem, or somewhere in lowmem.
d1d47ec6e62ab0 Peter Tyser           2009-12-18  208  	 * The bootpage and highmem can be accessed via ioremap(), but
d1d47ec6e62ab0 Peter Tyser           2009-12-18  209  	 * we need to directly access the spinloop if its in lowmem.
d1d47ec6e62ab0 Peter Tyser           2009-12-18  210  	 */
d1d47ec6e62ab0 Peter Tyser           2009-12-18  211  	ioremappable = *cpu_rel_addr > virt_to_phys(high_memory);
d1d47ec6e62ab0 Peter Tyser           2009-12-18  212  
d5b26db2cfcf09 Kumar Gala            2008-11-19  213  	/* Map the spin table */
d1d47ec6e62ab0 Peter Tyser           2009-12-18  214  	if (ioremappable)
aa91796ec46339 Christophe Leroy      2018-10-09  215  		spin_table = ioremap_coherent(*cpu_rel_addr,
aa91796ec46339 Christophe Leroy      2018-10-09  216  					      sizeof(struct epapr_spin_table));
d1d47ec6e62ab0 Peter Tyser           2009-12-18  217  	else
15f34eb12340b2 Zhao Chenhui          2012-07-20 @218  		spin_table = phys_to_virt(*cpu_rel_addr);
d5b26db2cfcf09 Kumar Gala            2008-11-19  219  
cb1ffb6204712b Kumar Gala            2009-06-19  220  	local_irq_save(flags);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  221  	hard_irq_disable();
d0832a75075b11 Zhao Chenhui          2012-07-20  222  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  223  	if (qoriq_pm_ops)
2f4f1f815bc6d0 chenhui zhao          2015-11-20  224  		qoriq_pm_ops->cpu_up_prepare(cpu);
cb1ffb6204712b Kumar Gala            2009-06-19  225  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  226  	/* if cpu is not spinning, reset it */
2f4f1f815bc6d0 chenhui zhao          2015-11-20 @227  	if (read_spin_table_addr_l(spin_table) != 1) {
d0832a75075b11 Zhao Chenhui          2012-07-20  228  		/*
d0832a75075b11 Zhao Chenhui          2012-07-20  229  		 * We don't set the BPTR register here since it already points
d0832a75075b11 Zhao Chenhui          2012-07-20  230  		 * to the boot page properly.
d0832a75075b11 Zhao Chenhui          2012-07-20  231  		 */
2f4f1f815bc6d0 chenhui zhao          2015-11-20  232  		mpic_reset_core(cpu);
d0832a75075b11 Zhao Chenhui          2012-07-20  233  
bc15236fbed1e0 York Sun              2012-09-29  234  		/*
bc15236fbed1e0 York Sun              2012-09-29  235  		 * wait until core is ready...
bc15236fbed1e0 York Sun              2012-09-29  236  		 * We need to invalidate the stale data, in case the boot
bc15236fbed1e0 York Sun              2012-09-29  237  		 * loader uses a cache-inhibited spin table.
bc15236fbed1e0 York Sun              2012-09-29  238  		 */
bc15236fbed1e0 York Sun              2012-09-29  239  		if (!spin_event_timeout(
bc15236fbed1e0 York Sun              2012-09-29  240  				read_spin_table_addr_l(spin_table) == 1,
d0832a75075b11 Zhao Chenhui          2012-07-20  241  				10000, 100)) {
2f4f1f815bc6d0 chenhui zhao          2015-11-20  242  			pr_err("timeout waiting for cpu %d to reset\n",
2f4f1f815bc6d0 chenhui zhao          2015-11-20  243  				hw_cpu);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  244  			ret = -EAGAIN;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  245  			goto err;
d0832a75075b11 Zhao Chenhui          2012-07-20  246  		}
d0832a75075b11 Zhao Chenhui          2012-07-20  247  	}
decbb280bb8e3b Kumar Gala            2011-02-14  248  
bc15236fbed1e0 York Sun              2012-09-29  249  	flush_spin_table(spin_table);
d0832a75075b11 Zhao Chenhui          2012-07-20  250  	out_be32(&spin_table->pir, hw_cpu);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  251  #ifdef CONFIG_PPC64
15f34eb12340b2 Zhao Chenhui          2012-07-20  252  	out_be64((u64 *)(&spin_table->addr_h),
2751b628c97e66 Anton Blanchard       2014-03-11  253  		__pa(ppc_function_entry(generic_secondary_smp_init)));
2f4f1f815bc6d0 chenhui zhao          2015-11-20  254  #else
eeb09917c138cc Bai Yingjie           2020-01-06  255  #ifdef CONFIG_PHYS_ADDR_T_64BIT
eeb09917c138cc Bai Yingjie           2020-01-06  256  	/*
eeb09917c138cc Bai Yingjie           2020-01-06  257  	 * We need also to write addr_h to spin table for systems
eeb09917c138cc Bai Yingjie           2020-01-06  258  	 * in which their physical memory start address was configured
eeb09917c138cc Bai Yingjie           2020-01-06  259  	 * to above 4G, otherwise the secondary core can not get
eeb09917c138cc Bai Yingjie           2020-01-06  260  	 * correct entry to start from.
eeb09917c138cc Bai Yingjie           2020-01-06  261  	 */
eeb09917c138cc Bai Yingjie           2020-01-06  262  	out_be32(&spin_table->addr_h, __pa(__early_start) >> 32);
eeb09917c138cc Bai Yingjie           2020-01-06  263  #endif
2f4f1f815bc6d0 chenhui zhao          2015-11-20  264  	out_be32(&spin_table->addr_l, __pa(__early_start));
5b8544c38e6fde Kumar Gala            2010-10-08  265  #endif
2f4f1f815bc6d0 chenhui zhao          2015-11-20  266  	flush_spin_table(spin_table);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  267  err:
d5b26db2cfcf09 Kumar Gala            2008-11-19  268  	local_irq_restore(flags);
d5b26db2cfcf09 Kumar Gala            2008-11-19  269  
d1d47ec6e62ab0 Peter Tyser           2009-12-18  270  	if (ioremappable)
15f34eb12340b2 Zhao Chenhui          2012-07-20  271  		iounmap(spin_table);
cb1ffb6204712b Kumar Gala            2009-06-19  272  
d0832a75075b11 Zhao Chenhui          2012-07-20  273  	return ret;
d5b26db2cfcf09 Kumar Gala            2008-11-19  274  }
d5b26db2cfcf09 Kumar Gala            2008-11-19  275  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  276  static int smp_85xx_kick_cpu(int nr)
2f4f1f815bc6d0 chenhui zhao          2015-11-20  277  {
2f4f1f815bc6d0 chenhui zhao          2015-11-20  278  	int ret = 0;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  279  #ifdef CONFIG_PPC64
2f4f1f815bc6d0 chenhui zhao          2015-11-20  280  	int primary = nr;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  281  #endif
2f4f1f815bc6d0 chenhui zhao          2015-11-20  282  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  283  	WARN_ON(nr < 0 || nr >= num_possible_cpus());
2f4f1f815bc6d0 chenhui zhao          2015-11-20  284  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  285  	pr_debug("kick CPU #%d\n", nr);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  286  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  287  #ifdef CONFIG_PPC64
6becef7ea04a69 chenhui zhao          2015-11-20  288  	if (threads_per_core == 2) {
2f4f1f815bc6d0 chenhui zhao          2015-11-20  289  		if (WARN_ON_ONCE(!cpu_has_feature(CPU_FTR_SMT)))
2f4f1f815bc6d0 chenhui zhao          2015-11-20  290  			return -ENOENT;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  291  
6becef7ea04a69 chenhui zhao          2015-11-20  292  		booting_thread_hwid = cpu_thread_in_core(nr);
6becef7ea04a69 chenhui zhao          2015-11-20  293  		primary = cpu_first_thread_sibling(nr);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  294  
6becef7ea04a69 chenhui zhao          2015-11-20  295  		if (qoriq_pm_ops)
6becef7ea04a69 chenhui zhao          2015-11-20  296  			qoriq_pm_ops->cpu_up_prepare(nr);
6becef7ea04a69 chenhui zhao          2015-11-20  297  
6becef7ea04a69 chenhui zhao          2015-11-20  298  		/*
6becef7ea04a69 chenhui zhao          2015-11-20  299  		 * If either thread in the core is online, use it to start
6becef7ea04a69 chenhui zhao          2015-11-20  300  		 * the other.
6becef7ea04a69 chenhui zhao          2015-11-20  301  		 */
6becef7ea04a69 chenhui zhao          2015-11-20  302  		if (cpu_online(primary)) {
6becef7ea04a69 chenhui zhao          2015-11-20  303  			smp_call_function_single(primary,
6becef7ea04a69 chenhui zhao          2015-11-20  304  					wake_hw_thread, &nr, 1);
6becef7ea04a69 chenhui zhao          2015-11-20  305  			goto done;
6becef7ea04a69 chenhui zhao          2015-11-20  306  		} else if (cpu_online(primary + 1)) {
6becef7ea04a69 chenhui zhao          2015-11-20  307  			smp_call_function_single(primary + 1,
6becef7ea04a69 chenhui zhao          2015-11-20  308  					wake_hw_thread, &nr, 1);
6becef7ea04a69 chenhui zhao          2015-11-20  309  			goto done;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  310  		}
2f4f1f815bc6d0 chenhui zhao          2015-11-20  311  
6becef7ea04a69 chenhui zhao          2015-11-20  312  		/*
6becef7ea04a69 chenhui zhao          2015-11-20  313  		 * If getting here, it means both threads in the core are
6becef7ea04a69 chenhui zhao          2015-11-20  314  		 * offline. So start the primary thread, then it will start
6becef7ea04a69 chenhui zhao          2015-11-20  315  		 * the thread specified in booting_thread_hwid, the one
6becef7ea04a69 chenhui zhao          2015-11-20  316  		 * corresponding to nr.
6becef7ea04a69 chenhui zhao          2015-11-20  317  		 */
6becef7ea04a69 chenhui zhao          2015-11-20  318  
6becef7ea04a69 chenhui zhao          2015-11-20  319  	} else if (threads_per_core == 1) {
6becef7ea04a69 chenhui zhao          2015-11-20  320  		/*
6becef7ea04a69 chenhui zhao          2015-11-20  321  		 * If one core has only one thread, set booting_thread_hwid to
6becef7ea04a69 chenhui zhao          2015-11-20  322  		 * an invalid value.
6becef7ea04a69 chenhui zhao          2015-11-20  323  		 */
6becef7ea04a69 chenhui zhao          2015-11-20  324  		booting_thread_hwid = INVALID_THREAD_HWID;
6becef7ea04a69 chenhui zhao          2015-11-20  325  
6becef7ea04a69 chenhui zhao          2015-11-20  326  	} else if (threads_per_core > 2) {
6becef7ea04a69 chenhui zhao          2015-11-20  327  		pr_err("Do not support more than 2 threads per CPU.");
6becef7ea04a69 chenhui zhao          2015-11-20  328  		return -EINVAL;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  329  	}
2f4f1f815bc6d0 chenhui zhao          2015-11-20  330  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  331  	ret = smp_85xx_start_cpu(primary);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  332  	if (ret)
2f4f1f815bc6d0 chenhui zhao          2015-11-20  333  		return ret;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  334  
6becef7ea04a69 chenhui zhao          2015-11-20  335  done:
d2e60075a3d442 Nicholas Piggin       2018-02-14  336  	paca_ptrs[nr]->cpu_start = 1;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  337  	generic_set_cpu_up(nr);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  338  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  339  	return ret;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  340  #else
2f4f1f815bc6d0 chenhui zhao          2015-11-20  341  	ret = smp_85xx_start_cpu(nr);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  342  	if (ret)
2f4f1f815bc6d0 chenhui zhao          2015-11-20  343  		return ret;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  344  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  345  	generic_set_cpu_up(nr);
2f4f1f815bc6d0 chenhui zhao          2015-11-20  346  
2f4f1f815bc6d0 chenhui zhao          2015-11-20  347  	return ret;
2f4f1f815bc6d0 chenhui zhao          2015-11-20  348  #endif
2f4f1f815bc6d0 chenhui zhao          2015-11-20  349  }
2f4f1f815bc6d0 chenhui zhao          2015-11-20  350  
d5b26db2cfcf09 Kumar Gala            2008-11-19  351  struct smp_ops_t smp_85xx_ops = {
c64af6458e2e2d Nicholas Piggin       2016-12-20  352  	.cause_nmi_ipi = NULL,
d5b26db2cfcf09 Kumar Gala            2008-11-19  353  	.kick_cpu = smp_85xx_kick_cpu,
39fd40274d1f3a Andy Fleming          2013-08-05  354  	.cpu_bootable = smp_generic_cpu_bootable,
d0832a75075b11 Zhao Chenhui          2012-07-20  355  #ifdef CONFIG_HOTPLUG_CPU
d0832a75075b11 Zhao Chenhui          2012-07-20  356  	.cpu_disable	= generic_cpu_disable,
d0832a75075b11 Zhao Chenhui          2012-07-20  357  	.cpu_die	= generic_cpu_die,
d0832a75075b11 Zhao Chenhui          2012-07-20  358  #endif
da6658859b9c73 Thiago Jung Bauermann 2016-11-29  359  #if defined(CONFIG_KEXEC_CORE) && !defined(CONFIG_PPC64)
f933a41e419a95 Matthew McClintock    2010-07-21  360  	.give_timebase	= smp_generic_give_timebase,
f933a41e419a95 Matthew McClintock    2010-07-21  361  	.take_timebase	= smp_generic_take_timebase,
f933a41e419a95 Matthew McClintock    2010-07-21  362  #endif
d5b26db2cfcf09 Kumar Gala            2008-11-19  363  };
d5b26db2cfcf09 Kumar Gala            2008-11-19  364  
da6658859b9c73 Thiago Jung Bauermann 2016-11-29  365  #ifdef CONFIG_KEXEC_CORE
939fbf00805b39 Tiejun Chen           2015-10-06  366  #ifdef CONFIG_PPC32
5d692961633d4e Matthew McClintock    2010-09-16 @367  atomic_t kexec_down_cpus = ATOMIC_INIT(0);
f933a41e419a95 Matthew McClintock    2010-07-21  368  

:::::: The code at line 218 was first introduced by commit
:::::: 15f34eb12340b2c2e0cd90c5987ad6b5f73b79b7 powerpc/85xx: Replace epapr spin table macros/defines with a struct

:::::: TO: Zhao Chenhui <chenhui.zhao@...escale.com>
:::::: CC: Kumar Gala <galak@...nel.crashing.org>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ