Changes in kernel/generic/src/mm/as.c [c4c2406:f97f1e51] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/as.c
rc4c2406 rf97f1e51 665 665 666 666 page_table_lock(as, false); 667 668 /* 669 * Start TLB shootdown sequence. 670 */ 671 ipl_t ipl = tlb_shootdown_start(TLB_INVL_PAGES, as->asid, 672 area->base + P2SZ(pages), area->pages - pages); 667 673 668 674 /* … … 720 726 } 721 727 722 /*723 * Start TLB shootdown sequence.724 *725 * The sequence is rather short and can be726 * repeated multiple times. The reason is that727 * we don't want to have used_space_remove()728 * inside the sequence as it may use a blocking729 * memory allocation for its B+tree. Blocking730 * while holding the tlblock spinlock is731 * forbidden and would hit a kernel assertion.732 */733 734 ipl_t ipl = tlb_shootdown_start(TLB_INVL_PAGES,735 as->asid, area->base + P2SZ(pages),736 area->pages - pages);737 738 728 for (; i < size; i++) { 739 729 pte_t *pte = page_mapping_find(as, … … 753 743 page_mapping_remove(as, ptr + P2SZ(i)); 754 744 } 755 756 /*757 * Finish TLB shootdown sequence.758 */759 760 tlb_invalidate_pages(as->asid,761 area->base + P2SZ(pages),762 area->pages - pages);763 764 /*765 * Invalidate software translation caches766 * (e.g. TSB on sparc64, PHT on ppc32).767 */768 as_invalidate_translation_cache(as,769 area->base + P2SZ(pages),770 area->pages - pages);771 tlb_shootdown_finalize(ipl);772 745 } 773 746 } 747 748 /* 749 * Finish TLB shootdown sequence. 750 */ 751 752 tlb_invalidate_pages(as->asid, area->base + P2SZ(pages), 753 area->pages - pages); 754 755 /* 756 * Invalidate software translation caches 757 * (e.g. TSB on sparc64, PHT on ppc32). 758 */ 759 as_invalidate_translation_cache(as, area->base + P2SZ(pages), 760 area->pages - pages); 761 tlb_shootdown_finalize(ipl); 762 774 763 page_table_unlock(as, false); 775 764 } else { … … 2054 2043 { 2055 2044 uintptr_t virt = base; 2056 as_area_t *area = as_area_create(AS, flags , size,2045 as_area_t *area = as_area_create(AS, flags | AS_AREA_CACHEABLE, size, 2057 2046 AS_AREA_ATTR_NONE, &anon_backend, NULL, &virt, bound); 2058 2047 if (area == NULL)
Note:
See TracChangeset
for help on using the changeset viewer.