Commit 1c73ffbd authored by danh-arm's avatar danh-arm
Browse files

Merge pull request #235 from soby-mathew/sm/inv_cpu_ops

Invalidate the dcache after initializing cpu-ops
parents 408b79b8 09997346
...@@ -115,6 +115,10 @@ void init_cpu_data_ptr(void); ...@@ -115,6 +115,10 @@ void init_cpu_data_ptr(void);
#define flush_cpu_data(_m) flush_dcache_range((uint64_t) \ #define flush_cpu_data(_m) flush_dcache_range((uint64_t) \
&(_cpu_data()->_m), \ &(_cpu_data()->_m), \
sizeof(_cpu_data()->_m)) sizeof(_cpu_data()->_m))
#define flush_cpu_data_by_index(_ix, _m) \
flush_dcache_range((uint64_t) \
&(_cpu_data_by_index(_ix)->_m), \
sizeof(_cpu_data_by_index(_ix)->_m))
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
...@@ -120,7 +120,19 @@ func init_cpu_ops ...@@ -120,7 +120,19 @@ func init_cpu_ops
cmp x0, #0 cmp x0, #0
ASM_ASSERT(ne) ASM_ASSERT(ne)
#endif #endif
str x0, [x6, #CPU_DATA_CPU_OPS_PTR] str x0, [x6, #CPU_DATA_CPU_OPS_PTR]!
/*
* Make sure that any pre-fetched cache copies are invalidated.
* Ensure that we are running with cache disable else we
* invalidate our own update.
*/
#if ASM_ASSERTION
mrs x1, sctlr_el3
tst x1, #SCTLR_C_BIT
ASM_ASSERT(eq)
#endif
dc ivac, x6
mov x30, x10 mov x30, x10
1: 1:
ret ret
......
...@@ -219,10 +219,11 @@ static void psci_init_aff_map_node(unsigned long mpidr, ...@@ -219,10 +219,11 @@ static void psci_init_aff_map_node(unsigned long mpidr,
psci_svc_cpu_data.max_phys_off_afflvl, psci_svc_cpu_data.max_phys_off_afflvl,
PSCI_INVALID_DATA); PSCI_INVALID_DATA);
flush_cpu_data_by_index(linear_id, psci_svc_cpu_data);
cm_set_context_by_mpidr(mpidr, cm_set_context_by_mpidr(mpidr,
(void *) &psci_ns_context[linear_id], (void *) &psci_ns_context[linear_id],
NON_SECURE); NON_SECURE);
} }
return; return;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment