diff options
Diffstat (limited to 'arch/tile/mm/fault.c')
-rw-r--r-- | arch/tile/mm/fault.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c index 0011f06b4fe2..704f3e8a4385 100644 --- a/arch/tile/mm/fault.c +++ b/arch/tile/mm/fault.c | |||
@@ -567,6 +567,14 @@ do_sigbus: | |||
567 | * since that might indicate we have not yet squirreled the SPR | 567 | * since that might indicate we have not yet squirreled the SPR |
568 | * contents away and can thus safely take a recursive interrupt. | 568 | * contents away and can thus safely take a recursive interrupt. |
569 | * Accordingly, the hypervisor passes us the PC via SYSTEM_SAVE_1_2. | 569 | * Accordingly, the hypervisor passes us the PC via SYSTEM_SAVE_1_2. |
570 | * | ||
571 | * Note that this routine is called before homecache_tlb_defer_enter(), | ||
572 | * which means that we can properly unlock any atomics that might | ||
573 | * be used there (good), but also means we must be very sensitive | ||
574 | * to not touch any data structures that might be located in memory | ||
575 | * that could migrate, as we could be entering the kernel on a dataplane | ||
576 | * cpu that has been deferring kernel TLB updates. This means, for | ||
577 | * example, that we can't migrate init_mm or its pgd. | ||
570 | */ | 578 | */ |
571 | struct intvec_state do_page_fault_ics(struct pt_regs *regs, int fault_num, | 579 | struct intvec_state do_page_fault_ics(struct pt_regs *regs, int fault_num, |
572 | unsigned long address, | 580 | unsigned long address, |