• A
    swiotlb: Return physical addresses when calling swiotlb_tbl_map_single · e05ed4d1
    Alexander Duyck 提交于
    This change makes it so that swiotlb_tbl_map_single will return a physical
    address instead of a virtual address when called.  The advantage to this once
    again is that we are avoiding a number of virt_to_phys and phys_to_virt
    translations by working with everything as a physical address.
    
    One change I had to make in order to support using physical addresses is that
    I could no longer trust 0 to be a invalid physical address on all platforms.
    So instead I made it so that ~0 is returned on error.  This should never be a
    valid return value as it implies that only one byte would be available for
    use.
    
    In order to clarify things since we now have 2 physical addresses in use
    inside of swiotlb_tbl_map_single I am renaming phys to orig_addr, and
    dma_addr to tlb_addr.  This way is should be clear that orig_addr is
    contained within io_orig_addr and tlb_addr is an address within the
    io_tlb_addr buffer.
    Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
    Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    e05ed4d1
swiotlb-xen.c 16.5 KB