[coreboot] patch: make node id/core id available on all arch; really implement stop_ap

Peter Stuge peter at stuge.se
Sat Sep 20 02:11:37 CEST 2008


ron minnich wrote:
> support for node id and core id. We've been faking this for two
> years now.

Good improvement.


> +++ mainboard/amd/serengeti/Makefile	(working copy)
> @@ -27,6 +27,8 @@
>  			$(src)/southbridge/amd/amd8111/stage1_smbus.c \
>  			$(src)/southbridge/amd/amd8111/stage1_ctrl.c \
>  			$(src)/southbridge/amd/amd8111/stage1_enable_rom.c \
> +			$(src)/arch/x86/amd/model_fxx/dualcore_id.c \
> +			$(src)/arch/x86/amd/model_fxx/stage1.c \
>  			$(src)/northbridge/amd/k8/coherent_ht.c \
>  			$(src)/northbridge/amd/k8/libstage1.c \
>  
> @@ -38,10 +40,9 @@
>  			$(src)/arch/x86/pci_ops_conf1.c \
>  			$(src)/arch/x86/stage1_mtrr.c \
>  			$(src)/southbridge/amd/amd8111/stage1_smbus.c \
> -			$(src)/arch/x86/amd/model_fxx/init_cpus.c \
>  			$(src)/arch/x86/amd/model_fxx/dualcore.c \
> -			$(src)/arch/x86/amd/model_fxx/dualcore_id.c \
>  			$(src)/arch/x86/amd/model_fxx/fidvid.c \
> +			$(src)/arch/x86/amd/model_fxx/init_cpus.c \
>  			$(src)/lib/clog2.c

Hm, is the order important?


>  /**
> + * Return core id/node id info. Always 0. 
> + */
> +struct node_core_id get_node_core_id(void)
> +{
> +	struct node_core_id id;
> +	id.nodeid = 0;
> +	id.coreid = 0;
> +}

Except there is no return. :)


> +	me = get_node_core_id();
> +	/* before we do anything, we want to stop if we dont run
> +	 * on the bootstrap processor.
> +	 * stop_ap is responsible for NOT stopping the BSP
> +	 */
>  
> +	stop_ap();
> +

stop_ap() and comment could go before get_node_core_id().


>  	/* Initialize global variables before we can think of using them.
>  	 * NEVER run this on an AP!
>  	 */
> -	global_vars_init(&globvars);
> -	globvars.init_detected = init_detected;
> +	if (me.nodeid == 0) {
> +		global_vars_init(&globvars);
> +		globvars.init_detected = init_detected;
> +	}

And in any case this check shouldn't be needed - then stop_ap() will
have failed and if that can happen it should be handled by stop_ap().


//Peter




More information about the coreboot mailing list