提交 e00c9a0c 编写于 作者: D Dongsheng Wang 提交者: Scott Wood

powerpc/mpc85xx: invalidate TLB after hibernation resume

This problem belongs to the core synchronization issues.
The cpu1 already updated spin_table values, but bootcore cannot get
this value in time.

After bootcpu hibiernation restore the pages. we are now running
with the kernel data of the old kernel fully restored. if we reset
the non-bootcpus that will be reset cache(tlb), the non-bootcpus
will get new address(map virtual and physical address spaces).
but bootcpu tlb cache still use boot kernel data, so we need to
invalidate the bootcpu tlb cache make it to get new main memory data.

log:
Enabling non-boot CPUs ...
smp_85xx_kick_cpu: timeout waiting for core 1 to reset
smp: failed starting cpu 1 (rc -2)
Error taking CPU1 up: -2
Signed-off-by: NWang Dongsheng <dongsheng.wang@freescale.com>
Reviewed-by: NAnton Vorontsov <anton@enomsg.org>
[scottwood@freescale.com: reworded code comment for clarity]
Signed-off-by: NScott Wood <scottwood@freescale.com>
上级 f8dc6eb7
...@@ -141,6 +141,14 @@ _GLOBAL(swsusp_arch_resume) ...@@ -141,6 +141,14 @@ _GLOBAL(swsusp_arch_resume)
lis r11,swsusp_save_area@h lis r11,swsusp_save_area@h
ori r11,r11,swsusp_save_area@l ori r11,r11,swsusp_save_area@l
/*
* Mappings from virtual addresses to physical addresses may be
* different than they were prior to restoring hibernation state.
* Invalidate the TLB so that the boot CPU is using the new
* mappings.
*/
bl _tlbil_all
lwz r4,SL_SPRG0(r11) lwz r4,SL_SPRG0(r11)
mtsprg 0,r4 mtsprg 0,r4
lwz r4,SL_SPRG1(r11) lwz r4,SL_SPRG1(r11)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册