Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/mm/tlb.c

    r9aed144 r0ff03f3  
    480480        va = istate->cr_ifa; /* faulting address */
    481481       
     482        page_table_lock(AS, true);
    482483        t = page_mapping_find(AS, va, true);
    483484        if (t) {
     
    487488                 */
    488489                itc_pte_copy(t);
     490                page_table_unlock(AS, true);
    489491        } else {
    490492                /*
    491493                 * Forward the page fault to address space page fault handler.
    492494                 */
     495                page_table_unlock(AS, true);
    493496                if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) {
    494497                        fault_if_from_uspace(istate, "Page fault at %p.",
     
    595598       
    596599       
     600        page_table_lock(AS, true);
    597601        pte_t *entry = page_mapping_find(AS, va, true);
    598602        if (entry) {
     
    602606                 */
    603607                dtc_pte_copy(entry);
     608                page_table_unlock(AS, true);
    604609        } else {
     610                page_table_unlock(AS, true);
    605611                if (try_memmap_io_insertion(va, istate))
    606612                        return;
     
    644650        va = istate->cr_ifa;  /* faulting address */
    645651       
     652        page_table_lock(AS, true);
    646653        t = page_mapping_find(AS, va, true);
    647654        ASSERT((t) && (t->p));
     
    660667                }
    661668        }
     669        page_table_unlock(AS, true);
    662670}
    663671
     
    675683        va = istate->cr_ifa;  /* faulting address */
    676684       
     685        page_table_lock(AS, true);
    677686        t = page_mapping_find(AS, va, true);
    678687        ASSERT((t) && (t->p));
     
    691700                }
    692701        }
     702        page_table_unlock(AS, true);
    693703}
    694704
     
    706716        va = istate->cr_ifa;  /* faulting address */
    707717       
     718        page_table_lock(AS, true);
    708719        t = page_mapping_find(AS, va, true);
    709720        ASSERT((t) && (t->p));
     
    722733                }
    723734        }
     735        page_table_unlock(AS, true);
    724736}
    725737
     
    740752         * Assume a write to a read-only page.
    741753         */
     754        page_table_lock(AS, true);
    742755        t = page_mapping_find(AS, va, true);
    743756        ASSERT((t) && (t->p));
     
    748761                panic_memtrap(istate, PF_ACCESS_WRITE, va, NULL);
    749762        }
     763        page_table_unlock(AS, true);
    750764}
    751765
     
    763777        va = istate->cr_ifa;  /* faulting address */
    764778       
     779        page_table_lock(AS, true);
    765780        t = page_mapping_find(AS, va, true);
    766781        ASSERT(t);
     
    775790                else
    776791                        dtc_pte_copy(t);
     792                page_table_unlock(AS, true);
    777793        } else {
     794                page_table_unlock(AS, true);
    778795                if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
    779796                        fault_if_from_uspace(istate, "Page fault at %p.",
Note: See TracChangeset for help on using the changeset viewer.