• Heiko Carstens's avatar
    s390/cmma: rework no-dat handling · a51324c4
    Heiko Carstens authored
    Rework the way physical pages are set no-dat / dat:
    
    The old way is:
    
    - Rely on that all pages are initially marked "dat"
    - Allocate page tables for the kernel mapping
    - Enable dat
    - Walk the whole kernel mapping and set PG_arch_1 bit in all struct pages
      that belong to pages of kernel page tables
    - Walk all struct pages and test and clear the PG_arch_1 bit. If the bit is
      not set, set the page state to no-dat
    - For all subsequent page table allocations, set the page state to dat
      (remove the no-dat state) on allocation time
    
    Change this rather complex logic to a simpler approach:
    
    - Set the whole physical memory (all pages) to "no-dat"
    - Explicitly set those page table pages to "dat" which are part of the
      kernel image (e.g. swapper_pg_dir)
    - For all subsequent page table allocations, set the page state to dat
      (remove the no-dat state) on allocation time
    
    In result the code is simpler, and this also allows to get rid of one
    odd usage of the PG_arch_1 bit.
    Reviewed-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    a51324c4
init.c 7.25 KB