Skip to content
  • Julien Grall's avatar
    xen/swiotlb: Add support for 64KB page granularity · 9435cce8
    Julien Grall authored
    
    
    Swiotlb is used on ARM64 to support DMA on platform where devices are
    not protected by an SMMU. Furthermore it's only enabled for DOM0.
    
    While Xen is always using 4KB page granularity in the stage-2 page table,
    Linux ARM64 may either use 4KB or 64KB. This means that a Linux page
    can be spanned accross multiple Xen page.
    
    The Swiotlb code has to validate that the buffer used for DMA is
    physically contiguous in the memory. As a Linux page can't be shared
    between local memory and foreign page by design (the balloon code always
    removing entirely a Linux page), the changes in the code are very
    minimal because we only need to check the first Xen PFN.
    
    Note that it may be possible to optimize the function
    check_page_physically_contiguous to avoid looping over every Xen PFN
    for local memory. Although I will let this optimization for a follow-up.
    
    Signed-off-by: default avatarJulien Grall <julien.grall@citrix.com>
    Reviewed-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
    Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    9435cce8