• S
    x86, PAT: Remove duplicate memtype reserve in pci mmap · 5a3ae276
    Suresh Siddha 提交于
    pci mmap code was doing memtype reserve for a while now. Recently we
    added memtype tracking in remap_pfn_range, and pci code indirectly calls
    remap_pfn_range. So, we don't need seperate tracking in pci code
    anymore. Which means a patch that removes ~50 lines of code :-).
    
    Also, recently we found out that the pci tracking is not working as we expect
    it to work in some cases. Specifically, userlevel X mmap of pci, with some
    recent version of X, is having a problem with vm_page_prot getting reset.
    The pci tracking uses vm_page_prot to pass on the protection type from parent
    to child during fork.
    a) Parent does a pci mmap
    b) We look at PAT and get either UC_MINUS or WC mapping for parent
    c) Store that mapping type in vma vm_page_prot for future use
    d) This thread does a fork
    e) Fork results in mmap_ops ->open for the child process
    f) We get the vm_page_prot from vma and reserve that type for the child process
    
    But, between c) and e) above, the vma vm_page_prot is getting reset to zero.
    This results in PAT reserve failing at the time of fork as in here.
    http://marc.info/?l=linux-kernel&m=123858163103240&w=2
    
    This cleanup makes the above problem go away as we do not depend on
    vm_page_prot in our PAT code anymore.
    Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
    Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    5a3ae276
i386.c 8.2 KB