Fix boot-time hang/panic on G3 systems when modifying IBAT0 in
pmap_bootstrap by using the sync;isync big hammer to make sure all prior operations have completed. Reported by: Nathan Whitehorn <nathan at uchicago edu> MFC after: 2 days
This commit is contained in:
parent
afef46c1a0
commit
1a84fecd12
@ -569,7 +569,8 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
*/
|
||||
batu = BATU(0x00000000, BAT_BL_256M, BAT_Vs);
|
||||
batl = BATL(0x00000000, BAT_M, BAT_PP_RW);
|
||||
__asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n"
|
||||
__asm ("sync; isync; \n"
|
||||
"mtibatu 0,%0; mtibatl 0,%1; isync; \n"
|
||||
"mtdbatu 0,%0; mtdbatl 0,%1; isync"
|
||||
:: "r"(batu), "r"(batl));
|
||||
|
||||
|
@ -569,7 +569,8 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
*/
|
||||
batu = BATU(0x00000000, BAT_BL_256M, BAT_Vs);
|
||||
batl = BATL(0x00000000, BAT_M, BAT_PP_RW);
|
||||
__asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n"
|
||||
__asm ("sync; isync; \n"
|
||||
"mtibatu 0,%0; mtibatl 0,%1; isync; \n"
|
||||
"mtdbatu 0,%0; mtdbatl 0,%1; isync"
|
||||
:: "r"(batu), "r"(batl));
|
||||
|
||||
|
@ -569,7 +569,8 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
*/
|
||||
batu = BATU(0x00000000, BAT_BL_256M, BAT_Vs);
|
||||
batl = BATL(0x00000000, BAT_M, BAT_PP_RW);
|
||||
__asm ("mtibatu 0,%0; mtibatl 0,%1; isync; \n"
|
||||
__asm ("sync; isync; \n"
|
||||
"mtibatu 0,%0; mtibatl 0,%1; isync; \n"
|
||||
"mtdbatu 0,%0; mtdbatl 0,%1; isync"
|
||||
:: "r"(batu), "r"(batl));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user