[U-Boot] [PATCH] powerpc/mpc85xx: Temporary fix for spin table backward compatibility

Scott Wood scottwood at freescale.com
Sat Oct 27 01:34:52 CEST 2012


On 10/26/2012 05:05:29 PM, York Sun wrote:
> diff --git a/arch/powerpc/cpu/mpc85xx/release.S  
> b/arch/powerpc/cpu/mpc85xx/release.S
> index 4ba44a9..b68272b 100644
> --- a/arch/powerpc/cpu/mpc85xx/release.S
> +++ b/arch/powerpc/cpu/mpc85xx/release.S
> @@ -351,6 +351,13 @@ __secondary_reset_vector:
>  	.align L1_CACHE_SHIFT
>  	.global __second_half_boot_page
>  __second_half_boot_page:
> +#ifdef CONFIG_PPC_SPINTABLE_COMPATIBLE
> +	lis r3,(spin_table_compat - __second_half_boot_page)@h
> +	ori r3,r3,(spin_table_compat - __second_half_boot_page)@l
> +	add r3,r3,r11 /* r11 has the address of __second_half_boot_page  
> */
> +	lwz r14,0(r3)
> +#endif

Please tab after the mnemonic.

>  #define EPAPR_MAGIC		0x45504150
>  #define ENTRY_ADDR_UPPER	0
>  #define ENTRY_ADDR_LOWER	4
> @@ -383,7 +390,24 @@ __second_half_boot_page:
>  	stw	r8,ENTRY_ADDR_LOWER(r10)
> 
>  	/* spin waiting for addr */
> -3:	lwz	r4,ENTRY_ADDR_LOWER(r10)
> +3:
> +/*
> + * To comply with ePAPR 1.1, the spin table has been moved to  
> cache-enabled
> + * memory. Old OS may not work with this change. A patch is waiting  
> to be
> + * accepted for Linux kernel. Other OS needs similar fix to spin  
> table.
> + * For OSes with old spin table code, we can enable this temporary  
> fix by
> + * setting environmental variable "spin_table_compat". For new OSes,  
> set
> + * "spin_table_compat=no". After all OSes are fixed, we can remove  
> this macro
> + * and related code. For now, it is enabled by default.
> + */

Let's be realistic -- s/all OSes are fixed/Linux is fixed/

> +
> +#ifdef CONFIG_PPC_SPINTABLE_COMPATIBLE
> +	.align L1_CACHE_SHIFT
> +	.global spin_table_compat
> +spin_table_compat:
> +	.long 1
> +#endif

Tab after .long

> +
>  __spin_table_end:
>  	.space 4096 - (__spin_table_end - __spin_table)
> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h  
> b/arch/powerpc/include/asm/config_mpc85xx.h
> index 03baaee..29833bb 100644
> --- a/arch/powerpc/include/asm/config_mpc85xx.h
> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
> @@ -27,6 +27,13 @@
>  #error "Do not define CONFIG_SYS_CCSRBAR_DEFAULT in the board header  
> file."
>  #endif
> 
> +/*
> + * This macro should be removed when we no longer care about  
> backwards
> + * compatibility with older operating systems. Cacheable spin table  
> support
> + * will be added in Linux 3.8.
> + */
> +#define CONFIG_PPC_SPINTABLE_COMPATIBLE

Put the crystal ball away -- we don't know it will be in 3.8 (though
hopefully it will be).  We just know it won't make it any sooner than
that (unless Kumar can push it as a bug fix, which seems unlikely).

-Scott


More information about the U-Boot mailing list