[U-Boot] [PATCH 19/22] x86: ivybridge: Add a way to turn off the CAR

Bin Meng bmeng.cn at gmail.com
Wed Dec 31 06:56:50 CET 2014


Hi Simon,

On Sun, Dec 28, 2014 at 10:20 AM, Simon Glass <sjg at chromium.org> wrote:
> Cache-as-RAM should be turned off when we relocate since we want to run from
> RAM. Add a function to perform this task.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>  arch/x86/cpu/ivybridge/car.S | 52 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
>
> diff --git a/arch/x86/cpu/ivybridge/car.S b/arch/x86/cpu/ivybridge/car.S
> index 72b22ea..6e7e1e4 100644
> --- a/arch/x86/cpu/ivybridge/car.S
> +++ b/arch/x86/cpu/ivybridge/car.S
> @@ -163,6 +163,58 @@ wait_for_sipi:
>         /* return */
>         jmp     car_init_ret
>
> +.globl car_uninit
> +car_uninit:
> +       /* Disable cache */
> +       movl    %cr0, %eax
> +       orl     $X86_CR0_CD, %eax
> +       movl    %eax, %cr0
> +
> +       /* Disable MTRRs */
> +       movl    $MTRR_DEF_TYPE_MSR, %ecx
> +       rdmsr
> +       andl    $(~MTRR_DEF_TYPE_EN), %eax
> +       wrmsr
> +
> +       /* Disable the no-eviction run state */
> +       movl    NOEVICTMOD_MSR, %ecx
> +       rdmsr
> +       andl    $~2, %eax
> +       wrmsr
> +
> +       invd
> +
> +       /* Disable the no-eviction mode */
> +       rdmsr
> +       andl    $~1, %eax
> +       wrmsr
> +
> +#ifdef CONFIG_CACHE_MRC_BIN
> +       /* Clear the MTRR that was used to cache MRC */
> +       xorl    %eax, %eax
> +       xorl    %edx, %edx
> +       movl    $MTRR_PHYS_BASE_MSR(2), %ecx
> +       wrmsr
> +       movl    $MTRR_PHYS_MASK_MSR(2), %ecx
> +       wrmsr
> +#endif
> +
> +       /* Enable MTRRs */
> +       movl    $MTRR_DEF_TYPE_MSR, %ecx
> +       rdmsr
> +       orl     $MTRR_DEF_TYPE_EN, %eax
> +       wrmsr
> +
> +       invd
> +
> +       /* Return to the caller */
> +       jmp     *%ebx
> +
> +.Lhlt:
> +       post_code(0xee)
> +       hlt
> +       jmp     .Lhlt

I don't see any codes could jump to this 4 lines above. Remove it?

>  mtrr_table:
>         /* Fixed MTRRs */
>         .word 0x250, 0x258, 0x259
> --

Regards,
Bin


More information about the U-Boot mailing list