Skip to content
  • Aaron Durbin's avatar
    arch/x86: add support for cache-as-ram paging · 0f35af8f
    Aaron Durbin authored
    
    
    Processors, such as glk, need to have paging enabled while
    in cache-as-ram mode because the front end is agressive about
    fetching lines into the L1I cache. If the line is dirty and in
    the L1D then it writes it back to "memory". However, in this case
    there is no backing store so the cache-as-ram data that was written
    back transforms to all 0xff's when read back in causing corruption.
    
    In order to mitigate the failure add x86 architecture support for
    enabling paging while in cache-as-ram mode. A Kconfig variable,
    NUM_CAR_PAGE_TABLE_PAGES, determines the number of pages to carve
    out for page tables within the cache-as-ram region. Additionally,
    the page directory pointer table is also carved out of cache-as-ram.
    Both areas are allocated from the persist-across-stages region
    of cache-as-ram so all stages utilizing cache-as-ram don't corrupt
    the page tables.
    
    The two paging-related areas are loaded by calling
    paging_enable_for_car() with the names of cbfs files to load the
    initial paging structures from.
    
    BUG=b:72728953
    
    Change-Id: I7ea6e3e7be94a0ef9fd3205ce848e539bfbdcb6e
    Signed-off-by: default avatarAaron Durbin <adurbin@chromium.org>
    Reviewed-on: https://review.coreboot.org/25717
    
    
    Tested-by: default avatarbuild bot (Jenkins) <no-reply@coreboot.org>
    Reviewed-by: default avatarFurquan Shaikh <furquan@google.com>
    Reviewed-by: default avatarJustin TerAvest <teravest@chromium.org>
    0f35af8f