lkml.org 
[lkml]   [2009]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/5] intel-iommu: Use dma_generic_alloc_coherent() for passthrough mappings
    Date
    intel_alloc_coherent() needs to follow DMA mapping convention and
    make use of the coherent_dma_mask of the device. Without this,
    devices may get buffers they can't use.

    Signed-off-by: Alex Williamson <alex.williamson@hp.com>
    ---

    drivers/pci/intel-iommu.c | 8 ++++++++
    1 files changed, 8 insertions(+), 0 deletions(-)

    diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
    index b1e97e6..40be49a 100644
    --- a/drivers/pci/intel-iommu.c
    +++ b/drivers/pci/intel-iommu.c
    @@ -2765,6 +2765,10 @@ static void *intel_alloc_coherent(struct device *hwdev, size_t size,
    void *vaddr;
    int order;

    + if (iommu_no_mapping(hwdev))
    + return dma_generic_alloc_coherent(hwdev, size, dma_handle,
    + flags);
    +
    size = PAGE_ALIGN(size);
    order = get_order(size);
    flags &= ~(GFP_DMA | GFP_DMA32);
    @@ -2788,6 +2792,10 @@ static void intel_free_coherent(struct device *hwdev, size_t size, void *vaddr,
    {
    int order;

    + if (iommu_no_mapping(hwdev))
    + return dma_generic_free_coherent(hwdev, size, vaddr,
    + dma_handle);
    +
    size = PAGE_ALIGN(size);
    order = get_order(size);



    \
     
     \ /
      Last update: 2009-10-27 00:33    [W:0.021 / U:62.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site