Skip to content
  • Taylor Hutt's avatar
    ahci: Use virt_to_phys() to denote physical addresses for DMA · 64738e8a
    Taylor Hutt authored
    
    
    Update the assignment of various physical memory buffers used by the
    SATA controller to explicitly be denoted as physical addresses.
    
    The memory is identity-mapped, so these function calls are a nop, but
    they provide good semantic documentation for any maintainers.
    
    The return value of virt_to_phys() is 'unsigned long'.  On machines
    where sizeof(unsigned long) != sizeof(pointer), a cast through
    (uintptr_t) is needed to appease the compiler due to the potential of
    losing the upper 32 bits of the address.
    
    In compilation this scenario, a physical address could be 64-bits, yet
    the C pointer environment only allows 32-bit addresses; the constraint
    is that pointers cannot address more than 4Gb of memory and if
    virt_to_phys() ever returns an out-of-range value for the physical
    address, there are issues with emmory mapping which must be solved.
    However, since the memory is identify mappeed, there is no problem
    introducing the cast: the original pointer will reside in 32-bits, so
    the physical address will also be within in 32-bits.
    
    Signed-off-by: default avatarTaylor Hutt <thutt@chromium.org>
    Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
    64738e8a