Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 402eda5 in mainline for kernel/generic/src/mm/as.c


Ignore:
Timestamp:
2010-06-22T12:19:45Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
9539be6
Parents:
a49a1a1
Message:

Fix a newly introduced deadlock in the TLB shootdown algorithm.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/as.c

    ra49a1a1 r402eda5  
    433433                 *
    434434                 */
    435                 tlb_shootdown_start(TLB_INVL_PAGES, as->asid, area->base +
    436                     pages * PAGE_SIZE, area->pages - pages);
     435                ipl_t ipl = tlb_shootdown_start(TLB_INVL_PAGES, as->asid,
     436                    area->base + pages * PAGE_SIZE, area->pages - pages);
    437437               
    438438                /*
     
    528528                as_invalidate_translation_cache(as, area->base +
    529529                    pages * PAGE_SIZE, area->pages - pages);
    530                 tlb_shootdown_finalize();
     530                tlb_shootdown_finalize(ipl);
    531531               
    532532                page_table_unlock(as, false);
     
    578578         * Start TLB shootdown sequence.
    579579         */
    580         tlb_shootdown_start(TLB_INVL_PAGES, as->asid, area->base, area->pages);
     580        ipl_t ipl = tlb_shootdown_start(TLB_INVL_PAGES, as->asid, area->base,
     581            area->pages);
    581582       
    582583        /*
     
    625626         */
    626627        as_invalidate_translation_cache(as, area->base, area->pages);
    627         tlb_shootdown_finalize();
     628        tlb_shootdown_finalize(ipl);
    628629       
    629630        page_table_unlock(as, false);
     
    865866         *
    866867         */
    867         tlb_shootdown_start(TLB_INVL_PAGES, as->asid, area->base, area->pages);
     868        ipl_t ipl = tlb_shootdown_start(TLB_INVL_PAGES, as->asid, area->base,
     869            area->pages);
    868870       
    869871        /*
     
    912914         */
    913915        as_invalidate_translation_cache(as, area->base, area->pages);
    914         tlb_shootdown_finalize();
     916        tlb_shootdown_finalize(ipl);
    915917       
    916918        page_table_unlock(as, false);
Note: See TracChangeset for help on using the changeset viewer.