Commit 6a37ff38 authored by Soren Brinkmann's avatar Soren Brinkmann Committed by Michal Simek
Browse files

arm: zynq: Invalidate L1 in secondary boot



During boot, Linux initiates a clean-invalidate operation only, resulting
in faulty data to be written to the memory system during resume.
Therefore invalidate the L1 in the secondary boot path to avoid these
issues.

Signed-off-by: default avatarSoren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
parent 11e03130
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
#ifndef __MACH_ZYNQ_COMMON_H__
#define __MACH_ZYNQ_COMMON_H__

void zynq_secondary_startup(void);

extern int zynq_slcr_init(void);
extern void zynq_slcr_system_reset(void);
extern void zynq_slcr_cpu_stop(int cpu);
+5 −1
Original line number Diff line number Diff line
@@ -18,5 +18,9 @@ zynq_secondary_trampoline_jump:
	.word	/* cpu 1 */
.globl zynq_secondary_trampoline_end
zynq_secondary_trampoline_end:

ENDPROC(zynq_secondary_trampoline)

ENTRY(zynq_secondary_startup)
	bl	v7_invalidate_l1
	b	secondary_startup
ENDPROC(zynq_secondary_startup)
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ EXPORT_SYMBOL(zynq_cpun_start);
static int zynq_boot_secondary(unsigned int cpu,
						struct task_struct *idle)
{
	return zynq_cpun_start(virt_to_phys(secondary_startup), cpu);
	return zynq_cpun_start(virt_to_phys(zynq_secondary_startup), cpu);
}

/*